初投稿。ルールを破ったら教えて!
Pure Data と Unity 5 を試してみたいと思います。uPDが最適だと思われます。github ページの指示に従い、最初のサンプル シーンをロードしました。unity コンソールは dll のエラーを報告します:
Failed to load 'Assets/Magicolo/AudioTools/PureData/Plugins/libpdcsharp.dll', expected 64 bit architecture (IMAGE_FILE_MACHINE_AMD64), but was IMAGE_FILE_MACHINE_I386. You must recompile your plugin for 64 bit architecture.
そこで、メインの libpd リポジトリのクローンを作成し、含まれているバッチ ファイルを使用して x64 dll をビルドしました。Unity プロジェクトの libpdcsharp.dll を置き換えたところ、コンソールに次のように報告されるようになりました。
DllNotFoundException: Assets/Magicolo/AudioTools/PureData/Plugins/libpdcsharp.dll
LibPDBinding.LibPD.ProcessArgs[Int32] (System.Int32[] args, System.String& debug) (at Assets/Magicolo/AudioTools/PureData/LibPD/LibPDNativeMessaging.cs:402)
LibPDBinding.LibPD.SendMessage[Int32] (System.String receiver, System.String message, System.Int32[] args) (at Assets/Magicolo/AudioTools/PureData/LibPD/LibPDNativeMessaging.cs:354)
(wrapper synchronized) LibPDBinding.LibPD:SendMessage (string,string,int[])
LibPDBinding.LibPD.ComputeAudio (Boolean state) (at Assets/Magicolo/AudioTools/PureData/LibPD/LibPDNativeMethods.cs:238)
(wrapper synchronized) LibPDBinding.LibPD:ComputeAudio (bool)
LibPDBinding.LibPD.Release () (at Assets/Magicolo/AudioTools/PureData/LibPD/LibPDNativeMethods.cs:207)
(wrapper synchronized) LibPDBinding.LibPD:Release ()
LibPDBinding.LibPD.ReInit () (at Assets/Magicolo/AudioTools/PureData/LibPD/LibPDNativeMethods.cs:79)
(wrapper synchronized) LibPDBinding.LibPD:ReInit ()
LibPDBinding.LibPD..cctor () (at Assets/Magicolo/AudioTools/PureData/LibPD/LibPDNativeMethods.cs:65)
Rethrow as TypeInitializationException: An exception was thrown by the type initializer for LibPDBinding.LibPD
Magicolo.AudioTools.PureDataBridge.SetAudioSettings () (at Assets/Magicolo/AudioTools/PureData/PureDataBridge.cs:46)
Magicolo.AudioTools.PureDataBridge.StartLibPD () (at Assets/Magicolo/AudioTools/PureData/PureDataBridge.cs:25)
Magicolo.AudioTools.PureDataBridge.Start () (at Assets/Magicolo/AudioTools/PureData/PureDataBridge.cs:50)
PureData.StartAll () (at Assets/Magicolo/AudioTools/PureData/PureData.cs:141)
PureData.Initialize () (at Assets/Magicolo/AudioTools/PureData/PureData.cs:58)
PureData.Awake () (at Assets/Magicolo/AudioTools/PureData/PureData.cs:173)
また、libPDBinding.dll ファイルをメインの libpd リポジトリからユニティ プロジェクトにコピーしようとしましたが、役に立ちませんでした。私は次にどこに行くべきかを理解していないので、何か助けていただければ幸いです!
さらなる進歩
NuGet を試してバインディング dll を取得することをお勧めします。これについて - Unity プロジェクト/ビジュアル スタジオ ソリューションと nuget パッケージ libPDBinding バージョン 0.10.0 の間のフレームワークの不一致に関するエラーが発生します。これは、記事「Using NuGet in Visual Studio Tools for Unity」で説明されているように、unity プロファイルに関係しています。私はあまりにも新しいので、ここにリンクを投稿することはできません。
ただし、自分でコンパイルすることに成功したと思いますlibPDBinding.dll。これをドラッグして申し訳ありませんが、これを正しく行っていることを確認してください: を使用libPD\mingw64_build_csharp.batして の x64 バージョンをコンパイルした後libpdcsharp.dll、これを参照libpd\libs\mingw64\libwinthread-1.dllし、VS ソリューションで、LibPDBinding.dll.NET 3.5 でビルドされた結果を取得します。前述のようlibpdcsharp.dllに、バッチ/メイク ファイルを使用してコンパイルされたので、このファイルが正しい設定でビルドされていると仮定するのは正しいですか?
これら 3 つの dll の unity アセット フォルダーをコピーします。参照用に、uPD を唯一のパッケージとして uPD サンプル シーンにロードされた空の unity プロジェクトです。
実行時にいくつかのエラーが発生し、次のようなビジュアル スタジオの警告が表示されます。
Unity ランタイム エラー:
EntryPointNotFoundException: libpd_safe_init
LibPDBinding.LibPD.ReInit () (at Assets/Magicolo/AudioTools/PureData/LibPD/LibPDNativeMethods.cs:81)
(wrapper synchronized) LibPDBinding.LibPD:ReInit ()
LibPDBinding.LibPD..cctor () (at Assets/Magicolo/AudioTools/PureData/LibPD/LibPDNativeMethods.cs:65)
Rethrow as TypeInitializationException: An exception was thrown by the type initializer for LibPDBinding.LibPD
Magicolo.AudioTools.PureDataBridge.SetAudioSettings () (at Assets/Magicolo/AudioTools/PureData/PureDataBridge.cs:46)
Magicolo.AudioTools.PureDataBridge.StartLibPD () (at Assets/Magicolo/AudioTools/PureData/PureDataBridge.cs:25)
Magicolo.AudioTools.PureDataBridge.Start () (at Assets/Magicolo/AudioTools/PureData/PureDataBridge.cs:50)
PureData.StartAll () (at Assets/Magicolo/AudioTools/PureData/PureData.cs:141)
PureData.Initialize () (at Assets/Magicolo/AudioTools/PureData/PureData.cs:58)
PureData.Awake () (at Assets/Magicolo/AudioTools/PureData/PureData.cs:173)
Visual Studio の警告 x 50 程度:
Warning CS0436 The type 'LibPD' in 'D:\unity projects\libpdinunity\Assets\Magicolo\AudioTools\PureData\LibPD\LibPdNativeUnity.cs' conflicts with the imported type 'LibPD' in 'LibPDBinding, Version=0.3.0.177, Culture=neutral, PublicKeyToken=null'. Using the type defined in 'D:\unity projects\libpdinunity\Assets\Magicolo\AudioTools\PureData\LibPD\LibPdNativeUnity.cs'. libpdinunity.CSharp D:\unity projects\libpdinunity\Assets\Magicolo\AudioTools\PureData\PureDataCommunicator.cs 87 Active
助けてくれてありがとう。とても有難い。