fix: rename oscillator struct

This commit is contained in:
2023-06-18 16:09:30 +04:00
parent 7eb6a1755d
commit a6816e33ca
3 changed files with 20 additions and 14 deletions

16
main.c
View File

@@ -72,23 +72,23 @@ SynthSound note(int semitone, float beats) {
float hz = get_hz_by_semitone(semitone);
float duration = beats * BEAT_DURATION;
OscillatorParameter first = {
Oscillator first = {
.osc = Square,
.freq = hz
};
OscillatorParameter second = {
Oscillator second = {
.osc = Saw,
.freq = hz + 0.5
};
OscillatorParameter third = {
Oscillator third = {
.osc = Saw,
.freq = hz - 1.f
};
OscillatorParameter oscArray[] = { first/*, second, third */};
OscillatorParameterList parameters = {
Oscillator oscArray[] = { first/*, second, third */};
OscillatorArray parameters = {
.array = oscArray,
.count = 1
};
@@ -137,6 +137,12 @@ size_t detect_note_pressed(Note* note) {
return is_pressed;
}
typedef struct Synth {
OscillatorArray oscillators;
Note current_note;
SynthSound out_signal;
} Synth;
//------------------------------------------------------------------------------------
// Main
//------------------------------------------------------------------------------------

View File

@@ -46,7 +46,7 @@ static float sawosc(float hz, float x) {
float multiosc(OscillatorGenerationParameter param) {
float osc_sample = 0.f;
for (size_t i = 0; i < param.oscillators.count; i++) {
OscillatorParameter osc = param.oscillators.array[i];
Oscillator osc = param.oscillators.array[i];
switch (osc.osc) {
case Sine:
osc_sample += sineosc(osc.freq, param.sample);
@@ -66,7 +66,7 @@ float multiosc(OscillatorGenerationParameter param) {
return osc_sample;
}
SynthSound freq(float duration, OscillatorParameterList osc) {
SynthSound freq(float duration, OscillatorArray osc) {
SynthSound samples = get_init_samples(duration);
// SynthSound attack = get_attack_samples();

View File

@@ -10,23 +10,23 @@ typedef enum {
Square
} OscillatorType;
typedef struct OscillatorParameter {
typedef struct Oscillator {
OscillatorType osc;
float freq;
} OscillatorParameter;
} Oscillator;
typedef struct OscillatorParameterList {
OscillatorParameter* array;
typedef struct OscillatorArray {
Oscillator* array;
size_t count;
} OscillatorParameterList;
} OscillatorArray;
typedef struct OscillatorGenerationParameter {
OscillatorParameterList oscillators;
OscillatorArray oscillators;
float sample;
} OscillatorGenerationParameter;
float multiosc(OscillatorGenerationParameter param);
SynthSound freq(float duration, OscillatorParameterList osc);
SynthSound freq(float duration, OscillatorArray osc);