Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
MorsGames
GitHub Repository: MorsGames/sm64plus
Path: blob/master/src/audio/playback.h
7857 views
1
#ifndef AUDIO_PLAYBACK_H
2
#define AUDIO_PLAYBACK_H
3
4
#include <PR/ultratypes.h>
5
6
#include "internal.h"
7
8
// Mask bits denoting where to allocate notes from, according to a channel's
9
// noteAllocPolicy. Despite being checked as bitmask bits, the bits are not
10
// orthogonal; rather, the smallest bit wins, except for NOTE_ALLOC_LAYER,
11
// which *is* orthogonal to the other. SEQ implicitly includes CHANNEL.
12
// If none of the CHANNEL/SEQ/GLOBAL_FREELIST bits are set, all three locations
13
// are tried.
14
#define NOTE_ALLOC_LAYER 1
15
#define NOTE_ALLOC_CHANNEL 2
16
#define NOTE_ALLOC_SEQ 4
17
#define NOTE_ALLOC_GLOBAL_FREELIST 8
18
19
void process_notes(void);
20
void seq_channel_layer_note_decay(struct SequenceChannelLayer *seqLayer);
21
void seq_channel_layer_note_release(struct SequenceChannelLayer *seqLayer);
22
void init_synthetic_wave(struct Note *note, struct SequenceChannelLayer *seqLayer);
23
void init_note_lists(struct NotePool *pool);
24
void init_note_free_list(void);
25
void note_pool_clear(struct NotePool *pool);
26
void note_pool_fill(struct NotePool *pool, s32 count);
27
void audio_list_push_front(struct AudioListItem *list, struct AudioListItem *item);
28
void audio_list_remove(struct AudioListItem *item);
29
struct Note *alloc_note(struct SequenceChannelLayer *seqLayer);
30
void reclaim_notes(void);
31
void note_init_all(void);
32
33
#if defined(VERSION_SH)
34
void note_set_vel_pan_reverb(struct Note *note, struct ReverbInfo *reverbInfo);
35
#elif defined(VERSION_EU)
36
void note_set_vel_pan_reverb(struct Note *note, f32 velocity, u8 pan, u8 reverbVol);
37
#endif
38
39
#if defined(VERSION_EU) || defined(VERSION_SH)
40
struct AudioBankSound *instrument_get_audio_bank_sound(struct Instrument *instrument, s32 semitone);
41
struct Instrument *get_instrument_inner(s32 bankId, s32 instId);
42
struct Drum *get_drum(s32 bankId, s32 drumId);
43
void note_init_volume(struct Note *note);
44
void note_set_frequency(struct Note *note, f32 frequency);
45
void note_enable(struct Note *note);
46
void note_disable(struct Note *note);
47
#endif
48
49
#endif // AUDIO_PLAYBACK_H
50
51