Skip to content

Commit

Permalink
feat(serde): add optional serde derive for enums and Sample (#22)
Browse files Browse the repository at this point in the history
  • Loading branch information
emmabritton authored and tversteeg committed Dec 21, 2023
1 parent 0e54c20 commit cb255ee
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 0 deletions.
5 changes: 5 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,13 @@ description = "Realtime procedurally generated sound effects"
keywords = ["sfx", "audio", "gamedev", "sound", "procedural"]
categories = ["game-development", "multimedia", "multimedia::audio", "simulation"]

[features]
default = []
serde = ["dep:serde"]

[dependencies]
randomize = "3.0.1"
serde = { version = "1.0.193", features = ["derive"], optional = true }

[dev-dependencies]
cpal = "0.15.2"
Expand Down
3 changes: 3 additions & 0 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,8 @@ use effects::{distortion::Distortion, Effect};
use envelope::{Envelope, State};
use oscillator::Oscillator;
pub use oscillator::{DutyCycle, OscillatorType};
#[cfg(feature = "serde")]
use serde::{Deserialize, Serialize};
use std::{cell::RefCell, collections::HashMap};

/// Audio sample that procedurally generates it's sound.
Expand All @@ -65,6 +67,7 @@ use std::{cell::RefCell, collections::HashMap};
/// ```
///
/// [`Generator`]: struct.Generator.html
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[derive(Debug, Copy, Clone)]
pub struct Sample {
volume: Option<f32>,
Expand Down
4 changes: 4 additions & 0 deletions src/oscillator.rs
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
use randomize::{formulas, PCG32};
#[cfg(feature = "serde")]
use serde::{Deserialize, Serialize};
use std::{cell::RefCell, f32::consts::PI};

const PI2: f32 = PI * 2.0;

/// Possible values for the duty cycle of the square wave.
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[derive(Debug, Copy, Clone, Hash, Eq, PartialEq)]
pub enum DutyCycle {
/// A duty cycle of 12.5%.
Expand Down Expand Up @@ -36,6 +39,7 @@ impl Default for DutyCycle {
}

/// Wave form generation type.
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[derive(Debug, Copy, Clone, Hash, Eq, PartialEq)]
pub enum OscillatorType {
/// A continuus tone.
Expand Down

0 comments on commit cb255ee

Please sign in to comment.