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 Toggle
(Ch #5)
Toggles 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
(NOTE: Skipped over earlier versions of AddmusicK until the latest version)
Reset Special Pulse Wave
Resets the special pulse wave back into a square wave. Does not reset the oscillation position. $04
 
$F4
AddmusicK
SNES Sync Toggle
Resets the 16-bit tick counter (representing the song's position) and toggles incrementing the counter per tick and sending it to the output registers.
$05
 
$F4
AddmusicK
Yoshi Drums Toggle
Toggles 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
 
$F4
New
SMW Velocity Table
Switch the velocity table to use. Normally not needed unless you want to switch back in the middle of a song.
$0A
 
$F4
New
Pitch Modulation Toggle
Toggles the pitch modulation for this channel. Channel 0 cannot have pitch modulation.
$0B
 
$F4
New
Yoshi Drums On
Enables yoshi drums on the current channel
$0C
 
$F4
New
Yoshi Drums Off
Disables yoshi drums on the current channel
$0D
 
$F4
New
Echo On
Enable echo for this channel
$0E
 
$F4
New
Echo Off
Disables echo for this channel
$0F
 
$F4
New
Pitch Modulation On
Enables pitch modulation for this channel. Channel 0 cannot have pitch modulation.
$10
 
$F4
New
Pitch Modulation Off
Disables pitch modulation for this channel. Channel 0 cannot have pitch modulation.
$11
 
$F4
New
Legato On
Enables 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).
$12
 
$F4
New
Legato Off
Disables 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.
$13
 
$F4
New
Light Staccato On
Enables 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.
$14
 
$F4
New
Light Staccato Off
Disables light staccato.
$15
 
$F4
New
(relocated from $F4 $05 in AddmusicM)
(NOTE: Skipped over earlier versions of AddmusicK until the latest version)
SNES Sync Toggle
(No Reset)
Toggles incrementing the 16-bit tick counter (representing the song's position) per tick and sending it to the output registers without resetting it first.
$16
 
$F4
New
SNES Sync On
Resets the 16-bit tick counter (representing the song's position) and enables incrementing the counter per tick and sending it to the output registers.
$17
 
$F4
New
SNES Sync Off
Resets the 16-bit tick counter (representing the song's position) and disables incrementing the counter per tick and sending it to the output registers.
$18
 
$F4
New
SNES Sync Resume
Starts the 16-bit tick counter (representing the song's position) without resetting it.
$19
 
$F4
New
SNES Sync Pause
Stops the 16-bit tick counter (representing the song's position) without resetting it.
$1A
 
$F4
New
SNES Sync Reset
Resets the 16-bit tick counter (representing the song's position) without enabling or disabling incrementing the counter per tick and sending it to the output registers.
$1B
 
$F4
New
SNES Sync Increment
Increments the 16-bit tick counter and sends it to the output registers.
$1C
 
$F4
New
Force Key On
Forces the channel to be keyed on regardless of legato or any other setting that would affect when the note is keyed on, unless a SFX is playing on the channnel. This risks causing clicks if done without a prior key off, or if the note was planned on being keyed on anyways.
$1D
 
$F4
New
Force Key Off
Forces the channel to be keyed off regardless of legato or any other setting that would affect when the note is keyed off, unless a SFX is playing on the channnel.
$1E
 
$F4
New
Single Loop Recall
Calls the last $E9 loop called for one more loop.
$20
 
$F4
New
Loop Break
Breaks out of an $E9 loop when it is on its last loop.
$21
 
$F4
New
Superloop Break
Breaks out of an $E6 loop when it is on its last loop.
$22
 
$F4
New
Superloop Break + Terminate Loop
Breaks out of an $E6 loop when it is on its last loop. Additionally, terminates an $E9 loop by zeroing out its counter to avoid problems when looping the entire song. This is a special edge case handler for when you use a loop within a superloop and put the break inside the loop.
$23
 
$F4
New
Toggle Loop Break
Toggles whether or not loop break commands will activate on their last loops for the channel.
$25
 
$F4
New
Enable Loop Break
Enables loop break commands for the channel.
$26
 
$F4
New
Disable Loop Break
Disables loop break commands for the channel. This means they will be passed through until enabled again.
$27
 
$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
New
(relocated from $FA in AddmusicM)
(NOTE: Skipped over earlier versions of AddmusicK until the latest version)
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. $07
$XX
The oscillation speed of the pulse wave to use
 
$FA New
Voice DSP Write Write a value directly to the DSP register corresponding to the current voice $0X
$X is the lower three bits plus $8 ($8-$F) of the DSP register ID for the current voice to write to.
$YY
Value to write
 
$FA New Special Pulse Wave Format Clear + Set Sample ID
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 whenever "SPECIALWAVE.brr" is included in the song as a sample (whether by sample group or in the MML file), and doesn't have much use otherwise. Its sole purpose is to initialize the special pulse wave and set the sample ID to use to modify the special pulse wave. Note that if hex command validation is turned off, this command will not be inserted.
$10
$XX
The sample ID to use
 
$FA New
SNES Sync Clock Divider
Increments the high byte of the sync counter after a certain number of ticks. Zero is the default, making the counter act like a 16-bit word.
$12
$XX
The number of ticks before incrementing the high byte. $00 = 256 ticks.
 
$FA New
Multi-Loop Recall
Calls the last $E9 loop called for another series of loops.
$13
$XX
Loop count
 
 
$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
$F4 $16
(Add $FA $12 $C0 to the beginning of the song to replicate AddmusicM's clock divider behavior)
SNES Sync Toggle
(No Reset)
Toggles incrementing the 16-bit tick counter (representing the song's position) per tick and sending it to the output registers without resetting it first.
The upper 8 bits of the counter increment every 192 ticks instead of every 256 ticks.
$05
 
$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
$FA $07
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

Your browser does not support canvases. The author recommends actually using a competent browser.
Time (seconds)

Zoom inZoom 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