Paper Mario DX
Paper Mario (N64) modding
 
Loading...
Searching...
No Matches
audio.h
Go to the documentation of this file.
1#ifndef _AUDIO_H_
2#define _AUDIO_H_
3#include "nu/nusys.h"
4#include "nu/nualsgi.h"
5#include "PR/n_abi.h"
6#include "common.h"
7
8typedef s32 s8_24; // 8.24 fixed point
9typedef s32 s16_16; // 16.16 fixed point
10
11typedef u8* AuFilePos;
12typedef u8* WaveData;
13
14#define NO_INSTRUMENT ((Instrument*) -1)
15
16#define AUDIO_SAMPLES 184
17
18#define AU_FX_MAX_TAPS 4
19#define AU_FX_LENGTH (14 * AUDIO_SAMPLES) // 0xA10
20
21#define AU_FILTER_LENGTH (28 * AUDIO_SAMPLES) // 0x1420
22
23#define HARDWARE_OUTPUT_RATE 32000
24
25// duration of a single audio frame sent to the RSP in microseconds (note: this is *not* the FPS of the game loop)
26// determined by: (AUDIO_SAMPLES / HARDWARE_OUTPUT_RATE) = (184 / 32000), expressed in microseconds
27#define AU_FRAME_USEC 5750
28
29#define N_AL_DECODER_IN 0
30#define N_AL_RESAMPLER_OUT 0
31#define N_AL_TEMP_0 0
32#define N_AL_DECODER_OUT 0x170
33#define N_AL_TEMP_1 0x170 // size = 0x170 = 2 * AUDIO_SAMPLES
34#define N_AL_TEMP_2 0x2E0 // size = 0x200 > 2 * AUDIO_SAMPLES
35#define N_AL_MAIN_L_OUT 0x4E0 // size = 0x170 = 2 * AUDIO_SAMPLES
36#define N_AL_MAIN_R_OUT 0x650 // size = 0x170 = 2 * AUDIO_SAMPLES
37#define N_AL_AUX_L_OUT 0x7C0 // size = 0x170 = 2 * AUDIO_SAMPLES
38#define N_AL_AUX_R_OUT 0x930
39
40#define AU_MAX_BUS_VOLUME 0x8000
41
42#define ALIGN16_(val) (((val) + 0xF) & 0xFFF0)
43#define AU_FILE_RELATIVE(base,offset) ((void*)((s32)(offset) + (s32)(base)))
44
45#if VERSION_PAL
46#define VIDEO_FRAMES_PER_SECOND 50
47#define AUDIO_HEAP_SIZE 0x5B000
48#define AUDIO_MAX_SAMPLES (AUDIO_SAMPLES * 2)
49#define AUDIO_COMMAND_LIST_BUFFER_SIZE 0x5558
50#else
51#define VIDEO_FRAMES_PER_SECOND 60
52#define AUDIO_HEAP_SIZE 0x56000
53#define AUDIO_MAX_SAMPLES AUDIO_SAMPLES
54#define AUDIO_COMMAND_LIST_BUFFER_SIZE 0x4000
55#endif
56
57#define ADPCMFBYTES 9
58
59#define DEFAULT_KEYBASE 4800 // 48 semitones --> C3
60
61#define AU_MAX_VOLUME_8 0x7F // 127
62#define AU_MAX_VOLUME_16 0x7FFF
63#define AU_MAX_VOLUME_32 0x7FFFFFFF
64
65#define AU_PAN_MIN 0
66#define AU_PAN_MID 64
67#define AU_PAN_MAX 127
68
69// converts an 8-bit volume to a 16-bit volume. only valid for vol != 0.
70#define AU_VOL_8_TO_16(vol) (((vol) << 8) | 0xFF)
71// converts an 8-bit volume to a 32-bit volume. only valid for vol != 0.
72#define AU_VOL_8_TO_32(vol) (((vol) << 0x18) | 0xFFFFFF)
73
74// maximum number of instrument presets for a BGM file
75#define BGM_MAX_INSTRUMNETS 0x80
76
77#define BGM_DEFAULT_TICKS_PER_BEAT 48
78
79// fixed scale for update counter to avoid precision loss of fractional frames; 1 unit = 0.001 audio frame
80// (ie, prevent truncation when updating tick every 1.5 frames)
81#define BGM_UPDATE_SCALE (1000)
82// 1 unit = 0.01 BPM
83#define BGM_TEMPO_SCALE (100)
84
85// number of audio frames per minute x BGM_UPDATE_SCALE --> units = milli-frames per minute
86#define BGM_MFRAMES_PER_MINUTE (BGM_UPDATE_SCALE * (60 * HARDWARE_OUTPUT_RATE) / AUDIO_SAMPLES)
87
88// default BPM for BGMPlayer
89#define BGM_DEFAULT_BPM 156
90// default masterTempo for BGMPlayer, derived from BGM_DEFAULT_BPM
91#define BGM_DEFAULT_TEMPO (BGM_DEFAULT_BPM * BGM_TEMPO_SCALE)
92
93// just over 100x the default tempo, seemingly chosen to make each tick = 256 audio samples
94// solves (AUDIO_SAMPLES * BGM_MFRAMES_PER_MINUTE) / (BGM_DEFAULT_TICKS_PER_BEAT * x) = 256
95// --> (184 * 10434782) / (48 * x) = 256
96// --> x = (184 * 10434782) / (48 * 256)
97#define BGM_DEFAULT_UPDATE_STEP 156250
98
99// converts a 'tempo' value from BGM command to units suitable for the player update counter
100#define BGM_TEMPO_TO_UPDATE_UNITS(tempo) (BGM_UPDATE_SCALE * (u32)(tempo) / BGM_TEMPO_SCALE)
101
102#define SND_MIN_DURATION 250
103#define SND_MAX_DURATION 10000
104
105#define AU_SONG_NONE -1
106
107#define MUS_QUEUE_SIZE 16
108#define SFX_QUEUE_SIZE 16
109
110// semitone pitch interval in cents
111#define AU_SEMITONE_CENTS 100
112
113// octave pitch interval in cents
114#define AU_OCTAVE_CENTS (12 * AU_SEMITONE_CENTS)
115
116#define ENV_VOL_MAX 0x80 // for 7-bit volumes, 128 (1 << 7) represents full volume
117#define ENV_VOL_SHIFT 7 // Shift required to divide by 128 (normalize 7-bit volumes after a multiply)
118
119#define PRG_MAX_COUNT 0x40
120
121// Multiplies two 7-bit volume values and normalizes the result.
122#define VOL_MULT_2(a, b) ((a)*(b) >> ENV_VOL_SHIFT)
123
124// Multiplies three 7-bit volume values and normalizes the result.
125#define VOL_MULT_3(a, b, c) ((a)*(b)*(c) >> ENV_VOL_SHIFT >> ENV_VOL_SHIFT)
126
127// Multiplies four 7-bit volume values and normalizes the result.
128#define VOL_MULT_4(a, b, c, d) (VOL_MULT_2(VOL_MULT_3(a, b, c), d))
129
130typedef u32 SegData;
131
139
146
153
167
172
181
190
194
205
213
223
224typedef enum BGMSpecialSubops {
225 BGM_SPECIAL_SET_STEREO_DELAY = 1, // sets delay to desync the left or right channel
226 BGM_SPECIAL_SEEK_CUSTOM_ENV = 2, // set active custom envelope index for writing
227 BGM_SPECIAL_WRITE_CUSTOM_ENV = 3, // write custom envelope data
228 BGM_SPECIAL_USE_CUSTOM_ENV = 4, // select which custom envelope to use
232
239
245
251
259
356};
357
362
367
372
374typedef enum BankSet {
375 BANK_SET_AUX = 1, // extra banks loaded at request of BGM file
376 BANK_SET_2 = 2, // loaded during INIT
377 BANK_SET_MUSIC = 3, // loaded during INIT, contains instrument samples for BGM
378 BANK_SET_4 = 4, // loaded during INIT
379 BANK_SET_5 = 5, // loaded during INIT
380 BANK_SET_6 = 6, // loaded during INIT
381} BankSet;
382
385typedef enum BankSetIndex {
386 BANK_SET_IDX_0 = 0, // BANK_SET_AUX
387 BANK_SET_IDX_1 = 1, // BANK_SET_2
388 BANK_SET_IDX_2 = 2, // used only for au_reset_drum_entry/au_reset_instrument_entry
389 BANK_SET_IDX_3 = 3, // BANK_SET_MUSIC
390 BANK_SET_IDX_4 = 4, // BANK_SET_4
391 BANK_SET_IDX_5 = 5, // BANK_SET_5
392 BANK_SET_IDX_6 = 6, // BANK_SET_6
393 BANK_SET_IDX_7 = 7, // also BANK_SET_AUX
394 // higher values are not supported, as bankPatch values
396
397typedef enum AudioType {
400} AudioType;
401
402struct BGMPlayer;
403struct AuGlobals;
404struct AuVoice;
405
406typedef union SeqArgs {
407 u8 raw[4];
408 struct { // cmd E0
409 u16 value;
411 struct { // cmd E1
412 u8 value;
414 struct { // cmd E2
415 u8 cent;
417 struct { // cmd E3
418 u8 effectType;
420 struct { // cmd E4
421 u16 time;
422 u16 value;
424 struct { // cmd E5
425 u16 time;
426 u8 value;
428 struct { // cmd E6
429 u8 index;
430 u8 value;
432 // command E7 unused
433 struct { // cmd E8
434 u8 bank;
435 u8 patch;
437 struct { // cmd E9
438 u8 value;
440 struct { // cmd EA
441 u8 value;
443 struct { // cmd EB
444 u8 value;
446 struct { // cmd EC
447 u8 value;
449 struct { // cmd ED
450 s8 semitone;
452 struct { // cmd EE
453 s8 cent;
455 struct { // cmd EF
456 s16 cents;
458 struct { // cmd F0
459 u8 delay;
460 u8 speed;
461 u8 depth;
463 struct { // cmd F1
464 u8 value;
466 struct { // cmd F2
467 u8 value;
469 // no args for F3 (TrackTremoloStop)
470 struct { // cmd F4
471 u8 pan0;
472 u8 pan1;
474 struct { // cmd F5
475 u8 index;
477 struct { // cmd F6
478 u16 time;
479 u8 value;
481 struct { // cmd F7
482 u8 index;
484 // commands F8-FB unused
485 struct { // cmd FC
486 u16 offset;
487 u8 tableCount;
489 struct { // cmd FD
490 u32 eventInfo;
492 struct { // cmd FE
493 u16 offset;
494 u8 length;
496 struct { // cmd FF
497 u8 type;
498 u8 arg1;
499 u8 arg2;
501} SeqArgs;
502
504typedef struct Fade {
506 /* 0x4 */ s32 baseStep;
507 /* 0x8 */ s16 baseTarget;
508 /* 0xA */ s16 baseTicks;
511 /* 0x14 */ s32 envelopeStep;
512 /* 0x18 */ s16 envelopeTarget;
513 /* 0x1A */ s16 envelopeTicks;
514} Fade; // size = 0x10
515
516typedef struct AuDelay {
517 /* 0x00 */ u32 input;
518 /* 0x04 */ u32 output;
519 /* 0x08 */ s16 ffcoef; // feedforward coef
520 /* 0x0A */ s16 fbcoef; // feedback coef
521 /* 0x0C */ s16 gain;
522 /* 0x0E */ char pad_0E[2];
523 /* 0x10 */ f32 rsinc;
524 /* 0x14 */ f32 rsval;
525 /* 0x18 */ s32 rsdelta;
526 /* 0x1C */ f32 rsgain;
527 /* 0x20 */ struct AuLowPass* activeLowpass; // can be null, same as lowpassTemplate when in use
528 /* 0x24 */ struct AuLowPass* lowpassTemplate; // pre-allocated and reused for active AuLowPass
529 /* 0x28 */ struct AuResampler* activeResampler; // can be null, same as resamplerTemplate when in use
530 /* 0x2C */ struct AuResampler* resamplerTemplate; // pre-allocated and reused for active AuResampler
531} AuDelay; // size = 0x30
532
533typedef struct AuFX {
534 /* 0x00 */ s16* base; // start of the delay line buffer
535 /* 0x04 */ s16* input; // current read position of the delay line buffer
536 /* 0x08 */ s32 length; // length of the delay line buffer
537 /* 0x0C */ AuDelay* delays; // set of delays/taps that constitute this effect
538 /* 0x10 */ u8 delayCount; // number of AuDelay in delays
539} AuFX; // size = 0x14
540
541typedef struct AuLowPass {
542 /* 0x00 */ s16 fc;
543 /* 0x02 */ s16 fgain;
544 /* 0x04 */ char pad_04[4];
545 /* 0x08 */ s16 fccoef[16];
546 /* 0x28 */ POLEF_STATE* fstate;
547 /* 0x2C */ s32 first;
548} AuLowPass; // size = 0x30
549
550typedef struct AuFilter {
551 /* 0x00 */ s16* base; // (unused) buffer for filter history
552 /* 0x04 */ char pad_04[2];
553 /* 0x06 */ s16 unused_06;
554 /* 0x08 */ s16 unused_08;
555 /* 0x0A */ char pad_0A[2];
558} AuFilter; // size = 0x14
559
560typedef struct AuFxBus {
561 /* 0x00 */ u16 gain;
562 /* 0x02 */ char pad_02[2];
563 /* 0x04 */ AuFX* fxL;
564 /* 0x08 */ AuFX* fxR;
565 /* 0x0C */ u8 curEffectType;
566 /* 0x0D */ char pad_0D[3];
567 /* 0x10 */ struct AuPVoice* head;
568 /* 0x14 */ struct AuPVoice* tail;
569} AuFxBus; // size = 0x18
570
571 // ALDMAproc in PM has an extra arg added for bypassing DMA transfers for static audio data
572 // (which is always available in RAM), so we have ALDMAproc2 and ALDMANew2.
573typedef s32 (*ALDMAproc2)(s32 addr, s32 len, void *state, u8 arg3);
574typedef ALDMAproc2 (*ALDMANew2)(void *state);
575
576// based on ALLoadFilter
577typedef struct AuLoadFilter {
578 /* 0x00 */ ADPCM_STATE* state;
579 /* 0x04 */ ADPCM_STATE* lstate;
580 /* 0x08 */ ALRawLoop loop;
581 /* 0x14 */ struct Instrument* instrument;
582 /* 0x18 */ s32 bookSize;
583 /* 0x1C */ ALDMAproc2 dmaFunc;
584 /* 0x20 */ NUDMAState* dmaState;
585 /* 0x24 */ s32 sample;
586 /* 0x28 */ s32 lastsam;
587 /* 0x2C */ s32 first;
588 /* 0x30 */ s32 memin;
589} AuLoadFilter; // size = 0x34
590
591// based on ALResampler
592typedef struct AuResampler {
594 /* 0x04 */ f32 ratio;
595 /* 0x08 */ f32 delta;
596 /* 0x0C */ b32 first;
597} AuResampler; // size = 0x10
598
599// envelope mixer -- based on ALEnvMixer
600typedef struct AuEnvMixer {
601 /* 0x00 */ ENVMIX_STATE* state;
602 /* 0x04 */ s16 pan;
603 /* 0x06 */ s16 volume;
604 /* 0x08 */ s16 cvolL;
605 /* 0x0A */ s16 cvolR;
606 /* 0x0C */ s16 dryamt;
607 /* 0x0E */ s16 wetamt;
608 /* 0x10 */ s16 lratl;
609 /* 0x12 */ s16 lratm;
610 /* 0x14 */ s16 ltgt;
611 /* 0x16 */ s16 rratl;
612 /* 0x18 */ s16 rratm;
613 /* 0x1A */ s16 rtgt;
614 /* 0x1C */ s32 delta;
615 /* 0x20 */ s32 segEnd;
616 /* 0x24 */ b32 dirty;
617 /* 0x28 */ s32 motion;
618} AuEnvMixer; // size = 0x2C
619
620// based on N_PVoice
621typedef struct AuPVoice {
622 /* 0x00 */ struct AuPVoice* next; // next voice on the same fx bux
626 /* 0x74 */ s16 unused_74;
627 /* 0x76 */ char pad_76[2];
628 /* 0x78 */ u8 busID;
629 /* 0x79 */ u8 index;
630 /* 0x7A */ char pad_7A[2];
631} AuPVoice; // size = 0x7C
632
633// based on N_ALSynth
634typedef struct AuSynDriver {
635 /* 0x00 */ s32 curSamples;
636 /* 0x04 */ s32 unused_04;
637 /* 0x08 */ s32 outputRate;
638 /* 0x0C */ s32 num_pvoice;
639 /* 0x10 */ s32 num_bus;
640 /* 0x14 */ ALDMANew2 dmaNew; // pointer to nuAuDmaNew
641 /* 0x18 */ ALHeap* heap;
642 /* 0x1C */ AuPVoice* pvoices;
643 /* 0x20 */ AuFxBus* fxBus;
644 /* 0x24 */ s32* dryAccumBuffer; // buffer to accumulate dry samples from each bus during audio rendering
645 /* 0x28 */ s32* wetAccumBuffer; // buffer to accumulate wet samples from each bus during audio rendering
647
648typedef struct SoundRequest {
649 /* 0x0 */ u16 soundID;
650 /* 0x2 */ u16 toReplaceID; // if nonzero, the new sound will prefer stealing a voice from any player with this soundID
651 /* 0x4 */ s16 volume;
652 /* 0x6 */ s16 pitchShift;
653 /* 0x8 */ s8 pan;
654 /* 0x9 */ char pad_9[1];
655} SoundRequest; // size = 0xA
656
657typedef struct EnvelopeData {
658 /* 0x00 */ u8* cmdListPress;
659 /* 0x04 */ u8* cmdListRelease;
660} EnvelopeData; // size = 0x8
661
662typedef struct EnvelopeOffset {
663 /* 0x00 */ u16 offsetPress;
664 /* 0x02 */ u16 offsetRelease;
665} EnvelopeOffset; // size = 0x4;
666
667typedef struct EnvelopePreset {
668 /* 0x00 */ u8 count;
669 /* 0x01 */ char pad_01[3];
670 /* 0x04 */ EnvelopeOffset offsets[1]; // variable size
672
673// partially ALWaveTable?
674typedef struct Instrument {
675 /* 0x00 */ u8* wavData;
676 /* 0x04 */ u32 wavDataLength;
678 /* 0x0C */ s32 loopStart;
679 /* 0x10 */ s32 loopEnd;
680 /* 0x14 */ s32 loopCount;
681 /* 0x18 */ s16* predictor;
682 /* 0x1C */ u16 codebookSize;
683 /* 0x1E */ u16 keyBase;
684 /* 0x20 */ union {
685 f32 pitchRatio; // ratio of sample rate to hardware output rate
686 s32 sampleRate;
687 };
688 /* 0x24 */ u8 type;
689 /* 0x25 */ b8 useDma; // set to false to bypass DMA transfer while loading data -- only do this if the audio samples/codebook are static
690 /* 0x26 */ s8 unused_26;
691 /* 0x27 */ s8 unused_27;
692 /* 0x28 */ s8 unused_28;
693 /* 0x29 */ s8 unused_29;
694 /* 0x2A */ s8 unused_2A;
695 /* 0x2B */ s8 unused_2B;
697} Instrument; // size = 0x30;
698
700
701typedef struct SoundLerp {
702 /* 0x0 */ s16_16 current;
703 /* 0x4 */ s16_16 step;
704 /* 0xA */ s16 time;
705 /* 0x8 */ s16 goal;
706} SoundLerp; // size = 0xC
707
708typedef struct SoundPlayChange {
709 union {
710 u32 all;
711 struct {
712 u8 tune;
713 u8 volume;
714 u8 pan;
715 u8 reverb;
716 };
717 };
719
720typedef struct SoundPlayer {
722 /* 0x04 */ char pad_4[0xC];
729 /* 0x58 */ f32 pitchRatio;
730 /* 0x5C */ s16 sfxVolume;
732 /* 0x60 */ SoundLerp tuneLerp;
734 /* 0x78 */ u8 cmdListOneShot[8];
736 /* 0x84 */ s8 alternativeType;
737 /* 0x85 */ u8 triggers;
738 /* 0x86 */ char pad_86[2];
739 /* 0x88 */ s8* loopStartPos;
740 /* 0x8C */ u8 loopIterCount; // loopIterCount = 0 for infinite loop
741 /* 0x8D */ char pad_8D[1];
742 /* 0x8E */ u16 delay;
743 /* 0x90 */ u16 playLength;
744 /* 0x92 */ s16 coarseTune;
745 /* 0x94 */ s8 fineTune;
746 /* 0x95 */ char pad_95[1];
747 /* 0x96 */ u16 curSoundID;
748 /* 0x98 */ u8 priority;
749 /* 0x99 */ u8 exclusiveID;
750 /* 0x9A */ u8 sfxParamsFlags;
751 /* 0x9B */ u8 sfxPan;
752 /* 0x9C */ u8 reverb;
753 /* 0x9D */ u8 instrumentIndex; // ?
754 /* 0x9E */ u8 envelopePreset;
755 /* 0x9F */ u8 playVelocity;
756 /* 0xA0 */ u8 unused_A0;
757 /* 0xA1 */ u8 randomPitch;
758 /* 0xA2 */ u8 randomVelocity;
759 /* 0xA3 */ s8 randomUnused;
761 /* 0xA6 */ s16 masterVolume;
762 /* 0xA8 */ u8 masterPan;
763 /* 0xA8 */ u8 state;
764 /* 0xA9 */ char pad_AA[2];
765} SoundPlayer; // size = 0xAC
766
768 union {
769 /* 0x0 */ s32 raw;
770 struct {
771 /* 0x0 */ u8 index;
772 /* 0x1 */ char pad_01[0x2];
773 /* 0x3 */ u8 volume;
774 };
775 };
776} SoundManagerMusicEvent; // size = 4
777
779 /* 0x0 */ u16 data[3];
780} SoundManagerCustomCmdList; // size = 6
781
782typedef struct SoundManager {
783 /* 0x000 */ struct AuGlobals* globals;
784 /* 0x004 */ struct AuVoice* curVoice;
785 /* 0x008 */ u8* sefData;
786 /* 0x00C */ s32* normalSounds[8];
787 /* 0x02C */ s32* extraSounds;
788 /* 0x030 */ s32 frameCounter;
789 /* 0x034 */ s32 nextUpdateStep;
792 /* 0x040 */ Fade fadeInfo;
793 /* 0x05C */ s32 busVolume;
794 /* 0x060 */ s32 randomValue;
795 /* 0x064 */ s32* customReverbParams[8];
796 /* 0x084 */ s8 customReverbAmounts[8];
798 /* 0x08D */ s8 defaultReverbAmt;
799 /* 0x08E */ char pad_8E[2];
802 /* 0x0B8 */ u16 baseVolume;
803 /* 0x0BA */ s16 prevUpdateResult;
804 /* 0x0BC */ u8 priority;
805 /* 0x0BD */ u8 firstVoice;
806 /* 0x0BE */ u8 busID;
807 /* 0x0BF */ u8 curVoiceIndex;
808 /* 0x0C0 */ u8 state;
809 /* 0x0C1 */ char pad_C1[1];
811 /* 0x162 */ s8 unused_162;
812 /* 0x163 */ u8 sfxQueueReadPos;
813 /* 0x164 */ u8 sfxQueueWritePos;
814 /* 0x165 */ s8 unused_165;
815 /* 0x166 */ char pad_166[2];
816 /* 0x168 */ s32 resetPending;
817 /* 0x16C */ SoundPlayer players[8];
818} SoundManager; // size = 0x6CC
819
820typedef struct SoundInstance {
821 /* 0x00 */ s32 flags;
822 /* 0x04 */ s32 soundID;
823 /* 0x08 */ s32 sourceFlags;
824 /* 0x0C */ u8 volume;
825 /* 0x0D */ u8 pan;
826 /* 0x0E */ s16 pitchShift;
827 /* 0x10 */ Vec3f pos;
828} SoundInstance; // size = 0x1C
829
830typedef struct AlternatingSoundSet {
831 /* 0x00 */ s32* sounds;
832 /* 0x04 */ s16 soundCount;
833 /* 0x06 */ s16 curIndex;
834} AlternatingSoundSet; // size = 0x08
835
836typedef struct AuVoice {
838 /* 0x04 */ f32 pitchRatio;
839 /* 0x08 */ s32 delta;
840 /* 0x0C */ s16 volume; // final combined output volume
841 /* 0x0E */ u8 pan;
842 /* 0x0F */ u8 reverb;
843 /* 0x10 */ u8 busID;
844 /* 0x11 */ char pad_11[3];
846 /* 0x1C */ u8* cmdPtr;
847 /* 0x20 */ s32 unused_20;
848 /* 0x24 */ s32 envDuration;
849 /* 0x28 */ s32 envTimeLeft;
850 /* 0x2C */ f32 envDelta;
851 /* 0x30 */ s32 envScale;
852 /* 0x34 */ u8* loopStart; // start position in command list for loop
853 /* 0x38 */ u8 loopCounter;
854 /* 0x39 */ u8 envInitial;
855 /* 0x3A */ u8 envTarget;
857 /* 0x3C */ u8 unused_3C;
858 /* 0x3D */ u8 envelopeFlags;
861 /* 0x40 */ s16 clientVolume; // volume set by the client (BGM/MSEQ/Sound player) before any envelope is applied
862 /* 0x42 */ u8 donePending; // true when a voice has completed its release phase and is ready for cleanup
863 /* 0x43 */ u8 syncFlags;
864 /* 0x44 */ s8 clientPriority;
865 /* 0x45 */ u8 priority;
866 /* 0x46 */ char pad_46[2];
867} AuVoice; // size = 0x48
868
869typedef struct BGMFileInfo {
870 /* 0x10 */ u8 timingPreset;
871 /* 0x11 */ char pad_11[3];
872 /* 0x14 */ u16 compositions[4];
873 /* 0x1C */ u16 drums;
874 /* 0x1E */ u16 drumCount;
875 /* 0x20 */ u16 instruments;
877} BGMFileInfo; // size = 0x14
878
879typedef struct BGMHeader {
880 /* 0x00 */ s32 signature; // 'BGM '
881 /* 0x04 */ s32 size; // including header
882 /* 0x08 */ s32 name;
883 /* 0x0C */ char pad_C[4];
884 /* 0x10 */ BGMFileInfo info;
885} BGMHeader; // size = 0x24
886
887typedef struct BGMDrumInfo {
888 /* 0x0 */ u16 bankPatch; // upper = BankSetIndex, lower = patch
889 /* 0x2 */ u16 keyBase;
890 /* 0x4 */ u8 volume;
891 /* 0x5 */ s8 pan;
892 /* 0x6 */ u8 reverb;
893 /* 0x7 */ u8 randTune;
894 /* 0x8 */ u8 randVolume;
895 /* 0x9 */ u8 randPan;
896 /* 0xA */ u8 randReverb;
897 /* 0xB */ char pad_B[1];
898} BGMDrumInfo; // size = 0xC
899
900typedef struct BGMInstrumentInfo {
901 /* 0x00 */ u16 bankPatch; // upper = BankSetIndex, lower = patch
902 /* 0x02 */ u8 volume;
903 /* 0x03 */ s8 pan;
904 /* 0x04 */ u8 reverb;
905 /* 0x05 */ s8 coarseTune;
906 /* 0x06 */ s8 fineTune;
907 /* 0x07 */ char pad_7[1];
908} BGMInstrumentInfo; // size = 0x8
909
910typedef struct AUFileMetadata {
911 /* 0x00 */ s32 signature; // file type identifer: 'SBN ', 'SEF ', etc
912 /* 0x04 */ s32 size; // full file size, including header and data
914
915typedef struct SBNFileEntry {
916 /* 0x0 */ s32 offset;
917 union {
918 /* 0x4 */ u32 data;
919 //TODO try replacing the data field with these
920 struct {
921 /* 0x4 */ s8 fmt;
922 /* 0x5 */ char pad_05[1];
923 /* 0x6 */ s16 size;
924 };
925 };
926} SBNFileEntry; // size = 0x8
927
928typedef struct SBNHeader {
929 /* 0x00 */ AUFileMetadata mdata; // uses identifer 'SBN '
930 /* 0x08 */ char unused_08[8];
931 /* 0x10 */ s32 fileListOffset; // offset in the SBN file of the file table (== sizeof(SBNHeader))
932 /* 0x14 */ s32 numEntries; // number of entries in the SBN file table
933 /* 0x18 */ s32 fullFileSize; // full size of the SBN file (unread)
934 /* 0x1C */ s32 versionOffset;
935 /* 0x20 */ char unused_04[4];
936 /* 0x24 */ s32 INIToffset;
937 /* 0x28 */ char unused_28[24];
938 /* 0x40 */ SBNFileEntry entries[0];
939} SBNHeader; // size = 0x40
940
941typedef struct SEFHeader {
942 /* 0x00 */ AUFileMetadata mdata; // uses identifer 'SEF '
943 /* 0x08 */ s32 name;
944 /* 0x0C */ char unused_0C[2]; // always 0
945 /* 0x0E */ u8 hasExtraSection; // always 1
946 /* 0x0F */ char unused_0F[1]; // always 0
947 /* 0x10 */ u16 sections[8];
948 /* 0x20 */ u16 section2000;
949} SEFHeader; // size = 0x22
950
951typedef struct INITHeader {
952 /* 0x00 */ AUFileMetadata mdata; // uses identifer 'INIT'
953 /* 0x08 */ u16 bankListOffset;
954 /* 0x0A */ u16 bankListSize;
955 /* 0x0C */ u16 songListOffset;
956 /* 0x0E */ u16 songListSize;
957 /* 0x10 */ u16 mseqListOffset;
958 /* 0x12 */ u16 mseqListSize;
959 /* 0x14 */ char pad_14[0xC];
960} INITHeader; // size = 0x20
961
962typedef struct InitSongEntry {
963 /* 0x0 */ u16 bgmFileIndex; // required BGM file
964 /* 0x2 */ u16 bkFileIndex[3]; // optional BK files for this track
965} InitSongEntry; // size = 0x8
966
967typedef struct InitBankEntry {
968 /* 0x0 */ u16 fileIndex;
969 /* 0x2 */ u8 bankIndex;
970 /* 0x3 */ u8 bankSet;
971} InitBankEntry; // size = 4
972
973#define INIT_BANK_BUFFER_SIZE 80
974
975typedef struct PERHeader {
976 /* 0x00 */ AUFileMetadata mdata; // uses identifer 'PER ' or 'PRG '
977 /* 0x08 */ char pad_08[8];
978} PERHeader; // size = 0x10
979
980typedef struct PEREntry {
981 /* 0x00 */ BGMDrumInfo drums[12];
982} PEREntry; // size = 0x90;
983
984typedef struct BKHeader {
985 /* 0x00 */ u16 signature; // 'BK'
986 /* 0x02 */ char pad_02[2];
987 /* 0x04 */ s32 size;
988 /* 0x08 */ s32 name;
989 /* 0x0C */ u16 format; // 'CR', 'DR', 'SR'
990 /* 0x0E */ u8 swizzled;
991 /* 0x0E */ char pad_0E[3];
992 /* 0x12 */ u16 instruments[16];
998 /* 0x3C */ u16 envelopesStart;
1000} BKHeader; // size = 0x40
1001
1008typedef struct BKFileBuffer {
1009 /* 0x00 */ BKHeader header;
1010 /* 0x40 */ u8 data[0x800];
1011} BKFileBuffer; // size 0x840
1012
1013typedef struct AuEffectChange {
1014 /* 0x0 */ u8 type;
1015 /* 0x1 */ u8 changed;
1016 /* 0x2 */ char pad_02[2];
1018
1019typedef struct BGMPlayerSnapshot {
1020 /* 0x00 */ struct BGMPlayer* bgmPlayer;
1021 /* 0x04 */ u8 assigned;
1022 /* 0x05 */ u8 priority;
1024
1025// found at 801D57A0
1026typedef struct AuGlobals {
1027 /* 0x0000 */ f32 outputRate;
1031 /* 0x001C */ s32 baseRomOffset;
1033 /* 0x0024 */ s32 fileListLength;
1034 /* 0x0028 */ char pad_28[4];
1035 /* 0x002C */ InitSongEntry* songList;
1036 /* 0x0030 */ s32 songListLength;
1037 /* 0x0034 */ s32 bkFileListOffset;
1038 /* 0x0038 */ s32 bkListLength;
1039 /* 0x003C */ u16* extraFileList;
1042 /* 0x0051 */ u8 channelDelayBusID;
1043 /* 0x0052 */ u8 channelDelayTime;
1044 /* 0x0053 */ u8 channelDelaySide;
1045 /* 0x0054 */ PEREntry* dataPER;
1047 /* 0x005C */ struct BGMHeader* dataBGM[2];
1048 /* 0x0064 */ struct MSEQHeader* dataMSEQ[2];
1050 /* 0x0074 */ struct BGMPlayer* resumeCopyTo;
1051 /* 0x0078 */ struct BGMPlayer* resumeCopyFrom;
1052 /* 0x007C */ s32 resumeSongName;
1053 /* 0x0080 */ b32 resumeRequested;
1054 /* 0x0084 */ s32 resumeFadeTime;
1055 /* 0x0088 */ s32 resumeFadeStart;
1056 /* 0x008C */ s32 resumeFadeEnd;
1061 /* 0x00A0 */ SEFHeader* dataSEF;
1062 /* 0x00A4 */ AuCallback audioThreadCallbacks[2]; // 0 = on begin update, 1 = unimplemented
1066 /* 0x05EC */ InstrumentBank bankSet2[16];
1067 /* 0x09EC */ InstrumentBank bankSet4[16];
1068 /* 0x0DEC */ InstrumentBank bankSet5[16];
1069 /* 0x11EC */ InstrumentBank bankSet6[4];
1070 /* 0x12EC */ InstrumentBank* bankSets[8];
1071 /* 0x130C */ u8 channelDelayState;
1072 /* 0x130D */ char pad_130D[3];
1073 /* 0x1310 */ BKFileBuffer* auxBanks[3];
1074 /* 0x131C */ char pad_131C[4];
1075 /* 0x1320 */ AuVoice voices[24];
1076} AuGlobals; // size = 0x19E0
1077
1078typedef struct BGMPlayerTrack {
1084 /* 0x18 */ s8_24 insVolume;
1088 /* 0x28 */ s32 delayTime;
1089 /* 0x2C */ s16_16 proxVolume;
1093 /* 0x38 */ s16 detune;
1094 /* 0x3A */ s16 tremoloDelay;
1095 /* 0x3C */ char pad_3C[2];
1096 /* 0x3E */ s16 detourLength;
1098 /* 0x44 */ u16 patch;
1100 /* 0x48 */ s8 insFineDetune;
1101 /* 0x49 */ s8 volume;
1102 /* 0x4A */ u8 insPan;
1103 /* 0x4B */ u8 insReverb;
1104 /* 0x4C */ u8 pressOverride;
1107 /* 0x4F */ u8 proxVol1;
1108 /* 0x50 */ u8 proxVol2;
1109 /* 0x51 */ u8 polyVoiceCount;
1110 /* 0x52 */ u8 firstVoice;
1111 /* 0x53 */ u8 lastVoice;
1112 /* 0x54 */ u8 polyphonicIdx;
1113 /* 0x55 */ u8 tremoloRate;
1114 /* 0x56 */ u8 tremoloDepth;
1116 /* 0x58 */ u8 isDrumTrack;
1117 /* 0x59 */ u8 linkedTrackID;
1118 /* 0x5A */ u8 muted;
1119 /* 0x5B */ s8 busID;
1120 /* 0x5C */ u8 index;
1121 /* 0x5D */ char pad_5D[3];
1122} BGMPlayerTrack; // size = 0x60;
1123
1124typedef struct SeqNote {
1125 /* 0x00 */ Instrument* ins;
1126 /* 0x00 */ f32 pitchRatio;
1127 /* 0x08 */ s16 volume;
1128 /* 0x0A */ s16 detune;
1129 /* 0x0C */ s32 length;
1130 /* 0x10 */ u16 tremoloDelay;
1131 /* 0x12 */ u8 tremoloDepth;
1132 /* 0x12 */ u8 tremoloPhase;
1133 /* 0x14 */ s16 randDetune;
1134 /* 0x16 */ u8 velocity;
1135 /* 0x17 */ u8 pendingTick;
1136} SeqNote; // size = 0x18;
1137
1138typedef struct BGMPlayer {
1139 /* 0x000 */ AuGlobals* globals;
1141 /* 0x008 */ s32 nextUpdateStep;
1144 /* 0x014 */ s32 frameCounter;
1146 /* 0x01C */ s32 songName;
1147 /* 0x020 */ s32 pushSongName;
1148 /* 0x024 */ s32 bgmFileIndex;
1149 /* 0x028 */ s32 songID;
1150 /* 0x02C */ Fade fadeInfo;
1151 /* 0x048 */ s32 busVolume;
1152 /* 0x04C */ u8 effectIndices[4];
1153 /* 0x050 */ s32 randomValue1;
1154 /* 0x054 */ s32 randomValue2;
1155 /* 0x058 */ u16 unk_58; // related to legacy command system, unused
1156 /* 0x05A */ u16 unk_5A; // related to legacy command system, unused
1157 /* 0x05C */ s16 prevUpdateResult; // unused, may indicate error status
1158 /* 0x05E */ char pad_5E[2];
1159 /* 0x060 */ s32 curVariation;
1160 /* 0x064 */ struct BGMHeader* bgmFile;
1161 /* 0x068 */ SegData* compReadPos;
1162 /* 0x06C */ SegData* compStartPos;
1164 /* 0x074 */ u8* tickRatePtr; // related to legacy command system, unused
1167 /* 0x080 */ BGMDrumInfo* drums[12];
1168 /* 0x0B0 */ s32 masterTempo;
1172 /* 0x0C0 */ s8_24 masterVolume;
1176 /* 0x0D0 */ f32 playbackRate;
1177 /* 0x0D4 */ SeqArgs seqCmdArgs;
1180 /* 0x168 */ u8 compLoopCounters[4];
1181 /* 0x16C */ s32 proxMixValue;
1182 /* 0x170 */ u8 proxMixID;
1183 /* 0x171 */ u8 proxMixVolume;
1184 /* 0x172 */ char pad_172[2];
1185 /* 0x174 */ s16 customPressEnvelopes[8][9];
1186 /* 0x204 */ u8* trackVolsConfig;
1187 /* 0x208 */ u16 masterTempoBPM;
1188 /* 0x20A */ u16 maxTempo;
1190 /* 0x20E */ s16 detune;
1191 /* 0x210 */ u8 compLoopDepth;
1194 /* 0x21A */ s8 volumeChanged;
1195 /* 0x21B */ u8 totalVoices;
1196 /* 0x21C */ u8 bgmDrumCount;
1198 /* 0x21E */ u8 unused_21E;
1199 /* 0x21F */ char pad_21F[1];
1200 /* 0x220 */ u8 paused;
1201 /* 0x221 */ u8 masterState;
1202 /* 0x222 */ u8 unused_222;
1204 /* 0x224 */ u8 effectValues[4];
1205 /* 0x227 */ char pad_228[2];
1206 /* 0x22A */ u8 polyphonyCounts[8];
1208 /* 0x233 */ u8 initLinkMute;
1209 /* 0x234 */ u8 priority;
1210 /* 0x235 */ u8 busID;
1211 /* 0x236 */ char pad_236[2];
1212 /* 0x238 */ s32 cmdBufData[8];
1213 /* 0x258 */ u8 cmdBufPending;
1214 /* 0x259 */ u8 cmdBufReadPos;
1215 /* 0x25A */ u8 cmdBufWritePos;
1216 /* 0x25B */ u8 cmdBufOverflows;
1217 /* 0x25C */ BGMPlayerTrack tracks[16];
1218 /* 0x85C */ SeqNote notes[24];
1219} BGMPlayer; // size = 0xA9C
1220
1221// all Song*Request structs are probably one struct with a union for args 0/1/2/3 at offsets 0x10-0x1C
1222// keeping them separated lets us type-check the arguments to functions which accept them
1223
1224typedef struct SongStartRequest {
1225 /* 0x00 */ s32 songName;
1226 /* 0x04 */ s32 duration;
1227 /* 0x08 */ s32 startVolume;
1228 /* 0x0C */ s32 finalVolume;
1229 /* 0x10 */ s32 variation;
1230 /* 0x14 */ s32 unused_14;
1231 /* 0x18 */ char pad_18[8];
1232} SongStartRequest; // size = 0x1C or 0x20
1233
1234typedef struct SongFadeOutRequest {
1235 /* 0x00 */ s32 songName;
1236 /* 0x04 */ s32 duration;
1237 /* 0x08 */ s32 unused_08;
1238 /* 0x0C */ s32 finalVolume;
1240 /* 0x14 */ s32 onPush;
1241 /* 0x18 */ char pad_18[8];
1242} SongFadeOutRequest; // size = 0x1C or 0x20
1243
1244typedef struct SongSuspendRequest {
1245 /* 0x00 */ s32 songName;
1246 /* 0x04 */ s32 duration;
1247 /* 0x08 */ s32 startVolume;
1248 /* 0x0C */ s32 finalVolume;
1249 /* 0x10 */ s32 index;
1250 /* 0x14 */ s32 pauseMode;
1251 /* 0x18 */ char pad_18[8];
1252} SongSuspendRequest; // size = 0x1C or 0x20
1253
1254typedef struct SongResumeRequest {
1255 /* 0x00 */ s32 songName;
1256 /* 0x04 */ s32 duration;
1257 /* 0x08 */ s32 startVolume;
1258 /* 0x0C */ s32 finalVolume;
1259 /* 0x10 */ s32 index;
1260 /* 0x14 */ s32 pauseMode;
1261 /* 0x18 */ char pad_18[8];
1262} SongResumeRequest; // size = 0x1C or 0x20
1263
1265 /* 0x00 */ s32 songName;
1266 /* 0x04 */ char unused_04[4];
1267 /* 0x08 */ char unused_08[4];
1268 /* 0x0C */ char unused_0C[4];
1269 /* 0x10 */ b32 enabled; // 0 or 1
1270 /* 0x18 */ char pad_14[0xC];
1271} SongSwapLinkedRequest; // size = 0x1C or 0x20
1272
1273typedef struct MSEQTrackData {
1274 /* 0x0 */ u8 trackIndex;
1275 /* 0x1 */ u8 type;
1276 /* 0x2 */ s16 time;
1277 /* 0x4 */ s16 delta;
1278 /* 0x6 */ s16 goal;
1279} MSEQTrackData; // size = 0x8
1280
1281typedef struct MSEQHeader {
1282 /* 0x00 */ s32 signature; // 'MSEQ '
1283 /* 0x04 */ s32 size; // including header
1284 /* 0x08 */ s32 name;
1285 /* 0x0C */ u8 firstVoiceIdx;
1288 /* 0x10 */ u16 dataStart;
1289 /* 0x12 */ char pad_12[6];
1290} MSEQHeader; // size = 0x18
1291
1292typedef struct AmbienceTrack {
1297 /* 0x24 */ s8 pan;
1298 /* 0x25 */ s8 reverb;
1299 /* 0x26 */ u8 flags;
1300 /* 0x27 */ char pad_27[1];
1301} AmbienceTrack; // size = 0x28
1302
1303typedef struct AmbienceSavedVoice {
1304 /* 0x0 */ u8 trackIndex;
1305 /* 0x1 */ u8 tune;
1306 /* 0x2 */ s8 volume;
1307 /* 0x4 */ char pad_03[1];
1308} AmbienceSavedVoice; // size = 0x4
1309
1320typedef union AmbVoiceStateInfo {
1321 struct {
1322 u8 playerIndex;
1323 u8 trackIndex;
1324 u8 tune;
1325 u8 released;
1326 };
1329
1330typedef struct AmbienceVoiceState {
1332 /* 0x04 */ s16 pitch;
1333 /* 0x06 */ s8 volume;
1334 /* 0x07 */ u8 isResumable;
1335} AmbienceVoiceState; // size = 0x8
1336
1337typedef struct AmbiencePlayer {
1338 /* 0x000 */ MSEQHeader* mseqFile;
1341 /* 0x00C */ AuFilePos loopStartPos[2];
1343 /* 0x018 */ s32 delay;
1344 /* 0x01C */ char pad_1C[4];
1345 /* 0x020 */ s32 mseqName;
1346 /* 0x024 */ u8 mode;
1347 /* 0x025 */ u8 playState;
1349 /* 0x027 */ char pad_27[1];
1351 /* 0x02A */ u8 fadeSettingsInitial; // 255 means from current volume
1353 /* 0x02C */ u8 loopCount[2];
1354 /* 0x02E */ char pad_2E[2];
1355 /* 0x030 */ u32 firstVoiceIdx;
1356 /* 0x034 */ u32 lastVoiceIdx;
1357 /* 0x038 */ s8_24 fadeVolume;
1358 /* 0x03C */ s8_24 fadeStep;
1359 /* 0x040 */ u16 fadeTime;
1360 /* 0x042 */ u8 fadeGoal;
1361 /* 0x043 */ u8 resetRequired;
1362 /* 0x044 */ AmbienceTrack tracks[10];
1364} AmbiencePlayer; // size = 0x1E4
1365
1366typedef struct AmbienceManager {
1367 /* 0x000 */ AuGlobals* globals;
1368 /* 0x004 */ s32 nextUpdateStep;
1371 /* 0x010 */ MSEQHeader* mseqFiles[4];
1374 /* 0x022 */ u8 priority;
1375 /* 0x023 */ u8 busID;
1376 /* 0x024 */ AmbiencePlayer players[4];
1379
1380typedef struct ALConfig {
1381 /* 0x00 */ s32 num_pvoice;
1382 /* 0x04 */ s32 num_bus;
1383 /* 0x08 */ s32 outputRate;
1384 /* 0x0C */ u8 unused_0C;
1385 /* 0x0D */ char pad_0D[3];
1386 /* 0x10 */ void* dmaNew;
1387 /* 0x14 */ ALHeap* heap;
1388} ALConfig; // size = 0x18;
1389
1390#ifndef NO_EXTERN_VARIABLES
1391
1392extern volatile u8 AuSynUseStereo;
1393extern s16 DummyInstrumentCodebook[32];
1394extern u8 DummyInstrumentWavData[190];
1396extern s32 CUSTOM_ECHO_PARAMS_1[];
1397extern s32 CUSTOM_ECHO_PARAMS_3[];
1398extern s32 CUSTOM_ECHO_PARAMS_2[];
1401extern s32 AuEnvelopeIntervals[];
1404
1407extern u8 AuUseGlobalVolume;
1408extern u16 AuGlobalVolume;
1409extern u8 AuSynStereoDirty;
1410
1411extern AuGlobals* gSoundGlobals;
1412extern BGMPlayer* gBGMPlayerC;
1413extern BGMPlayer* gBGMPlayerB;
1416extern BGMPlayer* gBGMPlayerA;
1417
1418#endif
1419
1420#include "audio/private.h"
1421
1422#endif
BSS s32 PopupMenu_SelectedIndex
s32 * extraSounds
Definition audio.h:787
u16 format
Definition audio.h:989
s32 randomValue2
Definition audio.h:1154
f32 outputRate
Definition audio.h:1027
u16 drumCount
Definition audio.h:874
u8 cmdListOneShot[8]
Definition audio.h:734
u8 channelDelayPending
Definition audio.h:1041
MSEQHeader * mseqFiles[4]
Definition audio.h:1371
BGMInstrumentInfo * instrumentsInfo
Definition audio.h:1166
AUFileMetadata mdata
Definition audio.h:929
u16 unk_5A
Definition audio.h:1156
u8 randomVelocity
Definition audio.h:758
SoundManagerState
Definition audio.h:363
@ SND_MANAGER_STATE_DISABLED
Definition audio.h:365
@ SND_MANAGER_STATE_ENABLED
Definition audio.h:364
u8 donePending
Definition audio.h:862
InstrumentBank defaultBankSet[1]
Definition audio.h:1063
struct BGMHeader * bgmFile
Definition audio.h:1160
s8_24 fadeStep
Definition audio.h:1358
u16 bkFileIndex[3]
Definition audio.h:964
s32 fullFileSize
Definition audio.h:933
char pad_228[2]
Definition audio.h:1205
f32 pitchRatio
Definition audio.h:729
s32 unused_20
Definition audio.h:847
u8 * sefData
Definition audio.h:785
struct SeqArgs::@74 TrackTremoloDepth
u8 * cmdListPress
Definition audio.h:658
ADPCM_STATE * loopState
Definition audio.h:677
SoundManagerMusicEvent bgmSounds[4]
Definition audio.h:800
u16 tremoloDelay
attack + sustain time
Definition audio.h:1130
InstrumentBank bankSet5[16]
Definition audio.h:1068
u32 firstVoiceIdx
Definition audio.h:1355
struct SeqArgs::@67 InstrumentReverb
AmbVoiceStateInfo info
Definition audio.h:1331
s8 volumeChanged
Current write position for each custom envelope.
Definition audio.h:1194
s32 CUSTOM_ECHO_PARAMS_1[]
Definition sfx_player.c:103
s8 unused_162
Definition audio.h:811
MSEQHeader * mseqFile
Definition audio.h:1338
u8 fadeSettingsType
Definition audio.h:1348
Instrument * sfxInstrumentRef
Definition audio.h:725
char pad_28[4]
Definition audio.h:1034
u8 instrumentIndex
Definition audio.h:753
ALHeap * heap
Definition audio.h:1387
char pad_B[1]
Definition audio.h:897
u8 trackSettingsCount
Definition audio.h:1286
s16_16 step
Definition audio.h:703
u8 curVoiceIndex
Definition audio.h:807
s16 * predictor
Definition audio.h:681
u8 cmdBufPending
Buffer for an unused (legacy) system for controlling the BGMPlayer from the main thread.
Definition audio.h:1213
u8 randVolume
Definition audio.h:894
s16_16 envelopeVolume
Definition audio.h:510
s32 baseRomOffset
Definition audio.h:1031
u8 busID
Definition audio.h:628
s32 * customReverbParams[8]
Definition audio.h:795
u8 lastCustomEffectIdx
Definition audio.h:797
s16 volume
Definition audio.h:651
s32 unused_04
Definition audio.h:636
f32 delta
Definition audio.h:595
SoundManager * soundManager
Definition audio.h:1140
u8 firstVoice
number of polyphonic voices for this track
Definition audio.h:1110
s32 name
Definition audio.h:943
char pad_AA[2]
Definition audio.h:764
char pad_76[2]
Definition audio.h:627
struct SeqArgs::@81 Detour
u16 bankPatch
Definition audio.h:888
u16 playLength
Definition audio.h:743
s16 dryamt
Definition audio.h:606
char pad_172[2]
Definition audio.h:1184
AuVoice voices[24]
Definition audio.h:1075
struct SeqArgs::@79 Branch
s32 versionOffset
Definition audio.h:934
u16 gain
Definition audio.h:561
struct SeqArgs::@72 TrackTremolo
u8 * tickRatePtr
Definition audio.h:1164
f32 rsval
Definition audio.h:524
char pad_27[1]
Definition audio.h:1300
s32 rsdelta
Definition audio.h:525
AuFilePos mseqReadPos
Definition audio.h:1340
AuFilePos sefDataReadPos
Definition audio.h:721
BGMPlayer * gBGMPlayerB
Definition engine.c:7
u16 unk_58
Definition audio.h:1155
s16_16 current
Definition audio.h:702
s32 songPlayingCounter
video frames (60 fps)
Definition audio.h:1145
u16 predictorsStart
Definition audio.h:996
s32 numEntries
Definition audio.h:932
char pad_01[3]
Definition audio.h:669
AuEffectType
Definition audio.h:154
@ AU_FX_CUSTOM_3
Definition audio.h:164
@ AU_FX_FLANGE
Definition audio.h:159
@ AU_FX_CUSTOM_2
Definition audio.h:163
@ AU_FX_CUSTOM_1
Definition audio.h:162
@ AU_FX_ECHO
Definition audio.h:160
@ AU_FX_CHORUS
Definition audio.h:158
@ AU_FX_SMALLROOM
Definition audio.h:156
@ AU_FX_OTHER_BIGROOM
Definition audio.h:165
@ AU_FX_BIGROOM
Definition audio.h:157
@ AU_FX_NONE
Definition audio.h:155
@ AU_FX_CUSTOM_0
Definition audio.h:161
volatile u8 AuSynUseStereo
Definition system.c:10
u8 proxMixSetChanged
Definition audio.h:1105
u8 fadeSettingsGoal
Definition audio.h:1352
SoundPlayChange changed
Definition audio.h:1097
u8 firstVoice
Definition audio.h:805
SegData * compReadPos
Definition audio.h:1161
f32 ratio
Definition audio.h:594
InstrumentBank bankSet2[16]
Definition audio.h:1066
s32 * dryAccumBuffer
Definition audio.h:644
s32 signature
Definition audio.h:1282
s32 num_pvoice
Definition audio.h:1381
u16 loopStatesLength
Definition audio.h:995
struct AuPVoice * next
Definition audio.h:622
AuSynDriver * gActiveSynDriverPtr
Definition syn_driver.c:14
s32 CUSTOM_SMALL_ROOM_PARAMS[]
Definition sfx_player.c:92
s32 nextUpdateInterval
Definition audio.h:1369
s16 unused_74
Definition audio.h:626
s8 alternativeType
Definition audio.h:736
s16 baseTicks
Definition audio.h:508
SBNFileEntry entries[0]
Definition audio.h:938
u8 * cmdListRelease
Definition audio.h:659
EnvelopeData envelope
Definition audio.h:845
s32 frameCounter
Number of video frame updates, used to update random numnber.
Definition audio.h:788
s32 s16_16
Definition audio.h:9
s16 fccoef[16]
Definition audio.h:545
EnvelopeCommand
Definition audio.h:252
@ ENV_CMD_END
Definition audio.h:257
@ ENV_CMD_ADD_SCALE
Definition audio.h:255
@ ENV_CMD_SET_SCALE
Definition audio.h:256
@ ENV_CMD_START_LOOP
Definition audio.h:254
@ ENV_CMD_END_LOOP
Definition audio.h:253
InitSongEntry * songList
Definition audio.h:1035
s16 customPressEnvelopes[8][9]
Definition audio.h:1185
char pad_7A[2]
Definition audio.h:630
Instrument * defaultInstrument
Definition audio.h:1028
u8 initLinkMute
Definition audio.h:1208
s32 masterVolumeTicks
Definition audio.h:1175
AuCallback doneCallback
Definition audio.h:1239
s16 wetamt
Definition audio.h:607
u16 instrumentCount
Definition audio.h:876
s16 proxVolumeTicks
Definition audio.h:1092
b8 useDma
Definition audio.h:689
s16 fc
Definition audio.h:542
struct AuResampler * resamplerTemplate
Definition audio.h:530
s32 segEnd
Definition audio.h:615
s32 songName
Definition audio.h:1146
SoundLerp volumeLerp
Definition audio.h:733
char pad_12[6]
Definition audio.h:1289
u8 reverb
Definition audio.h:892
s16 rtgt
Definition audio.h:613
EnvelopePreset DummyInstrumentEnvelope
Definition sfx_player.c:312
u16 mseqListOffset
Definition audio.h:957
s32 curSamples
Definition audio.h:635
struct AuGlobals * globals
Definition audio.h:783
u16 AmbienceRadioChannel
BKFileBuffer * auxBanks[3]
Definition audio.h:1073
u8 randomPitch
Definition audio.h:757
s32 nextUpdateInterval
Definition audio.h:790
u8 proxMixValChanged
Definition audio.h:1106
char pad_2E[2]
Definition audio.h:1354
s16 unused_06
Definition audio.h:553
MusicEventTrigger * musicEventQueue
Definition audio.h:1058
AuCallback onCompleteCallback
Definition audio.h:509
u8 timingPreset
Definition audio.h:870
AUFileMetadata mdata
Definition audio.h:952
s16 cvolR
Definition audio.h:605
Instrument * instrument
Definition audio.h:1293
s32 baseStep
Definition audio.h:506
s32 AuEnvelopeIntervals[]
Definition sfx_player.c:359
ALDMANew2 dmaNew
Definition audio.h:640
s32 frameCounter
current update counter value
Definition audio.h:1144
s16 coarseTune
Definition audio.h:744
SoundManager * gSoundManager
Definition engine.c:9
u16 signature
Definition audio.h:985
s16 prevUpdateResult
Unused, may indicate error status.
Definition audio.h:803
u8 unused_21E
Definition audio.h:1198
BGMDrumInfo * drumsInfo
Definition audio.h:1165
u16 fadeSettingsTime
Definition audio.h:1350
s32 outputRate
Definition audio.h:637
s32 loopEnd
Definition audio.h:679
u32 output
Definition audio.h:518
u8 envTarget
Definition audio.h:855
s16 masterPitchShift
unused; presumably another random parameter matching randomPitch and randomVelocity
Definition audio.h:760
u8 curEffectType
Definition audio.h:565
u8 masterPan
Definition audio.h:762
s16_16 proxVolume
Definition audio.h:1089
SoundPlayChange changed
Definition audio.h:728
u16 dataStart
Definition audio.h:1288
s16 lratm
Definition audio.h:609
s32 songID
Definition audio.h:1149
AuGlobals * globals
Definition audio.h:1139
u16 predictorsLength
Definition audio.h:997
char pad_18[8]
Definition audio.h:1231
struct MSEQHeader * dataMSEQ[2]
Definition audio.h:1048
s32 bookSize
Definition audio.h:582
SoundRequest soundQueue[16]
Lock-free ring buffer for queueing sound effects from game thread.
Definition audio.h:810
SoundLerp tuneLerp
Definition audio.h:732
s32 envScale
Definition audio.h:851
DelayChannel
Definition audio.h:240
@ AU_DELAY_CHANNEL_LEFT
Definition audio.h:242
@ AU_DELAY_CHANNEL_RIGHT
Definition audio.h:243
@ AU_DELAY_CHANNEL_NONE
Definition audio.h:241
AuGlobals * gSoundGlobals
Definition engine.c:10
s32 flushMusicEventQueue
Definition audio.h:1060
AmbienceTrack tracks[10]
Definition audio.h:1362
s32 insVolumeTicks
Definition audio.h:1087
EnvelopeOffset offsets[1]
Definition audio.h:670
u16 baseVolume
Definition audio.h:802
u8 raw[4]
Definition audio.h:407
char pad_4[0xC]
Definition audio.h:722
u16 toReplaceID
Definition audio.h:650
u8 proxMixID
Definition audio.h:1182
BKHeader header
Definition audio.h:1009
s32 randomValue1
Definition audio.h:1153
s32 nextUpdateStep
Definition audio.h:1368
AuCallback audioThreadCallbacks[2]
Definition audio.h:1062
AuLoadFilter decoder
Definition audio.h:623
s32 masterVolumeTarget
Definition audio.h:1174
s16 fbcoef
Definition audio.h:520
u8 envInitial
Definition audio.h:854
s8 busID
prevents notes from this track from being assigned voices, implemented for linked track pairs
Definition audio.h:1119
u8 reverb
Definition audio.h:752
u8 bgmDrumCount
Definition audio.h:1196
u16 offsetPress
Definition audio.h:663
ADPCM_STATE * state
Definition audio.h:578
AudioType
Definition audio.h:397
@ AUDIO_TYPE_BGM
Definition audio.h:398
@ AUDIO_TYPE_SFX
Definition audio.h:399
char pad_0A[2]
Definition audio.h:555
s32 nextUpdateCounter
update counter threshold for a single tick
Definition audio.h:1143
s16 ffcoef
Definition audio.h:519
s16 alternativeVolume
Definition audio.h:731
void * dmaNew
Definition audio.h:1386
u8 loopCount[2]
Definition audio.h:1353
char pad_8D[1]
Definition audio.h:741
u8 busID
Definition audio.h:1210
AuFilePos alternativeDataPos
Definition audio.h:735
u8 envelopePreset
Definition audio.h:754
char pad_C[4]
Definition audio.h:883
s32 * normalSounds[8]
Definition audio.h:786
u16 masterTempoBPM
Definition audio.h:1187
char pad_9[1]
Definition audio.h:654
u16 mseqListSize
Definition audio.h:958
u16 keyBase
Definition audio.h:889
s32 masterTempo
Definition audio.h:1168
s8_24 masterVolume
Definition audio.h:1172
u8 insPan
track volume, independent of instrument,
Definition audio.h:1102
s16 DummyInstrumentCodebook[32]
Definition sfx_player.c:69
struct SeqArgs::@65 InstrumentVolume
char pad_02[2]
Definition audio.h:562
SoundLerp tuneLerp
Definition audio.h:1295
u8 unused_222
Definition audio.h:1202
s32 first
Definition audio.h:547
struct BGMPlayer * resumeCopyTo
Definition audio.h:1050
s8_24 insVolume
Definition audio.h:1084
u8 loopCounter
Definition audio.h:853
SeqNote notes[24]
Definition audio.h:1218
s32 masterTempoStep
Definition audio.h:1169
s32 bkFileListOffset
Definition audio.h:1037
char pad_02[2]
Definition audio.h:1016
InstrumentBank auxBankSet[4]
Definition audio.h:1065
AmbVoiceStateInfo id
Definition audio.h:1342
struct SeqArgs::@69 InstrumentCoarseTune
s16 pitchShift
Definition audio.h:826
BGMDrumInfo drums[12]
Definition audio.h:981
MusicPlayer
Definition audio.h:168
@ MUSIC_PLAYER_MAIN
Definition audio.h:169
@ MUSIC_PLAYER_AUX
Definition audio.h:170
f32 pitchRatio
Definition audio.h:838
u8 swizzled
Definition audio.h:990
SoundPlayer players[8]
Definition audio.h:817
s32 bkListLength
Definition audio.h:1038
struct SeqArgs::@62 MasterVolumeFade
u8 channelDelayBusID
Definition audio.h:1042
AUFileMetadata mdata
Definition audio.h:942
u8 AmbientSoundIDtoMSEQFileIndex[]
Definition sfx_player.c:346
char pad_14[0xC]
Definition audio.h:959
s16 volume
Definition audio.h:840
u8 effectIndices[4]
Definition audio.h:1152
BankSetIndex
The bank indices used by audio assets when choosing an intrument.
Definition audio.h:385
@ BANK_SET_IDX_5
Definition audio.h:391
@ BANK_SET_IDX_6
Definition audio.h:392
@ BANK_SET_IDX_7
Definition audio.h:393
@ BANK_SET_IDX_0
Definition audio.h:386
@ BANK_SET_IDX_3
Definition audio.h:389
@ BANK_SET_IDX_1
Definition audio.h:387
@ BANK_SET_IDX_2
Definition audio.h:388
@ BANK_SET_IDX_4
Definition audio.h:390
AuLowPass * activeLowpass
Definition audio.h:556
char pad_95[1]
Definition audio.h:746
BGMSpecialSubops
Definition audio.h:224
@ BGM_SPECIAL_PROX_MIX_OVERRIDE
Definition audio.h:230
@ BGM_SPECIAL_SEEK_CUSTOM_ENV
Definition audio.h:226
@ BGM_SPECIAL_USE_CUSTOM_ENV
Definition audio.h:228
@ BGM_SPECIAL_WRITE_CUSTOM_ENV
Definition audio.h:227
@ BGM_SPECIAL_TRIGGER_SOUND
Definition audio.h:229
@ BGM_SPECIAL_SET_STEREO_DELAY
Definition audio.h:225
u32 wavDataLength
Definition audio.h:676
s32 randomValue
Definition audio.h:794
s32 masterTempoTarget
Definition audio.h:1170
u8 tremoloPhase
Definition audio.h:1132
BGMInstrumentInfo * dataPRG
Definition audio.h:1046
u16 bankListSize
Definition audio.h:954
BankSet
corresponds with bank group IDs from INIT file bank list (InitBankEntry.bankSet)
Definition audio.h:374
@ BANK_SET_2
Definition audio.h:376
@ BANK_SET_AUX
Definition audio.h:375
@ BANK_SET_MUSIC
Definition audio.h:377
@ BANK_SET_6
Definition audio.h:380
@ BANK_SET_5
Definition audio.h:379
@ BANK_SET_4
Definition audio.h:378
s32 loopCount
Definition audio.h:680
s16 rratm
Definition audio.h:612
Instrument sfxInstrument
Definition audio.h:726
u8 numActivePlayers
Definition audio.h:1372
SBNFileEntry * sbnFileList
Definition audio.h:1032
AuFilePos mseqReadStart
Definition audio.h:1339
s8 unused_2A
Definition audio.h:694
SeqArgs seqCmdArgs
Definition audio.h:1177
s16_16 insVolumeTarget
Definition audio.h:1086
u8 polyphonicIdx
voice idx end, exclusive
Definition audio.h:1112
char pad_18[8]
Definition audio.h:1261
s16 volume
Definition audio.h:603
s16 masterVolume
Definition audio.h:761
InstrumentBank bankSet6[4]
Definition audio.h:1069
BGMFileInfo info
Definition audio.h:884
SoundLerp volumeLerp
Definition audio.h:1296
char pad_0E[2]
Definition audio.h:522
u8 loadTracksFadeInfo
Definition audio.h:1373
Fade fadeInfo
Definition audio.h:792
struct BGMPlayer * resumeCopyFrom
Definition audio.h:1051
u16 drums
Definition audio.h:873
AuVoiceSyncFlags
Definition audio.h:147
@ AU_VOICE_SYNC_FLAG_PARAMS
Definition audio.h:149
@ AU_VOICE_SYNC_FLAG_PAN_FXMIX
Definition audio.h:151
@ AU_VOICE_SYNC_FLAG_PITCH
Definition audio.h:150
@ AU_VOICE_SYNC_FLAG_ALL
Definition audio.h:148
char pad_1C[4]
Definition audio.h:1344
char unused_0F[1]
Definition audio.h:946
struct SeqArgs::@59 MasterPitchShift
u8 randPan
Definition audio.h:895
BGMDrumInfo * drums[12]
Definition audio.h:1167
s32 busVolume
Definition audio.h:793
u16 maxTempo
Definition audio.h:1188
s32 CUSTOM_ECHO_PARAMS_3[]
Definition sfx_player.c:121
u8 paused
Definition audio.h:1200
char pad_46[2]
Definition audio.h:866
s32 name
Definition audio.h:882
b32 first
Definition audio.h:596
SegData * phraseStartPos
Definition audio.h:1163
f32 rsgain
Definition audio.h:526
s32 size
Definition audio.h:1283
u8 * WaveData
Definition audio.h:12
AuPVoice * pvoices
Definition audio.h:642
u16 fileIndex
Definition audio.h:968
SegData * compStartPos
Definition audio.h:1162
s16 baseTarget
Definition audio.h:507
BGMPlayerState
Definition audio.h:206
@ BGM_PLAY_STATE_IDLE
Definition audio.h:207
@ BGM_PLAY_STATE_FETCH
Definition audio.h:209
@ BGM_PLAY_STATE_STOP
Definition audio.h:211
@ BGM_PLAY_STATE_ACTIVE
Definition audio.h:208
@ BGM_PLAY_STATE_INIT
Definition audio.h:210
u8 polyVoiceCount
Definition audio.h:1109
u8 * trackVolsConfig
Dynamically customizable press envelopes.
Definition audio.h:1186
struct SeqArgs::@64 OverridePatch
s32(* ALDMAproc2)(s32 addr, s32 len, void *state, u8 arg3)
Definition audio.h:573
s16 pan
Definition audio.h:602
u8 randomPanAmount
Definition audio.h:1115
char unused_04[4]
Definition audio.h:935
s32 delta
Definition audio.h:614
char pad_21F[1]
Definition audio.h:1199
ENVMIX_STATE * state
Definition audio.h:601
s32 fileListLength
copied from SBN to the audio heap
Definition audio.h:1033
s8 clientPriority
Definition audio.h:864
s32 nextUpdateStep
Definition audio.h:789
InstrumentBank bankSet4[16]
Definition audio.h:1067
b8 isRelativeRelease
Definition audio.h:859
s32 nextUpdateStep
Definition audio.h:1141
s32 loopStart
Definition audio.h:678
s32 lastsam
Definition audio.h:586
s8 unused_2B
Definition audio.h:695
s16 clientVolume
Definition audio.h:861
char pad_0D[3]
Definition audio.h:1385
struct SeqArgs::@80 EventTrigger
s32 name
Definition audio.h:1284
AmbienceVoiceState voiceStates[16]
Definition audio.h:1377
AuFxBus * fxBus
Definition audio.h:643
u8 bgmInstrumentCount
Definition audio.h:1197
BGMPlayerSnapshot snapshots[1]
Definition audio.h:1049
struct Instrument * instrument
Definition audio.h:581
u8 lastVoice
voice idx start
Definition audio.h:1111
AuResampler resampler
Definition audio.h:624
char pad_11[3]
Definition audio.h:871
u8 priority
Definition audio.h:748
struct SeqArgs::@75 RandomPan
SoundManagerCustomCmdList customCmdList[4]
Definition audio.h:801
s8 unused_165
Definition audio.h:814
ALHeap * heap
Definition audio.h:641
FxBus
Definition audio.h:233
@ FX_BUS_BGMA_MAIN
Definition audio.h:234
@ FX_BUS_BGMA_AUX
Definition audio.h:237
@ FX_BUS_SOUND
Definition audio.h:235
@ FX_BUS_BGMB
Definition audio.h:236
u16 bgmFileIndex
Definition audio.h:963
s16 detourLength
Definition audio.h:1096
u8 pan
Definition audio.h:841
s16 envelopeTarget
Definition audio.h:512
u8 unused_0C
hardware sample output rate
Definition audio.h:1384
s16 cvolL
Definition audio.h:604
u8 effectValues[4]
No means to modify value is implemented.
Definition audio.h:1204
s32 name
Definition audio.h:988
s16 proxVolumeTarget
Definition audio.h:1091
s16 tremoloDelay
live track detune, independent of instrument, instantly affects all active voices and subsequent note...
Definition audio.h:1094
s32 num_pvoice
Definition audio.h:638
s16 pitchShift
Definition audio.h:652
s16 time
Definition audio.h:704
s16 rratl
Definition audio.h:611
s16 volume
Definition audio.h:1127
u16 masterPitchShift
Definition audio.h:1189
s32 pushSongName
Definition audio.h:1147
u16 instruments
Definition audio.h:875
struct SeqArgs::@63 MasterEffect
u16 trackSettingsOffset
Definition audio.h:1287
u8 AuUseGlobalVolume
Definition syn_driver.c:16
BGMPlayer * gBGMPlayerA
Definition engine.c:6
s32 fileListOffset
Definition audio.h:931
AuFX * fxR
Definition audio.h:564
char unused_28[24]
Definition audio.h:937
char pad_C1[1]
Definition audio.h:809
u8 pendingTick
Definition audio.h:1135
u8 customEnvelopeWritePos[8]
Currently active (for writing) custom envelope.
Definition audio.h:1193
s16 lratl
Definition audio.h:608
u8 triggers
Definition audio.h:737
u8 index
Definition audio.h:629
MusicState
Definition audio.h:173
@ MUSIC_STATE_PLAY_NEXT
Definition audio.h:179
@ MUSIC_STATE_IDLE
Definition audio.h:174
@ MUSIC_STATE_STOP_CURRENT
Definition audio.h:175
@ MUSIC_STATE_AWAIT_FADEOUT
Definition audio.h:176
@ MUSIC_STATE_DELAY_2
Definition audio.h:177
@ MUSIC_STATE_DELAY_1
Definition audio.h:178
s32 PreventBGMPlayerUpdate
While TRUE, the audio thread skips BGM player updates.
s16 envelopeTicks
Definition audio.h:513
u16 soundID
Definition audio.h:649
char pad_27[1]
Definition audio.h:1349
s32 tickUpdateInterval
update counter amount to add per audio frame
Definition audio.h:1142
s32 INIToffset
Definition audio.h:936
u8 volume
Definition audio.h:890
u16 instrumetsLength
Definition audio.h:993
u8 syncFlags
Definition audio.h:863
AuSynDriver * gSynDriverPtr
Definition syn_driver.c:15
s16_16 insVolumeStep
volume for current instrument, reset if instrument is changed
Definition audio.h:1085
s32 songListLength
copied from INIT to the audio heap
Definition audio.h:1036
struct SeqArgs::@77 TrackVolumeFade
s32 busVolume
Definition audio.h:1151
s32 envTimeLeft
Definition audio.h:849
s32 cmdBufData[8]
Definition audio.h:1212
s32 nextUpdateCounter
Definition audio.h:1370
s32 resumeFadeEnd
Definition audio.h:1056
AmbienceSavedVoice savedVoices[4]
Definition audio.h:1363
ALDMAproc2(* ALDMANew2)(void *state)
Definition audio.h:574
Fade fadeInfo
Definition audio.h:1150
struct AuPVoice * tail
Definition audio.h:568
u8 bFadeConfigSetsVolume
Definition audio.h:1207
char pad_236[2]
Definition audio.h:1211
u8 * wavData
Definition audio.h:675
struct SeqArgs::@82 Special
u8 exclusiveID
Definition audio.h:749
u8 delayCount
Definition audio.h:538
MusicFlags
Definition audio.h:182
@ MUSIC_FLAG_PUSHING
Definition audio.h:185
@ MUSIC_FLAG_PLAYING
Definition audio.h:183
@ MUSIC_FLAG_POPPING
Definition audio.h:186
@ MUSIC_FLAG_FADE_IN_NEXT
Definition audio.h:188
@ MUSIC_FLAG_IGNORE_POP
Definition audio.h:187
@ MUSIC_FLAG_ENABLE_PROX_MIX
Definition audio.h:184
char pad_86[2]
Definition audio.h:738
ALDMAproc2 dmaFunc
Definition audio.h:583
u8 tremoloDepth
Definition audio.h:1131
char pad_5D[3]
Definition audio.h:1121
s32 CUSTOM_ECHO_PARAMS_2[]
Definition sfx_player.c:112
BGMPlayer * gBGMPlayerC
Definition engine.c:8
s32 sourceFlags
Definition audio.h:823
BGMSnapshots
Definition audio.h:191
@ BGM_SNAPSHOT_0
Definition audio.h:192
AuDelay * delays
Definition audio.h:537
s32 size
Definition audio.h:881
AuFilePos loopStartPos[2]
Definition audio.h:1341
EnvelopeData envelope
Definition audio.h:723
AuFilePos savedPos
Definition audio.h:1080
s32 envDuration
Definition audio.h:848
s8 randomUnused
Definition audio.h:759
BGMCompositionCommands
Definition audio.h:214
@ BGM_COMP_PLAY_PHRASE
Definition audio.h:216
@ BGM_COMP_START_LOOP
Definition audio.h:217
@ BGM_COMP_END
Definition audio.h:215
@ BGM_COMP_END_COND_LOOP_FALSE
Definition audio.h:220
@ BGM_COMP_END_COND_LOOP_TRUE
Definition audio.h:221
@ BGM_COMP_WAIT
Definition audio.h:218
@ BGM_COMP_END_LOOP
Definition audio.h:219
u8 channelDelaySide
Definition audio.h:1044
struct AuPVoice * head
Definition audio.h:567
u8 sfxParamsFlags
Definition audio.h:750
u16 curSoundID
Definition audio.h:747
u8 cmdBufWritePos
Definition audio.h:1215
ALRawLoop loop
Definition audio.h:580
AmbiencePlayer players[4]
Definition audio.h:1376
struct SeqArgs::@78 ReverbType
s16_16 baseVolume
Definition audio.h:505
u16 sections[8]
Definition audio.h:947
s32 motion
Definition audio.h:617
struct SeqArgs::@73 TrackTremoloRate
struct AuResampler * activeResampler
Definition audio.h:529
Instrument * instrument
Definition audio.h:837
struct BGMHeader * dataBGM[2]
Definition audio.h:1047
u16 loopStatesStart
Definition audio.h:994
u8 conditionalLoopFlags
Definition audio.h:1203
u8 writingCustomEnvelope
Definition audio.h:1192
ADPCM_STATE * lstate
Definition audio.h:579
SoundPlayerState
Definition audio.h:358
@ SND_PLAYER_STATE_INIT
Definition audio.h:360
@ SND_PLAYER_STATE_CONTINUE
Definition audio.h:359
s32 masterTempoTicks
Definition audio.h:1171
EnvelopePreset * envelopes
Definition audio.h:696
f32 rsinc
Definition audio.h:523
s8_24 fadeVolume
Definition audio.h:1357
u8 unused_3C
Definition audio.h:857
u16 AuGlobalVolume
Definition syn_driver.c:17
PEREntry * dataPER
Definition audio.h:1045
u8 envelopeFlags
Definition audio.h:858
u8 cmdBufReadPos
Definition audio.h:1214
BGMInstrumentInfo defaultPRGEntry
Definition audio.h:1030
Instrument * InstrumentBank[16]
Definition audio.h:699
u16 section2000
Definition audio.h:948
s16 sfxVolume
Definition audio.h:730
u32 input
Definition audio.h:517
u8 data[0x800]
Definition audio.h:1010
SoundInstanceFlags
Definition audio.h:368
@ SOUND_INSTANCE_FLAG_POSITION_CHANGED
Definition audio.h:370
@ SOUND_INSTANCE_FLAG_ACTIVE
Definition audio.h:369
u16 songListSize
Definition audio.h:956
s32 nextUpdateCounter
Definition audio.h:791
u8 cmdBufOverflows
Definition audio.h:1216
s8 fineTune
Definition audio.h:745
s16 detune
Definition audio.h:1128
s32 soundID
Definition audio.h:822
u8 priority
Used to mute any linked tracks after the first one encountered.
Definition audio.h:1209
u16 envelopesLength
Definition audio.h:999
struct SeqArgs::@58 MasterVolume
u8 reverb
Definition audio.h:842
char pad_11[3]
Definition audio.h:844
s8 unused_27
Definition audio.h:691
u8 firstVoiceIdx
Definition audio.h:1285
s32 resumeFadeStart
Definition audio.h:1055
s8 unused_26
Definition audio.h:690
s32 offset
Definition audio.h:916
s32 envelopeStep
Definition audio.h:511
u8 fadeSettingsInitial
Definition audio.h:1351
POLEF_STATE * fstate
Definition audio.h:546
u16 keyBase
Definition audio.h:683
s16 gain
Definition audio.h:521
s32 resumeSongName
Definition audio.h:1052
u16 envelopesStart
Definition audio.h:998
s32 masterVolumeStep
Definition audio.h:1173
s32 signature
Definition audio.h:911
EnvelopeData envelope
Definition audio.h:1083
struct BGMPlayer * bgmPlayer
Definition audio.h:1020
BGMPlayerTrack tracks[16]
Definition audio.h:1217
NUDMAState * dmaState
Definition audio.h:584
u16 codebookSize
Definition audio.h:682
struct SeqArgs::@76 UseInstrument
AuFilePos bgmReadPos
Definition audio.h:1079
u8 channelDelayState
Definition audio.h:1071
char pad_7[1]
Definition audio.h:907
struct SeqArgs::@68 TrackVolume
u8 DummyInstrumentWavData[190]
Definition sfx_player.c:76
s32 * wetAccumBuffer
Definition audio.h:645
u8 sfxQueueReadPos
Read index for the soundQueue ring buffer (audio thread)
Definition audio.h:812
u16 offsetRelease
Definition audio.h:664
u16 delay
Definition audio.h:742
InstrumentBank * bankSets[8]
Definition audio.h:1070
char pad_8E[2]
Definition audio.h:799
u32 SegData
Definition audio.h:130
s8 customReverbAmounts[8]
Definition audio.h:796
s8 * loopStartPos
Definition audio.h:739
u8 loopIterCount
Definition audio.h:740
u8 randReverb
Definition audio.h:896
AuPriority
Definition audio.h:132
@ AU_PRIORITY_BGM_PLAYER_MAIN
Definition audio.h:134
@ AU_PRIORITY_MSEQ_MANAGER
Definition audio.h:137
@ AU_PRIORITY_FREE
Definition audio.h:133
@ AU_PRIORITY_SFX_MANAGER
Definition audio.h:136
@ AU_PRIORITY_BGM_PLAYER_AUX
Definition audio.h:135
struct SeqArgs::@57 MasterTempo
SegData * compActiveLoopEndPos[4]
Definition audio.h:1179
s32 delta
Definition audio.h:839
struct SeqArgs::@60 UnkCmdE3
s16 goal
Definition audio.h:705
SegData * compLoopStartLabels[32]
Definition audio.h:1178
u8 priority
Definition audio.h:804
f32 pitchRatio
Definition audio.h:1126
u16 songListOffset
Definition audio.h:955
struct SeqArgs::@61 MasterTempoFade
char pad_02[2]
Definition audio.h:986
EnvelopeData envelope
Definition audio.h:1294
s8 unused_28
Definition audio.h:692
s32 num_bus
Definition audio.h:639
s32 resumeFadeTime
Definition audio.h:1054
u8 randTune
Definition audio.h:893
s32 outputRate
Definition audio.h:1383
u8 unused_A0
Definition audio.h:756
char pad_18[8]
if true, the player is paused, else it will be saved to a snapshot
Definition audio.h:1251
AuFilePos prevReadPos
Definition audio.h:1081
s32 resetPending
Definition audio.h:816
s16 * input
Definition audio.h:535
AuEffectChange effectChanges[4]
copied from INIT to the audio heap, seems to exist only to find SEF, PER, and PRG
Definition audio.h:1040
BGMPolyphony
Definition audio.h:195
@ BGM_POLYPHONY_UNUSED_A
Definition audio.h:198
@ BGM_POLYPHONY_4
Definition audio.h:203
@ BGM_POLYPHONY_UNUSED_C
Definition audio.h:200
@ BGM_POLYPHONY_2
Definition audio.h:201
@ BGM_POLYPHONY_1
Definition audio.h:197
@ BGM_POLYPHONY_0
Definition audio.h:196
@ BGM_POLYPHONY_UNUSED_B
Definition audio.h:199
@ BGM_POLYPHONY_3
Definition audio.h:202
u8 masterState
Definition audio.h:1201
AuGlobals * globals
Definition audio.h:1367
u32 lastVoiceIdx
Definition audio.h:1356
AuEnvMixer envMixer
Definition audio.h:625
u8 sfxQueueWritePos
Write index for the soundQueue ring buffer (game thread)
Definition audio.h:813
s16 randDetune
Definition audio.h:1133
char pad_131C[4]
Definition audio.h:1074
s8 unused_29
Definition audio.h:693
char pad_5E[2]
Definition audio.h:1158
f32 playbackRate
Definition audio.h:1176
u8 * AuFilePos
Definition audio.h:11
struct AuLowPass * lowpassTemplate
Definition audio.h:528
s16 unused_08
Definition audio.h:554
char pad_0E[3]
Definition audio.h:991
s16 * base
Definition audio.h:551
s32 memin
Definition audio.h:588
char pad_3C[2]
Definition audio.h:1095
DelayState
Definition audio.h:246
@ AU_DELAY_STATE_OFF
channel delay is enabled (though not necessarily applied)
Definition audio.h:248
@ AU_DELAY_STATE_ON
Definition audio.h:247
@ AU_DELAY_STATE_REQUEST_OFF
channel delay is disabled
Definition audio.h:249
Instrument * ins
Definition audio.h:1125
b32 resumeRequested
Definition audio.h:1053
u8 compLoopDepth
Definition audio.h:1191
u8 velocity
Definition audio.h:1134
s32 size
Definition audio.h:987
AuVoiceEnvelopeFlags
Definition audio.h:140
@ AU_VOICE_ENV_FLAG_KEY_RELEASED
Definition audio.h:143
@ AU_VOICE_ENV_FLAG_RELEASING
Definition audio.h:141
@ AU_VOICE_ENV_FLAG_VOL_CHANGED
Definition audio.h:144
@ AU_VOICE_ENV_FLAG_HANDLED_VOL_CHANGE
Definition audio.h:142
u8 AuSynStereoDirty
Definition syn_driver.c:18
RESAMPLE_STATE * state
Definition audio.h:593
b32 dirty
Definition audio.h:616
u8 * envelopCustomPressProfile
Definition audio.h:724
EnvelopeTimeIntervals
Definition audio.h:260
@ ENV_TIME_14UNITS
Definition audio.h:342
@ ENV_TIME_350MS
Definition audio.h:318
@ ENV_TIME_4_5S
Definition audio.h:287
@ ENV_TIME_280MS
Definition audio.h:322
@ ENV_TIME_140MS
Definition audio.h:336
@ ENV_TIME_45S
Definition audio.h:264
@ ENV_TIME_55S
Definition audio.h:262
@ ENV_TIME_240MS
Definition audio.h:326
@ ENV_TIME_270MS
Definition audio.h:323
@ ENV_TIME_800MS
Definition audio.h:308
@ ENV_TIME_8S
Definition audio.h:283
@ ENV_TIME_120MS
Definition audio.h:338
@ ENV_TIME_1UNITS
Definition audio.h:354
@ ENV_TIME_1100MS
Definition audio.h:303
@ ENV_TIME_18S
Definition audio.h:273
@ ENV_TIME_375MS
Definition audio.h:317
@ ENV_TIME_17S
Definition audio.h:274
@ ENV_TIME_210MS
Definition audio.h:329
@ ENV_TIME_160MS
Definition audio.h:334
@ ENV_TIME_170MS
Definition audio.h:333
@ ENV_TIME_700MS
Definition audio.h:310
@ ENV_TIME_60S
Definition audio.h:261
@ ENV_TIME_1900MS
Definition audio.h:295
@ ENV_TIME_1800MS
Definition audio.h:296
@ ENV_TIME_100MS
Definition audio.h:340
@ ENV_TIME_650MS
Definition audio.h:311
@ ENV_TIME_6S
Definition audio.h:285
@ ENV_TIME_35S
Definition audio.h:266
@ ENV_TIME_850MS
Definition audio.h:307
@ ENV_TIME_1700MS
Definition audio.h:297
@ ENV_TIME_600MS
Definition audio.h:312
@ ENV_TIME_0
Definition audio.h:355
@ ENV_TIME_10S
Definition audio.h:281
@ ENV_TIME_15S
Definition audio.h:276
@ ENV_TIME_22_5S
Definition audio.h:270
@ ENV_TIME_220MS
Definition audio.h:328
@ ENV_TIME_190MS
Definition audio.h:331
@ ENV_TIME_2UNITS
Definition audio.h:353
@ ENV_TIME_11UNITS
Definition audio.h:344
@ ENV_TIME_25S
Definition audio.h:269
@ ENV_TIME_30S
Definition audio.h:267
@ ENV_TIME_950MS
Definition audio.h:305
@ ENV_TIME_300MS
Definition audio.h:320
@ ENV_TIME_110MS
Definition audio.h:339
@ ENV_TIME_1300MS
Definition audio.h:301
@ ENV_TIME_27_5S
Definition audio.h:268
@ ENV_TIME_1400MS
Definition audio.h:300
@ ENV_TIME_150MS
Definition audio.h:335
@ ENV_TIME_2500MS
Definition audio.h:292
@ ENV_TIME_8UNITS
Definition audio.h:347
@ ENV_TIME_2250MS
Definition audio.h:293
@ ENV_TIME_14S
Definition audio.h:277
@ ENV_TIME_3S
Definition audio.h:290
@ ENV_TIME_1600MS
Definition audio.h:298
@ ENV_TIME_1S
Definition audio.h:304
@ ENV_TIME_5S
Definition audio.h:286
@ ENV_TIME_5UNITS
Definition audio.h:350
@ ENV_TIME_230MS
Definition audio.h:327
@ ENV_TIME_7S
Definition audio.h:284
@ ENV_TIME_16UNITS
Definition audio.h:341
@ ENV_TIME_6UNITS
Definition audio.h:349
@ ENV_TIME_2750MS
Definition audio.h:291
@ ENV_TIME_325MS
Definition audio.h:319
@ ENV_TIME_450MS
Definition audio.h:315
@ ENV_TIME_3_5S
Definition audio.h:289
@ ENV_TIME_4S
Definition audio.h:288
@ ENV_TIME_180MS
Definition audio.h:332
@ ENV_TIME_3UNITS
Definition audio.h:352
@ ENV_TIME_19S
Definition audio.h:272
@ ENV_TIME_13S
Definition audio.h:278
@ ENV_TIME_1500MS
Definition audio.h:299
@ ENV_TIME_200MS
Definition audio.h:330
@ ENV_TIME_4UNITS
Definition audio.h:351
@ ENV_TIME_50S
Definition audio.h:263
@ ENV_TIME_11S
Definition audio.h:280
@ ENV_TIME_130MS
Definition audio.h:337
@ ENV_TIME_40S
Definition audio.h:265
@ ENV_TIME_10UNITS
Definition audio.h:345
@ ENV_TIME_2S
Definition audio.h:294
@ ENV_TIME_250MS
Definition audio.h:325
@ ENV_TIME_900MS
Definition audio.h:306
@ ENV_TIME_12S
Definition audio.h:279
@ ENV_TIME_7UNITS
Definition audio.h:348
@ ENV_TIME_400MS
Definition audio.h:316
@ ENV_TIME_20S
Definition audio.h:271
@ ENV_TIME_16S
Definition audio.h:275
@ ENV_TIME_1200MS
Definition audio.h:302
@ ENV_TIME_9S
Definition audio.h:282
@ ENV_TIME_750MS
Definition audio.h:309
@ ENV_TIME_12UNITS
Definition audio.h:343
@ ENV_TIME_550MS
Definition audio.h:313
@ ENV_TIME_260MS
Definition audio.h:324
@ ENV_TIME_9UNITS
Definition audio.h:346
@ ENV_TIME_290MS
Definition audio.h:321
@ ENV_TIME_500MS
Definition audio.h:314
s16 * base
Definition audio.h:534
u8 compLoopCounters[4]
Definition audio.h:1180
s32 length
Definition audio.h:536
u16 instruments[16]
Definition audio.h:992
s32 length
Definition audio.h:1129
Vec3f pos
Definition audio.h:827
u32 musicEventQueueCount
Definition audio.h:1059
u8 envIntervalIndex
Definition audio.h:856
char pad_04[4]
Definition audio.h:544
u8 playVelocity
Definition audio.h:755
u8 busID
Definition audio.h:843
s8 defaultReverbAmt
Definition audio.h:798
struct SeqArgs::@71 TrackDetune
s8 volume
cent detune for instrument, reset if instrument is changed
Definition audio.h:1101
MusicEventTrigger * musicEventQueuePos
Definition audio.h:1057
char unused_08[8]
Definition audio.h:930
char pad_04[2]
Definition audio.h:552
s16 prevUpdateResult
Definition audio.h:1157
u16 compositions[4]
Definition audio.h:872
u8 * loopStart
Definition audio.h:852
Instrument * instrument
Definition audio.h:1082
struct SeqArgs::@70 InstrumentFineTune
AuFilePos sefReadStart
Definition audio.h:727
s32 num_bus
Definition audio.h:1382
s32 curVariation
Definition audio.h:1159
u8 polyphonyCounts[8]
Definition audio.h:1206
s16 ltgt
Definition audio.h:610
u8 type
Definition audio.h:688
u16 insCoarseDetune
Definition audio.h:1099
char unused_0C[2]
Definition audio.h:944
AuLowPass * lowpassTemplate
Definition audio.h:557
s8 insFineDetune
semitone detune for instrument, reset if instrument is changed
Definition audio.h:1100
s32 first
Definition audio.h:587
u8 totalVoices
Definition audio.h:1195
char pad_166[2]
Definition audio.h:815
u8 priority
Definition audio.h:865
s32 signature
Definition audio.h:880
SEFHeader * dataSEF
Definition audio.h:1061
AUFileMetadata mdata
Definition audio.h:976
s32 s8_24
Definition audio.h:8
f32 envDelta
Definition audio.h:850
s16_16 proxVolumeStep
Definition audio.h:1090
struct AuVoice * curVoice
Definition audio.h:784
#define SFX_QUEUE_SIZE
Definition audio.h:108
u8 hasExtraSection
Definition audio.h:945
u8 * cmdPtr
Definition audio.h:846
char pad_08[8]
Definition audio.h:977
s16 fgain
Definition audio.h:543
s16 detune
Definition audio.h:1190
AmbienceManager * gAuAmbienceManager
Definition engine.c:11
s32 bgmFileIndex
Definition audio.h:1148
u16 * extraFileList
Definition audio.h:1039
InstrumentBank musicBankSet[16]
Definition audio.h:1064
u8 channelDelayTime
Definition audio.h:1043
AuFX * fxL
Definition audio.h:563
u16 bankListOffset
Definition audio.h:953
s32 proxMixValue
Definition audio.h:1181
char pad_0D[3]
Definition audio.h:566
s32 sample
Definition audio.h:585
u8 sfxPan
Definition audio.h:751
char pad_130D[3]
Definition audio.h:1072
u8 proxMixVolume
Definition audio.h:1183
struct AuLowPass * activeLowpass
Definition audio.h:527
u8 envRelativeStart
Definition audio.h:860
BGMDrumInfo defaultDrumEntry
Definition audio.h:1029
struct SeqArgs::@66 InstrumentPan
Definition audio.h:533
Represents a dummy BK file large enough to hold everything except the wave data.
Definition audio.h:1008
Structure for volume fading for SFX and BGM. Has independent controls for base and envelope volumes.
Definition audio.h:504
Compact identifier for a voice used by the ambience system.
Definition audio.h:1320
u32 MusicEventTrigger
s32 b32
void(* AuCallback)(void)
s8 b8