2012-12-03 30 views
3

我正在實現一種音頻算法,以便從復調唱片(如melodyne)中分離音符。我的計劃是,使它成爲VST插件。研究文檔,我很難弄清楚我將如何實現非實時任務。 所需的任務是加載一個波形文件並非實時地進行分析,然後才能實時循環和操作。應該可以隨時加載一個新文件。離線處理 - 文件加載,非實時算法

找到關於該主題的信息是相當困難的。如果任何人有經驗,並可以給我一個提示:

  • 這可能與VST? SDK提供離線處理,但DAW似乎不支持它。
  • 如果我讓我的程序是獨立的,我怎樣才能將它與VST主機同步?
  • 有沒有人知道一本好書,詳細說明?

回答

0

我認爲你是在過分追求線下的東西。 :)這其實很容易,但棘手的部分是製作一個好用戶界面,向用戶解釋發生了什麼。如果我是你的話,我只需要在一個單獨的線程中加載文件,當這個任務運行時,你應該在你的GUI中顯示一個「加載文件...」微調器,並在你的例程中輸出沉默。這將涉及到一定程度的混亂,以確保三個線程(GUI,進程,加載器)都知道對方正在做什麼。

至於製作一個獨立版本的插件,Juce肯定是要走的路。這個可愛的框架還將處理VST/AU插件抽象,並允許您導出獨立應用程序。 Juce可能看起來有點貴,但如果你使用這個插件進行商業廣告,它是值得的每一分錢。如果您不打算進行商業化,那麼您可以只使用GPL代碼並免費使用它。

如果你更喜歡獨立插件的DIY路線,你可能會與MrsWatson一起破解一些東西。 (聲明:我是MrsWatson的作者)。目前MrsWatson錯過了這個項目需要的一些功能,但我計劃在未來添加它們,因爲這是一個非常常見的用例,我願意支持。至於好的VST編程書籍,好吧,我也不知道。 =/

+2

警告不要在音頻線程中使用任何互斥鎖。這可能會破壞插件的實時可能性,並且在主機將您連接到音頻回調時會造成危害。在音頻線程中,更喜歡無鎖的消息隊列,或者像使用自旋鎖一樣使用原子變量。 JUCE確實沒問題。 – dzada