s6 front panel jpm
___
___
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.

poly voice schem

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:

system block diagram



Sample Sound Clips

Play Sound Clip

'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.

Home screen
Front-panel User Interface - 'Home' Screen

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.

To save the active (current) patch as a User Preset (Favorite), enter the SETUP screen and select 'User Preset' and hit [Enter].  The centre button [B] selects the Favorite number to be saved. The right button [C] if pressed will cause the active patch to be saved in EEPROM as a User Preset (Favorite).

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:

  1. From the Home screen, hit PRESET, then choose the voice preset you want;

  2. From the Home screen, hit SETUP, then 'User Preset' [Enter];

  3. In the 'User Preset' screen, tap button [B] to select a Favorite (1 ~ 8) then hit [Affirm].

The User Preset will be an exact copy of the Factory Preset, including the name.

If you modify any patch parameter in a User Preset to be saved, it is probably a good idea to change the name as well, so you don't get the Favorite confused with the factory preset
(derivative name).

A patch icon/symbol will appear in the Home screen to remind you that the active patch is now different from the Preset (factory or favorite) last selected.  When you select/recall a preset (factory or favorite), the patch icon disappears, because no patch parameter is modified yet. The patch in the master MCU is then identical with the patch in the voice MCUs.

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.

Note: Reverb Level is not a patch parameter... it's a configuration parameter (independent of preset/patch). The Reverb setting does not change with preset selection.

LFO Freq, LFO Depth:  Moving a control pot (Data Entry, LFO Freq, LFO Depth) will adjust the setting and the change will take effect immediately; i.e. the new setting is sent to the voice modules and the setting is written to the respective "active patch" parameter.

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.

Commands implemented in the current firmware version:

help  - prints a command usage summary

patch  - prints the active patch parameter values in C source code format (for developers)

save  - saves the active patch as a 'User Preset' (Favorite 1 ~ 8) and (optionally) assigns a
           name to the saved Preset


The format of the 'save' command is:  

> 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.]

Examplesave  3  Organ_Voix_Celeste

The name is optional (may be omitted), but if supplied it may be up to 20 characters long. The string cannot contain spaces or any of these symbols: { " / \ @ ? }  Use _underscore_ in lieu of space.

___


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.

master schem

panel schem

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.

Master PCB assembly
Master Controller PCB Assembly v1.0  (100 x 90 mm)

Poly-6 Voice PCB assembled
Poly-6 Voice PCB Assembly  (245 x 75 mm)

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.)

display conn pinout

slider conn pinout

DIL16 temp

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.
Here's a picture of his "Poly-6 Voice" board...

poly-6 VM

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.)

master PCB top

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
for other DIY projects that might be of interest to you!
___

Send email inquiries, comments, suggestions, etc, to...

link to email address

Last update: 19 October 2025
__