V0.2.x-stable: Thank you!

It is time to put the flag in the ground again. Welcome to the v0.2.x party! Just like last time, this is where early adopters can try out the most recent firmware and influence its development before it becomes a stable release. Expect bugs and maybe even a few crashes. :scream_cat:

I’m also changing a bit how I increment the version numbers. Instead of patch numbers I am just going to use the build numbers to indicate each new update to v0.2.x in this thread. Stable releases will be denoted by the major and minor version numbers. So hopefully after few weeks this firmware will graduate to a stable release called v0.2.x-stable where x will be the number of updates it required to get it there.

v0.2.0 CHANGES

  • ENHANCED: WAV files can be auditioned in the file browser.
  • ENHANCED: Card speed measurement tools added.
  • FIXED: Multiple references to the same sample were not being saved properly in presets.
  • ENHANCED: last saved/loaded preset is used as suggestion when loading/saving presets
  • ENHANCED: Slice view directly accessible from context view in PLAYER unit.
  • FIXED: SHIFT+insert was ignored in the slicing view.
  • ENHANCED: SINE OSC unit CPU usage reduced to 40% of previous.
  • ENHANCED: LADDER FILTER unit CPU usage reduced to 75% of previous.
  • NEW UNIT: Manual Grains
  • NEW UNIT: Aliasing Triangle
  • NEW UNIT: Aliasing Saw
  • NEW UNIT: Card Player
  • NEW UNIT: Native Player
  • ENHANCED: In sample pool, ‘Clear Pool’ command has been changed to ‘Purge Unused’.
  • ENHANCED: Additional slice addressing modes called ‘nearest’ and ‘12ET’ were added.
  • ENHANCED: Decibel control added to Custom Unit.

v0.2.1 CHANGES

  • FIXED: Out-of-bounds buffer access in Manual Grains.
  • FIXED: Insert button hidden by waveform display.
  • FIXED: Decibel label on signal meters are now fixed.

v0.2.2 CHANGES

  • FIXED: Sound drops out when inserting a unit in a subchain after auditioning a file.
  • ENHANCED: Pan parameter added to Manual Grains.

v0.2.3 CHANGES

  • FIXED: Crash when removing LOOPER unit.
  • FIXED: Irrelevant pan parameter showing on mono Manual Grains.
  • FIXED: In sample pool, the ‘purge unused’ command would sometimes stop prematurely.

v0.2.4 CHANGES

  • FIXED: Inconsistent triggering when slice 0 is at the exact beginning of the sample.
  • FIXED: Displayed slice number was off by one in the slicing view’s slice list (but was correct in the sub display).

v0.2.5 CHANGES

  • NEW UNIT: Rectify with full, positive-half and negative-half rectification. Amongst other uses, put this in the level chain of the (normally bipolar) VCA to get a unipolar VCA.
  • NEW UNIT: Skewed Sine Envelope with skew, duration and level parameters.
  • NEW UNIT: Fold, splits incoming signal into upper and lower portions, applies separate gains and recombines.
  • ENHANCED: Global Chains were added to the Admin and Source chooser menus.
  • ENHANCED: Quicksave slots can be named.
  • ENHANCED: Envelope Follower unit parameters are now modulatable.
  • ENHANCED: Added contextual scope views (of unit output) to some more parameters.
  • FIXED: Zippering noise in Envelope Follower unit.
  • FIXED: Manual Grains sometimes stops making sound after assigning a new sample.
  • FIXED: After loading a preset, enumerated options were not reflecting new values.
  • FIXED: Quicksave UI was shown even if no card was mounted.

v0.2.6 CHANGES

  • FIXED: Freeze when removing a triggering Manual Grain unit with an assigned buffer or sample that is short(ish).
  • ENHANCED: 6-track recorder will now append an auto-generated take number when saving to a folder that already contains previously saved audio tracks.
  • ENHANCED: 6-track recorder will use “save to file” semantics when there is one track to save, and, use “save to folder” semantics when there is more than one track to save.
  • NEW SETTING: Configure 6-track recorder save semantics for single tracks (default is file).

v0.2.7 CHANGES

  • FIXED: Error in resampling code causing some high frequency content to be attenuated. Sample Player, Manual Grains, and Pitch-shifting Delay should sound slightly brighter now.

v0.2.8 CHANGES

  • FIXED: Occasional crash during WAV file auditioning (due to race condition).

v0.2.9 CHANGES

  • ENHANCED: Take a screenshot anytime using SHIFT+CANCEL. Images are saved to the ER-301/sc/screenshots folder.

v0.2.10 CHANGES

  • FIXED: Presets are not properly restoring shared (non-file-backed) buffers.
  • FIXED: Re-assigning a sample to a playing Manual Grains would sometimes cause the unit to “lose” volume due to resource contention in the grain pool.
  • FIXED: Global chains that refer to each other might not load correctly from presets (delayed name resolution needed)
  • FIXED: Ladder filter becomes unstable (and stops making sound) if the V/oct input sees a large positive input.
  • FIXED: Variable Delay has a 12kHz artifact when modulated in small amounts.
  • FIXED: Variable Delay slewing when modulated.
  • FIXED: Remove illegal characters from keyboard when naming a file or folder.
  • FIXED: Bypass does not work in top level of a Custom Unit.
  • FIXED: Crash when assigning local or global stereo sources that have names that do not end with a number.
  • FIXED: Stereo Pitch Shifting Delay was missing the V/oct input.
  • FIXED: High frequency artifacts in the Pitch Shifting Delay for non-integer speeds.
  • ENHANCED: Ladder Filter CPU usage reduced 50% with no change in quality.
  • ENHANCED: Added 1V/oct control to the Pitch Shifting Delay.
  • ENHANCED: Pressing UP when in a scoped parameter view will return the unit to its original parameter view.
  • ENHANCED: Parameters can now be renamed and moved in the Custom Unit.
  • ENHANCED: Toggle and Trigger parameter types were added to the Custom Unit.
  • ENHANCED: Sample Player unit now has a Stereo Routing option to control how stereo samples are played in mono (i.e. left, both, or right)
  • ENHANCED: Pitch Shifting Delay CPU usage reduced 50% with improvement in quality.

v0.2.11 CHANGES

  • FIXED: Custom Unit control assignments were not restored when loading legacy presets and quicksaves.
  • FIXED: Renaming or deleting any local or global sources (such as Custom Unit controls or global chains) were not being reflected in chain input assignments.
  • FIXED: Global Chains were being restored from quicksaves but not showing up in the admin->Global Chains screens.
  • ENHANCED: Verification screen added to the “Clear All” command in the Custom Unit’s control editor.
  • ENHANCED: Press SHIFT while the cursor is over any chain header to display an ‘xpath’ that describes the location of the chain in its hierarchy.

v0.2.12 CHANGES

  • FIXED: Custom Unit control assignments were arbitrarily reordered upon restoring from a preset.
  • FIXED: Duplicate control names in Custom Unit were allowed when renaming controls.
  • FIXED: XPath display stuck in sub display.
  • ENHANCED: Through-zero Linear FM unlocked for Ladder Filter, Sine Osc, Aliasing Saw, and Aliasing Triangle.

v0.2.13 CHANGES

  • FIXED: TZFM was not inverting oscillator phase for negative frequencies.

v0.2.14 CHANGES

  • FIXED: Mixer unit’s mute/solo state not being saved in presets and quicksaves.
  • FIXED: Unstable tracking of clock period in Clocking Delay unit.
  • FIXED: Occasional pops when modulating the delay time past the max delay of any of the Delay units.
  • FIXED: Ladder Filter would not self-oscillate unless provided with a fluctuating input.
  • FIXED: Disabled logging to the UART port unless development mode is enabled.
  • ENHANCED: Reduced CPU usage of White Noise unit by 70% with no change in quality.
  • ENHANCED: Phase modulation added to Sine Osc unit.
  • ENHANCED: Feedback (PM type) added to Sine Osc unit.
  • NEW UNIT: Ladder High Pass Filter (HPF), 4-pole and resonant.
  • NEW UNIT: Fixed High Pass Filter (HPF), 1-pole very efficient implementation for DC blocking applications (e.g. on FM inputs or after wave-shaping).
  • NEW SETTING: Does bypassing a unit also disable it? Yes or no.

v0.2.15 CHANGES

  • FIXED: In 6-track Recorder, saving a single track to a single file will fail if the destination file already exists.
  • FIXED: Possible float pointing exception (division by zero) in the Manual Grains unit when duration is zero.
  • FIXED: Pops would occasionally appear in IN1-4 and ABCD inputs at CPU loads above only 65%.
  • FIXED: Ladder Filter, Sine Osc, Aliasing Saw, and Aliasing Triangle units were not restoring f0 parameter from presets created prior to v0.2.12.
  • FIXED: Unable to re-enable a unit that was loaded from a preset in a disabled state.
  • FIXED: Display process was starved when loading quicksaves or presets.
  • FIXED: Unit control still focused when exiting from a subchain via UP button.
  • FIXED: Rational VCA was not rounding the numerator and denominator to the nearest integer since v0.2.14.

v0.2.16 CHANGES

  • FIXED: Sometimes loading a quicksave would leave the top level chains in a disabled state.

v0.2.17 CHANGES

  • FIXED: Channel linkage data was not restored properly from quicksaves.

v0.2.18 CHANGES

WARNING: Quicksaves produced with this version are not backwards compatible.

  • FIXED: Starvation of UI thread which caused freezes or very slow preset load times when CPU load is high.
  • FIXED: Inconsistencies in Sample Pool serialization/deserialization behavior.
  • FIXED: Unit and chain header text extending beyond boundaries.
  • NEW UNIT: Exact Convolution, an experimental IR convolution unit that is rather heavy on CPU. This unit will only load the first 48000 samples (48kHz firmware) or 24000 samples (96kHz firmware) of the assigned sample, and ignore the sample’s sampling rate. The maximum IR length is halved for stereo chains.

v0.2.19 CHANGES

  • FIXED: Crash when loading chain presets inside a Custom Unit’s encapsulated chain.
  • MAYBE FIXED: Occasional crash when deleting slices.
  • EHNANCED: Clipboard for units and sequences of units. Hold SHIFT and turn the knob to select units, then Cut, Copy or Move to Mixer. If configured in Admin>Settings, quicksaves persist clipboard contents.

v0.2.20 CHANGES

  • FIXED: Crash when scrolling in (non-empty) slice list after deleting slices.
  • FIXED: Paste command would not appear after Copy/Cut unless you first moved the cursor.

v0.2.21 CHANGES

  • ENHANCED: Super Fine knob state added. While in Fine mode, hold SHIFT and turn the knob.
  • ENHANCED: Super Coarse knob state added. While in Coarse mode, hold SHIFT and turn the knob.
  • ENHANCED: Coarse/Fine knob state are now persisted for each unit parameter and saved/restored with presets.
  • ENHANCED: Pitch Shifting Delay wet parameter is now modulate-able.
  • FIXED: Tap Tempo pulse width was being calculated without taking into account the clock divider factor.
  • ENHANCED: Tap Tempo width parameter is now modulate-able.

v0.2.22 CHANGES

  • FIXED: Could not dial in 0Hz on oscillator units.
  • ENHANCED: On power up, show the name of the restored (or to be restored) quicksave.
  • ENHANCED: Added contextual scopes to all parameters.
  • ENHANCED: Offset unit is now modulate-able.

v0.2.23 CHANGES

  • FIXED: Activating contextual scope for the 2nd instance of some units caused various odd GUI behaviors (collapsed units, for example).

v0.2.24 CHANGES

  • FIXED: Some faders will go out of bounds when using the fine adjustment near the top of the fader’s range.

v0.2.25 CHANGES

  • FIXED: Card Player was failing to load since v0.2.21.

v0.2.26 CHANGES

  • FIXED: Card Player was causing presets to fail to load.

v0.2.27 CHANGES

  • FIXED: Sample Recorder (Looper) sometimes failed to produce sound due to a bug in the fading algorithm.
  • FIXED: Sample Recorder (Looper) punch fade and reset fade time are now both set by the ‘fade’ parameter.
  • FIXED: Sample Recorder (Looper) clicks and pops when dynamically changing the reset period.
  • FIXED: Sample Recorder (Looper) has difficulty controlling loudness when doing sound-on-sound.
  • FIXED: Sample Recorder (Looper) exhibits erratic behavior when assigning mono buffer to a stereo unit.
  • ENHANCED: Buffer creation defaults to stereo when initiated from a stereo unit.

WIKI: How to install firmware on the ER-301

er-301-v0.2.27-stable-96kHz.zip (1.3 MB)
er-301-v0.2.27-stable-48kHz.zip (1.3 MB)


Some explanations of the new units.

Manual Grains

This is a high-quality but very manual granular player. It is manual because the grain creation process is completely under external control. To create a grain send a trigger to the unit. The values of the speed, start, duration, and gain parameters at the time of the trigger will be used to create the new grain. The max grain “polyphony” is 16 at the moment.

Aliasing Triangle & Aliasing Saw

These are additional oscillators to complement the sine oscillator but no effort has been made to reduce the aliasing caused by their harmonics. (Note: a sine has no harmonics so anti-aliasing is not required.)

Card Player

This unit lets you play WAV files directly from the card without needing to preload them into the Sample Pool. This means there are limitations though: no negative speeds and no slicing. However, you can jump around inside the file under external control by using the pos and trig controls.

Native Player

This is a simplified version of the Sample Player that makes more efficient use of the CPU by assuming that you will only play the sample at the firmware’s native sample rate (i.e. 48kHz or 96kHz). In other words, it is exactly like the Sample Player but with the V/oct and speed controls removed. This is useful for creating instrument samples where each pitch is mapped to a new slice and thus on-the-fly re-pitching is not necessary. You will need to prepare your WAV files in advance so that they have the correct sample rate.


Wow - thank you!!!

Absolutely stoked you’ve left the aliasing in, very smart - I love The Harvestman for this aspect of his designs…

Looking forward to trying this out later!!!

Explanations of the slice addressing modes.


When a sample is triggered the value of the slice select parameter is interpreted as a position in the sample buffer (0 is the beginning, 0.5 is the middle, 1.0 is in the end, and so on). The slice that is nearest to this position is activated.


Approximately 10 octaves of semitones are mapped directly to slices. The maximum number of addressable slices is 122 (i.e. 10.24 * 12).


This is the original addressing mode. The slices are distributed evenly across the interval from 0 to 1. This mode allows you to address the most number of slices (in the thousands). For example, if there are 10 slices then slice 1 is mapped to [0,0.1), slice 2 is [0.1,0.2) and up to slice 10 which is [1.0, inf).


Awesome, addressing looks great!

This looks great!

As I only have my ER-301 a few days, I haven’t updated the firmware yet. From a search I noticed this update procedure in another thread.

The Emergency Manual Update Procedure

  • Download the firmware archive that you want to install and unzip its contents on your PC.
  • Unscrew your ER-301 from the case and look at the back. There is a SD card on the back. I will call this the REAR SD card. Take out the REAR SD card and bring it to your PC.
  • Using your PC, copy the 3 files that were in the firmware archive (MLO, SBL, kernel.bin) to the root directory of the REAR SD card of the ER-301. You will overwrite the 3 files on the card already and that is OK.
  • Put the REAR SD card back in the ER-301 and power up. You are done.

Is this the correct procedure?


No. That is the procedure you need to follow if the normal update procedure fails for some reason. You can find the official firmware update procedure here:


For convenience, here are the relevant instructions:

How to install firmware on the ER-301:

  1. Download the zip file from one of the links above.
  2. Copy the zip file (without unzipping) to the FRONT microSD card. :apple:
  3. Power up and insert the microSD card into the FRONT slot of the ER-301.
  4. Move the STORAGE switch from EJECT to ADMIN (i.e. mount the card).
  5. Navigate to the UPDATE FIRMWARE screen (all the way to the right).
  6. Press UPDATE.
  7. Select the zip file that you copied in step 1.
  8. Once the files are installed, press REBOOT.

:apple: Mac-users: Your browser might automatically try to unzip the file for you when you download. To prevent this, please right-click and choose “Download Linked Files”.


Very glad to find out about the normal update procedure.

Regarding step 2. “Copy the zip file (as-is) to the FRONT microSD card.”, I’m not sure what "as-is"means/results in.

With my iMac, clicking on a link results in a folder containing 3 files. Whereas, right clicking on a link and choosing “Download Linked Files” results in a zip file.

Which of those results is “as-is”?

The download procedure that results in a zip file is “as-is”. I’ll update the procedure to clarify that.

1 Like

Thanks for clarifying!

Hi, i think i found a little instability in the Manual grains unit :
If i choose a very short lenght ( 10 ms ) for the grain and i command the unit with an ER101, with only two steps repeating eternally , gate is commanding the trig and CVA is commanding the pos, from time to time the pos parameter seems to incorrectly reacting.
I insert a little delay after the gate within the ER301 and all seems to be ok now.
I’m not sure but perhaps it will be helpful if this little delay was automaticly integrate within the unit.

Manual Grains is amazing !!
What’s the envelope on the grains ? I’d love to have control on them !

My ER-301 arrives today and now with more granular goodies! :heart_eyes:

Ooh, exciting.

Ooo!! :slight_smile:

Looking forward to try this as well, though I’m still far from having fully explored the current stable version. I assume that as far as I keep track of what chains and settings I’m saving with what firmware version, I can switch between versions without problems. Can someone please confirm that’s the case?
I’m planning on installing this firmware for exploration, then getting back to previous version to carry on working on some projects. I wouldn’t want to update a project with this new version, and then find out that I can’t go back. Of course, I keep backups, anyway.

Holy shit cant wait to install this! Thanks Brain :smiley:

Look forward to trying this out :slight_smile: Sorry if this has been mentioned before, but is auto-slicing on the roster? Would make working with breaks a hell of a lot easier.

hey, thanks for the frequent updates!

installed this today, and in the 6-track recorder, if i hit ‘save’, i can no longer define the file name, and additionally if i save something in a directory where there already are files that go by the same (default) filename, the saving does not happend. no (2) appendaging or the like. i noticed, scrolling thru the samples, that the files are briefly visible in the ‘recorded’ folder by the names of tmp-n.

i thought these tmp-files will stay there and i can recover my ‘saved’ session, but of course, unmounting the card seems to purge these tmp-files.

let me know if this doesnt make sense…