Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Detect key and scale per track #435

Open
SamEdwards-1 opened this issue Jan 11, 2025 · 0 comments
Open

Detect key and scale per track #435

SamEdwards-1 opened this issue Jan 11, 2025 · 0 comments

Comments

@SamEdwards-1
Copy link
Collaborator

SamEdwards-1 commented Jan 11, 2025

WHAT

It would be useful to be able to detect key/scale on tracks that have been loaded or recorded.

DESCRIBE

As a given set of pitch classes can satisfy conformance to multiple scales, upon clicking a "detect scale" icon button on the track, the user will be presented a dialog with a pick list of scale candidates listed from most common to esoteric (For instance, "Little Earthquakes" by Tori Amos can satisfy "E Minor", "E Major", "F# Minor Pentatonic", "C Lydian Augmented #2 Scale", "F# Yo" or "Ab Kumai", among others)

Selecting a scale will cause that scale to be appear as an XS text label next to the originating icon button. The user should be able to re-detect scale, i.e. the originating icon button should not be replaced. A future feature could cause scale note highlighting in the piano roll and removal of note rows that do not conform to the track (TBD, see Ableton Live piano roll UX)

HOW

The tonal.js provides excellent music theory function support including key/scale detection against a very large number of scales, and uses a more performant mechanism for expressing scale than currently implemented. The entities/KeySignature class can be refactored to rely on this library, as it uses a much less efficient algorithm and was not originally intended as a beachhead for music theory workstation functionality.

https://github.com/tonaljs/tonal

I selected this library in part for its rigorous typescript definitions of music theory concepts, it's worth noting what a valuable education resource that has been.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant