SpethWARE Sequencer

By John J Speth - 3/30/2005

Introduction

Design Discussion

Construction

Calibration

Software

Future Work

Pictures

Contact

Introduction:

This article is a rough description of my contribution to the world's body of sequencer designs. It's the familiar 2x8/1x16 design that has been optimized for use with a keyboard or other gate signal.

The sequencer engine has lots of selectable features: manual step, run/stop mode, up-down/up mode, one-shot mode, return-to-zero mode, and random mode. Each stage can be configured as play, skip, or pause. LEDs light brightly for the playing stage and dimly for the pausing stage. Both rows have a step-out signal.

A unique part of the circuit (at least I've never heard of it) is the clock divider. I originally wanted an analog controlled step clock in my circuit. One day I realized that I could avoid integrating a VCO in the sequencer and instead make a smart clock divider that can be driven by an audio range VCO to step a clock at sequencer rates. The clock driver is syncable to a gate signal so that a step pulse is generated as soon as possible after the gate asserts. The divide rate is controllable using a 10-turn pot. The software spreads the 1-24 divider values over a large turning range of the pot to make selecting those values easier. A non-related MIDI In and Out is featured implementing the MIDI clock, start, stop, and continue commands. There is a switch that selects 24 or 1 clock per MIDI clock output.

The logic section is implemented entirely from MicroChip PICs. The analog section is the simplest design of an array of potentiometers feeding voltages to an addressable analog multiplexer consisting of CD405X analog switches.

Design Discussion:

The design is broken down into several logical sections: the engine, LED controllers, switch scanner, clock divider/MIDI, and the analog output. See the block diagram.

The engine provides the logical smarts that provide the sequencing functions. The scanner actively scans the switches which consist of the row play/skip/pause switches and the various option switches. The engine periodically queries the scanner for switch states. The LED controller drives the appropriate LEDs according to commands from the engine. The analog output circuit selects and scales the engine selected output stages. The clock divider divides the VCO clock ranging from /1 to /1023. It also provides MIDI clock and sync input and output functionality.

The engine circuit presented here includes an LCD display. I originally thought a display might be a good idea but later discovered I couldn't find any useful purpose for it. The software I wrote paints a "SpethWARE Sequencer" banner and nothing more. The full LCD API is in the source code and preserved for posterity.

Construction:

The schematics are not complete production ready design documents. They serve to show the major connections and parts using the prototyping system I used to develop the circuit (wire-wrapping and ribbon cables mostly). The power supply bypass caps are not shown. I followed basic tried-and-true building techniques with no special care taken in laying out and building the circuit (not consciously anyway). I suggest all PICs be socketed to accommodate reprogramming if necessary.

Calibration:

No calibration is required. It is a good idea to use a dual quantizer on the output voltages if the sequencer is to be used to drive audio range VCOs.

Software:

The source code is written in C, which really sped up code development. Programming code (hex code) is generated using the CC5X C Compiler from B Knudsen Data.

The PICs must be programmed before use. The hex code may be programmed into the PICs using any appropriate PIC programmer. I used the excellent and affordable Warp13 programmer. The engine circuit features in-circuit programming accommodations but that's not required if the engine PIC is to be programmed once.

Source code can be found at:

Engine: Engine.zip

Scanner: Scanner.zip

LED controller: LEDController.zip

Clock divider: GateDiv.zip

Future Work:

A major consideration of the design was addressing the massive wiring problem of the row pots, LEDs, and switches. If the sequencer were to be built using a single main board, the wiring problem would exist. However, using intelligent logic (that is, PICs), it is possible to distribute the LED and switch scanning functions away from a single main board. It is possible to reallocate the LED controller and switch scanner functions into a single PIC for each row.

Pictures:

Here is a lo-res picture or a hi-res picture (1 Meg) of my breadboard unit. It's not pretty but works very well. As we all learn in building such a project, it's the panel that will be the big cost item if I ever make a nice panel for it. I would estimate that the whole breadboard cost me less than $50 not counting the jacks, pots, and switches.