The goal of this project is to provide beginner musicians with constantly adjusted suggestions.
It can be easily adjusted for any instrument, and adapted to all kinds of consonance models.
Currently, it gives you a somewhat accurate fretboard-looking suggestion thing.
Because the analysis is (ideally) objective, by estimating sound roughness, the suggestions do not take into account any cultural parts of perceived consonance and dissonance. This could potentially help a musician to break out of habits and explore music outside of trained norms.
On the other hand, because the analysis is still a couple levels of abstractions removed from the actual perception of dissonance, a lot of information is lost, and up to the composer to estimate, by instinct or traditional music theory.
The dependencies is SDL2 and SDL2-ttf (or libsdl2-dev and libsdl2-ttf-dev for linux)
For the terminal display you will need a modern terminal, with true-colour and termcaps support.
You also need cargo, but that's a bit of a given for any rust project.
Run with cargo run
, help with cargo run -- -h
If experiencing lag, consider cargo run --release
and the -o
option, which allows the program to 'skip' audio data.
- Audio feedback mode ?
- Change parameters at runtime
- Other displays than guitar
- Better smoothing of dissonance curve over octaves
- Make the note graph indicate value not just diff to other values
- Changing the ratio of discarded frequencies
- Chord display
- Put back dissonance exp lookup table to accelerate load time
- Use actual sample of the targeted instrument
- Use a more scientific secondary beatings estimate (dissonance over time)
- Option for a music theory approach instead of the current formula
- Remove masking unless it shows to actually be working
- use OCTAVE const for different octave sizes
- rename Frequency to Component, and Frequency.value to Component.frequency
- rename fourier_thread to scoring_thread or similar
- use ThreadBuilder::name