I'm currently trying to code a simple audio delay sketch in the processing IDE. I keep getting an "unexpected token: Void" error pointed at my Void Setup() function. If I comment out the contents of this for loop:
for (int i = 0; i < output.length; i++)
{
output[i] = (audioData[i]+audioData[i-44100];
}
then this error does not appear. This error occurs regardless of which function i put this loop in, and I've tried coding it in alternate ways. No luck.
Here's the code for the tab that's giving me trouble:
AudioThread audioThread;
// we'll use this to store the audio data we read from the audio file
float[] audioData;
float[] delayData;
// we'll use this to remember our position in the audio data array
float readHead;
float readHeadDelay;
void setup() {
size(500, 400, P2D);
// the audio file we want to play, which should be in the data dir
String audioFilename = "myk_hats_dub1.wav";
// read the audio data into a float array using the AudioFileIn class
audioData = new AudioFileIn(audioFilename, this).getSampleData();
delayData = new AudioFileIn(audioFilename, this).getSampleData();
// print how many samples we read
println("Read " + audioData.length + " samples");
// set the read head to zero, the first sample
readHead = 0;
readHeadDelay = 44100;
// start up the audio thread
audioThread = new AudioThread();
audioThread.start();
}
void draw() {
background(255);
fill(0);
}
// this function gets called when you press the escape key in the sketch
void stop() {
// tell the audio to stop
audioThread.quit();
// call the version of stop defined in our parent class, in case it does
// anything vital
super.stop();
}
// this gets called by the audio thread开发者_运维知识库 when it wants some audio
// we should fill the sent buffer with the audio we want to send to the
// audio output
void generateAudioOut(float[] buffer) {
for (int i = 0; i < buffer.length; i++) {
// copy data from the audio we read from the file (audioData)
// into the buffer that gets sent to the sound card
buffer[i] = audioData[(int) readHead];
// add a sample from the other array
buffer[i] += delayData[(int) readHeadDelay];
// scale it so it does not go over 1.0
buffer[i] *= 0.5;
// move the read head along one, resetting to zero
// if it goes to the end of the audioData array
readHead++;
readHeadDelay++;
if (readHead >= audioData.length) {
readHead = 0;
}
if (readHeadDelay >= delayData.length) {
readHeadDelay = 0;
}
}
}
can anyone help?
Perhaps you forgot to close the bracket with a ')' ?
I don't see the loop in the code you gave.
output[i] = (audioData[i]+audioData[i-44100];
^
See that (
? It needs to go :)
You have an unclosed (
.
精彩评论