You wrote code to create your own devices from scratch?
What OS are you on, and how did you do that?
I guess I prefer the graphic interface of things, but i'm curious.
Yeah, for me it seemed simpler to write it myself because I already knew how to push bytes around in memory whereas there's a lot to learn with any given DAW. Of course when things get more complicated that changes because like the guys who wrote ableton obviously know a lot more than me, the complexity of the software becomes greater than the learning overhead.
As for platform, it was in theory OS independent. The original I wrote was in Python and I tested it on the three major OSs, but later I wanted a bit more performance and concurrency out of it so I rewrote it in Go and only ever tested it on OSX. It used portaudio in both cases so really all it has to do is generate PCM internally. I suspect there might be some endianness issues on some systems but nothing that can't be fixed. The mechanics of the thing are actually pretty simple, you have generators and modifiers. Generators produce a signal (a stream of numbers between -1 and 1 (usually) at the sample rate) and modifiers that take a signal as an input and return a signal as an output. So like adjusting volume is just a matter multiplying each number in the stream by a constant in a modifier, but they can have memory too so things like normalization are possible.
The only part that's kind of icky is guessing buffer sizes. If you go too high or too low your output gets choppy (because it takes too long for one buffer to work its way through all the modifiers, or too much time is spent passing these small buffers around respectively) and the only way I figured out to do it was to just fiddle with the numbers until I started getting steady audio.