我想要看起來像這樣的東西。兩種不同的顏色不是無用的。如何可視化音頻數據?
audacity on mac http://audacity.sourceforge.net/about/images/audacity-macosx.png
我已經在兩個int陣列,每一個用於左和右信道從立體聲WAV音頻數據(一個樣品/毫秒)。我已經做了一些嘗試,但他們看起來並沒有像這樣清晰,我的嘗試變成了spikey或緊湊的團塊。
任何建議嗎?我在c#中工作,但psuedocode是可以的。
假設我們有
- 的函數的DrawLine(顏色,X1,Y1,X2,Y2)與
- 兩個int陣列數據向右[]和左邊的[] lenght大號
- 數據值在32767和-32768之間
如果您做出任何其他假設,只需在答案中寫下它們即可。
for(i = 0; i < L - 1; i++) {
// What magic goes here?
}
這就是我申請the solution Han provided時的結果。 (只有一個頻道)
alt text http://www.imagechicken.com/uploads/1245877759099921200.jpg
Audacity是開源的,所以你可以看看代碼。我會假設像下面這樣... func getHeight(v){return abs(v)* 32767/viewArea.height/2); samplesPerPixelColumn = samples.len/viewArea.width; for i = 1 to viewArea.width {avgV = Avg(samples [i-i + samplesPerPixelColumn]); colHeight = getHeight(avgV);如果avgV> = 0 DrawLine(black,i,viewArea.height/2,i,(viewArea.height/2)+ colHeight)else DrawLine(black,i,viewArea.height/2,i,(viewArea.height/2 ) - colHeight);你可能需要在那裏做一些舍入/範圍處理,但這應該是主要的。 – steamer25 2009-06-23 23:14:21
你爲什麼不把它寫成答案。 – Nifle 2009-06-24 07:01:11