无论位置如何,for循环导致处理IDE时出现“意外的令牌:Void”错误?

时间:2011-03-24 13:04:13

标签: java audio delay void processing-ide

我目前正在尝试在处理IDE中编写一个简单的音频延迟草图。我不断收到“意外令牌:Void”错误指向我的Void Setup()函数。如果我注释掉这个for循环的内容:

for (int i = 0; i < output.length; i++)  
{  
    output[i] = (audioData[i]+audioData[i-44100];  
}

然后不会出现此错误。无论我将这个循环放入哪个函数,都会发生此错误,并且我尝试以其他方式对其进行编码。没有运气。

以下是给我带来麻烦的标签代码:

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;
        }
    }

}

任何人都可以帮忙吗?

3 个答案:

答案 0 :(得分:2)

也许你忘了用')'关闭括号?

我没有在你给的代码中看到循环。

答案 1 :(得分:1)

output[i] = (audioData[i]+audioData[i-44100]; 
            ^

看到(?它需要去:)

答案 2 :(得分:0)

您有一个未公开的(