Jump to content
Sign in to follow this  

Need Help Speccing A Synthesizer Board

Recommended Posts

A while back, as some of you might recall, I built an electronic concertina for quiet practice. Recently, I was asked by a professor to turn the electronics into a flexible synthesizer module for use by her music class. That assignment is mostly straightforward, because I'm too busy to make major changes. The existing design is basically a low-power 4-channel polyphonic ROMpler with 100 MB of built-in NOR-flash for samples, as well as:

micro-SD card for loading new samples


Line and headphone outs

SPI port so that board can slave to an Arduino or RaspPi.

Built-in air pressure sensor and 3-axis accel/tilt sensor

general-purpose analog and digital I/O.

Built-in Lithium-ion battery with charger circuit.


The existing design doesn't support USB, but that seems like such an oversight that I might have to remedy it.


The remaining questions are about the general-purpose analog and digital I/O. The board has a fast enough ADC that I can add multiplexers to allow up to 32 analog inputs. And/or I could do something similar with digital inputs. And/or I could support a switch matrix with fewer I/O lines. The problem is, the more stuff I support, the clunkier the design gets, and the prof has already voiced her opinion that smaller is better. So I figured I'd run it by the folks on this forum to get some opinions. Given the above-mentioned beastie got dumped into your lap, how would you hook up to it? A bunch of individual mechanical switches? Hall-effect sensors? Something else?


As always, thanks for listening.

Share this post

Link to post
Share on other sites


The Open Pipe folks (http://openpipe.cc) have got me thinking about messing with some touch sensors this winter.

I think that the Yamaha EWI uses them as well? http://usa.yamaha.com/products/music-production/midi-controllers/wx5/


There is a dirt cheap I2C (MPR121) chip that supports 12 capacitive touch sensors and you can have multiple chips on a single I2C bus - but you know all of this stuff.


Sparkfun have a breakout board for the MPR121, https://www.sparkfun.com/products/9695, but there are lots of eBay sellers with really cheap versions of this piece.


Edit: Correct number of sensors supported per I2C address and name the chip.

Edited by Don Taylor

Share this post

Link to post
Share on other sites



Thanks for reminding me to support I2C. It's not one of my favorite interfaces, but it certainly solves many expansion problems, what with chips like the MPR121 out there. And thanks also for the Open Pipe link. I've got a student who wants to make a recorder/chanter controller the hard way, basically creating a time-domain reflectometer with an ultrasonic transducer at one end of an actual chanter, and a boatload of post-processing. Open Pipe might convince her that the low-tech capacitive sensor solution is good enough.



Share this post

Link to post
Share on other sites

Class compliant midi USB out. Class compliance is important otherwise hosts would need custom drivers.


I would want 2xI2C ports as the MPR121 can have 4 I2C addresses and that would limit the maximum number of buttons to 48.


I am planning to use a Teensy 3.x which does have class compliant USB midi out and two I2C ports plus its own built-in set of touch sensors.


The MPR121 has recently been declared a legacy part and I don't know what has replaced it yet.


What about an audio amp?

Share this post

Link to post
Share on other sites

I think your prof is right, go with simple. I think I would approach it with a more robust controller, like a the Beagle Bone, and then that sbc can control everything and mostly in software. That way parts are less. The Beagle Bone has some built in ADC and 2 dedicated micro-controllers, plus it uses Linux, so you should be able to run full 32bit programs, which could include sample playing, effects, etc . Its the size of an Altoids can.


For my own design I looked at multiplexing inputs because I want a box with about 55 keys. It seems like overkill, but some of the boards have enough digital inputs to dedicate one to each button.


I think a button switch using a hall effect sensor could be very easy to make: I can imagine the metal shaft of the button itself activating the hall effect switch. I had also considered an IR led for an optical button. Mechanical buttons tend to be unreliable and must be de-bounced. But to start I think I would just go with mechanical buttons and plan to replace then later.


As for the pressure sensor I think I would replace it with an IR led photo-transistor combo and use it as a proximity switch right down the middle of the bellows - the amount of light received will change with distance between the sides (no change or relatively constant value of light would mean no notes playing, ie, bellows is not moving). That may not give perfect results but may be close enough for a learning box.


However if you have a fully functional bellows I'm guessing you are also having pads to open up to allow air in to get that pressure sensor activated and to feel realistic?


With most of the microcontrollers and SBC's I've seen USB is built in so I would plan to have a USB connector, you might even be able to charge its internal batteries that way.

Share this post

Link to post
Share on other sites

Thanks for your replies; it helps a great deal with the design.


Don, I agree with the class-compliant MIDI USB requirement. I'm using a microprocessor with built-in USB, and I'm told there's support for MIDI, but I guess I'll find out.


Re the audio amp, I'm pretty happy with my compromise of a headphone amp and a line out to drive powered speakers. It's all built into this cute little codec from TI:




This version even has a biased microphone in, for the kids to play with audio F/X processing. I figured that there are thousands of powered speakers out there, and if I build in an amp, it will have too much or too little power for someone's needs.


Chris, your suggestion about the Beagle Bone goes straight to my heart. It's a great little board, with easily enough firepower, and I'm starting to integrate it into my scientific instruments, but it's a pedagogical disaster. The prof argues that for most of these classes, the kids have only an hour or two to get acquainted with their microcontroller, so even an Arduino is a stretch, and Linux boxes will be out of the question until I can build a nice Arduino-like IDE that hides all of the sausage-making. So as clunky as the two-board solution is, a stock Arduino controlling a synth that magically makes sounds in response to SPI or I2C commands is going to be what they want. The more adventurous can get inside the synth, but there will be only one or two of those per class. (Kids these days... ) Then maybe next year they'll be ready for RaspPi or Beagle Bone.


I might toss the air pressure sensor, unless the prof wants it for breath control. I included it because it's really wonderful -- sensitive, expressive, and not crazy expensive. Don, I can't remember where we left off, but I went with the MPXV7007DP, which works great at 3.3V. But it does take up precious space, and "go with simple" is the right mantra, so I might have to murder this particular darling. On my practice concertina, I had originally planned to have the button actuators open holes to relieve the bellows pressure, but that design leaked too much. My kluge is a single bleeder hole that can be adjusted manually with a thumb screw -- not perfect, but the best I could do with the design constraints.


Thanks again, and keep the suggestions coming as they occur to you. As always, any resulting designs will be free. Poorly documented, but free.

Share this post

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this