Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
fl_studio.hpp File Reference

Per-host quirks for Image-Line FL Studio (macOS plan item 5.7). More...

Go to the source code of this file.

Namespaces

namespace  pulp
namespace  pulp::format
 What the product grants a device: the quota table indexed by capability tier and live thermal state.
namespace  pulp::format::host_quirks

Functions

void pulp::format::host_quirks::apply_fl_studio (HostQuirks &q, HostVersion)
 Populate FL Studio host-gated flags onto q.

Detailed Description

Per-host quirks for Image-Line FL Studio (macOS plan item 5.7).

DAW-quirks rows 13 + 14 (VST3):

  • row 13: FL's Patcher routing layer violates the VST3 activation contract — it can call process() before setActive(true) and can call setBusArrangements() concurrently with process(). The adapter must wrap setActive / process / setBusArrangements in a mutex when FL Studio is detected to prevent state races and undefined-behavior overlap. Cheaper than diagnosing the data race after the fact.
  • row 14: FL's state-blob format diverges enough from reference VST3 that the MemoryStream-shaped reader path fails outright. The adapter must skip that reader and fall through to a tolerant unknown-format reader so FL sessions deserialize cleanly.

Version handling: both quirks have been present across every FL Studio VST3 vintage Pulp encounters (the Patcher contract issue is architectural; the state-blob divergence predates the 20.x window and is still present). apply_fl_studio fires both flags regardless of HostVersion. If a future FL release fixes either, add an is_before(major) guard at that point.

Reference-Lineage: independent reproducer=macos-plan-item-5.7 docs=https://www.image-line.com/fl-studio-learning/fl-studio-online-manual/html/plugins/wrapper.htm