Cabbage Logo
Back to Cabbage Site

Cabbage3 alpha release

Oh! It probably is from the name of the file. In this case I named the file the same as the ID.

Mine is just an effect, so it should be ok.

Could you actually load the effect on a channel in MainStage? I don’t see mine on the channel’s menu.

Tried it in Mainstage. Mainstage allows me to select the plugin, which then crashes Mainstage. Not sure why Mainstage allows me to see it but Logic does not.

If I load MainStage with ‘Open With Rosetta’ selected, the plugin works fine for me. So it seems it’s particular the arm64 builds, which I have no way of actually debugging without disabling all my system securities :face_with_symbols_over_mouth:

Hmm, the plot thickens. It seems that the sandboxing process for AUs prevents any local server from running. I will look at bundling all html resources into a single file and removing the need for the server…

Thank you for tackling all of this. So many complexities that I know nothing about!

I’ve finally got a Cabbage plugin loading and showing in Mainstage :clap: There were many issues to contend with here. I will try to clean everything up and trigger a new build later today. I’ll let you know when it’s cooking :+1:

I saw a new version was available. I grabbed it and get the following in MainStage when I rescan the plugins:

validating Audio Unit glbt by CabbageAudio:

    AU Validation Tool
    Version: 1.10.0 
    Copyright 2003-2019, Apple Inc. All Rights Reserved.
    Specify -h (-help) for command options

--------------------------------------------------
VALIDATING AUDIO UNIT: 'aufx' - 'GLBT' - 'Cabb'
--------------------------------------------------
Manufacturer String: CabbageAudio
AudioUnit Name: glbt
Component Version: 0.0.1 (0x1)

* * PASS
--------------------------------------------------
TESTING OPEN TIMES:
COLD:
[ERROR] cannot determine plugin description


validation result: crashed validation

Thanks for testing @Bryan_T. My local builds are working fine, so at least progress has been made. I’m away from the PC for the next few days, but I will get back to this as soon as I can. We’re very close to a solution!

It could be an issue with the plug-in I’m testing, though it builds fine in VSCode. If you share your .csd file, I’ll test the same one.

I can see the issue now and it’s a good one! I have some ideas for a fix :+1:

@Bryan_T Good news at last! I have this sorted now. You should now be able to export both AU effects and AU instruments. I haven’t added support for AU midi processors yet, but I can do so if needed. Just make sure that you provide a unique pluginId for each plugin, I think Apple hosts are pretty fussy about this. And here are a few commands that will save you a lot of time when testing!

killall -9 AudioComponentRegistrar - AudioComponentRegistrar manages the AU stuff. The OS will restart it when yo unext scan for plugins. This saves you from having to restart you system if you make a change to a plugin

rm -rf ~/Library/Caches/AudioUnitCache && rm -rf ~/Library/Caches/com.apple.audiounits.cache - remove the AudioUnit cache, which causes all Apple host to do a full rescan when started. YOu may need to run this command if you update a plugin.

Let me know how it goes. It’s really nice to be able to open Cabbage 3 plugin in Garageband and Mainstage now :+1:

1 Like

No luck so far.

Logic shows this when I reset and rescan the plugin:

Fetching Audio Unit info for GateLoopCab3
Done

MainStage shows this:

validating Audio Unit GateLoopCab3 by CabbageAudio:

    AU Validation Tool
    Version: 1.10.0 
    Copyright 2003-2019, Apple Inc. All Rights Reserved.
    Specify -h (-help) for command options

--------------------------------------------------
VALIDATING AUDIO UNIT: 'aufx' - 'WKRP' - 'Cabb'
--------------------------------------------------
Manufacturer String: CabbageAudio
AudioUnit Name: GateLoopCab3
Component Version: 0.0.1 (0x1)

* * PASS
--------------------------------------------------
TESTING OPEN TIMES:
COLD:
[clap-wrapper] auv2: Initialized 'com.cabbageaudio.wkrp' / 'Cabbage1d47Plugin' / '1.0.0'
DEBUG: Resetting csound ...
csound = 0x6000033c80a0 [Cabbage.cpp (113) setupCsound Thread ID: 0x1ff7d20c0]

DEBUG: Logger initialized and ready! [LatticeClapPlugin.cpp (28) LatticeClapPlugin Thread ID: 0x1ff7d20c0]

0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
Time to open AudioUnit:         31.569 ms
WARM:
[clap-wrapper] auv2: Initialized 'com.cabbageaudio.wkrp' / 'Cabbage1d47Plugin' / '1.0.0'
DEBUG: Resetting csound ...
csound = 0x6000033eb080 [Cabbage.cpp (113) setupCsound Thread ID: 0x1ff7d20c0]

DEBUG: Logger initialized and ready! [LatticeClapPlugin.cpp (28) LatticeClapPlugin Thread ID: 0x1ff7d20c0]

0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
Time to open AudioUnit:         7.384  ms
This AudioUnit is a version 2 implementation.
FIRST TIME:
Time for initialization:        0.001 ms

* * PASS
--------------------------------------------------
VERIFYING DEFAULT SCOPE FORMATS:
Input Scope Bus Configuration:
 Default Bus Count:1
    Bus Name: Input Bus10
    Default Format: AudioStreamBasicDescription:  2 ch,  44100 Hz, Float32, deinterleaved

Output Scope Bus Configuration:
 Default Bus Count:1
    Bus Name: Output Bus10
    Default Format: AudioStreamBasicDescription:  2 ch,  44100 Hz, Float32, deinterleaved

* * PASS
--------------------------------------------------
VERIFYING REQUIRED PROPERTIES:

* * PASS
--------------------------------------------------
VERIFYING RECOMMENDED PROPERTIES:
  VERIFYING PROPERTY: Latency
    PASS
  VERIFYING PROPERTY: Tail Time
WARNING: Recommended Property is not supported

  VERIFYING PROPERTY: Bypass Effect
    PASS

* * PASS
--------------------------------------------------
VERIFYING OPTIONAL PROPERTIES:

* * PASS
--------------------------------------------------
VERIFYING SPECIAL PROPERTIES:

VERIFYING CUSTOM UI
Cocoa Views Available: 1
  wrapAsAUV2_inst_cocoaUI_com_cabbageaudio_wkrp
    PASS

VERIFYING CLASS INFO
WARNING: Preset name is not retained in retrieved class data
    PASS

TESTING HOST CALLBACKS
    PASS

* * PASS
--------------------------------------------------
PUBLISHED PARAMETER INFO:

# # # 20 Global Scope Parameters:
0.00
0.00
60000.00
0.00
0.00
60000.00
0.00
0.00
60000.00
0.00
0.00
60000.00
0.00
0.00
1.00
0.00
0.00
1.00
0.00
0.00
1.00
0.00
0.00
1.00
0.00
0.00
1.00
0.00
0.00
1.00
0.00
0.00
1.00
0.00
0.00
1.00
0.00
0.00
1.00
0.00
0.00
1.00
0.00
0.00
1.00
0.00
0.00
1.00
0.00
0.00
0.10
0.00
0.00
0.50
0.00
0.00
0.01
0.00
0.00
1.00

* * PASS
--------------------------------------------------
FORMAT TESTS:

Reported Channel Capabilities (explicit):
      [2, 2]  

Input/Output Channel Handling:
1-1   1-2   1-4   1-5   1-6   1-7   1-8   2-2   2-4   2-5   2-6   2-7   2-8   4-4   4-5   5-5   6-6   7-7   8-8
                                          X                                                                       

* * PASS
--------------------------------------------------
RENDER TESTS:

Input Format: AudioStreamBasicDescription:  2 ch,  44100 Hz, Float32, deinterleaved
Output Format: AudioStreamBasicDescription:  2 ch,  44100 Hz, Float32, deinterleaved
Render Test at 512 frames
Slicing Render Test at 64 frames
  PASS


Render Test at 64 frames, sample rate: 22050 Hz
Render Test at 137 frames, sample rate: 96000 Hz
Render Test at 4096 frames, sample rate: 48000 Hz
Render Test at 4096 frames, sample rate: 192000 Hz
Render Test at 4096 frames, sample rate: 11025 Hz
Render Test at 512 frames, sample rate: 44100 Hz
  PASS

Checking connection semantics:
Connection format:
AudioStreamBasicDescription:  2 ch,  44100 Hz, Float32, deinterleaved
  PASS

Bad Max Frames - Render should fail
  PASS

Checking parameter setting
Using AudioUnitSetParameter
Using AudioUnitScheduleParameter
  PASS

Test MIDI
WARNING: AU implements MusicDeviceMIDIEvent but is of type 'aufx' (it should be 'aumf')
  PASS

* * PASS
--------------------------------------------------
AU VALIDATION SUCCEEDED.
--------------------------------------------------


validation result: successfully validated

updating properties of AU GateLoopCab3 by CabbageAudio…

The plugin does not appear in the plugin menu on a track in either program.

That’s odd. If the plug-in passes validation, I don’t understand why it’s not showing. If you open the plug-in manager in MainStage, is the plug-in listed as validated? If it is, it should be available in your track effects slot. Here’s how it works for me.

I just tried with Garageband, and I can load my plugins there too without any problems. I assume you’re running a M chip Mac? Is there any chance your host are set to run in Rosetta?

[edit] I just tried running MainStage through Rosetta. In this case the plugin’s do not pass validation…

Let’s try using the same .csd file. Can you please share the one you’re testing with?

I’m just trying the examples that come with cabbage. Use the command “cabbage: open a widget example”. I tried the keyboard example for a synth, and the rotary slider example for an effect. I had to change the plug Id as they were the same. You’ll need to save as if you want to change an example as they are protected. You can send me your csd if you like, or PM me if you want.

Ok. I loaded the keyboard.csd file, saved it as my own copy, and changed the ID to KEYB.

Exported as an AU2. I see it in Mainstage’s plug-in manager:

But I do not see it when trying to add to a track:

Probably user error, but not sure where I’m going wrong.

Edit: Same issue with the rotary slider example.

Edit2: I’m on an M2 Mac Mini.

Your fx plugins are showing up on the list, you should be able to click on one you want to add. You need an instrument track if you want to add a synth. They won’t show under the effects slot.

I’m getting weird behavior that might help figure out what I’m doing wrong.

If I load a guitar instrument track (the default “Brit and Clean” one) it has a bunch of Audio FX effects on it already. Noise gate, Pedalboard, Amp, Channel EQ, Compressor, and Tape Delay. I can replace any of them with the Cabbage 3 plugins, except for the Noise Gate - the plugins do not appear there.

If I delete the Noise gate, then I cannot replace Pedalboard with a Cabbage 3 plugin - they no longer appear on the list.

For whatever reason, i cannot put a Cabbage 3 plugin first in the effects list. Weird.