簡體   English   中英

C#和音頻生成/播放

[英]C# and Audio Generation/Playback

我正在制作一個音頻合成器,我在找出用於音頻播放的內容時遇到了問題。 我正在使用物理和數學來計算源波形,然后需要將該波形饋送到可以將其作為聲音播放的東西。 我需要的東西可以1)播放我計算的波形和2)同時播放多個聲音(比如按住其他鍵的同時按住鋼琴上的一個鍵)。 我已經對此做了一些研究,我找不到能完成這兩件事的東西。 據我所知,我有5個可能的選擇:

  1. DirectSound的。 它可以將波形(短[])作為參數並將其作為聲音播放,並且可以同時播放多個聲音。 但它不適用於.NET 4.5。
  2. System.Media.SoundPlayer。 它適用於.NET 4.5並且具有比Direct Sound更高質量的音頻,但它必須從.wav文件播放聲音,並且不能一次播放多個聲音(也不能播放SoundPlayer的多個聲音)。 我通過將我的波形轉換為內存中的.wav格式,然后向SoundPlayer發送內存中.wav文件的MemoryStream來''使SoundPlayer工作。 我可以通過改變流來實現對播放的控制嗎? 我不能將字節附加到流(我嘗試過)但我可能會使流成為任意大小,並且每次到達流末尾時,只需用下一段音頻數據重新寫入流中的所有字節。
  3. System.Windows.Controls.MediaElement 我還沒有嘗試過這個,但是從MSDN文檔中我看不到一種方法可以在內存中發送波形而不先將其保存到磁盤然后再讀取它; 我認為我不能發送它。
  4. System.Windows.Controls.MediaPlayer 我也沒有對此進行過實驗,但是文檔說它可以用作某種動畫的伴侶。 我可以在不做任何真實(用戶可感知的)動畫的情況下使用它來實現我想要的效果。
  5. 一個開源解決方案 我對使用開源解決方案猶豫不決,因為我發現它們通常記錄不完整且不易維護,但如果有一個有詳細記錄並可以做我需要的建議,我願意接受。

任何人都可以為我提供任何指導或如何創建靈活的音頻播放?

http://naudio.codeplex.com ,毫無疑問。 馬克是SO的常客,產品很好,有很好的代碼示例。

有用。 我們用它制作了一些很棒的東西。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM