// // Programmer: Craig Stuart Sapp // Creation Date: Sat Mar 26 09:22:01 PDT 2011 // Last Modified: Sat Mar 26 09:22:04 PDT 2011 // Filename: ...sig/examples/all/diaint.cpp // Web Address: http://sig.sapp.org/examples/museinfo/humdrum/diaint.cpp // Syntax: C++; museinfo // // Description: Extract diatonic invervals from voice pairings. // #include "humdrum.h" #ifndef OLDCPP #include #else #include #endif #define EMPTY -100000 #define REST -1000 // function declarations void checkOptions (Options& opts, int argc, char* argv[]); void example (void); void usage (const char* command); void getIntervals (Array > > >& intervals, HumdrumFile& infile); void getKernTrackIndex (Array& ktracks, HumdrumFile& infile); void getPitchList (Array& pitchlist, Array& pitchtrack, Array& pitchcol, HumdrumFile& infile, int line); void generateIntervals (Array > > >& intervals, Array& pitchlist, Array& pitchtrack, Array& rktracks, Array& ktracks, HumdrumFile& infile, int line); void generateIntervalsForTrack(Array > > >& intervals, Array& pitchlist, Array& pitchtrack, Array& rktracks, Array& ktracks, HumdrumFile& infile, int line, int spine); void printIntervals (Array > > >& intervals, HumdrumFile& infile); void printMeasure (Array > > >& intervals, HumdrumFile& infile, int line); void printData (Array > > >& intervals, HumdrumFile& infile, int line); void printLocalComment (Array > > >& intervals, HumdrumFile& infile, int line); void printInterpretation (Array > > >& intervals, HumdrumFile& infile, int line); // global variables Options options; // database for command-line arguments int debugQ = 0; // used with --debug option int octaveQ = 0; // used with -o option /////////////////////////////////////////////////////////////////////////// int main(int argc, char* argv[]) { HumdrumFile infile, outfile; // process the command-line options checkOptions(options, argc, argv); // figure out the number of input files to process int numinputs = options.getArgCount(); for (int i=0; i > > > intervals; getIntervals(intervals, infile); printIntervals(intervals, infile); } return 0; } /////////////////////////////////////////////////////////////////////////// ////////////////////////////// // // checkOptions -- validate and process command-line options. // void checkOptions(Options& opts, int argc, char* argv[]) { opts.define("author=b", "author of program"); opts.define("version=b", "compilation info"); opts.define("example=b", "example usages"); opts.define("h|help=b", "short description"); opts.process(argc, argv); // handle basic options: if (opts.getBoolean("author")) { cout << "Written by Craig Stuart Sapp, " << "craig@ccrma.stanford.edu, Mar 2011" << endl; exit(0); } else if (opts.getBoolean("version")) { cout << argv[0] << ", version: Mar 2011" << endl; cout << "compiled: " << __DATE__ << endl; cout << MUSEINFO_VERSION << endl; exit(0); } else if (opts.getBoolean("help")) { usage(opts.getCommand().c_str()); exit(0); } else if (opts.getBoolean("example")) { example(); exit(0); } } ////////////////////////////// // // printIntervals -- // void printIntervals(Array > > >& intervals, HumdrumFile& infile) { int m, n, p; int value; int value2; int counter; int i; for (i=0; i > > >& intervals, HumdrumFile& infile, int line) { } ////////////////////////////// // // printMeasure -- // void printMeasure(Array > > >& intervals, HumdrumFile& infile, int line) { } ////////////////////////////// // // printData -- // void printData(Array > > >& intervals, HumdrumFile& infile, int line) { } ////////////////////////////// // // printLocalComment -- // void printLocalComment(Array > > >& intervals, HumdrumFile& infile, int line) { } ////////////////////////////// // // processRecords -- looks at humdrum records and determines chord // sonority quality; // // intervals.dim = number of kern spines // intervals[i].dim = number of subspines for each voice to right // intervals[i][j].dim = length of file // intervals[i][j][k].dim = number of intervals // void getIntervals(Array > > >& intervals, HumdrumFile& infile) { int i, j, k; Array ktracks; getKernTrackIndex(ktracks, infile); Array rktracks; rktracks.setSize(infile.getMaxTracks()+1); rktracks.setAll(-1); for (i=0; i pitchlist; Array pitchtrack; Array pitchspine; for (i=0; i > > >& intervals, Array& pitchlist, Array& pitchtrack, Array& rktracks, Array& ktracks, HumdrumFile& infile, int line) { int i; for (i=0; i > > >& intervals, Array& pitchlist, Array& pitchtrack, Array& rktracks, Array& ktracks, HumdrumFile& infile, int line, int spine) { int& i = spine; int j; int& k = line; int m; int interval; int track; int first = -1; for (m=0; m= intervals[i].getSize()) { // don't know why getting here exactly continue; } intervals[i][j][k].append(interval); } } ////////////////////////////// // // getPitchList -- // void getPitchList(Array& pitchlist, Array& pitchtrack, Array& pitchcol, HumdrumFile& infile, int line) { pitchlist.setSize(1000); pitchlist.setSize(0); pitchtrack.setSize(1000); pitchtrack.setSize(0); pitchcol.setSize(1000); pitchcol.setSize(0); int& i = line; int j; int column; int ii; int tcount; int jj; int track; int pitch; int k; char buffer[1024] = {0}; for (j=0; j& ktracks, HumdrumFile& infile) { ktracks.setSize(infile.getMaxTracks()+1); ktracks.setSize(0); int track; int i, j; for (i=0; i