From 644732b04d873a96dfe9e778febdd5fd5f56ebc2 Mon Sep 17 00:00:00 2001 From: Silas Bartha Date: Mon, 9 Sep 2024 19:10:03 -0400 Subject: Add default soundfont --- Cargo.toml | 4 ++++ README.md | 4 ++-- src/embedded_assets/hl4mgm.sf2 | Bin 0 -> 4191990 bytes src/lib.rs | 16 +++++++++++++--- 4 files changed, 19 insertions(+), 5 deletions(-) create mode 100644 src/embedded_assets/hl4mgm.sf2 diff --git a/Cargo.toml b/Cargo.toml index 1a83875..3bfc211 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -15,3 +15,7 @@ rodio = "0.19" version = "0.14" default-features = false features = ["bevy_audio", "bevy_asset"] + +[features] +default = ["hl4mgm"] +hl4mgm = [] diff --git a/README.md b/README.md index e4e88b0..3ddd2e6 100644 --- a/README.md +++ b/README.md @@ -38,8 +38,8 @@ fn main() { App::new() .add_plugins(( DefaultPlugins, - RustysynthPlugin { - soundfont: // Bring your own soundfont + RustySynthPlugin { + soundfont: // Bring your own soundfont or enable the "hl4mgm" feature to use a terrible 4MB default } )) .run(); diff --git a/src/embedded_assets/hl4mgm.sf2 b/src/embedded_assets/hl4mgm.sf2 new file mode 100644 index 0000000..2e88994 Binary files /dev/null and b/src/embedded_assets/hl4mgm.sf2 differ diff --git a/src/lib.rs b/src/lib.rs index 2906d61..a15f3b8 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -5,22 +5,32 @@ use bevy::{audio::AddAudioSource, prelude::*}; use rustysynth::SoundFont; use std::{ - io::Read, + io::{Cursor, Read}, sync::{Arc, OnceLock}, }; mod assets; pub use assets::*; +#[cfg(feature = "hl4mgm")] +pub (crate) static HL4MGM: &[u8] = include_bytes!("./embedded_assets/hl4mgm.sf2"); + pub(crate) static SOUNDFONT: OnceLock> = OnceLock::new(); /// This plugin configures the soundfont used for playback and registers MIDI assets. -#[derive(Default, Debug)] +#[derive(Debug)] pub struct RustySynthPlugin { - /// Reader for soundfont data. A default is not provided since soundfonts can be quite large. + /// Reader for soundfont data. pub soundfont: R, } +#[cfg(feature = "hl4mgm")] +impl Default for RustySynthPlugin> { + fn default() -> Self { + Self { soundfont: Cursor::new(HL4MGM) } + } +} + impl Plugin for RustySynthPlugin { fn build(&self, app: &mut App) { let _ = SOUNDFONT.set(Arc::new( -- cgit v1.2.3