A friend asked about modding his Volca Beats to allow individual trigger outs. This would let him sequence eurorack modules with the built-in Volca sequencer, potentially replacing certain drum sounds with custom synthesized sounds. Great idea.
I wanted to use this project as a learning experience for my friend, so I wanted to walk through how to reverse engineer a consumer product, design a circuit, and write code to make it do what you want.
The Volca has a secret midi output port. We will use this to decode the messages sent out and send 5V triggers when the right messages are received.
We took a look at this 'TX' pin on an oscilloscope, and sure enough it's a 5Vp-p asynchronous serial stream, at the standard MIDI 31250 baud rate.
I wrote a simple arduino sketch that would echo messages received on this port and send them through to my PC over a second serial port. The code was dead simple.
This code is for the cheap Arduino Nano.
By doing this and sniffing the serial hex messages using CoolTerm, we found the following messages being sent when the individual drum sounds are pressed.
At this point we wrote some code to listen to certain messages. When one of these 10 midi messages are received it sends a short message to the PC (for debugging) and sends a trigger out through a digitalWrite. I decided to go with a 50 uS trigger pulse length, this may need to be adjusted. The final code looks like this:
Not terribly optimised but it get's the job done. Could be cleaned up substantially, perhaps the function MessageCompare could just check the 2nd byte and choose the correct output based on that.
Next up is hardware, which we'll finish up this Friday. The goal is to put this into a nice eurorack module.