我目前正在尝试在处理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;
}
}
}
任何人都可以帮忙吗?
答案 0 :(得分:2)
也许你忘了用')'关闭括号?
我没有在你给的代码中看到循环。
答案 1 :(得分:1)
output[i] = (audioData[i]+audioData[i-44100];
^
看到(
?它需要去:)
答案 2 :(得分:0)
您有一个未公开的(
。