[Search for users] [Overall Top Noters] [List of all Conferences] [Download this site]

Conference napalm::commusic_v1

Title:* * Computer Music, MIDI, and Related Topics * *
Notice:Conference has been write-locked. Use new version.
Moderator:DYPSS1::SCHAFER
Created:Thu Feb 20 1986
Last Modified:Mon Aug 29 1994
Last Successful Update:Fri Jun 06 1997
Number of topics:2852
Total number of notes:33157

339.0. "Memory Layout of Roland TR707/TR727 Drum Machines" by RSTS32::DBMILLER (Cecil B. D'Miller) Wed Apr 30 1986 17:51

    Are there any TR707/TR727 owners out there who have looked at
    how the machine's memory is stored?  I've gotten the machine
    to dump it's memory for me, but it's rather useless without
    some type of spec sheet to tell me what's what.  Unfortunately,
    I don't have the time to change one thing, dump the data, check
    for differences, change something else, etc.
    
    Any help is appreciated.
    
    -Dave
T.RTitleUserPersonal
Name
DateLines
339.1How'd Ya Do It?ERLANG::FEHSKENSWed Apr 30 1986 21:044
    How'd you get it to dump its memory?
    
    len.
    
339.2I did it "My Way"RSTS32::DBMILLERCecil B. D'MillerWed Apr 30 1986 21:2518
    
    Out the MIDI port.  Used the Atari 130XE computer I got from
    Hyrid Arts with their MIDImate controller.  Got some I/O
    routines to work that enabled me to perform transmits and
    receives with a few USR calls from BASIC, and Voila!
    
    Through the system exclusive function of MIDI, you can get the
    machine to send you its data.  It sends it it 15 pieces, with
    each piece containing 256 bytes of data, for a total of a little
    under 4Kb.  No wonder the ROM pack gives you two extra banks of
    memory - it's a 64 kilo-bit cartridge, which is 8Kb.
    
    I went through a calculation of what I thought would be the
    amount of memory needed to store what it does, and came up
    with a little under 4Kb.  Now it's just a matter of which bits
    do what.
    
    -Dave
339.3keep us postedBIGALO::BOTTOM_DAVIDThu May 01 1986 12:594
    Dave, if you get this figured out please post back to this note.
    I'd be interested in manipualting my 707 at some future date.
    
    dave
339.4RTFMDSSDEV::SAUTERJohn SauterThu May 01 1986 15:144
    I would expect the machine's documentation to explain what
    the system exclusive messages mean.  All the stuff I have
    explains its messages in gory detail.
        John Sauter
339.5Roland Usually Tells All\ERLANG::FEHSKENSThu May 01 1986 17:0812
    I'll check my 707 documentation.  Roland usually provides 
    comprehensive MIDI documentation in the form of a photoreduced
    computer-output listing, and this includes system exclusive stuff.
    I've never looked at the one for the 707 in any detail.  Dave,
    if you've misplaced yours you can have a copy of mine.  Send mail
    to the usual suspects.
    
    I'll let you know what I find tomorrow.
    
    len.
    
    
339.6Not enough documentationRSTS32::DBMILLERCecil B. D'MillerThu May 01 1986 17:1220
    I did read the manual.  That's how I got it to dump it's memory.
    Unfortunately they don't give any more details than the fact that
    there's 15 blocks of data.
    
    If I get some time, I'll do a little more experimenting with it.
    But the first thing I need to do is convert the BASIC program at
    least partially into machine language.  As it stands, it's just
    as slow as the tape port, since I do integrity checking on all
    the data it sends me - and loops in Atari BASIC, plus all the
    string manipulation I'm doing takes a long time.
    
    Once the data dump is faster, then I might feel like sitting down
    and adding a beat to each pattern, and seeing where the bit shows
    up, then assigning different patterns to different measures, etc.
    
    I remember in College, staying up all night trying to decode the
    map database for a DND game.  I used to enjoy that stuff, and didn't
    mind taking the time to try and do it.  Ah, for the 'old' days.
    
    -Dave
339.7Roland Drops the Ball This Time!ERLANG::FEHSKENSFri May 02 1986 17:1710
    You're right, that's what I found too.  Have you considered calling
    Roland?  I was sure the documentation would spell it out as, the
    equivalent documentation for my Juno 106 and MKS-80 does.  Does
    this mean (once somebody figures out what the bits mean) that I
    can load my TR-707 from my Amiga?  And store all my drum parts on
    disk instead of tape?
    
    len.
    
    
339.8It's not necessaryRSTS32::DBMILLERCecil B. D'MillerFri May 02 1986 19:0127
    You don't need to know what the bits mean to be able to save
    the drum parts onto disk instead of tape.  I just want to be
    able to verify that the data I'm intended to save onto disk
    is indeed correct.  I could assume that it is, since I have
    dumped out the patches for a Korg DW-6000, and verified them
    using the bit-map sheet supplied by Korg.  This tells me that
    there's nothing major wrong with my I/O routines.  There also
    is a checksum for each block of data the machine sends, and
    that verifies, along with the integrity checks I'm doing.
    
    Once I speed up the BASIC program, and I haven't quite figured
    out the best approach - I don't have an assembler, so programming
    completely in 6502 processor is at best difficult.  If there
    was an integer version of Atari BASIC, like Apple has, then it
    would probably speed things up immensely.  Anyways, once I
    speed up the program, it will be worth my while to save drum
    parts to disk instead of tape.  But there's an even better
    reason for knowing what the memory layout is...
    
    It seems that one of the worst things about trying to program a
    drum machine is that the limited displays only show you one bar
    at a time.  Imagine seeing eight, sixteen, or even more bar
    displayed on a screen at one time!  Plus the 'real' ability to
    perform editing on a song and see what you're doing.  It would
    sure beat scratching it out on a piece of paper!
    
    It's a long term goal, but one I'd like to take a crack at.
339.9I Didn't Say EnoughERLANG::FEHSKENSFri May 02 1986 20:146
    Right, that's what I really want to do.  Saving sequences to disk
    is not as important as being able to sequence and edit throught
    the Amiga.
    
    len.
    
339.10RE: Calling RolandRSTS32::DBMILLERCecil B. D'MillerFri May 02 1986 21:1016
    Does anyone have a phone number, or address for Roland?
    
    Are they reasonable people to talk to, ie, helpful, located
    in a US office, and understand English?  I've never had any
    experience with companies like them before, so I have no
    idea of what to expect should I try and call.
    
    RE: Sequence and editing through a computer - I figure if
    somebody does it, then it's a very sellable product in the
    music/computer world.  I've got a very simple screen laid
    out that will accommodate all the small computers with a
    40 column screen, and still display enough information to
    tell you everything you need to know.  I definitely need
    to pick up a good language cartridge for that XE.
    
    -Dave
339.11Roland doesn't answerDSSDEV::SAUTERJohn SauterMon May 05 1986 11:366
    Roland has a U.S. address.  I don't remember it, but it's near
    Los Angeles--it's printed on all of their literature and advertising.
    I wrote a letter to that address many months ago, but never got
    a reply.  I suspect nobody with any intelligence lives there--probably
    all the brains are in Japan.
        John Sauter
339.12good luck with rolandMTBLUE::BOTTOM_DAVIDMon May 05 1986 14:3014
    Well here is Roland's phone number (213)685-5141.
    
    RE:-1 No sh*t Roland does not answer, it took me nearly four months
    to get the patch tape I ordered from them, they never answered any
    of my letters inquiring about it. They did ship when I finally called
    them up. From the conversation I had I think they may be a one person
    operation......any way the receptionist (person on the phone) said
    "I'll ship it today". Hmmm....
    
    I was unable to get technical answers to another question I had
    so it's your dime....
    
    
    dave
339.13Thanks for the help, but...RSTS32::DBMILLERCecil B. D'MillerTue May 06 1986 17:2218
    Looks like I'm better off speeding up my I/O routine so
    that I can figure it out for myself.  It shouldn't be too
    bad - Most everything will be a simple case of a bit being
    on or off, there are some weird things that have a three-
    state position, but I imagine those are just two-bits, with
    the fourth option never used.
    
    The hardest part will be to figure out how the four drum
    tracks are stored in memory - There isn't enough room for
    it to be a linked list for each track, and there is a TOTAL
    limit of 998 measures, so I'm going to assume that tracks
    are stored sequentially, with the next track starting after
    the last bar of the previous track.  Things like scale, last
    step, flam, and shuffle will probably require a little more
    work to be able to pin-point, but all those will be pattern
    specific, so there will be a small area of bits to work with.
    
    -Dave
339.14I may Be Able to ask a Roland Field RepERLANG::FEHSKENSTue May 06 1986 17:376
    My buddies at Wurlitzer tell me the Roland rep will be in town some
    time in the next few weeks, and they've promised to "give me access
    to him".  I'll ask if he can help some way.
    
    len.
    
339.15Check with the rep, please! But...RSTS32::DBMILLERCecil B. D'MillerSat May 10 1986 18:1024
Well, I took a day to try and speed up the routines.  Found the
major culprit to be the integrity check routine as I expected.
Once I converted it from Atari BASIC to 6502 machine code, it
took about 10 seconds to transfer memory from the drum machine
to the Atari's RAM.  That's a lot faster than the two minutes
it was taking before!  It still takes the Atari drive about
one minute to write the data to disk, but I can live with that.

Anyways, once I got that working, I started messing with the
patterns to determine where everything is.  I think I have it
all mapped out now.  There's some areas that appear to be unused
and have zeroes in them, and then there's two bytes that I can't
get changed, but have non-zero values.  I can't figure out what
they're for.  Everything else laid out a lot like I expected,
with a few variations here and there.

I would like to verify that I'm correct somehow, and haven't left
anything out, so if the Roland rep can help, I sure would appreciate
it.

I can post it here, if there's enough interest, or I can type it in
and just send a copy to whoever wants one.

-Dave
339.16Here it isRSTS32::DBMILLERCecil B. D'MillerMon May 19 1986 19:18202
I decided it was all that big, and could be posted here.  If anyone
doesn't want to read the note, you can "Next unseen" past it.

First, a brief review of the TR707/TR727 for those interested, but
who do not own either machine.

The Rhythm Composers have the following sounds:

    (Abbreviations are given for the TR707, these names
     will be used in the memory layout)

	TR707					TR727
  1) Bass Drum 1	(BD1)		 1) Hi Bonga
  2) Bass Drum 2	(BD2)		 2) Lo Bonga
  3) Snare Drum 1	(S1)		 3) Mute Hi Conga
  4) Snare Drum 2	(S2)		 4) Open Hi Conga
  5) Low Tom		(LT)		 5) Low Conga
  6) Middle Tom		(MT)		 6) Hi Timbale
  7) Hi Tom		(HT)		 7) Low Timbale
  8) Rim Shot		(RS)		 8) Hi Agogo
  9) Cow Bell		(CB)		 9) Low Agogo
 10) Hand Clap		(HC)		10) Cabasa
 11) Tambourine		(TB)		11) Maracas
 12) Closed Hi-Hat	(CH)		12) Short Whistle
 13) Open Hi-Hat	(OH)		13) Long Whistle
 14) Crash Cymbal	(CR)		14) Quijada
 15) Ride Cymbal	(RI)		15) Star Chime

Certain pairs of sounds are mutually exclusive, ie, they cannot both be played
at the same time.  These are sounds 1 & 2, 3 & 4, 8 & 9, 10 & 11, and 12 & 13.

There are four pattern groups, A through D, with 16 patterns in each group.

Each pattern has sixteen steps and is usually equivalent to one measure.

Two different accent levels (One weaker [WA], the other stronger [SA]) can
be placed on any step in a pattern, and a shuffle beat may be set.

Flam can be added to any step of sounds 7, 8, 9, or 4.  The machine can be
set to allow flam on sound 3 instead of 4, but this must be set every time
the machine is powered on, and changed back if the other voice is desired.

The amount of flam or shuffle is changable per pattern. 

Each pattern also has four different time scales, and a last step to set
different time signatures.  Patterns may be chained together to get more
complicated time signatures.

There are four separate tracks, which can contain up to a total of 998 measures.

With the above in mind, here is the memory layout for the TR707, with the
TR727 being just substitutions for the sound names:

DISCLAIMER:  This memory layout is made from trial and error, and
             comparing one configuration against another with known
             differences.  Although every attempt was made to be as
             accurate as possible and to include all possible items
             that could be changed, I may be incorrect or have left
             something out.  Please don't begrudge any mistakes.

  \Bit|     |     |     |     |     |     |     |     |
   \  |  7  |  6  |  5  |  4  |  3  |  2  |  1  |  0  |     Comments
Byte\ |     |     |     |     |     |     |     |     |
------+-----+-----+-----+-----+-----+-----+-----+-----|-------------------------
    1 | HC  | RS  | CH  | HT  | MT  | LT  |S1(e)| BD1 | Pattern A1, step 1
------+-----+-----+-----+-----+-----+-----+-----+-----|-------------------------
    2 |  "  |  "  |  "  |  "  |  "  |  "  |  "  |  "  | Pattern A1, step 2
------+-----+-----+-----+-----+-----+-----+-----+-----|-------------------------
    3 |                       .                       |    .
    : |                       .                       |    .
   15 |                       .                       |    .
------+-----+-----+-----+-----+-----+-----+-----+-----|-------------------------
   16 |  "  |  "  |  "  |  "  |  "  |  "  |  "  |  "  | Pattern A1, step 16
------+-----+-----+-----+-----+-----+-----+-----+-----|-------------------------
   17 |  "  |  "  |  "  |  "  |  "  |  "  |  "  |  "  | Pattern A2, step 1
------+-----+-----+-----+-----+-----+-----+-----+-----|-------------------------
   18 |                       .                       |    .
    : |                       .                       |    .
  255 |                       .                       |    .
------+-----+-----+-----+-----+-----+-----+-----+-----|-------------------------
  256 |  "  |  "  |  "  |  "  |  "  |  "  |  "  |  "  | Pattern A16, step 16
------+-----+-----+-----+-----+-----+-----+-----+-----|-------------------------
  257 | TB  | CB  | OH  |HT(f)|MT(f)|LT(f)|S2(e)| BD2 | Pattern A1, step 1
------+-----+-----+-----+-----+-----+-----+-----+-----|-------------------------
  258 |                       .                       |    .
    : |                       .                       |    .
  511 |                       .                       |    .
------+-----+-----+-----+-----+-----+-----+-----+-----|-------------------------
  512 |  "  |  "  |  "  |  "  |  "  |  "  |  "  |  "  | Pattern A16, step 16
------+-----+-----+-----+-----+-----+-----+-----+-----|-------------------------
  513 | HC  | RS  | CH  | HT  | MT  | LT  |S1(e)| BD1 | Pattern B1, step 1
------+-----+-----+-----+-----+-----+-----+-----+-----|-------------------------
  514 |                       .                       |    .
    : |                       .                       |    .
  515 |                       .                       |    .
------+-----+-----+-----+-----+-----+-----+-----+-----|-------------------------
 2048 | TB  | CB  | OH  |HT(f)|MT(f)|LT(f)|S2(e)| BD2 | Pattern D16, step 16
------+-----+-----+-----+-----+-----+-----+-----+-----|-------------------------
 2049 |RI(c)|CR(c)|SA(c)|WA(c)|RI(a)|CR(a)|SA(a)|WA(a)| Pattern {AC}1, step 1
------+-----+-----+-----+-----+-----+-----+-----+-----|-------------------------
 2050 |                       .                       |    .
    : |                       .                       |    .
 2303 |                       .                       |    .
------+-----+-----+-----+-----+-----+-----+-----+-----|-------------------------
 2304 |  "  |  "  |  "  |  "  |  "  |  "  |  "  |  "  | Pattern {AC}16, step 16
------+-----+-----+-----+-----+-----+-----+-----+-----|-------------------------
 2305 |RI(d)|CR(d)|SA(d)|WA(d)|RI(b)|CR(b)|SA(b)|WA(b)| Pattern {BD}1, step 1
------+-----+-----+-----+-----+-----+-----+-----+-----|-------------------------
 2306 |                       .                       |    .
    : |                       .                       |    .
 2561 |                       .                       |    .
------+-----+-----+-----+-----+-----+-----+-----+-----|-------------------------
 2560 |  "  |  "  |  "  |  "  |  "  |  "  |  "  |  "  | Pattern {BD}16, step 16
------+-----+-----+-----+-----+-----+-----+-----+-----|-------------------------

------+-----------+-----------+-----------------------|-------------------------
 2561 | Unused??? | Ptn Group |    Pattern number     | Absolute measure 1
------+-----------+-----------+-----------------------|-------------------------
 2562 |     "     |     "     |           "           | Absolute measure 2
------+-----------+-----------+-----------------------|-------------------------
 2563 |                       .                       |    .
    : |                       .                       |    .
 3557 |                       .                       |    .
------+-----------+-----------+-----------------------|-------------------------
 3558 |     "     |     "     |           "           | Absolute measure 998
------+-----------+-----------+-----------------------|-------------------------
 3559 |                      MSB                      | Last Measure, TRK I
------+-----------------------------------------------|-------------------------
 3560 |                      LSB                      | Last Measure, TRK I
------+-----------------------------------------------|-------------------------
 3561 |                      MSB                      | Last Measure, TRKs I-II
------+-----------------------------------------------|-------------------------
 3562 |                      LSB                      | Last Measure, TRKs I-II
------+-----------------------------------------------|-------------------------
 3563 |                      MSB                      | Last Measure, TRKs I-III
------+-----------------------------------------------|-------------------------
 3564 |                      LSB                      | Last Measure, TRKs I-III
------+-----------------------------------------------|-------------------------
 3565 |                      MSB                      | Last Measure, TRKs I-IV
------+-----------------------------------------------|-------------------------
 3566 |                      LSB                      | Last Measure, TRKs I-IV
------+-----------------------------------------------|-------------------------
 3567 |                       .                       |
    : |                       .                       | Unused??????????????
 3574 |                       .                       |
------+-----------------------------------------------|-------------------------
 3575 |                      112                      | Unknown Meaning
------+-----------------------------------------------|-------------------------
 3576 |                      122                      | Unknown Meaning
------+-----------------------------------------------|-------------------------
 3577 |                       .                       |
    : |                       .                       | Unused??????????????
 3648 |                       .                       |
------+-----------------------+-----------------------|-------------------------

------+-----+-----+-----------+-----------------------|-------------------------
 3649 |     |Chain|   Scale   |       Last Step       | Pattern A1
------+-----+-----+-----------+-----------------------|-------------------------
 3650 |     "     |     "     |           "           | Pattern A2
------+-----+-----+-----------+-----------------------|-------------------------
 3651 |                       .                       |    .
    : |                       .                       |    .
 3711 |                       .                       |    .
------+-----+-----+-----------+-----------------------|-------------------------
 3712 |     "     |     "     |           "           | Pattern A16
------+-----------+-----------+-----------------------|-------------------------
 3713 |        Shuffle        |         Flam          | Pattern A1
------+-----------------------+-----------------------|-------------------------
 3714 |           "           |           "           | Pattern A2
------+-----------------------+-----------------------|-------------------------
 3715 |                       .                       |    .
    : |                       .                       |    .
 3775 |                       .                       |    .
------+-----------------------+-----------------------|-------------------------
 3776 |           "           |           "           | Pattern A16
------+-----------------------+-----------------------|-------------------------
 3777 |                       .                       |
    : |                       .                       | Unused??????????????
 3840 |                       .                       |
--------------------------------------------------------------------------------

Notes:	(a) Low four bits of this byte are for pattern group A
	(b) Low four bits of this byte are for pattern group B
	(c) Hi four bits of this byte are for pattern group C
	(d) Hi four bits of this byte are for pattern group D
	(e) If both bits are set for sound #4 (Snare or Conga)
	    then the currently select flam voice is used.
	(f) These bits mean nothing by themselves.  If the other
	    bit for this voice is also set then the voice is flammed.

	Scale:
		0 -> 1 step = 16th note
		1 -> 1 step = 32nd note
		2 -> 1 step = triplet 8th note
		3 -> 1 step = triplet 16th note

	Shuffle/Flam:
		 0 = Off
		 8 = Short shuffle/flam
		 9 = Medium shuffle/flam
		10 = Large shuffle/flam
		11 = Largest shuffle/flam