本文整理汇总了C++中Voice::channel方法的典型用法代码示例。如果您正苦于以下问题:C++ Voice::channel方法的具体用法?C++ Voice::channel怎么用?C++ Voice::channel使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Voice
的用法示例。
在下文中一共展示了Voice::channel方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: allNotesOff
void Zerberus::allNotesOff(int channel)
{
busy = true;
for (Voice* v = activeVoices; v; v = v->next()) {
if (channel == -1 || (v->channel()->idx() == channel))
v->stop();
}
busy = false;
}
示例2: processNoteOn
void Zerberus::processNoteOn(Channel* cp, int key, int velo)
{
for (Voice* v = activeVoices; v; v = v->next()) {
if (v->channel() == cp && v->key() == key) {
if (v->isSustained()) {
// if (v->isPlaying())
// printf("retrigger (stop) %p\n", v);
v->stop(100); // fast stop
}
}
}
trigger(cp, key, velo, Trigger::ATTACK);
}
示例3: processNoteOff
void Zerberus::processNoteOff(Channel* cp, int key)
{
for (Voice* v = activeVoices; v; v = v->next()) {
if ((v->channel() == cp)
&& (v->key() == key)
&& (v->loopMode() != LoopMode::ONE_SHOT)
) {
if (cp->sustain() < 0x40) {
v->stop();
trigger(cp, key, v->velocity(), Trigger::RELEASE);
}
else {
if (v->isPlaying())
v->sustained();
}
}
}
}