Awesome
diatonic
You don't need to create lists of vectors/arrays to set pre-definitions for "all" scales, chords and a given tonality chords'; create them dynamically; do it by calling functions.
Some examples
// create scales
auto DSharpMajor = scale(Ds,scale_::major);
auto DSharpPentaMajorOctave4 = scale("ds4",scale_::pentatonicmajor);
// create chords
auto Bminor7 = chord(B,m7);
// create custom chords
auto myChord = {intervalT::t,intervalT::min2,intevalT::d5};
// or shorter version
auto myChord2 = {i::t,i::min2,i::d5};
// 2nd chord inversion
auto Bminor7_2nd = invert(Bminor7,2);
// create all tonality chords (4 notes each chord)
toneT CMajorChords = tone(C,tone_::major);
// transpose tonality chords to the 3rd octave
toneT CMajorChords3 = transpose(CMajorChords,3);
// get a tonality's Dominant chord
chordT GMajor7minorChord = CMajorChords3.at(dominant);
// Write a melodic phrase where "x" (midi 127) is consired silence. Returns a vector of midi notes
phraseT aMelody = phrasing({"c1","c2","x","c3"});
Build
In diatonic's root directory
mkdir build
cd build
cmake .
make