Skip to content

v0.1.0-alpha

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 02 Aug 17:06

First public build of NekoSpace Binaural. Windows VST3 (x64) and Standalone.

What it does

  • Places a mono or linked-stereo source at any azimuth, elevation and distance, including
    extreme near field — a voice at the ear rather than merely hard-panned.
  • ITD is geometric, taken from the exact rigid-sphere path per ear, so near-field
    exaggeration emerges instead of being faked.
  • Near Field spans a conventional panner (0 %, 5.6 dB ILD at az −90° / 12 cm) to full
    per-ear geometry (100 %, 24.2 dB).
  • Room: six first-order shoebox reflections, each rendered through the HRTF at its own
    image direction, plus an 8-line FDN late reverb. room.amount = 0 is bit-exact direct.
  • Late-only Voice Duck: the late reverb is held down while the voice speaks and opens
    at the end of a phrase, so a close voice stays close in a live room. Direct sound and
    early reflections are never touched, and the FDN keeps being fed at full level — what
    appears at the end of a line is a tail that was building all along. No threshold to
    set: detection normalises against recent level, so one setting suits a whisper and a
    shout. Measured on the isolated room bus: −13.1 dB during a phrase, −0.7 dB after it.
  • Four HRTF profiles: Analytic A (legacy), Analytic B (default), an experimental measured
    KU100 pack (development builds only), and Custom via the Elevation Lab.
  • Zero-latency direct path; the reported 2 ms is the near-field base delay, so host PDC
    stays correct. Host bypass is delay-compensated.
  • Safety limiter after the output trim, with a gain-reduction meter.

Using it

  • Four macros, not twenty-four numbers. The elevation model is driven by Up, Down,
    Body and Focus; every raw anchor value stays reachable in the Elevation Lab. At 1.00 the
    macros reproduce the default profile bit-exactly, so the simple control is not a
    lossy wrapper around the detailed one.
  • Presets are complete scenes. Each one sets all twelve sound-shaping parameters, so
    the same name always gives the same sound rather than inheriting whatever was set
    before. Grouped as Close, Rooms, Beds and Reference; the Reference pair are diagnostics.
    Output gain, HRTF profile and quality are deliberately left alone — those belong to the
    person, not the scene.
  • JUMP TO moves the source and nothing else, so a room you have built survives an A/B
    of position. This is the one thing a preset cannot do.
  • Built-in manual in English and Japanese, switched from inside the help window. The
    language follows the OS on first run and is stored per user, not per project — opening
    an old session never brings back the wrong language.
  • Double-click any knob to reset it to its default.
  • ROOM BYPASS dims exactly what it silences, so what the switch covers is visible
    rather than something to remember.

Known limitations

  • Elevation is weak. It produces a real, audible change and a mild sense of vertical
    movement, but it is not a dependable cue. See
    elevation-findings.md for the four
    approaches tried and what each measured.
  • The measured KU100 profile is 48 kHz only, is not bundled (CC BY-SA), and requires
    -DNSB_WITH_KU100=ON plus a locally generated pack.
  • Windows only. macOS (VST3 + AU, Universal 2, notarisation) is deferred.
  • No user SOFA import yet.
  • Headphones only. Binaural rendering assumes each ear hears only its own channel;
    over speakers the crosstalk removes the effect. No crossfeed or speaker mode.

Frozen at this release

Per docs/identity.md and
docs/parameter-contract.md, the following
can no longer change without breaking existing projects:

  • Manufacturer code NkSp, plugin code Nksb.
  • Every parameter ID.
  • The option lists of source.mode, quality.mode and hrtf.profile — host automation
    stores a normalised index, which no plugin-side state format can repair. Adding an
    option later requires a new parameter ID.

State schema is 2, and schema 1 remains readable.

Verification

  • 30 JUCE-free DSP acceptance tests (ctest), covering mirror symmetry, distance
    monotonicity, room-zero identity, automation sweeps, block-size invariance, in-place
    processing, reported latency, and the state-format choice-key resolution.
  • pluginval --strictness-level 10, clean.
  • FL Studio (Windows) is the primary acceptance DAW.