如何加快处理中加载音频文件的速度

时间:2015-03-05 01:28:21

标签: performance audio arduino processing solution

我完成了arduino和处理的网络。

我在arduino中使用超声波传感器。

当我在arduino超声波传感器中保持足够接近时,处理从arduino获取信息。并处理加载音频文件。

这是一个大问题。处理加载速度不是很晚。

现在还不是很晚。但它并不像是在互动。

我想加速仅0.5秒。

有没有解决方案?这是我的代码。

ETC。我正在尝试许多不同的方式。例如,我试图按下按钮而不是超声波。但还是有问题。并尝试改变延迟。但它不能很好地运作



<arduino>

int led2=5;
int trigPin2 = 6;
int echoPin2 = 8;
int state;
int val,old_val;
int b=2;
int rate;


void setup()
{
  
  Serial.begin(9600);
  pinMode(trigPin2,OUTPUT); 
  pinMode(echoPin2,INPUT); 
   pinMode(led2, OUTPUT);
  state,val,old_val=0;

}

void loop()
{
  
  

  long duration, cm;

  digitalWrite(trigPin2,HIGH); 
  delayMicroseconds(10); 
  digitalWrite(trigPin2,LOW); 

  duration = pulseIn(echoPin2,HIGH);
  cm = microsecondsToCentimeters(duration); 

  rate=map(cm,5,200,0,30);
  rate=constrain(rate,0,1);
  val=rate;

   if ((val == 1) && (old_val == 0)){
    state = 1 - state;
    Serial.println(b);///////////////////////////////////////////////////sound load
    old_val = 1;
    
    delay(10);
  }
old_val = val;


  if (state == 1){
    digitalWrite(led2,LOW);
  } else {
    digitalWrite(led2, HIGH);

  } 
}

long microsecondsToInches(long microseconds)
{
  return microseconds / 74 / 2;
}

 

long microsecondsToCentimeters(long microseconds)
{
  return microseconds / 29 / 2;
}




<processing>


import ddf.minim.*;
import ddf.minim.signals.*;
import ddf.minim.analysis.*;
import ddf.minim.effects.*;

import processing.serial.*;

import ddf.minim.*;

Minim minim;
AudioPlayer a1;
AudioPlayer a2;
AudioPlayer a3;
AudioPlayer a4;
AudioPlayer mpcard;
//int dia = 0;
int val=0;
int red=0;
int green=0;
int blue=0;
Serial port;
//Serial port2;
color c;
String buffer = "";
String buffer2 = "";


void setup()
{
   minim = new Minim(this);
    
   a1=minim.loadFile("1.mp3");
   a2=minim.loadFile("dd.mp3");
   a3=minim.loadFile("3.mp3");
   a4=minim.loadFile("4.mp3");
   mpcard=minim.loadFile("card.mp3");
   // a1.loop();
  size(500, 500);
  frameRate(200);
  fill(255);
  println(Serial.list());
  String arduinoPort = Serial.list()[0];
  port =  new Serial(this, arduinoPort, 9600);
  
}

void draw()
{
  int b;
  background(red,green,blue);
 // ellipse(255, 255, dia, dia);
    b = port.read();
   println(b); 
      if(b == 50) { 
     println(b);  
     a2.play(0);
     }
      else if(b != 2) { 
        println(1);
      }
  }
&#13;
&#13;
&#13;

0 个答案:

没有答案