midiname
part of wslib
notenumber to notename and backwards conversion
also includes convenience methods for frequency (cps)
midivoicetype can be used to test if a certain note
or frequency is included in a certain voice type
voice types are currently in english and dutch
note names are as found in Logic Pro. Sibelius and some other brands
use other: C4 in Logic = C3 in Sibelius
SimpleNumber-midiname ( sign )
convert a midi notenumber to a notename
adds a 'cents' method
64.midiname; // -> "E3"
SimpleNumber-cpsname ( sign )
convert frequency to a notename
440.cpsname; // -> "A3"
String-namemidi ( cents )
convert a notename to a midi notenumber
"G2".namemidi; // -> 55
String-namecps ( cents )
convert a notename to a frequency
"A2".namecps; // -> 220
String-namename ( cents, sign )
convert a notename to a standardized notename
"A#2".namename; // -> "Bb2"
Convenience methods for Symbol and Array classes were added.
scales
makeScale ( type, startNote, endNote )
Makes a scale using the object it's called to as ground note. If no endNote or startNote is provided, the scale will range from the ground note to an octave higher.
When called on a Number, the number is used as a midi note number.
When called on a String or Symbol, it is interpreted as a note name, and the result will also contain notenames.
Possible scale types:
arabic
blues
blues-major
chromatic
fifth
fifth-major
fifth-minor
harm-minor
indian
just
just-major
just-minor
major
melo-minor
minor
pentatonic
pythagorean
quartertones
werckmeister
60.makeScale( \just );
"G4".makeScale( \major );
voicetype
tests if a note is within reach of singing voices
SimpleNumber-midivoicetype ( type, language )
get the voicetypes who can sing this midi notenumber
type can be nil, 'm' or 'f' (male or female)
language can be 'en' or 'nl' (English - default - or Dutch )
Returns an array of possible voice types. If a voice type is followed by a - or + sign that means it is in the outer regions, and can probably only be sung by well-trained singers, and not for a long time.
42.midivoicetype; // -> [ 'baritone -', 'bass' ]
SimpleNumber-cpsvoicetype
get the voicetypes who can sing this frequency
String-namevoicetype ( type, language )
get the voicetypes who can sing this notename