Coder Social home page Coder Social logo

rorywalsh / cabbage Goto Github PK

View Code? Open in Web Editor NEW
502.0 502.0 35.0 366.91 MB

Framework for developing audio plugins with the Csound programming language.

Home Page: http://cabbageaudio.com

License: GNU General Public License v3.0

C++ 95.11% C 1.07% Python 0.20% Shell 0.02% Makefile 0.07% Inno Setup 0.06% CMake 0.12% HTML 3.35%

cabbage's People

Contributors

alcomposer avatar andy-fillebrown avatar asmuth avatar awelex avatar brylie avatar docedub avatar jpcima avatar maurocsound avatar rorywalsh avatar spinnylights avatar tartanllama avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cabbage's Issues

[Request] Add LV2 as export options

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 :

  • VST3 (JUCE seems ready for that) : Would allow compatibility with DAW like FL Studio
  • LV2 (@falkTX has a fork of JUCE with a LV2 wrapper, I think he can give you some help here) : Would allow compatibility with LMMS soon !

Thanks in advance,

timing accuracy of note events..

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.

README?

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?

Warning: The current pluginId("") (Line:1) is not valid.

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?

Default .csd file contents
<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>

Cabbage doesn’t build with JUCE 5.3

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.

Linux: Debian Stretch only building CabbageLite

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

Virtual keyboard doesn't work on OSX unless -+rtmidi=null

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

Linux installation problems

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.

Exported effect plugins are recognized as VSTi and doesn’t process sound

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

Archlinux (AUR) builds failing all the time

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

Make tabbing in editor behave properly

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)

Doc Navigation Faulty

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.

image

I can manually open each document in the meantime via my file browser.

Linux build

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

Support Juce 5.4.3 on Linux

Jucer has seemingly new way of installing plugins via makefile. Seems to be incompatible with the current buildCabbage script.

compile error due csoundSetOpcodedir

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.

Readme is empty

The website says There is a README outlining the necessary steps.

The readme is nearly completely useless.
Any basic documentation available? :)

Failed build on Ubuntu 18.04

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.

Reverting to older Cabbage(Lite) versions doesn't overwrite executable on OSX

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.

feature request: (computer) keyboard input

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:

  • there will be new reserved channels LAST_KEY_PRESSED and LAST_KEY_RELEASED which value would be code/name of last pressed key
  • user can track changes via changed:k(...)
  • host/OS incompatibilites are responsibitlity of plugin developers, not your ;-)

SCREEN_WIDTH and SCREEN_HEIGHT macros not passed to csound

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>

Linux build incomplete

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,

Possibility to build from CLI?

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.

Linux build broken without VST 2.x

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!

Linux error during build

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

Setting Cabbage root

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

2018-03-23-115321_683x154_scrot

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?

Cabbage Windows 10 installation issues with Csound

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.

image

This roughly translates into:

Procedure entry point inflateValidate not found in library C:\Program Files\ Csound6_x64\plugins64\image.dll

build fail on Ubuntu 18.04

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

Imported widgets get wrong position with pos() and size()

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

Cabbage crashes with gcc11

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.

Can't build on Debian 9.8

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

In develop branch, problem instantiating Csound and UI

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

No rule to make include_juce_audio_plugin_client_VST2.cpp

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.

Warning: The following identifiers are not camelCase: "cvinput", "cvoutput" ,"pluginid"

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?

MacOS Catalina compile error "Reference to 'Point' is ambiguous"

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?

Cabbage doesn’t find examples and *so files when started via symlinks

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

Missing widget macros break parsing

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:
image

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:
image

. instead of , in widget declaration can break parsing

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

Color // and ; comments the same color

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

Crash if no file is loaded into view

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.

  1. Load a csd into cabbage
  2. hit X to remove the file in the tab just under the menu bar
  3. In the drop down box where the user can select the position in the file to jump to, select an item
  4. crash !

Suggestion: allow fractional mouse wheel parameter in "Settings"; also font size

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

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.