Skip to content
pteichman edited this page Jan 21, 2011 · 3 revisions

Welcome!

roto is a polyphonic MIDI synth for an Arduino with a MidiVox shield. It mimics some features of a Hammond B-3 organ.

It emulates the 91 tonewheels of a B-3 using direct digital synthesis. Each key on a keyboard activates 9 tonewheels, the tonic plus 8 other harmonics. These are mixed together based on the position of drawbars, controlled with MIDI CC# 110-118. By default, roto uses the classic 888000000 drawbar setting.

roto fits very tightly into the 16MHz clock cycle of the Arduino. You will find that playing many notes at once will eventually cause a frequency shift as the tonewheels can't keep up with roto's 15.6kHz sample clock. This can be alleviated by running fewer tonewheels, i.e. zero out more drawbars. I'd like to support more features of the B-3, but we'll see what is possible on a stock Arduino with MidiVox. The tonewheel engine is straight C, so it should be easy to port to other microcontrollers.

Desired features:

  • Simple emulation of a Leslie speaker cabinet
  • Harmonic Percussion
  • An alternate waveform for lower frequency tonewheels

Known issues:

  • There's an audible pop when starting or stopping notes.
  • None of the features have been compared to an actual organ for audio accuracy.
Clone this wiki locally