ZEIT 02-00 Development Diary

December 17th 2021 : Update

At first sight, the sequencer does not appear to have changed much in the last couple of weeks. However, there have been some major changes under the hood.

Click the image on the left to load a quick demo video.

ZEIT is no longer running off the crude demo software but is, instead, running off major re-writes of the Output Driver, the hardware interface and the Menu Manager. The timing is now pin sharp. The encoders work properly. The pots work very well with no visible jitter in weeks - that's a major win. Most of the lower half of the machine, the Sequence Select, Sequence Enable and Transport boards, all work.

I plan on rebuilding the machine over the Christmas break. Two of the pot boards have the wrong colour LEDs - they were from another project - and the several of the pots themselves feel like crap. I'll swap those out. I also discovered that a couple of boards have dead LEDs. They need sorting too. I'll also fit the missing VFD / Encoder support board which went missing during the stocktake.

Happy Yuletide bunny.


Basic Note Editor with text conversion to human-readable values added. Display current sequence number (top right) and current step number (bottom right). Improved Menu Manager installed. Improved Data Dictionary access installed.

Happy bunny.


ZEIT's VFD driver installed. It worked first time. No messing about.

This is an important milestone. In the original system, the display was on the same bus and used the same family of control lines as the i/o boards and the external memory. This design feature meant that if you wanted to paint a message on the display then you had to wait until the CPU had finished dealing with those subsystems, resulting in a bottleneck of nightmarish proportions.

The new design puts the display on its own bus and uses a different set of control lines. You can be writing a message to the display, writing to the LEDs and loading in a new sequence at the same time.


Back on ZEIT after the joys of Storm Arwen and the workshop rebuild.

Workshop : I've had to move all of the workshop kit out of my nice, cosy little workroom and into the freezing cold garage because "that reflow oven is too dangerous, the CNC makes too much dust and the hot air gun just stinks... "

So, that's me told. Aside from the bone-numbing cold, the workstop is quite comfortable, so long as you don't mind sharing the space with various bicycles, a telescope, the lawn mower and a 1920 Estie pedal organ. Oh, and the spiders. Yeah, lots of spiders.

ZEIT : The Data Dictionary, ZEIT's database for the front panel controls, data fields, presentation parameters etc is working. I've changed the format so that it's more efficient but, sadly, no longer compatible with the Haydn and Zyra Step Sequencers. I'll recompile their sources over the next couple of days to make sure they still work.

Next step, the Presentation Manager, which ties in directly to the Data Dictionary.

Probably going to take a day or so out to swap the current low quality potentiometers for something better. The old pots feel like crap.


Reformatted the development diary to make it more readable. Added video detailing latest software build. Added a couple of images.

Uploaded latest Gantt chart to show progress. Red shows modules already finished, tested and in place. Orange shows modules/milestones in progess. Blue is not yet started.

Working on sequencer menus...


Latest software build, showing front panel control of note pitch and velocity, root note and sequence length. Sequencer is driving a Roland Boutique JU-06.


Added the play facility so I can start and stop the sequencer, set pitches and velocities, change root notes, make rests and change the sequence length. Should aid in testing and demonstrating the instrument ahead of the major build which starts as soon as the workshop conversion has passed the first hurdle.

Major work on instrument database begins.


Added timing debugs to main loop to determine system loading. Seems stable and consistent. Average 1330 uS, Low 500 uS, High 1750 uS.


Left system on soak overnight. Not a single ghost reading from the potentiometers. Job done.

Added the switch handler. Limited to just 4 switches. Any more and they are ignored. This is temporary whilst I debug the system.

Tweak the timeout factor to improve the auto-repeat response.

Added beginnings of the Output Driver, basically to catch Switch Events whilst building the Data Dictionary. Working.


Fixed the solder bridge on the development CPU, got the system working as it should and then moved everything over to the main Rack Chassis. Checked build logs and this CPU was bought sourced from who are provided with a bare board and add the edge connectors according to customer order. Contacted their QA department. The guilty party has since left the company. (Yes, heard that one before...)

Excessive encoder events followed - hadn't plugged in the encoder board. Sorted.

Increased the number of boards from three to twenty - skipping board three which doesn't exist - and added the filtering to the last six (which are potentiometer boards). Got that working.

Added the switch event handler. Works but needs hysteresis to stop multiple events.

Reduced the interprocess gap from 10ms to just 1ms to improve the response of the pots. This makes the switch problem worse but I can add a workaround for that today.

Plugged a JU-06 into the MIDI Out port to see if MIDI still works. It does.

Left the system on soak test overnight.


Migrated over to the digitalWriteFast() library. Normally, we would just write directly to the ports at the machine level but this library is almost as fast and a damned sight easier to read.


Got the updated analogue filtering module ported across and installed. Instead of the n-channel alpha smoothing originally in place, this version uses a four-point rolling average filter with speeded-up mathematics to improve jitter discrimination. Works well.


Spent a small amount of time, 30 minutes or so, hunting for a bug in the paddle board decoding software. Couldn’t find anything. Checked cables. Checked my board. Eventually, checked the microprocessor and... oh... Here’s solder bridge... Problem solved.

Found the missing ZEIT encoder board - down the back of the computer.

Encoder now works. Tied it to Timer Three in the mainline code for the moment. This will need tweaking to get the best response.

Paddleboard reads are working. Got to sort out the filtering arrays.

Can’t find the VFD. Thought about plugging in an LCD. If that works then we don’t need to worry since it’s the same interface only slower… If there’s no VFD, I’ll jump directly to Part Two.

No, don’t plug in an LCD in case you blow the bloody thing up. The ZEIT connections are different.

Find the VFD.


Got paddle boards working but there’s something up with the board selection logic. Needs to have switch 8 selected to make it work. Suspect a line isn’t being pulled high when it should be. Probably something on the CPU board.


Ported Analog sampling module and SD Card handler over from Haydn Development System. Started re-building the ZEIT software. Gave up trying to use the new Arduino whizz-bang MIDI library because it breaks up the debug Serial port. Use my own handler, like the one in the original ZEIT, because it worked. MIDI In and Out working nicely, driving the EX5.


Completed work on third batch of Eurorack modules. Time to shift focus back to other projects...

ZEIT, Haydn, Echo, Zip all require attention.

ZEIT first... Ported Analog sampling module and SD Card handler over from Haydn Development System. Started re-building the ZEIT software for the new Arduino IDE.