the wondrous tales of a software guy in hardwareland

A Softer World

After almost 2 years building hardware, it was about time to start playing with it! And writing the software, of course. Which is soooo much more relaxing, in comparison.

I started coding ~3 weeks ago, mostly during weekends. And I can say it’s coming along nicely. Did I just say “coming along nicely”? Well, fuck that. IT’S A BLAST! But don’t just take my word for it, listen:

I was inspired to challenge myself on the Pink Floyd’s classic sequence by a post on Synthtopia I read some time ago. Of course, my rendition pales when compared to the real synthesis powerhorse (and good synth players :-) presented there. But hey, if you consider that it comes from a super-cheap monotron, I think it’s relatively cool.

The software is available on Github. It’s just a first commit “as it is”, still very limited in its current state. I’m progressing slowly. One reason is that I have my very own methodology, which I dubbed Attention Span Deficit Driven Development (I spent literally hours trying to come up with custom characters for the pattern in the LCD screen).

Another reason is that most of the work is figuring out algorithms and actual parameter values (attack, decay, envelope, etc.) which sound good. And there’s no unit test for this, only your ears.

I actually started studying how the 303 works. This is what I found out googling around and asking some 303 gurus:

1. The envelope modulation and decay knobs control the VCF envelope. They are not related to the VCA in any way.
2. Decay goes (approx.) from 200ms to 2 seconds. And is not related to BPM in any way.
3. Attack time is fixed at ~5ms.
4. VCA envelope length is fixed at 200ms.
5. Gate (which turns the oscillator on and off, I guess) is high for the first ~58% of each step length, and low for the remaining ~42%.

And those are just the basics. Then there is accent, and other gimmicks which make the 303 sound like a 303. I’m not sure I got everything right, but the general idea seems plausible. The details are not so important anyway because, of course, the monotron is a pony with far fewer tricks. There is no such thing as a VCA, it’s either on or off. The only things I can work with are cutoff and pitch.

Still, investigating fhe 303 was immensely useful. I actually implemented a supersimplified version of the above, with 10ms attack time and decay from 20ms to 300ms, plus envelope modulation. There are still some unpleasant clicks when the monotron’s gate goes on and off quickly. But I guess this is kind of physiological…

Regarding the functionalities, I’ve implemented only pattern input and – partially – pattern edit. Still no menu, no multiple patterns (the buttons aren’t even wired up yet) and no EEPROM storage. I also need to implement hold and slide.

And finally: in case you didn’t notice, the current code is quite messy. I was playing aroung and trying different things, so there are probably commented out things I left in for my own reference, unused (or misused!) variables and such things. I will clean it up sooner or later, pinky swear :-)

Stay tuned for more!


PS. the title of this post is a reference to one of my (almost hundred…) favourite webcomics. Heartly recommended. Unless you are a Vulcanian, in which case you’ll probably find it not funny.

, ,

Comments are currently closed.