Stephen Norum—MPC 1000 PGM File Format

Hello,

This page documents the Akai MPC 1000 PGM file format version 1.00. This information is provided to help developers create software for the MPC 1000. If information from this page is used in an application, I would love to hear about it.

If you have any questions, comments, or corrections regarding the following information, do not hesitate to send me an e-mail at stephen@mybunnyhug.org.

Take a look at my other projects!


Stephen Norum

File Layout Overview

The MPC 1000 PGM file format has four main sections. The "Header Data" section, the "Pad Data" section, the "Sample Data" selection enclosed in the "Pad Data" section, and the "MIDI/Slider Data" section.

The MPC 1000 can assign up to 4 samples to each of its 64 pads. On this page I refer to the samples as Sample 0 to Sample 3 for Pad 0 to Pad 63.

Detailed File Layout

Data Types:
Type Size (bits)
char 8
int 16

The file's format is little endian. Be aware of this fact when reading and writing int values. The values given in the "Value", "Min Value", and "Max Value" columns are given in big endian.

i = Pad Number (0 to 63)
j = Sample Number (0 to 3)
Header
Offset Length Description Type Value Min Value Max Value Notes
0x00 2 File size in bytes unsigned int 0x2A04 - -  
0x02 2 Padding char array 0x00 - -  
0x04 16 Filetype String char array "MPC1000 PGM 1.00" - -  
0x14 4 Padding char array 0x00 - -  
Pad i, Sample j Data
Offset Length Description Type Value Min Value Max Value Notes
(i * 0xA4) + (j * 0x18) + 0x00 16 Sample Name char array - - - Value is the name of the wave file without the ".wav" extension assigned to this pad. Names shorter than 16 characters are null (0x00) padded.
(i * 0xA4) + (j * 0x18) + 0x10 1 Padding char 0x00 - -  
(i * 0xA4) + (j * 0x18) + 0x11 1 Level unsigned char - 0 100  
(i * 0xA4) + (j * 0x18) + 0x12 1 Range Lower unsigned char - 0 Range Upper  
(i * 0xA4) + (j * 0x18) + 0x13 1 Range Upper unsigned char - Range Lower 127  
(i * 0xA4) + (j * 0x18) + 0x14 2 Tuning int - -3600 3600 Value is 100 times larger than actual tuning
(i * 0xA4) + (j * 0x18) + 0x16 1 Play Mode char - 0 1 0="One Shot", 1="Note On"
(i * 0xA4) + (j * 0x18) + 0x17 1 Padding char 0x00 - -  
Pad i Data
Offset Length Description Type Value Min Value Max Value Notes
(i * 0xA4) + 0x60 2 Padding char array 0x00 - -  
(i * 0xA4) + 0x62 1 Voice Overlap char - 0 1 0="Poly", 1="Mono"
(i * 0xA4) + 0x63 1 Mute Group char - 0 32 0="Off", 1 to 32
(i * 0xA4) + 0x64 1 Padding char 0x00 - -  
(i * 0xA4) + 0x65 1 Unknown char 0x01 - -  
(i * 0xA4) + 0x66 1 Attack unsigned char - 0 100  
(i * 0xA4) + 0x67 1 Decay unsigned char - 0 100  
(i * 0xA4) + 0x68 1 Decay Mode char - 0 1 0="End", 1="Start"
(i * 0xA4) + 0x69 2 Padding char array 0x00 - -  
(i * 0xA4) + 0x6B 1 Velocity to Level unsigned char - 0 100  
(i * 0xA4) + 0x6C 5 Padding char array 0x00 - -  
(i * 0xA4) + 0x71 1 Filter 1 Type char - 0 3 0="Off", 1="Lowpass", 2="Bandpass", 3="Highpass"
(i * 0xA4) + 0x72 1 Filter 1 Freq unsigned char - 0 100  
(i * 0xA4) + 0x73 1 Filter 1 Res unsigned char - 0 100  
(i * 0xA4) + 0x74 4 Padding char array 0x00 - -  
(i * 0xA4) + 0x78 1 Filter 1 Velocity to Frequency unsigned char - 0 100  
(i * 0xA4) + 0x79 1 Filter 2 Type char - 0 4 0="Off", 1="Lowpass", 2="Bandpass", 3="Highpass", 4="Link"
(i * 0xA4) + 0x7A 1 Filter 2 Freq unsigned char - 0 100  
(i * 0xA4) + 0x7B 1 Filter 2 Res unsigned char - 0 100  
(i * 0xA4) + 0x7C 4 Padding char array 0x00 - -  
(i * 0xA4) + 0x80 1 Filter 2 Velocity to Frequency unsigned char - 0 100  
(i * 0xA4) + 0x81 14 Padding char array 0x00 - -  
(i * 0xA4) + 0x8F 1 Mixer Level unsigned char - 0 100  
(i * 0xA4) + 0x90 1 Mixer Pan unsigned char - 0 100 0 to 49=Left, 50=Center, 51 to 100=Right
(i * 0xA4) + 0x91 1 Output char - 0 2 0="Stereo", 1="1-2", 2="3-4"
(i * 0xA4) + 0x92 1 FX Send char - 0 2 0="Off", 1="1", 2="2"
(i * 0xA4) + 0x93 1 FX Send Level unsigned char - 0 100  
(i * 0xA4) + 0x94 1 Filter Attenuation char - 0 2 0="0dB", 1="-6dB", 2="-12dB"
(i * 0xA4) + 0x95 15 Padding char array 0x00 - -  
MIDI/Slider Data
Offset Length Description Type Value Min Value Max Value Notes
m + 0x2918 1 Pad MIDI Note Values unsigned char - 0 127 m=Pad Number (0 to 63). Value of character is the MIDI note number associated with Pad Number m
n + 0x2958 1 MIDI Note Pad Values unsigned char - 0 64 n=MIDI Note Number (0 to 127). Value is the Pad Number (0 to 63) associated with the MIDI note number, n. Value is 64 for unassigned MIDI Note Numbers.
0x29D8 1 MIDI Program Change unsigned char - 0 128 0="Off", 1 to 128
0x29D9 1 Slider 1 Pad unsigned char - 0 63  
0x29DA 1 Unknown char 0x01 - -  
0x29DB 1 Slider 1 Parameter char - 0 4 0="Tune", 1="Filter", 2="Layer", 3="Attack", 4="Decay"
0x29DC 1 Slider 1 Tune Low char - -120 Slider 1 Tune High  
0x29DD 1 Slider 1 Tune High char - Slider 1 Tune Low 120  
0x29DE 1 Slider 1 Filter Low char - -50 Slider 1 Filter High  
0x29DF 1 Slider 1 Filter High char - Slider 1 Filter Low 50  
0x29E0 1 Slider 1 Layer Low char - 0 Slider 1 Layer High  
0x29E1 1 Slider 1 Layer High char - Slider 1 Layer Low 127  
0x29E2 1 Slider 1 Attack Low char - 0 Slider 1 Attack High  
0x29E3 1 Slider 1 Attack High char - Slider 1 Attack Low 100  
0x29E4 1 Slider 1 Decay Low char - 0 Slider 1 Decay High  
0x29E5 1 Slider 1 Decay High char - Slider 1 Decay Low 100  
0x29E6 1 Slider 2 Pad unsigned char - 0 63  
0x29E7 1 Unknown char 0x01 - -  
0x29E8 1 Slider 2 Parameter char - 0 4 0="Tune", 1="Filter", 2="Layer", 3="Attack", 4="Decay"
0x29E9 1 Slider 2 Tune Low char - -120 Slider 2 Tune High  
0x29EA 1 Slider 2 Tune High char - Slider 2 Tune Low 120  
0x29EB 1 Slider 2 Filter Low char - -50 Slider 2 Filter High  
0x29EC 1 Slider 2 Filter High char - Slider 2 Filter Low 50  
0x29ED 1 Slider 2 Layer Low char - 0 Slider 2 Layer High  
0x29EE 1 Slider 2 Layer High char - Slider 2 Layer Low 127  
0x29EF 1 Slider 2 Attack Low char - 0 Slider 2 Attack High  
0x29F0 1 Slider 2 Attack High char - Slider 2 Attack Low 100  
0x29F1 1 Slider 2 Decay Low char - 0 Slider 2 Decay High  
0x29F2 1 Slider 2 Decay High char - Slider 2 Decay Low 100  
0x29F3 17 Padding char array 0x00 - -