The TR-808 is an analogue drumcomputer from the japanese musicinstruments company Roland® made in the 80ies. Lots of musicians loves the sound of this device, the prizes for used ones are ridiculous high in the meantime. After studying the schematics (digital in- and digital out-boards) of the MB808-project I felt encouraged to try to make a TR-808-clone for myself now – with some voice-mod-additions. The projectdefinition before starting was:
- as simple interface as possible for step-sequencer. Imho the MB-808-project is somewhat overdosed (confusing buttons for shift, alt, aux, lcd-display, 5-buttons for transport, per-track-lastStep/direction/loops … personally i prefer the simpler way. It should have as few buttons as needed.
- A, B, AB-Pattern-functionality, means: a pattern has 2×16 steps which can be played indiviually or in chain (32 steps)
- Swing and Flam
- Somewhere beyond the TR-Sequencer: Last step, Random patterns, Left/Right Bitrotating of Tracks, Midi-dump and Import of patterns …
- i really do NOT need a ‘song’-functionality :)
- hopefully some beautiful and clear design inside and outside
- original tr808-voices but definately with useful mods. e.g. snare should get a pitch envelope like the tr606-snare and noisedecay, cowbell with tuning, decay and bandpass-frequency …
- modular layout of voices. PCBs with similar connectors (PSU, trigger, accent)
- No wires from PCB to pot on frontpanel, all pots will be soldered directly onto the voice-board for much better signal-noise-ratio than using long cables for pots
The brain is a Atmega32 8bit Microcontroller from Atmel. The patterns are saved through a software two wire serial interface in a 24C512 EEprom. I made 4 banks with 12 patterns each saveable. The patterns can be dumped in and out by midiSysex. The digital input is read through 3 x 74HCT165, the digital output uses 3 x 74HCT4094.
Software / Userinterface
The firmware is programmed in C. I once made an assembler project, assembler is much closer to how the computerbrain is actually working but imho it is quite abstract, i like C a lot more. At the time it uses up to 80 % of the available flashrom which is 32kb on the Atmega32. From data flashrom (2 kb) for variables (data containers holding things like instrument-triggers, sequencer position, midichannel, midinotes …) about 30% is used.
I wanted a clean userinterface without ‘Shift’- or ‘Alt’-functions. The main features in brief:
- to the right are 3 mode-buttons: PATTERN for selecting banks and patterns, MUTE for using patternbuttons to mute instruments and EDIT for settings steps of individual instruments or submodes like saving, dumping a.s.o
- to the left are 3 buttons for: SELECT INSTRUMENT to choose the voice for step-programming and FUNCTION 1 (blue) and FUNCTION 2 (green). To perform a function like saving, random pattern, bitshift just hold a FUNCTION-button and press the appropriate pattern-button
- realtime pots for TEMPO, SWING, FLAM and ACCENT
- Start/Stop-Button with LED to show running status
- Every function like copy, paste, saving, laststep, select pattern can be performed while running sequencer. (Saving sometimes makes a short delay in the beat beacause Eeproms are slow on writing and i need to save quite much data for a pattern.)
- 16 patternbuttons to select pattern and show the currently selected. Patterns are organized in 4 banks with 12 patterns. 2 or more patterns of a bank can be chained be pressing and holding multiple patternbuttons. Currently played is indicated by flashing LED
- each pattern has 2 faces (A and B) which can be selected by a 3-way-AB-switch. In the middle the A and B face of a pattern will be altered resulting in a max of 32 steps per pattern. If only A or B is selected, the other can be called once like a fillin by pressing TAP
- patterns can have any length between 1 and 16 steps. A and B can have different last step settings
- pattern A/B-faces and tracks can be copy-pasted on the fly
- tracks can be shifted left/right and randomized on the fly
- short or long decay (Bassdrum and Cowbell) is selected by consecutive patternbutton presses (on long, on short, off, on long, on short, …) and indicated by flashing LEDs
- supercool ‘Multirecord’-mode: No need to select instrument one after the other, each patternbutton represents one instrument. Now buttondowns for the 16 instruments are recorded and quantisized while sequencer plays. Hold TAP to erase notes
- Flam is per instrument, not global
- mutes are saved with each pattern and individual for A and B. Pressing TAP in MUTE mode unmutes all voices
- any pattern can be saved as the default ’empty pattern’ which is used when clearing a pattern
- to the right are two 3-way-switches to route the 3 different noise-sources (white noise, ringing squareoscillator and digivoice) to Clap/Maracas and Hihat/Cymbals. In combination with the digivoice spectra this gives quite unusual sounds
- Midisync with different signatures to match 8th, 16th, triplets
- Midi-Patterndump and Receive via Sysex
Basically i just built the voices from the MB-808 schemes. Here are the changes i made to them.
The famous TR808-BD is quite perfect, not much to alter or improve.
- changed R170 (470k) to resistor (380k) with a trimmer (100k) in series for adjustment of longest possible decay
- put an analog switch between decay-pot and C43 to switch between 2 different decays. The sequencers BD-steps have 3 states which are rotated each time you press the step-button: OFF with LED off, ON with LED on and variable decay (from the pot), ON with LED flashing and fixed short decay. Of course the short BD cuts off the long.
The snare consists of 3 elements: 2 t-bridge-oscillators and white noise going through a simple vca with a simple envelope for the noise-sound.
- Tune for lower oscillator – R116 is replaced with 1M-Pot and 220k in series. The lower oscillator can be tuned then. The 220k will prevent bad sound in extreme potpositions. You also can take 2.2 MB-pot but beyond the 1M there wont happen too much.
- Noisefilter – R22 is replaced by 50k-Pot and 4.7k in series. Again the 4.7k prevents weird sounds.
- Noisedecay – i put a 10k-pot in parallel to C37. It is not the badest idea to have a socket for C37. Now you can replace it with different values for testing what you like most without soldering. To high values (>2,2µ) will result in slow loading time, you would loose the punchy attack
- TR606-pitch envelope for both oscillators just copied the tr606-SD-scheme 2 times, one for each oscillator
- the TR606-pitch envelope – when used – tunes the already hightuned oscillator 1 even higher. I changed C32/C33 (6.8n) into 10n and put some sockets for experimenting with different capacitor values witout the need for soldering.
- after building the noiseunit i was not happy with the sound. no matter how this 20k-pot was set, the white noise somehow sounded ‘granular’, not white. I changed the 100k-resistor at the opamp-input (R280) into a 5k-pot, much better now.
Low, Mid, High Tom/Conga
Just built this right from the mb808 schematics. No changes.
HiHats / Cymbal
I just added a filtering-pot for both open and closed hh to nicely adjust the bandpass-filtering of the incoming whitenoise. The cymbal also has a bandpassfilter which could be adjusted. But i like it the way it sounds and didnt make a pot for it. These filters are quite sensitive, if your wires get to long they will catch noise, hum and radio from moscow. Sometimes less is more.
- changed R365 (open hihat) and R366 (closed hihat) which are both 2.7k to a resistor (1k) with potentiometer (10k) in series for filtering the sound of open and closed hihat. Like above: the 1k-resistor is just for keeping the sound usable, even when the pot is fully cranked.
- the input for the ringing-oscillator (schmidttrigger) can be switched with a 3-way-switch on the cpu-board into whitenoise, schmidttrigger or the output of the digiVoice
- bandpassfilter for maracas by changing R103 (3.3k) into 330 Ohm-resistor and 10k-pot.
- decay for maracas by changing R112 (150k) into 50k resistor and 100k-pot.
The clap is made by 2 components: reverb and bursts. The reverb is just filtered noise with a envelope. The bursts are a series (3-6) of very short envelopes which open a simple vca. I found the bursts to loud and sometimes the reverb alone also sounds cool, so i added a level-pot for the bursts alone.
- bandpassfilter for reverb by changing R149 (10k) into 1k resistor and 50k-pot
- level of bursts by putting a 100k-pot with one side to the point between C92 and R112 and the wiper to ground
- offset-pot: There is a 10k-trimmer which sets a value between ground and -15 Volt on R233. It adjusts the best operationpoint for Q71, and normally you calibrate it to sound right and forget it. In one extreme position the bursts are muted. When you start dialing it you start hearing the bursts getting louder, first they sound like a guiro. When you turn the pot further the clap will sound right, and if you dial it fully the vca will keep open. I like the different tunes and characteristics so i made it accessible from the front.
- the input for the white-noise can be switched with a 3-way-switch on the cpu-board into whitenoise, schmidttrigger or the output of the digiVoice
- added a 3-way switch for reverb decay. a pot wont do. The switch attaches or cuts C76 to the regular schematic: 47n for normal reverb length, 100n for long reverb or – in middle position – no capacitor for – yes – NO reverb.
Normally the Rimshot (RS) and the Clave (CL) share most of their electronic parts and you have to decide if you want RS or CL with a switch. I like both and my sequencer has enough triggeroutputs so i built them separate. Some extra work but i think its worth it.
- tuning by changing R72 (1k) into 1k resistor with 10k-pot in series
Cowbell – it uses two of the schmitt-trigger-squarewaves (4584N) and has a highly resonant bandpassfilter. Eric archer offers a lot of very useful information how the cowbell works.
- tune for oscillator 1 and 2 by changing the calibration trimmers into normal pots. Of course this also affects Hihats and Cymbal which use all the squarewaves.
- bandpassfilter adjustment by changing R252 (2.2k) into resistor with 220 ohm in series with a 10k-pot
- muted-decay like on the Bassdrum i also added a 4053-electronic-switch which is switches by the main-cpu. The cowbell now has 2 states: normal (long decay) and muted (short decay). The switch connects the wire between R244 and C134 (for the short, loud beginning of the sound) either with the normal scheme of R259 and C135 (for the mellow long decay) or – for the muted sound – just a 100k-pot without a capacitor.
- tuning by changing R72 (1k) into 220 ohm resistor with 10k-pot in series
Pulse & DigiVoice
The two trigger-shiftregister have 8 outputs resulting in a total of 16 trigger-outputs. As the tr808 has 13 voices and an accent-track i had 2 triggeroutputs leftover. I decided to add 2 other voices.
The pulse is simply the pulse from the trigger itself. It runs through an adjustable bandpass-filter like on the cowbell and the lowpassfilter (Tone) like on the Bassdrum. Thats it.
This is a hybrid voice, half digital, half analogue. The analogue part is just the clone of the cowbell with its simple vca controlled from the pwm-envelope and adjustable bandpassfilter.
The digital part is a Atmega8-µController making some noise or squarewaves. It constantly makes noise or squarewaves to feed – if desired – the hihats or the clap/maracas with its tone. What kind of tone it actually makes depends on the selected mode and the setting of the 4 Pots which are read in by the ADCs (Analog to Digital Converters) of the controller. In the lower right corner is a button, each press advances to the next mode, starting from the first after the last one. The Atmega also reads the trigger and outputs an abjustable envelope via PWM (Pulse Width Modulation). This voice also has – like cowbell and bassdrum – in correspondance with the cpu/interface 2 states: normal and muted. The muted state stops long decays which is quite cool and groovy. The 4 selectable modes are:
- Noise (kind of snare) – the pots adjust Noise frequency, frequency-bend-speed, sampleAndHold-amount and vca-envelope-decay
- Square-Oscillator (kind of tom) – the pots adjust frequency, pitch-bend-speed, sampleAndHold-amount and vca-envelope-decay
- Cowbell – the pots adjust 2 oscillators which are kind of ringmodulated. Another post sets the muted vca-decay and the last pot sets the unmuted vca-decay
- Clap/Guiro/Maracas – pot 1: tune/timbre, pot 2: oscillatormode (noise, bent noise, square, cowbell), pot 3: vca-envelopemode (Clap,Guiro,Maracas), pot 4: vca-envelope-decay. The muted/unmuted state alter decay or – when using guiro – stops the vca-envelope in the middle (you know: kr,kr,krrrrrr,kr,kr,krrrrrrr)
If you want to know how i built the case here are some pix of the making.