Skip to content

Releases: pongasoft/jamba

Version 3.2.1

18 Jun 18:04
Compare
Choose a tag to compare
  • 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

06 Jul 16:39
Compare
Choose a tag to compare
  • added audio unit validation to jamba.sh script (jamba.sh validate-au) which runs the auvaltool 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... (check Views::DiscreteButtonView)

WARNING

The following changes are potentially breaking changes

  • There is a small potentially breaking API change with function Views::createCustomView (defined in Views/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

07 Jul 15:07
Compare
Choose a tag to compare
  • 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 and Channel (copyFrom and forEachSample). Defined const and non const 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

07 Jul 15:07
Compare
Choose a tag to compare
  • fixed minor bugs

Version 3.0.1

07 Jul 15:08
Compare
Choose a tag to compare
  • Use shallow cloning to avoid downloading the (unused) project history

Version 3.0.0

07 Jul 15:12
Compare
Choose a tag to compare
  • This is a major release with many changes (a few breaking APIs)

  • Added TextViewButton on which you can register a onClickListener or implement onClick. 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 like

      fPlayModeHold =
        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. Introduced MarginAttribute, RangeAttribute, and GradientAttribute

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). Introduced SPLerp (single precision) and DPLerp (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 with registerParam methods (when the type is known).

  • Moved PluginAccessor into its own header file

  • Removed CustomViewInitializer

Version 2.1.2

11 Oct 15:03
Compare
Choose a tag to compare
  • 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

07 Jul 15:13
Compare
Choose a tag to compare
  • Fixed #4: Generate AU Plugin Manufacturer code from name instead of company

Version 2.1.0

06 Oct 18:27
Compare
Choose a tag to compare
  • 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 (resp jamba.bat) script
  • Uses Xcode as the cmake generator on macOS

Version 2.0.2

02 Sep 14:38
Compare
Choose a tag to compare
  • Updated license terms