165 |
*/ |
*/ |
166 |
void AbstractEngine::ResetScaleTuning() { |
void AbstractEngine::ResetScaleTuning() { |
167 |
memset(&ScaleTuning[0], 0x00, 12); |
memset(&ScaleTuning[0], 0x00, 12); |
168 |
|
ScaleTuningChanged.raise(); |
169 |
} |
} |
170 |
|
|
171 |
/** |
/** |
360 |
* |
* |
361 |
* @param ScaleTunes - detuning of all twelve semitones (in cents) |
* @param ScaleTunes - detuning of all twelve semitones (in cents) |
362 |
*/ |
*/ |
363 |
void AbstractEngine::AdjustScale(int8_t ScaleTunes[12]) { |
void AbstractEngine::AdjustScaleTuning(const int8_t ScaleTunes[12]) { |
364 |
memcpy(&this->ScaleTuning[0], &ScaleTunes[0], 12); //TODO: currently not sample accurate |
memcpy(&this->ScaleTuning[0], &ScaleTunes[0], 12); |
365 |
|
ScaleTuningChanged.raise(); |
366 |
|
} |
367 |
|
|
368 |
|
void AbstractEngine::GetScaleTuning(int8_t* pScaleTunes) { |
369 |
|
memcpy(pScaleTunes, &this->ScaleTuning[0], 12); |
370 |
} |
} |
371 |
|
|
372 |
uint AbstractEngine::VoiceCount() { |
uint AbstractEngine::VoiceCount() { |
536 |
if (GSCheckSum(checksum_reader, 12)) goto free_sysex_data; |
if (GSCheckSum(checksum_reader, 12)) goto free_sysex_data; |
537 |
#endif // CONFIG_ASSERT_GS_SYSEX_CHECKSUM |
#endif // CONFIG_ASSERT_GS_SYSEX_CHECKSUM |
538 |
for (int i = 0; i < 12; i++) scale_tunes[i] -= 64; |
for (int i = 0; i < 12; i++) scale_tunes[i] -= 64; |
539 |
AdjustScale((int8_t*) scale_tunes); |
AdjustScaleTuning((int8_t*) scale_tunes); |
540 |
dmsg(3,("\t\t\tNew scale applied.\n")); |
dmsg(3,("\t\t\tNew scale applied.\n")); |
541 |
break; |
break; |
542 |
} |
} |