summaryrefslogtreecommitdiff
path: root/src/audio/seqplayer.h
blob: 715701b89bd952b0f5076ae96091def22a5e6cbd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#ifndef AUDIO_SEQPLAYER_H
#define AUDIO_SEQPLAYER_H

#include <libultra/types.h>

#include "audio/internal.h"

#define PORTAMENTO_IS_SPECIAL(x) ((x).mode & 0x80)
#define PORTAMENTO_MODE(x) ((x).mode & ~0x80)
#define PORTAMENTO_MODE_1 1
#define PORTAMENTO_MODE_2 2
#define PORTAMENTO_MODE_3 3
#define PORTAMENTO_MODE_4 4
#define PORTAMENTO_MODE_5 5

void sequence_channel_init(struct SequenceChannel* seqChannel);
s32 seq_channel_set_layer(struct SequenceChannel* seqChannel, s32 layerIndex);
void seq_channel_layer_disable(struct SequenceChannelLayer* layer);
void seq_channel_layer_free(struct SequenceChannel* seqChannel, s32 layerIndex);
void sequence_channel_disable(struct SequenceChannel* seqChannel);
struct SequenceChannel* allocate_sequence_channel(void);
void sequence_player_init_channels(struct SequencePlayer* seqPlayer, u16 channelBits);
void sequence_player_disable_channels(struct SequencePlayer* seqPlayer, u16 channelBits);
void sequence_channel_enable(struct SequencePlayer* seqPlayer, u8 channelIndex, void* script);
void sequence_player_disable(struct SequencePlayer* seqPlayer);
void func_800BEF2C(struct SequencePlayer* seqPlayer);
void audio_list_push_back(struct AudioListItem* list, struct AudioListItem* item);
void* audio_list_pop_back(struct AudioListItem* list);
void init_layer_freelist(void);
u8 m64_read_u8(struct M64ScriptState* state);
s16 m64_read_s16(struct M64ScriptState* state);
u16 m64_read_compressed_u16(struct M64ScriptState* state);
u8 get_instrument(struct SequenceChannel* seqChannel, u8 instId, struct Instrument** instOut,
                  struct AdsrSettings* adsr);
void process_sequences(s32);
void set_instrument(struct SequenceChannel* seqChannel, u8 instId);
void sequence_channel_set_volume(struct SequenceChannel* seqChannel, u8 volume);
void seq_channel_layer_process_script(struct SequenceChannelLayer* layer);
void sequence_player_process_sequence(struct SequencePlayer*);
void sequence_channel_process_script(struct SequenceChannel*);
void process_sequences(s32);
void init_sequence_player(u32 player);
void init_sequence_players(void);

#endif // AUDIO_SEQPLAYER_H