Esempio n. 1
0
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);
}
Esempio n. 2
0
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;
}