Cabbage Logo
Back to Cabbage Site

Pre-release Cabbage 2 for testing - part 8

Just a few things I have noticed with Cabbage v2.0.13a:

  • When opening a previously saved Cabbage patch that uses built-in examples the patches are not loading that are located outside of the patch folder. (I have checked that the default paths are correct for build-in examples)

  • Unable to increase the size of the Cabbage Patcher window. (maybe this is old news?)

PS: I am using the Cabbage.app as opposed to Cabbage Studio for a bit of multichannel testing, and IIRC Cabbage Studio doesn’t do multichannel yet. Super impressed at how far this project has come.

Thanks for the feedback. I hadn’t noticed the Cabbage patcher could not be resized :joy: I’ll take a look at the path issue too.

I have only tested on MacOS, so may not be an issue with MS build.

I’m also interested to know if Cabbage Studio will also go multichannel? (maybe already a multicannel build is available) I would be interested in being able to do 32 out.

CabbageStudio is now being replaced with the latest version of Cabbage which includes a patcher. Have you tried to select multiple outputs in the Audio settings? To be honest, I can’t recall if I already tackled this. Plugins can be multi-out, it depends on what you set as nchnls in your header section. I will be able to build a new version of OSX next week. I should have the issues you reported fixed by then.

No problems with multi-channel in Cabbage V2. I wasn’t aware that Cabbage Studio was being phased out. Thanks for clarifying that.

More “integrated” than “phased out” :wink:

I can’t seem to recreate the issue here. Do you mean older Cabbage patches are not loading correctly? This is a completely new implementation. I never gave any thought to backward compatibility with Cabbage Studio. I always assumed no one was actually using it for some reason?

p.s. I’ve fixed the resizing of the patcher window.

However, I did notice a bug in saving of current patches. The internal nodes, i.e., midi and audio inputs and audios are not being opened in their correct location. I’m looking into it now…

For the issue of Cabbage Patches not loading correctly- its only for built-in example patches. Any of those just don’t load again when re-opening the file.

Just noticed I am not on 6.09 CSound. This could be the problem…

Just upgraded from 6.07->6.09 and for some reason I am getting the MacOS 10.12 bug that was described here:

https://sourceforge.net/p/qutecsound/mailman/message/35558076/

Crashed Thread: 0 Juce Message Thread Dispatch queue: com.apple.main-thread

Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_PROTECTION_FAILURE at 0x00007fff5ba65fe8
Exception Note: EXC_CORPSE_NOTIFY

Termination Signal: Segmentation fault: 11
Termination Reason: Namespace SIGNAL, Code 0xb
Terminating Process: exc handler [0]

VM Regions Near 0x7fff5ba65fe8:
MALLOC_SMALL 00007fcb2f000000-00007fcb30000000 [ 16.0M] rw-/rwx SM=PRV
–> STACK GUARD 00007fff58266000-00007fff5ba66000 [ 56.0M] —/rwx SM=NUL stack guard for thread 0
Stack 00007fff5ba66000-00007fff5c266000 [ 8192K] rw-/rwx SM=PRV thread 0

Application Specific Information:
/Library/Frameworks/CsoundLib64.framework/Versions/6.0/Resources/Opcodes64/libfaustcsound.dylib
abort() called
*** error for object 0x7fcb29934a00: pointer being freed was not allocated

Thread 0 Crashed:: Juce Message Thread Dispatch queue: com.apple.main-thread
0 libsystem_malloc.dylib 0x00007fff97e4bed9 free + 84
1 libsystem_c.dylib 0x00007fff97d5d4ab exit + 48
2 0x000000010438d0b0 signal_handler + 96
3 libsystem_platform.dylib 0x00007fff97ed5bba _sigtramp + 26
4 ??? 000000000000000000 0 + 0
5 libsystem_c.dylib 0x00007fff97d5c420 abort + 129
6 libsystem_malloc.dylib 0x00007fff97e4c097 free + 530
7 libsystem_c.dylib 0x00007fff97d5d4ab exit + 48

UPDATE: Just deleted /Library/Frameworks/CsoundLib64.framework/Versions/6.0/Resources/Opcodes64/libfaustcsound.dylib

All fine now! :slight_smile:

I’m not sure I follow? There are no built-in examples patches? Only built-in examples instruments/files?

Yes I have it working now. When saving the cabbage patch, and re-opening the file, the CSD builtin example files would not load. Only custom CSD’s saved in folder.

Now with CS6.09.1 everything is working as expected.

That’s good to know. But I’m still seeing some issues with the patcher and the position of nodes in saved patches. I’ll try to get it sorted soon. And as I mentioned in a previous post, I should be able to get a new build of Cabbage 2 out for OSX early next week.

Thanks for the update Rory! Just wondering if its planned to add VST host abilities to Cabbage Standalone? This was present in Cabbage Studio.

That’s certainly part of the plan. May take a little time though.

It seems the position of labels inside a groupbox behaves oddly with 2.013a on OSX.
The labels are positioned offset relative to the form, not to the groupbox. On windows it works ok.

The attached example shows labels only in groupbox 1, since the labels intended for groupbox 2 have the exact same position and thus are overlaid.

<Cabbage>
form size(863, 410), caption("VST_OSC_mediator"), pluginID("vost")
image bounds(0, 0, 863, 810),  shape("sharp"), colour(5,15,20)
label text("port"), bounds(10, 10, 80, 12), identchannel("port_id")

groupbox bounds(5, 30, 853, 81), plant("plant_parm1"), linethickness("0"), identchannel("fgroup1_module"){ 

label bounds(10, 58, 96, 12), text("mixmeth"), colour(20,20,20,255)
label bounds(110, 58, 100, 12), text("source"), colour(20,20,20,255)
label bounds(213, 58, 50, 12), text("chan"), colour(20,20,20,255)
label bounds(266, 58, 76, 12), text("rise/fall"), colour(20,20,20,255), visible(1), identchannel("riselabel_parm1_id")
label bounds(266, 58, 76, 12), text("lowpass"), colour(20,20,20,255), visible(0), identchannel("lowpasslabel_parm1_id")
label bounds(346, 58, 110, 12), text("scale"), colour(20,20,20,255), visible(1), identchannel("scalelabel_parm1_id")
label bounds(346, 58, 93, 12), text("thresh"), colour(20,20,20,255), visible(0), identchannel("threshlabel_parm1_id")
label bounds(446, 58, 48, 12), text("trig"), colour(20,20,20,255), visible(0), identchannel("triglabel_parm1_id")
label bounds(462, 58, 81, 12), text("curve"), colour(20,20,20,255), visible(1), identchannel("curvelabel_parm1_id")
label bounds(502, 58, 50, 12), text("status"), colour(20,20,20,255), visible(0), identchannel("statuslabel_parm1_id")
label bounds(559, 58, 30, 12), text("s/h"), colour(20,20,20,255), visible(0), identchannel("shlabel_parm1_id")
label bounds(559, 70, 30, 12), text("\/"), colour(20,20,20,255), visible(0), identchannel("shlabel2_parm1_id")
label bounds(598, 8, 74, 12), text("midi env"), colour(20,20,20,255), visible(0), identchannel("midienvlabel_parm1_id")
label bounds(598, 44, 74, 12), text("rise/fall"), colour(20,20,20,255), visible(0), identchannel("outriselabel_parm1_id")
}


groupbox bounds(5, 115, 853, 81), plant("plant_parm2"), linethickness("0"), identchannel("group2_module"){ 

label bounds(10, 58, 96, 12), text("mixmeth"), colour(20,20,20,255)
label bounds(110, 58, 100, 12), text("source"), colour(20,20,20,255)
label bounds(213, 58, 50, 12), text("chan"), colour(20,20,20,255)
label bounds(266, 58, 76, 12), text("rise/fall"), colour(20,20,20,255), visible(1), identchannel("riselabel_parm2_id")
label bounds(266, 58, 76, 12), text("lowpass"), colour(20,20,20,255), visible(0), identchannel("lowpasslabel_parm2_id")
label bounds(346, 58, 110, 12), text("scale"), colour(20,20,20,255), visible(1), identchannel("scalelabel_parm2_id")
label bounds(346, 58, 93, 12), text("thresh"), colour(20,20,20,255), visible(0), identchannel("threshlabel_parm2_id")
label bounds(446, 58, 48, 12), text("trig"), colour(20,20,20,255), visible(0), identchannel("triglabel_parm2_id")
label bounds(462, 58, 81, 12), text("curve"), colour(20,20,20,255), visible(1), identchannel("curvelabel_parm2_id")
label bounds(502, 58, 50, 12), text("status"), colour(20,20,20,255), visible(0), identchannel("statuslabel_parm2_id")
label bounds(559, 58, 30, 12), text("s/h"), colour(20,20,20,255), visible(0), identchannel("shlabel_parm2_id")
label bounds(559, 70, 30, 12), text("\/"), colour(20,20,20,255), visible(0), identchannel("shlabel2_parm2_id")
label bounds(598, 8, 74, 12), text("midi env"), colour(20,20,20,255), visible(0), identchannel("midienvlabel_parm2_id")
label bounds(598, 44, 74, 12), text("rise/fall"), colour(20,20,20,255), visible(0), identchannel("outriselabel_parm2_id")

}



</Cabbage>
<CsoundSynthesizer>
<CsOptions>
;-n -d -+rtmidi=portmidi -Q5 -M0 -m0d
-n -d -+rtmidi=NULL -Q0 -M0 -m0d
</CsOptions>
<CsInstruments>

	ksmps = 64
	nchnls = 2
	0dbfs = 1
instr 1
endin


</CsInstruments>
<CsScore>
i1 0 3600
</CsScore>
</CsoundSynthesizer>

Also, the colours of gentable displays seem to have disappeared (both on OSX and Win)
The following example used to display table contents as coloured curves, but now the curves are all black.

`
<Cabbage>
form size(200, 200), caption("Analyzer"), pluginID("anlz")
gentable bounds(20, 20, 160, 140), identchannel("rhythm_consonance_tab"), tablenumber(5,6,7), tablecolour("red", "lightblue", "darkolivegreen"), tablegridcolour(0,0,0,0), amprange(-0.15,1,5), amprange(-0.15,1,6), amprange(-0.15,1,7), zoom(-1), samplerange(0,32)

</Cabbage>
<CsoundSynthesizer>
<CsOptions>
-n -d -+rtmidi=NULL -M0 -m0d
</CsOptions>
<CsInstruments>


        gi5     ftgen   5, 0, 32, -7, 0, 32, 0.9
        gi6     ftgen   6, 0, 32, -7, 0, 32, 0.6
        gi7     ftgen   7, 0, 32, -7, 0, 32, 0.3

        instr 1
        endin
        
</CsInstruments>
<CsScore>
i1	0	3600
e
</CsScore>
</CsoundSynthesizer>

`

I suspect this has been sorted, but we need a new build for OSX. I can create one on Wednesday.

Although this should work, the recommended way of setting table colours is to use the tablecolour:N() identifier. I never liked the fact that one couldn’t specify RGB colours for multiple tables. In the old system I had to automatically add an alpha channel. I prefer users to add their own alpha values. I also wanted to make it possible to easily change the table colours using the new GUI editor properties panel. But, it should still work this way as I don’t want to break any previous instruments. I will look into it. In the meantime, if you change your Cabbage code to this it will work as expected:

gentable bounds(20, 20, 160, 140), identchannel("rhythm_consonance_tab"), tablenumber(5,6,7), tablecolour:0("red"), tablecolour:1("lightblue"), tablecolour:2("darkolivegreen"), tablegridcolour(0,0,0,0), amprange(-0.15,1,5), amprange(-0.15,1,6), amprange(-0.15,1,7), zoom(-1), samplerange(0,32)