User Tools

Site Tools


SIDaster Synth


SIDaster is under development. The description here contains both already implemented and intended features of the Synth. See the Changelog section for current status, and ToDo section for features that are under progress.


fullmaj.rd-h.fr_wordpress_wp-content_uploads_2011_09_hot1.jpg SIDaster Synth Engine is an Arduino Software that plays Old fashioned “SID” MOS6581 sounds. It transforms an Arduino Board interfaced with the SIDaster shield into a multimode 8 bits synthesizer. The synth characteristics are decribed below:

  • Midi Synth with 3 MOS6581 voices
  • Three Operating Modes :
    • Mono 3 layers sound.
    • Poly with up to 3 simultaneous voices
    • Drum Mode with Kick, Snare and Velocity parametric HiHat
  • Receptive to Note messages, Pitch Bend and Modulation.
  • voices have independant Coarse and Fine tuning controls for complex sound generation
  • voices parameters are configurable through Midi Control Change
  • Supports Patch Loading/Saving into Arduino EEPROM.


To operate the Synth, are required:

Synth code has been compiled under Arduino 022 IDE version, and requires the following libraries:

  • SID library described on this Wiki
  • Arduino Midi library


Beta 3 Version – Full Midi capability (including Filter but this part has not been tested yet).

Download link : SIDaster Beta 3

Detailed Design Description

Synth is built around the Handler mechanism proposed by the Arduino Midi Library to handle midi messages.


Registers of the MOS are being written using the harware SPI by calling the sid.send() function. A conversion table allows to translate from Midi note input to MOS frequency register value.

MOS6581 internal registers are mirrored inside the software through the variables declared at the beginning of the program. This allows to keep track of the Synth state and to perform the least number of writes to the MOS registers as possible.

Mono Mode

Note Messages

Note on and Note Off messages are handled using the associated handlers. The specific case of Note On with 0 velocity to be treated as note off is considered in the code. The synth keeps memory of the previous note pressed, in order to allow legato playing stylesto be handled properly.

Each voice of the SID is updated with its own frequency value according to the note played, the coarse and the fine value.

  • Coarse is a basic -16 to +15 Midi note translation
  • fine ranges from 0 t 127 and is directly added to the Osc frequency register value to slightly adjust the frequency and create beats.
Control Change

Midi CC messages are handled with a switch case and the corersponding variable of the Synth is updated accordingly. When necessary, the registers inside the SID are updated to the new value.

To Do list

sidaster_synth.txt · Last modified: 2018/08/26 11:36 (external edit)