xtasks
This commit is contained in:
@@ -70,9 +70,26 @@ impl Message {
|
||||
let row: usize = parts[4].parse::<usize>().address_part_result("row")? - 1; // Convert to 0-based
|
||||
|
||||
if let Some(rosc::OscType::String(state_str)) = args.first() {
|
||||
let state = Self::track_state_from_osc_string(state_str);
|
||||
let state = state_str.parse::<TrackState>().unwrap_or(TrackState::Empty);
|
||||
return Ok(Some(Message::TrackStateChanged { column, row, state }));
|
||||
}
|
||||
} else if addr.starts_with("/looper/cell/") && addr.ends_with("/volume") {
|
||||
// Parse: /looper/cell/{column}/{row}/volume
|
||||
let parts: Vec<&str> = addr.split('/').collect();
|
||||
if parts.len() != 6 {
|
||||
return Err(Error::AddressParseError(addr));
|
||||
}
|
||||
|
||||
let column: usize = parts[3].parse::<usize>().address_part_result("column")? - 1; // Convert to 0-based
|
||||
let row: usize = parts[4].parse::<usize>().address_part_result("row")? - 1; // Convert to 0-based
|
||||
|
||||
if let Some(rosc::OscType::Float(volume)) = args.first() {
|
||||
return Ok(Some(Message::TrackVolumeChanged {
|
||||
column,
|
||||
row,
|
||||
volume: *volume
|
||||
}));
|
||||
}
|
||||
} else if addr == "/looper/selected/column" {
|
||||
if let Some(rosc::OscType::Int(column_1based)) = args.first() {
|
||||
let column = (*column_1based as usize).saturating_sub(1); // Convert to 0-based
|
||||
@@ -88,14 +105,4 @@ impl Message {
|
||||
// Unknown or unsupported message
|
||||
Ok(None)
|
||||
}
|
||||
|
||||
fn track_state_from_osc_string(s: &str) -> TrackState {
|
||||
match s {
|
||||
"empty" => TrackState::Empty,
|
||||
"idle" => TrackState::Idle,
|
||||
"recording" => TrackState::Recording,
|
||||
"playing" => TrackState::Playing,
|
||||
_ => TrackState::Empty, // Default fallback
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,6 @@
|
||||
use strum::Display;
|
||||
|
||||
use crate::*;
|
||||
|
||||
#[derive(Clone, Debug, Display, PartialEq)]
|
||||
#[derive(Clone, Debug, PartialEq, strum::Display, strum::EnumString)]
|
||||
pub enum TrackState {
|
||||
Empty,
|
||||
Idle,
|
||||
|
||||
Reference in New Issue
Block a user