summaryrefslogtreecommitdiffstats
path: root/src/synth_engine_v2.c
diff options
context:
space:
mode:
authorgrm <grm@eyesin.space>2025-11-02 18:44:26 +0200
committergrm <grm@eyesin.space>2025-11-02 18:44:26 +0200
commit8f00dd3df55677beff2924d2c6eec205744ebdf6 (patch)
tree56519b5384ab26ba834cecc8988dab91d6be8fa7 /src/synth_engine_v2.c
parent2875bd24390d48d2af44071869757b6f1ba35498 (diff)
downloadsynth-project-8f00dd3df55677beff2924d2c6eec205744ebdf6.tar.gz
synth-project-8f00dd3df55677beff2924d2c6eec205744ebdf6.tar.bz2
synth-project-8f00dd3df55677beff2924d2c6eec205744ebdf6.zip
patch name and reloadingHEADmaster
Diffstat (limited to 'src/synth_engine_v2.c')
-rw-r--r--src/synth_engine_v2.c23
1 files changed, 16 insertions, 7 deletions
diff --git a/src/synth_engine_v2.c b/src/synth_engine_v2.c
index ac248b3..95ed61b 100644
--- a/src/synth_engine_v2.c
+++ b/src/synth_engine_v2.c
@@ -219,6 +219,12 @@ float Q_rsqrt(float number)
return conv.f;
}
+float
+make_single_sample(synth_t *synth, float freq, midi_note_t * note, unsigned int sample_rate)
+{
+ return synth->gen[synth->geni](freq, note, synth->x, sample_rate);
+}
+
/**
* @brief generate a sample from the currently selected generator
*
@@ -267,10 +273,10 @@ make_sample(synth_t * synth, unsigned int sample_rate, int frame)
note->lfo_index = osc_sin_next(CC_GET(lfo_freq), note->lfo_index);
- sample += rms * note->velocity * adsr * synth->gen[synth->geni](targ_freq,
- note,
- synth->x,
- sample_rate);
+ sample += rms * note->velocity * adsr * make_single_sample(synth,
+ targ_freq,
+ note,
+ sample_rate);
}
/* filter */
@@ -599,10 +605,10 @@ init_synth(void)
synth->viz.rate_divider = 15;
synth->viz.y_divider = 1;
-// for (int i = 0; i < RING_SIZE; i++) synth->viz.wave_buffer_data[i] = 0;
+ // for (int i = 0; i < RING_SIZE; i++) synth->viz.wave_buffer_data[i] = 0;
synth->viz.wave_buffer_data = (float *)calloc(sizeof(float), RING_SIZE);
PaUtil_InitializeRingBuffer(&synth->viz.wave_buffer, sizeof(float), RING_SIZE, synth->viz.wave_buffer_data);
-// for (int i = 0; i < RING_SIZE; i++) synth->viz.fft_buffer_data[i] = 0;
+ // for (int i = 0; i < RING_SIZE; i++) synth->viz.fft_buffer_data[i] = 0;
synth->viz.fft_buffer_data = (float *)calloc(sizeof(float), RING_SIZE);
PaUtil_InitializeRingBuffer(&synth->viz.fft_buffer, sizeof(float), RING_SIZE, synth->viz.fft_buffer_data);
@@ -621,7 +627,6 @@ init_synth(void)
synth->viz.tmp_index = 0;
synth->wvt_pos = 0;
-
synth->sound_active = 0;
strcpy(synth->soundcard.name, "default");
@@ -634,6 +639,8 @@ init_synth(void)
synth->gui.screen = SCREEN_MAIN;
synth->gui.audiomidi_initialized = 0;
+ synth->patch_name = NULL;
+
return synth;
}
@@ -657,6 +664,8 @@ free_synth(synth_t * synth)
free_bw_band_stop(synth->fff2);
free(synth->del);
+
+ if (synth->patch_name) free(synth->patch_name);
free(synth);
}