This project contains the common code used across pongasoft rack extensions (for Reason DAW by Reason Studios)
In 2015, I started working on Rack Extensions for Reason and created this mini framework to share code across the various rack extensions subsequently released.
In January 2020, Reason studios opened up the RE platform to allow sharing and distributing this kind of project.
As a result, I have decided to make the code publicly available in the hope that it can help other people to bootstrap their efforts in learning the platform.
This is not a full fledged and well designed framework (like the Jamba VST framework). More a set of concepts and common code used throughout the other projects. The code is, at this time, not well documented.
This project was originally created with RE SDK version 2.2. Although the latest version of this project assumes 4.1+ and some features requires C++17, at this time, not everything has been updated to use the latest features.
Depending on feedback and which direction Reason Studios decide to go, this may turn into something bigger...
- CVA-7: free rack extension utility which lets you analyze a CV signal in various ways
- Use re-logging 2.0.2
- Use re-logging 2.0.0 (no loguru dependency)
- Use re-logging 1.0.2
- Use googletest 1.17.0 (remove CMake deprecation warnings)
- Use
FetchContent_MakeAvailableto remove CMake deprecation warnings
- Use re-logging 1.0.1 (fix Windows build)
- Added
maybeWriteAudiocall to check for silent buffers when writing - Added
SPLerp/DPLerpandSampleRateBasedClock(imported from Jamba) - Added
CVInProperty - Added unit test for re-common itself/working on it
- Added
pongasoft::common::stlnamespace with convenient functions for the Standard Template Library - Added
StaticVectorwhich implements the interface ofstd::vectorwhile using static storage - Removed logging (fetch
re-logginginstead) => need to change#include<logging/logging.h>with#include<logging.h>
- Fixed loguru included in universal45 and failing build
- Added
fmtnamespace that implements a simplified version ofprintfmostly for use in property name creation - Added
jboxnamespace that implements theJBox_GetMotherboardObjectRefandJBox_MakePropertyRefJukebox API calls usingfmt::printfsyntax. For example:
int N = 4;
for(int i = 0; i < N; i++)
{
fSampleNativeObjectRefs[i] =
jbox::get_property_ref("/custom_properties/sample_sound_native_object%d", i);
}- Added
StaticStringwhich encapsulates an immutable array of characters (underlying type varies depending on debug or release mode) to provide a simple syntax to create strings:
auto s = StaticString<100>::printf("test %s / %d", "abc", 12);
// ObjectPath is StaticString<kJBox_MaxObjectNameLen + 1>
fSampleObjectRef = JBox_GetMotherboardObjectRef(ObjectPath::printf("/user_samples/%d", 1));
// which is 100% equivalent to
fSampleObjectRef = jbox::get_object_ref("/user_samples/%d", 1);- The
AudioInSocket,AudioOutSocket,StereoInPairandStereoOutPairconstructors now takes socket name instead of full socket path since the path can be computed by the class (and is less error prone):
// old code
StereoOutPair audioOut{"/audio_outputs/mainOutLeft", "/audio_outputs/mainOutRight"};
// new code
StereoOutPair audioOut{"mainOutLeft", "mainOutRight"};
// which can also be simplified to (new in 3.0.0)
StereoOutPair audioOut{"mainOut"};- The
CVInSocketandCVOutSocketconstructors now takes socket name instead of full socket path since the path can be computed by the class (and is less error prone):
// old code
CVOutSocket cvOut{"/cv_outputs/cv_out_socket"};
// new code
CVOutSocket cvOut{"cv_out_socket"};- Assumes RE SDK Version 4.1.0+
- Use C++17 features
- Added logging (loguru) and
re-common.cmakefor inclusion in other projects
- Added details and README.
- First release.
- This project uses loguru for logging (included under
src/cpp/logging)
-
This project is released under the terms of the Apache 2.0 license
-
This project uses the Rack extension SDK released under the Rack Extension License agreement