Automation lanes
Nobody has claimed this yet.
- Dominant language
- C++
- Stars
- 10.4k
- Forks
- 1.3k
- Avg merge
- 2d 13h
- Merged PRs (30d)
- 7
Description
Automation lanes
A stricter, opt-in subset of automation tracks which fix several of the problems automation tracks have while also offering some unique benefits.
The Problem(s)
Current automation tracks have some problems and quirks:
- Automation tracks can have many automation clips that each control something different. This is necessary to reduce the number of automation tracks a project needs, but also makes projects messy and disordered.
- Multiple parameters (or "controls"), including parameters with incompatible min/max ranges and incompatible types (float/int) can be connected to the same automation clip.
- Automation clips (whether on the same automation track or on separate ones) can overlap with each other and try to set the same parameter to two different values at once.
- Removing an instrument or effect leaves any automation clips connected to its parameters in a dangling state.
- There is no way to statically lookup the value of a parameter at any point in time. At least not any way which works in every situation (since controller connections introduce some nondeterminism) or efficiently. Because of this:
- Parameter automation is less efficient than it could be
- The value of a parameter at the start of an automation clip is cannot be displayed to the user
- The Song's elapsed time counter cannot be implemented in a way that is always 100% accurate
- VST Sync data involving the tempo cannot always be 100% accurate
A Solution
I'm proposing a new, more restrictive type of automation track which would fix all these problems and encourage better project organization. They could be called automation lanes or "associated automation tracks" (since they have a parent instrument they are associated with). When this idea is combined with the collapsible automation tracks from #735, a lot of visual clutter in the Song Editor can be reduced. The restrictions also allow the value of a parameter controlled by an automation lane to be easily and efficiently looked up at any point in the Song's timeline.
How it works:
- An instrument track can have automation lanes, and these automation lanes are displayed in a collapsible list directly beneath the instrument they are associated with (See #735). Instruments can be thought of as a track group for their automation tracks/lanes.
- Automation lanes enforce some restrictions:
- Each automation lane and their automation clips are dedicated to a single parameter (though maybe this restriction could be relaxed - see "Open questions" section below)
- Only one automation lane is allowed per parameter
- Automation tracks and controller connections are prohibited for any parameter with an automation lane
- Each parameter must originate from the associated instrument or one of its effects
- Automation clips cannot overlap
- Automation lanes cannot be enabled/disabled by another automation lane/track or by a controller - only manually
- All automation lanes are moved with and deleted with their instrument track
- If an instrument is replaced, any automation lanes associated with parameters specific to that instrument are removed (i.e. an automation lane for a VST instrument's internal parameter would be removed, but an automation lane for the instrument's volume would be kept and so would automation lanes for effects)
- If an instrument's effect is removed, any automation lanes associated with that effect are also removed
Open questions:
- Could a single automation lane control multiple parameters as long as all parameters have the same min/max range, same type (int/float/bool), and apply to parameters under the same track? This would offer convenience without sacrificing the benefits of automation lanes.
Additional notes:
- The default name of each automation lane is the same as the parameter they are dedicated to
- There are no unconnected automation clips in an automation lane - creating a new clip creates it with its connection already set
- A new automation lane can be created by <Ctrl> + dragging the control of an instrument or one of its effects onto the instrument itself
- If a regular automation track meets the restrictions of automation lanes, it can be dragged to its instrument track to convert it into an automation lane
- If a regular automation track DOESN'T meet the restrictions of automation lanes, there are still ways it can be at least partially converted if desired
- When each automation clip is dedicated to a single parameter and the min/max range issues are fixed, it will be easier to enable custom y-axis labels in the Automation Editor for CLAP plugins and other plugins that support it.
- Automation lanes could serve as the foundation for future work on MIDI polyphonic expressions (MPE) in the Piano Roll. Just as automation lanes have a parent track whose controls they are responsible for, note expressions would have a parent note whose controls (volume, panning, pitch, etc.) they are responsible for. When a note is deleted, its associated automations would be deleted, just like instrument tracks.
Design considerations
- Should be fully backward-compatible
- Should be opt-in. Regular automation tracks still exist and no project upgrade routines are needed.
- Should encourage better project organization
- Should be intuitive and easy to use
- Track grouping/collapsing under instrument tracks should be implemented with the proposed general-purpose track grouping/collapsing in mind (#735).
Mockup
See #735.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
The issue identifies no files, tests, or implementation entry points; start by reading the proposal and the referenced track-grouping issue #735. Done would require an agreed, backward-compatible opt-in automation-lane design and implementation, but the payload does not define concrete acceptance tests.
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