2010-08-06 188 views
5

我已經在Stackoverflow和谷歌搜索,但還沒有找到我在找什麼。
到目前爲止,我得到了音頻原始數據(WAV文件),並且想要將其可視化。使用C#顯示音頻波形

 private void Form1_Load(object sender, EventArgs e) 
    { 
     FileStream fs = new FileStream("D:\\tada.wav", FileMode.Open); 
     BinaryReader reader = new BinaryReader(fs); 
     char[] data = new char[4]; 
     long fsize; 
     long wfxSize; 
     long dataSize; 
     WaveFormatEx wfx; 

     //RIFF 
     reader.Read(data, 0, 4); 

     fsize = reader.ReadInt32(); 

     //WAVE 
     reader.Read(data, 0, 4); 

     //FMT 
     reader.Read(data, 0, 4); 
     wfxSize = reader.ReadInt32(); 

     byte[] wfxBuffer = new byte[wfxSize]; 
     reader.Read(wfxBuffer, 0, (int)wfxSize); 
     wfx = new WaveFormatEx(wfxBuffer); 

     //DATA 
     reader.Read(data, 0, 4); 
     dataSize = reader.ReadInt32(); 
     byte[] dataBuff = new byte[dataSize]; 
     reader.Read(dataBuff, 0, (int)dataSize); 
     reader.Close(); 

     //Visualize the data... 
    } 

我知道我需要將原始數據轉換成樣品,然後檢查每個樣品的峯和畫線,但我真的不知道該怎麼做(除了圖)。

+2

作爲Gigasoft的創始人,我們有一個解決方案可以簡化這種需求,並提供示例代碼來播放和繪製wav數據,就像adobe audition或nero wave editor一樣。請參閱我們的小型18meg v8 [c#圖表演示](http://www.gigasoft.com)並查看演示示例123.下載內容還包括WPF和MFC exes以及源代碼以顯示必要的學習曲線。這個例子不依賴於依賴的庫,並顯示可視化和播放wav的最小代碼。 – Robert 2014-06-14 17:10:50

回答

5

可視化數據..。哇!您應該查看WAV file spec hereperhaps here,然後重新考慮這是否是您實際想要解決的問題。 (第二個鏈接實際上是一個更好,更簡化的概述,看看數據部分,看看它是否是你想要的東西。)

不要誤解我的意思。也許這正是你想要做的,而且可能很有趣。你應該知道你在做什麼!

另外,這裏是一個Code Project component,你可以直接使用或查看想法。

+0

通過「可視化數據」我的意思是基於放大器顯示簡單的波形,而不是3D可視化... 無論如何,這個代碼項目組件非常有幫助,謝謝。 – Adir 2010-08-06 17:56:57