C++中的Max/Msp Past对象(超过阈值时增加一个值)

Max/Msp Past object in C++ (increment a value when a threshold is passed)

本文关键字:增加 一个 阈值 Max 中的 Msp Past C++ 对象      更新时间:2023-10-16

我来自Max/Msp,它得到了一个名为"过去"的对象,当超过阈值时,它会增加一个变量。(像触发器)

我想在C++中也这样做,但我不知道如何…

例如,我想让x是一个变量,y是一个计数器:当x>100时,y=y+1;

我试过这个,但不起作用:

x++;
cout << "x = " << x << endl;
if (x>100){bang=1;}
cout << "bang = " << bang << endl;
if(bang == !bang){y++;}
cout << "y = " << y << endl;
if (y > 0){cout << "done" << endl; }

好吧,首先bang==!bang将始终为false(考虑到布尔值的强制转换,当bang为1时被认为是true,!bang将为false,因此它将不相等)。

如果你想使用一个数字的逆位,你有波浪形运算符"~"

有很多方法可以创建触发器,但最简单的方法应该符合您的需求,如下所示:

static bool triggerFired=false;
void runLoop(int curX, int &yRef)
{
    curX++;
    if (curX > 100 && !triggerFired)
    {
        triggerFired = true;
        yRef++;
    } 
}

静态布尔值的目的是使触发器只触发一次,而不是在x>100之后每次都触发。