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


Posted in Uncategorised.

Leave a Reply