Every clip placed in an arrangement’s playlist is one playlist item. An arrangement’s playlist items event (233) holds them all, as 88-byte records with nothing between them. Bytes 24 to 31 hold the clip’s visible window in ticks. See Clip window and Record size.
Record
Every number is little-endian. Positions and lengths are in ticks.
| Offset | Size | Type | Name | Description |
|---|---|---|---|---|
| 0 | 4 | u32 | position | Where the item starts in the playlist, in ticks. |
| 4 | 2 | u16 | pattern_base | Always 20480. See What an item plays. |
| 6 | 2 | u16 | item_index | What the item plays: a pattern or a channel. |
| 8 | 4 | u32 | length | The item’s length, in ticks. |
| 12 | 2 | u16 | track | The track the item sits on, counted backwards. See Track numbers. |
| 14 | 2 | u16 | group | The item group. |
| 16 | 2 | bytes | unknown | Unknown. Usually 78 00. |
| 18 | 2 | u16 | item_flags | Item flags. Usually 64. |
| 20 | 4 | bytes | unknown | Unknown. Usually 40 64 80 80. |
| 24 | 4 | u32 | window_start | Where the visible part of the clip starts, in ticks. See Clip window. |
| 28 | 4 | u32 | window_end | Where the visible part of the clip ends, in ticks. |
| 32 | 4 | u32 | clip_id | A clip ID. Read by DawVert. |
| 36 | 4 | f32 | fade_in | The clip’s fade-in. Read by DawVert. |
| 40 | 4 | f32 | fade_in_tension | The shape of the fade-in. Read by DawVert. |
| 44 | 4 | f32 | fade_out | The clip’s fade-out. Read by DawVert. |
| 48 | 4 | f32 | fade_out_tension | The shape of the fade-out. Read by DawVert. |
| 52 | 4 | f32 | volume | The clip’s gain. Read by DawVert. |
| 56 | 4 | bytes | fade_flags | Flags for the fades. Read by DawVert. |
| 60 | 20 | bytes | unknown | Unknown. Added in FL Studio 2024 and 2025. |
| 80 | 8 | bytes | unknown | Unknown. New in FL Studio 2026, giving 88-byte records. |
Bytes 32 to 59 came in with FL Studio 21, whose changelog adds “fade in, fade out and gain to audio clips” (20.99 beta 3). The names and types above are DawVert’s reading of FL Studio 21 files, not confirmed by Image-Line, and they have not been checked here against FL Studio 2026 files.
Clip window
In earlier files, bytes 24 to 31 held start and end offsets, read as 32-bit floats for audio clips. In FL Studio 2026 they are two whole numbers of ticks: where the visible part of the clip starts and where it ends. The flpkit reader decodes them this way and reports that FL Studio 2026 works out the clip’s length from this window.
Record size
A comment on a proposed change to PyFLP (pull request 205), about FL Studio 26.1.1, reports 8 more bytes than the 80-byte records of FL Studio 2024 and 2025, and the flpkit reader lists 88 bytes for FL Studio 2026 as “decoded exactly”. What the last 8 bytes hold is not known.
The length of the event does not always say which size it holds. A playlist items event of 17,600 bytes is both 220 records of 80 bytes and 200 records of 88 bytes. So choose the record size from the version string in the project events, not from the length: a major number of 26 or more means 88-byte records.
What an item plays
An item plays either a pattern or a channel’s clip, such as an audio or automation
clip. The item_index tells them apart by comparing it with
pattern_base, which is always 20480:
- Greater than 20480: a pattern. The pattern index is
item_indexminus 20480. - 20480 or less: a channel. The value is the channel index.
Track numbers
The track field counts down from the last track. PyFLP treats every
version from 12.9.1 on as having 500 tracks per arrangement, so subtract the field from
499 to get the track:
track index = 499 − track
So the first track, index 0, is stored as 499. flpkit, which was tested on FL Studio 2026 files, reads the track the same way, counting from 1 as 500 minus the field.