我正在使用Altera DE2 FPGA開發板並使用SD卡端口和音頻線路輸出。我使用VHDL和C編程,但C部分是由於缺乏經驗/知識而卡住的地方。更改C中緩衝區的播放速率?
目前,我可以從SD卡播放.wav文件到線路輸出。我通過讀取併發送SD卡數據> FIFO>音頻編解碼器>線路輸出來完成此操作。忽略所有其他細節,代碼僅僅是:
UINT16 Tmp1=0;
...
Tmp1=(Buffer[i+1]<<8)|Buffer[i]; //loads the data from the SD card to Tmp1
//change the buffer rate?
IOWR(AUDIO_BASE, 0, Tmp1); //sends Tmp1 data to Line Out
如果我要打印Tmp1,它基本上是正弦波上的點。我現在想要做的是通過改變播放速度來擺弄聲音的播放方式(理想情況下,我想將聲音向上或向下播放一個倍頻程,這只是頻率的兩倍或一半)。任何人都可以提供我如何能做到這一點的部分提出了一些建議:
//change the buffer rate?
是否有可能用C寫的幾行代碼在這一節中獲得什麼,我找?即。改變我從Tmp1緩衝區讀取到AUDIO_BASE的速度。
在此先感謝!
〜Sarengo