Git Product home page Git Product logo

jamba's Issues

Add support for array of parameters

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

Make VST2 support truly optional

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.

Support Linux

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?

Eliminate resource declaration duplication

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

Create a "install" cmake target for the plugin

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

audiounit automation on ARM Logic

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.

steinbergmedia/vst3sdk#72

Automation issue in Logic/Reaper (AU wrapper)

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).

Optionally generate audio unit wrapper

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)

Web generator does not work

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.

jamba is for python 3.7+

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'

validate & edit build failed

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`

Support for newer Steinberg SDK versions

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) ?

create-plugin.py instructions point to wrong configure script

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.

Remove support for VST2

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.

build fails with linker errors

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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.