#include #include #include #include #include #include #include #include /* #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include includee #include #include #include #include #include #include #include #include #include #include */ #include 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 > scales; scales.insert(&SmartPointer()); scales[0]=new IonianScale(); scales[0].disposition(PointerDisposition::Delete); scales.insert(&SmartPointer()); scales[1]=new DorianScale(); scales[1].disposition(PointerDisposition::Delete); scales.insert(&SmartPointer()); scales[2]=new DorianIIScale(); scales[2].disposition(PointerDisposition::Delete); scales.insert(&SmartPointer()); scales[3]=new PhrygianScale(); scales[3].disposition(PointerDisposition::Delete); scales.insert(&SmartPointer()); scales[4]=new LydianScale(); scales[4].disposition(PointerDisposition::Delete); scales.insert(&SmartPointer()); scales[5]=new MixolydianScale(); scales[5].disposition(PointerDisposition::Delete); scales.insert(&SmartPointer()); scales[6]=new AeolianScale(); scales[6].disposition(PointerDisposition::Delete); for(int index=0;indexsetRoot(notes[noteIndex]); if(scales[index]->contains(notes)) { winConsole.writeLine(scales[index]->getDescription()); winConsole.writeLine(scales[index]->toString()); winConsole.writeLine(" "); } } } /* #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include includee #include #include #include #include #include #include #include #include #include #include */ }