音频播放处理不按我的预期工作

时间:2014-09-16 02:19:24

标签: audio processing

每当我按下空格键等键时,我的代码的这一特定部分都会在屏幕上显示一条红线。它也应该播放音频"激光"每次按下一个键。当我第一次运行我的处理代码并点击空格键时,只要按住键(正如预期的那样),它就会播放声音并显示红线。 然而,第二次按下空格键只会导致出现红线而且没有声音播放。有人可以解释一种方法来让这项工作一直持续而不仅仅是第一次吗?

import ddf.minim.* ;
Minim minim;
AudioPlayer laser;

void setup()
{
  minim = new Minim(this);     
  laser = minim.loadFile("laser.wav");
}

void draw()
{
  if(keyPressed)
  {
    laser.play(); // Laser sound
    stroke(255,0,0); // Red
    line(337,197,1500,197);  // Laser
  }  
  else
  {
    stroke(255,255,255);  // White
    line(337,197,1500,197); // Cover up the laser
  }
}

1 个答案:

答案 0 :(得分:1)

使用minim播放声音就像读书一样,你只需按lase.play()开始阅读,因为你的声音很短,它将完整播放。如果您想再次阅读/播放,则必须指定开始位置。

基本方法正在使用laser.rewind(),但您还可以使用更具体的功能,例如cue(int millis),以获取更多信息JavaDoc

同时检查draw()内是否按下按键以播放音乐是不好的做法,我建议使用键盘handlers

void draw()
{
    stroke(line);
    line(337,197,1500,197);
}

void keyPressed() {
  laser.play();
  line = color(255, 0, 0);
}

void keyReleased() {
 laser.pause(); //pause when key is released
 laser.rewind();
 line = color(255, 255, 255);
}