- Welcome to Raug! - Some of you may or may not know that I'm an experienced electronic musician - I've always had an eye out for ways to combine music and programming, but wasn't satisfied with any current options - PureData and Max/MSP are visual (not my preference) - SuperCollider and Sonic Pi have weird syntax (imo) - JUCE uses C++ (ew) - I wanted something I could use with a regular programming language (ideally Rust or Python), and that made sense to my brain - So, I set out to create my own way! - What is Raug? - (R)usty (Au)dio (G)raphs - Allows for construction of signal flow graphs, and the ability to pass signals through them - In layman's terms, I can make my own instruments and effects! - Inspired by many of the aforementioned existing music programming things, especially Max - Aside: A successor to PAPR - I understand Rust and optimized programming much better now since working on my game engine - New version is much more lightweight and easier to use - Design goals - Fast; focus on types that are cheap to copy, and use references as much as we can - Minimize allocations on the real-time audio thread - Precompute as much as possible - 2 API levels: - Low-level `processor` API where raw access to audio data are available for arbitrary processing in Rust - High-level `builder` API for constructing signal processor graphs intuitively - Bindings to Python! - Example Tour - `demo.rs` (intro to `builder` api) - `bang.rs` (messages) - `param.rs` (external control of signals) - `processor.rs` (`processor` api) - Bonus: Python bindings! - Allows for rapid development without needing to recompile - Integrate with Python's ecosystem for endless possibilities! - (go over Pygame Theremin example) - Future - More built-in processors - GUI controls - Live coding?