Coder Social home page Coder Social logo

eurorack's People

Contributors

brianleu avatar edmondburnett avatar falktx avatar float32 avatar geertjohan avatar jonbro avatar luzpaz avatar pichenettes avatar rcrogers avatar steverussell33 avatar theslowgrowth avatar upbeat27 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

eurorack's Issues

where is the file---"bootloader.hex"?

i am first to diy the mutable eurorack rings. i use st-link utility to upload the firmware. but it is only" *.hex f"ile can be use. i can't find "bootloader.hex". just only find "bootloader.cc". how can i do ? how to make *.hex?

2-OP FM broken in Plaits 1.2

I hope someone would be able to fix, fork or address this issue. The final release of the Plaits 1.2 firmware, which was the ultimate retirement present for all that love Mutable, has a bug in the 2-OP FM mode (Green 3). It works at startup but for no clear reason it turns into a 'single VCO' after playing with it for a while and no FM modulation is heard. I own four Plaits modules (for a good reason) so I keep two of them on the old firmware because of it. My other two run 1.2 and expose the same bug. This mode is one of my favorites for obvious reasons because it's basically a complex VCO.

Thanks for reading!
Robert
Cinematic Laboratory

No Aux in plaits when harmonics set to 0.5

While porting the code to another platform I found an issue with plaits. For engine 0, when harmonics is set to exactly 0.5, Aux remains silent for as long as you play it.

Here is a small program demonstrating the issue:

template<size_t N>
std::string toString(plaits::Voice::Frame const iFrames[N])
{
  std::ostringstream str{};
  str << "short out[] = {";
  for(int i = 0; i < N; i++)
  {
    if(i > 0)
      str << ", ";
    str << iFrames[i].out;
  }
  str << "};\n";
  str << "short aux[] = {";
  for(int i = 0; i < N; i++)
  {
    if(i > 0)
      str << ", ";
    str << iFrames[i].aux;
  }
  str << "};\n";
  return str.str();
}

void test()
{
  plaits::Voice voice{};
  char buffer[16384]{};
  stmlib::BufferAllocator allocator(buffer, sizeof(buffer));
  voice.Init(&allocator);

  constexpr int N = 120;
  
  plaits::Voice::Frame frames[120];

  plaits::Patch patch{
    .note = 69,
    .harmonics = 0.5,
    .timbre = 0.5,
    .morph = 0.5,
    .engine = 0,
    .decay = 0.421875,
    .lpg_colour = 0.5
  };

  plaits::Modulations modulations{
    .trigger = 1,
    .trigger_patched = true
  };

  auto ptr = &frames[0];

  for(int i = 0; i < N / 12; i++)
  {
    voice.Render(patch, modulations, ptr, 12);
    ptr += 12;
  }

  std::cout << toString<N>(frames) << std::endl;
}

And here is the output:

short out[] = {6, 24, 53, 95, 150, 222, 310, 417, 546, 698, 876, 1082, 1161, 1393, 1643, 1902, 2165, 2428, 2690, 2948, 3201, 3449, 3692, 3928, 4227, 4697, 5111, 5470, 5781, 6053, 6292, 6504, 6694, 6865, 7019, 7159, 7363, 7600, 7751, 7853, 7929, 7989, 8037, 8077, 8108, 8132, 8147, 8156, 8125, 8050, 7957, 7861, 7759, 7654, 4889, -1522, -6471, -7927, -8239, -8606, -8829, -9050, -9239, -9439, -9632, -9828, -10023, -10218, -10412, -10606, -10801, -10995, -11187, -11379, -11572, -11766, -11959, -12152, -12345, -12538, -12731, -12924, -13116, -13309, -13499, -13689, -13881, -14073, -14264, -14456, -14647, -14838, -15029, -15220, -15411, -15602, -15790, -15979, -16169, -16359, -16549, -16738, -16928, -17117, -17307, -17496, -17828, -19427, -20127, -8664, 7328, 15713, 17161, 17519, 17380, 17223, 17019, 16823, 16621, 16420};
short aux[] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1};

You can change N to whatever value you want (1200 for example) and you will see that Aux always remain to 1..

In my device if you turn the harmonics knob so that it is no longer 0.5 and bring it back to 0.5, then Aux now has sound. You can simulate this with changing the test code like this:

  auto ptr = &frames[0];

  patch.harmonics = 0.6;
  voice.Render(patch, modulations, ptr, 12);
  ptr += 12;

  patch.harmonics = 0.5;
  for(int i = 1; i < N / 12; i++)
  {
    voice.Render(patch, modulations, ptr, 12);
    ptr += 12;
  }

And you get this output:

short out[] = {6, 24, 53, 94, 150, 220, 307, 412, 538, 685, 856, 1052, 1126, 1345, 1580, 1822, 2066, 2309, 2549, 2784, 3013, 3237, 3455, 3666, 3933, 4351, 4717, 5033, 5306, 5544, 5751, 5934, 6097, 6241, 6371, 6487, 6652, 6842, 6958, 7033, 7084, 7122, 7148, 7166, 7176, 7178, 7172, 7159, 7105, 7010, 6904, 6796, 6683, 6566, 3790, -2632, -7592, -9059, -9383, -9761, -9990, -10213, -10402, -10601, -10794, -10989, -11183, -11378, -11572, -11766, -11959, -12153, -12345, -12536, -12729, -12922, -13115, -13308, -13501, -13693, -13885, -14078, -14270, -14461, -14652, -14841, -15032, -15224, -15415, -15606, -15797, -15988, -16178, -16369, -16559, -16749, -16938, -17125, -17315, -17504, -17746, -19158, -20870, -15242, -5128, 914, 2110, 2236, 2576, 7075, 12985, 16020, 16438, 16448, 16270, 16085, 15884, 15684, 15483, 15283};
short aux[] = {1, 1, 0, -1, -4, -8, -14, -20, -28, -36, -45, -53, -55, -72, -90, -110, -131, -155, -180, -207, -234, -263, -292, -323, -944, -1848, -2706, -3638, -4486, -5191, -4938, -4523, -4001, -3387, -2849, -2416, -1896, -1393, -1174, -1087, -1060, -1061, -1076, -1096, -1120, -1144, -1170, -1195, -1223, -1247, -1263, 1683, 11448, 20240, 23089, 23386, 23823, 19446, 8903, 835, -1198, -1262, -1413, -1376, -1399, -1389, -1393, -1390, -1390, -1389, -1389, -1388, -1388, -1387, -1387, -1386, -1386, -1385, -2048, -6501, -11658, -13915, -14171, -14306, -13168, -8406, -3573, -1697, -1514, -1378, -1391, -1375, -1379, -1376, -1376, -1375, -1375, -1374, -1374, -1373, -1373, -1372, -1372, -1371, -1371, -1082, 5718, 16164, 22409, 23976, 24589, 24056, 16323, 6168, 765, -479, -1108, -1295, -1351, -1359};

Instructions for uploading firmware using OSX

Hi there! Love your work.

I was wondering whether you though it could be useful to folks to include instructions for uploading firmware using OSX without needing to use the Vagrant dev environment.

For me, uploading firmware to Peaks and Braids was relatively straightforward using an STLink-V2 and an Olimex ARM-JTAG-20-10 adaptor.

Requires Homebrew

## SETUP (only required the first time)

# add PX4 formulae to homebrew
brew tap PX4/homebrew-px4

# install STM32 & ARM toolchain
brew install stlink open-ocd px4/px4/gcc-arm-none-eabi-48

# create projects directory if you don't have one and switch to that directory
mkdir ~/projects
cd ~/projects

# clone the mutable eurorack repository
git clone https://github.com/pichenettes/eurorack.git

# switch to the repository
cd eurorack

# clone submodules
git submodule update --init --recursive

## FLASHING THE MODULE

# switch to your checkout of the mutable eurorack repository
# note: change the path if you cloned it to another location
cd ~/projects/eurorack

# configure make scripts to point to the correct ARM toolchain
# note: you will need to repeat this step in the future if you are flashing modules
export TOOLCHAIN_PATH="$(brew --prefix px4/px4/gcc-arm-none-eabi-48)/"

# compile bootloader
# note: this is for peaks, but the steps are the same for most other modules, just change the path to the correct makefiles
make -f peaks/bootloader/makefile hex

# upload to device
make -f peaks/makefile upload_combo_jtag

Blades airwires reported (no connection to GND)

On both the new version of Veils and on the newly released Blades, with the DRCs and eagle files provided, if you generate gerbers or run the Ratsnest then:

On Blades: C74 and C77 do not have a GND connection.
On Veils - C22 and C23 are not connected to GND

(Both are easy to fix - either by adding a trace, chaning polygon or changing DRC but in the published files there are these missing connections)

Yarns upload_combo_jtag hex file with following error

[yarns_bootloader_combo.hex] checksum : 0x006052B3
17:28:32 : Error: File corrupted. Two or more segments defines the same memory zone.
17:33:31 : [yarns_bootloader_combo.hex] opened successfully.
Address Ranges [0x08000000 0x080010D8] [0x08001000 0x0800F350]

Bootloader looks like it's too big

Is stm32f405rgt6 a LQFP part?

Hi,

Thanks for making this available.

In the spreadsheet BOM for clouds, elements, rings and warps part stm32f405rgt6 is marked as having a TQFP64 package. I've done quite a few searches and can only find an LQFP64 part. Could this be a typo in the BOM or am I making a mistake?

Thanks again.

Stages Schematic v70 Channel numbers / Pot and LED designation

Can someone give me a prod in the right direction?

Am I right in my assumption that Segment 1 is the column on the left of panel and maps to ADC and DAC 1? Segment 6 is far right?

Looking at page 2 we see the LEDS, am I right to assume the mapping is Seg 1- LED 7, seg 2 - LED 8, Seg 3 - LED 9 ......Seg 6 - LED 12?
Again on page 2, the pots. Which pot maps to segment 1 ......through to segment 6. This is for both sliders and rotary types.

Many thanks in advance.

Al

Braids Envelope.h is licensed GPL

I assume this is an oversight due to copy and paste, but the license on the braids Envelope.h is GPL, where the rest of the project is MIT licensed. If possible, could it be updated to MIT?

[Question] PCB viewer

Hello,

I apologize for the beginner question, but what do you suggest to use to view PCB files (extensions are .brd and .sch) ?
I tried several tools but I did not manage to open these files.

If you have any suggestion concerning a free tool, I will be more than happy.

Thanks you

Ripples V0.2 files availability

Hello! I found among my stuff a Ripples' PCB V0.2 which I started populating years ago (2013) and then abandoned. Willing to resurrect the project, though, I couldn't find any .brd file and, of course, no BOM. I know that's pretty obvious, considered we're at Ripples' V4.0, but I guess that old version should still work so… could anyone please forward me the matching files, if still available? Also, was there anything to pay attention to while putting this project together (i.e. labelling mistakes on the soldering mask, particular trimmings required…)?

Thanks a ton to whoever will chime in, best wishes to everyone!

Plaits issue with chiptune mode

There is a bug in line 40 of chiptune_engine.cc:
for (int i = 0; i < kChordNumNotes; ++i) {
voice_[i].Init();
}

It should be kChordNumVoices instead of kChordNumNotes.

This leads to weird random crashes of the engine, as the fifth voice isn't correctly initialized.

Convert EAGLE files to XML

I know that this won't benifit MI much, but considering that MI is shutting down (bye pichenettes, I'll really miss you, you have been an amazing figure in the Eurorack community), I think converting them to XML would make it easier for people to study the MI products (this way you can import into something like KiCAD).

Surge and Clouds?

Hi!

I'm one of the maintainers on surge (https://surge-synthesizer.github.io/)

We were chatting today about expanding our FX and realized that Clouds could fit very nicely into surge. Surge is FOSS GPL3 software so from a licensing perspective on the engine I think we are good, and Andrew's VCV rack module makes the API really clear. So I'm debating giving it a whirl.

But before I did that, wanted to check a couple of things

  1. Even though it's all GPL3 and we could do it, doesn't mean you would want us to. Any objections or concerns?
  2. I know you are careful about your brand - rightly so - and if I understand, the name mutable is trademarked and not open and so forth. That's super smart and we have been very careful about licensing and IP issues in Surge! If we did include clouds, is there a way we would name the FX or credit you which would be appropriate?

In our 1.8.0 release we imported 50+ Airwindows FX into Surge after chatting with Chris, for instance, and pulled in the filters from OBX-d, and ended up putting them in the in-plugin about page as below.

In any case, thanks for making great open source audio tools and for considering this issue!

Best

Screen Shot 2021-01-29 at 1 46 43 PM

braids decimation with envelope & AD_VCA

Hello! I am currently porting braids onto KORG drumlogue and have a question about this code

eurorack/braids/braids.cc

Lines 285 to 288 in d1d8839

if ((i % decimation_factor) == 0) {
sample = render_buffer[i] & bit_mask;
}
sample = sample * gain_lp >> 16;

When decimation_factor = n, the code multiplies gain_lp to sample n times, so the value of sample goes to sample * pow(gain_lp, n), then when (i % decimation_factor) == 0 becomes true, the new value is loaded from render_buffer.
Is this the intended behavior?
I mean, why the code wasn't like this?

    if ((i % decimation_factor) == 0) {
      sample = render_buffer[i] & bit_mask;
    }
    int16_t decimated_sample = sample * gain_lp >> 16;

Make gives `LoopFillZerobss' undefined reference to `main'

Noob question, reading your code, trying to learn and build a device for myself. I got the behringer model d, and would like to hook it up to ableton and a novation remote-SL midi keyboard.

after

ln -s ../stmlib stmlib
make

I get the error:

~/.../eurorack/yarns >>> stmlib/makefile.inc:503: warning: overriding recipe for target 'upload_combo_jtag_erase_first'
stmlib/makefile.inc:487: warning: ignoring old recipe for target 'upload_combo_jtag_erase_first'
/opt/gcc-arm/bin/arm-none-eabi-gcc -Wl,-Map=build/yarns/yarns.map -Wl,--gc-sections -T stmlib/linker_scripts/stm32f10x_flash_md_application_small.ld -mcpu=cortex-m3 -mthumb -fno-unroll-loops -I. -DGCC_ARMCM3 -DSTM32F10X_MD -DSTM32F10X -DAPPLICATION -DF_CPU=72000000L -DF_CRYSTAL=8000000L -DHSE_VALUE=8000000L -DUSE_STDPERIPH_DRIVER -DSYSCLK_FREQ_72MHz=72000000L -Istmlib/third_party/STM -Istmlib/third_party/STM/CMSIS/CM3_f10x -Istmlib/third_party/STM/CMSIS/CM3_f10x/startup/gcc -Istmlib/third_party/STM/STM32F10x_StdPeriph_Driver/inc -Lstmlib/third_party/STM -o build/yarns/yarns.elf build/yarns/random.o build/yarns/bootloader_utils.o build/yarns/system_clock.o build/yarns/core_cm3.o build/yarns/system_stm32f10x.o build/yarns/stm32f10x_dma.o build/yarns/stm32f10x_dbgmcu.o build/yarns/stm32f10x_iwdg.o build/yarns/stm32f10x_dac.o build/yarns/stm32f10x_can.o build/yarns/stm32f10x_rtc.o build/yarns/stm32f10x_pwr.o build/yarns/stm32f10x_i2c.o build/yarns/stm32f10x_sdio.o build/yarns/stm32f10x_rcc.o build/yarns/stm32f10x_flash.o build/yarns/stm32f10x_crc.o build/yarns/stm32f10x_usart.o build/yarns/stm32f10x_wwdg.o build/yarns/misc.o build/yarns/stm32f10x_tim.o build/yarns/stm32f10x_adc.o build/yarns/stm32f10x_spi.o build/yarns/stm32f10x_bkp.o build/yarns/stm32f10x_exti.o build/yarns/stm32f10x_fsmc.o build/yarns/stm32f10x_gpio.o build/yarns/startup_stm32f10x_md.o
/opt/gcc-arm/bin/../lib/gcc/arm-none-eabi/8.2.1/../../../../arm-none-eabi/bin/ld: build/yarns/startup_stm32f10x_md.o: in function LoopFillZerobss': (.text.Reset_Handler+0x26): undefined reference to main'
collect2: error: ld returned 1 exit status
make: *** [stmlib/makefile.inc:330: build/yarns/yarns.elf] Error 1

I found a reference to the same error, but i couldn't figure out what to do next.

https://stackoverflow.com/questions/18137814/loopfillzerobss-has-an-undefined-reference-to-main

I'm on
arm-none-eabi-gcc (GNU Tools for Arm Embedded Processors 8-2018-q4-major) 8.2.1 20181213 (release) [gcc-8-branch revision 267074]
other compiles work OK, i'm following the book with software here: https://github.com/Apress/Beg-STM32-Devel-FreeRTOS-libopencm3-GCC

Add Beads

Add Beads source code and hardware design

Inconsistent alt wave Aux envelope behaviour

With either Square or Sine Wave assigned to Aux output (any octave), and with Trig patched, certain modes output a continuous wave (expected behaviour — nice to have for sync or complementary gate sequencing), while others obey the VCA/VCFA envelope.

Is this by design, or a hold-over from how certain modes treat the stock Aux output?

Affected modes:

  • G (All)
  • R 1, 2, 3
  • Y 1, 2, 6, 7

A couple of variables are assigned values twice successively

Found with static analysis.

shifted_sample is assigned values twice successively.

int32_t shifted_sample = sample;
shifted_sample += (parameter_[1] >> 2) + (parameter_[0] >> 4);
lp_state += (sample - lp_state) * f >> 15;
CLIP(lp_state)
shifted_sample = lp_state + 32768;

previous_parameter_[0] is assigned values twice successively.

END_INTERPOLATE_PARAMETER_0
previous_parameter_[0] = parameter_[0];

Problems building Plaits Code

Hi,

I am using the published tool chain (https://pichenettes.github.io/mutable-instruments-documentation/modules/plaits/open_source/). I can successfully build code for Rings and Clouds but Plaits does not work.

I am able to build the bootloader for Plaits.

Here is the output from the "Cozy Development Environment":

vagrant@vagrant-ubuntu-trusty-64:/vagrant/eurorack-modules$ make -f plaits/makefile
stmlib/makefile.inc:373: build/plaits/depends.mk: No such file or directory
python stmlib/tools/resources_compiler.py plaits/resources/resources.py
Traceback (most recent call last):
File "stmlib/tools/resources_compiler.py", line 280, in
main(sys.argv)
File "stmlib/tools/resources_compiler.py", line 276, in main
Compile(argv[i])
File "stmlib/tools/resources_compiler.py", line 265, in Compile
resource_module = import(base_name.replace('/', '.'))
File "/vagrant/eurorack-modules/plaits/resources/resources.py", line 74, in
import waveterrains
ImportError: No module named waveterrains
make: *** [plaits/resources.cc] Error 1

Hopefully one of you kind "superstars" out there can help. Thanks in advance

Alistair

Out of bounds access in Plaits

When compiling with Plaits gcc-arm-none-eabi-9-2019-q4-major, the following error is generated:

plaits/dsp/engine/chord_engine.cc: In member function 'virtual void plaits::ChordEngine::Reset()':
plaits/dsp/engine/chord_engine.cc:69:70: error: iteration 4 invokes undefined behavior [-Werror=aggressive-loop-optimizations]
   69 |       ratios_[i * kChordNumVoices + j] = SemitonesToRatio(chords[i][j]);
      |                                                           ~~~~~~~~~~~^
plaits/dsp/engine/chord_engine.cc:68:23: note: within this loop
   68 |     for (int j = 0; j < kChordNumVoices; ++j) {
      |                     ~~^~~~~~~~~~~~~~~~~

which makes sense, kChordNumVoices is equal to 5 and chords is a 4x4 array.
I propose adding a 5th row filled with zeros as a fix, but I don't know the code well enough to be sure that it's the correct thing to do.

plaits / chord engine "pop"

When you play the plaits/chord engine with a given set of parameter, there is a distinctive pop at the beginning.

First this is what it looks like (I believe the highlighted section is the cause):

Screen Shot 2022-01-03 at 13 23 08

Second, here is the actual data:

    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
    1, 1, 1, 1, 1, 1, 1, 1, 1, 50, 99, 150, 199, 231, 269, 303, 355, 406, 413, 444, 494, 525, 569, 609, 656, 702, 747,
    792, 836, 879, 921, 961, 1000, 1025, 1073, 1120, 1168, 1215, 1263, 1312, 1361, 1412, 1464, 1518, 1573, 1623, 1691,
    1759, 1856, 1977, 2056, 2147, 2244, 2321, 2397, 2464, 2520, 2574, 2649, 2711, 2767, 2818, 2867, 2914, 2960, 3006,
    3053, 3100, 3149, 3209, 3285, 3359, 3430, 3499, 3568, 3636, 3706, 3777, 3850, 3925, 4004, 4106, 4267, 4458, 4683,
    4933, 5202, 5489, 5793, 6112, 6446, 6796, 7161, 7646, 8196, 8667, 9110, 9557, 10017, 10325,
   
   // highlighted section
    9350, 7839, 6898, 6657,
    5167, 2146, -2393, -6043, -7766, -8303, -8759, -9146, -10058, -11374, -12437, -13122, -13724, -14921, -18304,
    -21643, -23053, -23440, -23832, -24125, -24438, -24729, -25018, -25297, -25570, -25828, -25911, -25781, -25550,
    -25305, -25070, -24866, -24695, -24582, -24577, -24744, -25062, -25071, -24793, -24501, -24254, -23988, -23752,
    -23562, -23495, -23650, -24038, -24456, -24722, -24916, -25063, -25087, -25043, -25015, -24957, -24860, -24781,
    -24688, -24554, -24431, -24309, -23854, -23285, -22833, -22418, -22003, -21686, -21424, -21290, -21435, -21862,
    -22331, -22631, -22779, -22850, -22831, -22499, -16451, -6008, 978, 2843, 3221, 3432, 3525, 3610, 4098, 4603, 4765,
    4732, 4671, 4510, 4271,

    3880, 3350, 2852, 2447, 2060,};

I think that the massive jump -22499, -16451, -6008, 978 is what most likely causes the pop.. the rest of the waveform is very smooth and does not show this kind of distorted pattern.

Here is the code to reproduce:

int main()
{
  char sharedBuffer[16384] = {};
  stmlib::BufferAllocator allocator(sharedBuffer, sizeof(sharedBuffer));
  plaits::Voice voice{};
  voice.Init(&allocator);

  auto patch = plaits::Patch{58, 0.2343, 0.4219, 0.6094, 0, 0, 0, 6, 0.5, 0.5};
  auto modulations = plaits::Modulations{0, 0, 0, 0, 0, 0, 1, 0, false, false, false, true, false};

  plaits::Voice::Frame frames[plaits::kBlockSize];

  for(int i = 0; i < 20; i++)
  {
    voice.Render(patch, modulations, frames, plaits::kBlockSize);

    for(int j = 0; j < plaits::kBlockSize; j++)
    {
      std::cout << frames[j].out << ", ";
    }
  }
  std::cout << std::endl;
}

Yarns INIT resets calibration settings

Summary: On Yarns if INIT is chosen the calibration settings are lost.

Steps to reproduce:

  • Connect a multimeter to Yarns CV1 output to measure the voltage
  • Calibrate Yarns CV1 0V voltage (this doesn't need to be exactly 0V, just some different value than is currently shown on the multimeter).
  • Save calibration settings
  • Choose INIT (to get a default program)
  • Send a C1 note to Yarns
  • Check the value shown on the multimeter

Expected result

  • Multimeter shows the calibrated value which we just set

Actual result

  • Multimeter shows the original value before calibration

Note that the calibration settings can be saved by saving a program after performing calibration. For example, if you save to P1 then the calibration settings will be restored on boot. It's just using INIT which wipes them.

It may be that this is as designed, however, I wanted to check as it seems like resetting the calibration just to get a default program (using INIT) is not expected behaviour.

clouds_test failing on static assertion

I am able to build braids_test and peaks_test, but not clouds_test:

vagrant@vagrant-ubuntu-trusty-64:/vagrant/eurorack-modules$ make -f clouds/test/makefile
cat build/clouds_test/atan.d build/clouds_test/clouds_test.d build/clouds_test/correlator.d build/clouds_test/granular_processor.d build/clouds_test/mu_law.d build/clouds_test/random.d build/clouds_test/resources.d build/clouds_test/frame_transformation.d build/clouds_test/phase_vocoder.d build/clouds_test/stft.d build/clouds_test/units.d > build/clouds_test/depends.mk
g++ -c -DTEST -g -Wall -Werror -I. clouds/test/clouds_test.cc -o build/clouds_test/clouds_test.o
In file included from ./clouds/dsp/granular_processor.h:32:0,
from clouds/test/clouds_test.cc:35:
./clouds/dsp/fx/fx_engine.h: In member function ‘void clouds::FxEngine<size, format>::Context::Write(D&, int32_t, float)’:
./stmlib/stmlib.h:58:95: error: typedef ‘static_assertion_test_at_line_172’ locally defined but not used [-Werror=unused-local-typedefs]
typedef impl::StaticAssertionTest<sizeof(JOIN(_static_assertion_at_line, __LINE
))> JOIN(static_assertion_test_at_line_, __LINE)
^
./stmlib/stmlib.h:51:27: note: in definition of macro ‘JOIN_2’
#define JOIN_2(lhs, rhs) lhs##rhs
^
./stmlib/stmlib.h:49:27: note: in expansion of macro ‘JOIN_1’
#define JOIN(lhs, rhs) JOIN_1(lhs, rhs)
^
./stmlib/stmlib.h:58:90: note: in expansion of macro ‘JOIN’
typedef impl::StaticAssertionTest<sizeof(JOIN(static_assertion_at_line, LINE))> JOIN(**static_assertion_test_at_line, _LINE**)
^
./clouds/dsp/fx/fx_engine.h:172:7: note: in expansion of macro ‘STATIC_ASSERT’
STATIC_ASSERT(D::base + D::length <= size, delay_memory_full);
^
./clouds/dsp/fx/fx_engine.h: In member function ‘void clouds::FxEngine<size, format>::Context::Read(D&, int32_t, float)’:
./stmlib/stmlib.h:58:95: error: typedef ‘static_assertion_test_at_line_200’ locally defined but not used [-Werror=unused-local-typedefs]
typedef impl::StaticAssertionTest<sizeof(JOIN(_static_assertion_at_line, __LINE
))> JOIN(**static_assertion_test_at_line
, __LINE**)
^
./stmlib/stmlib.h:51:27: note: in definition of macro ‘JOIN_2’
#define JOIN_2(lhs, rhs) lhs##rhs
^
./stmlib/stmlib.h:49:27: note: in expansion of macro ‘JOIN_1’
#define JOIN(lhs, rhs) JOIN_1(lhs, rhs)
^
./stmlib/stmlib.h:58:90: note: in expansion of macro ‘JOIN’
typedef impl::StaticAssertionTest<sizeof(JOIN(static_assertion_at_line, LINE))> JOIN(**static_assertion_test_at_line, _LINE**)
^
./clouds/dsp/fx/fx_engine.h:200:7: note: in expansion of macro ‘STATIC_ASSERT’
STATIC_ASSERT(D::base + D::length <= size, delay_memory_full);
^
./clouds/dsp/fx/fx_engine.h: In member function ‘void clouds::FxEngine<size, format>::Context::Interpolate(D&, float, float)’:
./stmlib/stmlib.h:58:95: error: typedef ‘static_assertion_test_at_line_229’ locally defined but not used [-Werror=unused-local-typedefs]
typedef impl::StaticAssertionTest<sizeof(JOIN(_static_assertion_at_line, __LINE
))> JOIN(**static_assertion_test_at_line
, __LINE**)
^
./stmlib/stmlib.h:51:27: note: in definition of macro ‘JOIN_2’
#define JOIN_2(lhs, rhs) lhs##rhs
^
./stmlib/stmlib.h:49:27: note: in expansion of macro ‘JOIN_1’
#define JOIN(lhs, rhs) JOIN_1(lhs, rhs)
^
./stmlib/stmlib.h:58:90: note: in expansion of macro ‘JOIN’
typedef impl::StaticAssertionTest<sizeof(JOIN(static_assertion_at_line, LINE))> JOIN(**static_assertion_test_at_line, _LINE**)
^
./clouds/dsp/fx/fx_engine.h:229:7: note: in expansion of macro ‘STATIC_ASSERT’
STATIC_ASSERT(D::base + D::length <= size, delay_memory_full);
^
./clouds/dsp/fx/fx_engine.h: In member function ‘void clouds::FxEngine<size, format>::Context::Interpolate(D&, float, clouds::LFOIndex, float, float)’:
./stmlib/stmlib.h:58:95: error: typedef ‘static_assertion_test_at_line_243’ locally defined but not used [-Werror=unused-local-typedefs]
typedef impl::StaticAssertionTest<sizeof(JOIN(_static_assertion_at_line, __LINE
))> JOIN(**static_assertion_test_at_line
, __LINE**)
^
./stmlib/stmlib.h:51:27: note: in definition of macro ‘JOIN_2’
#define JOIN_2(lhs, rhs) lhs##rhs
^
./stmlib/stmlib.h:49:27: note: in expansion of macro ‘JOIN_1’
#define JOIN(lhs, rhs) JOIN_1(lhs, rhs)
^
./stmlib/stmlib.h:58:90: note: in expansion of macro ‘JOIN’
typedef impl::StaticAssertionTest<sizeof(JOIN(static_assertion_at_line, LINE))> JOIN(**static_assertion_test_at_line, __LINE**)
^
./clouds/dsp/fx/fx_engine.h:243:7: note: in expansion of macro ‘STATIC_ASSERT’
STATIC_ASSERT(D::base + D::length <= size, delay_memory_full);
^
cc1plus: all warnings being treated as errors
make: *** [build/clouds_test/clouds_test.o] Error 1

wrong value on schematic braids_v50

r39 is incorrectly marked as 120K, thus only giving about 2.07V at the adc input when setting the coarse pitch knob to max. It should be 100K.

Missing file "variable_shape_oscillator.h" when compiling the target stages

Trying to build the target stages with this command

make -f stages/makefile

Leads to this following error

In file included from ./stages/chain_state.h:35:0,
from stages/chain_state.cc:29:
./stages/segment_generator.h:39:46: fatal error: stages/variable_shape_oscillator.h: No such file or directory
#include "stages/variable_shape_oscillator.h"
^
compilation terminated.
make: *** [build/stages/chain_state.o] Error 1

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.