experiments
This commit is contained in:
41
util/audio.h
41
util/audio.h
@@ -1,6 +1,12 @@
|
||||
/*
|
||||
// Created by bruno on 16.2.2025.
|
||||
*/
|
||||
#define SAMPLE_RATE 44100
|
||||
#define NUM_SYNTH_VOICES 128
|
||||
#define SMOOTHING_FACTOR 0.001f
|
||||
#define MIDI_TRACK_MAX 16
|
||||
#define MAX_MIDI_EVENTS 1024
|
||||
#define MIDI_VOICES MIDI_TRACK_MAX
|
||||
|
||||
#ifndef RISCB_AUDIO_H
|
||||
#define RISCB_AUDIO_H
|
||||
@@ -11,23 +17,42 @@
|
||||
#include <stdlib.h>
|
||||
#include "../tiles/tile.h"
|
||||
|
||||
#define SAMPLE_RATE 44100
|
||||
#define NUM_SYNTH_VOICES 256
|
||||
#define SMOOTHING_FACTOR 0.001f
|
||||
|
||||
typedef enum {
|
||||
MIDI_NOTE_OFF = 0x80,
|
||||
MIDI_NOTE_ON = 0x90,
|
||||
MIDI_PROGRAM_CHANGE = 0xC0,
|
||||
// You could add more here if needed
|
||||
} MidiEventType;
|
||||
|
||||
typedef struct {
|
||||
float timeSec; // When to trigger this event
|
||||
uint8_t type; // 0 = Note On, 1 = Note Off
|
||||
MidiEventType type; // 0 = Note On, 1 = Note Off
|
||||
uint8_t note;
|
||||
uint8_t velocity;
|
||||
} MidiEvent;
|
||||
|
||||
|
||||
extern MidiEvent midiEvents[MIDI_TRACK_MAX][MAX_MIDI_EVENTS];
|
||||
extern int midiEventCount[MIDI_TRACK_MAX];
|
||||
extern int nextMidiEvent[MIDI_TRACK_MAX];
|
||||
|
||||
|
||||
typedef enum Waveform {
|
||||
WAVE_SINE,
|
||||
WAVE_SQUARE,
|
||||
WAVE_SAWTOOTH,
|
||||
WAVE_TRIANGLE,
|
||||
WAVE_NOISE
|
||||
WAVE_NOISE,
|
||||
WAVE_HALF_SINE,
|
||||
WAVE_PULSE25,
|
||||
WAVE_PULSE10,
|
||||
WAVE_CLIPPED_SINE,
|
||||
WAVE_EXP,
|
||||
WAVE_RAMP,
|
||||
WAVE_REVERSE_SAW,
|
||||
WAVE_STAIRCASE,
|
||||
WAVE_COUNT
|
||||
} Waveform;
|
||||
|
||||
typedef struct SynthVoice {
|
||||
@@ -50,8 +75,10 @@ extern AudioData audioData;
|
||||
|
||||
void audio_callback(void *userdata, Uint8 *stream, int len);
|
||||
|
||||
uint16_t getAvailableChannel();
|
||||
|
||||
void load_midi_file(const char *path);
|
||||
|
||||
uint16_t getAvailableChannel();
|
||||
|
||||
Waveform resolvePatch(uint8_t patchNum);
|
||||
|
||||
#endif //RISCB_AUDIO_H
|
||||
|
Reference in New Issue
Block a user