Up What's New Background Source Code Links Notes


Random Notes

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.

"The Peregrine family of DAT's are second generation drives which were put
into production in early 1995 by Conner Peripherals. They were direct
replacements for the Python drives. Capacities range from 2.0 gigabytes and
up to 8 gigabytes (using hardware compression). All Peregrine DAT drives are
fully DDS, DDS-DC, DDS-2, compliant and contain an embedded SCSI controller
that supports SCSI-2 (ANSI X3.131, 199x). Drives are equipped with a 1
megabyte on-drive buffer. These drives provide a native transfer rate of 400
kilobytes/second (KB/sec) before the additional enhancement of hardware data
compression. In addition all Peregrine drives are equipped with flash
EEPROM's but are still identified on system boot up as an "Archive Python
xxxxx-xxx" for compatibility reasons. All Peregrine drives display a
firmware version of 5.xx
." (Emphasis added by me.)

 I believe this is also true of all Python drives, except that they use firmware 2.xx.

Non-audio firmware from Seagate: 5ac-00

Drive ID is: 28388-XXX5ACB

Audio firmware from Seagate/SGI: 5ac-15

Drive ID is: 01931-XXX5ACB

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.

Byte # Description R60 or R90 Audio Tape New (Blank) R60 or R90 DDS-60 or DDS-90 DDS2-120
0 Mode Data Length 0BH 0BH 0BH 0BH
1 Medium Type 30H 30H 31H 32H
2 Write Protect (bit 7)
Buffered Mode (bits 6-4)
Speed (bits 3-0)
10H 10H 10H 10H
3 Block Descriptor Length (bits 4-11) 08H 08H 08H 08H
4 Density Code 80H 13H 13H 24H
5 Number of Blocks (MSB) 00H 00H 00H 00H
6 Number of Blocks 00H 00H 00H 00H
7 Number of Blocks (LSB) 00H 00H 00H 00H
8 Reserved 00H 00H 00H 00H
9 Block Length (MSB) 00H 00H 00H 00H
10 Block Length 02H 02H 02H 02H
11 Block Length (LSB) 00H 00H 00H 00H

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?):

bulletWhen preparing a blank tape for audio use, rewind to BOT, issue a MODE SELECT 80H, write one audio frame, rewind to BOT, write the lead-in, write about 10 seconds worth of frames with silence (audio data = 0), write the lead-out. Remember, a blank audio tape has nothing recorded on it, just like a blank data tape.
bulletDo a READ POSITION after finishing a LOCATE to make sure where we are. Rumor has it that some versions of audio firmware don't always stop where they should (I didn't see this with my SGI drive with 5.63 or 5AC firmware).

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):

Audio Data
5760 bytes
Subcode Packs
7 each = 56 bytes
4 bytes
2 bytes

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:

Sub-ID Byte # Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
56 Priority ID Start ID Skip ID TOC ID Data ID
57 Prog #1 (most significant BCD digit) Number of Subcode Packs used
58 Prog #2 (middle BCD digit) Prog #3 (least significant BCD digit)
59 Interpolate Flags
Main-ID 60 Format ID Emphasis Sample Freq. # of Channels
61 Quantization Track Pitch Copy Bits Pack Bits

Sub-ID Definition

(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:

Priority ID
Set when the Program number is recorded and well defined (what the hell does this mean?).
Start ID
This is set for the first 300 frames of each program. A valid program number should also be present during these 300 frames.
Skip ID
Also called the Shortening ID? This is set on the first 33 frames of shortening play.
Set if the program is listed in the table of contents. Note: I understand that almost no recorded DATs use the table of contents feature.

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:

bullet001 to 799 - The number assigned to an individual program or song. Think of it like a track on a CD.
bullet0AA - Program Number Not Valid. This usually replaces a real program number after the first 300 frames at the start of each program. See Start ID as well.
bullet0BB - Denotes the lead-in area of the tape (the first 100 frames).
bullet0EE - Denotes the lead-out area of the tape (the last 100 frames after the last program?).

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:

bullet40H - Left channel data is bad.
bullet20H - Right channel data is bad.

Main-ID Definition

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:

bullet00 - 48KHz
bullet01 - 44.1KHz
bullet10 - 32KHz
bullet11 - Reserved

Number of Channels is defined as:

bullet00 - 2 channels (Stereo - the only one really used)
bullet01 - 4 channels

Quantization is defined as:

bullet00 - 16 bit linear sampling (used by the 48KHz, 44.1KHz & 32KHz modes)
bullet01 - 12 bit non-linear sampling (used by the 32KHz long-play mode)

Track Pitch is defined as:

bullet00 - Normal track mode (used by all the standard recording modes)
bullet01 - Wide track mode (used by the 32KHz long-play mode?)

Copy Bits is defined as:

bullet00 - No restrictions on copying
bullet01 - Reserved
bullet10 - No copies allowed
bullet11 - One copy allowed

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:

bullet0000 - No Info
bullet0001 - Program Time
bullet0010 - Absolute Time
bullet0011 - Run Time
bullet0100 - Table of Contents
bullet0101 - Date
bullet0110 - Catalog Number
bullet0111 - International Standard Recording Code
bullet1000 - Pro Binary (I think this is special timecode data - SMPTE?)

This table defines the data layout of Pack Types 1-3 (Program, Absolute and Run Times):

  7 6 5 4 3 2 1 0
0 Pack Type 0 Prog # 1
1 Prog # 2 Prog # 3
2 Index # Hi Index # Lo
3 Hour Hi Hour Lo
4 Min Hi Min Lo
5 Sec Hi Sec Lo
6 Frame Hi Frame Lo
7 Pack Parity

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):

  7 6 5 4 3 2 1 0
0 0101 (Pack Type 5) Day of Week
1 Year (BCD)
2 Month (BCD)
3 Day (BCD)
4 Hour (BCD)
5 Minute (BCD)
6 Second (BCD)
7 Pack Parity

Tascam Notes

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.

Start ID
Beginning of each program. Nine seconds at the beginning of each program.
Skip ID
Point from where tape is made to fast wind to the next Start ID. One second at the desired point.
End ID (Sounds like the lead-out to me.)
End of the existing audio recordings. Nine seconds at the end of the last recording.
Program Number
How many programs from the beginning of the tape is the current one.
Absolute Time
Elapsed time from the beginning of the tape.
Program Time
Elapsed time from the beginning of each program.

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.

Up ] What's New ] Background ] Source Code ] Links ] [ Notes ]

Copyright 2000 by Joseph Gray
All rights reserved