A-Series System Files (SYSTEM / SYSTEM2)
The A-series SYSTEM and SYSTEM2 files store partition-level sampler configuration separately from Programs and Volumes. A normal Volume save does not contain this environment. These records use the PRF3 type, but the type tag alone does not identify a System File: pathname, exact record size and the inner signature also matter.
Offsets below are hexadecimal. Body offsets start after the 0x30-byte
shared SFS record envelope. Add 0x30 for a logical-file offset. The parameter
area begins at body 0x20; a parameter-area offset is therefore body offset
minus 0x20. These offsets must not be substituted directly for MIDI transfer
offsets. Multi-byte numeric fields are big-endian unless stated otherwise.
Framing And Model Differences
| Partition-relative path | Model | Logical file size | Body size | Parameter area |
|---|---|---|---|---|
\PRF3\SYSTEM |
A3000 | 0x430 |
0x400 |
Body 0x020..0x367; 0x98 trailing bytes |
\PRF3\SYSTEM2 |
A4000/A5000 | 0x1030 |
0x1000 |
Body 0x020..0xfff |
The shared envelope begins with FSFSDEV3SPLXPRF3. Each body begins with a
0x20-byte header. The following byte values describe the listed software
versions; version text is not an independent hardware-model identifier.
| Body offset | Size | SYSTEM | SYSTEM2 |
|---|---|---|---|
0x00 |
4 | Signature 21 52 05 31 |
Signature de ad fa ce |
0x04..0x07 |
4 | Unspecified | Unspecified |
0x08..0x0c |
5 | Version text 0200A for V2 |
0107A for 1.07; 0150A for 1.50 |
0x0d |
1 | Unspecified | Unspecified |
0x0e |
1 | Storage revision 0 |
Storage revision 0 or 1 |
0x0f..0x1f |
17 | Unspecified | Unspecified |
The version text occupies exactly five bytes; 0x0d is not specified as a
required string terminator. A reset does not establish complete initial values
for the unspecified header bytes. Preserve them when modifying an existing file.
SYSTEM2 revision does not distinguish A4000 from A5000. Both revisions store 32 Multi assignments; A4000 uses 16 parts and A5000 uses 32. A3000 has neither the saved Program Mode nor the Multi Part table.
System Load does not apply every saved byte. A3000 applies body
[0x020,0x368). A4000/A5000 software 1.07 applies [0x020,0x664) and 1.50
applies [0x020,0x67c). The remaining saved bytes are not thereby padding or
free space. Preserve them. Software 1.07 accepts revision 0; 1.50 accepts
revision 1 and has a revision-0 conversion path. Its complete conversion and
hardware-dependent initialization rules are not specified here.
The header is read separately. A3000 then reads body [0x020,0x368);
A4000/A5000 reads [0x020,0x1000) before applying its shorter prefix.
A short read within a requested range aborts parameter application. This does
not establish the missing contents of a truncated saved suffix or permit
reconstructing them with zeros.
System Bulk MIDI transfer has different framing from a disk file: payload
bytes are sent as high and low nibbles, without the System header. A3000 V2
transmits body [0x020,0x368). A4000/A5000 software 1.07 and 1.50 transmit
[0x020,0x1000), including the saved suffix, but receive application covers
only the shorter prefix listed above for each version. Inclusion in a transfer
does not make unspecified bytes editable settings or establish their defaults.
Region Map
Ranges in this table are half-open; some storage roles overlap.
| Region | SYSTEM body | SYSTEM2 body |
|---|---|---|
| Global preferences | [0x030,0x05e) |
[0x030,0x1f0) |
| Disk configuration transfer | [0x060,0x074) |
[0x1f0,0x200) |
| Effect favorites | [0x070,0x0f0) |
[0x200,0x300) |
| Panel/command preferences | [0x0f0,0x130) |
[0x300,0x340) |
| Recording effects and configuration | [0x130,0x1ca) |
[0x340,0x3f0) |
| Service startup state | [0x1d0,0x1d8) |
[0x3f4,0x3fc) |
| Auxiliary MIDI setup | [0x1d8,0x1e0) |
[0x3fc,0x405) |
| Registered Sample parameter block | [0x1e8,0x2a4) |
[0x40c,0x4ec) |
| Registered Program region | [0x2a4,0x368) |
[0x4ec,0x64c) |
| Sequence MIDI-port configuration | Not present | [0x64c,0x65c) |
| Digital-output configuration | Not present | [0x65c,0x664) |
| mLAN configuration and initialization state, software 1.50 | Not present | [0x664,0x674) |
Gaps between these regions include disk-selection and auxiliary state, not
automatically zero padding. In SYSTEM the disk cache at [0x060,0x074)
overlaps the first four favorite bytes. These are not independent storage
allocations. Remaining auxiliary MIDI meanings and complete mLAN initialization
rules are not fully specified.
In both layouts, body 0x020 and [0x029,0x030) have no specified individual
meaning or required initial value. The neighboring disk-state reset changes
only 0x021, 0x022, 0x023, 0x024 and 0x025; it does not clear these
eight unspecified bytes. Preserve them during unrelated edits. Their inclusion
in a complete configuration transfer does not make them editable settings.
Unspecified Intervals
The following intervals have no specified per-byte parameter meaning. Retain them exactly when editing neighboring settings; they are not alignment padding.
| Region | SYSTEM body | SYSTEM2 body | Modification constraint |
|---|---|---|---|
| Global/disk gap | [0x05e,0x060) |
Not present | Outside both adjacent parameter blocks |
| Recording configuration tail | [0x1c3,0x1ca) |
[0x3ec,0x3f0) |
Inside the recording block; reset clears these bytes, but nonzero retained values must not be normalized |
| Recording/service gap | [0x1ca,0x1d0) |
[0x3f0,0x3f4) |
Outside recording and service blocks |
| MIDI/registered-state gap | [0x1e0,0x1e8) |
[0x405,0x40c) |
Not extra auxiliary MIDI selectors |
| Registered-state tail | [0x34a,0x368) |
[0x642,0x64c) |
Included in the shared registered-state load, outside the registered Sample/Program parameter copies |
| Applied extension remainder, software 1.50 | Not present | [0x674,0x67c) |
Applied by System Load, but outside the 16-byte mLAN block; meaning and initial values unspecified |
SYSTEM's saved-only suffix is [0x368,0x400). SYSTEM2 software 1.07's
non-applied suffix begins at 0x664, and 1.50's begins at 0x67c; both end
at 0x1000. These suffixes remain part of the saved file even though normal
System Load does not apply them. Their internal roles and complete initial
values are unspecified. Neither a larger save/transfer size nor a neighboring
block's reset values authorize manufacturing or truncating them.
Service Startup State
The first byte at SYSTEM 0x1d0 / SYSTEM2 0x3f4 is a service/test startup
request. Zero is inactive; values 1 and 2 request test-entry modes whose exact
mode names are unspecified. This is not a normal user preference. Reset clears
the complete eight-byte block; System Load clears a nonzero first byte. The
other seven bytes have no specified individual meaning. Preserve the block
when modifying unrelated settings; do not use it to author service requests
or apply load-time normalization to a lossless file rewrite.
Sequence Port And Digital Output
These fields have the same encoding in both SYSTEM2 revisions and are not present in the A3000 SYSTEM layout.
| Body offset | Size | Setting | Stored values |
|---|---|---|---|
0x64c |
1 | Sequence recording port and playback channel group | 0 = B, 1 = A |
0x65c |
1 | Digital coaxial/optical output bit depth | 0 = 20 bits, 1 = 24 bits |
Port A records MIDI IN-A and plays through channels A01..A16; port B uses MIDI IN-B and B01..B16. A4000 has no second MIDI input or editable port choice and uses the A value on load. Storage revision does not identify that hardware capability. The digital bit-depth choice is 20/24, not 16/24, and does not alter stored Wave Data resolution.
Reset clears the 16-byte sequence block and sets its first byte to 1; it clears the eight-byte digital block to 0. System Load converts a digital selector above 1 to 0 in working memory, without rewriting the saved byte. An unrelated file edit must preserve the original saved values rather than apply these load-time adjustments.
The remaining 15 sequence bytes and 7 digital bytes have no specified individual meaning. Preserve them when editing either scalar. Their block reset values do not establish a complete set of defaults for constructing a new System File.
Disk Preferences
| Setting | SYSTEM body | SYSTEM2 body | Encoding |
|---|---|---|---|
| Self ID | 0x60 |
0x1f0 |
SCSI ID 0..7 |
| Mount selections | 0x61, byte |
0x1f4, BE32 |
Set bit selects a mounted device |
| Top Partition | 0x68 |
0x1fc |
Stored zero-based; display adds1 |
Mount bits 0..7 select SCSI IDs 0..7. SYSTEM2 adds bit 8 for IDE master and bit 9 for IDE slave. Preserve its remaining bits. The sampler cannot mount its own SCSI ID. System Load masks Self ID to three bits and clears the corresponding mount bit. When changing saved ID or mount selections, clear the final own-ID bit and reject an explicit request to mount that ID; retain other selections. An unrelated edit must not normalize these fields. A saved ID change does not assert that the ID is unused on the connected bus or change live hardware.
Top Partition selects the beginning of an eight-partition AKAI import window, not an SFS partition-allocation limit. The starting index is adjusted locally when fewer than eight partitions remain; this does not rewrite the saved selection. The sampler editor permits displayed 1..99 (stored 0..98), but System Load resets stored values above 97 to 0. Consequently displayed 99 is not a load-stable saved selection; use 1..98 for edits intended to survive loading. Retain an existing 99 or other unrequested raw value rather than repairing it as a side effect of an unrelated edit.
Random State
SYSTEM body 0x64..0x67 and SYSTEM2 body 0x1f8..0x1fb contain a big-endian
32-bit pseudorandom seed accumulator. Loading supplies it as a generator seed;
disk activity adds generated values to the cached accumulator, which is later
included in disk-configuration saves. It is not a checksum or a direct snapshot
of the generator's current internal state.
The separate big-endian 16-bit value at body 0x26..0x27 supplies another disk
operation seed and is incremented after use. The generator algorithms and
whether these seed sources share a generator differ between generations.
Neither value is an audio parameter or a stable file identifier. Preserve both
during unrelated edits rather than advancing, synchronizing or zeroing them.
The accumulator can nevertheless contribute to generated names. Canonical
initial seed values remain unspecified.
Disk Conflict State
In A3000 V2 SYSTEM and SYSTEM2 software1.07/1.50, body 0x28 stores the One/All scope of same-name
conflict dialogs: zero means One, nonzero means All, and interactive changes
store0 or1. Disk-command entry resets it to One. This byte is separate from
the selected Rename, Skip, Replace or Abort action and does not establish a
persistent Replace All default.
Body 0x23 and 0x24 supply the initial values for load and save conflict-policy
caches respectively. Values 0/1/3/4/5 select asking, renaming, skipping, replacing and aborting,
subject to the object and conflict type. Value2 has a separate acceptance path
whose full meaning is unspecified. Values above5 are read as0 without necessarily
rewriting storage. An All decision can update a working cache without changing
its saved initial value. Value2 is accepted for a System-file overwrite but does
not have an ordinary conflict-dialog action; its intended use remains unspecified.
Preserve these bytes during unrelated preference edits. They are command state,
not musical parameters. Body 0x21 has boolean access, 0x25 has byte access,
and 0x22 is cleared with the prefix reset, but their operational meanings remain
unspecified. They must not be treated as freely disposable padding.
Auxiliary MIDI Setup
SYSTEM stores eight bytes at 0x1d8; SYSTEM2 stores nine at 0x3fc.
Native A3000 V2 and SYSTEM2 software1.50 share the receive-filter and timeout
roles described below, but differ in how loading applies the saved filters.
The five ordinary preferences have the same storage domains in both formats:
SYSTEM uses 0x1da..0x1dd for protection and the three receive-disable flags,
and 0x1df for device number. Its additional Program Change filter is at
0x1d8, unspecified setting at 0x1d9, and timeout recovery bypass at 0x1de.
SYSTEM has no saved receive-port selector.
| SYSTEM2 body offset | Meaning | Stored domain |
|---|---|---|
0x3fc |
Additional incoming Program Change filter | 0 receive, 1 filter |
0x3fd |
Unspecified setting | 0..15; preserve its value |
0x3fe |
Bulk Protect | 0 off, 1 on |
0x3ff |
Channel Aftertouch reception | 0 receive, 1 disable |
0x400 |
Control Change reception | 0 receive, 1 disable |
0x401 |
Pitch Bend reception | 0 receive, 1 disable |
0x402 |
Internal Active Sensing timeout recovery bypass | Boolean; see below |
0x403 |
MIDI device number | 0 off, 1..16 numbered, 17 all |
0x404 |
SysEx receive port | 0 A, 1 B; A4000 uses A |
The additional Program Change filter is separate from the global Program
Change preference. Do not collapse them into one stored field. The internal
byte at 0x402 bypasses subsequent timeout recovery when set, but does not
disable Active Sensing monitoring or prevent the receive queue from being
reset first. Its intended user-facing use remains unspecified; it is not a
general "Active Sensing off" switch.
Loading normalizes invalid booleans and the unspecified 0x3fd setting to
zero, and invalid device numbers to17. Single-port hardware applies port A
regardless of the saved port byte. Those working-state rules do not authorize
rewriting unrelated bytes during a lossless copy or a targeted edit. Protection,
the three ordinary receive-disable flags, device number and an available SysEx
port can be changed independently without altering the other saved bytes.
Preserve relative bytes0,1 and6 on these edits. A3000's MIDI settings load step
restores and validates these saved values without applying the four live
receive filters. Their subsequent activation timing is unspecified; changing
a saved value is distinct from applying a live control change. Internal-switch use and
complete-file initialization remain separate limitations.
mLAN Extension
Software 1.50 uses body [0x664,0x674) for mLAN configuration and retained
interface state. Applicability depends on interface availability; a SYSTEM2
file does not prove that the receiving device has that interface attached.
These selections are distinct from Basic Receive Channel and Program routing.
Changing either saved input selection does not require changing the other
selection or the retained initialization state. Preserve the remaining bytes
of this block on such an edit. MIDI source 2 requires dual-port hardware.
These routing fields belong to storage revision 1; revision 0 does not
apply this extension. An out-of-domain input selection does not establish a
default and need not be changed when editing the other input selection.
The mLAN page's Output Level Offset, Word Clock Mode and Nickname are separate
interface settings, not fields in this System block. Output Level Offset has
five choices, +0, +6, +12, +18 and +24 dB. Word Clock includes live
internal/external status, and Nickname is a ten-byte interface name. Do not
place these values in the unspecified bytes at 0x666..0x671.
| Body offset | Meaning | Stored values or constraint |
|---|---|---|
0x664 |
MIDI input source | 0 MIDI connectors; 1 mLAN A; 2 mLAN B |
0x665 |
Audio input source | 0 ADIn; 1 mLAN |
0x666..0x671 |
Unspecified interior state | Preserve on unrelated edits |
0x672 |
Interface initialization-completed marker | Zero requires initialization; successful initialization sets 1 |
0x673 |
Retained initialization routing and flags | See below; not an ordinary preference |
On single-MIDI-port hardware, MIDI source 1 is displayed as mLAN rather than
mLAN A, and a loaded selection 2 is applied as 1. This does not change the
meaning of the saved byte or authorize normalizing it during a lossless copy.
When initialization is needed, bit 0 of 0x673 selects routing value 1;
otherwise bit 1 selects routing value 2. If neither is set, initialization
fails. Bit 0 takes precedence when both are set. Diagnostic preparation stores
0x81 or 0x82 with completion zero after its successful selected-port check.
Bit 7 marks that preparation; its wider meaning is unspecified, and it is not
an ordinary on/off preference. Bits 2..6 have no defined independent setting.
Preserve them rather than treating them as reserved-zero fields.
Interactive initialization retains the interface's cached nickname; pending
startup initialization supplies the model name as the initial nickname.
Initialization also provisions vendor/model and audio/MIDI endpoint labels
in the external interface. These strings are not stored in 0x666..0x671.
The completion byte is set only after the external command sequence succeeds;
the other retained bytes are not a substitute for the interface's live identity
or its command responses.
Reset of this block clears its first 14 bytes but retains 0x672/0x673.
The retained marker does not establish initialization on another device.
Do not synthesize it as 1 to bypass initialization or assume that an
all-zero block is a valid fresh configuration. The interior bytes retain
unspecified meanings; portable initialization cannot be derived from this
block without the target interface's state and initialization contract.
Global Preferences
This table uses offsets relative to body 0x030. All fields are one byte
unless a range is given. Signed fields use two's complement.
| Relative offset | Meaning | Stored domain |
|---|---|---|
0x00 |
Master fine tune | s8, -63..63 |
0x01, 0x02 |
Master coarse tune, transpose | s8, -127..127 |
0x03 |
Velocity curve selection | 0..17 |
0x04 |
Basic Receive Channel | SYSTEM 0..15; SYSTEM2 0..31 |
0x05 |
Stereo-to-assignable output selection | 0..5 |
0x06 |
Receive, wave-edit and audition flags | See below |
0x07..0x0a |
Four knob transmit channels | s8, SYSTEM -1..16; SYSTEM2 -1..32 |
0x0b..0x0e |
Four knob controller devices | 0..120 |
0x0f..0x14 |
Six function-key transmit channels | SYSTEM 0..16; SYSTEM2 0..32 |
0x15..0x1a |
Six function-key notes | 0..127 |
0x1b..0x20 |
Six function-key velocities | 1..127 |
0x21 |
Stereo output-level offset selection | 0..4 |
0x22, 0x23 |
Total EQ low-boost frequency and gain | Frequency 4..40; gain 52..76 |
0x24 |
Remix type / variation | High / low nibble |
0x25..0x27 |
Total EQ low frequency/gain/width | 4..40, 52..76, 10..120 |
0x28..0x2a |
Total EQ mid frequency/gain/width | 4..58, 52..76, 10..120 |
0x2b..0x2d |
Total EQ high frequency/gain/width | 28..58, 52..76, 10..120 |
0x2e |
SYSTEM2 Program Mode | 0 Single, 1 Multi |
0x2f |
SYSTEM2 additional flags | Bit 0 Remix auto audition; bit 1 knob MIDI out; bit 2 function-key MIDI out |
0x30..0x4f |
SYSTEM2 Multi Part Programs | Each 1..128 |
0x1b8, 0x1b9 |
SYSTEM2 Remix zone start/end | 0..7, 1..8; start less than end |
0x1ba..0x1be |
SYSTEM2 five assignable output offsets | Each 0..4 |
0x1bf |
SYSTEM2 working-Program marker | Transient selection state, cleared on load |
The saved SYSTEM2 global block ends at relative 0x1c0 (body 0x1f0).
Resolved Program references are runtime state, not additional fields following
this block. Preserve the subsequent disk-settings region as a separate section;
do not append or serialize runtime pointers there.
Basic Receive uses 0..15 for A01..A16 and 16..31 for B01..B16. Transmit
selection 16 means Basic Receive; SYSTEM2 transmit selections 17..32 mean
B01..B16. Knob transmit selection -1 means audition. The Multi table stores
direct Program numbers, not the MIDI transfer representation 0..127. The
part matching Basic Receive is the master part. Multi part channels override
the Sample/Bank Rch Assign settings inside the selected Programs.
Global flag byte 0x06 assigns bits 0..7 to Omni, Program Change Enable,
wave-length lock, auto zero, auto snap, audition with Easy Edit, audition with
effects, and Play & Load. Mode selection clears Omni. Length lock, auto zero
and auto snap are mutually exclusive edit options. The assignable output
duplicating Stereo Out has no independently effective level offset.
Total EQ gain selection 64 is neutral; low boost has no width field.
Output offsets and frequency selections are encoded choices, not literal dB
or Hz values. The MIDI-out bits in SYSTEM2 byte 0x2f are load-sensitive;
their stored presence does not establish a durable enabled setting. Preserve
unrelated bits instead of inventing initialization values.
SYSTEM Remix type/variation domains are 0..4 / 0..3; SYSTEM2 domains are
0..9 / 0..7. SYSTEM2 stores five registered recipes as three arrays:
duration codes at relative 0x50, captured random choices at 0xc8, and
processing flags at 0x140. Each array has five consecutive 24-byte slots.
Keep slot order and unused tails. Duration zero terminates a recipe; a zero
first duration leaves the source loop unchanged. Nonempty lanes must terminate
within their 24 bytes before being used to construct a new recipe.
For a source loop of N frames, let E = floor(N/8). Duration codes 1, 2,
9 and 8 consume E, 2*E, floor(N/16) and floor(N/32) frames,
respectively. The full Remix zone covers 8*E frames. Short-slice patterns can
produce fewer frames than that zone and leave part of its result dependent on
previous working-buffer contents. A nominal total of one loop is therefore
not enough to guarantee a fully defined result for every loop length.
Patterns made only of 1 and 2 with count(1)+2*count(2)=8 fill that zone
for every length. Stereo source coordinates and Gate processing have additional
dependencies; this arithmetic alone is not a complete construction rule.
The generated processing bytes have these meanings:
| Value (decimal) | Operation |
|---|---|
0 |
Copy the corresponding source segment |
1 |
Copy a captured random source slice |
3 |
Reverse a captured random source slice |
5 |
Copy from the source position 2*E frames after loop start |
6 |
Silence |
11 |
LoFi processing of a captured random source slice |
19 |
Pitch processing of a captured random source slice |
35 |
Gate; depends on working descriptor state not stored in the recipe |
For duration 2, the low two random-choice bits select a quarter-sized source
slice; otherwise the low three bits select an eighth start. LoFi and Pitch
also use random bit 0 for their processing variant. Keep the whole captured
byte. Copy, fixed-source and silence steps capture zero rather than a random
choice. Processing bytes are complete operations, not freely combinable flags.
A replacement made only from durations 1/2 totaling eight eighths and the non-Gate
operations above has no short-slice rounding gap. It has at most eight active
steps, followed by zero in all three lanes through the end of that slot.
An empty replacement clears the three lanes. Replacing one slot must not
alter the other slots or normalize their unused tails. These storage rules
do not validate future source capacity. Stereo execution requires matching
active loop windows: generation uses the primary window for both lanes,
while publication uses each lane's own window.
Stored type selections 5..9 refer to User1..User5, but types 8/9 do not survive
loading: the complete selection byte is reset. This affects the saved selection,
not the contents of the fourth and fifth recipe slots. Gate and short-slice
recipes retain dependencies on working state or source geometry; the file
does not carry that missing context.
Recording Settings
Each recording region starts with three 0x28-byte effect blocks. Their layout
matches the Program effect blocks:
SYSTEM uses type byte 7, SYSTEM2 uses type byte 6, and sixteen u16be words
begin at byte 8. There are three recording effects on every model, including
A5000. Ordinary effect types are 0..54 on A3000 and 0..96 on A4000/A5000.
Output destinations are 0..5 on A3000/A4000 and 0..8 on A5000.
Type changes replace the complete generation-specific parameter vector;
bypass does not reset it. Unused words are not independent controls.
Configuration begins 0x78 bytes into the recording region: body 0x1a8
for SYSTEM, 0x3b8 for SYSTEM2. Offsets below are configuration-relative.
| Offset | Meaning | Encoding/domain |
|---|---|---|
0x00 |
Record type | 0 Replc, 1 New, 2 New+; SYSTEM2 also 3 Save |
0x01, 0x02 |
Mono/stereo, input selection | 0..1, 0..4 |
0x03, 0x04 |
Frequency, pre-trigger selections | 0..6, 0..5 |
0x05, 0x06 |
Start/stop trigger selections | Each 0..1 |
0x07, 0x08 |
Start/stop edge level | Each 0..63 |
0x09 |
Map destination | 0..2, dependent on record type |
0x0a |
Low key | s8 -1..127; -1 is original key |
0x0b |
High key | u8 0..128; 128 is original key |
0x0c, 0x0d |
Original key, auto normalize | 0..127, 0..1 |
0x0e |
External SCSI ID | s8 -1..7 |
0x0f, 0x10 |
External CD track/index | SYSTEM 1..255; SYSTEM2 1..99 |
0x11, 0x12 |
Monitor output/level | 0..5, 0..127 |
0x13 |
Click level | 0..127 |
0x14..0x15 |
Click tempo | u16be hundredths, 8000..15999 |
0x16 |
Click beat | 1..15 |
0x17, 0x18 |
Monitor enable, map auto | Each 0..1 |
0x19, 0x1a |
Map original key, map all keys | 0..127, 0..1 |
0x1b..0x22 |
SYSTEM2 destination disk cache | 8 bytes |
0x23..0x32 |
SYSTEM2 destination volume cache | 16 bytes |
0x33 |
SYSTEM2 A/D input gain selection | 0..1 |
For inputs 0..2, frequency selections display as 44.1k, 22k, 22kLoFi,
11k, 11kLoFi, 5k, 5kLoFi. For digital/optical inputs 3..4, choices
0..3 instead mean ext, ext/2, ext/4, ext/8. Display strings are not
exact sample-rate measurements. Selecting digital/optical input forces stereo,
caps the frequency choice at 3 and resets monitor output to zero. Monitor level
is not an independent setting in those input modes.
New limits map destination to 0..1; New+ allows 0..2. Replc and Save do
not offer independent destination-map editing. Effective low key must not exceed
effective high key after original-key substitution. CD track/index limits for
an actual operation depend on the inserted disc. Destination cache bytes are
snapshots, not a reliable identifier of a currently selected recording target.
Effect Favorites
Each effect row occupies two bytes and stores four zero-based parameter selections: high nibble then low nibble of the first byte, followed by high then low nibble of the second. SYSTEM uses raw effect-ID order for 55 ordinary effects; SYSTEM2 uses displayed effect-number order for 97 ordinary effects. The complete areas occupy 128 and 256 bytes respectively, including dormant rows. These ordering schemes must not be interchanged.
A selection identifies a visible effect parameter. Repeated selections are legal. SYSTEM offers at most the number of visible parameters, capped at four positions; SYSTEM2 offers four positions for nonempty effects. Through has no editable favorites. Unavailable selections and dormant nibbles are retained state, not instructions to reset other favorites or effect parameter words.
Panel And Command Preferences
Each panel area is 64 bytes. The table uses decimal byte indices relative
to body 0xf0 for SYSTEM and 0x300 for SYSTEM2. Choices are stored indices,
not enum values from a software interface.
| Index | Meaning | SYSTEM | SYSTEM2 |
|---|---|---|---|
| 0 | Format drive selection | 0..7 |
0..9 |
| 1 | Effect edit mode | 0 Full, 1 Favorite |
Same |
| 2..5 | Knobs 2..5 control types | 0 Off, 1 On, 2..4 Step 1..3 |
Same |
| 6 | Assignable Key | 0 Knob Control, 1 Damp, 2 Controller Reset, 3 Function Key Play, 4 Knob & Function Key, 5 MIDI to Sample |
Same |
| 7 | Audition trigger | 0 Normal, 1 Toggle |
Same |
| 8 | Function selection | 0 First, 1 Last, 2 Hold |
Same |
| 9 | Page selection | 0 First, 1 Last |
Same |
| 10 | Note display | 0 Name, 1 Number |
Same |
| 11 | Format type | 0..2 Quick/2HD/2DD |
0..5 Logical/Physical/OnePartition/Quick/2HD/2DD |
| 12 | Sample name ordering | 0 no name sort, 1 forward, 2 backward |
Unspecified |
| 13 | Program-on placement | 0 top, 1 mixed |
Unspecified |
| 14 | Bank member visibility | 0 hide, 1 show |
Unspecified |
| 15 | End display coordinates | 0 Address, 1 Length, 2 Time, 3 Beat, 4 Graph |
0..3, no Graph |
| 16 | Import view | Unspecified | 0 All, 1 Sample Bank, 2 Sample, 3 Sequence |
| 17 | Knob 1 type | 0 Page, 1 Sample |
Same |
| 18 | Audition NameView | 0 enabled, 1 disabled |
Semantics incomplete |
| 19 | Layer-selection scope | 0 all pages, 1 selection page |
0 all pages, 1 Tree page |
| 20 | MIDI-to-Sample NameView | 0 enabled, 1 disabled |
Unspecified |
| 21 | Unspecified | Preserve | Preserve |
| 22 | Sample sort | Unspecified | 0 Off, 1 Name, 2 Rch&Name |
| 23, 24 | Tree/Bank sort | Unspecified | 0 Off, 1 Name, 2 Status&Name |
| 25 | CD-R SCSI ID | Unspecified | 0..7 |
| 26 | CD-R write speed | Unspecified | 0..4 mean x1/x2/x4/x6/x8 |
| 27 | Service state | Unspecified | Test Mode popup type; not an ordinary preference |
| 28..63 | Remaining storage | Semantics incomplete | Semantics incomplete |
These bytes store selections, not commands: changing a Format choice does not format a disk; changing Import view or CD-R speed does not start either operation. End display coordinates are not a wave boundary or loop mode. SYSTEM NameView booleans have inverted storage polarity. Do not transfer meanings between generations simply because byte indices coincide.
A3000 name sorting compares all 16 unsigned name bytes without trimming or case folding. Bank-before-Sample grouping is independent of sort direction; Program-on top additionally prioritizes assigned objects. Equal-name ordering is not guaranteed stable. InBank hide affects the selection list, not storage.
Registered Sample And Program Templates
The registered Sample contains a 0xbc-byte A3000 or 0xe0-byte A4000/A5000
parameter block, not a complete SBNK object. Both member lanes, bitmaps, flags,
EQ coefficients and endpoint caches are stored. A stored second lane does not
alone establish active stereo playback or supply a live Wave Data length.
Ordinary Sample allocation applies the registered parameters but clears the
new Sample's assignment bitmap at block 0x18..0x27 and flags at 0x28.
This does not erase those bytes from the saved template. Preserve them during
unrelated template edits; they are not free padding.
Applying a template is not a general recalculation of its EQ coefficients or window caches. Later window repair can be selective, so it must not be relied on to make an inconsistent template valid. Keep dependent values consistent when changing parameters; do not assume a future load will repair them.
The current block uses the SBNK parameter window
relative to its 0x0a8 base. A3000 output groups instead occupy block offsets
0xa5/0xa7 with destination domains 0..4/0..5; current groups occupy
0xd6/0xd8 with 0..12. Native bend/coarse-tune domains are 0..13 and
-127..127; AEG attack mode is 0..1, versus current 0..2. Do not invent
current EQ-type, independent velocity-crossfade widths or portamento rate/time fields in the native
block. A3000 EQ uses Peak/Dip behavior, with the same coefficient calculation
as current Peak/Dip; it does not supply the current selectable shelf types.
EQ gain is stored dB plus 64; displayed LFO speed is stored value plus 1.
In the A3000 block, MAP/OUT byte 0x29 bit0 enables Program-controlled
portamento and bit3 enables velocity crossfade. Both are independent switches;
changing either preserves all other bits, pitch words and wave/loop coordinates.
The native block has no per-Sample portamento rate/time or independent low/high
crossfade widths. Conversion to the current layout maps bit0 to portamento type
0 Off or 1 Program and bit3 to both crossfade widths 0 or 5.
This conversion rule does not add those extended fields to a native block.
The six A3000 Sample controllers use the prefix at block 0x00..0x17,
with device 0..125 and function 0..21. Current controllers use
0xbc..0xd3, with device 0..126 and function 0..36. On a current
record change, copy all four bytes to its prefix record and replace a prefix
function above21 with zero. Unchanged records can retain unequal copies.
Unlike Program A/D routing, current Sample output edits do not project into
the legacy output groups. Current portamento type at 0xda also controls
MAP/OUT bit0: set it for type1 and clear it for other types.
EQ edits update all five coefficient words from the effective frequency, gain and width, plus the current type where present. Unrelated edits preserve the stored vector. A3000 Peak/Dip calculation does not consume or clear the unassigned current-type bits. Velocity ranges permit equal endpoints. Filter and level scaling breakpoint1 must be strictly below breakpoint2 when editing either point.
Loop mode at block 0x3d is an independent value in 0..5, using the same
six modes as a Sample. Changing mode does not move wave or loop coordinates
or recalculate their cached endpoints. It does not repair pre-existing invalid
windows; those bytes remain separate from the mode setting.
In both generations, root-key, sample-rate and fine-tune edits mirror the
selected value to the second stored lane. Pitch-word updates additionally
depend on actual Wave Data attachment: only attached lanes have their pitch
words recalculated. The calculation uses each lane's stored root, rate and fine
tune; attachment is not stored in the registered parameter block. Identical
registered parameters can therefore require different pitch-word updates.
Neither retained second-lane values nor the topology byte establishes actual
bindings. A root/fine change cannot determine all dependent pitch values from
the isolated template alone; the intended Wave Data lanes and their later
initialization also matter. Special key
endpoints are root-relative: when high key is 0x80, an ordinary low key above
root must be reduced to root; when low key is 0xff, an ordinary high key below
root must be raised to root. Window edits can change both lanes and the cached
ends at block 0xb4/0xb8. Length lock determines which endpoint or length is
held constant during a start/end edit. These coupled fields must not be treated
as independent scalar values in an isolated template.
Wave-window bounds depend on the attached Wave Data capacity. Loop-window bounds instead use the retained primary wave interval: loop start must be at or after wave start and loop end at or before wave end. Zero-length loops at an endpoint are representable. Explicit loop intervals can be changed without attachment information when the retained primary wave start, length and cached end are consistent and do not overflow. This does not establish that the retained wave interval fits an absent or future source.
A complete loop interval consists of start and length. Changing it mirrors
start to 0x50/0x54, length to 0x58/0x5c, and writes their sum to the
loop-end cache at 0xb8. It does not change the wave interval, pitch or topology.
For an explicit interval change, a retained unmodified start or length is a
coordinate of that interval; Length Lock governs panel endpoint gestures, not
the representation of an explicitly supplied interval.
Expand Detune at block 0x6a and Dephase at 0x6b can alter the expanded-mono
state at 0x28 bit2. When no right member is bound and either effective value
is nonzero, expansion duplicates the left binding, pitch and wave/loop windows
into the right lane. When a right member is bound, bit2 is set and both effective
values are zero, collapse clears the right binding and bit2 but retains the
right pitch and window values. A true stereo pair without bit2 is not replaced.
Enabled Sample Bank overrides determine the effective values independently.
Width at 0x6c is separate and does not trigger these transitions.
The registered block contains neither actual member bindings nor the Bank context. Identical stored templates can therefore require different topology updates. Retained right-lane values or bit2 alone cannot determine which update is needed, and applying a template is not an unconditional topology repair. Detune/Dephase changes require a defined member/application context; they are not independent scalar edits of the isolated block.
Registered Program storage is also rearranged, not an ordinary PROG payload:
| SYSTEM body | SYSTEM2 body | Contents |
|---|---|---|
0x2a4..0x31b |
0x4ec..0x563 |
Three 40-byte effect blocks |
0x31c..0x32b |
0x564..0x573 |
Four legacy controller records |
| Absent | 0x574..0x5eb |
Effect blocks 4..6 |
| Absent | 0x5ec..0x5fb |
Four current controller records |
| Absent | 0x5fc..0x623 |
Port-B maps, extra effect connection, right/extended A/D, StepWave and retained suffix |
0x32c..0x333 |
0x624..0x62b |
Retained common prefix |
0x334..0x349 |
0x62c..0x641 |
Common effect/A-D/LFO, level, transpose and portamento fields |
0x34a..0x367 |
0x642..0x64b |
Suffix with incomplete semantics |
Common fields and effects follow their generation's parameter encoding.
A3000's four Program controllers occupy 0x31c..0x32b, with four bytes per
record: device 0..125, function 0..63, type 0..3, and signed range
-63..63. There is no second registered controller copy in SYSTEM. SYSTEM2
has both the legacy and current controller copies shown above.
On a current controller record change, copy its four bytes to the corresponding
legacy record and replace a legacy function above 63 with zero. A no-op edit
does not require normalizing previously unequal copies. A3000 has no such
projection. Its common flag byte 0x334 uses only bit6 for LFO synchronization;
preserve bit7. Its LFO waveform domain is 0..5, versus current 0..6.
A3000 has shared A/D routing, not an independent right route. Its common-block
offsets 0x07..0x0a store alternating destinations and levels, with destination
domains 0..4 and 0..5. SYSTEM2's current left outputs at 0x601..0x604
project into common legacy groups at 0x633..0x636 when those outputs change.
Output2 destinations 1..5 map unchanged to legacy group2, and 6..9 map to
group1 after subtracting5. Output1 is applied afterward: 1..4 map unchanged
to group1, and 5..9 map to group2 after subtracting4. Output1 wins when both
outputs map to the same group. Other destinations produce no legacy route.
Right outputs have no additional legacy group. Clear unmatched legacy
destinations but preserve their levels.
Changing a registered effect type resets all 16 parameter words to that type's
generation-specific initial values before applying individual word edits.
Bypass and unchanged-type edits preserve the words. A3000 stores the type in
effect byte7 and retains byte6. SYSTEM2 uses byte6; changing type in slots1..3
also sets legacy byte7 to the type for 0..54, or zero for 55..96.
Slots4..6 have no corresponding legacy-type update. Connections and disabled
routes retain their dormant parameters.
SYSTEM2 retains six effects and port-B state regardless of whether the saving device exposes every setting. Hardware model and storage revision are separate: A4000 has no independently editable port-B state or effects4..6. The registered prefixes and suffixes remain separate from editable parameters. Source-dependent update rules are not fully specified for every registered Sample field.
Unspecified State And Modification Limits
Header gaps, auxiliary state, native panel tails, parts of registered templates and the unused-by-load suffixes have incomplete semantics. A stored value outside a listed domain is not a default, and an unnamed byte is not free space. Preserve unrelated bytes and do not use saved runtime pointers as persistent identities. Independently constructing a complete System File requires more initialization rules than this specification currently supplies.
For axklib's supported operations, see Writer And Alteration.