aax
無料Optional AAX support for Pulp, including developer-supplied Avid SDK setup, CMake enablement, DigiShell/AAX Validator workflows, and local AAX builds on macOS or Windows.
日本語の概要は準備中です。原文の説明を表示しています。
Optional ARA support for Pulp, including developer-supplied ARA SDK setup, CMake enablement, adapter companion APIs, validation, and ARA-aware plugin implementation guidance.
インストール方法を見るインストールする前に、エージェントに与えられる指示の中身を確認できます。
Use this when working on Pulp's optional ARA (Audio Random Access) support or when guiding users who want to build and validate ARA-enabled plugins.
kARAAPIGeneration_2_3_Final = 6)tools/deps/audit.py --strict must stay
green.DEPENDENCIES.md lists ARA SDK under Optional Developer-Supplied Vendor
SDKs exactly because of the companion-API carve-out in CLAUDE.md.main.The SDK is public on GitHub. Clone with submodules so ARA_API + ARA_Library + ARA_Examples all resolve:
git clone --recurse-submodules --depth 1 \
https://github.com/Celemony/ARA_SDK.git \
external/ara-sdk
After cloning, verify:
ls external/ara-sdk/ARA_API/ARAInterface.h # core C API
ls external/ara-sdk/ARA_Library/PlugIn/ARAPlug.h # C++11 helpers
Never commit external/ara-sdk/. The external/ prefix keeps it out of
cmake --install exports and the repo audit.
Two CMake knobs:
cmake -S . -B build \
-DPULP_ENABLE_ARA=ON \
-DPULP_ARA_SDK_DIR=/absolute/path/to/external/ara-sdk
PULP_ENABLE_ARA=ON without PULP_ARA_SDK_DIR fails fast with a clear
error. A missing / wrong path fails on ARAInterface.h existence check
before any compilation starts.
When enabled, pulp-format is built with PULP_HAS_ARA=1 and the ARA SDK
include directory added to its PUBLIC include path. Plugin TUs that want
to implement ARA include <ARA_API/ARAInterface.h> directly.
Quick smoke:
cmake --build build --target pulp-test-ara
./build/test/pulp-test-ara
# Expect: ara_sdk_compiled_in() → true, ara_sdk_generation() >= 6
A build with PULP_ENABLE_ARA=OFF (the default) must still pass the same
tests — ara_sdk_compiled_in() returns false and ara_sdk_generation()
returns 0 without failing.
Processor::create_ara_document_controller() to return a
concrete AraDocumentController subclass.<pulp/format/ara/types.hpp>
(AraAudioSource, AraPlaybackRegion, etc.). These are
SDK-independent so the plugin TU never pulls the SDK unless it wants
to implement a content reader that inspects ARA's C structs directly.A real ARA::ARAFactory is surfaced out of core/format/src/ara_factory.cpp
whenever PULP_HAS_ARA is defined. Hosts reach it via the adapter-specific
hook listed below — the integration code is done on the adapter side, so
plugin authors only subclass AraDocumentController.
Already end-to-end wired: clap_plugin::get_extension(kClapAraFactoryExtension)
returns the live factory. Example: core/format/src/clap_adapter.cpp
(search for kClapAraFactoryExtension).
Validate with ./build/tools/scan-worker/pulp-scan-worker path/to/MyPlug.clap
once ARA is initialised.
The VST3 adapter wires PulpVst3Processor::initialize(FUnknown*) to query
IPluginFactory3::setHostContext for the attribute key
kVst3AraFactoryContextKey. The plug-in side does nothing beyond subclassing
AraDocumentController; the adapter binding is in
core/format/src/vst3_adapter.cpp.
The AU adapter exposes kAuAraFactoryPropertyKey as the KVO property
audioUnitARAFactory on PulpAudioUnit. Logic reads it on scan, caches the
factory, and binds a document controller per loaded plug-in instance.
# Build with the SDK on:
cmake -S . -B build -DPULP_ENABLE_ARA=ON -DPULP_ARA_SDK_DIR=$PWD/external/ara-sdk
cmake --build build --target pulp-test-ara
# Run the live-factory tests (guarded on PULP_HAS_ARA):
./build/test/pulp-test-ara '[factory]'
The ABI-conformance test asserts that the factory's highestSupportedApiGeneration
is kARAAPIGeneration_2_3_Final, that createDocumentControllerWithDocument
returns a non-null ARADocumentControllerInstance, and that getFactory()
round-trips back to the same factory pointer.
AraPlaybackRegion matches ARAPlaybackRegionProperties; adapters
convert to samples only at explicit sample-domain APIs.docs/reference/host-thread-rules.md.host_supports_ara() currently returns false even with the SDK
compiled in until the format-adapter companion factories are wired.PULP_HAS_ARA is on, ara_companion_factory_for() returns a real
ARA::ARAFactory. Its createDocumentControllerWithDocument returns
a valid ARADocumentControllerInstance, but every call on the
controller interface is a no-op until plug-ins override them. Hosts
see a working factory; they just cannot edit audio yet.planning/production-readiness/06-ara.mdplanning/production-readiness/STATUS.md (ARA / workstream 06 section)Path map: tools/scripts/skill_path_map.json. Add entries for
core/format/src/ara*, core/format/include/pulp/format/ara*,
external/ara-sdk (so non-committed work still triggers skill sync
checks on related source changes).
まだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
Optional AAX support for Pulp, including developer-supplied Avid SDK setup, CMake enablement, DigiShell/AAX Validator workflows, and local AAX builds on macOS or Windows.
日本語の概要は準備中です。原文の説明を表示しています。
Configure, implement, and test Pulp's optional desktop Ableton Link tempo-sync adapter while preserving the developer-supplied SDK, licensing, realtime, latency-compensation, and no-install boundaries.
日本語の概要は準備中です。原文の説明を表示しています。
Maintain Pulp's installed design-time agent capability manifest and public-surface ledger. Use when adding, removing, renaming, or materially changing public audio, MIDI, signal, timebase, or sequence APIs; registering a new algorithm for generators; changing capability support or deprecation state; or repairing agent-capabilities freshness, schema, fingerprint, tombstone, or installed-SDK tests.
日本語の概要は準備中です。原文の説明を表示しています。
Android platform development for Pulp — NDK cross-compilation, Oboe audio, Dawn/Skia GPU rendering, JNI bridge, touch interaction, emulator workflows, and end-to-end smoke validation. Covers build, deploy, debug, and the gotchas discovered during bringup.
日本語の概要は準備中です。原文の説明を表示しています。
The measurement surface for ALL Pulp DSP and audio-pipeline work — read it BEFORE writing or gating DSP, not only when something already sounds wrong. Covers the C++ harness (signal generators, metrics, assertions, RenderScenario, contracts), the offline Audio Doctor (magnitude/frequency response, THD/THD+N, phase/group delay), and their Python sibling the Audio Quality Lab (tools/audio/quality-lab — null residual + alignment, LTAS log-spectral distance, spectral flux/centroid, HNR, Theil-Sen drift slope, Kaiser-sinc resampling, license-guarded corpus, regression-net ratchet). TRIGGER on AUTHORING work — "build/design an oscillator/filter/synth/effect", "add a DSP module", "what should the acceptance gate be", "how do I measure aliasing / anti-aliasing / alias floor", "null against a reference", "is this DSP correct", "choose a tolerance", "golden/regression corpus for audio", "measure drift or jitter", "A/B two renders" — AND on DEBUGGING work — "is there sound / no audio / I hear nothing", "does this filter/compressor/synth/delay produce the right signal", "prove the DSP / prove the contract", "measure the frequency response", "what's the THD / is it distorting", "what's the group delay / phase response / measured latency", "magnitude response curve", "render a test tone and assert", "audio regression", "64-frame works but 128 is silent", "sample-rate change pitch-shifted it", "describe what's in this buffer", "audio doctor", "compare before/after a DSP refactor". Reach for this BEFORE hand-rolling any FFT, null test, alias measurement, pitch tracker, or golden-render script — most of it already exists in one of the two lanes. Test/tool layer over HeadlessHost — deterministic, no audio device, no speakers. Off the realtime thread entirely.
日本語の概要は準備中です。原文の説明を表示しています。
Reproduce and debug "only happens in a DAW" audio plugin bugs (cutouts, glitches, parameter-change failures) entirely offline — headless Processor scenes for DSP bugs and a standalone AudioUnit host probe for adapter/host-interaction bugs. Use when a plugin misbehaves in Logic/Live/etc. but unit tests are green.
日本語の概要は準備中です。原文の説明を表示しています。