Musical theory and audio signals concepts expressed in Rust. It is mostly expired by HSoM book.
sudo apt install libasound2-dev # also `qjackctl` and `qsynth` for handling audio streams
You could listen to your code examples (or included example)
by compiling with the play-midi
feature (included by default).
-
Run one of the external MIDI servers, e.g.:
-
timidity -iA -Os
-
fluidsynth --audio-driver=alsa -o audio.alsa.device=pulse /usr/share/sounds/sf2/FluidR3_GM.sf2
-
-
Run your code, e.g.
cargo run --example hsom-exercises
.
-
On notes and everything else:
-
On MIDI:
- http://tedfelix.com/linux/linux-midi.html
- https://sndrtj.eu/2019/10/19/Using-a-USB-midi-keyboard-on-Ubuntu/
- https://askubuntu.com/q/572120
- https://linuxaudio.github.io/libremusicproduction/html/workflow.html
- https://www.audiolabs-erlangen.de/resources/MIR/FMP/C1/C1S2_MIDI.html (also see the FMP book)
-
On signals:
- https://www.youtube.com/watch?v=odeWLp96fdo
- https://crates.io/crates/hound
- https://crates.io/crates/rodio
- https://crates.io/crates/fundsp (see the
combinator
module for signal processing arrows-style)
- https://crates.io/crates/rust-music-theory
- https://crates.io/crates/rust-music
- https://crates.io/crates/tune-cli
- https://crates.io/crates/tonal
- search crates.io: https://crates.io/search?q=WORD where WORD: {music, sound, melody, chord, harmony, note, pitch, octave}.