SDS 7 Main Controller

Full MIDI control of sound design and program change

New modern SoC to replace CPU and Memory boards

Preface

This wonderful vintage analog drum sound source have gotten a bad reputation over the years due to some stability issues. One of them being loss of memory where all presets are lost with unknown cause. There has been speculation if contact problems on edge connectors for the CPU and / or Memory boards can be one source for this problem. It could also be timing issues in firmware handling memory refreshes and updates poorly or even layout of PCB tracks or cable to the RAM cartridge on the back picking up interference and noise.

Klavis NoDrain

When the idea to try and have MIDI sneak inside the SDS 7 it quickly become clear there is no point trying to intermediate a control and memory management system already having stability problems. A completely new controller and memory board had to take control of the SDS 7 guts.

When first flying ideas for this project it where tempting to replace the control panel with an OLED display and 16 rotary controls for quick access to all sound parameters and drum kits. Then realizing a vintage instrument probably should be treated with more respect. Already experimented with wireless control and web-socket on other synth controllers and found it has limited usefulness decision where made to do SDS 7 modification in a more traditional fashion. Any fancy direct control will be done remotely over MIDI. This project attempt to be non destructive, it will preserve the vintage look and made to easily let the SDS 7 be reversed to original condition.

SDS 7 block diagram

A lot of time where spent investigating if one of the latest 3.3V developer boards could be used. Very eager to have support for USB Class Compliant MIDI the Teensy 3.6 where scrutinized. Although possible it turns out that necessary level shifting to drive 5V circuit reliable, and with the large numbers of LED current drivers needed complicated the project with high parts count.

Decision to go with ATmel2560 are due to it's high pin count with 5V, capable to sink or source a LED directly. Project can be realized in a way that allows for a more powerful SoC be implemented later on where the ATmel2560 then only function as I2C slave (with the wire library) — or pass though device simply driving user-panel and do level shifting of address lines.

LED Current

220R current resistors used for the SDS7 programmer panel suggest current draw for the LED used in SDS7 are around 14mA, if we estimate 2V forward bias voltage.

Overview Hardware

User / Programmer panel:

4x4 switch matrix
1x encoder
30x pins for LED control including all 7 segment display, 11 sourcing and 19 sinking. Actually plan are only to have two LED's permanently connected to current source, all other are planned to be multiplexed.

Internal:

4x address lines for voice card selection
4x address lines for parameter selection on voice card. Must be capable to drive up to 12 pcs of HEF4067B in parallel.
4x4 switch matrix for selector pad
1x analog control voltage (CV) from PWM or external DAC
1x MIDI In

System on a Chip (SoC)

Any ATmel2560 developer board can be used


Schematics are done with KiCad, a cross platform and open source electronics design automation suite.

Custom SDS7 Library and Footprints sds7lib_r1.02.zip

Overview Software

Display driver
Switch matrix
Increment knob
Refresh control voltages to 12 voice card slots with 15 (16) parameters each
Memory management
Selector Pad
MIDI Program Change
MIDI CC
MIDI trigger if enough free pins on the ATmel2560, else parallel MIDI device sharing opto coupler are possible with ATmel328 or similar


Software development are done with the Arduino IDE environment and libraries.
Another heavily used tool are Notepad++, a free source code editor.

Adapter for the edge connectors

This edge connector can be useful for troubleshooting and prototyping new controller and voice card for SDS7.

Edge connector

Ready for order at OSH Park

Please note the slot cutout for the key are made a little to narrow and need to be opened up using sandpaper or thin nail file. Or edit the KiCad file to create a wither slot before ordering.

Buying ATmega2560 developer board

When buying ATmega2560 board make sure you get one with ATmega16U2 USB interface if USB is planned as part of functionality. Chinese clones often come with CH340 which usually work fine to download software to the ATmega2560 itself given it is the CH340G version. But CH340 need special driver and do not support USB HID.
For physical inspection ATmega16U2 is a quadratic chip with eight pins on all four sides, while the CH340 are elongated with eight pins on only two sides.

No Longer Supportet

Legacy memory cartridge planned to be replaced with SD Card memory.
Not owning a cartridge I'm lacking incentive for spending more time creating code for it than it takes for anyone to manually transfer settings to a spreadsheet. That sayed, it should be a straightforward project to create an adapter connecting to a computer for backup and converting to SD.

Original implementation of the first introduced Optical Increment Wheel make use of an additional comparator circuit on the CPU board. Although a faster µC will have better luck controlling the original optocoupler wheel it is not within the scope of this project to support it.
It should be easy to create a separate branch on GitHub for anyone wanting to code for an optical version. In current hardware there are four pins dedicated for the rotary encoder including 5V and ground. Two transistor might be enough to create needed hysteresis.

SDS 7 backplane

CV Speed

SDS7 update each voice card every 7.3ms (7.3kHz). There are two reasons for us to try increase this speed.
— First is to move the 'computer' noise from the backplane bus up in frequency to where it can be filtered.
— The other reason is to have the VC (voice card) updated so fast that a single VC can be played with new sounds loaded with different MIDI notes.

Probably the parts that will give first when speed is increased are the analog sample & hold circuits on the Hybrid modules for each VC. While it is expected to give functionality as today with some higher speed some cap values on the Hybrid might need 'tuning' for correct S&H time.
Part used here are HEF4067B, LM324 Quadruple op-amp and OTA's used are probably LM13700 (or LM13600).

Datasheet for DM74LS154 used to enable VC suggest worst case propagation delay around 35ns, 1000/35 = 28.5MHz. Luckily we are not able to, nor need we make speed in this region as the backplane probably will give us problems.

HEF4067B typical 60ns and have 385ns as worst case, 1000/385 = 2.6MHz

It seems all are good to go with regards to logical circuits involved.

SDS7 Manual mrk-II

Parts used in prototype

Arduino MEGA2560 R3 compatible µC board

MCP4725 DAC DAC with I2C interface


ORDER INFORMATION:

MEGA2560 r3
eBay item 162593120234

DAC
eBay item 322333207469

Dupont wires
eBay item 201540635728

SDS 7 LED overview

SIMMONS SDS7 LED truth table with Mega2560ProMini

Plan is to use 2560 to both sink and source LED. To ensure 2560 aren't overloaded with misguided programming initial test on the port behavior show something interesting.

Pins sinking current is planned to be set to high impedance inputs to turn them off. As it turns out — if a pin has been used as output and set high the internal pull-up resistor are activated and will stay connected even when port data direction is altered to input. Code

        DDRA      PORTA     PINA
Input:  11111111  00000000  00000000
Output: 00000000  00111010  00111010
Input:  11111111  00111010  00111010
Input:  11111111  00000000  00000000

1th Port A is set to high-impedance inputs
2th Port direction is set to outputs and some pins altered
3th Port is back to inputs, but as seen no longer in
high-impedance. It seams port sets pullups and leave 
them even when DDR (data direction register) change
4th same as 3th but PORTA=0 turns off all pullups

Trying to answer the question of how much current the new main controller need I found the datasheet for Mega2560 rather mutter. There are so many variables I ended up adding them all with this diagram and landed on approx 25mA for the m2560 + 50mA for the DAC. Total current the m2560 package can sink are 200mA. Current diagram

Probably the most current hungry load for the m2560 will be the 12psc HEF4067B. Total current for these are unknown as the backplane capacitor effect aren't know to us. But drive capacity for the m2560 pins are equal to the driver chip originally used in SDS7.
DAC input 2mA
Programmer LED on VC will not be multiplexed to minimize noise on the backplane, 14mA when in edit mode.
Controller panel will only have a single 14mA LED on at any time.

SDS 7 programmer pin placement

SDS 7 dented knob

MIDI connection

SDS7 backplane is really crowded. Finding a location to drill holes for MIDI connectors can be a challenge — at least if aesthetic is of importance.

SDS 7 mem slot

As memory cartridge will be replaced with SD card this slot might offer an option to solve our dilemma.

SDS7 cartridge slot seams to fit a DIN41612-B032F connector with 2,54mm (.100") pitch where only every second pin is mounted — meaning a more traditional 64 position female connector should fit.

Mouser offer two alternatives, Molex strait No: 538-85040-0127 and an angled version from Harting No: 617-09722646804.

Mega2560PM layout error A slight deviation discovered for the Mega2560PM footprint. Stacking female headers close together might need this adjustment.

micro SD card adapter This SD card adapter has on-board 3.3V regulator and active 5/3.3V level shifting using LVC125A.

Fun µ fact

To write the character µ (micro) on a Windows computer hold down the 'Alt' key and type '230' or 'Alt+0181'.

SDS 7 custom library for KiCad


sds7mc/proto4.jpg
To view high resolution images, right click on image and select View image or Save image

Select file from list below

DM74LS154.pdf
56.9K Compressed file
DM74LS154national.pdf
90.8K Compressed file
HEF4067BP.pdf
117.3K Compressed file
arduino-mega2560_R3-schematic.pdf
46.4K Compressed file
mcp4725.pdf
1.5M Compressed file
sds7LEDtruth_table.pdf
331.0K Compressed file
sds7mrkII_mega2560PM_mc.pdf
1.4M Compressed file
mega2560pmlib.zip
2.4K Compressed file
sds7mrkII_mega2560PM_mc_r0.10b.zip
3.5M Compressed file
test_port.ino.txt
3.1K Compressed file
2560_sds7_bus_connection.png
915.4K
Mega2560ProMiniComponentFootprint.png
87.9K
currentdiagram.png
33.4K
kicad_compfoot.png
24.7K
m2560_voltage_input_selctor.png
111.0K
mcdreader.png
1.1M
mega2560PM_layout_error.png
118.0K
sds7LEDtruth_table_wMega2560ProMini.png
25.9K
sds7_leds-wNotes.png
199.3K
sds7_leds.png
164.7K
sds7edgeadapter.png
522.3K
sds7interface_latest.png
117.9K
sds7mc_block.png
53.4K
sds7mem-socket_DIN41612_B032F.png
454.8K
Mega2560ProMiniComponentFootprint.jpg
91.8K
backplane.jpg
1.0M
backplane_small.jpg
101.8K
dupoint1.jpg
68.3K
dupoint2.jpg
89.0K
dupoint3.jpg
74.9K
incrementdented.jpg
201.5K
memslot.jpg
13.4K
pin1_programmer_board.jpg
142.9K
programmer_pin_location.jpg
139.4K
proto1.jpg
163.1K
proto2.jpg
123.9K
proto3.jpg
2.4M
proto4.jpg
2.5M
sds7voltagestairs.jpg
384.0K
sds7voltagestairs_small.jpg
55.3K

Comments

Your comment are welcome

Name:


Email: optional, will be hidden


Comment:    



Please do not make support question private as it brake with what this site is trying to do which is to share information to many with multiple contributors
All spam is reported adding to your international IP blocking quota.