Mangle updates and apology

TLDR: I’m releasing a new update for The Mangle today. I hope to have the final version done by December, and I’m sorry about not communicating enough on the KVR forums…

Over the last few months I haven’t been steering this ship as well as I could have. I haven’t communicated well with my paying customers, and I haven’t delivered any updates for about 3 months. I’m really sorry about that. It’s due to a mixture of burn-out and some changes in my life. When I released the first beta of The Mangle I’d already been working on it for close to 2 years. Since first release it’s been more successful that I’d dreamed. But I also wasn’t really prepared for the extra work that would create, particularly in the form of support emails. I have never really been good at keeping in communication (ask my mother!) and after a few very diligent months I began to dread the support emails I received each day, even though my customers have every right to expect answers to their questions about a product they paid for.

Anyway, after this period of relative dormancy, I’m ready to throw myself back into this thing. I am working towards completing the final version of The Mangle by the end of November, since that’s the 1st anniversary of the first beta release.

And since I hate to make empty promises, I’m releasing a new update today to show that I mean business. Here are the changelogs for the last few updates, as a record of the progress that has been made.


  • Minor layout redesign: settings now on tabs on main faceplate, rounded corners begone!
  • Lock icons on main parameters now only highlighted if a lock is active.
  • Modulations can now run ‘via’ another modulator, which modulates the intensity of the modulation.
  • Added “Loop” option (in Position tab) which allows you to set a region and speed over which the position will continuously loop. This is similar to setting a saw wave LFO to position, but comes with some improvements - e.g. can go slower, and ‘wraps’ back to the start of the waveform (rather than stopping at the end).
  • You can now set the folder in which to look for presets.
  • Fixed crashing bug when changing an LFO parameter by typing in an amount.
  • Copy/paste of sound slots etc. now works between different instances of the plugin.
  • Now dynamically resizes internal buffers if user has a buffer size over 4096 samples (before having large buffer sizes resulted in no sound or a crash). It’s difficult to know how this will play with all the different hosts - let me know if you use large buffer sizes and still get problems.
  • Further improvements to workflow when samples are not found.


  • Can now change the grain rate quantization from a dropdown on the main panel (much faster access)
  • Increased highest grain rate from 100Hz to 250Hz. Beware, High grain rates can consume a lot of CPU!
  • Increased possible number of simultaneous grains per voice from 300 to 1000.
  • You can now drag across all Sequencer sliders to set a sequence quickly.
  • You can now optionally swap the L/R channels of stereo grains alternately or randomly (or not at all of course). This is useful for re-balancing the stereo field for hard-panned audio files.
  • Functions of the mini-dropdowns on the main knob labels are clearer now with appropriate icons.
  • Fixed crash when adjusting all stages of an envelope to 0.
  • “Duration” knob’s label now changes to reflect which part of the grain envelope it’s affecting.
  • Grain envelope display now ‘rezooms’ correctly to fill the window when changed from the yellow Grain envelope shortcut knob.
  • Voice env can now also be used as a regular modulator (though it’s still always hardwired to the overall amplitude).
  • Issues with buffer sizes larger than 4096 fixed.
  • Big improvement to workflow when an audio file in a preset is not found. (Locate file, optionally resave preset).


  • LFO Sync is finally enabled! However, it’s a relatively primitive form of syncronization. The Mangle’s LFOs are not free-running currently. The oscillator only starts when the voice starts playing (i.e. on note down). Hence, you can choose the starting phase of the wave (or a random phase to “simulate” a free running oscillator). I haven’t found this too much of a problem when using the synth myself, but I’m aware it’s not the normal behaviour with synced LFOs, and some people might find that annoying. Let me know your views. But redesigning the oscillators will be a pain, and I’ve found it quite un-fun programming stuff that syncs to host tempo.
  • Envelopes now correctly respond to velocity (silly bug!). The env slider marked “Vel” controls the amount velocity affects the envelope’s overall level. As a result of this bug fix, your patches may seem quieter if your MIDI notes are less than full velocity. To get the old behaviour back, simply set the envelope’s “Vel” slider, which represents the amount of velocity sensitivity to 0.
  • Knobs/waveform display now show summed modulation amounts for all parameters in dark blue, plus the currently visible modulation in light blue.
  • Better use of SSE instructions in the core engine for slightly improved performance.
  • Fixed bug which could result in divide-by-zero (cuasing hangs/audio dropouts), especially when dragging new audio in while the synth is playing.
  • Grain animation is slightly more efficient, slightly more pretty, and turning off “Show grains” now correctly eliminates all CPU usage by animation engine.
  • Voice Env can now be used as a normal modulator too (though it still always modulates the voice’s overall amplitude).
  • Dragging files with capitalised extensions now works properly.
  • If host supplies a bogus tempo (e.g. 0) tempo now defaults to 120bpm (instead of barfing).
  • Off-by-one error that sometimes resulted in first grain being missed has been fixed.
  • Loading a sample of more than 4mins no longer results in mismatched position marker (though I don’t really recommend such long samples)
  • Copy/paste is more robust if the ‘clipboard.xml’ file can’t be written. In this case, The Mangle now falls back to in-memory copy/paste. If this happens you lose the ability to copy/paste between different instances of the plugin.
  • Pasting sequences now correctly updates both the synth & the ui.
  • Pasting sequences now correctly updates the number of steps.
  • Bypass switches and ‘lock’ buttons on mod matrix now show state when matrix is initially shown (before they only showed correct state after a mouse-over).
  • File open dialog now remembers the last folder you chose a file from and opens the same folder next time.
  • Improved discoverability of waveform zoomer with a mouseover state.
  • Behaviour of both impulse and non-impulse modes of Random generator improved. I’m aware it’s not all that obvious what impulse does, the manual’s coming soon!
  • If Random is in impulse mode with a Freq of 1, the Freq (i.e. number of grains to wait between new random outputs) acts as a random number of grains (because a random impulse every grain is pointless, doing the same as in non-impulse mode).
  • LFOs now go much slower, down to 0.02Hz.
  • “Preview” buttons on slot select now correctly show if the slot is running in toggle mode.
  • CC Numbers in MIDI & Macro panel now react when you move a MIDI CC, i.e. ‘MIDI-learn’.
  • Preset dropdown now correctly shows currently selected preset. It also doesn’t display folders that don’t contain valid presets.
  • GUI and synth updating of grain tempo sync now works correctly.
  • GUI now shows version number.
  • Notch filter has its a proper representative visualisation, instead of using the same as band-pass.
  • Much improved Windows installer (though that doesn’t really affect those who have already purchased!)