根据声音改变亮度(处理)

时间:2015-07-27 19:07:53

标签: java audio processing clock void

我正在学习处理,我正在尝试制作一个可以在声音改变时改变颜色的草图。

(当Amplitude +时,  然后亮度+)

因为改变颜色不需要像draw()函数那样快速地改变。那么我怎么能建立一个时钟,以便每次抽奖都不会改变颜色?

这是我现在正在使用的代码:

git config --global alias.ws 'rebase --whitespace=fix'

2 个答案:

答案 0 :(得分:0)

当你调用frameRate(50)时;你告诉Processing(尝试)每秒50次更新draw()。您可以通过检查内置变量frameCount来判断自草图开始以来已经过了多少帧。

然后可以用一个数字除以一个数字来表示在做一些特殊的事情之前想要绘制多少帧 - 我会使用模数来计算,它将除去数字并返回余数。如果它等于0,则表示已经过了那个帧数。

    int updateTriggerCount = 10;        
    void setup() {
    ...        
    }

    void draw()
    {
       if((frameCount % updateTriggerCount) == 0)
       {
            // Another 10 frames have passed! Do something special
       }
       ....
    }

答案 1 :(得分:0)

信任frameRate来控制时序是可以的,但当然是frameRate依赖的。这意味着如果你的frameRate掉落,那么timimg会一起掉落。

为避免这种情况,您可以使用millis()并将您的时间安排在,以及时间:)

这是一个非常简单的计时器示例:

PFont font;
String time = "000";
int initialTime;
int interval = 1000;//one second
color bg = color (255);


void setup()
{
  size(300, 300);
  font = createFont("Arial", 30);
  background(255);
  fill(0);
  initialTime = millis();
  frameRate(30);// changed framerate to exemplify
}

void draw()
{
  background(bg);
  if (millis() - initialTime > interval)
  {
    time = nf(int(millis()/1000), 3);
    initialTime = millis();
   bg = color (random(255), random(100), random(255));
  }

  text(time, width/2, height/2);


}