Here are some useful tidbits, in no particular order
Peregrine drives should all use the same firmware. Here is an excerpt from the Seagate web site about the matter.
I believe this is also true of all Python drives, except that they use firmware 2.xx.
Non-audio firmware from Seagate: 5ac-00
Audio firmware from Seagate/SGI: 5ac-15
Other OEM firmware has a different two-digit number after the dash.
If you look at the ASCII strings in a binary version of the audio firmware, it appears that the drive may support forward and reverse speeds of x1, x3, x7, x15, x100 and x200. I know that the LOCATE command is supposed to work at x200 and that a normal read/write works at x2.1 of normal speed. When I dump audio data to a wave file, it does take about 1/2 the time expected.
Related to the speed issue, I wonder if there is some command to make the drive read audio data in reverse (for a cue/review function)? I tried the obvious READ REVERSE command, but it wasn't recognized.
Another ASCII string in the firmware is "Pause". I know of no SCSI command that would issue a pause command to the drive. This would also be useful if there really is such a command..
If a proper lead-in is not present at the very beginning of the tape, the drive will see it as a data tape. For example, I have a tape that was bulk-erased, run forward a bit, then recorded on in a professional DAT deck. The SGI-brand drive sees this as a data tape, even though it has audio on it later.
Here is a table of MODE SENSE values that I got when inserting various data and audio tapes into my SGI-brand CTD-8000 drive. The important values to note are the Medium Type and Density Code. Also note that the Block Length is 512 bytes in all cases. In audio mode, ignore this and set the block size in the Read/Write commands.
You can issue a READ POSITION command while a LOCATE command is in progress. This will let you determine where you are during a high-speed forward or rewind. Now if only we could figure out how to issue an abort command to stop the tape :>(
Some tips that I gathered from somewhere (maybe from the DATlib documentation?):
You probably should use the RESERVE UNIT and RELEASE UNIT commands to make sure no other program can access the DAT drive during audio use.
A frame of audio data on a tape consists of 5760 bytes of audio, followed by 62 bytes of subcode data. The number of audio bytes is 5760, whether the sample rate is 48KHz or 44.1KHz (I'm not even discussing the 32KHz mode, as that is not used much). This means that at the 44.1KHz sample rate, the audio data past byte 5292 is set to zero, to pad out the block to 5760 total bytes.
The individual bytes of audio data come off of the tape as Left Channel LSB, Left Channel MSB, Right Channel LSB, Right Channel MSB. (I think this is correct. Check my program code to verify.) The nice thing about this is, it is the same order that a WAV file stores data for 16 bit, stereo audio. To create a WAV file, just read the audio off the tape, attach a header and write to disk.
The 62 bytes of subcode data is comprised of seven, 8 byte Subcode Packs (56 bytes total), followed by 6 bytes of Sub-ID and Main-ID.
To summarize, this is how an entire frame is laid out on the tape (the audio data is first):
Bytes 56-61 of the 62 byte subcode data (the last six, counting from zero) consist of 4 bytes of Sub-ID and 2 bytes of Main-ID as follows:
(See Tascam Notes below, for more on what these are.)
The Control ID is 4 bits long and is composed of the Priority ID, Start ID, Skip ID and TOC ID (Table Of Contents). These 1 bit flags are defined as follows:
The Data ID must be set to zero for audio use. Apparently, this is the only required item in the entire Sub-ID.
The three digits comprised of Prog #1 - Prog # 3 make up one Program Number. The individual digits are BCD. Permissible values are:
Number of Subcode Packs Used is how many of the seven Subcode Packs are used in this frame. See below for something on this confusing mess.
The Interpolate Flags are set by the drive to indicate that an un-recoverable read error has occurred. If these bits are set, the audio data for this frame should not be played (the audio is muted). Here are the bits in question:
Format-ID must be set to zero for audio use.
Emphasis is not used for professional recording. Set these bits to zero.
Sample Frequency is defined as:
Number of Channels is defined as:
Quantization is defined as:
Track Pitch is defined as:
Copy Bits is defined as:
Pack Bits (set to zero?)
You will note that for a normal 48KHz stereo recording with no copy restrictions, you can set all values in the Main-ID to zero. In reality, you can also set everything in the Sub-ID to zero as well (except when writing the lead-in and lead-out frames). Of course, you won't have any times or program numbers, but a tape like this will play on many (all?) DAT decks.
Subcode Pack Types
These are used to define special data types within a frame of data on the tape. I don't know if you need to worry about any of them except the Program, Absolute and Run Times. Here are some definitions:
This table defines the data layout of Pack Types 1-3 (Program, Absolute and Run Times):
The Prog # fields are that same as in the Sub-ID. Valid Index #'s are 01-99. Index # 00 is used to indicate the silence between programs.
This table defines the data layout of Pack Type 5 (date of recording):
Here is some further elaboration on some of the various ID and Time fields mentioned above. This is from the manual for a Tascam DA-30 MKII professional DAT deck.
They don't mention Run Time. I still don't know exactly how that is measured. I don't know if I care either. If I have Absolute Time and Program Time, what more do I need?
In case you were wondering how the drive determines what type of tape is inserted, the Tascam manual has a nice little diagram and table that gives all the details. I won't reproduce it here, but suffice it to say that it is the three little holes on the bottom of the tape, opposite the write-protect tab.
© Copyright 2000 by Joseph Gray