From 92c8fcdbafe628600762705ff5a86808721702db Mon Sep 17 00:00:00 2001 From: B0ney <40839054+B0ney@users.noreply.github.com> Date: Wed, 13 Dec 2023 13:40:22 +0000 Subject: [PATCH] work on sample player integration --- Cargo.toml | 2 +- src/app.rs | 6 +++--- src/screen.rs | 2 +- src/screen/sample_player.rs | 17 +++++++++++++++++ src/screen/sample_player/cache.rs | 8 ++++++++ src/screen/sample_player/sample_loader.rs | 14 ++++++++++++++ src/screen/sample_preview.rs | 12 ------------ 7 files changed, 44 insertions(+), 17 deletions(-) create mode 100644 src/screen/sample_player.rs create mode 100644 src/screen/sample_player/cache.rs create mode 100644 src/screen/sample_player/sample_loader.rs delete mode 100644 src/screen/sample_preview.rs diff --git a/Cargo.toml b/Cargo.toml index cf9b7c32..91280e29 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -9,7 +9,7 @@ license = "GPLv3" repository = "https://github.com/B0ney/xmodits" [features] -default = ["built"] +default = ["built", "audio_engine"] audio = ["audio_engine"] wgpu = ["iced/wgpu"] diff --git a/src/app.rs b/src/app.rs index 10e72fbd..da61f825 100644 --- a/src/app.rs +++ b/src/app.rs @@ -39,10 +39,10 @@ pub struct XMODITS { state: State, view: View, ripper: ripper::Handle, - #[cfg(feature = "audio")] - audio: audio_engine::Handle, + // #[cfg(feature = "audio")] + audio: audio_engine::SamplePlayer, + // sample_pack: audio_engine::SamplePack, tracker_info: Option, - // sample_pack: (), theme: theme::Theme, naming_cfg: data::config::SampleNameConfig, ripping_cfg: data::config::SampleRippingConfig, diff --git a/src/screen.rs b/src/screen.rs index dd4a2a94..e2188305 100644 --- a/src/screen.rs +++ b/src/screen.rs @@ -6,6 +6,6 @@ pub mod config; pub mod help; pub mod history; pub mod main_panel; -pub mod sample_preview; +pub mod sample_player; pub mod settings; pub mod tracker_info; diff --git a/src/screen/sample_player.rs b/src/screen/sample_player.rs new file mode 100644 index 00000000..358128e1 --- /dev/null +++ b/src/screen/sample_player.rs @@ -0,0 +1,17 @@ +pub mod sample_loader; +pub mod cache; + + +pub struct SamplePreviewWindow { + +} + + +pub enum Message { + Play, + Pause, + Stop, + Loop, +} + +pub fn view() {} diff --git a/src/screen/sample_player/cache.rs b/src/screen/sample_player/cache.rs new file mode 100644 index 00000000..dfbd1e0f --- /dev/null +++ b/src/screen/sample_player/cache.rs @@ -0,0 +1,8 @@ +use std::{path::PathBuf, collections::HashMap}; + +use audio_engine::SamplePack; +use parking_lot::RwLock; + +pub struct Cache { + cache: RwLock>, +} \ No newline at end of file diff --git a/src/screen/sample_player/sample_loader.rs b/src/screen/sample_player/sample_loader.rs new file mode 100644 index 00000000..2f976f3a --- /dev/null +++ b/src/screen/sample_player/sample_loader.rs @@ -0,0 +1,14 @@ +use std::{fs::File, path::PathBuf}; + +use audio_engine::SamplePack; + +// TODO +pub async fn load_sample_pack(path: PathBuf) -> SamplePack { + tokio::task::spawn_blocking(move || { + let mut file = File::open(path).unwrap(); + let module = xmodits_lib::load_module(&mut file).unwrap(); + SamplePack::build(&*module) + }) + .await + .unwrap() +} diff --git a/src/screen/sample_preview.rs b/src/screen/sample_preview.rs deleted file mode 100644 index 1a325206..00000000 --- a/src/screen/sample_preview.rs +++ /dev/null @@ -1,12 +0,0 @@ -//! Preview different samples from a loaded module -// use audio_engine; -pub use crate::widget::waveform; - -pub enum Message { - Play, - Pause, - Stop, - Loop, -} - -pub fn view() {}