Since there have been numerous suggestions regarding new metadevices for doing various things, would it be possible to have metadevice plugins? This would let people who are interested in specific metadevice functionality that may not appeal to everyone get what they want (as long as someone would be willing to produce such a plugin for the purpose).
Scripts can be just as buggy as any other code. Scripts might not crash the whole app as easily as a “native plugin”, but only if the engine running the script is very good. Some form of quality control might be better: the Renoise team could “recommend” some tested and good devices. Maybe even integrate some into Renoise. All others would be “use at your own risk”.
They can also be just as stable. And if they’re forced to be opensource (not .dll’s like Buzz - WORLDS of difference!) as was suggested… every popular script will sooner or later be fixed even if the original author abandons it. Period.
That’s nice in theory, but defeats the purpose of taking work off the shoulders of the dev team… (after a hefty initial amount of work to make a scripting language, that is…) so rather let the community do the quality control for code the community produces…
I would NEVER write my own scripting language. There are plenty of VERY stable, fast, and easy to use scripting languages out there that are plenty better than anything a single individual could write.
From what I understand, LUA is fairly extensible. Something along those lines would probably work quite nicely. Besides, metadevices shouldn’t have the kind of process priority that audio does, (I don’t really know, I’m not a Renoise developer) so I would think that it would be nigh impossible to write a script that would crash Renoise.
The great thing about scripting languages is that you have full control over what your users can and cannot do. You can write a buggy scripting language and users will screw things up, but if you write a buggy program, users will find ways to screw that up just as easily.
The idea behind scripting is that if you need a very specific metadevice, you can whip one together in a jiffy. As Johann noted, quality control would not only be a waste of the developers’ time, but it would defeat the purpose of making this available to begin with.
This would be especially useful if user-created metadevices could analyze incoming audio. So long as they’re not allowed output an audio signal, I can’t imagine this blurring the line between metadevices and effects very much, since it should be possible to sample the incoming audio at the metadevice rate. (Similar to the way that audio signals can be converted to normal signals in MaxMSP/Pure Data)
I know Lua a bit. I like it too.
Scripts are slow compared to native code though. I’m not sure if scripts for meta devices (or even audio processing) would be a good idea. Lua might be fast enough for logic code but definately not for audio input or output.
I don’t think using a scripting language for metadevices would be realistic if they were to be used for handling audio rate data. Then only a plugin interface letting you use C or C++ would be adequate.
A scripting language might be really nice. Allowing scripting into Renoise would affect stability but the same holds true for loading VST as well.
Something as “simple” as a stack-based FORTH-like interpreter might provide a good match between execution speed and ease of implementation (minimal parsing, no grammar etc) while remaining extensible.