Cabbage Logo
Back to Cabbage Site

Mac OS VST export

I will go on some travels the next time. So I wanted to make VSTs for REAPER on my MacBook. Maybe I did some rookie mistake. But whether I try to export as VST or VST3 I always get
Bildschirmfoto 2022-07-03 um 12.18.20
inside REAPER instead of the real name. The plugins actually work as expected, but if they all get the same name it will be difficult to pick the right one.

On Windows the name was automatically taken from the csd file name. Is there something extra one has to do on Mac OS?

(Mac OS 10.15.7, Cabbage 2.8.10)

Oh that doesn’t seem right at all. Thanks for reporting it. I’ll take a look tomorrow morning first thing :+1:

I just tested here with Reaper and I see no issues. The plugins showed up under the correct name. 2.8.1 is quite old at this stage, can yo try the latest build: 2.8.121 Let me know how it goes :+1:

With the 2.8.121 build it works. Thanks!

One remark to the other noobs trying this: If you use .snaps for presets you have to open the vst3 package and copy the .snaps file into the folder Contents. (not to the folder where the .vst3 file is residing.)

Just wanted to mention that this problem raised its ugly head again when I tried exporting on a new M1-based Mac (Cabbage version 2.9.0). The plugin name is not shown, but
Bildschirmfoto 2023-12-27 um 08.18.02
But also the header of the GUI window is now
Bildschirmfoto 2023-12-27 um 08.19.47
and a process reaper_host_x86_64 is started. So I assume that on M1 Macs some kind of x86 emulation takes place for VST(3) plugins.

But I tried to export as AU, and that seems to work. So I don’t think there is urgency to solve this problem. Nevertheless, since M1 Macs will supplant Intel-based, a note in the manual may be nice the Mac users should preferentially export to AU. Also please mention that the AU plugins have to go into /Users/…/Library/Audio/Plug-Ins/Components. Usually working on a PC, it took me quite some time to figure this out.

I rejoiced too early… The ‘simple’ plugins of mine like Etude #1 work when I use ‘AU Export > Export as AU plugin synth’. But the one I am working on is supposed to send MIDI to the next in chain (using REAPER). That works on the PC if I use ‘Export as VST Plugin Synth’. For AU on Mac I suppose the right option in that case is ‘AU Export > Export as AU MIDI effect plugin’. (At least, when I try the other two AU export options no MIDI transmitted is shown in JS: MIDI Logger.) But then the plugin is not loaded by REAPER.

I can go back to the PC to do the development. But I really prefer the Mac because I have better coding tools there and Cabbage runs more stable. (On my PC I still have the problem with occasional freezes and crashes I mentioned in one of my first posts. Maybe they would go away with a clean re-install of Windows. But I don’t want to go through this until I am forced to upgrade to Windows 11.)

Finally, there is a strange blemish when I export on the Mac. The files get a wrong date:

Sorry about the German, in English that should be something like “Date of change”, “Creation date”, and “Added on” - and “Heute” means “Today” :wink: So only the last date is correct, but since I exported all files for the first time this morning all three dates should be equal.

Yes, it needs to be AU midi effect. Can you try the latest dev build? Details in the sticky post on the main Forum page. Note you’ll probably need to clear your AU cache.

I have now installed the latest build on the Mac. Also had REAPER clear the cache and reload all plugins. But it still does not load, even does not appear in the list of plugins failed to load.

I attach the csd file here. If you have time and access to a Mac, can you check?
yaerg-test-1.csd (5.3 KB)

If you have even more time ;-), can you check the exports as VST and VST3 on Windows? If that works for you, I would at least be sure that there is something with my setup of REAPER or even the Windows environment on my PC. There, at least the plugins show up in the ‘failed to load’ list, But that’s not very helpful, beacuse REAPER does not explain why it failed to load.

Thanks in advance!

Hi @RZorn, sorry for the delay in getting to this, work is crazy at the moment. I am able to load your .csd file in Reaper without any issues here. I will check on Windows when next I am at a Windows box, but I can’t see any reason why it would not work. I did also try to load the AU in Reaper but it is not showing at all, even though auval does list it as being seen. I will look into that and see if I can work out what’s going on.

I had a chance to try this in Reaper on Windows today. It loads fine for me, but… it crashes when I try to remove it from a track. I will investigate further.

I don’t want to hurry you. But I still don’t get that AU plugin loaded. I tried to change the ID to one with first character capital, as recommended here: Export to VST3 fails due to pluginId error. But that did not help. Actually, I never had problems with plugins having an ID starting with lowercase. I rather think it is the export option “AU MIDI effect plugin”. But I can’t avoid this because the point of the plugin is to issue MIDI note commands.

Sorry, I meant to say that I tested this on my Mac again and I have no issue getting MIDI plugins to work. This is the simple arpgeeiator example that ships with Cabbage loaded as a MIDI effect in Mainstage.

You have to make sure you code sign them. I think the reason I couldn’t get them to be seen by a host in my first attempt was because I wasn’t code signing them.

I tried the stock example. (I better always look for samples which do similar things I intend before starting any coding.) It shows nearly the same symptoms. If I export it as MIDI effect it is not shown by REAPER. There is a small difference: For my plugin it is possible to export as a Synth plugin. Then it is shown and can be loaded into REAPER. Not for the example plugin, that never shows, irrespectively how I export. But anyway, for this kind of plugins to export as synth would be pointless because only the non-MIDI functionality is available.

If that really has to do with the code sign requirement, it is a bummer. I don’t want to spend an annual fee to Apple just for running my own code. Still I wonder why the synth plugins (at least mine as Etude#1) do not require this.

But that means from now on I am stuck on the PC with the plugin development. And I remember I had some problems there, too. I will compare the mechanism of MIDI generation to the example. Sometimes, csound allows you to do the same thing with different opcodes, and maybe I just chose the wrong ones.

It only sucks if you with to distribute it. If you only want to work locally, you can adhoc sign it. Here’s a little script I use to adhoc sign my plugins. Usage:

./ ../../myplugin.component (55 Bytes)

p.s. you may need to change the privileges before you can use it, i.e, chmod +x

Sorry, it still does not work. Just to make sure that I did not make any noob mistake, here’s what I did:

  1. I load MIDI_Arpeggiator.csd from the Examples/MIDI directory into cabbage.
  2. I use Export Plugin > AU Export > Export as AU MIDI Effect Plugin from the file menu to create a file MIDI-Arp.component on my working directory.
  3. I run this on my working directory:
$ MIDI-Arp.component
MIDI-Arp.component: replacing existing signature

From the output I guess it did what it should do.
4. I copy the component to the directory where the other (functioning) AU plugins are:

$ cp -r MIDI-Arp.component /Users/zorn/Library/Audio/Plug-Ins/Components

When I start REAPER after that it still does not show the plugin.

Some more information I got from trying different things:

  • All the AU synth plugins I created that way work (even without code signing).
  • If I export the MIDI arp example as AU effect plugin, REAPER does show it with the user interface (but of course it does not create MIDI ). It does not load as synth though.
  • If I do the same with the plugin I wrote, it is a bit different, both synth and effect work, but not MIDI effect.
  • Finally, I tried to look at it with Garageband. (I have no other DAW on the Mac.) There I can only find the synth plugins, no others.

PS: Is the arp example you mentioned really the same as the example I used? I can’t identify the UI in the video.

No, it’s the simple arp example in the Misc folder. I’ll try to capture a video of this working for me today. Perhaps somewhere along the line it will fail here too :+1:

Garageband doesn’t support AU MIDI Fx. I’m starting to think that Reaper doesn’t either. But that’s not a problem because it does support VST Midi Fx. Anyhow, it’s still working here for me with MainStage which does support AU MIDI Fx. I’ve attached a quick video below showing the steps.

It looks like Logic Pro, Studio One, and MainStage support AU Midi Fx plugins. I’m not sure about any other hosts. Live doesn’t. It looks like Reaper doesn’t. I’m not sure about FL Studio, but I assume it doesn’t. Doesn’t look like Bitwig does either. I guess it makes sense. Why would any DAW devs spend time and money adding a feature that alreadys exists in the VST SDKs. :woman_shrugging:

In principle, REAPER should be able to use AU plugins:

Indeed, Etude#1…3 all work as expected. The problem comes only with the MIDI effects plugins. When I choose this option for the AU export, the plugin does not show up in the list. I can export as effect or synth plugin as you see from the names in the list ending with EP or SP. But then the plugin will not produce MIDI as expected.

I think I will give it a try with VST or VST3. (Maybe the REAPER guys did not implement the full functionality for AU.) At least the arp example plugin works that way. Before I start trying all combinations: My plugin should accept MIDI from upstream through the midiin opcode and send MIDI by midiout. In that case for VST(3) it is an effect or a synth? What would you recommend, VST or VST3?

One thing I noticed is that the VST3 file is also a package and needs code signing. Otherwise REAPER will put it on the ‘failed plugins’ list.