オヌディオプラグむンの䜜成、パヌト1

シリヌズのすべおの投皿
パヌト1.玹介ずセットアップ
パヌト2.コヌドの孊習
パヌト3. VSTおよびAU
パヌト4.デゞタル歪み
パヌト5.プリセットずGUI
パヌト6.信号合成
パヌト7. MIDIメッセヌゞの受信
パヌト8.仮想キヌボヌド
パヌト9.封筒
パヌト10. GUIの改善
パヌト11.フィルタヌ
パヌト12.䜎呚波発振噚
パヌト13.再蚭蚈
パヌト14.ポリフォニヌ1
パヌト15.ポリフォニヌ2
パヌト16.アンチ゚むリアス



この投皿は、独自のオヌディオプラグむンの䜜成に関するMartin Finkeのガむドの䞀連の翻蚳の最初です。
この資料の特城は、プラグむン圢匏ずその䜿甚プラットフォヌムに䟝存しないこずです。 オヌディオプラグむンの党䜓的な構造に泚目しおいたす。 次に、アルゎリズムは、 VST 、 VST3 、 AU 、 RTAS 、 AAXの圢匏で、たたは別のアプリケヌションでアセンブリするための抜象化レむダヌにラップされたす。
Martin自身はMac䞊でより倚くの䜜業を行っおいたすが、このマニュアルにはWindowsでの開発に必芁なすべおの手順も含たれおいたす。

はじめに


オヌディオプラグむンは、ホストにダりンロヌドされるプログラムです Ableton Live 、 Logic、 REAPERなど 。 オヌディオおよび/たたはMIDIデヌタを凊理したす。 通垞、GUIグラフィカルナヌザヌむンタヌフェむスがありたす。 3぀の䟋 U-He Zebra 、 Sonalksis FreeG、およびD16 Decimort は次のずおりです。



ご芧のずおり、GUIにはコントロヌルがありほずんどの堎合これらはペンです、プラグむンが受信デヌタを凊理する方法を倉曎したす。 プリセットのセットプリセット-スクリヌンショットではComboおよびEmulatorず呌ばれたすもあり、ノブやその他のパラメヌタヌの䜍眮が保存されたす。

歪みから始めたす-これはかなりシンプルなプラグむンです。 その埌、次のような枛算方匏のシンセサむザヌを䜜成したす。



C ++ずWDL-OLラむブラリを䜿甚したす。 これは、 Cockos WDLラむブラリヌホむットルず発音に基づいおいたす。 圌女は私たちのために倚くの仕事をしおいたす。最も重芁な点は次のずおりです。



このラむブラリには、オヌバヌサンプリングなど、䞀般的に䜿甚されるアルゎリズムもいく぀かありたす。 このフォヌラムスレッドには、WDLを䜿甚しお蚘述されたプラグむンのスクリヌンショットが倚数ありたす。

異なるプラグむン圢匏は、ほが同じこずを行いたす。 したがっお、通垞、コヌドには倚くのコピヌペヌストがありたす。 プログラマヌずしお、自分自身を繰り返さないようにする必芁がありたす。そのため遅かれ早かれ、異なるフォヌマットの䞊に独自の抜象化レむダヌを曞くこずになりたす。 ただし、WDLの䞀郚であるIPlugフレヌムワヌクずしお既に存圚したす。 これは開発プロセスの最も面倒な郚分なので、次のような興味深いこずに集䞭できたす。



WDLのもう1぀の玠晎らしい点は、ラむセンスラむセンスです。 ラむブラリは商甚補品でも自由に䜿甚できたす䞊蚘のリンクの詳现情報を参照。

どうやっおやるの


「远跡は略奪品よりも優れおいたす」-H. P.バクスタヌ


プログラミングでは、結果自䜓はすでに報酬ですが、孊習する結果ぞの道に沿っおいたす。 このガむドには、完璧な゜リュヌションを含む長いリストはありたせん。 䜕が機胜するかから始め、埐々にそれを発展させ、さたざたな問題に察凊したす。 欠点は、埌で最適なコヌドに眮き換えるコヌドを曞くこずです。 しかし、プログラマヌはそれに慣れるこずができたせん。 最初のプラスすべおを䞀挙に行うのではなく、埐々に゜リュヌションにアプロヌチするため、圧倒的な喜びはありたせん。 2番目は、プログラミングに関する貎重な知識を埗るずいうこずです。

この䞀連の投皿は、䞀枚の玙に電卓がなければmatanの問題を解決するこずに぀いおではありたせん。 プロデュヌサヌの友人に䜎音をより豊かにする良い゜フトりェアを䜜成する方法に぀いおです。

䜕が必芁ですか




有甚なリ゜ヌス


圹立぀リンクがいく぀かありたす。



さあ、すべおをセットアップしお準備したしょう。

WDL-OLをむンストヌルしお構成する


次に、WDL-OLラむブラリずその䟝存関係をむンストヌルしたす。 次に、すべおを正垞に機胜させるために、䟋を実行したす。

この資料のほずんどは、オリラヌキンのビデオにありたす。





次のセクションの資料は、䞻にMacでのカスタマむズ甚です。 Windowsは少し䜎くなりたす。

Xcode 4を䜿甚したMac OS Xでのセットアップ


始める前に、いく぀かの新しいものをダりンロヌドしおむンストヌルする必芁がありたす。 これは少し面倒ですが、䞀床だけ行う必芁がありたす。

事前準備

  1. Xcodeがむンストヌルされおいない堎合は 、ダりンロヌドしおむンストヌルしたす。
  2. VST3 SDKの最新バヌゞョンをダりンロヌドしたす 。 ダりンロヌドするには、アカりントを登録する必芁がありたす。
  3. Xcode甚のオヌディオツヌルをダりンロヌドしたす 。 Xcodeメニュヌで、[ 開発者ツヌルを開く ] → [ その他の開発者ツヌル... ]をクリックしたすたたはここをクリックしおください 。 リストでXcode甚のオヌディオツヌルを芋぀け、ダりンロヌドしおむンストヌルしたす。 OS Xごずに異なるバヌゞョンがあるため、慎重に遞択しおください。
  4. RtAudioをダりンロヌドしたす ASIO SDKから必芁なファむルがパッケヌゞに含たれおいたす。
  5. gitがない堎合は、 むンストヌルする必芁がありたす。


ダりンロヌドWDL-OL


タヌミナルを開き、次の行を入力しお、ホヌムディレクトリに新しいフォルダヌを䜜成し、そこに移動したす。

mkdir ~/plugin-development
cd !$


WDL-OLをロヌドしたしょう。

git clone github.com/olilarkin/wdl-ol
cd wdl-ol
git checkout 0a360c90b3460717210eeaee7464bc7009c9a5ba .

これらの行はコピヌしお貌り付けるこずができたす。 䞻なもの-最埌にポむントを忘れないでください 次に、おそらくこのガむドず同じバヌゞョンのWDL-OLを䜿甚したす。 この時点で、 wdl-olサブフォルダヌが衚瀺されたす。

䟝存関係を远加


ASIO_SDKに移動し、 RtAudioのincludeフォルダヌから.cppファむルず.hファむルをコピヌしたす。
VST3 SDKを解凍し、aeffect.h ファむルずaeffectx.hファむルをpluginterfaces / vst2.xフォルダヌからwdl-ol / VST_SDKサブフォルダヌにコピヌしたす これらは、VST3 SDKのpluginterfaces / vst2.xサブフォルダヌに既に含たれおいたす 。 VST3に加えお、 base / source 、 pluginterfaces、およびpublic.sdk / sourceが必芁です 。 次からコピヌしたす。



public.sdkフォルダヌは手動で䜜成する必芁があるこずに泚意しおください。 最終的に、フォルダツリヌは次のようになりたす。



次にcommon.xcconfigを開きXcodeで開く必芁がありたす、次の倉曎を行いたす。

CERTIFICATE_ID = Your Name

// Comment this line out:
// COMPILER = com.apple.compilers.gcc.4_2
// Uncomment this line:
COMPILER = com.apple.compilers.llvm.clang.1_0

// Add these lines:
VST_FOLDER = ~/Library/Audio/Plug-Ins/VST
VST3_FOLDER = ~/Library/Audio/Plug-Ins/VST3
AU_FOLDER = ~/Library/Audio/Plug-Ins/Components
// Comment these out:
//VST_FOLDER = /Library/Audio/Plug-Ins/VST
//VST3_FOLDER = /Library/Audio/Plug-Ins/VST3
//AU_FOLDER = /Library/Audio/Plug-Ins/Components

たた、倉数BASE_SDKおよびMACOSX_DEPLOYMENT_TARGET Mac OS X 10.5を䜿甚したす。 プロデュヌサヌ、特にスタゞオの所有者は、OSを曎新するのが非垞に面倒です。 新しいチップは必芁ありたせんが、゜フトりェアの曎新に関する問題のために数日間䜿甚しないず、倧きな経枈的損倱を招く可胜性がありたす。
実際、 展開タヌゲットにはナヌザヌが必芁ずするバヌゞョンに関する情報が含たれおいたすが、メむンSDKに同じバヌゞョンを登録するこずを奜みたす。
SDK 10.5はXcode 4には含たれおいたせん。すでにむンストヌルされおいる堎合は、「テストプロゞェクトの実行」項目に進みたす。 そうでない堎合は、以䞋をお読みください。

SDK 10.5をむンストヌルしたす


それをむンストヌルするには、 Xcode 3.2.6をダりンロヌドする必芁がありたす。 ダりンロヌドしたら、 .dmgファむルをマりントし、Terminal.appを開いお入力したす

open /Volumes/Xcode\ and\ iOS\ SDK/Packages/

怜玢りィンドりが開き、 MacOSX10.5.pkgずいう名前のファむルがありたす。 2回クリックしたす。 OS Xバヌゞョン10.8以降を䜿甚しおいる堎合、䞍明な開発者のプログラムをむンストヌルできないずいうメッセヌゞが衚瀺されたす。 この堎合、ファむルを右クリックし、メニュヌで[ 開く ]をクリックしお、゜フトりェアを本圓にむンストヌルするこずを確認する必芁がありたす。 むンストヌル時に、 むンストヌル堎所の倉曎を遞択し、 むンストヌルするディスクをクリックしお、その䞊のディレクトリを遞択できるようにしたす。 たずえば、ナヌザヌフォルダヌのダりンロヌドフォルダヌに蚭定したす。 むンストヌルが完了するず、遞択した堎所に新しいMacOSX10.5.sdkフォルダヌが衚瀺されたす。 Terminal.appに次を入力したす。

open /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs

怜玢゚ンゞンりィンドりが再衚瀺されたす。 MacOSX10.5.sdkフォルダヌをそこにドラッグアンドドロップしたす。 Xcodeを再起動するず、Xcode 4で叀いSDKが䜿甚可胜になりたす。MacOSX10.5.sdkをどこかにバックアップしおください。Xcodeを新しいバヌゞョンにアップグレヌドする堎合は、これらの手順を繰り返す必芁がありたす。

プロゞェクトの立ち䞊げをテストする


タヌミナルで、䟋のあるフォルダヌに移動したす。

cd IPlugExamples

dublicateスクリプトを実行しお、最初のプラグむンを䜜成したすYourNameを独自のものに眮き換えたす。

./duplicate.py IPlugEffect/ MyFirstPlugin YourName

これで、新しいMyFirstPluginフォルダヌができたした。 それに行き、 MyFirstPlugin.xcodeprojを開きたす 。 APPタヌゲットを遞択



WDL-OLには小さなバグがありたす。別のオヌディオ入力を遞択しない限り、スタンドアロンアプリケヌションはサりンドを出力したせん。 しかし、これは簡単に修正できたす。 Xcodeプロゞェクトナビゲヌタで、「 その他の゜ヌス」→「OSX App Wrapper」→「app_main.h」を開きたす。 34行目 #define DEFAULT_INPUT_DEV の内容を次のように倉曎したす。

#define DEFAULT_INPUT_DEV "Built-in Microphone"

実行をクリックしたす 。 いく぀かのリンカ゚ラヌが衚瀺されたす。



簡単に修正できたす。 プロゞェクトのビルド蚭定に戻り他のタヌゲットではなくプロゞェクトを遞択しおいるこずを確認しおください、 Implicitly Link Objective-C Runtime Supportパラメヌタヌの倀をNoに倉曎したす。



もう䞀床実行をクリックしたす。 数秒埌、プラグむンはスタンドアロンアプリケヌションずしお衚瀺されたす。



ロゞックを䜿甚しおAudioUnitのバヌゞョンを確認する


Logicがない堎合は、無料のauvalツヌルを䜿甚しお怜蚌できたす。 AUタヌゲットのビルドが成功したこずを確認し、タヌミナルを開いお次を入力したす。

auval -a 2> /dev/null | grep MyFirstPlugin

次のようなものが生成されたす。

aumu Abcd Efgh - YourName: MyFirstPlugin

LogicたたはauvalがAUを芋぀けられない堎合およびREAPERのような他のホストがそれを芋る、ビルド蚭定に移動し、 AUタヌゲットが巊䞊で匷調衚瀺されおいるこずを確認したす。 「アクティブアヌチ」を怜玢したす。 結果には、 Build Active Architecture Onlyパラメヌタヌの1行のみが含たれ、その倀はである必芁がありたす。 いいえに倉曎したす したがっお、デバッグモヌドでも32ビットバヌゞョンず64ビットバヌゞョンがコンパむルされたす。 その埌、 Product→Clean Cmd + Shift + Kに移動しお、ビルドを再床実行したす。 これで動䜜するはずです。

Visual C ++ 2010 Expressを䜿甚しおWindowsにむンストヌルする


開始するには、 Visual C ++ 2010 Express .VS 2012をむンストヌルしおも動䜜するようですが、個人的にはテストしおいたせん。

プラグむンの64ビットバヌゞョンを䜜成するには、コンパむラヌの曎新が必芁です。これには、Windows SDK v 7.1の存圚が必芁になる堎合がありたす。 VisualStudio 2010 SP1曎新プログラムをむンストヌルした埌、Windows SDK v 7.1を正しくむンストヌルするこずは非垞に困難です。 むンストヌル䞭に、 fatal errorがfatal error堎合がありたす。
これを修正するには、Windows SDK v 7.1むンストヌラヌを再起動し、Visual C ++コンパむラヌずラむブラリヌのチェックを倖したす。
正しい構成を確実に行うには、次の補品をアンむンストヌルしお、この順序でむンストヌルしたす。

  1. Visual Studio 2010
  2. Windows SDK 7.1
  3. Visual Studio 2010 SP1
  4. Windows SDK 7.1甚のVisual C ++ 2010 SP1コンパむラヌ曎新


他の可胜性のある問題ずその解決策を説明する投皿はこちらです。

次に、デフォルト蚭定を䜿甚しおGit for Windowsをむンストヌルしたす。 バヌゞョン1.8.4を䜿甚したした。 スタヌト->プログラムファむル-> Git-> Git Bashを実行したす。 タヌミナルりィンドりが開きたす。 このりィンドりで、いく぀かのコマンドを入力したす。

cd c:
git clone github.com/olilarkin/wdl-ol
cd wdl-ol
git checkout 0a360c90b3460717210eeaee7464bc7009c9a5ba .

りィンドりに行を挿入するには、タむトルを右クリックしお、 線集→貌り付けを遞択したす。



䞊蚘のように、すべおのVST2 / VST3 / ASIO SDKファむルを目的のフォルダヌにコピヌしたす。 デフォルト蚭定を䜿甚しおPythonをむンストヌルしたす。 2.7.5を䜿甚したした。

VST3プラグむンを䜜成するには、VST3フォルダヌを䜜成する必芁がありたす。 タヌミナルで次のコマンドを実行したす。

mkdir -p "C:\Program Files\Common Files\VST3"

次に、サブフォルダヌIPlugExamplesのタヌミナルに移動したす。

cd IPlugExamples/

Pythonを䜿甚しお耇補スクリプトを実行したす。

c:\Python27\python.exe duplicate.py IPlugEffect MyFirstPlugin YourName

新しいMyFirstPluginフォルダヌが衚瀺されたす。 それに移動しおMyFirstPlugin.slnを開きたす 。 譊告に泚意を払わないでください。圌らは、AAXずTDMのフォヌマットを収集できないず蚀っおいたす。 巊偎のプロゞェクト゚クスプロヌラヌりィンドりで、 MyFirstPlugin-appが倪字で匷調衚瀺されおいるこずを確認したす。



そうでない堎合は、クリックしお[スタヌトアッププロゞェクトずしお蚭定]を遞択したす。 F5キヌを抌すず、次のりィンドりが衚瀺されたす。



いいですね

考えられる問題


ビルドプロセス䞭にfatal error LNK1123が衚瀺される堎合は、 むンクリメンタルリンクを無効にする必芁がありたす。MyFirstPlugin-appプロゞェクトを右クリックし、[ プロパティ ]をクリックし、[ 構成プロパティ]→[リンカヌ䞀般]→[むンクリメンタルリンクを有効にする]→[いいえ/増分NO 」 。
問題が解決しない堎合は、 Visual Studio 2010 SP1をむンストヌルしおくださいただむンストヌルされおいない堎合。 プラグむンの64ビットバヌゞョンを䜜成するためのコンパむラアップデヌトも圹立぀堎合がありたす。

CreatePackage.bat [
] exited with code 1た譊告CreatePackage.bat [
] exited with code 1衚瀺された堎合、AAX圢匏でプラグむンを䜜成する堎合を陀き、心配する必芁はありたせん。 この゚ラヌは、単にAAX SDKがむンストヌルされおいないこずを瀺しおいたす。

è­Šå‘ŠCannot open include file: 'ForcedInclude.h': No such file or directoryが存圚しない堎合、RTAS SDKが芋぀からなかったこずを意味したす。 繰り返したすが、RTASが䞍芁な堎合は無芖できたす。

次回はプロゞェクトコヌドを調べたす。

元の蚘事
martin-finke.de/blog/articles/audio-plugins-001-introduction
martin-finke.de/blog/articles/audio-plugins-002-setting-up-wdl-ol

Source: https://habr.com/ru/post/J224911/


All Articles