2013-06-27 65 views
-2

我想寫一個程序集x86程序,在該程序中我讀取並播放一個.wav文件。我搜索了一個典型的.wav文件的結構,發現子塊內有一些數據可用。在裝配中讀取和播放.wav文件

我已經理解了以下內容,我想確定它是否正確,以便我可以開始編碼:
採樣率就是原始模擬信號採樣到數字值的速率(可能代表頻率)。我想我在播放.wav文件時與這個值無關。字節速率是我必須發送字節的速率(某種程度上與任何聲音文件的「屬性」中的「比特率」有關)。

因此,例如,我必須打開揚聲器,發出字節,等待一段時間 - 通過計算時鐘頻率和字節率(在一段時間內發送的字節數)一秒鐘) - 關閉揚聲器,再等待一段時間。 這是正確的嗎?

我不知道我能用2個通道.wav文件做什麼。是不同端口的通道揚聲器嗎?

最後一件事是我不知道如何計算打開或關閉揚聲器的時間 - 閒置循環CPU - 手頭有字節率。因爲不同的指令需要不同的時鐘週期來完成。

+1

什麼可能的原因是用匯編語言編寫這樣一個程序? –

+0

我有責任這樣做,因爲我的教授。給了我這個項目。 – user2511906

+1

那麼,爲什麼你問網絡陌生人的幫助,而不是直接詢問你的教授? –

回答

0

WAV文件是從編解碼器導出的線性樣本。除非插入或抽取它們,否則必須以相同的速率播放它們。

我記得,WAV文件格式使用多個通道的交錯。

爲了解碼文件,您需要採樣的寬度(比特數),採樣頻率(赫茲)以及存在的通道數量。

這是什麼OS?

+0

Windows it是。是的,在文件的開頭部分,我們可以找到所有上述信息。但我根本不知道該如何處理這些頻道。在發送字節時,如果字節屬於右聲道或左聲道,會產生什麼差別? – user2511906

+0

這並不一定有區別,而且易於交換。您也可以將兩個通道相加在一起,並將兩個通道的總和都轉換爲單聲道。鑑於Window對WAV的支持,這是一個奇怪的程序。我想這樣做需要你加載一個聲音設備的緩衝區,以及一個反映緩衝區播放持續時間的計時器。 – 2013-06-27 21:46:01

+0

我真的很抱歉,像一個noob,但我不明白。樣本字節是發送的一個字節嗎?如果是,是不同港口的渠道;這樣我就必須將右聲道的一個字節發送到與左側不同的地址。 – user2511906