feat: add random meters in demo
This commit is contained in:
@@ -1,8 +1,9 @@
|
||||
use std::collections::HashMap;
|
||||
use strum::IntoEnumIterator;
|
||||
use rand::RngExt;
|
||||
|
||||
use crate::dsp408::types::ConnectionStatus;
|
||||
use super::types::{
|
||||
use crate::dsp408::types::{
|
||||
Compressor, Crossover, CrossoverFilter, CrossoverFilters, DSPConfigState, DSPState, DelayUnit,
|
||||
DeviceFlags, DiscreteFrequency, Gate, GraphicEQ, InputChannel, InputChannelState, InputMeters,
|
||||
InputSource, InputType, Limiter, MatrixRoutes, Meter, OutputChannel, OutputChannelState,
|
||||
@@ -301,3 +302,32 @@ fn default_meter() -> Meter {
|
||||
clip: false,
|
||||
}
|
||||
}
|
||||
|
||||
fn random_meter() -> Meter {
|
||||
let mut rng = rand::rng();
|
||||
|
||||
let rms = rng.random_range(-60.0..=0.0);
|
||||
let peak = (rms + rng.random_range(0.0..=12.0) as f32).min(12.0);
|
||||
|
||||
Meter {
|
||||
rms,
|
||||
peak,
|
||||
clip: peak > 0.0,
|
||||
}
|
||||
}
|
||||
|
||||
pub fn random_input_meters() -> InputMeters {
|
||||
InputMeters {
|
||||
meters: InputChannel::iter()
|
||||
.map(|channel| (channel, random_meter()))
|
||||
.collect(),
|
||||
}
|
||||
}
|
||||
|
||||
pub fn random_output_meters() -> OutputMeters {
|
||||
OutputMeters {
|
||||
meters: OutputChannel::iter()
|
||||
.map(|channel| (channel, random_meter()))
|
||||
.collect(),
|
||||
}
|
||||
}
|
||||
@@ -8,17 +8,12 @@ use std::{
|
||||
};
|
||||
|
||||
use crate::{
|
||||
common::errors::DSPError,
|
||||
dsp408::{
|
||||
default::{default_input_meters, default_output_meters},
|
||||
default_dsp_state,
|
||||
mapper::{
|
||||
common::errors::DSPError, dsp408::{
|
||||
client::default::{default_dsp_state, default_input_meters, default_output_meters, random_input_meters, random_output_meters}, mapper::{
|
||||
self,
|
||||
constants::{CONFIG_CHUNK_INDEX_MAX, PRESET_INDEX_MAX, delay_range},
|
||||
response::map_response,
|
||||
},
|
||||
protocol::{commands, config::decode_config, frame::extract_frame},
|
||||
types::{self, ConnectionStatus::Disconnected, DSPMode},
|
||||
}, protocol::{commands, config::decode_config, frame::extract_frame}, types::{self, ConnectionStatus::Disconnected, DSPMode},
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1796,7 +1791,13 @@ impl DSP408 {
|
||||
match self.state.connection {
|
||||
types::ConnectionStatus::Connected => {
|
||||
if self.mode == types::DSPMode::Demo {
|
||||
return Ok((self.input_meters.clone(), self.output_meters.clone()));
|
||||
self.input_meters = random_input_meters();
|
||||
self.output_meters = random_output_meters();
|
||||
|
||||
return Ok((
|
||||
self.input_meters.clone(),
|
||||
self.output_meters.clone(),
|
||||
));
|
||||
}
|
||||
|
||||
let request = commands::build_get_meter_levels();
|
||||
|
||||
@@ -1,2 +1,4 @@
|
||||
mod dsp408;
|
||||
mod default;
|
||||
|
||||
pub use dsp408::DSP408;
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
mod client;
|
||||
mod default;
|
||||
mod mapper;
|
||||
mod protocol;
|
||||
|
||||
pub mod types;
|
||||
|
||||
pub use client::DSP408;
|
||||
pub(crate) use default::default_dsp_state;
|
||||
|
||||
Reference in New Issue
Block a user