LMMS / LMMS/lmms

Continuous model type

Open
#5,626 1 comment 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

Currently, none of LMMS's models are continuous. For example, the volume of a track can only be set to the nearest multiple of 0.1. Often, there is no reason to restrict the precision of a model within its range, and frustrations with this can be seen, for example, in #4565 and #5404, along with a temporary fix for LADSPA plugins in #4574.

I propose adding a continuous model type, which can hold any (normal) floating point value between its minimum and maximum. It, or knobs that use it, should have the following behaviour:
* Modifying the value through a dialog box should not quantise the value to any step size, unlike current models.
* Modifying the value using the scroll wheel should still obey a specified step size, like current models, in order for scrolling to make a usable difference to the value. I'm not sure whether this should simply change the existing value by the step size, or whether it should snap to a multiple of the step size above the minimum value.
* Modifying the value by dragging a knob should not quantise the value to any step size, unlike current models. However, the dragging modification rate should still be chosen so that the model can reach its minimum and maximum value without excessive mouse movement, and so that dragging the knob does not introduce long, scary-looking fractional parts to the value.
* Modifying the value through automation should not quantise the value to any step size. Current models quantise the end points of automation in each buffer, but sample-exact automation can interpolate between these without quantisation. Once the new model type is implemented and has been substituted where appropriate, discrete models should be changed so that sample-exact automation is quantised.

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by mapping LMMS's existing model types and the knob, dialog, scroll-wheel, dragging, and automation paths described in the issue; no specific files or tests are named. Done means a continuous model supports unquantised values where requested, while scrolling and discrete-model automation retain the specified quantisation behaviour.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
desktop
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.