A C++ header-only library providing little helper classes for developing vst3 plug-ins.
- c++17 compatible compiler
- vst3 sdk
You can either add a header include directory pointing to the 'include' repository path or,
if you use CMake, simply add this directory to CMake with add_subdirectory and add a target
dependency to your own target.
add_subdirectory("path/to/vst3utils" ${PROJECT_BINARY_DIR}/vst3utils)
add_target_dependency(myTarget
PRIVATE
vst3utils
)- Version 1.2.0 [03/22/2025]
- added unit tests
- added transport_state_observer
- added event dispatcher helper
- added observable template
- added RAII memory buffer object
- added byte_order_stream.h
- added dB to gain functions
- Version 1.1.0 [08/03/2023]
- added messages.h and parameter_changes_iterator.h
- a few additions else where, see git commit history
- Version 1.0.0 [07/16/2023]
- initial release
vst3utils::buffer- RAII memory buffer object with support for aligned memory
vst3utils::byte_order_ibstream- an adapter to read/write byte ordered data to an IBStream
vst3utils::enum_array- a std::array using an enum for accessing its elements
vst3utils::event_iterator- a c++ compatible forward iterator for
Steinberg::Vst::Event
- a c++ compatible forward iterator for
vst3utils::dispatch_event- function to dispatch a
Steinberg::Vst::Event
- function to dispatch a
vst3utils::message- an adapter for Steinberg::Vst::IMessage
vst3utils::attribute_list- an adapter for Steinberg::Vst::IAttributeList
contains functions to convert from normalized to plain and back
vst3utils::normalized_to_plainvst3utils::normalized_to_stepsvst3utils::normalized_to_expvst3utils::plain_to_normalizedvst3utils::steps_to_normalizedvst3utils::exp_to_normalizedvst3utils::db_to_gainvst3utils::gain_to_db
vst3utils::observable- template to observe an object by multiple listeners without direct dependency
vst3utils::parameter_changes_iterator- a c++ compatible forward iterator for
Steinberg::Vst::IParameterChanges
- a c++ compatible forward iterator for
vst3utils::parameter_value_queue_iterator- a c++ compatible forward iterator for
Steinberg::Vst::IParamValueQueue
- a c++ compatible forward iterator for
contains structs and functions to declare parameters at compile time
example:
static constexpr std::array<description, 4> param_desc = {{
{range_description (u"volume", -12, linear_functions<-60, 0> (), 1, u"dB")},
{range_description (u"cutoff", 2000, exponent_functions<80, 22050> (), 0, u"Hz")},
{range_description (u"resonance", 50, linear_functions<0, 100> (), 0, u"%")},
{list_description (u"filter type", 0, strings_filter_types)},
}};vst3utils::throttled_parameter_updater- a throttling realtime parameter updater
vst3utils::parameter- extension to the parameter class of the vst3 sdk which uses a parameter description
vst3utils::smooth_value- a value object that smoothly changes from one value to another
vst3utils::copy_utf16_to_asciivst3utils::create_utf16_from_asciivst3utils::copy_ascii_to_utf16
vst3utils::transport_state_observer- helper for handling transport state changes
//------------------------------------------------------------------------
/* This source code is free software. It comes without any warranty, to
* the extent permitted by applicable law. You can redistribute it
* and/or modify it under the terms of the Do What The Fuck You Want
* To Public License, Version 2, as published by Sam Hocevar. See
* http://sam.zoy.org/wtfpl/COPYING for more details. */
//------------------------------------------------------------------------