strudel_rs/lib.rs
1//! Feature-selectable, namespaced facade for the reusable `strudel-rs` libraries.
2//!
3//! Enable a facade feature to make its module available. Modules re-export the
4//! complete public API of the corresponding workspace crate without flattening
5//! names into this crate's root.
6//!
7//! The default features give you the pattern engine plus both front ends:
8//!
9//! ```toml
10//! [dependencies]
11//! strudel-rs = "0.2"
12//! ```
13//!
14//! Example usage:
15//!
16//! ```
17//! use strudel_rs::{core, dsl};
18//!
19//! let output = dsl::execute(r#"note("c4 e4 g4")"#).unwrap();
20//! let pattern: core::Pattern = output.pattern;
21//! let first_cycle = pattern.first_cycle();
22//! assert_eq!(first_cycle.len(), 3);
23//! ```
24#![cfg_attr(docsrs, feature(doc_cfg))]
25
26#[cfg(feature = "midi-to-strudel")]
27pub use ::midi_to_strudel;
28#[cfg(feature = "audio")]
29pub use ::strudel_audio as audio;
30#[cfg(feature = "core")]
31pub use ::strudel_core as core;
32#[cfg(feature = "dsl")]
33pub use ::strudel_dsl as dsl;
34#[cfg(feature = "dsp")]
35pub use ::strudel_dsp as dsp;
36#[cfg(feature = "markov")]
37pub use ::strudel_markov as markov;
38#[cfg(feature = "mini")]
39pub use ::strudel_mini as mini;
40#[cfg(feature = "music-theory")]
41pub use ::strudel_music_theory as music_theory;
42#[cfg(feature = "pcm")]
43pub use ::strudel_pcm as pcm;
44#[cfg(feature = "soundfont-gm")]
45pub use ::strudel_soundfont as soundfont;
46#[cfg(feature = "sounds")]
47pub use ::strudel_sounds as sounds;