本發(fā)明涉及音頻數(shù)字信號處理技術(shù)領(lǐng)域,具體地說,涉及一種用以配置外置usb聲卡的方法及裝置。
背景技術(shù):
與板載聲卡和pci聲卡相比,usb外置聲卡遠(yuǎn)離了機(jī)箱復(fù)雜的電磁干擾環(huán)境,聲音的音質(zhì)更好。而且由于usb外置聲卡的便攜性,使得目前usb外置聲卡的應(yīng)用越來越廣泛。
由于音頻dsp專用芯片處理音效具有速度快、效率高、延遲小等的特點(diǎn),目前性能比較好的usb外置聲卡都采用音頻dsp專用芯片來處理音效。
然而,大多數(shù)的usb外置聲卡的dsp音效都是由專業(yè)人士用相關(guān)的dsp指令編寫而成。而dane的語法格式與匯編語言比較相似,由一系列寄存器和指令構(gòu)成。其編寫難度極大,一般的用戶無法根據(jù)自己的需要量身定做音效。而一個好的音效通常具有混響、混音、閃避等多種功能,這更增加了編輯dsp音效的難度。
因此,需要一種以圖形化界面的形式編輯dsp音效的方法,從而簡化dsp音效的編輯,讓一般用戶也可以編輯使用dsp音效。
技術(shù)實(shí)現(xiàn)要素:
為解決上述問題,本發(fā)明提供了一種用以配置外置聲卡的方法。所述方法包括:
將利用專用編程語言編寫的各個音效算法進(jìn)行模塊化處理,形成用圖形表示的包括輸入接口和輸出接口的插件模塊;
根據(jù)設(shè)計(jì)的要求通過輸入和輸出接口以及連接線來組合各個插件模塊以得到音效模塊;
對所述音效模塊對應(yīng)的算法指令集合進(jìn)行編譯以得到所述聲卡上設(shè)置的音頻專用器件可以執(zhí)行所述指令的二進(jìn)制代碼;
通過通信方式將所述二進(jìn)制代碼下載到所述聲卡的存儲器中。
根據(jù)本發(fā)明的一個實(shí)施例,采用通用串行總線通信的方式將編譯后的二進(jìn)制代碼下載到所述存儲器中。
根據(jù)本發(fā)明的一個實(shí)施例,該方法還包括:在下載所述二進(jìn)制代碼后:
根據(jù)指令通過直接運(yùn)行所述二進(jìn)制代碼來聯(lián)機(jī)播放所設(shè)計(jì)的音效,或
通過以脫機(jī)的方式運(yùn)行所述二進(jìn)制代碼以播放所設(shè)計(jì)的音效。
根據(jù)本發(fā)明的一個實(shí)施例,將所述用圖形表示的輸入接口和輸出接口的各個插件模塊以及組合后的音效模塊作為成員自定義添加到機(jī)架列表中保存或者從機(jī)架列表中自定義刪除已有的插件模塊和音效模塊。
根據(jù)本發(fā)明的一個實(shí)施例,所述插件模塊包括:增益器模塊、變調(diào)器模塊、混響器模塊、壓限器模塊、擴(kuò)展器模塊、人聲消除模塊、音樂播放模塊、線路輸入模塊、噪聲門限模塊、均衡器模塊、電腦錄音模塊、調(diào)音臺模塊以及信號輸入模塊和信號輸出模塊。
其中,插件模塊和音效模塊中的算法參數(shù)均可以進(jìn)行微量調(diào)節(jié)。例如通過調(diào)音臺界面中的控件來調(diào)節(jié)參數(shù),以使得獲取滿意的音效。
根據(jù)本發(fā)明的一個實(shí)施例,所述連接線對應(yīng)于將兩個插件模塊組合起來的算法。根據(jù)本發(fā)明,相關(guān)插件模塊組合連接后實(shí)現(xiàn)的模塊為音效模塊。此外,所述插件模塊和音效模塊均可自定義添加刪減并保存在機(jī)架列表中。插件模塊保存在機(jī)架列表中可供調(diào)用,自由搭配相關(guān)音效模塊。音效模塊保存在機(jī)架列表中可供用戶方便選擇使用,不用重新搭建,同時(shí)也方便選擇下載。
根據(jù)本發(fā)明的另一個方面,還提供了一種用以配置外置聲卡的裝置,所述裝置包括:
音效算法模塊化處理單元,其用以將利用專用編程語言編寫的各個音效算法進(jìn)行模塊化處理,形成用圖形表示的包括輸入接口和輸出接口的插件模塊;
音效組合單元,其用以根據(jù)設(shè)計(jì)的要求通過輸入和輸出接口以及連接線來組合各個插件模塊以得到音效模塊;
音效算法編譯單元,其用以對組合后的音效模塊對應(yīng)的算法指令集合進(jìn)行編譯以得到所述聲卡上設(shè)置的音頻專用器件可以執(zhí)行所述指令的二進(jìn)制代碼;
代碼下載單元,其用以通過通信方式將所述二進(jìn)制代碼下載到所述聲卡的存儲器中。
根據(jù)本發(fā)明的一個實(shí)施例,用以配置外置聲卡的裝置采用通用串行總線通信的方式將編譯后的二進(jìn)制代碼下載到所述存儲器中。
根據(jù)本發(fā)明的一個實(shí)施例,所述裝置還包括:聯(lián)機(jī)播放單元,其用以根據(jù)指令通過直接運(yùn)行所述二進(jìn)制代碼來聯(lián)機(jī)播放所設(shè)計(jì)的音效,以及
脫機(jī)播放單元,其用以通過以脫機(jī)的方式運(yùn)行所述二進(jìn)制代碼以播放所設(shè)計(jì)的音效。
根據(jù)本發(fā)明的一個實(shí)施例,所述裝置還包括:
自定義添加/刪除單元,其用以將所述用圖形表示的包括輸入接口和輸出接口的各個插件模塊以及組合后的音效模塊作為成員自定義添加到機(jī)架列表中保存或者從機(jī)架列表中自定義刪除已有的插件模塊和音效模塊。
本發(fā)明的有益之處在于,其提供了一種圖形化界面的形式來編輯dsp音效的方法,從而簡化了dsp音效的編輯,讓一般用戶也可以編輯使用dsp音效。
本發(fā)明的其它特征和優(yōu)點(diǎn)將在隨后的說明書中闡述,并且,部分地從說明書中變得顯而易見,或者通過實(shí)施本發(fā)明而了解。本發(fā)明的目的和其他優(yōu)點(diǎn)可通過在說明書、權(quán)利要求書以及附圖中所特別指出的結(jié)構(gòu)來實(shí)現(xiàn)和獲得。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要的附圖做簡單的介紹:
圖1是根據(jù)本發(fā)明一個實(shí)施例的用以配置外置聲卡的方法流程圖;
圖2顯示了將音效算法模塊化為圖形圖標(biāo)進(jìn)行組合的示意圖;
圖3顯示了根據(jù)本發(fā)明實(shí)施例的調(diào)音臺的界面示意圖;
圖4顯示了根據(jù)本發(fā)明實(shí)施例的音頻機(jī)架的各個插件模塊的列表;
圖5顯示了根據(jù)本發(fā)明實(shí)施例的用以配置外置聲卡的用戶圖形界面示意圖,以及
圖6顯示了根據(jù)本發(fā)明一個實(shí)施例的用以配置外置聲卡的裝置的結(jié)構(gòu)框圖。
具體實(shí)施方式
以下將結(jié)合附圖及實(shí)施例來詳細(xì)說明本發(fā)明的實(shí)施方式,借此對本發(fā)明如何應(yīng)用技術(shù)手段來解決技術(shù)問題,并達(dá)成技術(shù)效果的實(shí)現(xiàn)過程能充分理解并據(jù)以實(shí)施。需要說明的是,只要不構(gòu)成沖突,本發(fā)明中的各個實(shí)施例以及各實(shí)施例中的各個特征可以相互結(jié)合,所形成的技術(shù)方案均在本發(fā)明的保護(hù)范圍之內(nèi)。
同時(shí),在以下說明中,出于解釋的目的而闡述了許多具體細(xì)節(jié),以提供對本發(fā)明實(shí)施例的徹底理解。然而,對本領(lǐng)域的技術(shù)人員來說顯而易見的是,本發(fā)明可以不用這里的具體細(xì)節(jié)或者所描述的特定方式來實(shí)施。
另外,在附圖的流程圖示出的步驟可以在諸如一組計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)系統(tǒng)中執(zhí)行,并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。
圖1顯示了本發(fā)明的用以配置外置聲卡的方法流程圖。如圖1所示,方法開始于步驟s101。在該步驟中,將利用專用編程語言編寫的各個音效算法進(jìn)行模塊化處理,形成用圖形表示的包括輸入接口和輸出接口的插件模塊。
這里所說的專用編程語言主要指的是dsp專用芯片中的dane語言。在音頻數(shù)字信號技術(shù)領(lǐng)域中,通常采用dane語言來編寫音頻數(shù)字信號處理音效算法。它的寄存器用于存儲音頻數(shù)據(jù),寄存器類型有input,output,static,temp,control,const,ccr,acc和idelay等。這些類型的寄存器都可以像c語言一樣定義成變量。
眾所周知,數(shù)字音頻效果器是數(shù)字信號處理器科學(xué)的一個分支(dsp),它包括了很多不同類型的程序,比如圖像處理、通信處理、醫(yī)學(xué)處理器、軍事處理器、深海和太空探測器等等。所有這些處理不同信號(共同點(diǎn)是包含了數(shù)據(jù)的信號流)的處理器都和音頻處理器一樣。數(shù)字信號處理器dsp和kx驅(qū)動提供了音頻效果器的很多可能性來完成用戶所需要的音效。并且由于kx本身是由眾多工具軟件組成,因此更容易實(shí)現(xiàn)編輯音效的目標(biāo)。
本發(fā)明首先將各種dsp音效算法模塊化,每一個模塊具有輸入和輸出接口,音頻數(shù)據(jù)從輸入接口流入算法模塊,經(jīng)過模塊中的算法處理之后,再從輸出接口流出模塊。
對于每一段用dane語言編寫的dsp音效算法,都可以當(dāng)作一個算法模塊,算法中的每一個input類型的寄存器都是模塊的一個輸入接口,每一個output類型的寄存器都是一個輸出接口。
根據(jù)本發(fā)明的一個實(shí)施例,將用圖形表示的輸入接口和輸出接口的各個插件模塊對應(yīng)的算法作為成員添加到動態(tài)鏈接庫中,其中,算法中的每個輸入類型的寄存器表示所述插件模塊的輸入接口,算法中的每個輸出類型的寄存器表示所述插件模塊的輸出接口。
為了便于擴(kuò)展,將每一個模塊都制作成一個動態(tài)鏈接庫,并將該模塊的dane語言算法存儲在動態(tài)鏈接庫中。在加載動態(tài)庫之后,圖形用戶界面中用具有輸入和輸出端口的方塊圖形圖標(biāo)來表示該算法模塊。
接下來,在步驟s102中,根據(jù)設(shè)計(jì)的要求通過輸入和輸出接口以及連接線來組合各個插件模塊。
模塊之間可以用連線的方式將一個模塊的輸出端口與另一個模塊的輸入端口相連,表示音頻數(shù)據(jù)的流向從一個模塊流入另一個模塊,如圖2所示。
這種模塊之間連線的方式,實(shí)質(zhì)上就是將音頻數(shù)據(jù)從一個模塊的output寄存器轉(zhuǎn)存到另一個模塊的input寄存器中。因此,用dane語言中的指令acc3就可以將兩個相連的模塊的算法組合起來,形成一段組合而成的dsp音效算法。假設(shè)連線輸入端的算法模塊a的輸出寄存器定義為outputoutla,outra;連線輸出端的算法模塊b的輸入寄存器定義為inputinlb,inrb;那么需要用兩條acc3指令來組合這兩個模塊的算法:
acc3inlb,0,outla,0
acc3inrb,0,outra,0
以這樣的方式,將不同的算法模塊組合起來,就形成了一個組合而成的dsp音效,但是音效的編輯還沒完成,還需要對音效進(jìn)行微調(diào),比如音量的調(diào)整等,如圖3所示。為了方便對模塊的算法進(jìn)行調(diào)節(jié),每個模塊的動態(tài)鏈接庫中還要添加一個用來調(diào)節(jié)算法參數(shù)的圖形界面,圖形界面上添加一些旋鈕等控件來調(diào)節(jié)算法參數(shù)。模塊算法的參數(shù)通常以寄存器值的形式體現(xiàn)在算法中,通過圖形界面上的控件來調(diào)節(jié)參數(shù)時(shí),算法中的寄存器值也會跟著修改。
然后,在步驟s103中,對所得到的音效模塊對應(yīng)的算法指令集合進(jìn)行編譯以得到所述聲卡上設(shè)置的音頻專用器件可以執(zhí)行所述指令的二進(jìn)制代碼。
按照上述方法,編輯好dsp音效后,需要將音效中的所有模塊的算法組合起來,形成一個用dane語言表示的新的算法。然后編譯這個算法,生成音頻dsp芯片中能夠執(zhí)行的二進(jìn)制代碼。不同型號的dsp芯片,編譯的方法也不一樣。
最后,在步驟s104中,通過通信方式將所述二進(jìn)制代碼下載到聲卡的存儲器中??蓪⒕幾g生成的二進(jìn)制代碼直接寫入dsp芯片,以在usb外置聲卡中得到想要的音效。
根據(jù)本發(fā)明的一個實(shí)施例,采用通用串行總線通信的方式將編譯后的二進(jìn)制代碼下載到所述存儲器中。對于usb外置聲卡,本發(fā)明采用usbhid通信的方式將dsp算法的二進(jìn)制代碼發(fā)送到usb聲卡上。再由usb聲卡將dsp算法的二進(jìn)制代碼寫入dsp芯片。具體的采用計(jì)算機(jī)與usb外置聲卡通信的步驟如下:
(1)根據(jù)設(shè)備的vid和pid查找到設(shè)備的路徑,用到的api函數(shù)有hidd_gethidguid、setupdigetclassdevs、setupdienumdeviceinterfaces、setupdigetdeviceinterfacedetail等。
(2)用createfile函數(shù)打開找到的設(shè)備路徑。
(3)用writefile函數(shù)將數(shù)據(jù)寫入設(shè)備,用readfile函數(shù)讀取設(shè)備應(yīng)答的數(shù)據(jù)。
(4)最后用closehandle關(guān)閉已打開的設(shè)備。
由于數(shù)據(jù)傳輸過程不是完全可靠的,因此對于傳輸?shù)臄?shù)據(jù)要做crc校驗(yàn),并采用應(yīng)答機(jī)制。即,對于計(jì)算機(jī)發(fā)送給聲卡設(shè)備的數(shù)據(jù)包,聲卡設(shè)備必須應(yīng)答正確才能繼續(xù)發(fā)送下一個數(shù)據(jù)包。如果應(yīng)答錯誤或者超時(shí)無應(yīng)答,計(jì)算機(jī)端要重發(fā)數(shù)據(jù)包,如果超過10次應(yīng)答錯誤或超時(shí)無應(yīng)答,則數(shù)據(jù)傳輸失敗。
為了在編輯音效的過程中就能立即可以聽到效果,每次連線或調(diào)節(jié)算法的參數(shù),都會重新編譯音效算法,并將編譯生成的二進(jìn)制代碼寫入到dsp芯片。
因此,綜上可知,本發(fā)明可以通過圖形界面的方式編輯音頻dsp的音效算法,并且可以在編輯音效的過程中音效算法實(shí)時(shí)編譯并寫入dsp芯片,立即能聽到效果。
根據(jù)本發(fā)明的一個實(shí)施例,用以配置外置聲卡的方法還包括:在下載所述二進(jìn)制代碼后:根據(jù)指令通過直接運(yùn)行所述二進(jìn)制代碼來聯(lián)機(jī)播放所設(shè)計(jì)的音效,或通過以脫機(jī)的方式運(yùn)行所述二進(jìn)制代碼以播放所設(shè)計(jì)的音效。
這樣,設(shè)計(jì)人員可以在聯(lián)機(jī)播放的過程中,進(jìn)一步重新調(diào)整模塊的參數(shù),重新設(shè)計(jì)音效以滿足設(shè)計(jì)要求。
根據(jù)本發(fā)明的一個實(shí)施例,插件模塊包括:增益器模塊、變調(diào)器模塊、混響器模塊、壓限器模塊、擴(kuò)展器模塊、人聲消除模塊、音樂播放模塊、線路輸入模塊、噪聲門限模塊、均衡器模塊、電腦錄音模塊以及調(diào)音臺模塊,其中,在將各個插件模塊組合之后,還可對插件模塊中的算法參數(shù)進(jìn)行微量調(diào)節(jié)以及在動態(tài)鏈接庫中自定義添加和刪除插件模塊或者組合后的音效模塊。
如圖4所示,這些模塊可以根據(jù)需要自定義添加到界面中,或從界面中移除。例如,各種類型的均衡器模塊和激勵器模塊可以根據(jù)需要添加到均衡器插件這一組中。此外,這些模塊中的各個參數(shù)也可以通過點(diǎn)擊模塊圖標(biāo)而進(jìn)入微調(diào)界面進(jìn)行調(diào)整,從而獲得更加符合設(shè)計(jì)的音效。
連接線對應(yīng)于將兩個插件模塊組合起來的算法。
此外,根據(jù)本發(fā)明的插件模塊還包括調(diào)音臺模塊,其中,在將各個插件模塊組合之后,本發(fā)明還可以通過用戶圖形界面對各個插件模塊中的算法參數(shù)進(jìn)行微量調(diào)節(jié),以更好地達(dá)到設(shè)計(jì)效果。
如圖5所示,其中更詳細(xì)地顯示了根據(jù)本發(fā)明設(shè)計(jì)的用戶圖形化界面示例。
各個模塊通過點(diǎn)擊插件欄中的項(xiàng)目而出現(xiàn)到窗口中,用戶可以像畫圖一樣將各個插件模塊通過連接線組合起來。通過點(diǎn)擊插件模塊本身,還可以出現(xiàn)參數(shù)調(diào)節(jié)界面以供參數(shù)調(diào)節(jié)。將組合好的音效模塊采用編譯指令進(jìn)行編譯,得到二進(jìn)制代碼,然后通過下載指令或者聯(lián)機(jī)播放指令傳送到外置聲卡中進(jìn)行存儲或聯(lián)機(jī)播放。
由于本發(fā)明的方法描述的是在計(jì)算機(jī)系統(tǒng)中實(shí)現(xiàn)的。該計(jì)算機(jī)系統(tǒng)例如可以設(shè)置在控制核心處理器中。例如,本文所述的方法可以實(shí)現(xiàn)為能以控制邏輯來執(zhí)行的軟件,其由控制系統(tǒng)中的cpu來執(zhí)行。本文所述的功能可以實(shí)現(xiàn)為存儲在非暫時(shí)性有形計(jì)算機(jī)可讀介質(zhì)中的程序指令集合。當(dāng)以這種方式實(shí)現(xiàn)時(shí),該計(jì)算機(jī)程序包括一組指令,當(dāng)該組指令由計(jì)算機(jī)運(yùn)行時(shí)其促使計(jì)算機(jī)執(zhí)行能實(shí)施上述功能的方法??删幊踢壿嬁梢詴簳r(shí)或永久地安裝在非暫時(shí)性有形計(jì)算機(jī)可讀介質(zhì)中,例如只讀存儲器芯片、計(jì)算機(jī)存儲器、磁盤或其他存儲介質(zhì)。除了以軟件來實(shí)現(xiàn)之外,本文所述的邏輯可利用分立部件、集成電路、與可編程邏輯設(shè)備(諸如,現(xiàn)場可編程門陣列(fpga)或微處理器)結(jié)合使用的可編程邏輯,或者包括它們?nèi)我饨M合的任何其他設(shè)備來體現(xiàn)。所有此類實(shí)施例旨在落入本發(fā)明的范圍之內(nèi)。
根據(jù)本發(fā)明的另一個方面,還提供了一種用以配置外置聲卡的裝置,所述裝置包括:
音效算法模塊化處理單元601,其用以將利用專用編程語言編寫的各個音效算法進(jìn)行模塊化處理,形成用圖形表示的包括輸入接口和輸出接口的插件模塊;
音效組合單元602,其用以根據(jù)設(shè)計(jì)的要求通過輸入和輸出接口以及連接線來組合各個插件模塊以得到音效模塊;
音效算法編譯單元603,其用以對組合后的音效模塊對應(yīng)的算法指令集合進(jìn)行編譯以得到所述聲卡上設(shè)置的音頻專用器件可以執(zhí)行所述指令的二進(jìn)制代碼;
代碼下載單元604,其用以通過通信方式將所述二進(jìn)制代碼下載到所述聲卡的存儲器中。
根據(jù)本發(fā)明的一個實(shí)施例,用以配置外置聲卡的裝置采用通用串行總線通信的方式將編譯后的二進(jìn)制代碼下載到所述存儲器中。
根據(jù)本發(fā)明的一個實(shí)施例,所述裝置還包括:
聯(lián)機(jī)播放單元605,其用以根據(jù)指令通過直接運(yùn)行所述二進(jìn)制代碼來聯(lián)機(jī)播放所設(shè)計(jì)的音效,以及
脫機(jī)播放單元606,其用以通過以脫機(jī)的方式運(yùn)行所述二進(jìn)制代碼以播放所設(shè)計(jì)的音效。
進(jìn)一步地,根據(jù)一個實(shí)施例,所述裝置還包括:
自定義添加/刪除單元607,其用以將所述用圖形表示的包括輸入接口和輸出接口的各個插件模塊以及組合后的音效模塊作為成員自定義添加到機(jī)架列表中保存或者從機(jī)架列表中自定義刪除已有的插件模塊和音效模塊。
應(yīng)該理解的是,本發(fā)明所公開的實(shí)施例不限于這里所公開的特定結(jié)構(gòu)或處理步驟,而應(yīng)當(dāng)延伸到相關(guān)領(lǐng)域的普通技術(shù)人員所理解的這些特征的等同替代。還應(yīng)當(dāng)理解的是,在此使用的術(shù)語僅用于描述特定實(shí)施例的目的,而并不意味著限制。
說明書中提到的“一個實(shí)施例”或“實(shí)施例”意指結(jié)合實(shí)施例描述的特定特征、結(jié)構(gòu)或特性包括在本發(fā)明的至少一個實(shí)施例中。因此,說明書通篇各個地方出現(xiàn)的短語“一個實(shí)施例”或“實(shí)施例”并不一定均指同一個實(shí)施例。
雖然上述示例用于說明本發(fā)明在一個或多個應(yīng)用中的原理,但對于本領(lǐng)域的技術(shù)人員來說,在不背離本發(fā)明的原理和思想的情況下,明顯可以在形式上、用法及實(shí)施的細(xì)節(jié)上作各種修改而不用付出創(chuàng)造性勞動。因此,本發(fā)明由所附的權(quán)利要求書來限定。