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)...
|
$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...
|
$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. |
||
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. |
||
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 |
||||
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. |
||
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. |
||||
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 |
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 |
||||
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 |
$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 |
|
Time (seconds)
|
$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