Releases: pongasoft/jamba
Version 3.2.1
- fixed
jamba.sh
script to handle filename with white spaces and install audio unit before validation (validation tool unfortunately works from an installed component, not a file...)
Version 3.2.0
- added audio unit validation to
jamba.sh
script (jamba.sh validate-au
) which runs theauvaltool
utility on the audio unit plugin - added switch container view to handle tab like switching (check
Views::SwitchContainerView
) - added (optional) image for text buttons (
Views::TextButtonView
) - added (optional) disabled state for momentary buttons (
Views::MomentaryButtonView
) - added discrete button view (a button which is "on" only when the backing discrete parameter matches the
step
value). This button can be used for radio groups, tabs, etc... (checkViews::DiscreteButtonView
)
WARNING
The following changes are potentially breaking changes
- There is a small potentially breaking API change with function
Views::createCustomView
(defined inViews/CustomViewCreator.h
). Check commit. The function takes an additional 2 parameters which can be safely ignored if you don't need them.
Version 3.1.0
- added ability to conveniently register a global key hook (check
Views::registerGlobalKeyboardHook
) - parameters now copy the provided strings (title, short tile and units) so that they no longer have to be static and for example can be computed
- added convenient methods to
AudioBuffers
andChannel
(copyFrom
andforEachSample
). Definedconst
and nonconst
versions. - added Step Button view which is a button that increment/decrement a parameter by a fixed amount when clicked. Another amount (tied to shift click) can be provided.
Version 3.0.2
- fixed minor bugs
Version 3.0.1
- Use shallow cloning to avoid downloading the (unused) project history
Version 3.0.0
-
This is a major release with many changes (a few breaking APIs)
-
Added
TextViewButton
on which you can register aonClickListener
or implementonClick
. Also handles disabled state. -
Added
ScrollbarView
which implements a scrollbar tied to 2 parameters (offset and zoom) -
Added
CustomController
to implement a custom controller tied into Jamba (access to Vst/Jmb parameters and state) -
Added ability to easily switch to a new view (
GUIController::switchToView
) -
Added
GUIJmbParameter::updateIf
to update the value in place when necessary -
Added callback APIs to
GUIParamCxAware
registerCallback<bool>(fParams->fMyParam, [this] (GUIVstParam<bool> &iParam) { flushCache(); });
-
Added registering callbacks and parameters on a view without inheriting from it (can be used from controllers
verifyView
method):auto button = dynamic_cast<Views::TextButtonView *>(iView); if(button) { auto callback = [] (Views::TextButtonView *iButton, GUIJmbParam<SampleData> &iParam) { iButton->setMouseEnabled(iParam->hasUndoHistory()); }; fState->registerConnectionFor(button) ->registerCallback<SampleData>(fState->fSampleData, std::move(callback), true); }
-
Added optional arguments to
Parameters::vst<>()
(resp.Parameters::jmb<>()
) that get passed through the converter (resp. serializer) allowing syntax likefPlayModeHold = vst<BooleanParamConverter>(1201, // param ID STR16("Play Mode"), // param title STR16("Trigger"), STR16("Hold")) // BooleanParamConverter args
-
Requires C++14
-
Added
EnumParamConverter
for Vst parameters backed by an enum -
Added
Range
concept -
Refactored
CustomViewCreator
code to simplify writing individual attributes. IntroducedMarginAttribute
,RangeAttribute
, andGradientAttribute
WARNING
The following changes are potentially breaking changes
-
Refactored
Lerp
class to deal with type parameters differently (TFloat
for math precision,X
for type of x,Y
for type of y). IntroducedSPLerp
(single precision) andDPLerp
(double precision) as well as several convenient methods. Example:// this will interpolate (SP=single precision) // X -> the time (long) from the range [0, fFadeDuration] // Y -> to the alpha (uint8_t) range [255, 0] (opaque -> transparent) // Note that although X and Y types are integer flavors, the interpolation will use floats // and the value returned will be cast to uint8_t fColor.alpha = Utils::mapValueSPXY<long, uint8_t>(iTime, 0, fFadeDuration, 255, 0);
-
GUIParamCxAware
(which is the class used for registering parameters) has been simplified withregisterParam
methods (when the type is known). -
Moved
PluginAccessor
into its own header file -
Removed
CustomViewInitializer
Version 2.1.2
AudioBuffers
now properly handles null buffers- Fixed issue with non Xcode build (Xcode generator is only required for audio unit building) and allow building with CLion
Version 2.1.1
- Fixed #4: Generate AU Plugin Manufacturer code from name instead of company
Version 2.1.0
- Implemented #1: Eliminate resource declaration duplication
- Implemented #2: Optionally generate audio unit wrapper
- Implemented #3: Make VST2 support truly optional
- Upgraded to cmake 3.12
- Consolidated dev scripts into a single
jamba.sh
(respjamba.bat
) script - Uses
Xcode
as the cmake generator on macOS
Version 2.0.2
- Updated license terms