Loading...
Searching...
No Matches
audio.h
Go to the documentation of this file.
1
46#ifndef OPENSNES_AUDIO_H
47#define OPENSNES_AUDIO_H
48
49#include <snes/types.h>
50
51/*============================================================================
52 * Constants
53 *============================================================================*/
54
61#define AUDIO_MAX_SAMPLES 64
62
64#define AUDIO_MAX_VOICES 8
65
67#define AUDIO_VOICE_AUTO 0xFF
68
70#define AUDIO_VOL_MAX 127
71#define AUDIO_VOL_MIN 0
72
74#define AUDIO_PAN_LEFT 0
75#define AUDIO_PAN_CENTER 8
76#define AUDIO_PAN_RIGHT 15
77
79#define AUDIO_PITCH_DEFAULT 0x1000
80
82#define AUDIO_PITCH_C3 0x085F
83#define AUDIO_PITCH_C4 0x10BE
84#define AUDIO_PITCH_C5 0x217C
87#define AUDIO_ATTACK_INSTANT 15
88#define AUDIO_ATTACK_FAST 12
89#define AUDIO_ATTACK_MEDIUM 8
90#define AUDIO_ATTACK_SLOW 4
91
93#define AUDIO_DECAY_NONE 0
94#define AUDIO_DECAY_FAST 7
95#define AUDIO_DECAY_MEDIUM 4
96#define AUDIO_DECAY_SLOW 1
97
99#define AUDIO_SUSTAIN_FULL 7
100#define AUDIO_SUSTAIN_HALF 3
101#define AUDIO_SUSTAIN_QUARTER 1
102
104#define AUDIO_RELEASE_INSTANT 31
105#define AUDIO_RELEASE_FAST 24
106#define AUDIO_RELEASE_MEDIUM 16
107#define AUDIO_RELEASE_SLOW 8
108
110#define AUDIO_ECHO_DELAY_MIN 1
111#define AUDIO_ECHO_DELAY_MAX 15
114#define AUDIO_OK 0
115#define AUDIO_ERR_NO_MEMORY 1
116#define AUDIO_ERR_INVALID_ID 2
117#define AUDIO_ERR_NOT_LOADED 3
118#define AUDIO_ERR_TIMEOUT 4
122/*============================================================================
123 * Data Types
124 *============================================================================*/
125
136
147
148/*============================================================================
149 * Initialization
150 *============================================================================*/
151
166void audioInit(void);
167
173
180void audioUpdate(void);
181
184/*============================================================================
185 * Sample Management
186 *============================================================================*/
187
208u8 audioLoadSample(u8 id, const u8 *brrData, u16 size, u16 loopPoint);
209
217
225
231
234/*============================================================================
235 * Playback Control
236 *============================================================================*/
237
252
266u8 audioPlaySampleEx(u8 sampleId, u8 volume, u8 pan, u16 pitch);
267
272void audioStopVoice(u8 voice);
273
277void audioStopAll(void);
278
281/*============================================================================
282 * Volume Control
283 *============================================================================*/
284
294void audioSetVolume(u8 volume);
295
301
308void audioSetVoiceVolume(u8 voice, u8 volumeL, u8 volumeR);
309
315void audioSetVoicePitch(u8 voice, u16 pitch);
316
323
326/*============================================================================
327 * ADSR Envelope Control
328 *============================================================================*/
329
344void audioSetADSR(u8 voice, u8 attack, u8 decay, u8 sustain, u8 release);
345
351void audioSetGain(u8 voice, u8 mode);
352
355/*============================================================================
356 * Echo/Reverb Effects
357 *============================================================================*/
358
372void audioSetEcho(u8 delay, s8 feedback, s8 volumeL, s8 volumeR);
373
378void audioSetEchoFilter(const s8 fir[8]);
379
384void audioEnableEcho(u8 voiceMask);
385
390
393/*============================================================================
394 * Legacy API (backward compatibility)
395 *============================================================================*/
396
404#define audioStop() audioStopAll()
405
407#define audioStopSample(id) audioStopVoice(id)
408
410#define audioSetPan(id, pan) /* No-op, use audioPlaySampleEx instead */
411
414#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:43
unsigned short u16
16-bit unsigned integer (0 to 65535)
Definition types.h:52
unsigned char u8
8-bit unsigned integer (0 to 255)
Definition types.h:46
BRR sample descriptor.
Definition audio.h:129
u8 flags
Definition audio.h:133
u16 spcAddress
Definition audio.h:130
u16 size
Definition audio.h:131
u8 reserved
Definition audio.h:134
u16 loopPoint
Definition audio.h:132
Voice state information.
Definition audio.h:140
u8 sampleId
Definition audio.h:142
u16 pitch
Definition audio.h:145
u8 volume
Definition audio.h:143
u8 pan
Definition audio.h:144
u8 active
Definition audio.h:141
OpenSNES Standard Types.