[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The Net MD protocol specifies the details of the data exchange between the host and the Net MD compatible audio device. This protocol was developed by Sony (Sony is a registered trademark of the Sony Corporation), and proprietary. There is no public information on this protocol provided by Sony. This appendix summarizes what is known about this protocol from reverse engineering efforts.
Many commands, especially those used by prorietary software with Net MD support, are known. Some more commands are known to exist, but we don't know how they look like. Some other features seem desirable, but we don't know if they are available at all in the firmware or even hardware of the audio devices we use.
Of those commands we do know, we understand little about the semantic meaning of each byte. Some patterns reoccur, and lead themselve to a certain interpretation, but there is no homogenous and simple interpretation of all data transfered. Sometimes we don't even know what a certain command does, just that it is used by some proprietary software and/or that it is accepted by the player.
Please note that not all variations of each command has been tested on each audio device. If you notice that your Net MD compliant audio device behaves different than described here, we would like to learn about it.
All numbers in this paragraph are hexadecimal, and typesetted like
this: 00
, a2
, cf
, 3b
.
A.1 Transferring Data Using USB to transfer data. A.2 Command Syntax The structure of a command request. A.3 Commands The available commands.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The USB port of a Net MD audio device provides one interface (class 255, subclass 0, protocol 0) and three endpoints.
FIXME More information about the USB communication: Vendor request, polling, etc. Help appreciated!
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
A.2.1 Basic Syntax Rules Some general information about form. A.2.2 Backward Compatibility How to test for features. A.2.3 Data Types How to pass various information. A.2.4 Return Status How to tell if a command succeeded.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Every request starts with the byte 00
, which is also a
placeholder for the return status.
The second byte of every request is 18
. The meaning is unknown
(someone suggested it is a peripheral index(?)).
The third byte specifies the command or group of commands.
What follows next is different for each command. Most commands seem to belong to one of two different categories, though, and follow one of the following two patterns:
ff
, then a byte that specifies a sub-command (usually
00
or 01
), then 00
, optionally followed by one or
more arguments to the command. For example, 00 18 40 ff 00 00
erases the entire data medium while 00 18 40 ff 01 00 20 10 01
00 01
erases only the second track. Sometimes more than one padding
00
follow the sub-command byte.
Such commands usually don't return any data except the status return
code. If successful, the ff
is set to 00
in the reply.
ff
, followed by 00 00 00 00 00
. Sometimes instead five
times 00
, some bytes are already set up as required for the
reply.
Such commands usually return one or more bytes of data beside the
status return code. If successful, the ff
is set to 10
,
and the word after the following byte contains the length of the
returned data. For example, 00 18 09 80 01 02 30 88 00 00 30 88
04 00 ff 00 00 00 00 00
might return 09 18 09 80 01 02 30 88 00
00 30 88 04 00 10 00 00 09 00 00 00 07 88 04 00 03 40 ff 40
. The
10 00 00 09
indicates that the returned additional data
00 07 88 04 00 03 40 ff 40
is nine bytes long.
Although many commands follow these patterns at least roughly, some
don't. For example, some commands take parameters before and after
the ff
byte. Because of the lack of a universal rule, each
command is defined separately, even though they sometimes share a lot
with other commands. We simply lack the semantic interpretation to
make a more unified approach feasible.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
If you don't want to actually perform a request, but only check if a
command is supported by the hardware, you can send the command with
the first byte being 02
instead 00
, and some dummy
parameters filled in.
If the device does not support the command, it will return the error
status code 08
. If it does support the command, it will return
the status code 0c
.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Commands and replies are transferred as byte streams. Data types that take up more than a single byte are stored in network byte order (big-endian, most significant byte first).
A.2.3.1 Track Numbers How track numbers are specified. A.2.3.2 Times How times are specified. A.2.3.3 Encodings How encodings are specified. A.2.3.4 Tags Generic data type identifiers.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Track numbers are two bytes long and zero-based. This means that the
first track is 00 00
, the second track is 00 01
and so
on.
Currently the mini disc format only supports up to 254 tracks. It
seems that the track 00 ff
is special and used to store
information about the disc, like the disc title. However, there is no
need to make use of this factoid and it is unknown what happens to
track 00 ff
when it becomes a valid track number.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Times are specified in the BCD (Binary Coded Decimal)
format.(1) It uses one
nibble (four bit) for each decimal digit. For example, decimal number
96
becomes the hexadecimal number 96
in BCD format. In
fact, the representation of a number is always the same in decimal and
hexadecimal BCD format.
The times specified in the NetMD protocol are four bytes long. The
first byte specifies the number of hours, the second the number of
minutes, the third the number of seconds, and the fourth byte the
number of frames. The time 110:43.12 (one hour, fifty minutes,
fourty-three seconds and twelve frames) would be encoded as 01
50 43 12
.
One frame is 512 ATRAC samples. With a sampling rate of 44.100 Hz this means that one second contains about 86.132812 frames.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The audio data format is specified by a single byte that contains
information about the codec (90
for SP, 92
for LP2 and
93
for LP4), followed by a byte that contains information about
the number of channels (this byte is 00
for stereo and
01
for mono). The following values are possible:
90 00
90 01
92 00
92 01
93 00
93 01
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
In the Net MD protocol some byte sequences occur systematically near a
parameter that has a specific meaning. For example, the track number
is often prefixed by 20 10 01 00
. In other cases, we can
conclude that certain bytes are length parameters that say how many
bytes follow. From this, we can make certain assumptions about the
meaning of certain byte sequences.
Please take this list with a grain of salt. There is not sufficient data to verify these assumptions, nor is the existing data strictly in line with them.
10 10 00
20 10 01 00 $t
30 00 10 00
30 00 0a 00
30 00 01 00
30 80 03 00
30 80 07 00
This table is not complete, and likely incorrect. We just don't know better. If you have some enlightnment when looking at the command sequences, share your ideas with us, and maybe we can improve the list.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
After sending the command, the Net MD device sends a reply. The reply is usually similar to the request, with some bytes altered and sometimes some bytes appended. The first byte indicates a status code:
08
09
0a
0c
02
).
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The commands are formatted to make the different arguments and their
interpretation more visible, but the formatting is not part of the
command of course. The arguments are prepended by a $
sign and
repeated as often as the number of bytes they occupate. For example,
a track number would be specified as $t $t
.
A.3.1 Device Commands Commands related to device control. A.3.2 Disc Commands Commands related to disk properties. A.3.3 Track Commands Commands related to track properties.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
A.3.1.1 Exclusive Login Setting up the connection. A.3.1.2 Get Disc Count Retrieving information about inserted discs. A.3.1.3 Get Disc Operating Mode Status Retrieving the operating mode. A.3.1.4 Get Play Counter Retrieve the current playback position. A.3.1.5 Get Recording Parameters Retrieving the recording parameters. A.3.1.6 Play Audio Set playback operating mode. A.3.1.7 Stop Play Stop playback. A.3.1.8 Set Play Counter By Track Set play counter to the beginning of a track. A.3.1.9 Set Play Counter By Time Set play counter within a track. A.3.1.10 Search Audio Track Set play counter to next or previous track.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
00 ff 01 0c ff ff ff ff ff ff ff ff ff ff ff ff
09 ff 01 0c ff ff ff ff ff ff ff ff ff ff ff ff
Request exclusive access to the device. This is used at the beginning of a session. It is not known how a conflict between two users is recognized.
After using the device, before shutting down the connection, the following command is used to end the session:
00 ff 01 00 ff ff ff ff ff ff ff ff ff ff ff ff
09 ff 01 00 ff ff ff ff ff ff ff ff ff ff ff ff
Give up exclusive access to the device.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
<00 18 09> 80 01 <02: 30 88 00 00, 30 88 04 00> ff 00 00 00 00 00
<09 18 09> 80 01 <02: 30 88 00 00, 30 88 04 00> 10 00 00 09 00
00 <00 07: 88 04 <00 03: $x ff 40>>
This function returns the number of discs present. On single-deck
players, $x
is 40
if a disc is present in the player,
and 80
if no disc is present.
Note: If the command fails, send 00 18 08 80 00 01 00
and try
one more time. We don't know what that means, though.
Note: Are there any Net MD capable multi-deck players out there? If yes, what does this command do with these?
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
<00 18 09> 80 01 <03: 30 88 02 00, 30 88 05 00, 30 88 06 00> ff
00 00 00 00 00
<09 18 09> 80 01 <03: 30 88 02 00, 30 88 05 00, 30 88 06 00> ff
10 00 00 08 00 00 <00 06: 88 06 <00 02: $x $y>>
This function returns the disc operating mode status. The bytes
$x $y
indicate the status as specified in the following table:
56 ff
c2 75
c2 7d
c3 3f
c3 4f
c3 75
c3 7d
c5 ff
Note: If the command fails, send 00 18 08 80 00 01 00
and try
one more time. We don't know what that means, though.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
<00 18 09> 80 01 <04: 30 88 02 00, 30 88 05 00, 30 00 03 00, 30
00 02 00> ff 00 00 00 00 00
<09 18 09> 80 01 <04: 30 88 02 00, 30 88 05 00, 30 00 03 00, 30
00 02 00> 10 00 00 0d 00 00 <00 0b: 00 02 <00 07: 00 $t $t $h $m $s $f>>
This function returns the current playback position. The current
position is in track $t $t
, at the time specified by
$h
:$m
:$s
:$f
. $h
is the hours,
$m
the minutes, $s
the seconds, and $f
the frames
within the track. $h
, $m
, $s
and $f
are
in BCD format.
Note: If the command fails, send 00 18 08 80 00 01 00
and try
one more time. We don't know what that means, though.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
<00 18 08> 80 00 01 00
<00 18 09> 80 01 <03: 30 88 01 00, 30 88 05 00, 30 88 07 00> ff
00 00 00 00 00
<00 18 08> 80 00 00 00
<09 18 08> 80 00 01 00
<09 18 09> 80 01 <03: 30 88 01 00, 30 88 05 00, 30 88 07 00> 10
00 00 0e 00 00 <00 0c: 88 05 <00 08: 80 e0 01 10 $e $m 40 00>>
<09 18 08> 80 00 00 00
This function returns the current active recording parameters. These
parameters affect how the Get Disc Capacity function returns the
available disk size. $e $m
is the encoding (see Data Types)
that is used for recording.
Note: We don't know what the embracing commands mean.
Note: The 40 00
also has a meaning and might be variable, but
we don't know more about it.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
<00 18 c3> ff $a 00 00 00
<09 18 c3> ff $a 00 00 00
This fuction controls the playback operation. The meaning of $a is described in the following table:
39
49
75
7d
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
<00 18 c5> ff 00 00 00 00
<09 18 c5> ff 00 00 00 00
This fuction stops playback and resets the playback status.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
<00 18 50> ff 01 00 00 00 00 $t $t
<09 18 50> 00 01 00 00 00 00 $t $t
This fuction sets the current playback position to the beginning of
track $t $t
.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
<00 18 50> ff 00 00 00 00 00 $t $t $h $m $s $f
<09 18 50> 00 00 00 00 00 00 $t $t $h $m $s $f
This fuction sets the current playback position to the time $h
$m $s $f
from the beginning of track $t $t
.
The actual position will be at the nearest frame that can be positioned by the hardware.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
<00 18 50> ff 10 00 00 00 00 $u $v
<09 18 50> 00 10 00 00 00 00 $u $v
This fuction sets the current playback position relativ to the current
playback position, according to $u $v
. Possible values for
$u $v
are listed in the following table:
00 01
00 02
80 01
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
A.3.2.1 Get Disc Title Retrieve the title of the disc. A.3.2.2 Get Disc Flags Retrieving the disc flags. A.3.2.3 Get Disc Capacity Retrieve disc size and available space. A.3.2.4 Set Disc Title Set the title of a disc. A.3.2.5 Get Track Count Retrieve the number of tracks on the disc. A.3.2.6 Erase Disc Turn a disc into a blank disc.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
00 18 08 10 18 01 01 00
<00 18 06> <02: 20 18 01 00 $w, 30 00 0a 00> ff 00 00 00 00 00
[<00 18 06> <02: 20 18 01 00 $w, 30 00 0a 00> ff 00 $r $r $g $g
...]
00 18 08 10 18 01 00 00
09 18 08 10 18 01 01 00
<09 18 06> <02: 20 18 01 00 $w, 30 00 0a 00> 10 00 $l3 $l3 00 00
<$l2 $l2: 00 0a <$l $l: <data1>
[<09 18 06> <02: 20 18 01 00 $w, 30 00 0a 00> 10 00 $l4 $l4 $g $g
<data2>
...]
09 18 08 10 18 01 00 00
This function returns the disc title. However, the full title might be up to 1793 bytes long, and not fit into a single reply. For this reason, you might have to request the whole title in chunks.
The initial reply contains the size of the first chunk of the
additional data returned into $l3 $l3
. The length of the whole
title is returned in $l1 $l1
(while $l2 $l2
is usually
$l1 $l1
plus 4 for the type tag 00 0a
and title length
parameter). <data1>
is the title or the initial part of the
title and $l3 l3
minus 6 bytes long. If the whole title could
be returned at once, $l3 $l3
will be $l1 $l1
plus 6, and
thus $l1 $l1
is also the length of <data1>
.
If $l3 $l3
was shorter than $l1 $l1
plus 6, you will
have to request the next part of the title with the second form of the
command. This form takes two additional length parameters. $r
$r
indicates the number of bytes you still have to read, while
$g $g
indicates the number of bytes you have just read. Here
is an example: In the reply, $l4 $l4
will be changed to the
length of the <data2>
returned (if this is not $r $r
,
you have to iterate over this command until you got all bytes of the
title).
The title is 01 15
bytes long. In the first reply, $l1
$l1
will be 01 15
, $l2 $l2
will be 01 17
, while
$l3 $l3
might only be 00 d8
. In this case, only
00 d8
minus 6, that is 00 d2
bytes of the title are
returned in <data>
. The next request is done with $r $r
being 01 15
minus 00 d2
, that is 00 43
, and
$g $g
being 00 d2
. The remaining 00 43
bytes of
the title will be returned in <data2>
.
If $w is 00, the normal disc title is returned. If $w is 01, the wchar title is returned. Both titles are independant strings.
Note: It is unknown how you can detect if the player works with the normal titles and when it works with the wchar titles.
Note: It is unknown what the embracing commands mean.
FIXME: The encoding of characters should be added in a section of its own.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
<00 18 08> 10 10 00 01 00
<00 18 06> <01: 10 10 00> ff 00 00 01 00 0b
<00 18 08> 10 10 00 00 00
<09 18 08> 10 10 00 01 00
<09 18 06> <01: 10 10 00> ff 00 00 01 00 0b $f
<09 18 08> 10 10 00 00 00
This function returns the disc flags in $f, which is a bit-wise OR of the following values:
10
40
Note: If no disc is inserted, 40
is returned.
Note: We don't know what the embracing commands mean.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
<00 18 08> 10 10 00 01 00
<00 18 06> <02: 10 10 01, 30 80 03 00> ff 00 00 00 00 00
<00 18 08> 10 10 00 00 00
<09 18 08> 10 10 00 01 00
<09 18 06> <02: 10 10 01, 30 80 03 00> 10 00 00 1d 00 00 <00 1b:
80 03 <00 17: 80 00 <00 05: $h1 $h1 $m1 $s1 $f1> <00 05: $h2 $h2 $m2 $s2
$f2> <00 05: $h3 $h3 $m3 $s3 $f3>>>
<09 18 08> 10 10 00 00 00
This function returns the capacity of the disc, the recorded time and the time left that is available for recording. The times returned are in BCD format. The first time is the time used. It is the actual time of music available for playback, and does already consider the bitrate of each title.
The second time is the total disc capacity if it were recorded in the format that is given by the current recording parameters (see Get Recording Parameters below).
The third time is the available disc size left for recording, if it were recorded in the format that is given by the current recording parameters.
Note: We don't know what the embracing commands mean.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
<00 18 07> <02: 20 18 01 00 $w, 30 00 0a 00> 50 00 $l $l 00 00 $o $o <data>
<09 18 07> <02: 20 18 01 00 $w, 30 00 0a 00> 50 00 $l $l 00 00 $o $o
This function sets the disc title to <data>. $o is the length of the
old disc title, $l is the length of the new disc title <data>. If $w
is 00
, the normal title is set, if it is 01
the wchar
title is set.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
<00 18 08> 10 10 01 01 00
<00 18 06> <02: 10 10 01, 30 00 10 00> ff 00 00 00 00 00
<00 18 08> 10 10 01 00 00
<09 18 08> 10 10 01 01 00
<09 18 06> <02: 10 10 01, 30 00 10 00> 10 00 00 08 00 00 <00 06:
00 10 <00 02: $c $c>>
<09 18 08> 10 10 01 00 00
This function returns the number of tracks on the disc in $c.
Note: We don't know what the embracing commands mean.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
<00 18 40> ff 00 00
<09 18 40> 00 00 00
This function erases all content of the mini disc. The result is a blank disc.
Note: This command does not look out for protected tracks and will just erase the disk unconditionally.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
A.3.3.1 Get Track Title Retrieve the title of a track. A.3.3.2 Get Track Protection Retrieve the protection status of a track. A.3.3.3 Get Track Length Retrieve the length of a track. A.3.3.4 Get Track Encoding Retrieve the encoding of a track. A.3.3.5 Set Track Title Set the title of a track. A.3.3.6 Erase Track Erase a track. A.3.3.7 Move Track Move a track to a different position.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
<00 18 06> <02: 20 18 $w $t $t 30 00 0a 00> ff 00 00 00 00 00
<09 18 06> <02: 20 18 $w $t $t 30 00 0a 00> 10 00 $l3 $l3 00 00
<$l2 $l2: 00 0a <$l $l: <data>
This function returns the title of track $t $t
in <data>. The
length of the title is $l ($l2 is $l + 4, $l3 is $l + 6, although $l3
seems to overflow at 00 d8). If $w
is 02
, the normal
track title is returned. If $w is 03
, the wchar title is
returned. Both titles are independant strings.
Note: It is unknown how you can detect if the player works with the normal titles and when it works with the wchar titles.
FIXME: The encoding of characters should be added in a section of its own.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
<00 18 06> <01: 20 10 01 $t $t> ff 00 00 01 00 08
<00 18 06> <01: 20 10 01 $t $t> ff 00 00 01 00 08 $p
This function returns the protection status for track $t $t
in
$p
. If the track is protected, $p
is 03
,
otherwise it is 00
.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
<00 18 06> <02: 20 10 01 $t $t, 30 00 01 00> ff 00 00 00 00 00
<09 18 06> <02: 20 10 01 $t $t, 30 00 01 00> 10 00 00 0c 00 00
<00 0a: 00 01 <00 06: 00 00 $h $m $s $f>>
This function returns the length of the track $t $t
in $h
$m $s $f
. The time returned is in BCD format and constitutes the
total playing time of the track.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
<00 18 06> <02: 20 10 01 00 $t, 30 80 07 00> ff 00 00 00 00 00
<09 18 06> <02: 20 10 01 00 $t, 30 80 07 00> 10 00 00 0a 00 00
<00 08: 80 07 <00 04: 01 10 $u $v>>
This function returns information about the encoding of the track $t
in $u $v
(see Data Types, Encodings).
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
<00 18 07> <02: 20 18 $w $t $t, 30 00 0a 00> 50 00 $l $l 00 00 $o $o <data>
<09 18 07> <02: 20 18 $w $t $t, 30 00 0a 00> 50 00 $l $l 00 00 $o $o
This function sets the title of track $t $t
to <data>
.
$o $o
is the length of the old track title, $l $l
is the
length of the new track title <data>
. If $w
is
02
, the normal title is set, if it is 03
the wchar title
is set.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
<00 18 40> ff 01 00 <20 10 01 $t $t>
<09 18 40> 10 01 00 <20 10 01 $t $t>
This function erases the track $t $t
. The following tracks are
renumbered by subtracting 1 from the track number.
The protection status is ignored when erasing a track with this command.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
<00 18 43> ff 00 00 <20 10 01 00 $s $s> <20 10 01 $d $d>
<09 18 43> 00 00 00 <20 10 01 00 $s $s> <20 10 01 $d $d>
This function moves the track $s $s
to the position $d
$d
. Track $d and all following tracks are renumbered to make space
for the new track $d by adding 1 to the track number.
[ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |