所以,我想通過分解成樣本和存儲陣列的樣品處理Java中的聲音文件。然後我循環遍歷數組,更改每個樣本。我意識到java中已經有了一個回聲過濾器,但是我需要通過讓聲音以不同的間隔在整個聲音剪輯中以減小的音量重複來設計自己的聲音。我目前有一種方法可以控制音量,但是在獲取聲音重複開始時,當前聲音文件的延遲時間很難。這是我到目前爲止有:創建Java回聲音效
public void echoEffect(int delay){
SoundSample[] sampleArray = this.getSamples(); // get array
SoundSample sample = null; // current sample obj
int value = 0; // value at sample
// loop through SoundSample objects
for(int i = 0, index = 0; index < sampleArray.length; i++,index++)
{
sample = sampleArray[index]; // get current obj
value = sample.getValue(); // get the value
sample.setValue(value*2); // set the value
}
}
我認爲我需要做的是改變從虛空方法聲音和返回延遲的聲音文件。可能返回類似值+值[I +延遲] *(一些分數降低聲音)
新的更新,而不是職位:
反正這是我到目前爲止,我只是不能似乎讓代碼正常工作,我知道我很接近,但我需要該方法在聲音文件上輸出回聲效果。以下是我在當前點:
public void echo(int delay){
SoundSample[] sampleArray = this.getSamples(); // get array
//Sound target = new Sound(sampleArray.length);
SoundSample sampleDelay = null;
SoundSample sample = null; // current sample obj
int value = 0; // value at sample
int index = 0;
double value2 = 0;
// loop through SoundSample objects
while (index < sampleArray.length)
{
sample = sampleArray[index]; // get current obj
value = sample.getValue(); // get the value
sampleDelay = (sampleArray[delay-index]);
value2 = (sampleDelay.getValue()*.6);
sample.setValue(value + (int) value2); // set the value
index++; // increment index
}
}
讓我知道你們覺得這一切似乎做的是發佈一個SSCCE移幅度出於某種原因... 的問題是,這是使用一些在java中不經常使用的類,我相信並且因此我只是在尋找某個人來幫助理解邏輯。我試圖循環播放一個聲音文件的樣本,然後將延遲點處的值設置爲聲音的開始,但音量變暗。 IDK,如果我解釋這個權利,但我希望這將是一個簡單的修復。
同樣的問題:http://stackoverflow.com/questions/11793310/how-to-add-echo-effect-on-audio-file-using -objective-c – 2013-03-18 16:20:47
爲了更快地獲得更好的幫助,請發佈[SSCCE](http://sscce.org/)。 – 2013-03-20 03:15:53
這是什麼問題? – Siddharth 2013-03-20 03:18:10