Releases: pongasoft/jamba
Version 5.1.4
Version 5.1.3
- Fixed compilation issue on Windows
Version 5.1.2
- Added support for Apple Silicon / universal build and macOS target deployment (no code change)
- Added (optional)
ARCHIVE_FILENAME
andARCHIVE_ARCHITECTURE
to the mainjamba_add_vst_plugin
CMake api
Migration optional
- Apple Silicon support is optional but if you want to benefit from it you need to change your
CMakeLists.txt
- You can check the migration guide for more details and help.
- You can also go to Jamba Web Quickstart, generate a blank plugin and use the generated
CMakeLists.txt
as an example. - You can also check the documentation plugin for another example.
Version 5.1.1
- Added
JambaPluginFactory::GetNonDistributableVST3PluginFactory
function to create a plugin that would not be distributable - Added default implementation to
IParamSerializer
methods - Fixed Audio Unit build (changes in VST 3.7.0)
- Added missing
uninstall-au
command tojamba.py
Version 5.1.0
- Migrated Jamba to use VST3 SDK 3.7.1
Potential breaking changes
- SDK 3.7.1 made a number of changes in the cmake based build files (mostly renaming) and it is all covered by Jamba unless you have been using those symbols directly in your own cmake build files
- SDK 3.7.1 renamed the define
EXPORT_FACTORY
intoSMTG_EXPORT_SYMBOL
. Jamba is adding it back for backward compatibility (inPluginFactory.h
) but you may want to update it.
Version 5.0.0
Version 5.0.0 is a big update and includes the following changes:
- Migrated Jamba to use VST3 SDK 3.7.0
- Major refactoring of CMake files to make it easier to use and extend/customize (check CMake Build)
- Replaced main dev script implementation with a python script (with the added benefit that the Windows version is now on par with the macOS one). Note that the wrapper shell scripts (
jamba.sh
andjamba.bat
) are still the official way to invoke it andjamba.py
should be treated as an implementation detail. - Improved main script to run multiple commands (ex:
jamba.sh test validate
) - Replaced configure script with a python script (blank plugin now uses it)
- Added many new (cmake) targets so that you no longer have to rely on the script. For example running the editor can now simply be achieved by building the
jmb_run_editor
target. - Jamba itself has not changed (no new API) and only very few tweaks were required to migrate to 3.7.0
WARNING
Migration required
- You will need to migrate your main
CMakeLists.txt
to invokejamba_add_vst_plugin
which is the new (cmake) API to add a VST3 plugin (single call).- You can check the migration guide for more details and help.
- You can also go to Jamba Web Quickstart, generate a blank plugin and use the generated
CMakeLists.txt
as an example. - You can also check the documentation plugin for another example.
- Note that the zip file generated by the archive command / target is slightly different due to the use of
cpack
(but due to the CMake refactoring it is easy to turn it off entirely or implement your own)
Potential breaking changes
- Because Jamba now uses VST3 SDK 3.7.0 there might be APIs that you were using from the SDK that have changed (for example Drag'n'Drop is handled differently)
- Because the latest VST3 SDK does not include VST2 anymore, you need to provide it as a separate path (
VST2_SDK_ROOT
) - Jamba now has a requirement on python (3) for the script (note that you can disable generation of the script by using the CMake option
JAMBA_ENABLE_DEV_SCRIPT
in which case python is not required) install
command no longer deletes the folder before installation. Use./jamba.sh uninstall install
if you want this behavior.prod
command has been removed from main dev script (equivalent tojamba.sh -r -b test validate archive
but check migration guide for details on how to add it back as a target if you really need it)- Requires CMake 3.17
- Tested on macOS 10.14.6 with Xcode 11.3.1 (may work with prior versions but untested). Note that there is no requirement changes for Windows.
Misc.
- If you want to benefit from the new configure python script (
configure.py
), simply copy it from the blank plugin (it is 100% generic so it will work for any Jamba project)
Version 4.5.0
-
Improved messaging (GUI <-> RT) and VST2 performance by using
FastWriteMemoryStream
(a faster implementation ofMemoryStream
) -
Added the ability to show and dismiss a dialog view (for example, an About view or an alert):
// Example from some controller (aboutButton is a TextButtonView) aboutButton->setOnClickListener([this] { fState->showDialog("about_dialog"); }); // From another controller tied to the about_dialog view (set via the sub-controller attribute) dismissButton->setOnClickListener([this] { fState->dismissDialog(); });
Version 4.3.0
- Handle state deprecation which allows a plugin to change the state saved by a previous version in a non backward compatible way (for example removing parameters)
- Added
StepPadView
to allow a parameter value to be changed by dragging the mouse (useful for LCD displays, etc...) - Fixed
MomentaryButtonView
to decouple the state of the button with the value of the parameter (which caused several rendering issues)
Version 4.2.0
- Added
ParamImageView
to render a parameter value as an image (very useful for status LEDs, etc...) - Added
ImageView
to render an image (useful for static images, logos, decals, stickers, etc...) - Upgraded
googletest
to1.10.0
(due to CMake caching, this requires deleting the CMake build folder to take effect on existing projects)
Version 4.1.0
-
Due to issues with implicit conversion triggering potential hard crash, deprecated implicit conversion to
T
for all params (RTRawVstParam
,RTParam
,GUIRawVstParam
,GUIVstParam
,GUIJmbParam
,GUIOptionalParam
). -
Added convenient dereference operator (
operator *
) to all params as a shortcut to invoke.value()
(which is the preferred way to fix the deprecated warnings) -
Added convenient equality and relational operators to all params so that the params still continue to behave like the underlying type (
T
) in many instances -
Handle
toUTF8String()
for Jmb parameter when no serializer is provided by checking the availability ofostream<<
forT
-
Allow the use of the template name
_
for the switch container view (for example to use as an overlay that is shown/hidden)