Introduction
A plugin preset is the saved state of one plugin in FL Studio: the settings of an instrument such as Sytrus or SimSynth, or of an effect such as Fruity Reeverb, written when the plugin’s preset menu saves one. It is the most common kind of .fst file: most of the Sytrus patch packs and FX presets are plugin presets.
The file is an FLP project reduced to the
plugin: the FLhd and FLdt chunks, a file type of 48 in the
header, and after the version event only the three events that describe a plugin.
There is no channel and no mixer insert around it.
These pages are checked against 1,214 plugin presets with different contents, saved by versions 2.5.4 to 5.0.1, for Sytrus, SimSynth, Wasp, Fruity Reeverb, Fruity Flanger, Fruity Phaser, the 7 band EQ and others, read with the FruityLoops 1 to FL Studio 5 layout, and against 10 plugin-state files in PyFLP’s test assets (FL Studio 11.5.13, 12.5.0.45, 20.8.4 and 20.9.1) that use the 11.5 and 20 layouts. File type 48 is a native plugin on a channel or insert slot; PyFLP gives 49 to a VST instrument’s plugin events and 50 to a VST effect’s. No file of type 49 or 50 was available, and this viewer reads them as plugin presets.
Structure
The header is the 14 bytes of any FLP file with the file type 30 00 (48).
The events that follow are, in 1,208 of the files examined, exactly these four:
| Event | Name | Holds |
|---|---|---|
| 199 | Version | The FL Studio version as text, such as 4.5.0. |
| 201 | Plugin internal name | The plugin’s own name, as text with a zero at the end: Sytrus, SimSynth, Fruity Chorus. It says which plugin the state belongs to. |
| 212 | Plugin wrapper | The settings of the wrapper that hosts the plugin: its place in the mixer, flags, page and window. 54 bytes in the files dumped, 52 of them data. |
| 213 | Plugin state | The plugin’s saved state, whose layout belongs to the plugin. It is what makes the file large: 37,839 bytes for one Sytrus patch, 84 for the 3x Osc channel preset Bell, 48 for a Fruity Chorus mixer preset. |
Six of the old plugin presets have a different number of events. In FL Studio 11.5 and
later the version is followed by more events: 28 (licensed), 155 (icon) and 128 (colour) appear around the plugin events,
and the FL Studio 20 files add 159 (build) and 37, for example 199 159 28 37 201 212 155 128 213
in FL Studio 20. The explorer shows every event in the tree.
The state of these native plugins is decoded field by field, with values equal to what PyFLP reads from the same files (for example Fruity Send: pan 0, dry 256, volume 256, send to −1): BooBass, Fruit Kick, Fruity Balance, Blood Overdrive, Center, Fast Dist, Send, Soft Clipper, Stereo Enhancer, Plucked! and Soundgoodizer, and Fruity Wrapper (VST) as its chunks. The state of every other plugin, such as Sytrus, is shown as bytes: no source describes it.
The explorer’s Preset section for these files lists the version, the plugin and the size of the state, then a table of the plugin events, each linked to its place in the tree.
Worked example
The start of FX - sea and wind.fst from the Sytrus pack of FL Studio 5,
37,936 bytes long:
00000000 46 4c 68 64 06 00 00 00 30 00 05 00 60 00 FLhd, length 6, type 48, 5, PPQ 96
0000000e 46 4c 64 74 1a 94 00 00 FLdt, length 0x941A = 37,914
00000016 c7 06 34 2e 35 2e 30 00 199 version "4.5.0"
0000001e c9 07 53 79 74 72 75 73 00 201 plugin "Sytrus"
00000027 d4 34 ... 212 wrapper, 52 bytes
0000005d d5 cf a7 02 ... 213 state; length bytes CF A7 02 =
0x4F + (0x27 << 7) + (2 << 14) = 37,839
Lengths in the event stream are variable-length numbers: seven bits a byte, low part first, the top bit set while more bytes follow. The data chunk’s length, 37,914, makes the chunk end at the end of the file.
Not described
This page is partial. What it leaves out, and what the explorer does not do:
| Item | Reference | Viewer |
|---|---|---|
| Plugin states other than the native layouts named above | Not described: Sytrus, SimSynth, Wasp and the other Image-Line plugins in the old presets, and any third-party VST state beyond the wrapper’s chunks. | Shows the state as bytes. |
| Wrapper settings (event 212) | Only what the FLP pages list. | Shows the insert and slot; the rest is bytes or as the FLP pages decode it. |
| File types 49 and 50 | Named from PyFLP; no file of either was seen. | Reads them as plugin presets. |
| Event 37 and other unknown events | Meaning unknown. | Shows them as numbers or bytes. |
| Versions 6 to 11.4 and FL Studio 21 on | No preset from these versions was seen; the layout is assumed from the FLP pages. | Reads them with those layouts; unchecked on a real plugin preset. |
| Header channel count | Explained only as PyFLP defines it (the rack size of the source project). | Shows the number; does not use it. |
| Editing | Not applicable. | Read-only. |
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 plugin presets (Windows, macOS)
Reference
- FLP plugin events – the wrapper and state events as an FLP project holds them