Hacker News new | ask | show | jobs
by mrblah 3881 days ago
i used tracktion many years ago and remember reading about the underlying juce framework, but i was dissuaded by the lack of bindings to other languages. i know real-time audio is inherently low-level, but are there any plans to expose the api to other languages to make it easier to experiment with?
1 comments

This has been partly done several times with Lua (one by myself). One problem is that JUCE is not a C framework, it relies heavily on C++ features (notably, using it means deriving lots of parent classes and interfaces). This makes language bindings a bit more tedious, especially if you want your binding to keep up with JUCE's non-stop development.

So it would take a really strong incentive for someone to create and maintain a full-featured binding to another language.

The smart way to generate bindings nowadays would probably be to use Clang to get an AST and auto-generate the wrapper code.

But TBH I've never quite seen the point of binding scripts to C++ classes in general.. C++ is already a great way to write that code, why have a messy layer in the middle!

The place where I'd have thought it makes sense is for custom APIs, e.g. in Tracktion we let the users write javascript to control the app in response to keyboard shortcuts, but for that we have our own API that they can call. Never quite understood the use-case for more general library bindings to generic GUI classes, but I guess people have their reasons!

i kinda figured the gui stuff would be impractical, but what i was more interested in was a low friction way to play with midi / audio buffers. i haven't worked with c / c++ since college (too busy paying the bills in a managed shop), but i guess this is as good an excuse as any to get back into it. the fact it comes with its own ide / tooling is nice because learning an entirely new workflow / tool-chain is a barrier in itself.