Firmware update for v2

Firmware update for the v2 model

This update brings fixes, improvements and some new channels. It is only for the v2 model because it is mainly related to MIDI support and SD card, which the v1 does not have. Most of the new functionality is demoed here. Many thanks to all who submitted bug reports or emailed me their suggestions!

It also represents a major rewrite of the code. I started working with ESP32 processors in beginning of 2018 when first using them in the Glo, Polyphonic Whale (which now shares the common code base with Gecho v2). Espressif, the ESP32 manufacturer, intensively worked on their libraries, real-time OS, compiler and the whole toolchain. Because of numerous changes at some point it became incompatible with our code - meaning that trying to compile it under the new version of the framework either did not work, or if it finally did, the sound was completely broken as something changed in how some hardware peripheral drivers work. I never had time to investigate and fix these issues until recently. The added benefit is that the new compiler is slightly more optimal, producing faster code, which makes everything easier and allowed for many upgrades that would otherwise not be possible (unless trading off the polyphony or sampling rate). It is also important for the future, as new variants of ESP32 come to market which would not work with the older libraries / compilers (e.g. ESP32-PICO-D4 used in the MMXX T-APE or ESP32-PICO-V3-02 that we want to use in the new Glo).

How to update your unit

You need a micro-SD card. There are two variants of v2 model, the SD card slot is "flipped" in the newer one - your printed manual shows the correct orientation. Also, in the wooden boxed model, or older DIY kits that don't necessarily have the wooden box but are enclosed in the PCB case (as opposed to plastic shell or acrylic sandwich) it may be hard to remove the SD card as the slot is quite deep, check out this simple trick. Only 32GB cards or smaller have been proved to work (they need to use SDHC format, not SDXC). A discussion relevant to SD cards and updating is going on here, feel free to ask questions if needed.

To avoid damage, please always power the unit OFF while inserting or removing the card. After you put the SD card in Gecho and power it on at least once, there will be file "update.htm" created on the card. Open it in your browser and follow the instructions displayed on screen. It is very simple, just download both files (firmware and config) and run the channel #44112233 (key in these numbers and press SET).

If something goes wrong, you can revert back to the original firmware at any time using B3 in service menu, as the old FW does not get erased immediately (you don't need to get the older config.txt back, as the new one is just an extension of it).

To find your current firmware you can run channel #4112.

After the update, this channels list applies. Also it may be helpful to consult the settings leaflet explained in detail.

What's new in v1.0.118

(check complete channels list for detailed description.

  • ADC input setting (B4 selecting between mic, line-in and combinations) is now kept in the persistent memory (so it is restored after powering off and on again).
  • Support for multi-knob MIDI controllers: Video guide is in the beginning of this demo. See "MIDI Controls setup" command in configuration settings, in older printed manuals this is blank - press SET-B3-B1 (in sequence) for "learning mode", then twist all knobs one by one to assign them to the controls in the desired order (red, orange and blue LEDs will indicate that it works). Up to 12 knobs are supported, currently 10 is enough (Clouds uses the most). Press SET when done configuring. Use SET-B3-B2 to reset the configuration and revert back to classic PB/CC wheels.
  • Tempo detect: while unit is at idle (after power on or reset, RDY led blinking slowly), it listens to MIDI clock (e.g. Keystep) and pulses on line-in (e.g. Pocket Operators in SY1/SY3/SY5 mode). Red LEDs indicate the incoming signal. After stable clock is detected, white and blue LEDs light up. You can start a channel right away, but for better sync, first stop the clock, key in a channel without pressing SET, then restart the clock; the selected channel will start running at the beginning of the next bar. Use B4 to mask the incoming sync signal, leaving the other line-in channel as audio input.
  • In channel #31: Granular Sampler, added support for multi-knob MIDI controls (voices, detune, sample & hold, coarse and fine delay, individual notes in chord).
  • In channel #32: Decaying Reverb, added support for PB/CC wheels and for multi-knob MIDI controls (low-pass filter, reverb override, coarse and fine delay).
  • The channel #34: MI Clouds (granular mode) was optimized and now runs at a higher sampling rate of 50.78kHz (this should result in cleaner sound). Added support for multi-knob MIDI controls (texture, reverb, density, pitch, position, size, feedback, stereo spread, dry/wet, post gain). 5 new patches were added (now there is 10 total). Patches need to be defined separately for each mode (channels #342 and #343 use a different set). Check the demo here.
  • In channel #222: SD Slicer, added finer controls for segment shifting using buttons SET+B3/B4 (as opposed to coarse shifting with B3/B4 alone).
  • New channel #122: Sea, creek and forest (soundscape samples without chords or melody). Levels are controlled by sensors or accelerometer, microphone or line-in signal is mixed in too.
  • New channel #221: SD Mellotron controllable with MIDI, with basic mixing of up to 3 samples. Loads files from SD card, you can use as many samples as there are keys on your keyboard. Create a directory "mellotron" on the SD card, and within it, make a directory for each note (e.g. "c2", "d#3") or just "c" to cover all octaves by the same sample. Put one sample into every directory (filename does not matter). Stereo samples at 16-bit are supported, sampling rate is detected from the 1st file found and applied to all samples. This is a primitive sound engine that uses simple additive mixing so if the sounds are too loud you may get clipping when pressing more keys at once. Normalization and pitch shifting is planned in future.
  • New channel #322: Polyphonic Reverb playable by MIDI with up to 3 "voices" (perceived change in pitch is caused by resizing the reverb buffers). Variation of #32, supports the same MIDI controls. Check the demo here.
  • New channel #342: MI Clouds in stretch mode (the older channel #34 is the default granular mode). For this channel, 4 patches are defined.
  • New channel #343: MI Clouds in looping delay mode with 9 new patches. Check the demo here.
  • Various small fixes: Dekrispator tuning was off by 2 semitones, delay setting (B3) was missing in pass-through channels.
  • In channel #11: The v1 model's channel #1, the missing buttons and sensors controls were added (B3 for delay, S1/S2 noise level, S3 resonance, S4 arpeggiator).
  • In channel #12: Song of Wind and Ice, added the missing indication for isochronic tones mode (using orange LEDs).
  • Prevent overwriting of recorded WAV files if counter set below the highest existing file (i.e. if card was swapped between units).

What's next?

There are more ideas floating around but I mainly want to focus on improving the Mellotron (#221), as even in its rudimentary form it's already quite fun to use. Then if we implement a sequencer for it, this will solve the older idea of a "drum sequencer" channel as you can simply put drum samples and loops on the SD card.

The sync function between the contents of the SD card and your computer (so you do not need to take the card out when downloading & uploading samples) was put aside but not forgotten, however it now looks like it won't solve the problem completely, as you may need to transfer a lot of large files and it would take ages over the slow USB connection (the USB itself can be fast but the bottleneck is between ESP32, which does not have native USB support, and the USB-serial bridge chip which is limited to 1.25Mbit/s, or about 150kB per second at ideal conditions).

Thanks to everyone for supporting our projects, we could not continue doing this without you!