
Show HN: I just released my first commercial audio plugin - wrl
Hey all.<p>For the last few years, I have been developing a software synthesizer as a side project. It&#x27;s taken longer than I both hoped and feared, but earlier this week I finally shipped 1.0.<p>Details about the synth itself are up on my website, <a href="https:&#x2F;&#x2F;lhiaudio.com&#x2F;" rel="nofollow">https:&#x2F;&#x2F;lhiaudio.com&#x2F;</a>.<p>For those who are unfamiliar, in music production, there are host applications (such as Logic Pro, Ableton Live, or REAPER) in which most of the work (such as recording or sequencing MIDI data) is done. These applications generally have some built-in tools for the actual generation and processing of audio data, but there is a massive ecosystem of third-party plug-ins for doing this as well. Cadmium is such a project – it takes MIDI notes in and generates sound.<p>I built Cadmium from the ground up, based on my own framework for plugin API abstraction (for which I only have one backend, but that’s not important right now), my own UI toolkit (rutabaga (<a href="https:&#x2F;&#x2F;github.com&#x2F;wrl&#x2F;rutabaga" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;wrl&#x2F;rutabaga</a>), a cross-platform OpenGL 3.2 scenegraph), and finally the synthesizer engine and plumbing on top of all of that. The whole thing is written in C, with some Python (using waf as my build system) for compile-time codegen and some GLSL for pieces of the UI. Runs on Mac, Windows, and Linux.<p>Realtime audio programming is a pretty challenging field, all things considered. Since it’s realtime, there’s a lot of mundane bits of programming that are strictly verboten – no allocation, no file I&#x2F;O, no locking&#x2F;mutexes – but only in the audio thread. So there’s a lot of ringbuffers, lock-free queues, things of that nature, and then there’s the actual UI programming and math&#x2F;EE for the DSP on top.<p>If you&#x27;re a musician or producer yourself, I&#x27;d love to hear what you think. If you&#x27;ve always been curious about this kind of development, feel free to voice your curiosities here too! I love talking about this lesser-known corner of the wider software development landscape.<p>-w
======
djaychela
I've just downloaded the demo to have a play with it - like the sounds,
there's a lot here that could be useful for me (Musician/Producer and Music
Tech educator), so I have a few comments (I've spent under an hour playing
with it, so forgive the shallowness):

Love the modulation assignment method - dead simple to use and understand
within 10 seconds. Right-click to remove that assignment is nice as well. The
manual being online (and therefore animated to show things like this) is a
good idea.

UI is simple and clean, although it's a little on the dark side, IMO. However,
the VPS waveform display (and running through the instructions in the VPS
section of the manual) really help you understand what's happening to the
waveform and why it sounds like it does - a vast contrast to the the FM and PD
synths of the 80s where you just heard what was happening with (probably) no
idea why. Really nice touch there.

The flexibility of the LFOs (note or frequency-based) is another great help to
understanding and making sounds - really nice to be able to switch function
without having to recreate the modulation you'd created (as you would have to
if they were different modulation sources).

Filter is nice - particularly nice to have modulation options on Resonance and
Drive as well as cutoff.

Sounds are interesting - I think a lot of synths live and die on their presets
to show off what they can do, and there's a good selection here.

Some of the patches seem to use a LOT of CPU - for instance WRL Sine Keys is
around 50% (and a few others are around there as well) while KL Resonances Seq
can peak near 100%. These are readings from Cubase's Audio Performance meter
(I'm seeing about 7% CPU load in Task Manager > Performance). This is on Win7
x64, running Cubase, on an i7 4790K system that I dual boot for 'general' and
music use. Running the same MIDI on a Tyrell N6 sees almost no reading in the
meter in Cubase.

Any chance of a resizeable UI, a la sylenth? It's a bit small on a 4k screen.

Also, is there a roadmap? Whenever I see 'licence valid until vX.0 is
released', I wonder how long that will be; particularly when it's a plugin.

Anyway, I don't want to sound negative - what you've done is an immense
achievement (I'm learning the basics of programming in Python at the moment,
so I can appreciate a fraction of what you've had to go through) - hats off to
you for that. I've got to go and have dinner, but hopefully I'll get some time
later in the week to have a more serious play around with it.

~~~
wrl
Hey, thanks for checking it out. Really appreciate the feedback all around.
Going to address a few specifics here –

"Sine Keys" is a monster. It's the long release time coupled with a healthy
setting for max poly, and the killer in Cadmium is the per-voice overhead. I'm
definitely aware of this – the CPU usage is a consequence both of the audio-
rate modulation and because of VPS being difficult to antialias. Nonetheless,
it's a priority and I'm working on it.

Resizable UI is also on the roadmap. The next version (1.1) will have Retina
support, and that will pave the way for a fully resizable UI likely in 1.2
(Q1/Q2 next year).

There's a loose roadmap, but I haven't made it public just yet. My priority
right now is getting the next version sorted out to establish a release
cadence, and then after 1.1 I'll be more open about my plans.

Again, thanks for demoing it, and glad to hear you're enjoying it. Feel free
to reach out anytime. :)

