The, previous attempt at an OP-Z plugin thingy was a failure.
The boot time, the bugs, and overhead that come with running
supercollider stack on such a Raspberry Pi Zero is too much.
You don’t need Linux if you want to run a medium complexity synth.
But it also failed at being fun and easy to use.
With teensy 3.6 & teensy audio board, the boot times are around a second or less, it’s faster than the OP-Z! The CPU usage is less with Teensy than on Raspberry Pi Zero for the same building blocks (oscillators and other effects). Teensy audio library is a great tool, synths that can rival the OP-Z’s built-in ones can be built using the basic building blocks.
The first iteration it’s a simple hackable synth, maybe also a sampler in the future. A small semi-modular portable plugin like this one could be a bit more fun but that’s for the next time.
The natural evolution of the previous design:
The micro-modular was inspired by the o-coast and the kastl and of course the full size modular systems. While some of those run mostly analog circuitry in their signal paths, teensy can’t do that, it’s just an emulation of one.
Initially, things had to be simple, connections could not be stackable, one output in only in one input, The micro-modular is based on teensy 3.6 as its mainboard and an Arduino Nano as a slave expansion board, In hindsight, I should have ditched the Arduino and some “modules” on the board, for example, the FX section should not be on board.
Beware, Arduino Nano is not compatible with the Teensy board out of the box. Arduino runs on 5v, it could damage the Teensy board, it had to be converted to 3.3V, there are tutorials for this so I’m not gonna cover this here.
Next step is the teensy firmware, teensy audio tool is good for medium complexity synth, but I needed:
- 4 oscillators with FM, PM and PW modulation
- 2 LFOs with PW modulation
- A VCF
- A pair of VCAs
- Two envelopes generators and a few utilities like mixers and splitters
all of those only for one voice, the synth would have 4 at least.
One major drawback of the teensy audio framework is that
AudioConnection objects can’t be created at the runtime so every possible connection has to be made beforehand and it looks like a total mess.
Once I was done with the firmware CPU and memory usage was above 80% with a power consumption of 140 mA from the OP-Z (when driving the headset at full power) that’s above the advertised 100 mA max that OP-Z could output, so I had to underclock it a bit and remove extra FX and LEDs, even then I could not get it below 120 mA without removing a synth voice so I left it at 120 mA.
The end result is a close enough modular emulation that certainly provides a lot more sound variety than any built-in op-z synth engine.
- OP-Z current limit at ~140 mA
- Decreased battery life
- Not as flexible as a modular
- Internal audio clipping
- Not tightly integrated with the OP-Z
- Massive code base
Your phone has more processing power and always in your pocket, a specialized device like this one has limited appeal, just like all the other pocket synths that came before.
The takeaway was that even if I wouldn’t have a use for the final product, the creation process is the most enjoyable part for me. Merging software and hardware into something results in greater satisfaction than just writing a standalone piece of software.