2011-05-30 109 views
3

我在玩Jack,我注意到默認音頻類型JACK_DEFAULT_AUDIO_TYPE設置爲「32位浮點單聲道音頻」。「32位浮點單聲道音頻」in Jack

我有點困惑:IEEE定義了大約從3.4E-38到3.4E + 38的32位C浮點範圍,我想知道jack_default_audio_sample_t可以容納的最大和最小「未失真」幅度是什麼與那種音頻類型。例如,如果某些DSP算法給出了範圍爲[0,1]的樣本,那麼我怎樣才能正確地在它們和Jack的格式之間進行轉換?

+7

浮點音頻被歸一化到範圍-1 .. + 1。 – 2011-05-30 23:00:59

回答

5

在浮點處執行信號處理操作很常見,然後在將結果發送到ADC之前將結果放大並轉換爲16位或24位整數。例如,以浮點形式實現IIR濾波器意味着您可以降低對係數量化的敏感度。或者如果你在做FFT,你可以通過浮點計算獲得更大的動態範圍。

通常的轉換方式是在數據從ADC進入時執行x_float = x_int * (1.0/SHRT_MAX),而在發送到DAC時執行用於16位編解碼器的y_int = y_float * SHRT_MAX。對於24位編解碼器,您需要定義ADC_MAX = (1 << 24) - 1

在使用JACK的情況下,我猜框架會爲您處理這種轉換,所以您應該看到+/- 1範圍內的浮點值,並將其返回到相同範圍內的值。