Real World Interfaces logo

Devil Fish with 32 Memory Banks


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

This description is also for the TR-606 32 bank memory system.
Please refer to the TR-606 mods page for more information.

© Robin Whittle, Real World Interfaces  rw@firstpr.com.au  15 April 2000

 
 

Overall description

 
This is an additional modification I can install in a Devil Fish modified TB-303.

It provides 32 times the normal memory of the TB-303 – with the ability to switch from one bank to another while a pattern is playing.  This enables changes to the notes played by the sequencer on a note-by-note basis, in contrast to the usual arrangement by which the sequencer finishes one pattern before starting the next.

In the discussion which follows, the term "bank" refers to the total memory of a TB-303:

The system selects between the 32 banks with the position of five toggleswitches.  There are 32 combinations of these five switches being either up or down.  Four of the switches are in a horizontal row.  The fifth is below them, and is associated with a push-button switch which reverses its function. The purpose of the push-button switch is to provide a convenient instantaneous means of switching banks.

There is no labelling of the switches.  Nor is there an particular numbering system for the banks.  Using a binary number system, the banks could be numbered as follows.  "v" and "^" refer to down and up states of the five switches.  For instance the photograph above shows the switches set for bank 6.

Switches   Bank number      Switches Bank number
 4 3210                     4 3210 

 v vvvv    0                ^ vvvv   16
 v vvv^    1                ^ vvv^   17
 v vv^v    2                ^ vv^v   18
 v vv^^    3                ^ vv^^   19
 v v^vv    4                ^ v^vv   20
 v v^v^    5                ^ v^v^   21
 v v^^v    6                ^ v^^v   22
 v v^^^    7                ^ v^^^   23

 v ^vvv    8                ^ ^vvv   24
 v ^vv^    9                ^ ^vv^   25
 v ^v^v   10                ^ ^v^v   26
 v ^v^^   11                ^ ^v^^   27
 v ^^vv   12                ^ ^^vv   28
 v ^^v^   13                ^ ^^v^   29
 v ^^^v   14                ^ ^^^v   30
 v ^^^^   15                ^ ^^^^   31
For the fifth switch (labelled 4 in the table above), the state ^is achieved with either:

1 - The toggleswitch up and the button not pressed.
     or
2 - The toggleswitch down and the button pressed.


Use in Pattern Play Mode

If there is no need to switch banks while a pattern is playing, then operation is straightforward.  Simply select the desired memory bank with the toggleswitches and use the machine normally.

Switching banks while the sequencer is playing patterns enables the creation in real-time of novel combinations of notes.  For instance the first half of a pattern in bank 8 could be played, and then by moving the right switch to the up position, the rest of the notes in that bar of music will come from a pattern in bank 9.

Each pattern contains the following information:

The sequencer is a single-chip mask-programmed CPU connected to what is normally a single bank of memory.  With the 32 bank modification, there are actually 32 banks of memory, and the CPU accesses whichever one is currently selected by the toggleswitches. (The switches are de-bounced, so there are no messy transitions between banks.)

When the machine starts playing a pattern, it reads the length and pre-scale and stores these values in the CPU's internal RAM.  When it comes to play each note, the CPU reads the external memory just before playing each note.

Therefore, by switching to another bank of memory in the middle of a pattern, the sequencer will play subsequent notes from the new memory bank.  Switching will not change the note currently being played.  It affects all subsequent notes.

Here is a concrete example.  The memory switches are set to ^ vv^v which is Bank 18.  You start the sequencer playing Pattern 5B in Pattern Group III. Let's call this "Pattern III-5B". You let the sequencer play this pattern several times and then in the middle of the pattern, while note 4 is playing, you either lower the fifth toggleswitch ("4" in the above chart) or press the pushbutton.  Either action has the same effect of making the fifth switch function as a "low".  So the bank is now v vv^v – Bank 2.  As the CPU prepares to play the fifth note, it reads from memory, but instead of reading Note 5 of Bank 18's Pattern III-5B, it reads Note 5 of Bank 2's Pattern III-5B.  So the pitch, accent and slide will vary as you switch banks, but the CPU will take no notice of the lengths and pre-scales of any of the patterns it is playing.

It is not recommended to switch banks whilst in Pattern Write mode!
 
 

Use in Track Play Mode

When I first began modifying TB-303s, TR-606s and TR-808s in 1981/82 , it was to install multiple memory banks.  The application was to store more patterns and tracks so the users could use the machines to accompany them on guitar, vocals, keyboards etc.  Some of these musicians had repertoires of hundreds of songs!  In those systems I used push-button switches, counters LEDs and/or 7 segment figure-8 LED displays to control and display the current bank number.  The memory system was designed to reset the CPU whenever the bank was changed. Therefore changing from bank 23 to bank 13 was like turning off one drum-machine or Bassline and turning on another.  This was necessary, since there were certain items of data in the Track memory which was only read when the CPU ran its initialisation routines after being reset.  (In the case of the TR-808, I made this reset circuit disableable to allow for live switching between banks in Pattern Play mode.)

Without this automatic reset circuit, there was a grave danger of the user changing banks whilst the CPU was running, and so causing it to become confused – particularly in regard to the starting and ending points of tracks.

Now that the primary use of the TB-303 / Devil Fish is real-time manipulation rather than playing set tracks reliably, I have totally changed the memory control system.  The new system has no automatic reset circuitry at all.

This toggleswitch and push-button arrangement is elegant, flexible and reliable.  However, if you are using Track Play mode and you switch banks whilst the machine is turned on, then it is quite likely that the CPU will become confused.

If you are using Track Play Mode, do not change banks while the machine is turned on. If you accidentally do so, turn the machine off and on again so that the CPU reads in crucial data from the current bank.

Unless you want to create unpredictable scrambles in the track memory, never change bank while you are in Track Write mode!
 

Data retention and other details

This modification involves removing the existing memory chips and installing a much larger capacity memory system.  Therefore it is not possible to retain the machine's memory data.  Apart from a few test patterns I write into it, the modified machine will contain erratic data, so be sure to clear each track before you start writing.

I have observed the TB-303's sequencer do some strange things, apparently with errant data in the memory.  I don't recall exactly what these things are, how to create the situation or how to resolve it.  Such strange states of data in certain patterns cannot be ruled out in any TB-303, whether or not it has extra memory banks.

The current drawn by the memory system is still below 1uA, so all the statements in the release notes ../release.html about data retention, Lithium Battery voltage measurement and life, and clearing the memory apply to the new system.

The 32 bank memory system is covered by the same guarantee arrangements as the Devil Fish mods.

It is possible to create an 8 bank system as well, but it is almost as much work and so would cost only marginally less.

Note :  I have received reports from three users that the memory system may misbehave when the machine is running from batteries alone.  I have not been able to reproduce this.  The problem may be related to relatively high voltage fresh alkaline cells.  Perhaps it would also be a problem running from a power supply while high voltage batteries are installed.  Starting with serial number 081 (4 April 2000) I altered the battery supply arrangements for the 32 bank memory system to avoid potential problems when C-cell batteries are installed. This should solve the problem, but since I have been unable to reproduce it, I cannot be certain.  See discussion in the release notes ../release.html on known reliability problems.