Arduino as midi trigger interface

I have an old Ace Tone Top-5 combo organ from the late 60's. It's a simple affair, 49 keys that have no velocity information, but just act as switches for the sounds created by a mass of ancient circuitry.

I was hoping to use an arduino as a USB input midi trigger.

I'll explain my idea and then if people can either tell me I'm crazy and I should be doing it XYZ way, or confirm that I'm not running off down the wrong path that would be awesome.

My plan was to write a little patch in MAX/MSP that acts as a simple proxy between the midi out from a sequencer, and the arduino (that bit I can do no issue).

On the hardware side, I was thinking 49 photo-isolators, all plugged into a mass of multiplex heaven, I'm thinking 7 4051's piggie backing.

That way I all I'd need on the arduino firmware is that it accepts whatever form of serial in from MAX, and literally just triggers one of the photoisolators in the multiplex, the other side of the isolator will just be a short on the keyboard switch.

That way the instrument still works without the usb being plugged in, or plug in a usb and off it goes as a midi controllable instrument.

How does that sound?

Sounds OK apart from:-

all plugged into a mass of multiplex heaven, I'm thinking 7 4051's piggie backing.

You tend to not be able to get enough current through an analogue multiplexer to light the LED in the opto isolator. Also you don't need the bidirectional aspect of the multiplexer so I would go for a shift register output to drive your optos directly. Or you could use a port expander like the MCP23016 - you get 16 outputs from on of those.

Thanks, I wouldn't have considered the lack of current.

Good catch on the multiplexing, shift register does make more sense, would that also negate the issue with lack of current as well?

Could I just use something like a Max7291 to get my 49 discrete optoisolator connections?

http://www.arduino.cc/playground/Main/MAX72XXHardware

would that also negate the issue with lack of current as well?

Yes that's why I suggested it.

Could I just use something like a Max7291

Well you could but that is a multiplexed output so the keys would be rapidly switching on and off. You might get away with it but I think it would cause you problems.

Many many thanks for the rapid response, I think I now have a good idea of the direction to head. I'll do some prototyping and post any findings back here. Thanks again !

How does that sound?

Mad!

Mad in a good way, or mad in a bad way? :-)

Mad in a good way, or mad in a bad way?

Dunno, depends how you're feeling :D

Mad as in excentric...

"Eccentric" that's funny, it's probably how half the people I know would describe me. That said I think almost all the stuff I've seen done with an arduino is eccentric in nature.

I actually have loads of old instruments, that could use this on/off mechanism for triggering, it could end up being very useful. I think I'll need to design a pcb for this so the soldering is easier.

I think I'll need to design a pcb for this so the soldering is easier.

Yeah maybe, not cheap though, unless you want a few hundred (or a single sided one that you can do yourself)

Mowcius

You know, many of the old analog synths used a resistor ladder. Seems to me you could leave that in place and use one of the analog ins instead. Downside is, of course, that this would probably be monophonic.

You know, many of the old analog synths used a resistor ladder. Seems to me you could leave that in place and use one of the analog ins instead. Downside is, of course, that this would probably be monophonic.

Yes it would and if you pressed a few at the same time then it might get a bit confused!

Mowcius

The 4051 multiplexers would also have made it monophonic, since only one of its outputs can be connected to its input at any given time.

The 4051 multiplexers would also have made it monophonic, since only one of its outputs can be connected to its input at any given time.

Very true! :D

Mowcius

Err, I'm not quite seeing that. If you poll it fast enough, you should be able to pick up all the notes being played. The trick I used on a vastly simpler (four-button) MIDI sender was to use my polling loop to store a flag for each note. It would listen for any of the buttons being released as well, and if that note was playing, it sent the corresponding noteOff event.

Probably kindergarten programming to you guys, but I thought I'd throw it in here.