Script-based plugins(effects, controllers, etc.)
- Dominant language
- C++
- Stars
- 10.4k
- Forks
- 1.3k
- Avg merge
- 2d 13h
- Merged PRs (30d)
- 7
Description
I had the following idea: we have many plugins, but if you want to write your own for just one song, there is a long way to go:
- Write the plugin in C/C++
- Register the plugin
- Wait for the next LMMS version ;)
- Hope that it will also compile on Windows etc ;)
Anyways, I have once written a C interpreter. It builds a so called "abstract syntax tree" from a string input once, and this tree can then be executed multiple times, like a compiled program. We could predefine controllers and effects that use such equations.
Example: Amplifier:
_Predefined_: An effect with stereo in and out, 16 knobs, and one string input.
_What you do_: Type "for(int i = 0; i < buf_size; ++i) { out_l[i] = in_l[i] \* k[0]; out_r[i] = in_r[i] \* k[0]; }" into the string input.
_Meaning_: out_l, out_r, in_l, in_r are predefined variables for the in/out buffers. buf_size is predefined for the buffer size. k[0] is knob 0.
Other examples: Controllers, e.g. that delay the controller signal, apply inertia to it or whatever.
What do you think about such an interpreter?
Note: I know scripts are usually slower. But once a script proves as usable, we could just move the script code into the lmms sources, since they have the same languages.
Contributor guide
No contributing guide indexed for this repository
Research direction
No files, tests, or entry points are named. Start by reviewing LMMS's existing plugin architecture and the proposed C interpreter/abstract syntax tree approach for script-based effects and controllers. Done would require an agreed design and an implemented, usable interpreter integration.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- audio-video-rtc, desktop
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 20/100