This project is a try to get into digital sound synthesis, learn Rust and frontend web development using Angular.
In my real life, I'm actually a musician and I have always enjoyed electronic music and digital sound synthesis quite a lot - from a user perspective. I knew that at some point, I want to get into the fundamentals of digital sound synthesis - and even sound synthesis in general but I had no idea of how and when. At the sime, I've wanted to learn Rust but never came up with a project idea.
Fortunately, after watching this excellent video by Sebastian Lauge (I highly recommend watching all of his videos if you're into coding!) it became quite obvious to me how I can achieve all of my goals at the same time. I will build my own synthesizer using Rust from scratch. I am fully aware that there are libraries for both C++ and Rust that help with that. I, for myself, want to do it the hard way to learn as much as I can during this process.
Another thing I've always wanted to do was frontend web development (since other projects forced me to do it). So I was blown away after I came across tauri. This way I can build my frontend using Angular (this is used by the frontend guys at the company that I work at, so I thought they can help me here), my backend using Rust and get into sound synthesis while working on this project.
Please don't take this project too seriously. It's just a fun side project for me. I'm happy for any tips, tricks and comments on my work!
If you want to check out my music:
I use VS Code. You can find a guide on how to set up debugging for tauri right here.
- Rust: rust-analyzer, Tauri, Rust Syntax
- HTML: Auto Rename Tag, HTML Boilerplate, HTML CSS Support,
- TypeScript: Angular Language Service, Angular Snippets (Version 18)
- Debugging: CodeLLDB
- Quality of life: Code Spell Checker
- Theme: Tokyo Night
- Misc: Markdown All In One, Project Manager, YAML
- Rust
- cpal: Low-level library for audio input and output in pure Rust.
- Rust
- tauri (v2.0.0-rc): Frontend framework that compiles to HTML, JS, CSS.
- TypeScript
- Angular (v18): Single-page web application framework.
- PrimeNG: Angular component library.
- webaudio-controls: Javascript library to display the GUI components used in Web Music Applications.
- Assets
- WebKnobMan: Gallery and editor for audio assets.
Of course, I didn't came up with all of this myself. I got this idea after watching this excellent video by Sebastian Lauge. I highly recommend watching all of his videos if you're into coding.
- "The Book": THE resource to learn Rust