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

Per-host quirks for Steinberg Cubase + Nuendo (treated identically). 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_cubase (HostQuirks &q, HostVersion v)
 Populate Cubase-specific (and Nuendo-as-Cubase) host-gated flags onto q based on v.

Detailed Description

Per-host quirks for Steinberg Cubase + Nuendo (treated identically).

Cubase 10 vintage — DAW-quirks rows 1, 2, 3 (macOS plan item 5.2):

  • row 1: async window resize after IPlugView::onSize() returns.
  • row 2: parameter automation ordering — value-set must precede gesture-edit notification within the same dispatch cycle.
  • row 3: integer-rounded setContentScaleFactor() requires plugin-side residual correction on fractional-DPI displays.

Cubase 9 vintage — DAW-quirks row 4 (macOS plan item 5.3):

  • row 4: state-blob stream reports the wrong size; the adapter must validate the actual read count rather than trusting the host-reported size.

Cubase 13+ vintage — 2026-05-26 iPlug2-audit batch (Pulp #3047):

  • MIDI CC parameter IDs must stay stable across project reloads; Cubase 12 was forgiving but Cubase 13 binds automation lanes to the IDs at save-time. Plug-ins that synthesize CC IDs from dynamic state need a stable-hash derivation. Speculative tier — per-host header + isolation test in place, in-DAW bench evidence still pending.

Version dispatch: Cubase 10 quirks fire on major >= 10; the Cubase 9 state-blob quirk only fires on the 9.x line (NOT on Cubase 10+) since 10 fixed the underlying stream bug; the Cubase 13 MIDI CC ID stability quirk fires on major >= 13 only. Cubase HostVersion{0,0,0} (unknown) intentionally leaves every band off — the adapter falls back to spec-compliant defaults.

Nuendo is treated as Cubase in the dispatch table (make_quirks_for maps HostType::Nuendo here) — Nuendo 10 inherits the Cubase 10 row, Nuendo 8/9 inherits Cubase 9's row.

Reference-Lineage: independent reproducer=macos-plan-item-5.2/5.3 docs=https://steinbergmedia.github.io/vst3_dev_portal/pages/Technical+Documentation/Technical+Documentation.html