Mackie SDR Project File (.prj) Format


This information not associated with, endorsed by, sponsored by or supported Mackie or its parent company, LOUD Technologies Inc. Any references to Mackie, the SDR 24/96 or any other Mackie products, technology or terminology is unauthorized.

This information is not warranted to be correct. Always back up your projects before you do anything.

2005-01-18 Craig Bennett

The Mackie project file cannot really be read with a hex editor (not a text editor like notepad). Most values are stored as little endian, using the chr() value of the hex, and mostly in 4 byte words.

For example, for the sample rate of 44100khz:

44100'(long value)
= AC 44'(converted to hex)
= 44 AC 00 00'(4 byte little endian)
= chr(val(&h44)) & chr(val(&hAC)) & chr(val(&h00)) & chr(val(&h00))
= 68 172 0 0

There are eight sections in the file, each identified by a 4 byte header followed by a 4 byte little endian section size.

versVersion Information (Firmware and Hardware)
digcDigital Clock (Sample Rate, Sample Size and Frame Rate)
locaLocate Points
trklTrack List (Names, Mute, Take #)
iompInput/Output Mapping
srclSource List (Index of wav files used in project)
plylPlay List (Track and Time Position of wav files)
exitEOF marker

vers - Version Information (Firmware and Hardware)
Stores the Firmware version and Hardware type
The SDR will not open projects with the wrong version
The values for my SDR1.1-1.2.4 are:

v e r s [4 byte length of version section] 0 0 [2 byte length of Firmware Version] 1 2 4 0 [1 byte length of Hardware type] S D R

digc - Digital Clock (Sample Rate, Sample Size and Frame Rate)
Stores the Sample Rate (44100, 48000, 96000, etc..)
Stores the Sample Rate (either 16 or 24)
Stores the Frame Rate as a two byte tag

2 Byte TagFrame Rate
05 0024
04 0225
03 0129.97 drop
02 0029.97
01 0030 drop
00 0030

d i g c [4 byte length of digc section] [4 byte Sample Rate] [1 byte Sample Size] [2 byte Frame Rate tag]

loca - Locate Points
Locate points are stored by sample count
At 44.1khz, 1 sec = 44100 Samples
Max time = 23:59:58:00 = 86998 seconds = 3836611800 = D8 0C AE E4
Frames are based on the Frequency/Framerate (usually 30?, ie: 1 frame at 30fps = 44100/30)
I have no idea how to handle drop frame rates

l o c a [4 byte length of digc section] [24 bytes not used. Could be space for 3 more locate?] [8 byte Locate 1] [8 byte Locate 2] [8 byte Locate 3] [8 byte Locate 4]

trkl - Track List (Names, Mute, Take #)
Stores Track Number, Virtual Take, Mute and Track Name

t r k l [4 byte length of trkl section] [Track Information]

The following Track Information is repeated for each of the 24 tracks. Note the 0 at the end of the track name

[4 byte track number] 1 0 0 0 [1 byte virtual take] [1 byte track mute] [1 byte length of track name] T r a c k n a m e 0 [Take Info]

The Take Info is repeated 8 times (one for each take)

[1 byte length of take name (always 6)] T a k e [1 byte take number]

iomp - Input/Output Mapping
Input mapping (redirect physical input x to channel y)
Output Mapping (redirect channel y to physical output x)
Does not have a section length. No idea what the first bit is all about

i o m p [4 byte length of section] [4 byte number of tracks] [Input Map] [Output Map]

The Input Map is a list of the 24 Input mappings, each followed by zero.

[1 byte map for input 1] 0 [1 byte map for input 2] 0 ...

The Output Map is a list of the 24 Output mappings, each followed by zero.

[1 byte map for output 1] 0 [1 byte map for output 2] 0 ...

srcl - Source List (Index of wav files used in project)
Identifies each audio file used in the project with an ID number. This number is very static. Deleting tracks, placing sounds, replacing sounds, recording new tracks, etc.. might cause a wholesale reassigning of ID numbers. This is echoed in the Play List as well
There are bytes here I do not know what they are for

s r c l [4 byte size of srcl section] [4 byte next ID] [4 byte Previous ID or maybe it is # of ID's] [Source List]

The Source List contains multiples of the following line. One for each file and each terminated with a 0

[4 byte ID] [4 byte start time] [4 bytes of 0] 1 0 [1 byte chars in "AudioFiles1\filename.wav"] A u d i o F i l e s 1 \ f i l e n a m e . w a v 0

plyl - Play List (Track and Time Position of wav files)
Tells us what track and at what time position each wav file is in, by ID number
Empty projects will have a section size of 4, and a SRC ID of 0

p l y l [4 byte size of section] [Play List]

The Play List contains the following line, once for each event

[4 byte might be SRC ID] 1 0 0 0 0 0 0 0 1 0 0 0 [4 Byte track number] 1 0 0 0 [4 byte length of track] [4 byte start position]

exit - EOF marker
Yup. Make sure the file is NOT terminated witha CR/LF or else the project is invalid

e x i t 0 0 0 0