Replies: 2 comments 5 replies
-
See also the discussion in #129. You can make hosts that only process offline (so just applying effects to audio, no realtime playback) in any language, but if you want to do realtime playback at low latencies you really need to start caring about realtime safety. Which means that the audio threads may not be stalled for an indeterminate amount of time. If you don't do this, then you may end up with sporadic xruns and inconsistent DSP loads. Any language (runtime) that uses a garbage collector that has to periodically stop the world to do its thing thus immediately fails this requirement. |
Beta Was this translation helpful? Give feedback.
-
I started work on a Python host for testing but not for making a daw. I agree with Robert’s assessment that the audio thread running a gc is a non starter for real-time which is why I think rust c++ and Delphi are the daw languages with clap to date. but if you want to do offline render then yeah this would work just fine. More of a sketch book than a daw. i bet you could do quite well with Haskell and clojure also if your render thread was using ffi. Clojure tossing and event list over a thread boundary to an audio thread should work and require a relatively small amount of c-like code all just random thoughts. Other than a proto python binding none of this is code |
Beta Was this translation helpful? Give feedback.
-
Now that CLAP is enabling hosts and plugins to be written in languages other than C and C++, I'm curious what the viability of using higher level garbage-collected languages for plugin hosts is. Specifically, I'm interested in using languages like Haskell, Clojure, and Smalltalk to make a DAW.
Has anyone ventured down this path, and if so, were there any hard obstacles to achieving the real time requirements of music software? Assuming for now that all the plugins being used are still implemented in C-like languages.
Beta Was this translation helpful? Give feedback.
All reactions