LMMS / LMMS/lmms

Script-based plugins(effects, controllers, etc.)

Open
#551 33 comments 0 reactions 0 assignees View on GitHub
enhancement
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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.