All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Playback rate control to disksampler
- Node placement options to node creation API commands (
Methcla::NodePlacement) (#63) methcla_world_synth_donefunction to plugin API to notify the engine when processing is finishedoperator booltoMethcla::NodeIdMethcla::Engine::nodeEndedHandlerAPI method returning/node/endednotification handler (#104)ExponentialFadeplugin (METHCLA_PLUGINS_EXPONENTIAL_FADE_URI) tomethcla_plugins_node_controllibrary- Install and export CMake targets;
methcla::methclanow available viafind_package(#123) METHCLA_BUILD_TESTSCMake option, defaults to on when building as top-level project (#122)- CMake presets (
debug,release) and GitHub Actions CI replacing ad-hoc configuration and Travis CI (#118) - Project documentation: CONTRIBUTING guide, architecture overview with Mermaid diagram, OSC API reference, examples README
- Generic RT/NRT shared resource system (#147):
Methcla_ResourceDefplugin API, client-sideResourceIdAPI, OSC commands/resource/newand/resource/free, notifications/resource/ready,/resource/error, and/resource/destroyed, RT-sidemethcla_world_resource_acquire/methcla_world_resource_releaseprimitives, NRT bracketed access viamethcla_world_perform_with_resources, andResourceRef<T>/ResourceDef<R,O>C++ wrappers
- Vendored
zixsemaphore replaced with a native platform implementation (Mach, Win32, POSIX); errors now include the OS error description DummyDriverandRemoteIODrivernow useMultiChannelBufferfor I/O buffer ownership instead of raw pointers;Driver::makeBuffers/freeBuffersremoved (#32)- Dependency management modernised:
FetchContentfor oscpp and googletest; Boost 1.91.0 vendored withmethcla_boostnamespace to avoid symbol collisions (#129) - C++ standard raised to C++17
Driver::Optionschannel and buffer size fields changed frominttosize_t(#80)- Plugin libraries now build as CMake
MODULEtargets; soundfile API plugin selected per platform (#121) - CMake target structure cleaned up: proper
PUBLIC/PRIVATEdependencies,methcla::methclaalias target (#120) - Warning flags scoped per-target via
methcla_target_warnings()(#120)
Methcla_Resourcefrom plugin API: removed argument fromMethcla_SynthDef::construct; renamedmethcla_world_resource_retain/methcla_world_resource_releasetomethcla_world_synth_retain/methcla_world_synth_release- Dead platform code and unused vendored libraries (PNaCl, NaCl) (#127)
- Dead code cleanup:
Resource.hpp(deleted),DSP.h/DSP.c(deleted),ResourceIdAllocatorrenamed toIdAllocatorwith typedefs preserved (#148) - Vendored
tinydirlibrary; replaced withstd::filesystem
- Bus zeroing logic (#102)
- Bug in linked list implementation when adding a node before or after an existing node (#106)
- Rounding, float precision, and type safety issues (#135)
- Implicit
NodeIdconversions broken by explicit constructor (#81) - Missing
#includedirectives causing build failures with GCC 13 and recent Clang
- Function for querying library version (
methcla_version,Methcla::version()) - Function for changing debug logging behaviour (
methcla_engine_set_log_flags,Methcla::Engine::setLogFlags) - ExtAudioFile soundfile API (macOS)
- Split synth creation into
/synth/new(Methcla::Engine::synth) and/synth/activate(Methcla::Engine::activate) - Refactored engine interface: renamed
Methcla::Engine::RequesttoMethcla::Request, removedMethcla::Engine::Bundle;Methcla::Requestnow hasopenBundle/closeBundlefor nested bundle structures - Renamed
Methcla::Engine::freeNodetoMethcla::Engine::free - Moved plugin includes to
<methcla/plugins/*>