rorywalsh / cabbage Goto Github PK
View Code? Open in Web Editor NEWFramework for developing audio plugins with the Csound programming language.
Home Page: http://cabbageaudio.com
License: GNU General Public License v3.0
Framework for developing audio plugins with the Csound programming language.
Home Page: http://cabbageaudio.com
License: GNU General Public License v3.0
Hi @rorywalsh ,
I'm currently developping a synthesizer using Cabbage framework and I would love to release it (for free, and open source)
So here are my 2 request to implement 2 new new plugins format :
Thanks in advance,
It seems that notes don't line up quite right if you send the same MIDI messages to a Cabbage synth alongside a native synth within a DAW. There are timing issues that seem to get worse the longer the performance continues for. I've checked the setLatencySamples() calls and they all seem correct. The timing of Cabbage notes are always too soon.
The download page says there is a README included in the zip file that has install instructions for Linux.
I have yet to locate said file.
What am I missing?
When starting a new VCV Rack project, there is a warning in the console:
Warning: The current pluginId("") (Line:1) is not valid. A form pluginId() must be an alphanumeric string of 4 characters.
While line 1 actually contains only <cabbage>
, line 2 contains usage of pluginid("def1")
(all lowercase). However, there doesn't seem to be any camel-case plugin1("")
use in the default .csd
file (below). How can I fix or suppress this particular warning?
<Cabbage>
form caption("CabbageModule") size(100, 380), colour(255, 255, 255), pluginid("def1")
screw bounds(5, 10, 15, 15)
screw bounds(80, 10, 15, 15)
screw bounds(5, 360, 15, 15)
screw bounds(80, 360, 15, 15)
cvinput bounds(34, 60, 30, 30), channel("cvInput1")
label bounds(0, 90, 100, 12), fontColour(0,0,0) text("Input")
cvoutput bounds(34, 300, 30, 30), channel("cvOutput1")
label bounds(0, 330, 100, 12), fontColour(0,0,0) text("Output")
rslider bounds(0, 150, 100, 100), channel("gain"), text("Gain"), textColour(0, 0, 0, 255), range(0, 1, 0, 1, 0.01)
light bounds(45, 250, 10, 10), channel("light1")
</Cabbage>
<CsoundSynthesizer>
<CsOptions>
-n -d
</CsOptions>
<CsInstruments>
; Initialize the global variables.
ksmps = 32
nchnls = 2
0dbfs = 1
instr 1
kLightBrightness init 0
aInput chnget "cvInput1"
printk2 chnget:k("gain")
aOut = aInput*chnget:k("gain")
chnset aOut, "cvOutput1"
if metro(2) == 1 then
kLightBrightness = kLightBrightness == 0 ? .8 : 0
chnset kLightBrightness, "light1"
endif
endin
</CsInstruments>
<CsScore>
;starts instrument 1 and runs it for a week
i1 0 [60*60*24*7]
</CsScore>
</CsoundSynthesizer>
Steps to reproduce on a fresh install of Pop!_OS 20.10 (Ubuntu based distro):
sudo ./installCabbage
/usr/bin/Cabbage
Output:
/usr/bin/Cabbage: symbol lookup error: /usr/bin/Cabbage: undefined symbol: csoundLoadPlugins
Hello Rory!
I spend many hours trying to build Cabbage on Manjaro (Arch-based distro). It seems that the latest JUCE has some API changes and Cabbage cannot be compiled agains it anymore. Due to late night I have’t documented errors, but from what I can remember, among other API changes ComboBoxListener became ComboBox::Listener, and something else with classes having nodeID
fields. I started fixing these issues in IDE, but it turned out there were too many of them and I just focused on building against JUCE 5.2.
But I’m wondering, could that be due to some misconfiguration caused by me while messing up with build files? Or is it simply incompatibility with the newer JUCE?
P.S. I’ll probably upload the Cabbage build to Arch User Repository some time during the weekend.
I have tried a few times to build on Linux and for some reason I was only able to build the cabbage-2.0.03.tar.gz version
whenever I tried to git clone it would only build CabbageLite, CabbagePluginEffect.so and CabbagePluginSynth.so
I recently tried to build again from git clone as well as with cabbage-2.1.tar.gz and ended up with the same result
for some reason it only builds CabbageLite and not Cabbage
same thing as what happened in issue #43 after I comment out line 85 from buildCabbage
I have made a small plugin that reads from all midi devices and outputs midion2 to a specific device.
If I run without -+rtmidi=null
(required to get the midi routing to work), then my real midi keyboard works, but the virtual midi keyboard isn't lighting up, or sending messages to the instrument.
If I run with -+rtmidi=null
then none of the midi actually works, but then the virtual midi keyboard sends notes.
This is on today's latest download for OSX
Hey Rory, I tried installing the newest master branch of Cabbage, encountered some problems
I started running confgureMakefiles.py
$ python ./configureMakefiles.py
=================================================
======== Generate Makefiles for Cabbage =========
=================================================
This script will generate makefiles for Cabbage by
running the ProJUCEr application. Please make sure
you have already built the JUCE Projucer.
Usage:
python ./projucerConfig [../path_to/projucer]
python configureMakefiles.py ../../../JUCE/extras/Projucer/Builds/LinuxMakefile/build/Projucer
More info...
The standalone and plugin version of Cabbage use slightly different
JUCE and makefile configurations. This script creates makefiles
using the Projucer, and then modifies them. The result is a single
code-base across both projects, and project makefiles that can be
called without needing to constantly use the Projucer
/bin/sh: ../../../JUCE/extras/Projucer/Builds/LinuxMakefile/build/Projucer: No such file or directory
/bin/sh: ../../../JUCE/extras/Projucer/Builds/LinuxMakefile/build/Projucer: No such file or directory
So I thought, screw it, there a makefile there already so I did make
In file included from ../../JuceLibraryCode/include_juce_graphics.cpp:9:0:
../../JuceLibraryCode/modules/juce_graphics/juce_graphics.cpp:95:12: fatal error: ft2build.h: No such file or directory
#include <ft2build.h>
^~~~~~~~~~~~
compilation terminated.
make: *** [Makefile:397: build/intermediate/Debug/include_juce_graphics_f817e147.o] Error 1
and it ended here.
As I'm on Fedora25 using yum/dnf, I tried installing the following packages
freetype 2.7.1
freetype-devel 2.7.1
freetype-freeworld 2.7.1
mingw64-freetype 2.7.1
mingw64-freetype-static 2.7.1
none of which are provideing ft2build.h, is this header file deprecated?
I have juice installed and older installations of Cabbage worked for me in the past. Strange. But in the past freetype errors annyoed me but I was able to ignore them.
Hei Rory. At the moment on my system (Manjaro) Cabbage doesn’t create proper VST effects. After exporting an effect plugin (e.g. LoFi) to the VST format, Reaper (native Linux build) shows it as VSTi, and the plugin just passes sound through without doing any processing. Exporting VSTi works fine though.
Have you had such issues before? I can provide more info if needed.
This is a script I used to build Cabbage with: https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=cabbage-git
On the last code example on the Opcode page (https://cabbageaudio.com/docs/opcodes/), I believe "a3" should be "a2"
Greetings.
Cannot compile the cabbage from source. Tried using the cabbage-git package. Error related to JUCE_API PixelRGB class.
It would be nice if somebody could update the PKGBUILDs for archlinux.
Thanks
Pushing tab doesn't insert a tab as expected, it inserts 4 spaces. It would be great there was an option to use tabs or spaces as programmers are highly split about which they prefer.
But even if Cabbage can only use spaces then pushing backspace on a character after 4 spaces should move that character back 4 spaces, but it doesn't, it moves it back only 1, messing up alignment.
(Also, if you switch spaces per tab to 0 in the settings and try tab Cabbages crashes)
When trying to navigate the newly built Docs (file:///home/chris/Downloads/git/cabaiste_audio_graph/Docs/_book/index.html), the left hand side index does not work for me in Firefox 51.
The browser's Inspector shows an issue with a missing tag.
I can manually open each document in the meantime via my file browser.
Trying to build in linux,
../../Source/GUIEditor/../LookAndFeel/CabbageLookAndFeel2.h:31:41: error: cannot convert ‘std::unique_ptrjuce::Drawable’ to ‘juce::Drawable*’ in return
return Drawable::createFromSVG (*xml);
Jucer has seemingly new way of installing plugins via makefile. Seems to be incompatible with the current buildCabbage script.
Hi!
../../Source/Audio/Plugins/CsoundPluginProcessor.cpp: In member function ‘bool CsoundPluginProcessor::setupAndCompileCsound(juce::File, juce::File, int, bool)’:
../../Source/Audio/Plugins/CsoundPluginProcessor.cpp:148:17: error: ‘csoundSetOpcodedir’ was not declared in this scope; did you mean ‘csoundNewOpcodeList’?
148 | csoundSetOpcodedir(opcodeDir.toUTF8().getAddress());
| ^~~~~~~~~~~~~~~~~~
| csoundNewOpcodeList
As I can see csoundSetOpcodedir
is not declared anywhere. Commenting this line seems like a workaround.
The website says There is a README outlining the necessary steps.
The readme is nearly completely useless.
Any basic documentation available? :)
What I did:
Result: about 3800 lines of output, including:
Compiling BinaryData.cpp
Compiling include_juce_audio_basics.cpp
Compiling include_juce_audio_devices.cpp
In file included from ../../Source/Widgets/CabbageWidgetData.h:24:0,
from ../../Source/Widgets/CabbageWidgetData.cpp:22:
../../Source/Widgets/../Utilities/CabbageUtilities.h: In static member function ‘static void CabbageUtilities::writeValueTreeToFile(juce::ValueTree, juce::String)’:
../../Source/Widgets/../Utilities/CabbageUtilities.h:1093:53: warning: ‘bool juce::XmlElement::writeToFile(const juce::File&, juce::StringRef, juce::StringRef, int) const’ is deprecated [-Wdeprecated-declarations]
data->writeToFile (File (filePath), String());
^
In file included from ../../JuceLibraryCode/modules/juce_core/system/juce_StandardHeader.h:65:0,
from ../../JuceLibraryCode/modules/juce_core/juce_core.h:196,
from ../../JuceLibraryCode/modules/juce_audio_basics/juce_audio_basics.h:53,
from ../../JuceLibraryCode/../JuceLibraryCode/JuceHeader.h:17,
from ../../Source/Widgets/../Utilities/CabbageUtilities.h:25,
from ../../Source/Widgets/CabbageWidgetData.h:24,
from ../../Source/Widgets/CabbageWidgetData.cpp:22:
../../JuceLibraryCode/modules/juce_core/xml/juce_XmlElement.h:715:27: note: declared here
JUCE_DEPRECATED (bool writeToFile (const File& destinationFile,
^
../../JuceLibraryCode/modules/juce_core/system/juce_PlatformDefs.h:270:57: note: in definition of macro ‘JUCE_DEPRECATED’
#define JUCE_DEPRECATED(functionDef) functionDef JUCE_DEPRECATED_ATTRIBUTE
^~~~~~~~~~~
../../Source/Widgets/CabbageWidgetData.cpp: In static member function ‘static void CabbageWidgetData::setColourArrays(juce::StringArray, juce::ValueTree, juce::String, bool)’:
../../Source/Widgets/CabbageWidgetData.cpp:824:48: error: ‘juce::var::var(const void*)’ is private within this context
newColours.append (new Colour (0, 0, 0));
^
In file included from ../../JuceLibraryCode/modules/juce_core/juce_core.h:276:0,
from ../../JuceLibraryCode/modules/juce_audio_basics/juce_audio_basics.h:53,
from ../../JuceLibraryCode/../JuceLibraryCode/JuceHeader.h:17,
from ../../Source/Widgets/../Utilities/CabbageUtilities.h:25,
from ../../Source/Widgets/CabbageWidgetData.h:24,
from ../../Source/Widgets/CabbageWidgetData.cpp:22:
../../JuceLibraryCode/modules/juce_core/containers/juce_Variant.h:322:5: note: declared private here
var (const void*) = delete;
^~~
../../Source/Widgets/CabbageWidgetData.cpp:824:48: error: use of deleted function ‘juce::var::var(const void*)’
newColours.append (new Colour (0, 0, 0));
^
I wonder if this is a mismatch between Cabbage and JUCE versions? Is there a specific version of JUCE that's known to work? Thanks for any advice you can offer.
I have not tested this extensively, but in OSX when I revert to older versions of cabbage, it does not overwrite the CabbageLite executable.
I end up performing a $ sudo rm -rf /Applications/Cabbage*
I did not test if the main cabbage executable overwrites (yet). I also haven't tested other operating systems (yet), but could possibly test in windows if needed.
some plugins (for example my own looper Rebeat) would greatly benefit in usability if there was a way how to manage them via computer keyboard. For example - looper is more likely started/stopped on time when doing it with keyboard.
It looks that this is definitely possible with JUCE - see for example this.
I understand, that this will also open whole can of worms with compatibility with various OS/hosts, but I think it's worth of it.
I propose this API:
LAST_KEY_PRESSED
and LAST_KEY_RELEASED
which value would be code/name of last pressed keychanged:k(...)
The macros are available in the cabbage section, but don't appear to get passed on to csound. User created macros are being passed properly.
Just opening for tracking, discussed on the forums here:
https://forum.cabbageaudio.com/t/screen-width-and-screen-height-not-passed-to-csound/2112
Here's a minimal example:
<Cabbage>
form size(200, 200), caption("Macro test"), pluginid("mcro"), colour(0,0,0,255)
#define TEST test message
</Cabbage>
<CsoundSynthesizer>
<CsOptions>
-n -d -m0d
</CsOptions>
<CsInstruments>
nchnls = 2
0dbfs = 1
instr 1
Smsg = sprintf(" !!! TEST : %s\n", "$TEST")
prints Smsg
Smsg = sprintf(" !!! SCREEN_WIDTH : %s\n", "$SCREEN_WIDTH")
prints Smsg
endin
</CsInstruments>
<CsScore>
i1 0 z
</CsScore>
</CsoundSynthesizer>
Hi I tried to build it in Ubuntu and it reaches to this point and exits.
Compiling CabbageMessageSystem.cpp
Linking CabbageHost
cp: cannot stat '../../Docs/_book': No such file or directory
If I execute the binary it starts but hangs when opening a file. I don't know what else information could be appropriate for debugging.
Best,
In https://cabbageaudio.com/docs/sliders/ there is a link labeled For more information see Using SVGs and PNGs
.
It points to: https://cabbageaudio.com/docs/sliders/using_imgs.md
Which just gives me a 404.
Is it possible to export a VST/AU from the command line? It would be interesting for me to use Cabbage in a CI pipeline, where I can build my plugin, and automatically export the plugins in a headless setup.
Hi!
I can't get Cabbage to build on Linux because the VST 2.x SDK is no longer available from Steinberg or from anywhere else as far as I can tell. The needed file pluginterfaces/vst2.x/aeffect.h is not included in the newer VST3_SDK, which is linked to in the readme.
Update: I found a link to an older version of the VST3 SDK which had the needed files:
[(https://www.steinberg.net/sdk_downloads/vstsdk366_27_06_2016_build_61.zip)]
Thx!
Unable to Build CabbageIDE
Building CabbageIDE…
Cleaning Cabbage
Compiling CabbageMainComponent.cpp
MakeCabbageIDE:174: recipe for target 'build/intermediate/Release/CabbageDocumentWindow_3af539ae.o' failed
make: *** [build/intermediate/Release/CabbageDocumentWindow_3af539ae.o] Error 1
make: *** Waiting for unfinished jobs....
Compiling FilterIOConfiguration.cpp
Compiling CabbageToolbarFactory.cpp
Compiling FilterGraph.cpp
CabbageLite builds
I’m trying to make Cabbage run on Manjaro linux. Currently, Cabbage can’t find CabbagePlugin.so
file and tells something about Cabbage root.
Here’s a screenshot of this error (Cabbage executable and the *so
files are in the CabbageBuild
folder):
I looked up in the menu for an option to set the Cabbage root, but couldn’t find anything appropriate. Is there a way to hardcode it or maybe to set some environment variable to configure custom Cabbage root?
Hi!
I've installed Cabbage on Windows 10 today, and the fist thing it shown me was an error that it didn't find Csound libraries and failed to start. I have checked "Install Csound" during Setup wizard, so that was odd.
I have downloaded Csound for Windows and installed it afterwards.
It runs now, but I get a strange error message popping up twice every time I load a Cabbage plug-in in Ardour. After that it works fine, but I am worried it might cripple my work if I get 40 of these to click on every time I load an Ardour session using Cabbage plug-ins.
This roughly translates into:
Procedure entry point inflateValidate not found in library C:\Program Files\ Csound6_x64\plugins64\image.dll
Hey Rory,
I'm trying to build the Cabbage develop branch but I've hit a snag (see below). I'm using JUCE 5.4.7 and its modules, here's the error point:
./buildCabbage
...
../../Source/Widgets/CabbageWidgetData.cpp: In static member function ‘static void CabbageWidgetData::setColourArrays(juce::StringArray, juce::ValueTree, juce::String, bool)’:
../../Source/Widgets/CabbageWidgetData.cpp:824:48: error: ‘juce::var::var(const void*)’ is private within this context
newColours.append (new Colour (0, 0, 0));
^
In file included from ../../JuceLibraryCode/modules/juce_core/juce_core.h:276:0,
from ../../JuceLibraryCode/modules/juce_audio_basics/juce_audio_basics.h:53,
from ../../JuceLibraryCode/../JuceLibraryCode/JuceHeader.h:17,
from ../../Source/Widgets/../Utilities/CabbageUtilities.h:25,
from ../../Source/Widgets/CabbageWidgetData.h:24,
from ../../Source/Widgets/CabbageWidgetData.cpp:22:
../../JuceLibraryCode/modules/juce_core/containers/juce_Variant.h:322:5: note: declared private here
var (const void*) = delete;
^~~
../../Source/Widgets/CabbageWidgetData.cpp:824:48: error: use of deleted function ‘juce::var::var(const void*)’
newColours.append (new Colour (0, 0, 0));
^
I hope that helps, let me know if I'm missing anything obvious.
Best regards !
dp
It's called "Convolution Rever".
Missing a "b" there.
<Cabbage>
form caption("Example") size(300, 180), import("ImportExample.xml"), pluginid("xmpl")
Widgets pos(30, 30) size(50, 50), channel("Import1"), namespace("Widgets")
rslider pos(30,100), size(50,50) channel("Knob2"), prefix("Prefix Test: "), postfix(" Postfix Test.")
</Cabbage>
<CsoundSynthesizer>
<CsOptions>
-n -d -+rtmidi=NULL -M0 -m0d --midi-key-cps=4 --midi-velocity-amp=5
</CsOptions>
<CsInstruments>
nchnls = 2
0dbfs = 1
</CsInstruments>
<CsScore>
f0 z
</CsScore>
</CsoundSynthesizer>
And the xml that renders properly:
<?xml version="1.0" encoding="UTF-8"?>
<plant>
<namespace>Widgets</namespace>
<name>Widgets</name>
<cabbagecode>
image bounds(0,0,50,50) colour(0, 0, 0,0) {
rslider pos(0,0), size(50,50) channel("Knob"), prefix("Prefix Test: "), postfix(" Postfix Test.")
}
</cabbagecode>
<csoundcode>
</csoundcode>
<help>
Example to show position difference in imported widgets when using bounds() vs. pos() and size()
bounds() will render in the correct position
pos() and size() will render in an incorrect position
</help>
</plant>
Here's an example where it's position renders incorrectly:
<?xml version="1.0" encoding="UTF-8"?>
<plant>
<namespace>Widgets</namespace>
<name>Widgets</name>
<cabbagecode>
image pos(0,0) size(50,50) colour(0, 0, 0,0) {
rslider pos(0,0), size(50,50) channel("Knob"), prefix("Prefix Test: "), postfix(" Postfix Test.")
}
</cabbagecode>
<csoundcode>
</csoundcode>
<help>
Example to show position difference in imported widgets when using bounds() vs. pos() and size()
bounds() will render in the correct position
pos() and size() will render in an incorrect position
</help>
</plant>
Hi!
Cabbage compiled with gcc/g++ 11 crashing on startup. It might be difficult to find the bug. Anyway here is the backtrace:
gdb /usr/bin/Cabbage
GNU gdb (GDB; openSUSE Tumbleweed) 10.1
Copyright (C) 2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-suse-linux".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://bugs.opensuse.org/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /usr/bin/Cabbage...
Reading symbols from /usr/lib/debug/usr/bin/Cabbage-2.6.8-1.2.x86_64.debug...
(gdb) run
Starting program: /usr/bin/Cabbage
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
[Detaching after fork from child process 18510]
[Detaching after fork from child process 18511]
[New Thread 0x7ffff6413640 (LWP 18514)]
[New Thread 0x7ffff5bf7640 (LWP 18515)]
[Thread 0x7ffff5bf7640 (LWP 18515) exited]
[New Thread 0x7ffff5bf7640 (LWP 18516)]
[Thread 0x7ffff6413640 (LWP 18514) exited]
[New Thread 0x7ffff5038640 (LWP 18551)]
Cannot connect to server socket err = No such file or directory
Cannot connect to server request channel
jack server is not running or cannot be started
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock
[Thread 0x7ffff5038640 (LWP 18551) exited]
[New Thread 0x7ffff6413640 (LWP 18552)]
[New Thread 0x7ffff4fb7640 (LWP 18553)]
[New Thread 0x7fffe7fff640 (LWP 18554)]
[Thread 0x7fffe7fff640 (LWP 18554) exited]
[New Thread 0x7fffe7fff640 (LWP 18555)]
Thread 1 "Cabbage" received signal SIGSEGV, Segmentation fault.
0x0000555555b94008 in juce::RenderingHelpers::SavedStateBase<juce::RenderingHelpers::SoftwareRendererSavedState>::fillRectList(juce::RectangleList<float> const&) ()
(gdb) bt
#0 0x0000555555b94008 in juce::RenderingHelpers::SavedStateBase<juce::RenderingHelpers::SoftwareRendererSavedState>::fillRectList(juce::RectangleList<float> const&) ()
#1 0x0000555555cf1f41 in juce::CodeEditorComponent::paint(juce::Graphics&) ()
#2 0x0000555555c2a0d4 in juce::Component::paintComponentAndChildren(juce::Graphics&) ()
#3 0x0000555555c2a177 in juce::Component::paintComponentAndChildren(juce::Graphics&) ()
#4 0x0000555555c2a177 in juce::Component::paintComponentAndChildren(juce::Graphics&) ()
#5 0x0000555555c2a177 in juce::Component::paintComponentAndChildren(juce::Graphics&) ()
#6 0x0000555555c2bcd3 in juce::ComponentPeer::handlePaint(juce::LowLevelGraphicsContext&) ()
#7 0x0000555555cba3d3 in juce::LinuxComponentPeer::LinuxRepaintManager::performAnyPendingRepaintsNow() ()
#8 0x0000555555aecd79 in juce::Timer::TimerThread::CallTimersMessage::messageCallback() ()
#9 0x0000555555aecbba in std::_Function_handler<void (int), juce::InternalMessageQueue::InternalMessageQueue()::{lambda(int)#1}>::_M_invoke(std::_Any_data const&, int&&) ()
#10 0x0000555555aeb73f in juce::MessageManager::runDispatchLoop() ()
#11 0x000055555577e1bd in juce::JUCEApplicationBase::main() ()
#12 0x00007ffff73d4b35 in __libc_start_main (main=0x5555557785d0 <main>, argc=1, argv=0x7fffffffdb58, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffdb48) at ../csu/libc-start.c:332
#13 0x000055555577fc2e in _start () at ../sysdeps/x86_64/start.S:120
(gdb)
openSUSE Tumbleweed
gcc-g++ 11.1.1
Glad to provide any additional info.
make
Compiling include_juce_audio_plugin_client_VST2.cpp
Compiling CabbagePluginEditor.cpp
Compiling CabbagePluginProcessor.cpp
Compiling CsoundPluginEditor.cpp
Compiling CsoundPluginProcessor.cpp
../../Source/Audio/Plugins/CsoundPluginProcessor.cpp: In member function ‘virtual void CsoundPluginProcessor::initAllCsoundChannels(juce::ValueTree)’:
../../Source/Audio/Plugins/CsoundPluginProcessor.cpp:172:25: error: ‘class Csound’ has no member named ‘SetStringChannel’; did you mean ‘GetStringChannel’?
csound->SetStringChannel (CabbageWidgetData::getStringProp (cabbageData.getChild (i), CabbageIdentifierIds::channel).getCharPointer(),
^~~~~~~~~~~~~~~~
../../Source/Audio/Plugins/CsoundPluginProcessor.cpp:178:25: error: ‘class Csound’ has no member named ‘SetStringChannel’; did you mean ‘GetStringChannel’?
csound->SetStringChannel (CabbageWidgetData::getStringProp (cabbageData.getChild (i), CabbageIdentifierIds::channel).getCharPointer(),
^~~~~~~~~~~~~~~~
../../Source/Audio/Plugins/CsoundPluginProcessor.cpp:229:13: error: ‘class Csound’ has no member named ‘SetStringChannel’; did you mean ‘GetStringChannel’?
csound->SetStringChannel ("LAST_FILE_DROPPED", "");
^~~~~~~~~~~~~~~~
Makefile:187: recipe for target 'build/intermediate/Debug/CsoundPluginProcessor_dc39856c.o' failed
make: *** [build/intermediate/Debug/CsoundPluginProcessor_dc39856c.o] Error 1
Hi, I was able to disect the bug encountered and pictured at this comment, when run in Linux under Carla host.
retornz/ToneZ#4 (comment)
It's introduced by the single change at this commit: fefafd2
It's probably worth noting my sample rate is set at 48000.
When prepareToPlay
is entered the first time, the condition (sampleRate != samplingRate)
holds (having respective values 48000, 44100).
cabbage 3ac5fa8
carla-git 1:2.1.alpha2.r162.g8385b5ee-1
I'm using JUCE 5.4.7, and the git checkout version v2.4-372-ga91abe8f aka v2.5.0. When i do this make -f MakePluginEffect CONFIG=Release
, i get this error message
make: *** No rule to make target '../../JuceLibraryCode/include_juce_audio_plugin_client_VST2.cpp', needed by 'build/intermediate/Release/include_juce_audio_plugin_client_VST2_dd551e08.o'. Stop.
I've managed to make -f MakeCabbageIDE , but not sure about this error.
I think would be great for cabbage to Add bes instrument & effect as export options.
BES is plugin format for the Beast daw.
https://beast.testbit.org/
https://github.com/tim-janik/beast/
When creating a new VCV Rack project, the initial project code causes a warning in the console:
Warning: The following identifiers are not camelCase: "cvinput"(Line:8),"cvoutput"(Line:10),"pluginid"(Line:2). Cabbage uses camelCase for all identifiers, i.e, trackercolour() is now trackerColour(). Please use "Convert Identifiers to camelCase" from the File menu option to update your code. Or manually change the identifer listed.
The identifiers seem to be internal GUI widgets, so the user might not be able to change them. Is there a way to suppress this warning?
I am getting a "Reference to 'Point' is ambiguous" compile error on MacOS Catalina when building with Juce 5.4.7. Is anybody else hitting this?
The solution is to change all uses of Point
to juce::Point
but I don't want to do that if I'm the only one hitting the error.
Is anyone building on MacOS Catalina and can reproduce this error? I'm seeing some people reporting it at https://forum.juce.com/t/reference-to-point-is-ambiguous/24884/9 but nobody has reported it here, yet, so I'm curious. Am I the only one building on MacOS Catalina?
This would allow multi-file projects using imports and/or macros to inherit specific csound options.
Discussed here:
https://forum.cabbageaudio.com/t/idea-allow-macro-expansion-tokenization-of-csoptions/2098
Hello.
I’m working on a package for the Arch User Repository. I install Cabbage to /opt
and make executable symlinks to binaries in this directory from /usr/bin
. The package layout is as follows:
/opt/
/opt/Cabbage/
/opt/Cabbage/Cabbage
/opt/Cabbage/CabbageLite
/opt/Cabbage/CabbagePluginEffect.so
/opt/Cabbage/CabbagePluginSynth.so
/opt/Cabbage/Examples/***
/opt/Cabbage/cabbage.png
/opt/Cabbage/opcodes.txt
/usr/
/usr/bin/
/usr/bin/Cabbage (symlink to ../../opt/Cabbage/Cabbage)
/usr/bin/CabbageLite (symlink to ../../opt/Cabbage/CabbageLite)
/usr/share/
/usr/share/applications/
/usr/share/applications/Cabbage.desktop
/usr/share/applications/CabbageLite.desktop
When I run cabbage with /usr/bin/Cabbage the Examples menu doesn’t get fetched with examples (the menu items are grayed out). Also Cabbage get’s confused regarding its root: it looks for the *so file in the home directory. It doesn’t happen when Cabbage is started directly or though .desktop entries.
It’s a minor issue, but it makes packaging hard. As all files should be in the same directory as executables, I can’t just copy everything to /usr/local
or similar system directory.
FIY, here is the AUR packages I made: https://aur.archlinux.org/packages/cabbage-git
There's been a lag introduced at some point in gentable widgets that redraw/refresh.
Examples include:
This was also briefly discussed in #81
It looks like if a widget line uses an undefined macro, the next entry of values on the line gets lost.
In this example, commenting out the color macro loses bounds() for one widget, and items() for the other!
<Cabbage>
form caption("Combobox Example") size(400, 300), pluginID("test")
; commenting out the definition breaks things!
#define COLOR colour(255,0,0,255)
; this one loses it's items
combobox $COLOR items("1", "2", "3"), bounds(100, 100, 150, 30)
; this one loses it's bounds
combobox $COLOR bounds(100, 150, 150, 30), items("1", "2", "3")
</Cabbage>
<CsoundSynthesizer>
<CsOptions>
-n -d -+rtmidi=NULL -M0 -m0d
</CsOptions>
<CsInstruments>
; Leave most value default, need something to compile
ksmps = 32
</CsInstruments>
<CsScore>
;causes Csound to run for about 7000 years...
f0 z
</CsScore>
</CsoundSynthesizer>
This is how it looks by default:
And then if you comment out the color macro, which should in theory ONLY lose the color settings for the widgets, it looks like this:
I fixed my old instruments to avoid this, but figured I'd report it anyway. Having a "." instead of a "," prevented these widgets from ever appearing. Keep in mind they're normally invisible to start, and would only appear when "DEBUG" is set. It allows me to create test buttons for overriding input in a mic off (or mic broken, lol) environment.
I didn't test extensively in case it's an obvious fix... but if more info is needed I'll be glad to dig in a little more into what triggers this from the user end.
Hopefully this links right, I'm still learning my way around here:
tgrey1/Tgreys_Old_Cabbages@32ddda5
And also these two changes in this commit (as mentioned in the previous):
tgrey1/Tgreys_Old_Cabbages@620e229#diff-f68c27032b896f5acec1cd3c2f2047a2
and:
tgrey1/Tgreys_Old_Cabbages@620e229#diff-7604a5c1897e3e8c458fef39ccc8b93a
Since the changes involved in: #69
It seems like imported xml widgets only get the channel values in the popup, and aren't getting new formatting from prefix() and postfix().
Afaik single line comments in CSound can be started with ; or //
Thus their function should be represented visually in the same way. But ; comments are lime and // comments are white, like a number
For Cabbage 2.5.24, if the csd file does not contain a Cabbage start and end tags, when the tab is played, a popup warns about needing enclosing cabbage tags, then cabbage dies.
For Cabbage 2.5.24, according to the about dialog. v2.5.0-168-gc041e155 according to git describe --tags.
Cabbage crashes if select item in the drop down box at the menu bar, and no file is being shown. Eg.
I use an iMac 27" and an Apple magic mouse 2.
Problem: the scrolling in the Code Window is very twitchy. I don't experience this problem in any other software or app.
I tried setting the scroll parameter to "0.5" but it truncated to "0" so I got no scrolling. It seems to only allow integers.
Can you allow fractional parameters?
Also: can you add an option to change font size? This would have a side effect of reducing the "twitching scroll problem" because the line sizes would be bigger.
Thanks
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.