// // Programmer: Craig Stuart Sapp // Creation Date: Wed May 23 15:07:46 PDT 2012 // Last Modified: Wed May 23 15:07:51 PDT 2012 // Filename: ...sig/examples/all/sinko.cpp // Web Address: http://sig.sapp.org/examples/museinfo/humdrum/sinko.cpp // Syntax: C++; museinfo // // Description: Identify syncopations in a piano texture. // #include "humdrum.h" #include "PerlRegularExpression.h" #ifndef OLDCPP #include #else #include #endif // function declarations void checkOptions (Options& opts, int argc, char* argv[]); void example (void); void usage (const char* command); void printLine (HumdrumFile& infile, int line, int measure, int lh, int rh, int metlev, int trackcount); void processRecords (HumdrumFile& infile); int getKernTracks (HumdrumFile& infile); // global variables Options options; // database for command-line arguments int emptyQ = 0; // used with -d 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 tracks; infile.getTracksByExInterp(tracks, "**kern"); return tracks.getSize(); } ////////////////////////////// // // processRecords -- // void processRecords(HumdrumFile& infile) { PerlRegularExpression pre; int i, j, track; int lh, rh, state; int measure = 0; int kerntracks = getKernTracks(infile); if (kerntracks > 2 || kerntracks < 1) { cerr << "ERROR: there must be one or two **kern spines\n"; exit(1); } Array metlev; infile.analyzeMetricLevel(metlev); if (kerntracks == 2) { cout << "**bar\t**beat\t**mlev\t**LH\t**RH\n"; } else if (kerntracks == 1) { cout << "**bar\t**beat\t**mlev\t**H\n"; } for (i=0; i