pongasoft / jamba Goto Github PK
View Code? Open in Web Editor NEWA lightweight VST2/3 framework
Home Page: https://jamba.dev/
License: Apache License 2.0
A lightweight VST2/3 framework
Home Page: https://jamba.dev/
License: Apache License 2.0
You can now configure the plugin:
For macOs:
----------
### configuring
cd <build_folder>
<project_path>configure.sh
### building, testing, etc...
cd <build_folder>/build
./jamba.sh -h
Note how the script is referring to configure.sh
but it looks like it got replaced by configure.py
.
Hello
No generated file.
Tested with Firefox and Edge (Windows 10 x64)
With Firefox:
### Jamba Plugin Generator Output ###
[OK] Ready.
Wating for user input...
Loading Jamba Blank Plugin...
Loaded Jamba Blank Plugin version v3.2.2 - 36 files.
Plugin [testplugin-src.zip] generated successfully. Downloading...
Download complete (check you download folder).
With Edge:
### Jamba Plugin Generator Output ###
[OK] Ready.
Wating for user input...
Loading Jamba Blank Plugin...
Loaded Jamba Blank Plugin version v3.2.2 - 36 files.
Could not fetch blank plugin - Object doesn't support property or method 'keys'. Try refreshing the page...
Any idea? Thanks.
Currently the command jamba.sh install
executes the following set of commands:
> ./jamba.sh -n install
cmake --build . --target pongasoft_sam_spl_64
rm -rf /Users/ypujante/Library/Audio/Plug-Ins/VST3/pongasoft_sam_spl_64.vst3
cp -r VST3/pongasoft_sam_spl_64.vst3 /Users/ypujante/Library/Audio/Plug-Ins/VST3/pongasoft_sam_spl_64.vst3
VST3 plugin installed under ~/Library/Audio/Plug-Ins/VST3/pongasoft_sam_spl_64.vst3
rm -rf /Users/ypujante/Library/Audio/Plug-Ins/VST/pongasoft_sam_spl_64.vst
cp -r VST3/pongasoft_sam_spl_64.vst3 /Users/ypujante/Library/Audio/Plug-Ins/VST/pongasoft_sam_spl_64.vst
VST2 plugin installed under ~/Library/Audio/Plug-Ins/VST/pongasoft_sam_spl_64.vst
The side effect is that there is no cmake
target to run to achieve the same result. Thus if you want to run a debugger in an IDE you need to manually run the jamba command instead of selecting the target...
The point of this issue is to try to migrate this logic to cmake
Hello, Thanks to your framework I was able to compile an audio unit with the steinberg auwrapper, Which doesn't seem to be set up properly in raw vst 3.7.1.
I guess this is not a problem with your framework, but with Steinberg wrapper OR with Logic 10.6 ARM, but It seems that automation is not working, i.e. If you draw on automation curve for a parameter in logic, the user interface will not update.
The VST3 SDK comes with audio unit wrapper support (which is non trivial to enable). Jamba should make it easy to enable it (new question in the create-plugin.py
code)
Since the very first release (back in 2018), Jamba has offered support for VST2. Fast forward, 5 years later, it seems that most DAWs now support VST3 (ex: Reason and Maschine 2 both added support within the last year).
Due to the amount of work required and limitations due to the amount of work required to maintain support for VST2, I am thinking about removing support in the next release of Jamba.
I have mentioned it both on my personal Mastodon account and have heard no feedback so far.
If you have any feedback, please leave a comment on this issue.
VST SDK version: 3.7.4
Visual Studio: 2022
Windows 10 64bit
Created template from your website
Microsoft (R) Build Engine version 17.0.0+c9eb9dd64 for .NET Framework
Copyright (C) Microsoft Corporation. All rights reserved.
base.vcxproj -> F:\Prog\Plugins\Notebook\build\lib\Debug\base.lib
pluginterfaces.vcxproj -> F:\Prog\Plugins\Notebook\build\lib\Debug\pluginterfaces.lib
sdk_common.vcxproj -> F:\Prog\Plugins\Notebook\build\lib\Debug\sdk_common.lib
sdk.vcxproj -> F:\Prog\Plugins\Notebook\build\lib\Debug\sdk.lib
vstgui.vcxproj -> F:\Prog\Plugins\Notebook\build\lib\Debug\vstgui.lib
vstgui_uidescription.vcxproj -> F:\Prog\Plugins\Notebook\build\lib\Debug\vstgui_uidescription.lib
vstgui_support.vcxproj -> F:\Prog\Plugins\Notebook\build\lib\Debug\vstgui_support.lib
jamba.vcxproj -> F:\Prog\Plugins\Notebook\build\lib\Debug\jamba.lib
sdk.lib(moduleinit.obj) : error LNK2005: "bool __cdecl DeinitModule(void)" (?DeinitModule@@YA_NXZ) already defined in N
otebook_VST3.obj [F:\Prog\Plugins\Notebook\build\demberto_Notebook.vcxproj]
sdk.lib(moduleinit.obj) : error LNK2005: "bool __cdecl InitModule(void)" (?InitModule@@YA_NXZ) already defined in Noteb
ook_VST3.obj [F:\Prog\Plugins\Notebook\build\demberto_Notebook.vcxproj]
Creating library F:/Prog/Plugins/Notebook/build/lib/Debug/demberto_Notebook.lib and object F:/Prog/Plugins/Noteboo
k/build/lib/Debug/demberto_Notebook.exp
F:\Prog\Plugins\Notebook\build\VST3\Debug\demberto_Notebook.vst3 : fatal error LNK1169: one or more multiply defined sy
mbols found [F:\Prog\Plugins\Notebook\build\demberto_Notebook.vcxproj]
Error: Command "build" [cmake --build . --config Debug --target jmb_build_vst3] failed with error code 1
In your requirements page you mention that Jamba uses 3.7.1. Is Jamba locked to that particular version?
EDIT: It works with VST 3.7.1 SDK, maybe you should mention it specifically in your docs that only the provided build of VST 3.7.1 works
I am currently trying to develop a VST plugin in a linux environment.
Since jamba didn't support Linux, so I tried modifying the Mac version, but it was too painful for me.
Are there plans to release the Linux version of jamba?
Jamba somewhat assumes that VST2 support should be added even if it uses the SMTG_CREATE_VST2_VERSION
in some places. A new question to the create-plugin.py
script should be added to enable/disable VST2 support and make sure it actually does the right thing.
I am a first time user and just had made an empty project and downloaded the sample gain project.
I followed the guide step by step, but fail when I come to the ".jamba.sh validate" or edit part
I tested on both a new project and the sample gain project and get both times the same build failed error with these last lines
I am using MacOS 10.15, jamba 5.1.5, VST3.7.1 & VST2.4; Just a plain new install following the guide.
Technically I understand the error but I don't get why the build fails on both a new project & test project
`duplicate symbol 'DeinitModule()' in:
/Volumes/Data-Partition/Programming/JambaVST/jamba-sample-gain/build/jamba-sample-gain.build/Debug/pongasoft_JambaSampleGain.build/Objects-normal/x86_64/JSGainVST3.o
/Volumes/Data-Partition/Programming/JambaVST/jamba-sample-gain/build/lib/Debug/libsdk.a(moduleinit.o)
duplicate symbol 'InitModule()' in:
/Volumes/Data-Partition/Programming/JambaVST/jamba-sample-gain/build/jamba-sample-gain.build/Debug/pongasoft_JambaSampleGain.build/Objects-normal/x86_64/JSGainVST3.o
/Volumes/Data-Partition/Programming/JambaVST/jamba-sample-gain/build/lib/Debug/libsdk.a(moduleinit.o)
ld: 2 duplicate symbols for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
** BUILD FAILED **
The following build commands failed:
Ld /Volumes/Data-Partition/Programming/JambaVST/jamba-sample-gain/build/VST3/Debug/pongasoft_JambaSampleGain.vst3/Contents/MacOS/pongasoft_JambaSampleGain normal
(1 failure)
Error: Command "validate" [cmake --build . --config Debug --target jmb_run_validator] failed with error code 65`
The subprocess Python API has changed in v3.7 and over versions can't run the create-plugin.py
script.
While I believe switching the tooling to Go would be better from a user experience, I think a compromise might be to check the python version and gracefully exit with some explanations.
Traceback (most recent call last):
File "../jamba/create-plugin.py", line 139, in <module>
capture_output=True, text=True).stdout
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/subprocess.py", line 403, in run
with Popen(*popenargs, **kwargs) as process:
TypeError: __init__() got an unexpected keyword argument 'capture_output'
Example of what Jamba should support natively.
// Parameters
std::array<VstParam<bool>, 2> fLEDs;
// RT State
std::array<RTVstParam<bool>, 2> fLEDs;
The issue is initialing in the state. Here is a quick implementation that works:
template<typename T, std::size_t N, std::size_t... I>
std::array<RTVstParam<T>, N> addMultiple_impl(RTState *iState, std::array<VstParam<T>, N> const &iArray, std::index_sequence<I...>)
{
return {iState->add(iArray[I])...};
}
template<typename T, std::size_t N, typename Indices = std::make_index_sequence<N>>
std::array<RTVstParam<T>, N> addMultiple(RTState *iState, std::array<VstParam<T>, N> const &iArray)
{
return addMultiple_impl(iState, iArray, Indices{});
}
// Constructor
fLEDs{addMultiple(this, iParams.fLEDs)}
Note that addMultiple
should be added to RTState
for the "real" implementation
Somebody reported issue with long automation using plugins built with the VST SDK and the AU wrapper. This seems to affect plugins built with Jamba as well since it uses the AU wrapper that comes with the VST SDK.
Report:
Jerky automation: Imagine to automate a Mix parameter with range [0, 100] where 0 and 100 are real/plain values changing it from 0 to 100 with a linear ramp. When I automate the VST3 version changes are smooth 0, 1, 2, 3....(small jumps) but when I automate the AU wrapped version I see changes like 0, 4, 12, 20...(big jumps, not fluid).
kAUPluginManufacturer
should be assigned a 4 character code but it shouldn't be defaulted to company short 4 characters
Hello, first up: great project! Tremendously easy to use, allowing one to focus on the fun part: writing the darn plugin!
Not so much an issue, but rather an enquiry:
I have read that Jamba is currently tied to SDK 3.6.9. Having looked at the current SDK 3.6.12 I see there are some breaking changes (mostly in VSTGUI, also in /base source Makelists). Is there a plan on how to add support for a wider ranges of SDKs ? Am I correct in assuming that Jamba is dependent upon Steinberg make list restructuring (and therefore making it hard to support just any SDK version) ?
This affects the blank plugin, not the framework...
Currently the resources (png images for example) need to be declared in 2 places: CMakeLists.txt
and <Plugin>.rc
.
A potential solution would be to replace
smtg_add_vst3_resource(${target} "resource/background.png")
with something like
jamba_add_vst3_resource(${target} "background.png")
which would accumulate the resources to generate the <Name>.rc
file
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.