Hi! I'm just settling on a simplistic design for a sequencer along the lines of some of the analog stuff I've been working on. It's going to be a 4 voice polyphonic, using the tone library and an arduino mega. I was going to wire it up all nutso and analog-like, but I think instead I'm going for 1 serlcd display, one pot, and one momentary (up/down/middle) toggle to handle selections; per channel (for 4 channels). So from that standpoint it'll be more or less totally open.

I have lots of ways to make an arduino tickle an oscillator (5940 and 16 pwm vactrols?), but I like the idea of

tone1.play(NOTE_A4);

in order to get a nice even-tempered note.

So what I'm aiming for is something that takes an analog input and makes that a timebase multiplier for tempo, a routine that decides to play a tone or not (or continuous), and something that sorts the array of available notes with a bitmask for musical key and musical mode (I'd use the info right on the wiki entries to sort this)...

Each voice will feed to an analog bandpass filter, controlled via an spi digital pot. The output of this filter will also be fed thru a pot, for digitally controlled attenuation. I'd like to set up ADSR for those, using the 256-step pots. Finally, all ouputs would mix to an analog onboard amp and speaker, etc.

Interfacewise, you'd be able to toggle the menu on the LCD for a given voice and adjust:

Sound fun? Four polyvoices and filters picking from musical modes and keys to assemble a pseudorandom aleatronic chord/arpeggiation experimentation device. Hybrid digital analog setup. I was into the YMZ chips for a while, and may ease this into the CEM chips I have, but for now, play() is about as easy as it gets. (oh, and would work just fine with the CEM3396 chips, now that I think about it)

I'll be steadily working on hardware until it's done (probably 6 weeks in this iteration), it'll be a shield with a quad opamp for the filtering and 4 dual ISP pots for the controlling... any input is appreciated, especially with where to go for bitmasking/handling the note selection, and most likely with the ADSR. Feel free to drop me a me a line if you're dying to have one & are comfortable coding the thing with me. The hardware stuff is easy, the bitmasking will be fun to learn. I have the thing toodling away here next to me with a garland of piezos around it.

Got the array of notes to work, so the thing is picking notes now.I think I'll work with 12 bit words for the music stuff,C maj = 101011010101C# maj = 110101101010; just move the pattern one bit...now to apply this to a note picking routine.

Shield design is done, I suppose I should go solder together a prototype shield but 4 equivalent bandpass filters, a DIP quad opamp, and a big fat DIP digital pot make for finicky soldering. The production shield is all small surface mount stuff.

a '1' in the bottom array decides a note is playable from the top array, via a logical NAND operation; add the value KeySig (0-11) to transpose... wraparound values, so if they go past B, they begin at C... no ringbuffer etc required and I think I can figure this out.

Well, here's the whole mess as it is making sounds now, lots of experimental this and that in there. Probably doesn't work right but spits out notes on the piezos I have hooked up. Will breadboard a digital pot to play with envelope generation for filtering and output. I think I need to get this whole thing working with millis(), I'm looking in bafflement at the TLC fades library for clues on how to handle envelope fading.

I'll post a video if you'd like. I can't say that it works correctly though, but it does seem to follow the key signatures and note widths.

I'm trying to work in ADSR figures now,I think this FOR loop (nested within the loop that handles the values for each tone channel) should handle the generation of the ADSR values, now for the hard part...

another thought on ADSR, this one doesn't compile yet but I'm kludging slowly away at it. Got the LCDs today so I'm making measurements for an enclosure and working a little further on the circuit. I think I'll go with a small board that is not a shield in order to keep things a little less noisy.