Z80 Sequencer

A project that followed on from the Z80 Synthesizer and my very first project, the Arduino sequencer.
Following on from tradition, this is only using hardware and software from the 1980s.

Sequencer Features

Programmable up to 4 bars (64 steps), 16 step per bar
5 playable MIDI or Gate parts
2 MIDI ports with 4 possible channels (just easier to program)
Clock output (square wave) 16th/8th and beat pulse

How it works.
I have used an 8254 timer which is set to an interrupt frequencey calculated from the BPM, this interrupts the CPU (every 125ms at 120BPM) which then run the steps.

At each intterupt the CPU reads a bank of 80 bytes which are divided up as follows:
64 bytes – Each step (5 parts uses bits 0 to 5 on the total byte data)
6 bytes – Part info (What to play/do), this is 6 bytes for a max of 6 parts if this is ever upgraded
6 bytes – Note information for MIDI
4 bytes – System info / BPM range etc

The simple procedure is as follows

CPU Interrupt > Read byte for step > Loop through parts > Part on?
Yes – Read part info to play gate or MIDI
No – Skip to next part

If the part info is a MIDI part it reads the note data to determine what note to play.


The sequencer can now run through 16 steps and 4 bars, outputting MIDI notes that can be used to control some drums


Z80 Synthesizer

The aim of this project was to build a fully functional synthesizer based only on electronics and software that was used in the 1980s.
The Z80 CPU was chosen, being popular in may an ’80s classic, having a good following still even today, and actually being a very nice chip to work with.

The oscillators are based on the Juno 106 DCO (Digitally Controlled) with analog voices using 3320 filters.



The Z80 synth is almost complete, a few more software tweaks to do and the analog voice boards to finish, then we can get a sound!

Z80 Synth front panel build