TR-808 timing, groove and jitter

Introduction

When we announced our TR-8oh8 CPU upgrade, one concern we heard was:
“Will that upgrade perfectly capture the groove of the original CPU?”

In this article, we discuss where that specific groove comes from and how well we can recreate it with our TR-8oh8 CPU. We also show how we can even improve the timing.

The specific groove of a drum machine can be caused by many factors. For example, the way the sounds interact with each other, how dynamics are processed, and how precise the timing is. For our CPU, only the timing aspects are relevant, because the other factors are part of the non-CPU hardware.
Timing accuracy can be expressed as a function of jitter and latency with respect to a reference clock signal.

  • Latency: the time between the clock and the actual drum trigger
  • Jitter: The variation in latency

Why does the original TR-808 exhibit jitter and latency?

The original TR-808 is clocked either from its internal clock or an external DIN-sync clock. The internal clock can be assumed to be jitter-free *. An external clock could theoretically have any amount of jitter, as its quality is fully determined by the gear sending it.
A strongly jittering external clock would change the 808’s ‘groove’. This interaction is not covered in this article.

In the 808, the clock signal is sampled by the CPU, which will then generate the triggers for the drums.
Interestingly, this sampling is not interrupt-driven, but rather the clock signal is sampled at a rate of 1.9ms. The reason for this is that reading the clock signal is time-multiplexed with reading the switches.
This design decision causes 1.9ms of jitter between a rising clock edge and the drum-trigger output.

Another interesting choice is that the TR-808 samples the clock signal twice before outputting a trigger. Presumably, this was done for debouncing purposes, but is of questionable usefulness as the clock signal already has proper edges.
An assumption is that the debouncing algorithm used for the switches was accidentally also applied to the clock reading.
In any case, this automatically adds a latency of 1.9ms.

The TR-808 exhibits an additional latency, though: There is a roughly 1ms delay between the second clock reading and the actual output of the trigger. We did not reverse engineer the original firmware, but this might be the CPU needing some time to read data from the RAM.

Jitter and Latency of the original TR-808

The resulting jitter and latency are: 2.9ms latency + 1.9ms of jitter. This is quite bad for today’s standard, but might be an explanation for the TR-808’s specific ‘groove’.

TR-8oh8 legacy clock mode

The TR-8oh8 can easily emulate this behavior: We use the same interval of 1.9ms to read the clock signal. Furthermore, we can add an appropriate delay between reading the clock and outputting the pulses. This results in the same timing as the original:

2.9ms latency + 1.9ms jitter

TR-8oh8 improved clock mode

On the other hand, we can actually do better: Read the clock signal more often. Do not wait 2 periods to process the clock signal. Do not add 1ms latency.

In the improved clock mode, we read the clock signal with a period of 1ms, instead of 1.9ms. This practically halves the jitter. We can not reduce the jitter further, as we are also bound by the multiplexing hardware.
We also have much faster processing, reducing the latency substantially:

Only 0.23ms latency + 1.0ms jitter.

Your choice

The improved clock mode exhibits overall better timing, but with the danger of sacrificing the ‘groove’. We therefore decided to implement both the original timing and the improved timing. You can easily switch between them in the config menu.

 

* Compared to the huge jitter of the TR-808, the clock’s jitter can be neglected.

Pixie CPU

We also measured the timing of the Pixie CPU used by the RE-808 project. Apparently, it uses a 1.7ms instead of 1.9ms timing period. Unlike with the original, this period can also not be adjusted by calibrating the interrupt clock.
So at least from a theoretical standpoint, the Pixie CPU does not perfectly emulate the TR-808’s ‘groove’.

TR606 UniPulse Installation

Buy uniPulse in our shop!

uniPulse TR-606 features

  • Full velocity control of all 7 voices
  • Six (6!) additional sounds (An 808ish deep clicky bassdrum and a higher pitched one, Only Snare Noise, Only Tom Noise, Each half of Cymbal (the hitting sound and the decaying sound))
  • Midi clock input. Clock is also sent to external din-sync devices.
  • Midi controlled Open hihat decay
  • You can install an additional midi socket, or use the existing DIN-Sync socket

After installation you can trigger the following instruments on midi channel 10:
BD: 36
SN: 38
LT: 45
HT: 48
CY: 49
OH: 46
CH: 42

and the extra sounds:
Bassdrum 2: 37
Deep Kick: 35
Felt Cymbal: 52
Snoyze: 40
Brush: 47
Closed Cymbal: 51

Open hihat decay CC 17 (when counting from 0)

The midi channel and the notes can be modified using our configurator tool (see below).

Continue reading →

Korg Minipops-120 Single Output Modification

Here you will find information on how to add single outputs to your beloved Minipops-120.
This mod is compatible to midi added with the uniPulse. An uniPulse installation manual for Korg Minipops 120 is here.

Attached is a picture (extracted from the service manual) of the circuitboard and the points/parts you have to desolder to add single outputs. The HighHats and Cymbal share the same output, so you will get 7 single outputs for Bassdrum, Snaredrum, Claves, High Conga, Low Conga, Bongo and Highat/Cymbal.

Continue reading →

Midi for Korg Minipops 7 (uniPulse installation)

This guide shows you how to use the Tubbutec uniPulse interface with a Korg Minipops 7. You can also add outputs for each instrument.

The config file for the Korg Minipops 7 is here.

Features:

– Full velocity control for all 14 instruments
– Velocity controls guiro pitch
– Midi sync (optional)

Guiro pitch is controlled by midi velocity. If you want a fixed pitch, adjust CV-voltage until the desired pitch is reached.

These are the midi notes to trigger the instruments when using our config file. You can of course change these notes using the uniPulse configurator.

  • Note 64: Conga
  • Note 60: SB
  • Note 61: LB
  • Note 75: CL
  • Note 37: RS
  • Note 36: BD
  • Note 82: QUI
  • Note 54: TAM
  • Note 38: SD1
  • Note 40: SD2
  • Note 42: HH
  • Note 49: CY1
  • Note 51:CY2
  • Note 56: CB
  • Note 74: Guiro, velocity controls pich

Trigger points:

The image below shows the trigger points. You can solder the uniPulse trigger outs directly to these points. An exception is the Guiro, which is connected to the uniPulse CV-out with an additional diode.

Continue reading →

Video showing midi to coil

Here is a video showing a custom midi interface developed by Tubbutec for analogue drum machines such as Korg Minipops, AceTone RythmAce, Maestro Rhythm King MRK-2, Roland TR77,…

It has the following features:

  • 16 pulse out channels + Guiro output and pitch control
  • Outputs selectable between +5V..+12V and -12V
  • Fully velocity sensitive
  • Adjustable pulse length between 0.3 and 1.3 ms
  • Midi learn

 

Sequential Tom power supply

This Sequential Tom needed a new power supply. It states to need 15V AC, but after a little bit of reverse engineering it turned out to actually need 2×7.5V AC. It is quite unlikely to find a wall adapter with 2×7.5V AC, so I had to build an own power supply. It is just a (fused) transformer in a case, and a plug attached to a cable that fits into the back of the Tom. Done 🙂

sequential tom (2)