Real World Interfaces logo

MIDI In for the Devil Fish modified TB-303

Back to the main Devil Fish page.   Back to the main First Principles site.

© Robin Whittle, Real World Interfaces  rw@firstpr.com.au  1 January 2008  For version 1.0.3 firmware and earlier versions.

(1) Overall description
(2) The "Front Panel"
(3) User alterable parameters
(4) Interaction between the MIDI In system and the TB-303 / Devil Fish
(5) Details of the features and alterable parameters
(6) Advanced use of the Sync-MIDI socket
(7) Firmware version history
(8) Document history

1 - Overall description

This is an additional modification I can install in a Devil Fish modified TB-303.  It is not available separately, or as kit for someone else to install.  The usual approach is for me to install it as part of the Devil Fish mods, where  I have provision  for it on the Version 4.0 and later printed circuits.  It is also possible for me to install this system on Version 2.x or 3.x  Devil Fish modified TB-303s - by replacing the two original Devil Fish circuit boards with two new ones.

This is a MIDI In system, with no Out or Thru.  The existing DIN socket is used for MIDI In - but it can still be used for Sync when MIDI In is not in use.  The system uses the TB-303's internal Digital to Analogue Converter (DAC), so the control voltages and therefore oscillator pitches are identical to those produced by the internal sequencer. 

User parameters are altered via the Back and Tap buttons, with status indicated by a new hyperbright Blue LED, which shines through the same "e" in the Devil Fish logo as the Red Gate LED.  The values of the user-alterable parameters are stored in non-volatile memory - so they remain after the machine has been turned off and on.

The system receives Note Commands and some Control Change Commands on a single, user-selected, MIDI channel.  It also receives MIDI Sync: Start, Clock, Stop and Continue.  The system ignores all other MIDI messages.  A brief description of the capabilities follows:

Notes

The full 4 octave range of the TB-303's internal sequencer is received - with the C on the left of the TB-303 keyboard in Pattern Write mode (2 Volts) corresponding to MIDI Middle C (note number 60).  In addition, 3 additional semitones below and above this range are also received, although the accuracy of the TB-303's VCO may not be ideal at these voltages.  The lowest MIDI note number received is 45 (A1 = 0.75 volts = 3 semitone below the internal sequencer's lowest C) and the highest is 99 (D#6 = 5.25 volts = 3 semitones above the internal sequencer's highest C when the pattern is transposed upwards by 12 semitones).

A transposition of +/- 24 semitones can be applied to the MIDI note numbers before the notes are played within the above range.

There is no pitch bend facility.

Accent

Accent turned on according to the note's Velocity being above a threshold.  The threshold is one of four user-selectable options.

Slide

Slide can be turned on for "tied notes" - where one note starts before the last one is released.  Slide can also be turned on via Controller 65 (Portamento) or by a user-selectable controller which also drives Sustain (Gate).  (Sliding - slewing of the DAC voltage slowly from the previous pitch to the new pitch - is a separate function from keeping the Gate on between what would otherwise be two separate notes.)

Gate (Sustain)

In addition to normal Gate operation from the received MIDI notes, Controller 64 (Sustain or Hold) can be used to independently turn on the TB-303's synthesiser Gate.  Another user-selectable MIDI Controller can also turn on Gate and/or Slide.

Filter Frequency

A user-selectable Controller can be used to drive the filter frequency, over a range of about 5 octaves, in a similar manner to the Devil Fish Filter CV In.  This MIDI control of Filter Frequency is in addition to this CV In socket and all the other internal signals which affect Filter Frequency.

Synchronisation

The system receives Sync (Start, Continue, Clock and Stop) to drive the TB-303's internal sequencer.  With a suitable lead, such as the Sync Lead (../sync-lead/) this can also produce DIN Sync for external devices. 

Below is a guide to using the "Front Panel" for setting various parameters and a detailed discussion of all the features and parameters. 

The MIDI In microcontroller (PIC16F870) is a 28 pin DIP device which can be replaced with a new one containing later versions of the firmware, to fix any bugs and to implement new features.  This involves completely dismantling the TB-303 / Devil Fish and reassembling it - and so should only be undertaken by an experienced technician.  The microcontroller is small and easy to send in the post.

The Sync / MIDI socket of the Devil Fish with MIDI In is not an ordinary MIDI In socket.  The two outside pins carry Run/Stop and Clock.  This means that devices such as the Evolution 225C (and no-doubt other keyboards from this company: http://www.evolution.co.uk ) should not be plugged into the Devil Fish, except with a lead which does not connect to the outside pins. (The Evolution 225C has +5 volts and a 5 volt MIDI signal on the outside pins so that it can be powered by a special lead which plugs into a PC sound card's joystick connector.  Please use a special lead, or an ordinary lead with the outside pins broken off, between such a keyboard and the Devil Fish.  Another approach is to plug the keyboard into some other MIDI device and use the Thru of that device to drive the Devil Fish.)


2 - The "Front Panel"

This MIDI In system uses a very minimal "Front Panel" - the user-interface by which internal parameters can be changed:

The Back button and the Tap button are the two input elements. 

A hyperbright Blue LED mounted so it shines through the "e" of the Devil Fish logo is the sole "display" element.

(Note, the TB-303's CPU sees the Back and Tap buttons too, so pressing them for the purposes of changing the MIDI In system may also affect what the TB-303's CPU does.  Normally, Back and Tap have little or no effect in Pattern Play or Pattern Write modes.)

WARNING: This minimal front panel will drive you bananas if you don't read the following section clearly!  Please pay close attention to these instructions regarding Pressing and Releasing these two switches.  The order and timing of these actions is crucial.

Initialising the Parameters

The Microcontroller at the heart of the MIDI In system uses non-volatile memory, which is completely independent of the memory of the TB-303 and which does not rely at all on any batteries.  If, for some reason, you want to initialise the values of the parameters to the defaults listed in the table below, turn the machine on whilst holding both Back and Tap.  The Blue LED will flash for a short period.  Release the Back and Tap buttons and the machine will be ready for ordinary operation.  The default settings include receiving MIDI Notes and Controllers on Channel 1, and receiving MIDI Sync.

Version display

To display the version of firmware programmed into the MIDI In microcontroller, turn the machine on whilst holding the Tap button.  The Blue LED will continually cycle through a pattern of varying brightness.  A long moderate brightness period is followed by three dim periods, within which 0, 1 or more bright flashes may be inserted.  The number of flashes indicates the software version.  Version 1.0.0 is indicated by one flash in the first dim period and none in the other two.  In this mode, the microcontroller is not receiving MIDI or driving the TB-303 hardware in any way.  Turn the machine off and on again to restore normal operation.

MIDI activity LED display

The hyperbright blue LED which shines through the Red Gate LED in the "e" of the Devil Fish logo has three functions.
  1. The Version Display, as described above.

  2. Indicating the status of "Front Panel" operations - the pressing and releasing of the Back and Tap buttons.

  3. Indicating successfully received MIDI commands.  This is normally on, except for when either of these conditions are true:
    1. A "Front Panel" operation is in progress.
    2. The LED display of MIDI activity has been disabled by turning the machine on with the Tap button pressed, and the Back button not pressed.  (The LED circuit may cause very slight interference with the audio output.)

Turning on and off the reception of MIDI notes and Controllers

This is a single setting, which is stored immediately in non-volatile memory.  So whatever change you make will remain after the machine is turned off and on.  Before doing this, make sure that the machine is not in the middle of the "Altering the value of a parameter" operation, as described below.  

Turn On reception of MIDI notes and controllers
Hold down the Tap button.
Press and then release the Back button.
Release the Tap button.

After reception is turned on, the MIDI In system will not take control of the TB-303's DAC until a Note On is received on the correct MIDI channel, within the currently valid range of note numbers.    This control will still be maintained after no more MIDI events are received, even if the MIDI lead is removed from the Sync/MIDI socket.  The MIDI In system will begin to drive the Filter Frequency only after a Control Change for this is received.  Slide and Gate (Sustain) can be driven by several controllers, as well as after a Note On event has been received.

In order to return control of the DAC etc. to the TB-303's internal sequencer and to no longer drive Gate, Slide, Accent or Filter Frequency, use the following procedure:


Turn Off reception of MIDI notes and controllers
Hold down the Back button.
Press and then release the Tap button.
Release the Back button.

The control of the reception of MIDI Sync is separate - see Parameter 7 in the table and descriptions below.  With firmware version 1.0.3 and above (2008 and later) this "Turn Off MIDI reception of notes and controllers" operation will also stop the machine playing from MIDI Sync, until the next Start or Continue byte is received.

Altering the value of a parameter

There are 7 parameters which can have their values changed with the following procedure.  The exact details of these parameters are listed in the table below.  The MIDI In system continues to receive MIDI and play notes etc. whilst parameters are having their values altered - the effects, if any, of the new value take place immediately.  The final step is required to write the altered value into non-volatile memory.

Entering Parameter Select mode
Press and Hold both Back and Tap buttons, for 4 seconds. 

It doesn't matter whether you first press Back or Tap, or how long after pressing the first switch it is before you press the second.  While the two switches are both pressed, the Blue LED will flash repeatedly very quickly.

After about 4 seconds, the flashing will stop and the Blue LED will turn on continuously. 

Release both switches.

(If you release either switch before the Blue LED turns on continuously, then the MIDI In system has not entered Parameter Select mode.  It will continue in normal operation once both switches have been released.)

Selecting which parameter to alter
If you want to alter the first parameter - MIDI Receive Channel - then there is nothing to do at this stage, since this is the first parameter.  For other parameters further down the table below:

Press and Release the Back button the number of times indicated in the table below. 

The Blue LED will flash each time the Back button is released.

Once you have done this the appropriate number of times:

Press and Release the Tap button. 

The Blue LED will flash once.

(If, during this procedure, you decide not to change a parameter, press and hold both Back and Tap for about 3 seconds.  During this time, the LED will not light, but at the end of the time, it will flash with a distinctive sequence of double flashes.  These double-flashes indicate that your command to exit has been accepted.  Release the buttons and the MIDI In system will resume normal operation.)

Altering the value of a parameter
The parameter you selected is now ready to be incremented (made one higher than it currently is) with the Back button or decremented (made one lower) with the Tap button.  There is no absolute display of its current value, but you can find the value by stepping it down with Back until it reaches is minimum, which is visible by a longer flash of the Blue LED.  Similarly, even if you don't know the current value, you can step down to the minimum, or up to the maximum, and then step backwards to the value you require.

+ Increment the parameter:  Press and Release the Back button. 

- Decrement the parameter:  Press and Release the Tap button.

Each parameter has a minimum and maximum value.  If you Decrement when it is at its minimum, or Increment when it is at its maximum, the value will not change and the Blue LED will flash for a longer time.  If you changed the value of the parameter to a new state, then the Blue LED will flash for a short time.

Changing the parameter has immediate effects on the MIDI In system.  Furthermore, changes to some parameters cause specific actions, such as clearing received notes, Accent, Slide etc. if the MIDI receive channel is changed.  These are explained in the detailed information below on each of the parameters.

The changed parameter will not be written into non-volatile memory unless the next step is performed.

If you wish to abandon whatever change you just made to the parameter, turn the machine off.  Turning it on will restore the value to whatever was stored in non-volatile memory.

Saving to non-volatile memory and returning to normal operation
Whether or not you have altered the value of a parameter in the step above, to return to normal operation, you must perform the following procedure - which also writes the new value (or the original value, if unchanged) to non-volatile memory.

Press and hold both the Back and Tap buttons for about 3 seconds.
When you have pressed and held them for long enough, the Blue LED will flash with a distinctive double-flash pattern.  This is the signal to:

Release both buttons.
after which, the MIDI In "front panel" will be in normal operation.

3 - User alterable parameters 

One parameter - which turns on and off the reception of Notes and Controllers - is described in the previous section.  The other parameters are accessed and altered by the procedure described immediately above.  Here is a table listing their names, range of values, default value and a short description of their function.  Each parameter is discussed in greater detail in Section 5 below.

Name of parameter
Parameter number = number of  presses
of the Back button to
select this parameter
before pressing Tap
Range & (default)
Function
MIDI Receive Channel
0 (None - just press Tap.)
1 - 16 (1)
Selects which channel will be used for receiving Note and Controller messages.
Transpose Enable
1
0 - 2 (0)
0 = No transposition.
1 = Transpose Up.
2 = Transpose Down.
Transpose Amount
2
0 - 24 (12)
Number of semitones to transpose the MIDI Note number up or down before playing it on the TB-303.
Filter Frequency Controller
3
0 - 19 (1)
0 = Disabled.
1 = Mod wheel.
2 to 19 = this controller number.
Slide on Tied Notes
4
0 - 1 (1)
0 = Disabled.
1 = Turn on Slide when a new note is started before the previous one ends.
Sustain-Slide Controller
5
0 - 19 (0)
0 = Disabled.
1 = Mod wheel.
2 to 19 = this controller number.
Accent Velocity Threshold
6
0 - 3 (0)
Threshold values, above which Accent will be turned on:
0 =  64
1 =  80
2 = 100
3 = 120
Receive MIDI Sync
7
0 - 1 (1)
0 = No reception of MIDI Synchronisation.
1 = Receive MIDI Synchronisation.


4 - Interaction between the MIDI In system and the TB-303 / Devil Fish

A full understanding of the various parameters and features requires a good understanding of the three elements of hardware - the basic TB-303, the Devil Fish enhancements to it and then how the MIDI In system interfaces to these.


The standard TB-303
The standard TB-303 can be divided into two sections: CPU and Synthesiser
The CPU section comprises:
The CPU chip.
Battery backed-up memory.
Push-button switches, rotary switches and LEDs.
Sync section:
Run/Stop button and flip-flop
Tempo pot and oscillator
Sync socket
The CPU chip contains firmware which makes it respond to all the above, and read and write data from the memory, so that it controls the synthesiser section with the following signals:
A 6 bit DAC (Digital to Analogue Converter) which provides a voltage between 1.0 and 5.0 volts, in 1/12 volt steps.  This voltage is made available at the CV Out socket.

A Gate signal - which is available at the Gate Out socket.

An internal Slide signal which controls the slewing of the CV (to the synthesizer's VCO and the CV Out socket) so that it  takes a fraction of a second to slew to the new voltage produced by the DAC. 

An internal Accent signal which alters the way the synthesiser works. (See the Devil Fish release notes for more information on Slide and Accent.)
The TB-303's Sync section consists of two front-panel circuits - a Tempo Clock oscillator and a Run/Stop switch, flip-flop and LED - and a special 5 pin DIN socket.  This socket uses the middle pin (2) for ground (as does MIDI) and the two outside pins (1 and 3) for the Run/Stop and Clock signals, respectively.  (Pin 4 is also an input for the Tap function and Pin 5 for some undocumented function.  These are not normally used in any Sync arrangement, and these functions are removed when the MIDI In system is installed.)

Normally, with nothing plugged into the socket, a two-part switch in the socket connects the local Run/Stop signal (generated by the Run/Stop switch and its associated flip-flop) to pin 1 and the Clock signal, from the Tempo oscillator, to pin 3.  These are both 5 volt signals - 0 means nothing and 5 volts means "Run", or the rising edge of the 5 volt square wave on the Clock line indicates that this is the start of a 1/24th of a quarter note.

The Clock circuit is normally a free-running square-wave oscillator - but it is reset and made to restart with a slight delay every time the Run/Stop button is pressed so as to turn Run/Stop on.  This is to ensure that the Run/Stop signal goes high, at the start of the song, when the Clock signal is low - and that there be a defined time delay before the next rising edge of the Clock signal.  This delay is musically unimportant, but is vital to allow the TB-303's CPU to recognise this first Clock cycle, rather than miss it while the CPU is responding to the rise in Run/Stop.

If a plug is inserted into the Sync socket, without activating the switch, pins 1 and 3 function as outputs.  This can be done by only partially inserting the plug, or by removing its shell (or part of the shell) so it doesn't press against the white rod inside the top of the Sync socket.  This is not a standard part of TB-303 functionality, but it can be useful.  (For further discussion, see Section 6 below.)

If a plug is inserted normally into the Sync socket, this disconnects the local Run/Stop and Clock circuits from the socket's pins 1 and 3.  The idea is that the lead which has been plugged in will drive these pins.  The voltage levels for receiving Run/Stop and Clock are not critical - low should be 0 to maybe 1 volts and high should be between 3 and 15 volts. 

So in normal operation, whether an external Sync source is plugged into the TB-303, or whether nothing is plugged in and the local circuits drive pins 1 and 3, these pins have a valid Run/Stop signal and a valid Clock signal.   The CPU sees these signals and uses them to drive most of its operations.  Without a regular Clock signal, the CPU will not play any notes, flash any LEDs or respond normally to front panel button activity. 

The Sync system is a two-signal input to the CPU.  The CPU does not drive the Sync socket - only an external cable, or the internal Run/Stop and Clock circuits drive the socket and therefore these two inputs to the CPU. 

The Run/Stop LED is also driven by the Sync socket - if pin 1 is above about 0.5 volts the LED will be On, but only if the power supply to the TB-303's CPU is at the correct voltage.  If the voltage is low, such as due to running from flat batteries, or using an inadequate external power supply, then this LED will be dim or off.

Normal note-playing activity in the TB-303 involves:
The standard TB-303 has no inputs for CV (to drive the VCO), Gate, Accent, Slide or Filter frequency, but Kenton make a kit which provides these and the Devil Fish modifications provide them as well.

The Devil Fish Modifications add a number of inputs and new sources of control for CV, Gate, Accent, Slide and Filter CV.  The Devil Fish mods also add an Accent Out socket - a + 6 volt signal which can be used to drive other equipment, such as one or more other Devil Fishes.  Here are descriptions of the four signals as they are handled in the Devil Fish without MIDI In, and in the Devil Fish with MIDI In.  The MIDI In details are in bold blue text.


Devil Fish CV In

The TB-303 CPU drives the 6 bit DAC, which has in internal impedance of 100k ohms.  Instead of driving the Slide circuit, which can cause slew via a 0.22uF capacitor, the DAC drives a switch terminal of the Devil Fish's CV In socket.  When nothing is plugged into this socket, the signal goes to the Slide circuit, via the new Slide pot (0 to 500k ohms).   When an external CV is plugged into this socket (probably with a much lower impedance than 100K) the voltage from the DAC is ignored and the Slide circuit uses this voltage, slewing according to the value of the Slide pot whenever the Slide signal is on. 

The output of the Slide circuit goes to the VCO, the Filter Tracking pot and the TB-303's CV Out socket.

The MIDI In system is the same as the above, except that the system can take control of the DAC from the TB-303's CPU.  When this happens, it doesn't matter what attempts the TB-303 CPU makes to drive the DAC, the DAC voltage will be controlled solely by the MIDI In system's microcontroller. 
Plugging a lead into the CV In socket will mean that the VCO is driven by whatever is on that lead - the output of the DAC, and therefore the pitches received from MIDI, will be ignored.  Note there is a pesky and hard to entirely resolve bug with some Devil Fishes: an occasional intermittent poor connection in the CV In socket's switch function means that the VCO pitch drifts, is static, or is way out of tune.  The solution is to insert a plug a few times into the socket, so the contacts get some movement.  This is discussed more fully in the Release Notes in the section regarding reliability.

Devil Fish Gate
There are two or three signals which can turn on the Gate - for the Synthesiser Gate, the Gate Out socket and the Gate LED in the "e" of "Devil".
  1. The TB-303 CPU's Gate signal.

  2. The Devil Fish's Gate In socket.

  3. In versions 2.1D and later, a voltage above about 4.0 volts on the Slide In socket will also turn on the Gate.
These are in an OR arrangement - one, two or all three of them being active will turn on Gate.

The MIDI In system can drive the Gate in a similar way - an OR arrangement of the above three signals with its own Gate signal.  The MIDI In signal cannot turn off the Gate if it is turned on by any of the above. 

If the TB-303's CPU was turning the Gate on continually, the MIDI In system would not be able to make it go on and off.  If the MIDI signal contains no Sync (Start, Clock etc.) this is unlikely to occur, because plugging a lead into the Sync socket will open the switches and disconnect the TB-303's internal Run/Stop signal from pin 1, and therefore from the Run/Stop input of the CPU.  This will cause the TB-303's CPU to deactivate its Gate signal.  However, if the MIDI lead was only partially inserted, or was modified so as not to activate the switch, then the TB-303's CPU could be driving Gate whilst the MIDI In system is trying to turn Gate on and off.  This might be musically useful, but is more likely to be troublesome. 
(For further discussion, see Section 6 below.)

With an ordinary MIDI lead, properly inserted, there could be a situation in which the TB-303's CPU is activating Gate at the same time as the MIDI In system is trying to play notes by activating the Gate.  This situation involves these three conditions all being met:
  1. The MIDI In system is configured to receive MIDI Sync, which is the default arrangement.

  2. The MIDI signal includes Clock bytes and at least one Start or Continue byte, which causes the MIDI In signal to turn on Run/Stop (pin 1 of the Sync socket, and as an input to the TB-303's CPU) and to provide Clock pulses (on pin 3, and also to the CPU).

  3. The TB-303 is currently set up to play a pattern, or track, such that the pattern it plays contains some notes.
To avoid this situation, in the typical situation with an external MIDI sequencer which puts out Sync bytes, there are two ways of avoiding this problem of the TB-303 CPU driving the Gate when you really want to be controlling the synthesiser entirely from MIDI.  Either of these approaches will solve the problem:
  1. Disable the reception of MIDI Sync (Parameter 7 above.) or:

  2. Make sure the TB-303 is in Pattern Play (or Write) mode on a blank pattern.

Devil Fish Slide
There are two signals which can turn on the Slide.  This means turning on the slew in the Slide circuit.  This is not the same as turning on the Gate to tie two otherwise separate periods of Gate on into a single period.  The TB-303's CPU, when playing two notes with Slide, does this - it leaves the Gate on as it changes the DAC voltage, whilst also turning on the Slide signal to cause the resulting voltage to the VCO to slew slowly.
  1. The TB-303 CPU's Slide signal.

  2. The Slide signal which results from the Devil Fish Slide input socket having more than about 2.3 volts applied to it.
The MIDI In system can override the TB-303 CPU's Slide signal and the Devil Fish Slide input socket.  When the MIDI In system is driving the DAC, it doesn't matter whether the TB-303 CPU or the Slide input socket is driving the Slide - the MIDI In system will control Slide irrespective of these. This overriding begins with the first note played by the MIDI in system in response to MIDI In.  The override is not activated simply by the MIDI In system being ready to receive notes.  A note must be received first.  Once this happens, the MIDI In system will control Slide, according to Tied Note Slide and the Slide-Sustain Controller - until the reception of notes is turned of by holding down the Back button and pressing and releasing the Tap button.

 
Devil Fish Accent
There are three signals which can turn on the Accent to the synthesiser, which also turns on the Devil Fish's Accent Out socket.
  1. The TB-303 CPU's Accent signal. (This could be stuck On if the CPU's sequencer function is stopped in the middle of a pattern with an accented note, or perhaps if it is ready to play a pattern which starts with an accented note.)

  2. The Accent signal which results from the Devil Fish Slide input socket having more than about 2.3 volts applied to it.

  3. The Accent Button.
The MIDI In system overrides the TB-303 CPU's Accent signal.  When it is driving the DAC, it doesn't matter what the TB-303's sequencer is doing.  The MIDI In system's Accent signal is ORed with the signals from the Accent In socket and the Accent button to produce the final Accent signal for the synthesiser and the Accent Out socket.

MIDI In Sync system
The MIDI In system cannot see whether anything is plugged into the Sync socket to open the switches which disconnect the TB-303's internal Run/Stop and Tempo Clock circuits from pins 1 and 3 of the socket respectively.  Nor can it see the state of these pins to know if an external signal, such as by a special lead carrying both MIDI and Sync, is driving the pins.  So the MIDI In system cannot sense whether the TB-303's CPU is playing a pattern, driving Gate, Accent etc.

However, the MIDI In system can drive the pins 1 and 3 (Run/Stop and Clock) of the Sync socket.  This means it will drive the TB-303's CPU and any external lead which may connect these pins to other devices.   Assuming no external signal is driving these pins, and assuming that a normal lead has been inserted far enough to activate the switch which disconnects the internal Run/Stop and Clock circuits, then the MIDI In system is free to drive the pins according to the bytes it receives from MIDI, if the parameter 7 (Receive MIDI Sync) is on.

However, if there is some other source of Run/Stop or Clock, such as due to the Sync socket switch not being properly activated, or some other signals being applied to the pins, then the MIDI In system will not be able to reliably drive these pins.

The drive for each pin is 5 volts, via a diode and 1k resistor.  This should protect the MIDI In microcontroller from shorts or externally applied positive voltages, but be sure not to apply negative voltages, or any static electricity spikes, to these pins.

5 - Details of features and alterable parameters

Here is a complete discussion of the operation of the MIDI In system.  If something is not clear to you, please let me know

Monophonic reception of multiple notes

The Devil Fish modified TB-303 is a monophonic synthesiser, but MIDI is a polyphonic interface.  There are several ways a monophonic device, such as a MIDI to CV converter, can choose which single pitch to play when multiple note-on and note-off events are received.  Common approaches include high-note or low-note priority, where the highest or lowest note of the currently active notes is the one which drives the monophonic synthesiser.

The MIDI In system uses a "most recent note" priority system, with a ten-deep internal stack of the most recently turned on notes, which are used if the currently played note is turned off.  This means that up to ten notes can be active at once, and as they are released, the MIDI In system will back-track through the list of currently active notes, selecting the most recently started, when more recently started notes are released.

The Blue LED

The MIDI In system has a Hyperbright Blue LED, mounted to shine on the Red LED in the "e" of the Devil Fish logo.  This is a brighter, and somewhat more "aqua" LED than the Blue LEDs which can be installed in the TB-303 front panel.  The new Blue LED may not be clearly visible in very bright lighting, such as sunlight, but should be clearly visible in most other circumstances.

The light of this LED is the only visible indication that the Devil Fish modified TB-303 contains a MIDI In system.  If the machine is turned on with the Back button pressed, the LED will light in a continuing sequence of pulses, showing the three digit version of the MIDI In system's firmware.  The Blue LED is used to indicate various states of the "Front Panel" system, as described above. 

When no such operations are in progress, the LED indicates successfully received MIDI Note On/Off and Controller values - unless disabled as described below.  A short, bright, flash occurs for each Note event, and a longer, dim, flash occurs for controller events. 

In both cases, these are only for notes within the current range (as determined by the range of MIDI In system as affected by the current transpose settings) and for Controller commands which affect the MIDI In system.  This means the Note events which created a flash of light were ones which materially affected the MIDI In system.  For instance, if a note on is received on for a MIDI note number which is already on, then the second message will be ignored by the interface and will not generate a flash of the LED.

Since one flash can be terminated and replaced by another, sending a Controller command followed by a Note event will cause a visible short bright flash, while sending them in the reverse order will cause a visible longer dim flash.

When recording, with very fine attention to sound quality, there may be a need to disabling the LED indication for successfully received MIDI messages, because the LED circuit may cause a very low level tone in the audio output.  To do this, turn the machine on with the Tap button pressed and the Back button not pressed.

MIDI Channel (parameter 0)

Changing this parameter terminates any currently active notes, disengages the MIDI In system's control of the DAC and disengages its control of the Filter Frequency.  The MIDI In's drive of Slide, Accent and Gate are turned off. 

Notes and Controllers are immediately received on the new channel, which may lead to notes being played and other effects, such as Slide or Accent.  The flashing of the Blue LED for Notes and Controller commands is turned off during the parameter change process - so if you are fishing for the right MIDI channel, it is probably best to do this by listening for notes (or looking at the Red Gate LED) , since it takes quite a few seconds to exit from the parameter change process in order to see the Blue LED activity which indicates successful MIDI reception.

As with all the parameters, be sure to exit the change process by holding down both Back and Tap buttons, in order to save the new setting to non-volatile memory, and to return the system to ordinary operation.

Transposition (parameters 1 and 2)

As with the MIDI Channel, changing these parameters ends any currently playing notes, disengages the drive of the Filter Frequency, and ends any drive of Slide, Accent and Gate.

Without transposition, the range of MIDI Notes which are received is:

MIDI Note
number
Note
name
DAC voltage
Relation to TB-303 sequencer
45
A1
0.75 V
3 semitones below normal TB-303 range.
48
C2
1.00 V
Lowest C on TB-303 sequencer.
60
C3
2.00 V
Left C of TB-303 keyboard with no transposition.
72
C4
3.00 V
Right C of TB-303 keyboard with no transposition.
84
C5
4.00 V
Highest C of a pattern without transposition.
96
C6
5.00 V
Highest C of a pattern with 12 semitone transposition.
99
D#6
5.25 V
3 Semitones above normal range.  VCO tuning will be inaccurate.
A transpose value of, for instance, +3 can be achieved with Parameter 1 set to "1" and Parameter 2 set to "3".  This would cause a MIDI Note number 57 (A2) to play the C3 note on the TB-303 / Devil Fish.

Filter Frequency Controller (parameter 3)

When set to 0, this feature is disabled.  When it is set to a value 1 to 19, and a Control Change for this number is received on the currently selected channel (parameter 0) then the MIDI In system begins to drive the Filter Frequency. 

There is an approximately 5 octave range between controller values 0 and 127.  A value of about 83 will not alter the filter frequency.  Values above this will increase the filter frequency and values below will decrease it.  This is equivalent to applying a 0 to 5 volt signal to the Filter CV socket, where 3.3 volts has no effect on the filter frequency.

The Filter Frequency will no longer be driven when any one of the following occurs:
  1. Note reception is turned off by holding Back and pressing and releasing Tap.
  2. Parameter 0 - Receive Channel - is changed.
  3. Either of the Transpose parameters (1 and 2) are changed.
  4. The Filter Frequency Controller parameter (3) is changed.
As long as the MIDI In system is ready to receive Notes etc., sending another Controller command on the correct controller number and MIDI Channel will again turn on the Filter Frequency control.

The MIDI In system can receive on any controller number 1 to 19. 

For reference, here is how this range of controller numbers is commonly used.  These are just the names of functions of other synthesisers which may transmit various controller numbers.  These functions have nothing to do with the Devil Fish MIDI In system.  Those marked with the * are common. 
Controller  Function
number

       1  * Modulation Wheel
       2    Breath Controller 
       3      
       4    Foot Controller 
       5    Portamento Time 
       6  * Data Entry Slider 
       7  * Volume 
       8     
       9     
      10    Pan 
      11    Expression 
      12    Effect Control 1 
      13    Effect Control 2 
      14     
      15     
      16    General Purpose Slider 1 
      17    General Purpose Slider 2 
      18    General Purpose Slider 3 
      19    General Purpose Slider 4 

Slide on Tied Notes (parameter 4)

When this parameter is set to 1, which is the default, Slide will be turned on when a second note is played while one is already active.  When it is set to 0, this will not happen - the CV to the VCO (and the CV Out socket) switches directly to the new note's voltage.

Changing this parameter to 0 will end any Slide which is on at that time due to tied notes. 

Sustain-Slide Controller (parameter 5)

When set to 0 (the default), this feature is disabled.  When it is set to a value 1 to 19, and a Control Change for this number is received on the currently selected channel (parameter 0) then the value may drive Slide and/or Sustain (Gate On, even if there is no note currently playing).  However this will only occur after at least one Note On has been received so that the MIDI In system has taken control of the TB-303's DAC.  (The Blue LED will show a longer dim flash for each reception of this controller, but only when a note is played will the Gate and Slide be turned on.)

The intention is that a sequencer, or more likely a live player, will manipulate a controller number (such as 6 via a Data Entry Slider of a keyboard) to select Slide and/or Sustain.  The effect of the controller values are:
Controller
value
Sustain
(Gate)
Slide
0 - 31


32 - 63

On
64 - 95
On

96 - 127
On
On
Please see the Gate and Slide sections of Section 4 above for details of how these signals are ORed with other signals to create the final Gate and Slide signal to the synthesiser.

Accent  Velocity Threshold  (parameter 6)

This parameter selects which of four thresholds will be used to decide whether a new Note On event will activate the Accent signal to the synthesiser.  For instance, if this parameter is set to 0 (default) then any Note On with a velocity of 64 or above will activate the Accent signal. 
Parameter 6 value
Threshold above which Note On
Velocity will
activate Accent
(Gate)
0
 64
1
 80
2
100
3
120
Changing this value has no effect on any Note or Accent which is currently playing.

Receive MIDI Sync

The MIDI In system will receive Sync if this parameter is set to 1 - which is the default.  A value of 0 disables reception of Sync. 

Changing the parameter from 1 to 0 resets any currently active Run/Stop and Clock which the MIDI In system is driving to the Sync socket and TB-303 CPU.

For firmware version 1.0.3 and above (2008 onwards),  the "Turn Off reception of MIDI notes and controllers" command described above clears the Run/Stop output from the MIDI In system.  This does not turn off reception of MIDI Sync in general.  Its main purpose is for the following scenario:  

The Devil Fish's Internal Sequencer is being driven by MIDI Sync and a song is playing.  This means a Start byte has been received and clock bytes are being received regularly.  Now the lead is disconnected.  As expected, the MIDI In system gets no Stop byte, and so it holds its Run/Stop output high.  The Internal Sequencer continues playing, from the internal Tempo oscillator.  Assuming you don't want this to occur, the most likely thing which will happen next is that you will press the Run/Stop button a few times trying to turn off the Run LED.  However, the MIDI In system keeps it on, and the sequencer running (and any slave devices via the Sync Lead) since it hasn't yet received a Stop byte.

With firmware versions 1.0.2 and earlier, the two ways out of this were to either turn off the machine and turn it on again, or re-insert the MIDI lead and send a Stop byte.  With firmware versions 1.0.3 and later, the MIDI In system will drop its Run/Stop signal when the "Turn Off reception of MIDI notes and controllers" operation is performed.


6 - Advanced use of the Sync-MIDI socket

Isolation of MIDI Pin 2
The TB-303's Sync socket uses Pin 2 (centre) for ground.  Normally this pin is not connected to anything on MIDI In sockets. It is always connected to ground on MIDI Out sockets for the purpose of grounding the shield of the cable. 

The MIDI data lines (Pins 4 and 5 - on either side of the centre pin) drive the MIDI In device via an opto-isolator, to avoid problems with ground loops, which can cause background hum etc.  Having a non-connection for Pin 2 means there is no electrical connection between the MIDI Out device and the MIDI In device. 

With the TB-303 / Devil Fish with MIDI In, there will be no such electrical isolation between devices, so there could be some electrical noise, particularly if the driving device is a personal computer, which are notorious for generating electrical noise.  A workaround is to use a special lead with the centre pin cut off, or disconnected, at the TB-303 / Devil Fish end.

MIDI In whilst still using the internal Tempo Clock and Run/Stop
If a MIDI lead's plug was modified so as to cut away the metal of the shell where the locating ridge is (the top of the shell when it is plugged into the TB-303 / Devil Fish) then MIDI information can be sent to the MIDI In system without activating the Sync socket switch which disconnects the internal Tempo Clock oscillator (controlled by the Tempo knob) and the internal Run/Stop flip-flop (controlled by the Run/Stop button). 

This would enable MIDI control of Note, Gate, Slide, Accent and Filter Frequency via MIDI while the TB-303's internal sequencer is operating from its internal Tempo Clock oscillator.  It would also be possible to play notes - but this would take control of the TB-303's DAC away from the TB-303's CPU.  Then, only the TB-303 CPU's Gate would affect the synthesiser. 

It would also be possible to receive MIDI Sync in this mode, but the results are likely to be confused.  The final Run/Stop (to the Sync socket and the TB-303's CPU) would be the TB-303's Run/Stop ORed with that of the MIDI In system.  Likewise, the final Clock would be an OR of the internal Tempo Clock and whatever was generated by the MIDI In system in response to MIDI Clock commands.  In principle, there might be some use for such an arrangement - but it would result in erratic timing for the TB-303's internal sequencer. 

One potential use might be to use Start and Stop - without any Clock commands, which most sequencers would normally generate - via MIDI purely to start and stop the TB-303's internal sequencer, with its tempo being controlled manually with the Tempo knob.

Receiving MIDI Sync and driving external devices
With an external box, or a special lead, it is possible to achieve the following:
  1. A separate MIDI In socket, which connects only pins 4 and 5 to the TB-303 / Devil Fish's Sync/MIDI socket.  This solves any ground noise problems created by the MIDI Out device. 

  2. One or more sockets or 5 pin DIN plugs which take the pins 1, 2 and 3 (Run/Stop, Ground and Clock) signals from the Sync socket to one or more other devices.
Since one Sync output device can drive practically any number of Sync input devices - a dozen or a hundred, it depends on their input impedance - and since there is no need for electrical shielding of these cables, or concern about their length (tens or hundreds of metres should be fine), a suitable box with sockets, or flying leads, could be created to extend the usefulness of the MIDI In system.

I can supply such a lead:
Please see the page: ../sync-lead/  .

7 - Firmware version history


8 - Document history