そういえばプラグインホストは独立性高いからRustに手を出しても良かった気がする(まあ本来はプラグインホストの機能はおまけでJUCEとかtracktion_engineとかを実装として使う選択肢を残すつもりだったからC++だっただけ)
@kazbo_ はい、Rustは他の言語と比べるとC++とFFIしやすいところがあるのでいけるかもしれません(ただそれならもっとRustでJUCEにbindするコードがあってもおかしくない気もする)。
境界構築の観点では、VST3みたいにDSPコントローラーが「UIスレッド」を要求するプラグインフォーマットを相手にしている限り、完全には割り切れないかも…という気もちょっとしています(JUCEもtracktionもそのへんは曖昧)
@atsushieno oh, VST3ってそんなことになっているんですか・・・
@kazbo_ この辺のドキュメントでUI Threadを要求する処理がいろいろ書かれていて「えっそんなのも?」みたいになります https://steinbergmedia.github.io/vst3_dev_portal/pages/Technical+Documentation/Workflow+Diagrams/Audio+Processor+Call+Sequence.html
そして「ホントにUIスレッドを要求されるの?」って聞かれるたびにyesって言われる感じです ( https://forums.steinberg.net/t/is-icomponent-getstate-setstate-thread-safe/201734/6 とか https://forum.juce.com/t/hosted-vst3-threading-issue/59348 とか)
最近出した無料のプラグインフォーマット本を書いた中でもちょっと言及してます(せんでんw)
@atsushieno ありがとうございます。 この書ですかね、 買ったので読みます !!
👀
https://techbookfest.org/product/ajiqFUUVasKYh2Z01LGGVz?productVariantID=uyuZhuqcLE0Lc0kfgwiSMH
@atsushieno いろいろやってみて今、その疑問に到達しました・・・ おっしゃる通りJUCEとtracktion_engineとの距離感でめちゃくちゃ悩んでます。
言語を変えることで、FFIとかIPCとかで分かりやすく境界ができていいのかも、という期待をしていたりして、現時点では色々rustで実装しようかな?寄りな気持ちになっています。