Ejemplo n.º 1
0
uint8_t MDClass::trackGetCCPitch(uint8_t track, uint8_t cc, int8_t *offset) {
  tuning_t const *tuning = getModelTuning(kit.models[track]);
  
  if (tuning == NULL)
    return 128;

  uint8_t i;
  int8_t off = 0;
  for (i = 0; i < tuning->len; i++) {
    uint8_t ccStored = pgm_read_byte(&tuning->tuning[i]);
    off = ccStored - cc;
    if (ccStored >= cc) {
      if (offset != NULL) {
	*offset = off;
      }
      if (off <= tuning->offset)
	return i + tuning->base;
      else 
	return 128;
    }
  }
  off = ABS(pgm_read_byte(&tuning->tuning[tuning->len - 1]) - cc);
  if (offset != NULL)
    *offset = off;
  if (off <= tuning->offset)
    return i + tuning->base;
  else
    return 128;
}
Ejemplo n.º 2
0
uint8_t MDClass::trackGetBasePitch(uint8_t track) {
  tuning_t const *tuning = getModelTuning(kit.models[track]);
  
  if (tuning == NULL)
    return 128;

  return tuning->base;
}
Ejemplo n.º 3
0
uint8_t MDClass::trackGetPitch(uint8_t track, uint8_t pitch) {
  tuning_t const *tuning = getModelTuning(kit.machines[track].model);
  
  if (tuning == NULL)
    return 128;

  uint8_t base = tuning->base;
  uint8_t len = tuning->len;
  
  if ((pitch < base) || (pitch >= (base + len))) {
    return 128;
  }

  return pgm_read_byte(&tuning->tuning[pitch - base]);
}
Ejemplo n.º 4
0
bool MDClass::isMelodicTrack(uint8_t track) {
  if (isMidiTrack(track)) {
    return true;
  }
  return (getModelTuning(kit.models[track]) != NULL);
}
Ejemplo n.º 5
0
bool MDClass::isMelodicTrack(uint8_t track) {
  return (getModelTuning(kit.machines[track].model) != NULL);
}