# Hex Command Reference

## Standard commands:

The following is a list of all available hex commands that may be used in a song. In all cases, the parameters are listed in the order in which they are to be used after the initial command. If a parameter is a number, then that parameter must be the specified constant instead of being variable.

Command | Source | Purpose | Description | Parameters
--- | --- | --- | --- | ---
$DA | Vanilla | Instrument | Sets the instrument for the current channel. | $XX | Instrument to set to. Default limit is $00 to $12.
$DB | Vanilla | Pan | Sets the panning for the current channel. | $XX | Panning value. Must be between $00 and $13. $0A is centered. Note that setting the highest two bits will enable surround sound.
$DC | Vanilla | Pan fade | Fades the pan over time | $XX | Duration
$YY | Final panning value
$DD | Vanilla | Pitch bend | Slides from the currently playing note to the specified note smoothly. | $XX | Delay
$YY | Duration
$ZZ | Note
$DE | Vanilla | Vibrato | Turns on vibrato for the current channel | $XX | Delay
$YY | Duration
$ZZ | Amplitude
$DF | Vanilla | Vibrato off | Turns off vibrato.
$E0 | Vanilla | Global volume | Sets the song's global volume | $XX | Volume
$E1 | Vanilla | Global volume fade | Fades the song's global volume | $XX | Duration
$YY | Volume
$E2 | Vanilla | Tempo | Sets the tempo to the specified value | $XX | Tempo
$E3 | Vanilla | Tempo fade | Fades the tempo to the specified value | $XX | Duration
$YY | Value
$E4 | Vanilla | Global transpose | Transposes all instruments by the value | $XX | Transposition
$E5 | Vanilla (was only functional in carol's MORE.bin, Addmusic405 and AddmusicK because of a memory location bug in the original) | Tremolo | Enables tremolo for the current channel | $XX | Delay
$YY | Duration
$ZZ | Amplitude
$E6 | carol's MORE.bin (was also present in AddmusicM) | Subloop start | Sets the starting point for a subloop | $00 |
$E6 | carol's MORE.bin (was also present in AddmusicM) | Subloop end | Sets the ending point for a subloop | $XX | Loop count
$E7 | Vanilla | Volume | Sets the volume for the current channel | $XX | Volume
$E8 | Vanilla | Volume fade | Fades the volume for the current channel | $XX | Duration
$YY | Volume
$E9 | Vanilla | Loop | Normal loop. Do not use manually. | $XX | Loop point, low byte
$YY | Loop point, high byte
$ZZ | Loop count
$EA | Vanilla | Vibrato fade | Fades to the amplitude specified by $DE over the specified period of time. | $XX | Duration
$EB | Vanilla | Pitch envelope (release) | Bends all subsequent notes from the current note to the current note + the specified number of semitones (negative values--i.e. values above $80--are allowed). | $XX | Delay
$YY | Duration
$ZZ | Semitone difference
$EC | Vanilla | Pitch envelope (attack) | Bends all subsequent notes from the current note + the specified number of semitones to the current note (negative values--i.e. values above $80--are allowed). | $XX | Delay
$YY | Duration
$ZZ | Semitone difference
$ED | carol's MORE.bin (was also present in AddmusicM) | ADSR | Enables a custom ADSR on the current channel. $DA must not be be > $7F. See here for more information. | $DA | Decay (3 bits), attack (7 bits); %0dddaaaa
$SR | Sustain (3 bits), Release (5 bits); %sssrrrrr
$ED | carol's MORE.bin (was also present in AddmusicM) | GAIN | Enables a custom GAIN on the current channel. | $80 |
$YY | GAIN
$EE | Vanilla | Tune channel | Sets the pitch modifier for this channel. | $XX | Tuning
$EF | Vanilla | Echo 1 | Sets some of the echo parameters for this song. | $XX | Which channels have echo, bitwise (76543210)
$YY | Echo volume, left
$ZZ | Echo volume, right
$F0 | Vanilla | Echo off | Turns off echo
$F1 | Vanilla | Echo 2 | Sets some of the echo parameters for this song. | $XX | Echo delay. May only be 00 - 0F
$YY | feedback/reverberation
$ZZ | FIR filter to use. See the echofilter tables in main.asm for more details, but for 99% of the userbase, $01 is "on" and $00 is "off".
$F2 | Vanilla | Echo fade | Fades the echo volume | $XX | Duration
$YY | Final echo volume for left speaker
$ZZ | Final echo volume for right speaker
$F3 | AddmusicM | Sample load | Starts playing the specified sample. Note that the ("", $) command is highly preferred over this. | $XX | Sample to use
$YY | Multiplication pitch
$F4 | AddmusicM | Yoshi drums | Enables yoshi drums on channel #5 | $00 |
$F4 | AddmusicM | Legato | Toggle legato (notes will be played with no break between. This also means that samples will not be rekeyed, so new notes will not start the sample playing from the beginning). Note that when turning off legato, you must do so in the middle of the last note to use this effect, instead of in between notes. | $01 |
$F4 | AddmusicM | Light staccato | Toggle light staccato (notes will be played with less of a delay between). Please be aware that this command is "global"; i.e. it applies to all channels. If you would like to fine-tune the amount of time between notes, you can use the q command. | $02 |
$F4 | AddmusicM | Echo toggle | Toggles the echo for this channel | $03 |
$F4 | AddmusicM | SNES sync | Sends the current song's position to the output registers. | $05 |
$F4 | AddmusicK | Yoshi drums | Enables yoshi drums on the current channel | $06 |
$F4 | AddmusicK | Tempo hike off | Disables the tempo hike caused by the "time is running out!" sound effect. Use this on songs that should never be affected by this, such as the course clear music, game over music, etc. | $07 |
$F4 | AddmusicK | Velocity table | Switch the velocity table to use. By default, a song will use SMW's velocity table, which is rather quiet. Use this to use the standard n-spc velocity table instead, which is a bit louder. The alternative to this command is "#louder" when using older versions of AddmusicK (older than parser version 2). Otherwise it's enabled by default. | $08 |
$F4 | AddmusicK | Restore instrument | Restores all the instrument settings for the current channel. It's the same thing as just calling the currently playing instrument. It does work on custom instruments. | $09 |
$F5 | AddmusicM | FIR filter | Sets the fir filter coefficients. | $X0 | Coefficient 1
$X1 | Coefficient 2
$X2 | Coefficient 3
$X3 | Coefficient 4
$X4 | Coefficient 5
$X5 | Coefficient 6
$X6 | Coefficient 7
$X7 | Coefficient 8
$F6 | AddmusicM | DSP write | Write a value directly to the DSP | $XX | Register to write to
$YY | Value to write
$F8 | AddmusicM | Enable noise | Enables noise for the current channel. Using an instrument that does not use noise will disable it. | $XX | "Pitch" of the noise.
$F9 | AddmusicM | Data send | Sends two bytes of data to the SNES. See asm/SNES/patch.asm for more info. | $XX | The first byte to send.
$YY | The second byte to send.
$FA | AddmusicK | Pitch modulation | Enables pitch modulation | $00 |
$XX | Which channels to enable pitch modulation on, bitwise (7654321-). Channel 0 cannot have pitch modulation.
$FA | AddmusicK | GAIN | Enables GAIN on the current channel | $01 |
$XX | The GAIN value to use
$FA | AddmusicK (relocated from $ED $81 in Addmusic405) | Semitone tune | Tunes the current channel by the specified number of semitones | $02 |
$XX | Number of semitones to tune by
$FA | AddmusicK | Amplify | Multiplies the volume of the current channel by this value + 1. 0 will not modify the volume, whereas FF will (just shy of) double it. Be warned of clipping, however, as SMW's engine was not built to assume high volumes. In other words, don't use this to make your song louder; use it if a specific instrument or something is already playing at max volume and still isn't loud enough. | $03 |
$XX | Value to multiply the volume by
$FA | AddmusicK | Echo buffer reserve | You do not need to use this command manually. In fact, you probably shouldn't. This is inserted at the beginning of every song by the program, and doesn't have much use otherwise. Its sole purpose is to reserve an echo buffer large enough for the song's longest echo delay. This is to prevent the normal echo command from having to do it itself, which is a time-consuming operation that would cause a pause in the middle of the song. Note that if hex command validation is turned off, this command will not be inserted. | $04 |
$XX | The largest echo buffer you plan to use
$FA | AddmusicK 1.0.9 | Hot Patch Preset | Applies a preset that replicates the music playback of a different Addmusic. Note that these settings are "global"; i.e. it applies to all channels. Preset IDs are as following (not all of them have been properly implemented yet, and are subject to change as new ones are added on)... $00 - AddmusicK 1.0.8 and earlier (not counting Beta) $01 - AddmusicK 1.0.9 $02 - AddmusicK Beta $03 - Romi's Addmusic404 $04 - Addmusic405 $05 - AddmusicM $06 - carol's MORE.bin $07 - Vanilla SMW $08-$7F - Reserved. Do not use. $80-$FF - User-defined Preset ID. Note that the preceding presets all use a pre-defined set of bits to use: you don't need to follow the same procedure and can do something else instead. | $7F |
$XX | Preset ID
$FA | AddmusicK 1.0.9 | Hot Patch Toggle Bits | Contains a series of individual patches that can be toggled on and off on a per-bit basis. Note that these settings are "global"; i.e. it applies to all channels. The number of bytes this command takes up is variable: setting the highest bit (%1???????) means you define a second byte that contains an additional seven bits to set on and off (they will otherwise default to off). These bits are pre-defined... Byte 0: %xyzabcde... %x - Define a new byte. Each byte that has this bit set will cause another byte to be defined. By default, all undefined bytes have their bits cleared. %y - When set, glissando runs for only one note. Otherwise, it runs for two notes. %z - When set, during buffer initialization done through the $FA $04 command, echo writes are not initially enabled if a zero echo delay is used (the $F1 command will enable them). Otherwise, echo writes are enabled even if a zero echo delay is used: as a side effect, $FF00-$FF03 will be overwritten in ARAM, meaning extremely large songs may lose some data (most likely sample data) when crossing this region. This must be used at the start of the song on the lowest number channel prior to both any intro markers and notes in order to properly work, otherwise this won't stop $FF00-$FF03 from being overwritten if you are not using echo. %a - When set, the $F3 command will zero out the fractional pitch base. Otherwise, this operation is not performed. %b - When set, $FA $02 (Semitone tune) is not ignored by the $DD command for its target note. Otherwise, $FA $02 (Semitone tune) is ignored by the $DD command's target note. %c - When set, readahead looks inside loops and superloops. Otherwise, readahead does not look inside loops and superloops. %d - When set, the GAIN register is written to first, then the ADSR registers when initializing an instrument. Otherwise, the ADSR registers are written to first, then GAIN. %e - When set, arpeggio notes will not play during rests. Otherwise, they will run normally even if a rest is used. Byte 1: %xyzabcde... %x - Define a new byte. Each byte that has this bit set will cause another byte to be defined. By default, all undefined bytes have their bits cleared. %y - Currently undefined. Please do not set under normal circumstances (unless you're doing your own hot patches: even then, this bit is subject to being used in future Addmusic versions). %z - Currently undefined. Please do not set under normal circumstances (unless you're doing your own hot patches: even then, this bit is subject to being used in future Addmusic versions). %a - Currently undefined. Please do not set under normal circumstances (unless you're doing your own hot patches: even then, this bit is subject to being used in future Addmusic versions). %b - Currently undefined. Please do not set under normal circumstances (unless you're doing your own hot patches: even then, this bit is subject to being used in future Addmusic versions). %c - Currently undefined. Please do not set under normal circumstances (unless you're doing your own hot patches: even then, this bit is subject to being used in future Addmusic versions). %d - Currently undefined. Please do not set under normal circumstances (unless you're doing your own hot patches: even then, this bit is subject to being used in future Addmusic versions). %e - When set, rests are only keyed off if they are detected in readahead. Otherwise, they are keyed off immediately when encountered. All other bytes are currently undefined. They are subject to being used in future Addmusic versions. | $FE |
$... | Bits to set. An extra byte is defined for each byte that the highest bit is set on.
$FB | AddmusicK | Arpeggio | Specifies an arpeggio. Each note after this will play with a specified pattern. Note that this command and its subcommands are compatible with the $F4 $01 command, and in fact combining the two is recommended for certain circumstances. | $XX | Number of notes in the sequence (must be less than $80). If this is 0, then arpeggio is turned off.
$YY | The duration of each note
$... | The sequence of notes. Each byte is the change in pitch from the currently playing note. For example, $FF 00 would alternate between playing one semitone below the current note and the current note itself. A value of $80 at any point indicates a loop point; the sequence will restart there instead of the beginning if one is specified.
$FB | AddmusicK | Trill | A specialized version of the arpeggio command. It implies that you want to alternate between only two notes. | $80 |
$YY | The duration of each note
$ZZ | The change of pitch between the currently playing note and the trilled note.
$FB | AddmusicK | Glissando | If glissando is turned on, then the current note will be rekeyed at increasingly higher/lower pitches. Analogous to sliding your hand down a keyboard. Unlike the other two subcommands, this one's effect is turned off after one note. | $81 |
$YY | The duration of each note
$ZZ | The number of semitones to step up or down by for each new note
$FC | AddmusicK | Remote commands | See the corresponding entry in the syntax reference section for more information. | $WW | Address to jump to, low byte (not used for event type 0)
$XX | Address to jump to, high byte (not used for event type 0)
$YY | The event type
$ZZ | How long to wait when using wait types 1 or 2. Note that a value of $00 is treated as $0100
$FC | AddmusicK 1.0.9 | Remote Gain | See the corresponding entry in the syntax reference section for more information. For the sake of reference, for songs labeled #amk 1, this command is essentially a more customizable version of remote gain and anticipation gain (though in both cases you need a -1 event type to automate instrument restoration unless you want to do something else), with remote gain previously using type 2 and anticipation gain using type 3. | $WW | GAIN value to set on trigger.
$01 |
$XX | The event type
$YY | How long to wait when using wait types 1 or 2. Note that a value of $00 is treated as $0100
$FD | AddmusicK 1.0.9 (relocated from $E6 in Vanilla, carol's MORE.bin and Addmusic405, with carol's MORE.bin only using it for song IDs $01-$1F) (was previously only functional in carol's MORE.bin and Addmusic405) | Tremolo Off | Disables tremolo for the current channel
$FE | AddmusicK 1.0.9 (relocated from $ED in Vanilla, which was never functional due to a missing pointer reference) | Pitch Envelope Off | Turns off pitch envelope.

## Historical commands:

These are hex commands from past Addmusic versions that have been relocated or removed from AddmusicK.

### Vanilla SMW

The highest command ID supported was $F2.

Command | Relocated to | Purpose | Description | Parameters
--- | --- | --- | --- | ---
$E5 | N/A (Became functional in carol's MORE.bin, Addmusic405 and AddmusicK) | Tremolo | Enables tremolo for the current channel. Due to an incorrect memory location reference, this command was de-facto not functional. | $XX | Delay
$YY | Duration
$ZZ | Amplitude
$E6 | $FD | Tremolo Off | Disables tremolo for the current channel. Due to an incorrect memory location reference, this command was de-facto not functional.
$ED | $FE | Pitch Envelope Off | Turns off pitch envelope. The code did exist, but the pointer itself did not exist, therefore this command was never functional.

### Addmusic404 (by Romi)

With the exception of the hex command below, this was nearly identical to Vanilla SMW, and thus Addmusic404 inherits the upper command ID limit of $F2.

Command | Relocated to | Purpose | Description | Parameters
--- | --- | --- | --- | ---
$ED | N/A ($F6 $x5 %1dddaaaa $F6 $x6 %sssrrrrr, where x is the channel ID, is the closest approximation: AMK's ADSR command has the same general functionality, but both writes to a backup table for restoration if interrupted by SFX and also supports GAIN) | ADSR | Enables a custom ADSR on the current channel. See here for more information. Note that unlike AddmusicK's ADSR, this writes directly to the DSP registers and forces on ADSR, meaning GAIN is not supported. | $DA | Decay (3 bits), attack (7 bits); %?dddaaaa
$SR | Sustain (3 bits), Release (5 bits); %sssrrrrr

### carol's MORE.bin

The highest command ID supported was $F2. Note that there are checks for song IDs $20 and up for hex commands $E5 and $E6: if the song ID specified is below $20, then they execute their default command code instead of using custom ones.

Command | Relocated to | Purpose | Description | Parameters
--- | --- | --- | --- | ---
$E4 | N/A ($F4 $02 is the closest approximation, but this toggles light staccato rather than enables it, and $E4 $01 added to this enables the side effect of doing this) | Light staccato | Enable light staccato (notes will be played with less of a delay between). As a side effect, also sets global transposition to 1 semitone. Please be aware that this command is "global"; i.e. it applies to all channels. If you would like to fine-tune the amount of time between notes, you can use the q command. | $AA |
$E5 | $F3 (with an expanded sample ID range) | Sample load | Starts playing the specified sample. Note that the ("", $) command is highly preferred over this. $XX must be $80 or higher. | $XX | Sample to use (subtract $80 to get the internal ID used)
$YY | Multiplication pitch
$E6 | $FD | Tremolo Off | Disables tremolo for the current channel. Only available on song IDs $00-$1F: for $20 and up, it becomes the Subloop command, which works just like AddmusicK's.

### Addmusic405 (by HuFlungDu)

The highest command ID supported was $F2. Contains the majority of carol's MORE.bin except for the repeat section ($E6) command (which was previously limited to song IDs $20 and up) and ADSR ($ED command), which is instead from Romi's Addmusic (Addmusic404), which doesn't utilize the backup instrument table, nor did it support setting the GAIN DSP register directly (instead it forces ADSR mode when used).

Command | Relocated to | Purpose | Description | Parameters
--- | --- | --- | --- | ---
$ED | $F6 (except for the auto-detection of the current voice) | DSP write | Write a value directly to the DSP Writes to the current voice's DSP register when the lower four bits of $XX are $9 or less. | $80 |
$XX | Register to write to
$YY | Value to write
$ED | $FA $02 | Semitone tune | Tunes the current channel by the specified number of semitones | $81 |
$XX | Number of semitones to tune by
$ED | N/A (Technically the code, or at least of the $F7 command which writes one byte at at time, still exists. However, it is not compiled by default.) | Write Data | Writes data to a location in ARAM | $82 |
$XX | Address to write to, high byte
$YY | Address to write to, low byte
$ZZ | Number of bytes to write, high byte
$AA | Number of bytes to write, low byte
$BB | Data byte(s). The size of this parameter is $AAZZ bytes, unlike the others, which are only one byte.
$ED | N/A (Was not reimplemented into AddmusicK) | Write + Execute Code | Copies ASM to a location in ARAM, then executes it. | $83 |
$XX | Address to write to and execute from, high byte
$YY | Address to write to and execute from, low byte
$ZZ | Number of bytes to write, high byte
$AA | Number of bytes to write, low byte
$BB | Data byte(s). The size of this parameter is $AAZZ bytes, unlike the others, which are only one byte.

### AddmusicM

The highest command ID supported was $FA. Contains the majority of carol's MORE.bin except for global transposition ($E4 command) due to sending staccato to its own command slot and not checking for $20 as a song ID due to sending set sample to its own command slot ($F3 command) and overwriting tremolo off with repeat section ($E6 command).

Command | Relocated to | Purpose | Description | Parameters
--- | --- | --- | --- | ---
$F4 | N/A (Was not reimplemented into AddmusicK) | Reset Special Pulse Wave | Resets the special pulse wave back into a square wave. Does not reset the oscillation position. | $04 |
$F7 | N/A (Technically it still exists, but it is not compiled by default) | Write Byte | Writes byte to a location in ARAM | $XX | Address to write to, high byte
$YY | Address to write to, low byte
$ZZ | Data byte to write.
$FA | N/A (Was not reimplemented into AddmusicK) | Special Pulse Wave Oscillation Speed | Sets the oscillation speed of the special pulse wave. The speed is not relative to the music's tempo: instead, the oscillation is on its own tempo value independent of the music. | $XX | The oscillation speed of the pulse wave to use

### AddmusicK Beta

The highest command ID supported was $FC.

Command | Relocated to | Purpose | Description | Parameters
--- | --- | --- | --- | ---
$FA | $FC $XX $01 $03 $00 along with a type -1 remote code call containing $F4 $09 (if the ADSR/GAIN/SRCN was not previously modified) The instrument restoration cannot be fully replicated at this time if the $ED, $F3 and/or $FA $02 commands were used, as the restoration would be done from the backup table, for which there is currently no hex command to do so: instead one would just use the last set of $ED, $F3 and/or $FA $02 commands used to manually do so. This method is not compatible with running Remote Gain at the same time: songs automatically converted from AddmusicK Beta use a special reserved remote code type (in this command's case, 5, and it is designed to run in unison with 6, which takes up a slot normally used for -1 remote code events, hence the new remote code types, which is why 5 and 6 are reserved and shouldn't be used for modern AddmusicK songs) so that the two can run at the same time with automatic instrument restoration. | Anticipation Gain | Sets the GAIN value of a voice whenever the note is keyed off. | $05 |
$XX | GAIN
$FC | $FC $YY $01 $02 $XX along with a type -1 remote code call containing $F4 $09 (if the ADSR/GAIN/SRCN was not previously modified) The instrument restoration cannot be fully replicated at this time if the $ED, $F3 and/or $FA $02 commands were used, as the restoration would be done from the backup table, for which there is currently no hex command to do so: instead one would just use the last set of $ED, $F3 and/or $FA $02 commands used to manually do so. This method is not compatible with running Anticipation Gain at the same time: songs automatically converted from AddmusicK beta use a special reserved remote code type (in this command's case, 6, and yes, for those of you looking at the source, this does use the slot normally taken up by a -1 remote code in order to run in unison with the remote code type 5 event, hence the new remote code types, which is why 5 and 6 are reserved and shouldn't be used for modern AddmusicK songs) so that the two can run at the same time with automatic instrument restoration. | Remote Gain | Sets the GAIN value of a voice some time before a note ends. | $XX | Number of ticks before the note ends to wait for.
$YY | GAIN

## Parameter reference

### Note

For use with the $DD command. Note that for instrument @2, you must subtract 5 from the value in this table. For @9, add 5. For @10, add 6. For @12, subtract 5. For @15, add 8. If you need pitches higher or lower than this, use the multiplier/submultiplier instrument bytes.
Note that you may use a normal note (such as g, f+, o2c, >a-, etc.) instead for this parameter.

| c | c+ | d | d+ | e | f | f+ | g | g+ | a | a+ | b
--- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | ---
o1 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 8A | 8B
o2 | 8C | 8D | 8E | 8F | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97
o3 | 98 | 99 | 9A | 9B | 9C | 9D | 9E | 9F | A0 | A1 | A2 | A3
o4 | A4 | A5 | A6 | A7 | A8 | A9 | AA | AB | AC | AD | AE | AF
o5 | B0 | B1 | B2 | B3 | B4 | B5 | B6 | B7 | B8 | B9 | BA | BB
o6 | BC | BD | BE | BF | C0 | C1 | C2 | C3 | C4 | C5 |  |

### Length

For any parameter that requests a length of time (duration, delay, etc.), use this table as reference.

$C0 | Whole note
$80 | Whole triplet
$60 | Half note
$40 | Half triplet
$30 | Quarter note
$20 | Quarter triplet
$18 | Eighth note
$10 | Eighth triplet
$0C | 16th note
$08 | 16th triplet
$06 | 32nd note
$04 | 32nd triplet
$03 | 64th note
$02 | 64th triplet

Any value in between these may be used as well. For example, $48 is equal to a quarter note tied to an eighth note.

### ADSR

Click on a value in the table to modify the graph.

Value | Attack (seconds) | Decay (seconds) | Sustain (% of normal) | Release (seconds)
00 |  |  | 1/8 |
01 |  |  | 2/8 |
02 |  |  | 3/8 |
03 |  |  | 4/8 |
04 |  |  | 5/8 |
05 |  |  | 6/8 |
06 |  |  | 7/8 |
07 |  |  | 1 |
08 |  |  |  |
09 |  |  |  |
0A |  |  |  |
0B |  |  |  |
0C |  |  |  |
0D |  |  |  |
0E |  |  |  |
0F | 0 |  |  |
10 |  |  |  |
11 |  |  |  |
12 |  |  |  |
13 |  |  |  |
14 |  |  |  |
15 |  |  |  |
16 |  |  |  |
17 |  |  |  |
18 |  |  |  |
19 |  |  |  |
1A |  |  |  |
1B |  |  |  |
1C |  |  |  |
1D |  |  |  |
1E |  |  |  |
1F |  |  |  |
| Time (seconds)
Zoom in | Zoom out

## DSP Register Reference

| $x0 | $x1 | $x2 | $x3 | $x4 | $x5 | $x6 | $x7 | $x8 | $x9 | $xA | $xB | $xC | $xD | $xE | $xF
$0x | Right channel volume | Left channel volume | Pitch (low byte) | Pitch (high byte) | Sample | ADSR 1 | ADSR 2 | Gain | Current envelope value | Current sample value | (null) | (null) | $0C rw MVOLL Left channel master volume | $0D rw EFB Echo feedback | (null) | $0F rw FIR0 FIR coefficient 0
$1x | (null) | (null) | $1C rw MVOLR Right channel master volume | (null) | (null) | $1F rw FIR1 FIR coefficient 1
$2x | (null) | (null) | $2C rw EVOLL Left channel echo | $2D rw PMON Pitch modulation enable | (null) | $2F rw FIR2 FIR coefficient 2
$3x | (null) | (null) | $3C rw EVOLR Right channel echo | $3D rw NON Noise enable | (null) | $3F rw FIR3 FIR coefficient 3
$4x | (null) | (null) | $4C rw KON Key on for all voices | $4D rw EON Echo enable | (null) | $4F rw FIR4 FIR coefficient 4
$5x | (null) | (null) | $5C rw KOFF Key off for all voices | $5D rw DIR Sample table address | (null) | $5F rw FIR5 FIR coefficient 5
$x6 | (null) | (null) | $6C rw FLG Reset, mute, echo-reset, noise clock | $6D rw ESA Echo buffer address | (null) | $6F rw FIR6 FIR coefficient 6
$x7 | (null) | (null) | $7C rw ENDX Voice end flags | $7C rw EDL Echo delay | (null) | $7F rw FIR7 FIR coefficient 7

Return to the main page