WERKSTATT-01 Trio

This project uses one ATMEGA328P controller to control the keyboard interfaces of the three Werkstatt. The block diagram shows how the keyboard is scanned. The keyboard clock feeds a counter. Two of the counter outputs are used by one of the analog switches to select a row of the switch matrix and two more are used to select a column of the matrix. When a key is pressed, the row analog switch outputs a pulse that latches the four counter outputs and uses a digital to analog convertor to generate a voltage. The pulse is also used to trigger the envelope generator and reset the counter. Because the counter is reset, if two or more keys are pressed at the same time the lowest one "wins".

This version takes over the keyboard clock which is commoned across the three and also commons the counter reset. So by pulsing the reset and then toggling the clock, the CPU knows what the counter value is. The multiplexor output is unique for each Werkstatt. Each Werkstatt also has two voltage shifters. The keyboad D/A is 4 bits and the two shifters provide two more bits for a total of 6 bits or 64 vales. This allows five octaves of range.


A 20 way pin header is soldered into the prototyping area. The wires are on the underside of the board. Each of the Werkstatt is wired the same.

There are four control wires. The one that has a resistor with some heat shrink is pin 1. The end of the resistor is connected to TP14 on the Werkstatt. Wires 2 and 3 are connected to feed thrus on the board as marked. To make a soldered joint with the feed thru, place the soldering iron on the feed thru to heat it up and apply a little bit of solder. Find a spare resistor and tin the lead (heat it up and applu solder to it so it has a fresh coat). Now heat the feed thru and poke the tinned resistor lead thru the hole. Clip off the lead to about a tenth of an inch. This gives something to easily connect the wire too. The hardest one to connect is wire 4. This has to be soldered to pin 1. What I do is place solder against pin 1 and quickly heat till it melts and remove heat. this 'tins' the lead. Make sure the end if the wire is neat, short and tinned. You only need about a 20th of an inch. Place the wire against pin1 and apply the soldering iron. One the solder on the wire melts, you should be able to remove the iron and the joint should be ok. You are trying to minimize the amount of heat to pin 1.


This schematic shows how the wiring works. Many of the connections could go to other pins and the software adjusted to match. The TP 14 on the Werkstatt is a virtual earth summing input. Two multi turn (22 turn) presets are used to provide a -ve value shift, a +ve shift. This gives the Midi interface 6 bits of resolution and thus 5 octaves. The six port C ( usually analog inputs) as digital output pins are used to activate the presets. One is summed with the inverted value and the combined value is sent to the VCO input. Kicad file

Wmiditrio2.ino
The main source.
Play.ino
Simple tune player. Parts used by Arppegiator.
Softbits.ino
A simple software virtual machine.
Midibits.ino
Midi softbits
play.h
Header for play.ino
softbits.h
Header for softbits.ino
midibits.h
Header for midibits.ino
soundbits.h
Header with sound sound stuff.
tune.ino
Some tune data.
All as zip archive
All of the above as a single zip archive.

The Midi interface is listening on Midi channel 1. The note range is C1 - D#7.

With the boards connected, the first thing to do is to tune the shifters. The -ve shifter is tuned first. Play a C3 which should have both shifters off. Play B3 and adjust the -ve shifter so that it is playing the correct frequency. Play C2 up to C4 and adjust the -ve shifter so that the two octaves are in tune. Next play C4 up to C5 and you can hear when the +ve shifter is turned on. Adjust the +ve shifter so that C4 to C5 is in tune. C4 to C5 also turns on the -ve shifter. C5 to C6 just uses the +ve shifter. Do this for each of the Werkstatt.

The switch and indicator panel allows a number of modes. One switch is used to select Unison mode. Three of the LEDs are used to show which Werkstatt is playing a sound.

ModeDescription
UnisonEach midi note is sent to each of the Werkstatt. Midi channel 1 only.
CycleEach Midi note is sent to the next Werkstatt in a round-robin mode. Midi channel 1 only.
IndividualThe note is sent to a Werkstatt based on the Midi channel. Midi channel 2 to first Werkstatt. Midi channel 3 to second Werkstatt and Midi channel 4 to the third Werkstatt.
 
Home