SignalReader組件允許從信號(hào)源文件中讀取數(shù)據(jù),并以選定的速率重放錄音。SignalReader輸出數(shù)據(jù)流格式與SignalGenerator類似,請(qǐng)參見第1.10章。
SignalReader組件目前支持兩種格式,wav和sid。
FileName定義要打開的文件,如“c:\\wavedata \\ audioclip1.wav”
Factor設(shè)定輸出因子。原始信號(hào)樣本乘以該值。
OutputInterval類似于SignalGenerator的屬性,請(qǐng)參見第17.1節(jié)。
當(dāng)文件終點(diǎn)達(dá)到時(shí),IsLooping允許文件讀取跳轉(zhuǎn)到文件的開頭。
打開文件后,可以使用以下屬性來(lái)獲取文件的信息:
ChannelCount:文件的通道數(shù)。
SamplingFrequency:采樣頻率(Hz)。
FileSize:文件大?。ㄒ宰止?jié)計(jì))。
Length:每個(gè)頻道的采樣計(jì)數(shù)。所有信號(hào)文件格式可能不準(zhǔn)確
IsReaderEnabled:狀態(tài)命令是組件啟動(dòng)和讀取數(shù)據(jù)。如果循環(huán)設(shè)置為假并且文件終點(diǎn)到達(dá),IsReaderEnabled將更改為false。
調(diào)用OpenFile(...)方法提供的文件名。文件名必須有支持格式的擴(kuò)展名。然后調(diào)用Start()方法
signalReader.OpenFile(“C:\\wavedata\\ audioclip1.wav”);
signalReader.Start();
它將開始重放PCM格式的WAV文件。
可以通過(guò)調(diào)用StopRequest()方法來(lái)停止重放。

圖17-1SignalReader讀取一個(gè)wav文件,LightningChartSampleDataSeries繪制信號(hào)。光標(biāo)線用于標(biāo)記當(dāng)前讀取位置和X軸滾動(dòng)位置。
AudioInput組件允許用戶從Windows的錄制設(shè)備捕獲到System.Double值的信號(hào)。這些值可以在LightningChartUltimate上呈現(xiàn),發(fā)送到AudioOutput組件,并保存到文件等...
BitsPerSample——獲取或設(shè)置每個(gè)樣本分配多少位。支持的值為8和16。如果使用其他值,則使用16。IsInputEnabled為假時(shí)可設(shè)置。
IsInputEnabled——獲取或設(shè)置此實(shí)例的狀態(tài)(即啟動(dòng)或停止它)。將此屬性設(shè)置為真與調(diào)用Start方法相同,其中假與調(diào)用Stop方法相同。
IsStereo——獲取或設(shè)置是使用兩個(gè)通道(立體聲)還是僅使用一個(gè)(單聲道)。IsInputEnabled為假時(shí)可設(shè)置。
LicenseKey——以常規(guī)或加密格式獲取或設(shè)置許可證密鑰。
RecordingDevice——獲取或設(shè)置當(dāng)前錄制設(shè)備。IsInputEnabled為假時(shí)可設(shè)置。通過(guò)將此屬性設(shè)置為空,使用Windows的默認(rèn)記錄設(shè)備。
SamplesPerSecond——獲取或設(shè)置采樣頻率。IsInputEnabled為假時(shí)可設(shè)置。
ThreadInvoking——獲取或設(shè)置此實(shí)例是否自動(dòng)將其事件同步到主UI線程,因此無(wú)需在訪客端調(diào)用Control.Invoke方法。
Volume——獲取或設(shè)置音量(0-100)。IsInputEnabled為假時(shí)可設(shè)置。
GetRecordingDevices——使用此靜態(tài)方法獲取可用Windows錄制設(shè)備的列表。
RequestStop——將此AudioInput實(shí)例發(fā)出信號(hào)以停止。退出此方法后,Stop不會(huì)立即出現(xiàn)。通過(guò)訂閱Stopped事件,當(dāng)所有事情都停止時(shí),用戶將會(huì)被通知。
Start——Start從選定的錄音設(shè)備中讀取音頻。內(nèi)部線程即將開始時(shí)觸發(fā)Started事件。
DataGenerated——生成一組新的音頻數(shù)據(jù)時(shí)發(fā)生??梢詮淖鳛閰?shù)提供的DataGeneratedEventArgs對(duì)象讀取數(shù)據(jù)及其第一個(gè)樣本的時(shí)間戳。
Started–音頻輸入開始時(shí)發(fā)生。StartedEventArgs對(duì)象作為參數(shù)被提供,包含三個(gè)公共字段:BitsPerSample、ChannelCount和SamplesPerSecond。
Stopped–音頻輸入停止時(shí)發(fā)生。
本章介紹了AudioInput類的WinForms版本的用法。WPF版本將在第17.5章中處進(jìn)行介紹。
通過(guò)在源代碼中手動(dòng)創(chuàng)建一個(gè)新的AudioInput實(shí)例,或者將其從VisualStudio的工具箱拖放到您的表單、用戶控件等。
如果您不需要顯示GUI(即,您使用自己的或您的源代碼控制AudioInput對(duì)象),則將Visible屬性設(shè)置為假。始終建議使用父屬性進(jìn)行設(shè)置,以便在處理父控件時(shí),AudioInput實(shí)例被自動(dòng)處置。如果沒有父級(jí),那么在完成AudioInput實(shí)例后,不要忘記調(diào)用Dispose方法。請(qǐng)注意,如果您通過(guò)VisualStudio的工具箱創(chuàng)建一個(gè)新的AudioInput實(shí)例,則Parent將自動(dòng)設(shè)置。
建議設(shè)置LicenseKey屬性,以便您的AudioInput實(shí)例使用顯式許可密鑰,而不是嘗試從Windows注冊(cè)表中找到一個(gè)。請(qǐng)注意,如果您使用試用版/許可證,則可以將LicenseKey屬性保留為其默認(rèn)值。
要從AudioInput實(shí)例獲取新的樣本,您需要至少訂閱DataGenerated事件。當(dāng)DataGenerated事件觸發(fā)時(shí),您可以從作為參數(shù)提供的DataGeneratedEventArgs對(duì)象獲取新樣本和第一個(gè)采樣時(shí)間戳。
如果想知道AudioInput實(shí)例何時(shí)開始其音頻采樣任務(wù),您可以訂閱Started事件。您可以獲取每個(gè)樣本的位數(shù),是音頻單聲道還是立體聲,并且從作為參數(shù)提供的StartedEventArgs對(duì)象每秒鐘生成多少個(gè)樣本。
如果您想知道AudioInput實(shí)例何時(shí)停止,您可以訂閱Stopped事件。Stopped事件沒有參數(shù),它唯一的目的是告訴用戶什么時(shí)候停止。
京ICP備09015132號(hào)-996 | 違法和不良信息舉報(bào)電話:4006561155
© Copyright 2000-2026 北京哲想軟件有限公司版權(quán)所有 | 地址:北京市海淀區(qū)西三環(huán)北路50號(hào)豪柏大廈C2座11層1105室
北京哲想軟件集團(tuán)旗下網(wǎng)站:哲想軟件 | 哲想動(dòng)畫