Last week was the week I was supposed to work on outreach, resume email correspondence, file taxes, work on video material and user guides...
Instead I got lost in development.
Which is also the most fun part of the business, but not really what generates income in the short term.
Anyway, it means yet another round of updates for most of the plugins.
Changes and fixes
Partials & Discrepancies - v1.3.1
- CC#4 fixes to make slot motion smoother and less jittery
- Voice Offset fix, so the voices now correctly use all active slots when slots are manually activated or deactivated
- Quite a few optimizations under the hood, mainly focused on making CPU usage more stable and reducing spikes
Geometry Delay, Geometry Reverb and Binaural Modulator - v1.3.1
- Optimization mainly focused on users with GPU acceleration
- Some CPU reduction for users without GPU acceleration too
Geometry Delay, Geometry Reverb, Binaural Modulator, Grain Discharge, Synaptic Resonance, Cavitation Fractures and Spectral Pressure Chamber - v1.3.1
- Improved multi-instance performance
These plugins are built with a lot of similar components, or reusable components that I have adapted to each use case.
That also means that when I find a bug, or realize I have implemented something in a dumb way, probably the more common scenario, I often need to fix it in several plugins.
The good part is that most of them benefit from the same fixes.
The less fun part is implementing the same fix and then testing that it works correctly in 10 different projects/plugins...
Curves & Membranes - v1.3.5
This is the big one. Again.
It started with a comment on Facebook under the Node Mode video from David, a very talented musician and Unusable Engineering user. I hope it is okay that I quote you here:
“Very cool! I immediately wish for node mode to be selectable by preset, so you can have both in the same synth. And, since we're in dream mode, I also wish for a slider to morph between full curve mode and full node mode, of course also set individually by preset.”
So basically: make Bézier to Node Mode sweepable, and include that setting in the oscillator presets.
My first thought was that it would probably be impossible without breaking the CPU.
But a good night’s sleep can do wonders...
I started by optimizing the oscillator core and reducing update rates as much as possible without changing the sound or the feel of working with the synth.
Then I got the Bézier-to-Node interpolation working.
While implementing that, I realized I could do something similar under the hood with the oscillator overflow modes. So you can now have None, Clip or Fold in different slots, and slew will interpolate into the new state instead of just switching directly.
And yeah, I got both working.
(David, I am still not adding sliders for Clip and Fold depth.)
Since the CPU load was still lower than before the optimization work, I decided to add something that takes the synth a bit further into another territory:
An auxiliary oscillator
It runs the same geometry as the main oscillator.
The only direct parameter is detune, but that value is also stored in the oscillator slots.
So with slow clocking and plenty of slew it can slowly drift away and come back again. At faster rates it can create some pretty interesting textures.
Before wrapping up for testing and lots of bug fixing, I decided to add a couple more things to the slot state:
- LFO settings
- Half-Octave Offset
To make all of this work without breaking the CPU, I have done quite a bit of optimization inside the synth core and reduced update rates where possible.
The goal was to do that without audible or visual compromises.
I think I managed that to a more than reasonable extent.
It is also kind of funny where this ended up.
These extensions were inspired by the slot sequencers in the effect plugins.
Those were inspired by the slots in Partials & Discrepancies.
And Partials & Discrepancies was built partly from ideas that started with the Bézier Wave Preset sequencer in Curves & Membranes.
Everything goes in circles at Unusable Engineering...
So, in short
The old Wave Bézier Presets have been renamed Oscillator Presets, and the function has been expanded quite a bit.
The slots now save:
- LFO settings
- Half-Octave Offset
- oscillator overflow mode: None, Clip or Fold
- the position of the new slider interpolating between Bézier and Node Mode
- auxiliary oscillator detune
Slew interpolates these settings too.
So a slot transition can, for example, sweep into Fold mode and Node Mode while reducing detune, shifting the octave offset and adding noise modulation from the LFO at the same time.
I also implemented the same CC#4 fixes as in Partials & Discrepancies, making movement smoother when slew is used and editing more stable while CC#4 controls the slot position.
And while I was working on it, I added a few workflow features I already like in some of the other plugins:
- Copy and Paste for slots
- Double-click a node or handle to move it to the vertical center line. When no orbits are used, this can make a slot completely quiet. Quite useful for rhythmic movement, but also when setting up slots for CC#4 control.
- Slot Freeze with Cmd+click on Mac / Ctrl+click on Windows. This temporarily ignores the sequencing settings and jumps directly to the selected slot for editing without turning the sequencer off.
I made a video showing the new Curves & Membranes features here:
The latest versions are available through the account page:
A little development status
I have also started working on a prototype for plugin number 15.
It will be a four-quadrant multiplier, or ring modulator as it is more commonly known.
The current prototype takes the idea quite a bit further than the ring modulators I have personally used in hardware or software, but there is still some way to go.
So no release date yet.
And at some point I should probably get back to those taxes.
All the best,
Rasmus Nyåker