the wondrous tales of a software guy in hardwareland

All Systems Are Go

I knew I should have listened to mom’s advice when she said “Son, don’t do drugs, always wear clean underwear and, for Heaven’s sake, don’t start buying electronics components!”

And here I am instead, constantly waiting for the next delivery to arrive. Oh well, at least I got the underwear bit right :-)

Last week I placed an order of ~27€ at Distrelec (nice seller, fast delivery and their Android app is well done). Most notably a stock of resistors, diodes and transistors, plus 2 x MCP4921 (finally!), 2 x 74HC595, and various bits and pieces (I’ll get to this later).

And yesterday I received my potentiometers, 20 x ALPS 10k linear mono. Yeah, lotsa knob :-)

I got them off ebay for as cheap as 6.50€. Unfortunately the shipping costs were quite high, so I payed a total of 12€. Still not a bad deal! Their ebay shop is pretty cool, I really recommend it. Could be your one stop shop for knobs and faders and all things ALPS.

Plus, they add a “Schnuppertüte” (surprise bag) in every package. I got some assorted hypercute little buttons, trimmers and even some funky encoders. Sooo lovely :-)

In short, total expense so far ~150€. Ugh. But at least I’m satisfied. Almost. At the very least, I definitely have all I need to start building my sequencer.

Speaking of which: it’s true that I didn’t even start yet, but I did my homework – so to say – in the mean time. Let’s start with some academic-historical pedantry, shall we? When I think sequencer, two paradigms come to mind. One is the pure analog, modular style:

Korg SQ-10 (source: http://en.wikipedia.org/wiki/File:Korg_SQ-10.JPG)

This has the advantage of being completely hands-on, no editing procedure, no menus, no options. One (or more) knob for each step, every change reflects on the output immediately. Fun factor to the max!

Technically, this requires quite a lot of multiplexing. But nothing really complicated, and basically nothing to store in memory. Just analogRead() all the way down :-)

The other paradigm, aka step-sequencer, is the venerable, the original, the Holy Grail of pattern addicts:

TB-303 (source: http://en.wikipedia.org/wiki/File:TB303_Front_View.jpg)

Love it or hate it, this thing has been one of the most influential musical instruments in modern music. Soundwise – even if it’s quite limited compared to other synths, but mainly workflow-wise. An octave keyboard, step advance button, accent, glide, and a few others commands. Oh, and LEDs, of course. You can’t do without LEDs.

Now, I never used a real 303, but I had my share of fun with Rebirth-338 back in the ’90s. It’s a free program nowadays and still a helluva fun, so get your hands on it if you didn’t already.

While slightly more intricate than just turning knobs, this sequencing paradigm is definitely more musically useful. I can’t envision entering precise notes using knobs, let alone switching patterns. Technically, a 303-style sequencer is also a tad more complex to implement. You still need to involve mux/demuxing, for both input (buttons) and output (LEDs), keep states in software, etc.

Actually, this brings us to the main limitation I encountered while shaping my project, even just theoretically: PINS! Much, much earlier than hitting the boundaries of memory, CPU speed and processing power of the Arduino, you have to cope with the limited number of pins. That’s basically why my sequencer will not look anything like a modular sequencer or a 303 :-)

Just let’s do some basic math. Arduino has 14 digital pins (plus 6 analog ones, but that’s ok for now). I need 4 for the DAC and one for the gate to communicate with the monotron, that makes 5. On the user interface side, at least one button for start/stop, and we are at 6. The LCD screen, which is going to be the main component of my UI, takes 6. And suddenly BAM! only 2 pins to go… how am I going to implement editing the steps, loading/saving patterns et al.?

Sure, I could drop the LCD and switch to a more 303-like layout, but this means 3 pins every 8 mutually exclusive input/outputs using the 74HC595s. I didn’t wrap my head around it entirely, but you can easily see that we would be short of pins as well.

My current plan for the sequencer UI is to use 5 knobs and 2 buttons. This is a quick’n dirty sketch made with Fritzing (not a circuit or anything, just a workplan):

This is the absolute minimum working interface I was able to come up with. The idea is that you select a step with the “step sel.” knob, change its pitch/glide/length, and if you are happy you press “write”. Step data will then be written to the pattern. Selecting another step will of course leave pattern data unchanged.

Will it work? Will it be easy to use? Will it be fun? I don’t know, really. But I will find out :-)

The sequencer will be built on a 16x10cm perfboard, single-handedly and with my amazing soldering skills :-) I also bought IC sockets and female headers, because I still want to be able to snap on and off the “precious” components (eg. Arduino, LCD and DAC chip), while having something more stable than a breadboarded circuit.

One final note: in my original plan, I wanted to sequence both pitch and cutoff of the monotron. Unfortunately, I realized that you can’t easily have two MCP-4921 (or two SPI chips, for what it’s worth) in a circuit, because the SPI pin numbers are hardcoded in the Arduino library. Don’t know if there is an hardware limitation behind this, or is just a software thing. Even if it’s just software, I can’t afford 2 times 4 pins to control both chips anyway :-)

I should have bought one MCP-4922 (which is a dual DAC for the same pin cost) instead of two MCP-4921. But it’s ok, one must learn by doing it wrong. And this gives me a good excuse for version 2 of my sequencer :-)

Enough ranting for today. Now back to work!

cheers,
Aldo

, , , ,

Comments are currently closed.