Skip to main content

rustriff_lib/commands/effect_commands/
delay.rs

1use crate::commands::helpers::persist_amp_config;
2use crate::services::amp_config_service::AmpConfigPersistenceService;
3use crate::services::audio_service::AudioService;
4use std::sync::Mutex;
5use tracing::info;
6
7#[tauri::command]
8pub fn set_delay_level(
9    audio_service: tauri::State<Mutex<AudioService>>,
10    persistence_service: tauri::State<Mutex<AmpConfigPersistenceService>>,
11    effect_id: u32,
12    level: f32,
13) -> Result<(), String> {
14    if !level.is_finite() {
15        return Err(format!(
16            "Invalid level: {} (must be finite, not NaN or infinite)",
17            level
18        ));
19    }
20
21    let service = audio_service
22        .lock()
23        .map_err(|_| "Failed to lock audio service".to_string())?;
24    let channel = service
25        .channels()
26        .iter()
27        .find(|c| c.id() == *service.current_channel_id())
28        .ok_or("No active channel")?;
29    channel.set_effect_param(effect_id, "level", level)?;
30    info!(
31        channel_id = *service.current_channel_id(),
32        effect_id, level, "Delay level updated"
33    );
34    persist_amp_config(&service, &persistence_service);
35    Ok(())
36}
37
38#[tauri::command]
39pub fn set_delay_delay_time(
40    audio_service: tauri::State<Mutex<AudioService>>,
41    persistence_service: tauri::State<Mutex<AmpConfigPersistenceService>>,
42    effect_id: u32,
43    delay_time: u32,
44) -> Result<(), String> {
45    let service = audio_service
46        .lock()
47        .map_err(|_| "Failed to lock audio service".to_string())?;
48    let channel = service
49        .channels()
50        .iter()
51        .find(|c| c.id() == *service.current_channel_id())
52        .ok_or("No active channel")?;
53    channel.set_effect_param(effect_id, "delay_time", delay_time)?;
54    info!(
55        channel_id = *service.current_channel_id(),
56        effect_id, delay_time, "Delay delay_time updated"
57    );
58    persist_amp_config(&service, &persistence_service);
59    Ok(())
60}