Static void getMeterChange(voice_index voice, Char *new_meter) { short pn1, pn2; Char w[256], new_command[256]; if (nextNote(voice) != mword) return; getMusicWord(w, voice); getMeter(w, &meternum, &meterdenom, &pn1, &pn2); full_bar = meternum * (64 / meterdenom); /* CMO: process denominator value with function PMXmeterdenom */ meterWord(new_command, meternum, PMXmeterdenom(meterdenom), pn1, pn2); if (*new_meter != '\0' && strcmp(new_meter, new_command)) error3(voice, "The same meter change must appear in all voices"); strcpy(new_meter, new_command); }
Local Char *pmxMeter(Char *Result) { short denom, num; Char STR1[256], STR3[256], STR4[256], STR5[256]; if (meternum == 0) { num = beatsPerLine(); /** denom := 0; **/ meterChange(old_meter_word, num, meterdenom, true); } else num = meternum; /** denom := pmdenom; **/ /* CMO: unconditonally assign value of pmdenom to denom */ denom = pmdenom; sprintf(Result, "%s %s %s %s", toString(STR1, num), toString(STR3, PMXmeterdenom(meterdenom)), toString(STR4, pmnum), toString(STR5, denom)); return Result; }