2015-07-11 58 views
0

我一直在使用C++在Atmel微控制器上做一個合成器項目,但我對時序缺乏瞭解,因爲ctime庫使用整數毫秒參數(如果它甚至可以在Atmel上工作),但我有一個需要輸出(例如)頻率高達44100Hz的方波,這明顯地將輸出狀態從-1改變爲1,其週期比一毫秒短88.2倍。如何在C#中創建音頻流? (general)

現在我正在學習使用C#構建PC音頻應用程序。因此,也有我的問題:

  1. 你會如何時應用做一些事情正好是1/88.2毫秒在C#中使用,例如,時間比較功能,只有本地庫(如果這實際上是可能的)?
  2. 你怎麼能輸出你的電腦聲音設備的蒸汽(例如1-1值與任何響度)?

回答

0

通常,PC音頻設備要求您發送特定緩衝區大小(例如200ms)的PCM數據包。

對於44100的採樣率,您可以將11025個採樣(每個通道)放入一個緩衝區,並通過一個API(如DirectSound)將其發送到音頻設備,其中存在託管庫。或者,您可以直接使用Windows Core Audi API。還有很多其他的。

無需分別控制每個樣品

A樣本可以從8/16/24/32/64比特列表是任何東西,並且被存儲在一個特定的數據類型,如:

  • unsigned byte8位樣本
  • shortInt16或爲16比特樣本
  • C#確實支撐24位整數本身
  • Int32float32位樣本

Essentlially你要告訴您的音頻設備如何如何多渠道是什麼類型(SampleSize)的許多樣品(SampleRate)(ChannelNum)你會發送它,同意一個緩衝區大小,然後去!

+0

謝謝!我將實際使用的另一條信息! – user4797999

0

的基本步驟:

準備一個(在存儲器中)「聲音文件」例如兩個信道(每個16位)和44.1千赫(在CD速度)的採樣率。

發送這些字節到DC轉換器,通常被稱爲「音頻設備」

您可以使用圖書館像NAudio做到這一點。