commit 0bf6c24aa67c75302ebf8c789ff604d358a6381a
parent 7981d2b75d7e8d030c0a693c50b52549cfacaac0
Author: minerva-jupiter <ryouturn@gmail.com>
Date: Wed, 6 May 2026 10:36:54 +0900
feat(dsp): increase FM modulation depth and add dynamic gain scaling
- Increased FM depth multipliers significantly for more aggressive synthesis.
- Added dynamic master gain scaling based on acceleration intensity ("Metal Zone" mode) to provide heavier saturation.
- Updated WASM build artifacts.
Diffstat:
2 files changed, 8 insertions(+), 5 deletions(-)
diff --git a/geedback-dsp/pkg/geedback_dsp_bg.wasm b/geedback-dsp/pkg/geedback_dsp_bg.wasm
Binary files differ.
diff --git a/geedback-dsp/src/lib.rs b/geedback-dsp/src/lib.rs
@@ -180,9 +180,9 @@ impl GeedbackProcessor {
let morphs = [self.s_g_cos, self.s_a_cos, self.s_b_cos];
let fm_depths = [
- self.s_la_y.abs() * 5.0, // Osc 1: Y
- self.s_la_z.abs() * 5.0, // Osc 2: Z
- self.s_la_x.abs() * 5.0, // Osc 3: X
+ self.s_la_y.abs() * 40.0, // Osc 1: Y (Significantly increased)
+ self.s_la_z.abs() * 40.0, // Osc 2: Z
+ self.s_la_x.abs() * 40.0, // Osc 3: X
];
let mut mixed_output = 0.0;
@@ -190,7 +190,7 @@ impl GeedbackProcessor {
for i in 0..3 {
self.phases_mod[i] = (self.phases_mod[i] + (freqs[i] * 1.5) / self.sample_rate) % 1.0;
let modulation =
- (self.phases_mod[i] * 2.0 * std::f64::consts::PI).sin() * (fm_depths[i] * 2.0);
+ (self.phases_mod[i] * 2.0 * std::f64::consts::PI).sin() * (fm_depths[i] * 5.0);
let osc_out =
self.calculate_wave(self.phases[i] + modulation, self.waveforms[i], morphs[i]);
mixed_output += osc_out * self.mixes[i];
@@ -233,7 +233,10 @@ impl GeedbackProcessor {
self.filter_mem[2] = filtered;
self.latest_output = filtered;
- let master_gain = 0.6;
+
+ // "Metal Zone" Mode: Scale master gain with acceleration for heavy saturation
+ let shake_intensity = (self.s_la_x.abs() + self.s_la_y.abs() + self.s_la_z.abs()) * 4.0;
+ let master_gain = 0.6 + shake_intensity;
(filtered * master_gain).tanh()
}