OpenSNES
Modern Open-Source SNES Development SDK
Loading...
Searching...
No Matches
audio.h
Go to the documentation of this file.
1
60
61#ifndef OPENSNES_AUDIO_H
62#define OPENSNES_AUDIO_H
63
64#include <snes/types.h>
65
66/*============================================================================
67 * Constants
68 *============================================================================*/
69
74
76#define AUDIO_MAX_SAMPLES 64
77
79#define AUDIO_MAX_VOICES 8
80
82#define AUDIO_VOICE_AUTO 0xFF
83
85#define AUDIO_VOL_MAX 127
86#define AUDIO_VOL_MIN 0
87
89#define AUDIO_PAN_LEFT 0
90#define AUDIO_PAN_CENTER 8
91#define AUDIO_PAN_RIGHT 15
92
94#define AUDIO_PITCH_DEFAULT 0x1000
95
97#define AUDIO_PITCH_C3 0x085F
98#define AUDIO_PITCH_C4 0x10BE
99#define AUDIO_PITCH_C5 0x217C
100
102#define AUDIO_ATTACK_INSTANT 15
103#define AUDIO_ATTACK_FAST 12
104#define AUDIO_ATTACK_MEDIUM 8
105#define AUDIO_ATTACK_SLOW 4
106
108#define AUDIO_DECAY_NONE 0
109#define AUDIO_DECAY_FAST 7
110#define AUDIO_DECAY_MEDIUM 4
111#define AUDIO_DECAY_SLOW 1
112
114#define AUDIO_SUSTAIN_FULL 7
115#define AUDIO_SUSTAIN_HALF 3
116#define AUDIO_SUSTAIN_QUARTER 1
117
119#define AUDIO_RELEASE_INSTANT 31
120#define AUDIO_RELEASE_FAST 24
121#define AUDIO_RELEASE_MEDIUM 16
122#define AUDIO_RELEASE_SLOW 8
123
125#define AUDIO_ECHO_DELAY_MIN 1
126#define AUDIO_ECHO_DELAY_MAX 15
127
129#define AUDIO_OK 0
130#define AUDIO_ERR_NO_MEMORY 1
131#define AUDIO_ERR_INVALID_ID 2
132#define AUDIO_ERR_NOT_LOADED 3
133#define AUDIO_ERR_TIMEOUT 4
134
136
137/*============================================================================
138 * Data Types
139 *============================================================================*/
140
151
162
163/*============================================================================
164 * Initialization
165 *============================================================================*/
166
171
184void audioInit(void);
185
191
198void audioUpdate(void);
199
201
202/*============================================================================
203 * Sample Management
204 *============================================================================*/
205
210
226u8 audioLoadSample(u8 id, const u8 *brrData, u16 size, u16 loopPoint);
227
235
243
249
251
252/*============================================================================
253 * Playback Control
254 *============================================================================*/
255
260
270
284u8 audioPlaySampleEx(u8 sampleId, u8 volume, u8 pan, u16 pitch);
285
290void audioStopVoice(u8 voice);
291
295void audioStopAll(void);
296
298
299/*============================================================================
300 * Volume Control
301 *============================================================================*/
302
307
312void audioSetVolume(u8 volume);
313
319
326void audioSetVoiceVolume(u8 voice, u8 volumeL, u8 volumeR);
327
333void audioSetVoicePitch(u8 voice, u16 pitch);
334
341
343
344/*============================================================================
345 * ADSR Envelope Control
346 *============================================================================*/
347
352
362void audioSetADSR(u8 voice, u8 attack, u8 decay, u8 sustain, u8 release);
363
369void audioSetGain(u8 voice, u8 mode);
370
372
373/*============================================================================
374 * Echo/Reverb Effects
375 *============================================================================*/
376
381
396void audioSetEcho(u8 delay, s8 feedback, s8 volumeL, s8 volumeR);
397
402void audioSetEchoFilter(const s8 fir[8]);
403
408void audioEnableEcho(u8 voiceMask);
409
414
416
417/*============================================================================
418 * Legacy API (backward compatibility)
419 *============================================================================*/
420
426
428#define audioStop() audioStopAll()
429
431#define audioStopSample(id) audioStopVoice(id)
432
434#define audioSetPan(id, pan) /* No-op, use audioPlaySampleEx instead */
435
437
438#endif /* OPENSNES_AUDIO_H */
void audioSetADSR(u8 voice, u8 attack, u8 decay, u8 sustain, u8 release)
Set ADSR envelope for a voice.
void audioSetGain(u8 voice, u8 mode)
Set GAIN mode for a voice (alternative to ADSR).
void audioEnableEcho(u8 voiceMask)
Enable echo for specific voices.
void audioDisableEcho(void)
Disable echo for all voices.
void audioSetEchoFilter(const s8 fir[8])
Set FIR filter coefficients for echo.
void audioSetEcho(u8 delay, s8 feedback, s8 volumeL, s8 volumeR)
Configure echo parameters.
u8 audioIsReady(void)
Check if audio system is ready.
void audioUpdate(void)
Process audio updates.
void audioInit(void)
Initialize the audio system.
void audioStopAll(void)
Stop all audio playback.
void audioStopVoice(u8 voice)
Stop a specific voice.
u8 audioPlaySampleEx(u8 sampleId, u8 volume, u8 pan, u16 pitch)
Play a sample with custom settings.
u8 audioPlaySample(u8 sampleId)
Play a sample with default settings.
void audioUnloadSample(u8 id)
Unload a sample from a slot.
u16 audioGetFreeMemory(void)
Get available SPC700 RAM for samples.
u8 audioLoadSample(u8 id, const u8 *brrData, u16 size, u16 loopPoint)
Load a BRR sample into SPC700 RAM.
u8 audioGetSampleInfo(u8 id, AudioSample *info)
Get information about a loaded sample.
u8 audioGetVolume(void)
Get current master volume.
void audioSetVoicePitch(u8 voice, u16 pitch)
Set pitch for a specific voice.
void audioSetVoiceVolume(u8 voice, u8 volumeL, u8 volumeR)
Set volume for a specific voice.
void audioSetVolume(u8 volume)
Set master volume.
void audioGetVoiceState(u8 voice, AudioVoiceState *state)
Get current state of a voice.
signed char s8
8-bit signed integer (-128 to 127)
Definition types.h:44
unsigned short u16
16-bit unsigned integer (0 to 65535)
Definition types.h:53
unsigned char u8
8-bit unsigned integer (0 to 255)
Definition types.h:47
BRR sample descriptor.
Definition audio.h:144
u8 flags
Definition audio.h:148
u16 spcAddress
Definition audio.h:145
u16 size
Definition audio.h:146
u8 reserved
Definition audio.h:149
u16 loopPoint
Definition audio.h:147
Voice state information.
Definition audio.h:155
u8 sampleId
Definition audio.h:157
u16 pitch
Definition audio.h:160
u8 volume
Definition audio.h:158
u8 pan
Definition audio.h:159
u8 active
Definition audio.h:156
OpenSNES Standard Types.