- 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?