___ Sigma-6 Polyphonic Synthesizer - Design Notes ___ by M. J. Bauer ___ |
Following the success of the monophonic 'ItsyBitsy M0 Sigma-6' synth, it seemed inevitable that a polyphonic version would be developed. You could house the parts in a small enclosure for connection to an external MIDI keyboard, or you could build the synth into the same enclosure as a keyboard. There is a multitude of old keyboard instruments which could be given a new life paired with a Sigma-6 Poly-synth. And the keyboard doesn't need MIDI connectivity... The plan is to develop a companion keyboard interface which will turn any old keyboard (with SPST contacts) into a MIDI controller. A unique feature of the Sigma-6 tone-generation scheme is its ability to modulate the signal amplitudes of six oscillators independently in real time, using an additive synthesis technique. Click here for details... View/Download doc explaining the Sigma-6 synthesis method The "Sigma-6 Poly" synth comprises several Sigma-6 "voice modules" connected via a MIDI bus to a "Master Controller" board, the function of which is to interpret MIDI messages from a polyphonic controller (keyboard or sequencer) and allocate keyed notes to the voice modules. The Master Controller will support a front-panel user interface, so the individual voice modules will not need a control panel. The voice module circuit can be reduced to a "bare bones" design comprising just the SAMD21 micro-controller and an audio DAC. The MIDI IN receiver doesn't need to be opto-isolated, because it is driven from the Master Controller, not from the outside world. Here is the schematic of the "Sigma-6 Poly Voice". Several of these will be combined onto a single PCB. The Robotdyn 'SAMD21 M0-Mini' MCU board costs about $5 (USD) on AliExpress. The SPI DAC (MCP4921) costs under $2 (SOIC-8 pkg), so the parts cost for the voice modules is minimal. A complete Sigma-6 Poly-synth will be very inexpensive to build. You may be wondering... why not use a single high-powered micro-processor, e.g. a Raspberry Pi, to implement all voices and the master controller functions? Well, there are benefits, both technical and musical, to dedicate an independent MCU for each voice, as opposed to implementing all voices in a single high-end micro-processor. Also, I am averse to high-end 3rd-party operating systems... They always seem to have problems with audio latency, inter-task blocking, etc.) Here's an outline diagram showing a poly-synth system with 6 voices: Sample Sound Clips 'Walkyrie' - Clip made using a Jazz Organ preset (Courtesy of Jean-Pierre Meyer) 'Pink Panther Theme' - Clip made using two different organ presets (Courtesy of JPM) 'Mussorgsky Sonata' - Piece in 4 parts using 'Trashy Toy Piano' preset (JPM) 'Rhapsody in Blue Toy Piano' - with apologies to George Gershwin (Clip by JPM) 'Danse Slave' - Extract from a piece composed by Dvorak - (Clip by JPM) ... more coming soon ... ___ User Interface - Control Panel The control panel of the polyphonic synth can have (optionally) a bank of 6 slider pots (or rotary pots) allowing the user to set the output levels of the six oscillators, i.e. to change the mixer input levels defined in the selected preset. When a slider is moved, the respective oscillator mixer input level will be set according to the slider position, over-riding the level defined in the preset last selected. The sliders provide similar functionality to the "draw-bar" controls in Hammond organs. To facilitate fast change of preset during a live performance, a row of 8 push-button switches will allow selection of a "Favorite Preset". The 8 "favorites" are user-configurable from a greater number of instrument presets stored in flash memory. The switches have an LED to indicate the selected preset. A graphic OLED display, with 3 buttons and a 'Data Entry' pot, provide various other user-interface functions, e.g. to set up configuration parameters, to select a preset (other than favorite) and to adjust active patch parameters. The firmware also provides 8 'User Presets', i.e. the ability to save and load the active patch as a user-defined preset (aka "Favorite") stored in EEPROM.
Various icons will appear on the "Home" screen (pictured) to indicate instrument status, e.g. MIDI input activity, patch modified, etc. The little robot icon is a legacy from the monophonic "ItsyBitsy M0" synth, indicating the type of MCU fitted. (Although now redundant, it seemed a pity to delete it.) User Guide When firmware is installed for the first time, the 8 User Presets will be defaulted (initialized) to "factory" (voice) presets 1 ~ 8 (copied from a table in flash memory), all named 'Unnamed_Fav_Preset' pending new names to be assigned. All configuration parameters are defaulted to predefined values. The
default names assigned to User Presets are not the same as the
derivative "factory" defaults because it is assumed the User Presets
will be modified at some time or other. New names can be assigned via the command-line user interface. When you enter the 'PRESET' screen, it will display the last factory preset selected, regardless of the preset displayed in the Home screen (which may be either a user preset or a factory preset). A User Preset is recalled by pressing one of the 8 Favorite preset buttons. The recalled preset then becomes the 'active patch'. To copy a "factory" preset into a User Preset (Favorite) and keep the original instrument name:
The User Preset will be an exact copy of the Factory Preset, including the name. Parameter setting modes Reverb Level:
Moving the Data Entry pot (in the Reverb screen) will adjust the
setting. The change takes effect immediately; i.e. the new setting
is sent to the voice modules. The Reverb setting is saved in EEPROM
only if the [Affirm] button is pressed; otherwise the setting is
temporary. Oscillator Mix Levels: Moving a Slider pot (1 ~ 6) will adjust the respective setting and the change will take effect immediately; i.e. the new setting will be sent to the voice modules and the new setting will be written to the "active patch" parameter. All other patch parameters: Moving the Data Entry pot will adjust the setting displayed, but the new setting will not take effect until the [Affirm] button is pressed. When Affirmed, the setting will be transmitted to the voice modules and it will be written to the respective "active patch" parameter. Note: Some parameter changes may not take effect while a note is playing. These changes will take effect when a new note is initiated. ... Command-Line User Interface (CLI) The
firmware also implements a simple CLI, accessed via the USB port using
the Arduino 'Serial Monitor' tool, or a PC 'Terminal' program (e.g.
"PuTTY"). The Terminal app Baud-rate should be set to 57600, but
it may not matter for USB-serial. > save fav# [name_string] <Enter> ...
where 'fav#' is the number of the Favorite to be saved (1 ~ 8) and
'name_string' is a name to be assigned to the Favorite/Preset.
[Don't type the square brackets -
they indicate optional param.] ___ Electronics Design Below is a schematic of the Master Controller board. This doesn't show connections to the front-panel controls and indicators, OLED display, etc. These connections are shown on the sketch following. ![]() Schematics representing actual circuit board designs will be posted here shortly. ___ Construction The Sigma-6 Poly-synth comprises two or three main circuit boards, i.e. a 'Master Controller' and 1 or 2 'Poly-6 Voice' boards (pictured below) plus control panel parts (OLED display, pots and push-buttons) which may be mounted on prototyping matrix board (aka "perf-board") or custom PCBs. Rotary pots may be mounted directly on the front panel if preferred.
The charts below give the pinouts of connectors on the Master board for wiring to the front panel boards and other panel-mounted parts. (NB: Pin allocations may be revised since these were posted.)
Assembly Notes Do not fit the 6 resistors marked R32 (47k) on the Poly-6 Voice board. On the Master board, PCB-mount connectors for DC power and MIDI IN are optional. Connectors are provided for alternative off-board panel-mount parts if preferred. There is also a connector for an optional DC power switch (panel mount). If a switch is not fitted, place a link on the header. A suitable heat-sink should be fitted on the 5V regulator IC (LM7805). Total load current is not expected to exceed 400mA with 12 voices powered. (Maximum power dissipation: 1.6W with 9V DC input.) If you are making your own custom board for the Favorite Preset switches and associated circuitry (LED register), I recommend to provide a DIL20 pin header to connect to the Master board via a 20-way IDC ribbon cable. The custom board should provide pin headers for wiring to panel-mounted pots (Data Entry, LFO Freq, LFO Depth). The Volume Pot, if panel-mounted, should be connected directly to the Master board via the SIL3 header. It is not necessary to fit socket strips on the Poly-6 Voice board for the SAMD21 MCU module. The required MCU pads may be soldered directly to the voice PCB using bare tinned copper wire (24~28 AWG). You only need to solder I/O pads which are essential in the circuit, of course. The MCU module can be held in place with double-sided adhesive foam tape (1.5 ~ 3mm thickness) of the sort used to mount a painting or mirror on a wall. The foam tape also serves to insulate the MCU from the mother board. The SPI DAC chips (MCP4921) are cheaper to buy in the SOIC package style than the DIP-8 style. You can buy little break-out/adapter boards to allow SMD's to be fitted to a DIP PCB footprint. The Poly-6 Voice PCB assembly pictured above uses MSOP devices which are even smaller than SOIC. I advise not to use MSOP devices unless you have good SMD soldering skill. Be sure to set the MIDI channels of the voice modules in sequence, beginning with channel 1. There must not be any gaps in the sequence. If one or more of your voice modules is not functioning properly and you want to exclude them from operation, set their MIDI channels higher than the number of voices specified in the firmware code. The channel numbers do not need to follow the physical order of voices on the board. ___ ... ... to be continued ... The next instalment will describe the construction method of a suitable enclosure and the interconnection of circuit boards and other parts. A future instalment will give details of a Keyboard Interface circuit which will allow a "passive" keyboard (with no electronics - just SPST key contacts) to function as a MIDI controller. Printed Circuit Boards Project collaborator and DIY synth enthusiast Jean-Pierre (in France) has already designed the PCBs. Using 2 of these boards, you can build a poly-synth with 8, 9, 10 or 12 voices. And here's a pic of the "Master Controller" board... (NB: May not be the latest revision.) Jean-Pierre has also designed boards for the control panel. Latest revisions of Gerber files to fabricate the PCB's are available on request. Surplus boards (bare PCB - not assembled) may be available for purchase from the author... Send email inquiry for details of PCB availability, prices, postage, etc. Firmware Follow installation notes in the 'READ-ME' file on GitHub. View/download source code here: Sigma-6 Poly-synth software repository ___ Thanks for taking an interest in this project. Feel
free to send comments and queries. See MJB's Index Page Send email inquiries, comments, suggestions, etc, to... Last update: 19 October 2025 |