feature/share-libs
rs 63 lines 1.66 KB
Raw
1 use std::fmt::Display;
2
3 use crate::players::{BASS_SINK, DRUMS_SINK, OTHER_SINK, VOCALS_SINK};
4 use log::debug;
5 use serde::{Deserialize, Serialize};
6
7 #[derive(Deserialize, Serialize, Debug, PartialEq)]
8 pub enum Mode {
9 #[serde(rename = "vocals")]
10 Vocals,
11 #[serde(rename = "bass")]
12 Bass,
13 #[serde(rename = "other")]
14 Other,
15 #[serde(rename = "drums")]
16 Drums,
17 Unknown,
18 }
19
20 impl Display for Mode {
21 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
22 let mode = match self {
23 Mode::Vocals => "vocals",
24 Mode::Bass => "bass",
25 Mode::Other => "other",
26 Mode::Drums => "drums",
27 Mode::Unknown => "unknown",
28 };
29 write!(f, "{}", mode)
30 }
31 }
32
33 #[tauri::command]
34 pub fn player_set_volume(mode: Mode, volume: String) {
35 // Calcluate volume from 0.0 to 1.0
36 let volume = volume.parse::<f32>().unwrap() / 100.0;
37 debug!("Setting volume for {:?} to {}.", mode, volume);
38 match mode {
39 Mode::Vocals => {
40 if let Some(sink) = unsafe { VOCALS_SINK.get() } {
41 sink.set_volume(volume)
42 }
43 }
44 Mode::Bass => {
45 if let Some(sink) = unsafe { BASS_SINK.get() } {
46 sink.set_volume(volume)
47 }
48 }
49 Mode::Other => {
50 if let Some(sink) = unsafe { OTHER_SINK.get() } {
51 sink.set_volume(volume)
52 }
53 }
54 Mode::Drums => {
55 if let Some(sink) = unsafe { DRUMS_SINK.get() } {
56 sink.set_volume(volume)
57 }
58 }
59 Mode::Unknown => {
60 panic!("Should not be here.")
61 }
62 }
63 }