Introduction
A channel preset is what FL Studio saves when a channel of the channel rack is saved as a preset: its name and colour, its volume, pan and pitch, its envelopes and filter, and either the sample it plays or the instrument plugin it hosts with that plugin’s state. Loading it into another project creates the channel again.
The file is an FLP project cut down to one channel: the
FLhd and FLdt chunks of an
FLP file, with the file type in the header set to
32 and an event stream that holds one channel and no patterns, playlist or mixer.
These pages are checked against 649 channel presets with different contents, saved by FruityLoops 2.2.0 to FL Studio 5.0.1 (the 3x Osc and TS404 channel presets and the sample instruments of the FL 3 and FL 5 folders), read with the FruityLoops 1 to FL Studio 5 layout, and against 34 channel presets from PyFLP’s test assets, saved by FL Studio 20.8.4 and read with the FL Studio 20 layout (UTF-16 text). Those add the events 159 (build), 28 (licensed), 37, 97, 155, 229 (level adjustments) and 228 (tracking) to the list below, and a name in event 192 is UTF-16.
Structure
The header is 14 bytes: FLhd, the length 6, the file type
20 00 (32), the channel count and the PPQ. The data chunk follows. Its
events, in the order every file examined has them:
| Event | Name | Holds |
|---|---|---|
| 199 | Version | The FL Studio version as text, such as 2.5.4. |
| 64 | New channel | Starts the channel; the value is its index in the project it came from. |
| 21 | Channel type | 0 for a sampler, 2 for a native plugin (the two values in the files dumped for this page). |
| 5, 6, 7, 4 | MIDI note, patch, bank and channel | In the sampler example below; the 3x Osc preset dumped has none. |
| 201, 212, 213 | Plugin name, wrapper and state | In plugin channels: the plugin’s internal name, the wrapper settings and the plugin’s saved state. |
| 192 | Channel name | The name shown on the channel button. |
| 128, 0, 209, 138, 139, 89, 69, 86, 71, 83, 74, 75, 76, 85, 131, 70, 140, 22 | Channel settings | Plugin colour, enabled flag, delay, levels, filter and the rest of the channel’s fixed settings. |
| 219, 220, 221, 215 | Channel data blocks | Levels, pitch, parameters and the other blocks of settings. |
| 218 × 5 | Envelope and LFO | Five blocks of 58 bytes each, one per target: panning, volume, mod X, mod Y and pitch. |
| 143, 20, 135 | Channel settings | The last of the fixed settings. |
| 196 | Sample path | The sample a sampler channel plays, as a path from FL Studio’s data folder. Last in the file; absent in plugin channels. |
The order is that of the files examined, not a rule; a reader should handle each event by its ID, as for an FLP project. Each event’s value is laid out as on the FLP event reference for the layout in use. The files seen have between 37 and 43 events.
The tree view of this site’s explorer adds a Preset section above the project tables: the kind, the FL Studio version, the plugin, the sample, and which FLP layout read the file. The channel’s own settings then appear in the same tables as for a project, with one row for the one channel.
Worked example
The start of Open HH.fst, a sampler channel from the FL 3 drums folder,
537 bytes long:
00000000 46 4c 68 64 06 00 00 00 20 00 04 00 60 00 FLhd, length 6, type 32, 4, PPQ 96
0000000e 46 4c 64 74 03 02 00 00 FLdt, length 0x0203 = 515
00000016 c7 06 32 2e 35 2e 34 00 199 version "2.5.4"
0000001e 40 00 00 64 new channel 0
00000021 15 00 21 channel type 0 (sampler)
00000023 05 ff 06 ff 07 ff 04 09 5, 6, 7 MIDI 255 (none); 4 MIDI channel 9
0000002b c0 08 4f 70 65 6e 20 48 48 00 192 name "Open HH"
The last event, at the end of the file, is event 196 with the sample path
\Instruments\shapes\ml_shapes\ml_whitenoise.wav: the preset stores the
path, not the audio.
Not described
This page is partial. What it leaves out, and what the explorer does not do:
| Item | Reference | Viewer |
|---|---|---|
| Unknown events and settings | The meaning of event 37 and of the fixed settings the FLP pages list as unknown is not given. | Shows them as numbers or bytes. |
| Plugin states that are not native layouts | The state of plugins such as Sytrus is not described. | Shows the state (event 213) as bytes; native layouts such as 3x Osc are decoded. |
| Versions 6 to 11.4 and FL Studio 21 on | No preset from these versions was seen. Their layout is assumed to follow the FLP pages for the version. | Reads them with those FLP layouts; unchecked on a real channel preset. |
| Header channel count | Explained only as PyFLP defines it (the rack size of the source project); not checked beyond the values seen. | Shows the number; does not use it. |
| Editing | Not applicable. | Read-only; no preset is written or changed. |
Also used for
- OpenFst transducer – OpenFst’s binary finite-state transducer: a header and symbol tables, then the states.
Variants
- FL Studio channel preset – file type 32: one channel with its sample or plugin
- FL Studio plugin preset – file type 48: one plugin’s name and saved state
- FL Studio mixer preset – file type 64: one mixer insert and its effect
Links
Software
- FL Studio – Image-Line’s music production software, which saves and loads channel presets (Windows, macOS)
Reference
- FLP event reference – the layout of every event a preset uses, for FruityLoops 1 to FL Studio 5