-
-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Description
I didn't want to call this a roadmap because this isn't any kind of official decision or anything.
I'm just making this thread to gather together all the ideas and long-term goals that we have for LMMS, and if applicable, an expected timeframe when it could possibly be implemented.
These are all things that have been discussed about in the mailing list or github. I can update this list in the future and everyone is also welcome to suggest more additions to the list.
Architecture, compatibility, backends and plugins
- LinuxVST support: for this we would need someone who understands how the VST format works (particularily on Linux). We already have support for VST through wine, so implementing this could be modeled on that, or alternatively, some existing LinuxVST host could be ported into an LMMS plugin
- LV2 support: grejppi (and Harry van Haaren?) have are already worked on this. This can possibly be done in the 1.2 timeframe.
- Better Jack support: (Better JACK support #1467) this is a kind of umbrella entry for various Jack-related things: Jack-inputs (for recording, eventually), Jack-outputs... Jack-transport support, freewheeling? But the main thing would be to get the basic Jack backend working flawlessly.
- Support for session management
- DSSI support
Optimizations in threading and internal architecture
(This is all going to be somewhat technical stuff, not very understandable for someone who's unfamiliar with the LMMS inner workings)
- Complete support for sample-exact models
- NotePlayHandle: modify the way note offset is implemented: Don't hold the offset for the lifetime of the NPH, instead negate it in the first period. This would be necessary to allow instruments to make use of sample-exact models. implemented in master
- Threading optimizations. Make the core rendering function more efficient.
- Convert the AudioPort -> FxMixer connection to use a pull model. The recently implemented FxRoute construct could be extended to AudioPorts so that FxChannels can read directly from them the same way the read from other FxChannels.
- Implement automatic latency compensation: LADSPA plugins have an unofficial, de-facto standard way of announcing latency, which is supported by many other LADSPA hosts. VST-effects have an actual standard interface for announcing their latency. We can use these to figure out the relative latencies of all streams and at each point where streams are mixed, compensate for the latency difference by delaying the least-delayed streams. Total latency would then be the maximum between all streams. Additionally a manual latency adjustment widget could maybe be added to instrument tracks.
UI and functionality improvements
- Implement tempo tracks (this should be done in the 1.2 timeframe)
- Refine sampletracks to work correctly: play from any position, be tempo-aware, connect to FX-channels (same as above)
- Sampletrack recording (possibly for 1.3 - 2.0)
- Time signature reworked: convert current time sig widget to work more as a "grid" setting which doesn't affect pattern lengths but only the song editor snapping. Add a separate time sig property to all patterns, so that each pattern can have their own internal time sig, and different time-sigs can be mixed in the same project. (no time-estimate for this, but possibly before 2.0)
- Better editing features (partially implemented already in 1.2 branch)
- Allow merging/splitting of notes in piano roll, and patterns in song editor
- Note effects: a major feature, no time estimate. A way to create effect plugins that work per note for native multistreamed instruments. Would replace the ENV/LFO tab, and the plugins would have inline GUIs so the notefx would be a more flexible and modular version of the current ENV/LFO tab. For compatibility, the legacy ENV/LFO tab's functionality could be implemented as a note fx plugin, and we could also have improved and different envelopes/LFOs for notes. (User could choose between vector envelopes, regular ADSR, or combine them any way they want...)
- Per-note controls: an architectural change that allows native instrument plugins to expose per-note controls that can be controlled from piano roll the same way as per-note volume, pitch and panning are. No time estimate... all theoretical for now.
- Export format: allow saving projects in an "export format", where all the external resources (samples, soundfonts, sampletracks) get packed in with the project. To ease collaboration among other things.
- Live play improvements: allow muting piano roll preview, add loop controls: move loop fwd/back, double/halve loop length, duplicate/erase loop
- Select samplerate for playback
- MIDI export (see below, no timeframe)
- Per-FxChannel export: allow exporting a project so that you can pick output from any FxChannel, including master, and write them to different files. All can be rendered simultaneously. (somewhere between 1.2-2.0 hopefully)
- Non-integer tempos
- Group tracks (assign tracks to collapsible/expandable groups to conserve editor space)
GUI and visual/theming improvements
- More themes that are maintained and offered with LMMS
- Better theme selection in settings, possibly also: on-the-fly theme changes?
- Add metadata to themes (maybe this would be smart to do for 1.1 so it wouldn't be an incompatibility issue later on?)
Life-cycle/Maintenance
- Provide apple support/downloads (support being a relative word here) - Requires fixing a few bugs (Zyn GUI, SF2 Crash, File Association). Nice to have: Wine VST support.
- Provide (or re-introduce) "upgrade" support specifically for config upgrades - Self explanatory
Uncategorized
- Finish implementing Undo/Redo - Self explanatory
GUI and visual/theming improvements
- Switch Zyn from FLTK/Plastic theme to Dark NTK theme - Requires removing FLTK build requirements and adding NTK requirements (NTK is not readily available from Ubuntu repos, requires manual DL/compile).