Skip to content

Commit beba31e

Browse files
ArthurGibertchmanie
authored andcommitted
fix(lfo): add some variable safety
1 parent feeecf0 commit beba31e

File tree

1 file changed

+5
-5
lines changed

1 file changed

+5
-5
lines changed

faderpunk/src/apps/lfo.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ pub async fn run(
138138
let (range, use_midi, midi_chan, midi_cc) =
139139
params.query(|p| (p.range, p.use_midi, p.midi_channel, p.midi_cc));
140140

141-
let speed_mult = 2u32.pow(params.query(|p| p.speed_mult) as u32);
141+
let speed_mult = 2u32.pow(params.query(|p| p.speed_mult).min(31) as u32);
142142
let output = app.make_out_jack(0, range).await;
143143
let fader = app.use_faders();
144144
let buttons = app.use_buttons();
@@ -163,7 +163,7 @@ pub async fn run(
163163
leds.set(0, Led::Button, color, Brightness::Lower);
164164

165165
glob_lfo_speed.set(curve.at(speed) as f32 * 0.015 + 0.0682);
166-
glob_div.set(resolution[speed as usize / 500]);
166+
glob_div.set(resolution[(speed as usize / 500).clamp(0, 8)]);
167167
let mut count = 0;
168168
let mut quant_speed: f32 = 6.;
169169
let mut last_out = 0;
@@ -181,7 +181,7 @@ pub async fn run(
181181
if glob_tick.get() {
182182
// add timeout
183183
let div = glob_div.get();
184-
quant_speed = 4095. / ((count * div) as f32 / 24.);
184+
quant_speed = 4095. / ((count.max(1) as f32 * div as f32) / 24.);
185185
count = 0;
186186
glob_tick.set(false);
187187
}
@@ -263,7 +263,7 @@ pub async fn run(
263263
match latch_layer {
264264
LatchLayer::Main => {
265265
glob_lfo_speed.set(curve.at(new_value) as f32 * 0.015 + 0.0682);
266-
glob_div.set(resolution[new_value as usize / 500]);
266+
glob_div.set(resolution[(new_value as usize / 500).clamp(0, 8)]);
267267
storage.modify_and_save(|s| s.layer_speed = new_value);
268268
}
269269
LatchLayer::Alt => {
@@ -331,7 +331,7 @@ pub async fn run(
331331
let wave_saved = storage.query(|s| s.wave);
332332

333333
glob_lfo_speed.set(curve.at(speed) as f32 * 0.015 + 0.0682);
334-
glob_div.set(resolution[speed as usize / 500]);
334+
glob_div.set(resolution[(speed as usize / 500).clamp(0, 8)]);
335335

336336
let color = get_color_for(wave_saved);
337337
leds.set(0, Led::Button, color, Brightness::Lower);

0 commit comments

Comments
 (0)