#key #musical #parser #notation #transpose #played #transposer

libkeynotation

A (musical) key notation parser and transposer

3 unstable releases

0.2.0 Jan 26, 2024
0.1.2 Nov 30, 2023
0.1.1 Nov 30, 2023

#3 in #transpose

29 downloads per month

Custom license

43KB
849 lines

crates.io badge docs.rs badge gpl license badge

libkeynotation - A (musical) key notation parser and transposer

This library supports parsing musical keys notated in different formats and transposing the key. You can freely convert between the different formats and also transpose the key if the track is being played faster/slower.

Supported notations

  • Traditional (eg. F#m, Abm, G♭,...)
  • OpenKey (1m, 1d, 12m, 12d..)
  • Lancelot (1A, 1B... 12A, 12B)

Example:

use libkeynotation::Key;
let key = Key::from_string("F#m").unwrap();
assert_eq!(key.lancelot(), "11A");
assert_eq!(key.open_key(), "4m");
assert_eq!(key.transpose_bpm(135.0, 140.4).lancelot(), "6A");

Dependencies

~0–1MB
~18K SLoC