Circuit Bending the Moog WERKSTATT-01

My Werkstatt Workshop projects. Mother of Werkstatt Mods. | Midi Keyboard Interface (7/17) |

Updated: 7/29/17 Keyboard | Key mod points | Arduino | Octave shift and Arpeggiator | Werkstatt Besen Gittare (Broomstick Guitar) | Mutter zweiunddreisig | Midi Keyboard Interface (7/17) |

What is the WERKSTATT?

The Werkstatt was designed by Moog Engineers for Moogfest 2014. The Moogfest Engineer Package included two 3 hour workshops were you built a Werkstatt and then was shown how it works and how it could be modified.

Description of the Werstatt workshops from the official Moog site

Welcome to the Moog Music Synth building workshop at Moogfest 2014. The project for this event is called "Werkstatt" (German for Workshop or Garage). Werkstatt is an analog patchable synth featuring 1 VCO, 1 Moog Ladder VCF, a VCA, an Envelope Generator, a LFO, and a 1-octave keyboard with glide. It is a patchable synth with CV Ins and Outs available on a column of breadboard connections. It is also designed with hackability in mind for the intrepid analog explorer. The workshop is devoted to building and understanding the Werkstatt and hopefully inspiring a desire to explore the world of Moog synths and analog musical electronics.

The Werkstatt keyboard controller is made up of a number of building blocks.

  • KB Oscillator
  • Counter chain
  • Four bit latch
  • Four bit D/A convertor
  • Two analog multiplexors
  • Switch matrix
  • Key press logic

A simple free running oscillator using one of the schmitt triggers in U14 drives a couple of dividers to make a 4 bit counter. Two bits are decoded using a 4051 8 to 1 analog switch for the columns and another decodes the other two bits to select the row.

Note that only 13 of the 16 possible switches are used. When a switch is pressed, it connects a row and a column. Diodes are used for isolation so that pressing two switches does not short out two of the columns. The row multiplexor output is fed to the key press trigger logic. The trigger logic clocks 4 data latches that save the value of the counter. The output from the latches is converted to an analog value using an R-2R ladder. The analog value is scaled and buffered.

The key press logic also generates a number of signals.

  • Data latch pulse
  • Gate output
  • Trig output
  • Counter reset

The counter reset is used to handle the situations where more than one key is pressed. If you hold down two keys on the Werkstatt, you will notice that only the lower one sounds. This is because the counter is reset back to 0 when a key press is detected.

Although there are no test points in the keyboard controller area of the circuit board, you can attach wires to circuit traces that allow you to make a number of mods. Where possible the wires are attached by using a via (hole) where a trace goes from one side of the board to another.

This is a list of the keyboard controller wires I have added so far.

KB Osc input
This is the input to the keyboard oscillator. The oscillator is a simple schmitt trigger CR one and the wire goes to the input pin of the schmitt trigger. I could not find a via for this connection but since it is to pin 1 of the chip it was not hard to make.
Counter outputs
The four counter outputs that are used by the multiplexor and latch are accessible by connecting to vias on the board.
Row mux output
When a switch is pressed and is selected, this goes to +5 volts via a 1k ohm resistor. The signal is used to generate the data latch signal, the Gate and Trig outputs and the counter reset.
Counter reset
The row mux output also generates a counter reset pulse that sets the counters back to 0. Without this pulse the key scanning would continue and the next pressed key would also be latched. The D/A output would quickly cycle throught the values. Because of this pulse only the lowest value is latched.

Keyboard Connections

To drive the keyboard logic from an Arduino, I added wires from the output of the row multiplexor (input to thr keyboard trigger logic). One to each of the counter outputs so the Arduino can read the counter value. Later I added a wire to the kb clock so that the Arduino generates the clock. Originally the clock was free running.

The pin numbers on the Arduino can be changed if the software is changed to match. I have a lookup table to remap the counter signal values.

Midi In and Out

The Midi input and output circuits are straight forward. The Midi output just needs some current limiting resistors. The Midi input uses an optical isolator. I have used the 6N138 photo darlington device.

These are the initial sources. Create a werkstatt folder and copy these files into it. The in the Arduino program open werkstatt.ino