ItsyBitsy M0 Synth | Sigma-6 Voice Module A DIY project by M.J. Bauer |
||||||||||||||||||||
Experimental prototype / minimal development & test platform |
||||||||||||||||||||
Introduction This project should appeal to a diverse range of DIY synth enthusiasts from beginners to experts. Don't be misled by the simplicity of the hardware... the micro-controller firmware implements a complete sound synthesizer comprising 6 oscillators, mixer, 3 envelope shapers, LFO with ramp, variable-gain attenuator, audio limiter/clipper (overdrive) and reverb effect. Audio quality is excellent using a 12-bit SPI DAC and 32-bit (fixed-point) precision DSP computations. A hardware variant may be a simple low-cost MIDI-controlled sound module, with or without control panel. Another variant may be a eurorack module with analog (CV) inputs and a control panel comprising OLED display, 2 push-buttons and 'data entry' pot. Several sigma-6 "voice modules" may be connected to a "master controller" to make a respectable polyphonic synthesizer. (More about that later.) The design is based on the "ItsyBitsy M0 Express" (ATSAMD21) MCU board from Adafruit. For makers on a tight budget, it may be possible to substitute a dirt cheap SAMD21 breakout board (e.g. RoboDyn 'SAMD21 M0-Mini' - available on AliExpress) but it isn't pin compatible. My decision to use a SAMD21 MCU should make the design "future proof" (contrary to my original Sigma-6 synth which used a PIC32MX dev board). Details of the "Sigma 6" synth concept and software design can be found in this PDF document: (Ignore sections on the user interface -- the document was written for another hardware platform.)For anyone curious about the software, the source code is available already on GitHub (link below). Keep in mind, this is a preliminary release with minimal functionality. Support for the control panel (OLED display) and analog control (CV inputs with 12-bit resolution) will be added later. The software is being developed in the Arduino environment to make it easier to program (compared to using a more professional IDE). Sigma-6 Synth software repository ... Hardware Design Below
is a schematic of the minimum practical build. It can
be simplified further by omitting the SPI DAC (MCP4921). The SAMD21
on-chip DAC (10 bits) may be used instead for audio output. The
control panel (OLED display, 2 buttons and 'data entry' pot) is optional, depending on your intended application. There is a choice of MIDI IN circuit configurations. The opto-coupler (6N138) is optional, but recommended for applications where only one Sigma-6 synth module will be connected to a MIDI controller. The MIDI IN circuit was designed with a view to connect multiple synth modules to a common MIDI bus. For these applications, the opto may be omitted and R1 replaced with 2k2. The common bus connection is pin2 of header P5 (and GND of course). The MIDI bus scheme requires a simple "MIDI distribution board" having a standard (opto-isolated) MIDI IN receiver circuit and an open-collector output driver. Hardware variants requiring analog (CV) inputs will need additional circuitry, as shown in part 2 of the schematic below. The PCB will have provision for the extra parts, of course. SAMD21 ADC inputs are 3.3V full-scale. The external CV inputs are scaled to accept a 0 to +5V signal range. The op-amp buffers ensure that the voltage at the ADC inputs cannot exceed +3.5V, or go negative. (The LM2904 and LM358 have a common-mode input range 0 to +3.5V.) The op-amps also allow a high input resistance (50k ohm) at the external CV inputs and a low output resistance to feed into the ADC inputs. The GATE input is fed into a 555 timer IC which is not wired as a timer, but as a Schmitt Trigger to provide noise immunity. The upper input threshold (VH) is about 2V; the lower threshold (VL) about 1.25V, which is more-or-less TTL and CMOS 5V logic compatible. The 555 "discharge" output is open-collector which makes a simple 5V to 3.3V level translator using a pull-up resistor. I'm not sure what happens to the 555 if the input voltage exceeds +5.5V or goes negative. Put it in a socket and regard it as a fuse! (They're dirt cheap.) Project collaborator Jean-Pierre Meyer (in France) has kindly offered to design circuit boards and other hardware to facilitate construction of synth modules, from the "minimal build" (board only, no control panel) up to a complete eurorack module. The picture below shows my impression of what the eurorack module might look like. I'm sure Jean-Pierre's panel artwork will look much more elegant than this... Examples of Sigma-6 Synth variants proposed...
Note 1: Multi-module systems will require a "MIDI Distribution board" to provide a standard opto-isolated MIDI input receiver and bus driver circuit. (Details TBA.) Note 2: Polyphonic systems will require a "Master Controller" to decode MIDI messages from a polyphonic keyboard (or sequencer) and to assign notes to respective Sigma-6 "voice modules". The Master Controller needs only a "low-end" 8-bit MCU, e.g. Arduino Nano, Pro Micro (AT_32U4), etc. (Details TBA.) ... ... to be continued! ... ... Firmware Installation Download and install the latest version of Arduino IDE and follow the instructions here: To build the ItsyBitsy M0 synth firmware, you also need to install a "fast timer" library in the Arduino IDE. Steps to build and "upload" the firmware:
If you have any problems, send me an email inquiry. It
should be possible to
program the firmware into the target board from a prebuilt ".hex"
object file, without needing to use Arduino, but first I need to
get my head around Adafruit's SAMD21 USB bootloader. Then I'll
enlighten you with the procedure. Thanks for taking an interest in this project. Feel free to send comments and queries, either post on the Synth-DIY Facebook group (search for my posts), or email direct to me (address below). Be sure
to inform me of any further developments you make to the
project. MIDI Device Tester MIDI-to-CV Translator Box 'REMI 2' - EWI MIDI Controller 'REMI Synth' - Monophonic digital synth (based on PIC32MX MCU) |
||||||||||||||||||||
Send email enquiries, comments, suggestions, etc, to... Last update: 16-JAN-2025 ___ |