Initial
This commit is contained in:
166
music/findscale.cpp
Normal file
166
music/findscale.cpp
Normal file
@@ -0,0 +1,166 @@
|
||||
#include <music/chord.hpp>
|
||||
#include <music/progression.hpp>
|
||||
#include <music/scales.hpp>
|
||||
#include <midiseq/midiout.hpp>
|
||||
#include <common/array.hpp>
|
||||
#include <common/stringbuffer.hpp>
|
||||
#include <common/console.hpp>
|
||||
#include <common/pointer.hpp>
|
||||
|
||||
|
||||
/*
|
||||
#include <music/IonianScale.hpp>
|
||||
#include <music/DorianScale.hpp>
|
||||
#include <music/DorianIIScale.hpp>
|
||||
#include <music/PhrygianScale.hpp>
|
||||
#include <music/LydianScale.hpp>
|
||||
#include <music/MixolydianScale.hpp>
|
||||
#include <music/AeolianScale.hpp>
|
||||
#include <music/LocrianScale.hpp>
|
||||
#include <music/PentatonicMinorScale.hpp>
|
||||
#include <music/HarmonicMinorScale.hpp>
|
||||
#include <music/MelodicMinorScale.hpp>
|
||||
#include <music/DorianIIScale.hpp>
|
||||
#include <music/LydianAugmentedScale.hpp>
|
||||
#include <music/LydianDominantScale.hpp>
|
||||
#include <music/Locrian2Scale.hpp>
|
||||
#include <music/AlteredScale.hpp>
|
||||
#include <music/DiminishedWholeScale.hpp>
|
||||
#include <music/DiminishedHalfScale.hpp>
|
||||
#include <music/WholeToneScale.hpp>
|
||||
#include <music/BeBopDominantScale.hpp>
|
||||
#include <music/BeBopMajorScale.hpp>
|
||||
#include <music/BeBopTonicMinorScale.hpp>
|
||||
#include <music/BeBopMinorScale.hpp>
|
||||
#include <music/EightToneSpanishScale.hpp>
|
||||
#include <music/EnigmaticScale.hpp>
|
||||
#include <music/GypsyScale.hpp>
|
||||
#include <music/HungarianScale.hpp>includee
|
||||
#include <music/HungarianMinorScale.hpp>
|
||||
#include <music/LeadingWholeToneScale.hpp>
|
||||
#include <music/LydianMinorScale.hpp>
|
||||
#include <music/MajorLocrianScale.hpp>
|
||||
#include <music/NeapolitanMajorScale.hpp>
|
||||
#include <music/NeapolitanMinorScale.hpp>
|
||||
#include <music/OrientalScale.hpp>
|
||||
#include <music/ToDiScale.hpp>
|
||||
#include <music/SuperLocrianScale.hpp>
|
||||
#include <music/BaroqueScale.hpp>
|
||||
*/
|
||||
|
||||
#include <music/scales.hpp>
|
||||
|
||||
Console winConsole;
|
||||
|
||||
Notes getNotes(String strLine);
|
||||
void findScale(Notes ¬es);
|
||||
|
||||
using namespace Music;
|
||||
void main(int argc,char **argv)
|
||||
{
|
||||
|
||||
winConsole.writeLine("Scale v1.00");
|
||||
if(2!=argc)
|
||||
{
|
||||
winConsole.writeLine("(ie) Scale C,E,G");
|
||||
return;
|
||||
}
|
||||
Notes notes=getNotes(argv[1]);
|
||||
findScale(notes);
|
||||
}
|
||||
|
||||
Notes getNotes(String strLine)
|
||||
{
|
||||
Notes notes;
|
||||
char *pLine=::strtok(strLine.str(),",\0");
|
||||
while(pLine)
|
||||
{
|
||||
notes.insert(&Note(pLine));
|
||||
pLine=::strtok(0,",\0");
|
||||
}
|
||||
winConsole.writeLine(notes.toString());
|
||||
return notes;
|
||||
}
|
||||
|
||||
void findScale(Notes ¬es)
|
||||
{
|
||||
Block<SmartPointer<Scale> > scales;
|
||||
|
||||
scales.insert(&SmartPointer<Scale>());
|
||||
scales[0]=new IonianScale();
|
||||
scales[0].disposition(PointerDisposition::Delete);
|
||||
|
||||
scales.insert(&SmartPointer<Scale>());
|
||||
scales[1]=new DorianScale();
|
||||
scales[1].disposition(PointerDisposition::Delete);
|
||||
|
||||
scales.insert(&SmartPointer<Scale>());
|
||||
scales[2]=new DorianIIScale();
|
||||
scales[2].disposition(PointerDisposition::Delete);
|
||||
|
||||
scales.insert(&SmartPointer<Scale>());
|
||||
scales[3]=new PhrygianScale();
|
||||
scales[3].disposition(PointerDisposition::Delete);
|
||||
|
||||
scales.insert(&SmartPointer<Scale>());
|
||||
scales[4]=new LydianScale();
|
||||
scales[4].disposition(PointerDisposition::Delete);
|
||||
|
||||
scales.insert(&SmartPointer<Scale>());
|
||||
scales[5]=new MixolydianScale();
|
||||
scales[5].disposition(PointerDisposition::Delete);
|
||||
|
||||
scales.insert(&SmartPointer<Scale>());
|
||||
scales[6]=new AeolianScale();
|
||||
scales[6].disposition(PointerDisposition::Delete);
|
||||
|
||||
for(int index=0;index<scales.size();index++)
|
||||
{
|
||||
for(int noteIndex=0;noteIndex<notes.size();noteIndex++)
|
||||
{
|
||||
scales[index]->setRoot(notes[noteIndex]);
|
||||
if(scales[index]->contains(notes))
|
||||
{
|
||||
winConsole.writeLine(scales[index]->getDescription());
|
||||
winConsole.writeLine(scales[index]->toString());
|
||||
winConsole.writeLine(" ");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
#include <music/AeolianScale.hpp>
|
||||
#include <music/LocrianScale.hpp>
|
||||
#include <music/PentatonicMinorScale.hpp>
|
||||
#include <music/HarmonicMinorScale.hpp>
|
||||
#include <music/MelodicMinorScale.hpp>
|
||||
#include <music/DorianIIScale.hpp>
|
||||
#include <music/LydianAugmentedScale.hpp>
|
||||
#include <music/LydianDominantScale.hpp>
|
||||
#include <music/Locrian2Scale.hpp>
|
||||
#include <music/AlteredScale.hpp>
|
||||
#include <music/DiminishedWholeScale.hpp>
|
||||
#include <music/DiminishedHalfScale.hpp>
|
||||
#include <music/WholeToneScale.hpp>
|
||||
#include <music/BeBopDominantScale.hpp>
|
||||
#include <music/BeBopMajorScale.hpp>
|
||||
#include <music/BeBopTonicMinorScale.hpp>
|
||||
#include <music/BeBopMinorScale.hpp>
|
||||
#include <music/EightToneSpanishScale.hpp>
|
||||
#include <music/EnigmaticScale.hpp>
|
||||
#include <music/GypsyScale.hpp>
|
||||
#include <music/HungarianScale.hpp>includee
|
||||
#include <music/HungarianMinorScale.hpp>
|
||||
#include <music/LeadingWholeToneScale.hpp>
|
||||
#include <music/LydianMinorScale.hpp>
|
||||
#include <music/MajorLocrianScale.hpp>
|
||||
#include <music/NeapolitanMajorScale.hpp>
|
||||
#include <music/NeapolitanMinorScale.hpp>
|
||||
#include <music/OrientalScale.hpp>
|
||||
#include <music/ToDiScale.hpp>
|
||||
#include <music/SuperLocrianScale.hpp>
|
||||
#include <music/BaroqueScale.hpp>
|
||||
*/
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user