18.4.3 配置
如果要使AudioInput實例自動將其事件同步到主UI線程,設(shè)置ThreadInvoking為真,但請確保AudioInput實例具有有效的父級控件。
ThreadInvoking默認(rèn)為假,所以如果您在DataGenerated事件處理程序中更新GUI,請不要忘記調(diào)用Control.Invoke方法。
如果要使用其他Windows的錄制設(shè)備而不是默認(rèn)錄像設(shè)備,請設(shè)置RecordingDevice屬性。您可以使用AudioInput的靜態(tài)方法GetRecordingDevices獲取所有可用的錄制設(shè)備。
可以通過Volume屬性來控制音量。有效值為0到100,其中0表示靜音,100為最大音量。當(dāng)AudioInput實例啟用(即生成樣本)時,您也可以設(shè)置音量。
如果要使用差異采樣率而非默認(rèn)采樣率(44100Hz),請設(shè)置SamplesPerSecond屬性。在啟用AudioInput實例時設(shè)置此屬性不起作用。
使用單聲道音頻而非立體聲(默認(rèn)),請將IsStereo設(shè)置為假。在啟用AudioInput實例時設(shè)置此屬性不起作用。
如果您更喜歡每個采樣8位而不是16位(默認(rèn)值),請設(shè)置BitsPerSample屬性8。有效值為8和16(默認(rèn)值)。這種限制來自PCM波形。在啟用AudioInput實例時設(shè)置此屬性不起作用。
18.4.4 啟動
啟動AudioInput實例時,您可以設(shè)置IsInputEnabled屬性為真或調(diào)用Start方法。當(dāng)DataGenerated事件為您提供一組新的音頻樣本時,您可以使用LightningChartUltimate實例渲染它們。
若想停止AudioInput實例,設(shè)置IsInputEnabled為假或調(diào)用RequestStop方法。RequestStop方法不會立即停止。它只會給AudioInput實例發(fā)送信號以盡快停止。如果您需要等到一切都停止,那么等待Stopped事件被觸發(fā)。你需要訂閱它。
本章介紹AudioInput類的WPF版本的用法。AudioInput的WPF版本工作原理與WinForms版本基本相同。但是,有一些WPF用戶需要了解的內(nèi)容,本章將介紹這些內(nèi)容。
在代碼隱藏中手動創(chuàng)建一個新的AudioInput實例,或者通過將其從VisualStudio的工具箱拖放到您的窗口、用戶控件等上。
如果您不需要顯示GUI(即您使用自己的或您的源代碼控制AudioInput對象),則使用Arction.WPF.SignalTools命名空間中的AudioInput。這個特定的類派生自FrameworkElement,它的所有屬性都是可綁定的。為方便起見,在安裝LightningChartUltimate SDK之后,還可以從VisualStudio的工具箱中找到Arction.WPF.SignalTools.AudioInput,以便將其放在Windows、用戶控件等上,然后將元素移動到XAML代碼所需的位置。必要的XML命名空間將以這種方式自動添加。
AudioInput還有一個現(xiàn)成的GUI。可以從Arction.WPF.SignalTools.GUI命名空間中找到它。您也可以在安裝LightningChartUltimate SDK后從VisualStudio的工具箱中找到它。請注意,這只是Arction.WPF.SignalTools.AudioInput類的GUI,但它包含一個Arction.WPF.SignalTools.AudioInput類的實例,您可以通過Input屬性訪問它。即您不必創(chuàng)建一個新的單獨的Arction.WPF.SignalTools.AudioInput實例。
建議設(shè)置LicenseKey屬性,以便您的AudioInput實例使用顯式許可證密鑰,而不用試圖從Windows注冊表中找到一個。請注意,如果您使用試用版/許可證,則可以將LicenseKey屬性保留為其默認(rèn)值。
AudioOutput組件允許用戶將System.Double信號數(shù)據(jù)轉(zhuǎn)換為音頻流,然后通過揚聲器播放,或發(fā)送到聲音設(shè)備的Line-out接口。
平衡- 獲取或設(shè)置音頻播放平衡。有效值介于-100到100.-100之間,這意味著音頻只能通過左側(cè)揚聲器播放。0表示兩個揚聲器輸出音頻。100表示該音頻僅通過右側(cè)揚聲器播放。
BitsPerSample -獲取或設(shè)置每個樣本分配多少比特。支持的數(shù)值為8和16。如果使用其他值,16則會被取代。當(dāng)IsOutputEnabled為false值時,是可設(shè)置的狀態(tài)。
IsOutputEnabled -獲取或設(shè)置此實例的狀態(tài)(即啟動或停止)。設(shè)置此屬性為true值與調(diào)用Start的方法相同,其中false值與調(diào)用Stop的方法相同。
IsStereo -獲取或設(shè)置是使用兩個通道(立體聲)還是僅使用一個(單聲道)。這是可以進(jìn)行設(shè)定的。
IsOutputEnabled的值為false。
LicenseKey -以常規(guī)或加密格式,獲取或設(shè)置許可證密鑰字符串。
PlaybackDevice -獲取或設(shè)置當(dāng)前播放設(shè)備。IsOutputEnabled的值為false時可進(jìn)行設(shè)置。
通過將此屬性的值設(shè)置為NULL,則能夠使用Windows的默認(rèn)播放設(shè)備。
SamplesPerSecond -獲取或設(shè)置采樣頻率。IsOutputEnabled的值為false時可設(shè)置。
音量- 獲取或設(shè)置音量(0-100)。IsOutputEnabled的值為false時可設(shè)置。
頻譜計算器組件能夠在時域和頻域之間進(jìn)行轉(zhuǎn)換。

圖20-1。源信號數(shù)據(jù)(頂部)轉(zhuǎn)換為頻域(底部)的示例。信號采樣頻率=300
Hz,因此頻率刻度為300/2= 150 Hz。強正弦基線為10Hz(10周期/秒)。將100Hz的較小信號作為一種噪音的方式進(jìn)行添加。在功率譜中能夠發(fā)現(xiàn)兩個尖峰。
我們有以下公共方法供您參考:
•CalculateForward(double[] samples,outdouble []fftData):將時域信號數(shù)據(jù)轉(zhuǎn)換為頻域使用FFT。fftData的輸出值還包含負(fù)值。輸入和輸出數(shù)據(jù)數(shù)組的長度必須相等。長度是數(shù)據(jù)的分辨率,從0Hz擴(kuò)展到采樣頻率/2,其中輸出值間隔相等。
•CalculateForward(float[] samples,outfloat [] fftData):與以前的方法一樣,但是僅針對對于單個精度浮點值。
•CalculateBackward(double[] fftData,outdouble [] samples):將頻域數(shù)據(jù)轉(zhuǎn)換為
時域。從FFT數(shù)據(jù)中獲取信號樣本,樣本計數(shù)等于輸入fftData的長度值。
•CalculateBackward(float[] fftData,outfloat [] samples:像以前的方法一樣,但是是針對單個精度浮點值而言。
•PowerSpectrum(double[] samples,outdouble [] fftData):用于計算信號的功率譜數(shù)據(jù)。與CalculateForward相同,但具有絕對的輸出值。
•PowerSpectrum(float[] samples,outfloat [] fftData):與以前的方法一樣,但是是針對單個精度浮點值而言。
•PowerSpectrumOverlapped(double[] samples,intfftWindowLength,doubleoverlapPercent,outdouble[] fftData,outintprocessedSampleCount):通過移動來計算功率譜。從計算窗口內(nèi)源信號采樣數(shù)據(jù),并以重疊的百分比表示。信號數(shù)據(jù)必須比給定的FFT窗口長。輸出FFT數(shù)據(jù)是fftWindowLength的長度,所以不一定要與源數(shù)據(jù)的長度相同。輸出的數(shù)據(jù)為絕對值。
•PowerSpectrumOverlapped(float[] samples,intfftWindowLength,doubleoverlapPercent,outfloat[] fftData,outint processedSampleCount)
京ICP備09015132號-996 | 違法和不良信息舉報電話:4006561155
© Copyright 2000-2026 北京哲想軟件有限公司版權(quán)所有 | 地址:北京市海淀區(qū)西三環(huán)北路50號豪柏大廈C2座11層1105室
北京哲想軟件集團(tuán)旗下網(wǎng)站:哲想軟件 | 哲想動畫