Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 19 additions & 17 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,8 @@ CLAP, VST3 and VST2 plugins.
Lemon Studio runs on Windows, Linux and macOS, and every change is built and tested on all three. macOS is supported
at the same level as Linux; the few differences are listed in the [macOS notes](#macos).

A central goal is **interoperability**: Lemon Studio opens and saves FL Studio projects (`.flp`). The
A central goal is **interoperability**: Lemon Studio opens FL Studio projects (`.flp`) and saves them as `.lemon`
files, its own format laid out like an FLP (a `.flp` is written only if you pick "All files" and type the name). The
project reader is built to round-trip: anything in a file that Lemon Studio does not understand yet is
kept and written back unchanged, so a project survives being opened and saved. This support is still
young, so read the warning below before trying it on real work.
Expand All @@ -56,7 +57,8 @@ young, so read the warning below before trying it on real work.
> expect missing features, rough edges and breaking changes.
>
> - **Greyed-out controls are not implemented yet.** Many menus and buttons are already laid out but do
> nothing so far; they are drawn dim and say "not available yet".
> nothing so far; they are drawn dim and say "not available yet". Other features of a full DAW have no control
> at all yet, so a menu with nothing greyed in it is not necessarily complete.
> - **No prebuilt binaries** will be published until Lemon Studio reaches a usable state. Until then it
> can only be built from source.
> - **Projects saved by FL Studio 10 or later open** (25 and 26 included). Projects older than 24.2 are
Expand All @@ -71,28 +73,28 @@ Where Lemon Studio stands against what a complete DAW offers:

| Area | Status | Notes |
|---|:---:|---|
| Step sequencing and patterns | ✅ | Channel rack with steps, mini piano rolls, swing and per-channel loops |
| Piano roll | ✅ | Full tool set, velocity and event lanes, quantize (FL's templates), chop (FL's patterns), randomize (melodies and levels), strum, arpeggiate, flam, claw machine, flip, level scaling, limit, LFO and more |
| Song arrangement | ✅ | Playlist with pattern, audio and automation clips, clip groups, markers and several arrangements |
| Mixing and routing | ✅ | Mixer tracks, sends, effect slots and meters; sidechain inputs for a project's Fruity Limiter slots and for CLAP and VST3 effects |
| Plugin hosting | ✅ | CLAP, VST3 and VST2 instruments and effects with their editors; "Create automation clip" in CLAP and VST3 plugins' own parameter menus; a parameter menu for every plugin parameter (automation clips, controller links, typed and set values); on Windows a crashing plugin is stopped instead of closing Lemon Studio; no 32-bit plugins |
| Step sequencing and patterns | 🚧 | Channel rack with steps, mini piano rolls, swing and per-channel loops. Not yet: a layer channel's settings (it plays, with volume and pan), the Misc tab's arpeggiator, echo delay, gate, time shift and tracking (drawn greyed) |
| Piano roll | 🚧 | All eight tools, velocity and event lanes, quantize (FL's templates), chop (FL's patterns), randomize (melodies and levels), strum, arpeggiate, flam, claw machine, flip, level scaling, limit, LFO and more. Not yet: note colours, slide and portamento toggles, Note Properties, scale and chord helpers, the piano roll's ▸ menu, release velocity (its lane edits a value nothing plays) |
| Song arrangement | 🚧 | Playlist with pattern, audio and automation clips, clip groups, markers and several arrangements. Not yet: a clip properties window with per-clip pitch, pan and reverse, audio clip chop and merge. The playlist's bars are always 4 beats, and Consolidate and Export all playlist tracks leave plugin instruments out |
| Mixing and routing | ✅ | Mixer tracks, sends, effect slots and meters; sidechain inputs for a project's Fruity Limiter and Vocodex slots and for CLAP and VST3 effects (not VST2). Not yet: the seven other mixer layouts, the track inspector |
| Plugin hosting | ✅ | CLAP, VST3 and VST2 instruments and effects with their editors; "Create automation clip" in CLAP and VST3 plugins' own parameter menus; a parameter menu for every plugin parameter (automation clips, controller links, typed and set values); a crashing plugin is stopped instead of closing Lemon Studio (on macOS, all but its editor); no 32-bit plugins; outputs past a plugin's main stereo pair are dropped |
| Plugin management | ✅ | Plugin manager with your own search folders, a crash-safe background scan, favourites and hidden plugins; presets of your own and factory presets, import of `.vstpreset`, `.fxp` and `.fxb` files, and preset files dropped onto a plugin |
| Time-stretching | ✅ | All twelve stretch methods for samples and audio clips, played by one open-source stretcher |
| Playback engine | 🚧 | Renders ahead of the audio device so edits do not cause dropouts; voice limits, cut groups, glides, layer channels; one audio thread for now |
| Automation | 🚧 | Clips for channel, mixer and plugin parameters with every curve shape, their range and their LFO; channel volume and pan moves record into a pattern; not yet recording into automation clips |
| Project files | 🚧 | Opens and saves projects from FL Studio 10 and later (older layouts are converted as they open). Keep backups |
| Playback engine | 🚧 | Renders ahead of the audio device so edits do not cause dropouts; voice limits, cut groups, glides, layer channels; multi-core mixing |
| Automation | 🚧 | Clips for channel, mixer and plugin parameters with every curve shape, their range and their LFO; channel, mixer, tempo and plugin controls record into a pattern, as in FL Studio, and Turn into automation clip makes a clip of them. Not yet: editing a clip's targets (a clip from ADD can't be linked to anything), making internal controller links in the app |
| Project files | 🚧 | Opens projects from FL Studio 10 and later (older layouts are converted as they open) and saves `.lemon` files. Keep backups |
| Built-in instruments and effects | 🚧 | Instruments: Lemon Sampler (long samples can play straight from disk), Lemon Trio (three oscillators), Citrus (a six-operator synth that plays Sytrus patches), Smith (an additive synth that plays Ogun patches), Lemon Slicer (a loop cut into slices that plays Fruity Slicer channels) and Lemon Drum Sampler (32 pads of velocity-layered samples that plays FPC kits). Effects: Lemon Parametric EQ (all of FL's quality modes: HQ+, HQ Enhanced, linear phase), Limiter, Reverb, Delay, Chorus, Stereo Shaper, Stereo Enhancer, Balance, Soft Clipper, Fast Distortion, Transient Processor, Filter, Flanger and Phaser, plus Pulp Filter (a pattern-controlled multi-filter), Press (a multiband maximiser) and Lemon Drop (an oscilloscope, spectrum, meter and vectorscope that shows Wave Candy slots). All built in, and also VST3 and CLAP plugins for other DAWs; a project's Fruity Limiter slots play Lemon Limiter's sound, sidechain included |
| Exporting audio | ✅ | Song, pattern or selection to WAV, FLAC, MP3 and OGG at once; bit depth, sample rate, interpolation, dither, mono, tails, stems and WAV markers; a pattern rendered as an audio clip (Quick render, Render and replace) |
| MIDI file import / export | ✅ | Import into a new project, the open one or a piano roll channel (tracks, channels, tempo changes, time signatures, markers); export a pattern or the song's patterns |
| Exporting audio | ✅ | Song, pattern or selection to WAV, FLAC, MP3 and OGG at once; bit depth, sample rate, interpolation (not for Lemon Sampler channels, which keep their own), dither, mono, tails, stems and WAV markers; a pattern rendered as an audio clip (Quick render, Render and replace) |
| MIDI file import / export | ✅ | Import into a new project or the open one (tracks, channels, tempo changes, time signatures, markers) or a piano roll channel (notes and time signatures); export a pattern or the song's patterns |
| Note input | 🚧 | Mouse, computer keyboard, MIDI controllers (velocity curves, sustain pedal, pitch bend, aftertouch) and the touch controller; note recording into patterns with loop record, precount and Start on input; step edit |
| MIDI controllers and sync | ✅ | Link any knob, fader or plugin parameter to a controller (or many at once with Multilink); MIDI clock and time code out, external clock in |
| Undo | 🚧 | One history for the whole project, with redo and the browser's History: edits, knobs and faders, the mixer, channels added and deleted, the tempo and project settings, and plugin parameters, those changed in their own windows too |
| MIDI controllers and sync | ✅ | Link knobs, faders and plugin parameters to a controller (or many at once with Multilink), kept for the whole program rather than per project; no device scripts or typed mapping formulas yet; MIDI clock and time code out, external clock in |
| Undo | 🚧 | One history for the whole project, with redo and the browser's History: edits, knobs and faders, the mixer, channels added and deleted, the tempo and project settings, and plugin parameters, those changed in their own windows too. Not yet: the channel rack's graph editor |
| Scripting and assistants | 🚧 | Scripts, tests and AI assistants read and edit projects over a local socket, every change undoable; see [docs/control-plane.md](docs/control-plane.md) |
| Audio drivers | 🚧 | WASAPI (shared and exclusive) and ASIO® (output, and inputs for audio recording) on Windows, ALSA (and PipeWire / PulseAudio through it) on Linux, Core Audio on macOS; no JACK yet |
| Audio drivers | 🚧 | WASAPI (shared and exclusive) and ASIO® (output pairs, and inputs for audio recording) on Windows; the sound server (PulseAudio, or PipeWire through it), ALSA or JACK (written, not yet tried against a running server) on Linux; Core Audio on macOS |
| Platforms | 🚧 | Windows 10 / 11, Linux (X11, and Wayland through XWayland) and macOS 11 or newer; macOS is supported at the same level as Linux |
| Look and themes | 🚧 | Lemon and Citrus (formerly Classic) skins; 25 built-in themes, your own themes and `.flstheme` files colour either skin, with live adjustments and a colour picker; Lemon plugin editors in the Lemon design only |
| Settings | 🚧 | Every page works: MIDI, Audio, Recording, General, File, Plugins, Theme, Project and Info |
| Audio recording | 🚧 | Armed mixer tracks record into the playlist at their record source; one-click audio recording into the playlist or the audio editor, from ASIO or system inputs; Tesla records what reaches its mixer slot |
| Settings | 🚧 | Every page is there: MIDI, Audio, Recording, General, File, Plugins, Theme, Project and Info. About 14 controls are still greyed, and 11 are saved but nothing reads them yet |
| Audio recording | 🚧 | Armed mixer tracks record into the playlist at their record source; one-click audio recording into the playlist or the audio editor, from ASIO or system inputs; Tesla records what reaches its mixer slot. Not yet: loop-record passes for audio, take lanes |
| Audio editing | ✅ | Tesla, the audio editor and recorder after FL's Edison: a mixer effect (and VST3 / CLAP plugin) with markers, regions, destructive edits and tools; a project's Edison slots open in it |
| Plugin delay compensation | 🚧 | Plugins' reported delays and the mixer tracks' latency settings, in playback and exports; the settings are edited from the mixer |

Expand Down
35 changes: 30 additions & 5 deletions docs/alpha-checklist.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,9 @@ Systems a fully functional DAW can't ship without.
mixer menu's Arm and Disarm selected track(s) and Disk recording ▸ Auto-create audio clips work
- [x] **Input monitoring.** A track's input plays through it while it is armed, or always, per its Monitor external
input setting (Off / When armed / On), also while stopped (#182)
- [x] **Automation recording into clips.** Every automatable control records into the pattern, as in the original,
and patterns play those points; the event editor's Turn into automation clip makes a clip of them
- [x] **Automation recording.** Channel, mixer, tempo and plugin controls record into the pattern, as in the original,
which records nothing into clips either, and patterns play those points; the event editor's Turn into automation clip
makes a clip of them. Not recorded yet: send levels, the swing knob, the rack's mixer box and LED, the pitch knobs
- [x] **Automation clip LFO and min / range.** The clip channel's MIN / MAX knobs set its range and its LFO
(switch, mode, amount, speed, tension, skew, pulse width, its own envelope) plays as the original's, in the clip's
channel window; files keep every LFO field
Expand Down Expand Up @@ -100,7 +101,8 @@ Greyed-out controls and partial features. These can land alongside the blockers.
- [x] **Undo for a plugin editor's own changes.** Parameters moved in a plugin's window and presets loaded from its
title bar or dropped on it are one step each; a preset's undo brings back the state, the preset and the name
- [x] **Undo for mixer track commands.** Routing, names, colours, resets, effect slots, audio input / output and
latency settings, adding, moving, deleting and trimming tracks. Mute and solo make no step, as in FL Studio
latency settings, adding, moving, deleting and trimming tracks. Mute and solo make no step (FL Studio's change log
says it gave them undo in 24.2; not measured)
- [x] **Undo for the remaining edits.** A generator inserted higher up the rack, Replace, project info and the
timebase are each one step
- [x] **Mixer right-click menus.** None greyed out but Compensate for master latency, greyed in the original too
Expand All @@ -112,10 +114,13 @@ Greyed-out controls and partial features. These can land alongside the blockers.
native window of its own), and last Assign to new / Unassign from Audio track(s) and Select ▸ Channels and playlist
tracks routed to this track (audio tracks, [track_links.rs](../crates/os-app/src/track_links.rs)) were enabled.
Scaling ▸ is greyed for a slot without a hosted plugin, "(no saved states)" when none is saved. Not counted: the
layout combo's seven other layouts ([mixer.rs](../crates/os-app/src/mixer.rs))
layout combo's seven other layouts ([mixer.rs](../crates/os-app/src/mixer.rs)). Still greyed as of 2026-11-08: the
latency menus' Adjust position of recorded audio, Set from, Delay audio output and Bypass track latency compensation,
and Override global mapping... on the mixer knobs
- [x] **Playlist right-click menus.** None greyed out since 2026-10-30: the last five, the picker's Change icon and
the plugin window's Link all parameters..., Change icon..., Save channel state as... and Browse channel states, work
as Lemon Studio's design (Change icon is kept for the session only)
as Lemon Studio's design (Change icon is kept for the session only). This counts greyed entries only: entries of the
original that Lemon Studio does not have are left out of these menus
([playlist.rs](../crates/os-app/src/playlist.rs), [channel_states.rs](../crates/os-app/src/channel_states.rs))
- [x] **Channel rack right-click menus.** 6 of the rack's own entries greyed out on 2026-11-02, counted entry by
entry after 29 more were enabled (Receive notes from ▸ Unlock and Computer keyboard, Switch auto-bypass for all
Expand Down Expand Up @@ -190,6 +195,26 @@ Greyed-out controls and partial features. These can land alongside the blockers.
- [x] **ASIO output pairs.** Every track has an output menu with the pairs of the driver's first 16 outputs, and the
master plays on the pair chosen for it (#182)

## Found by the parity audit

Found on 2026-11-08 by an audit of the code against FL Studio 26.1.7. They wait on a decision about whether they hold up
the alpha; the larger gaps it found are on the roadmap.

- [ ] **Consolidate and Export all playlist tracks leave out plugins.** Both render without hosted instruments and
effects, so plugin channels come out silent; Consolidate still mutes the source clips
([playlist.rs](../crates/os-app/src/playlist.rs))
- [ ] **The playlist's bars are always 4 beats.** Its bars, ruler and Bar snap ignore the project's time signature and
time signature markers
- [ ] **Menus show keys that do something else.** The playlist's ▸ Select menu (Ctrl+Enter, Shift+C), the mixer track
menu (Ctrl+E, Shift+E) and PATTERNS Clone (Shift+Ctrl+C, which has no handler)
- [ ] **New or cloned channels vanish under a group filter.** They join no group, so they stay hidden until the filter
changes
- [ ] **ADD ▸ Automation clip can't be linked.** Nothing in the app can give the new clip a target, so it drives nothing
- [ ] **FL plugins with no Lemon version aren't reported.** Their channels play silent and their slots pass dry, but the
missing-files box doesn't list them
- [ ] **Export's Resampling choice doesn't reach Lemon Sampler channels.** Only the engine's own voices and the
converter after the mix use it

## After the alpha

Left out of the alpha on 2026-11-02; each stays open here until it is done.
Expand Down
Loading
Loading