The Midimonster


In the erly 2000s a friend and me had an increasing number of gigs. We were doing live Techno and Electronic Music where you connect several hardware sequencers, grooveboxes and the like, prepare some patterns at home and improvise during the play.

In this constellation, where my friend and me had their own MIDI setup, we lacked a common source for MIDI clock. You can sync two or more devices via MIDI clock but one always has to be the MIDI master. You can connect as many slaves to this master as you like.

If one of us played the part of the master this wasn't a problem as long as the clock was running. But there were situations where one of us had to stop his machines.

  • Maybe he had to load another part of his live-stup.
  • Or he had to do something on his device which could only be done if the sequencer was stopped.

If the master stopped his setup everything in the club would go quiet, because master and slave would stop both. If the slave stopped this was no problem at the moment, because the master could continue to make music. But if the slave wanted to join again he had a problem. Depending on the implementation of the MIDI protocol in the slave sequencer there were two possibilities

  1. The slave sequencer would not react to any START button on the front, because he was waiting for MIDI Start.
  2. The slave sequencer would start, but he would not start in sync with the master. 

The solution would be, to build an device, the Midimonster, which would just send out MIDI Clock on both of his ports. If asked, the device would send a MIDI Start signal to the requesting port. If the device was asked to send a MIDI Start again on this port, the device would wait until the next useful time position and then send the MIDI Start. This could be the next bar or the next beat. This way both connected sequencers are in sync again.

The Midimonster

I decided to take an Atmel microcontroller and hook up two buttons to request the start-signal. Two MIDI-Out jacks, one for each button, routed the MIDI Clock to the input of our sequencers. The thing was completed by a small LCD for the tempo and one button to switch between "Start-Mode" and "Enter-Tempo-Mode. The Atmel controller had only one UART, but I needed two. So I decided to route the output of the Atmel UART into an two AND-gates. These gates were opened by the controller when the MIDI Start was sent (I think it is 0xFA). So I had two independent outputs without losing the tightness of the Hardware-UART.

We put the device to the test during some live-acts and it worked.


The Midimonster, V2

I wanted to make the monster bigger. I wanted to have 8 Outputs and DIN-Sync In and Out. I wanted to do the 8 Outs using software UARTs. It had Seven-Segment-LEDs instead of the LCD and LEDs showing the status of the 8 channels.

But the small Atmel was not fast enough for 8 Channels. I got it working to three channels, more was not possible.

Very useful link regarding the MIDI Clock Specification.