A track of a playing song: the song commands it runs, its voice and notes, and the pitch, volume, pan and modulation it gives them. More...
#include <sound/audio_engine_types.h>
Data Fields | |
| u8 | flags |
| SoundTrackFlag. | |
| u8 | unk01 [7] |
| 0x01 ticks until the next command, 0x02 pattern depth (0 to 3), 0x03 repeat count, 0x04 gate of the last note in ticks, 0x05 its key, 0x06 its velocity, 0x07 the last command byte from 0xBD up, which a byte below 0x80 repeats. | |
| u8 | pitchHi |
| Whole semitones of the track's pitch, read as signed and added to each note's key (a sum below 0 plays key 0). | |
| u8 | pitchLo |
| The pitch's fraction, 0 to 255 in 1/256 semitone, passed as the fine pitch to the key-to-frequency step. | |
| s8 | keyOffsetA |
| Semitones, from the song's key-shift command. | |
| s8 | keyOffsetB |
| Semitones, from MusicPlayer_SetPitch. | |
| s8 | tune |
| The tune command's byte - 64: 1/64 semitone. | |
| u8 | fine |
| 1/256 semitone, from MusicPlayer_SetPitch. | |
| s8 | bend |
| The bend command's byte - 64: full bend is bendRange. | |
| u8 | bendRange |
| Semitones a full bend reaches; 2 at reset. | |
| u8 | outVolumeA |
| Right volume: (pan + 128) * scaled volume / 256. | |
| u8 | outVolumeB |
| Left volume: (127 - pan) * scaled volume / 256. | |
| u8 | volume |
| The song's volume command, scaled by volumeScale / 32. | |
| u8 | volumeScale |
| 0 to 64 (full, the reset value): a player volume or fade level of 0 to 0x100 divided by 4. | |
| s8 | pan |
| The pan command's byte - 64, -64 to 63; doubled for output. | |
| s8 | panOffset |
| Added to the doubled pan, from MusicPlayer_SetPan. | |
| s8 | modAmount |
| The LFO's output, modDepth * wave / 64: added to the pitch in 1/16 semitone, to the pan, or scaling the volume by (amount + 128) / 128. | |
| u8 | modDepth |
| 0 to 255, from the modulation command or MusicPlayer_SetModulationDepth; 0 stops the LFO and clears modAmount. | |
| u8 | modTarget |
| SoundModulationTarget. | |
| u8 | lfoSpeed |
| LFO phase step a tick, 22 at reset; 0 stops the LFO and clears modAmount. | |
| u8 | lfoPhase |
| 0 to 255, wrapping; the wave is phase over 0 to 63, 128 - phase over 64 to 191 and phase - 256 over 192 to 255, so -64 to 64. | |
| u8 | unk1b [3] |
| 0x1b LFO delay in ticks (song command), 0x1c its countdown, reloaded by each note, 0x1d track priority added to the player's for its notes. | |
| u8 | tailLevel |
| Each new note's echo level. | |
| u8 | tailLength |
| Each new note's echo length in frames. | |
| struct SoundNote * | notes |
| The notes this track started, newest first, linked through SoundNote.next; PCM notes from SoundWork.pcmNotes and CGB notes. | |
| struct SoundVoice | voice |
| Copied from the player's voice table by the voice command, or set a field at a time by extended commands. | |
| u8 | unk30 [0x10] |
| Not named by TBS code; zeroed with the first 64 bytes at reset. | |
| const u8 * | cursor |
| The next command byte in the song's data, from the header's track pointer; a track's commands end at a finish command (0xB1). | |
| u8 | unk44 [0x0c] |
| Cursors to return to after each of up to three nested patterns. | |
A track of a playing song: the song commands it runs, its voice and notes, and the pitch, volume, pan and modulation it gives them.
Definition at line 275 of file audio_engine_types.h.
| u8 SoundTrack::flags |
bits: 7 active | 6 reset | 3..2 pitch to update | 1..0 volume to update.
Definition at line 278 of file audio_engine_types.h.
Referenced by MusicPlayer_Initialize(), MusicPlayer_ResetActiveTracks(), MusicPlayer_SetLfoSpeed(), MusicPlayer_SetModulationDepth(), MusicPlayer_SetPan(), MusicPlayer_SetPitch(), MusicPlayer_SetVolume(), MusicPlayer_StartSong(), MusicPlayer_StepFade(), MusicTrack_CalcOutput(), and MusicTrack_ClearModulation().
| u8 SoundTrack::unk01[7] |
0x01 ticks until the next command, 0x02 pattern depth (0 to 3), 0x03 repeat count, 0x04 gate of the last note in ticks, 0x05 its key, 0x06 its velocity, 0x07 the last command byte from 0xBD up, which a byte below 0x80 repeats.
Definition at line 283 of file audio_engine_types.h.
| u8 SoundTrack::pitchHi |
Whole semitones of the track's pitch, read as signed and added to each note's key (a sum below 0 plays key 0).
Definition at line 286 of file audio_engine_types.h.
Referenced by MusicTrack_CalcOutput().
| u8 SoundTrack::pitchLo |
The pitch's fraction, 0 to 255 in 1/256 semitone, passed as the fine pitch to the key-to-frequency step.
Definition at line 289 of file audio_engine_types.h.
Referenced by MusicTrack_CalcOutput().
| s8 SoundTrack::keyOffsetA |
Semitones, from the song's key-shift command.
Definition at line 290 of file audio_engine_types.h.
Referenced by MusicTrack_CalcOutput().
| s8 SoundTrack::keyOffsetB |
Semitones, from MusicPlayer_SetPitch.
Definition at line 291 of file audio_engine_types.h.
Referenced by MusicPlayer_SetPitch(), and MusicTrack_CalcOutput().
| s8 SoundTrack::tune |
The tune command's byte - 64: 1/64 semitone.
Definition at line 292 of file audio_engine_types.h.
Referenced by MusicTrack_CalcOutput().
| u8 SoundTrack::fine |
1/256 semitone, from MusicPlayer_SetPitch.
Definition at line 293 of file audio_engine_types.h.
Referenced by Cgb_KeyToFrequency(), MusicPlayer_SetPitch(), and MusicTrack_CalcOutput().
| s8 SoundTrack::bend |
The bend command's byte - 64: full bend is bendRange.
Definition at line 294 of file audio_engine_types.h.
Referenced by MusicTrack_CalcOutput().
| u8 SoundTrack::bendRange |
Semitones a full bend reaches; 2 at reset.
Definition at line 295 of file audio_engine_types.h.
Referenced by MusicPlayer_ResetActiveTracks(), and MusicTrack_CalcOutput().
| u8 SoundTrack::outVolumeA |
Right volume: (pan + 128) * scaled volume / 256.
Definition at line 296 of file audio_engine_types.h.
Referenced by MusicTrack_CalcOutput().
| u8 SoundTrack::outVolumeB |
Left volume: (127 - pan) * scaled volume / 256.
Definition at line 297 of file audio_engine_types.h.
Referenced by MusicTrack_CalcOutput().
| u8 SoundTrack::volume |
The song's volume command, scaled by volumeScale / 32.
Definition at line 298 of file audio_engine_types.h.
Referenced by MusicPlayer_SetVolume(), and MusicTrack_CalcOutput().
| u8 SoundTrack::volumeScale |
0 to 64 (full, the reset value): a player volume or fade level of 0 to 0x100 divided by 4.
Definition at line 301 of file audio_engine_types.h.
Referenced by MusicPlayer_ResetActiveTracks(), MusicPlayer_SetVolume(), MusicPlayer_StepFade(), and MusicTrack_CalcOutput().
| s8 SoundTrack::pan |
The pan command's byte - 64, -64 to 63; doubled for output.
Definition at line 302 of file audio_engine_types.h.
Referenced by MusicPlayer_SetPan(), and MusicTrack_CalcOutput().
| s8 SoundTrack::panOffset |
Added to the doubled pan, from MusicPlayer_SetPan.
Definition at line 303 of file audio_engine_types.h.
Referenced by MusicPlayer_SetPan(), and MusicTrack_CalcOutput().
| s8 SoundTrack::modAmount |
The LFO's output, modDepth * wave / 64: added to the pitch in 1/16 semitone, to the pan, or scaling the volume by (amount + 128) / 128.
Definition at line 306 of file audio_engine_types.h.
Referenced by MusicTrack_CalcOutput(), and MusicTrack_ClearModulation().
| u8 SoundTrack::modDepth |
0 to 255, from the modulation command or MusicPlayer_SetModulationDepth; 0 stops the LFO and clears modAmount.
Definition at line 309 of file audio_engine_types.h.
Referenced by MusicPlayer_SetModulationDepth().
| u8 SoundTrack::modTarget |
Definition at line 310 of file audio_engine_types.h.
Referenced by MusicTrack_CalcOutput(), and MusicTrack_ClearModulation().
| u8 SoundTrack::lfoSpeed |
LFO phase step a tick, 22 at reset; 0 stops the LFO and clears modAmount.
Definition at line 312 of file audio_engine_types.h.
Referenced by MusicPlayer_ResetActiveTracks(), and MusicPlayer_SetLfoSpeed().
| u8 SoundTrack::lfoPhase |
0 to 255, wrapping; the wave is phase over 0 to 63, 128 - phase over 64 to 191 and phase - 256 over 192 to 255, so -64 to 64.
Definition at line 315 of file audio_engine_types.h.
Referenced by MusicTrack_ClearModulation().
| u8 SoundTrack::unk1b[3] |
0x1b LFO delay in ticks (song command), 0x1c its countdown, reloaded by each note, 0x1d track priority added to the player's for its notes.
Definition at line 318 of file audio_engine_types.h.
| u8 SoundTrack::tailLevel |
Each new note's echo level.
Definition at line 319 of file audio_engine_types.h.
Referenced by MusicTrack_SetTailLevel().
| u8 SoundTrack::tailLength |
Each new note's echo length in frames.
Definition at line 320 of file audio_engine_types.h.
Referenced by MusicTrack_SetTailLength().
| struct SoundNote* SoundTrack::notes |
The notes this track started, newest first, linked through SoundNote.next; PCM notes from SoundWork.pcmNotes and CGB notes.
NULL ends the list or leaves it empty.
Definition at line 324 of file audio_engine_types.h.
Referenced by MusicPlayer_StartSong().
| struct SoundVoice SoundTrack::voice |
Copied from the player's voice table by the voice command, or set a field at a time by extended commands.
Definition at line 327 of file audio_engine_types.h.
Referenced by MusicPlayer_ResetActiveTracks(), MusicTrack_ReadVoiceTarget(), MusicTrack_SetVoiceAttack(), MusicTrack_SetVoiceDecay(), MusicTrack_SetVoiceKind(), MusicTrack_SetVoiceLength(), MusicTrack_SetVoicePanOrSweep(), MusicTrack_SetVoiceRelease(), and MusicTrack_SetVoiceSustain().
| u8 SoundTrack::unk30[0x10] |
Not named by TBS code; zeroed with the first 64 bytes at reset.
Definition at line 329 of file audio_engine_types.h.
| const u8* SoundTrack::cursor |
The next command byte in the song's data, from the header's track pointer; a track's commands end at a finish command (0xB1).
Definition at line 332 of file audio_engine_types.h.
Referenced by MusicPlayer_StartSong(), MusicTrack_DispatchStreamCommand(), MusicTrack_OperateWorkByte(), MusicTrack_ReadVoiceTarget(), MusicTrack_SetTailLength(), MusicTrack_SetTailLevel(), MusicTrack_SetVoiceAttack(), MusicTrack_SetVoiceDecay(), MusicTrack_SetVoiceKind(), MusicTrack_SetVoiceLength(), MusicTrack_SetVoicePanOrSweep(), MusicTrack_SetVoiceRelease(), and MusicTrack_SetVoiceSustain().
| u8 SoundTrack::unk44[0x0c] |
Cursors to return to after each of up to three nested patterns.
Definition at line 334 of file audio_engine_types.h.