Is audiounit~ a vst~ (and vice-versa)

    Jan 02 2020 | 5:53 pm
    Hi on latest max (8.1.1) and on the latest MacOS (10.15.2), I am redoing and upgrading my preferred patches. When using some plug-ins (such as native Instruments' Guitar Rig) I have been told that the audio units do work better (??) on a Mac.. Maybe... but How do I know for those plug-ins which have versions as VST and Audiounits which one is loaded ? of course if I search "manually" (with the "plug" message) I can choose, but with a message in the object (such as [vst~ "guitar Rig 5"] ) ? It seems to me that the choice of the object [audiounit~] or [vst~] should make the difference - does it ? - BUT when saving presets with message "write" [audiounit~] does not work as expected (or as [vst~] does.... It writes the presets in very strange places, sometimes in invisible folders, and is often unable to find them.... when [vst~] works as expected. Which makes me want to use [vst~], but is it different from [audiounits~] ????

    • Jan 02 2020 | 6:21 pm
      ok a few elements more : I created 3 new objects [vst~ "Guitar Rig 5"], [audiounit~ "Guitar Rig 5"] and [vst~] with a message "plug" and I showed it the audiounit "Guitar Rig 5" ___then quit max, take the "Guitar Rig 5" plugin off the VST folder and restart max
      only the [vst~] finds the plug-in (I did expect that the [audiounit~ "Guitar Rig 5"] would find it, it does not) what's more using the message "plug_au "Guitar Rig 5" which i did hope would open the AU version of the plug-in (on both vst~ and audiounits~ objects) does not work if the vst plug-in is missing - so it seems me it calls the VST plug, not AU.
      So how can I call at startup, or later, by a message the AU version of the plug-in ??? And what is the [audiounit~] object ??? just a different name for vst~ ??
      if anyone knows, thanks Kasper
    • Jan 02 2020 | 7:47 pm

      prefer [symbol] (default: VST)

      In the absence of other information, such as an absolute path to a plug-in file or an explicit typed plug-in path (e.g. C74_VST:/[pluginname], C74_VST3:/[pluginname], or C74_AU:/[pluginname] on OSX), the prefer attribute will be used to preferentially load one type of plug-in before other available formats when using the plug message. Note that the variations plug_vst, plug_vst3, and plug_au can also be used to override the specified preference.
      Possible values:
      'VST' 'VST3' 'AudioUnit'
      regarding save paths: you can choose a location yourself when writing files? this should fix the issue that stuff lands somewhere out of your control. if you dont choose a location, max will go to the last used path.
    • Jan 02 2020 | 8:48 pm
      Hi Roman
      many thanks : yes what you describe is the way it SHOULD be, however it works differently : • a message "plug_au" send to an audiounit~ object seems to open the VST version of the plug-in (when i took the vst version of the said plug-in from the VST (not components) folder it returned that it can not open the plug-in (!!) - • regarding save path : without a path it sometimes saved the preset in the application folder, and with a precise path- such as "GRIS16:/Users/ktt/Documents/MAX_KTT/PLUGS_KTT/noise" (to which I add fxp at the end in case of a vst plug) it saves the preset in a different, invisible folder, (the LIBRARY folder which is in the "user" folder) where it recreates the other folders and names them Documents MAX_KTT & PLUGS_KTT. And then is unable to find the preset. I did not tried with vst3, but the audiounit~ seems very unreliable to me.... where the VST~ object works as it should. Could also be because I Use the latest maxOS (on a new mac, not really a choice).
      Beside does anyone know what is the difference (in real world) between vst and AU ??? is one "superior" to the other ?
    • Jan 02 2020 | 11:58 pm
      The main difference is that all parameters of VST are floating point numbers with the range 0..1. while AU parameters can have different types and ranges.
      Btw, I think audiounit~ is not (and never was) officially supported.
    • Jan 03 2020 | 1:21 am
      [audiounit~] is just an alias name for [vst~]. It is not a different object. When you want to load a specific version of a plugin (au, vst2, vst3), you have to use the prefer attribute (see Roman above).
    • Jan 03 2020 | 10:27 am
      i would be stupid to guarantee that objects will work as they should, because my own experience leads otherwise.^^ however, i thought it is fundamental to understand first how it should work, and vst should be default over vst3 and au anyway. what i dont know is what happens when there are AUs in /user/... and the corresponding VST is in /library/... and similar combinations. or when a VST version fails to load or has wrong file rights. are you sure your VST has exactly the same filename as the AU version? because according to the holy reference it will should even work with "plug" that it is chosen automatically. that path problem beats me. try using [opendialog] with "write". that´s safe then.
    • Jan 03 2020 | 10:45 am
      @ BROC - since the audiounit~ object is in the official distribution, one would think that it is very officially supported @ JEAN-FRANCOIS CHARLES - ok, let's say say that audiounit~ is an alias for vst~ : however it reacts differently to the same messages , for instance "write" does not bring a dialog window (asking where to write and with what name) And also if to 2 different VST~ objects load the same plug but one with the plug_au message when the other with plug_vst, and the quit max, take the VST instance of the plug away from the plug-ins folder and restart max and my patch _the vst~ object loaded with the VST plug-in can not find it (which is normal) but the vst~ loaded with an AU object can not find it either and says vst~: unable to resolve AU plugin Guitar Rig 5: plugin file not found
      _what's more, creating a new vst~object with the "prefer AudioUnit" attribute sends the same message.... as if it was looking for a vst. Given the fact that audiounit~ also writes the presets not where I ask it to do so but into some fantasy places (or invisible folders), I will stick with VST (so far I do not see a plug-in which would be only AU..)
      many thanks for your answers kasper
    • Jan 03 2020 | 10:52 am
      @ Roman : I use the VST (in vst~) since years and tried just because I have heard (?) that AU were superior... And yes, double-checked and the names are strictly identical (except for the final .vst or .component)
    • Jan 05 2020 | 7:26 pm
      Again, there is no such object as [audiounit~]. It is just an alias for [vst~]. You can see that for instance if you look in the audio-objectmappings.txt file, which resides inside of the Max application folder . Whether you instantiate the object as [audiounit~] or [vst~], the 'write' message will work differently if you load a VST or an AudioUnit plugin. You see the difference in the help file, if you look at the "state saving" tab, they describe what happens when a VST plugin is loaded. To see the effect of "write" when you load an AudioUnit plugin, see the "audio unit" tab.
    • Jan 06 2020 | 8:58 am
      As first there is audiounit~.mxo object. It was in use before vst~ object supported au plugs. Last version was published 2010. Regarding paths, versions etc, personaly I prefer to disable max plugin scan,database etc and use absolute path to plugin of choice. That is also a better way for standalone which has included vst plugin for example. P.S. now I remember also au~.mxo , another older au plug hoster external for max for 2009
    • Jan 06 2020 | 11:32 am
      i was about to say it, maybe he has the [audiounit~] object installed and now that thing loads. or would objectmappings have priority?
    • Jan 06 2020 | 1:25 pm
      audiounit~.mxo would not load in 64 bit max at all. It was 32 bit only. If one want's to be sure what's loaded, send absolute path to vst plugin. like plug /Library/Audio/Plug-Ins/VST/my-plug.vst
    • Jan 06 2020 | 2:53 pm
      Also, a recent update made the default @prefer attribute be "AudioUnit" if you instantiate as [audiounit~] and "VST" if you instantiate as [vst~] - that was not the case for Max 8.0. Kasper, that might be the reason you see the different results for the 'write' message (see my previous message).
    • Jan 09 2020 | 11:15 am
      many thanks for all those answers : just to make clear - _since it is a fresh install on a new Mac (and 64 bits only) there is no older objects (no [au~]) _I like very much to use absolute path for my presets, trouble is here it does not work : when I define an absolute patch with my write message, it recreates the folders inside of the hidden "library" folder which is in the ~ (this stands for the "little house" I presume) folder. Which brings the question HOW to define an absolute path that write would follow ?? or how to see the invisible folders ??? (and inside them). Also all in all I haven't seen any reason to use AU plug-ins (most come in 2 flavours, except for the ones which are build inside of the OS) Thanks again for the answers Kasper
    • Jan 09 2020 | 11:33 am
      If You want own path for presets - stick with Vst. Au has it's own - apples - forced way. Only thinkable way with au would be to iter through parameters, dump them into coll or something, and fire back to plugin for recall.
    • Jan 09 2020 | 2:09 pm
      "Also, a recent update made the default @prefer attribute be "AudioUnit" if you instantiate as [audiounit~] and "VST" if you instantiate as [vst~] - that was not the case for Max 8.0." aha! well, it is only logical to change it to this behaviour, isnt it.
    • Jan 09 2020 | 2:13 pm
      I have mostly used AudioUnits as they were designed: user presets are automatically written to ~/Library/Audio/Presets. Each preset is an .aupreset text file, easy to find and look into. Another solution I used for given plugins has been to have UI objects for each parameter I wanted to control and use a pattr-based solution (interesting especially if you want interpolation between stored states).
    • Jan 10 2020 | 10:18 am
      @JEAN-FRANCOIS CHARLES : you say "Each preset is an .aupreset text file, easy to find" - but how do you look inside ~/Library/Audio/ since it is a hidden folder ??? Yes a stupid question, i know....
    • Jan 10 2020 | 11:21 am
      In the Finder, open your home folder. Then go in ther Finder's "View" menu and choose "Show View Option". There you can enable the "Show Library Folder" option:
      This is under X.15 and earlier (don't know about X.16).
      If it doesn't wotk, there is the "Goto Folder" item in Finder's Go menu. There you can type full pathes.
    • Jan 10 2020 | 2:38 pm
      Sorry Kasper, indeed, it's both easy and hidden. I didn't know about the first option shown by Patrick. I do: - click on the Desktop (bring the "Finder" menus) - click on the menu item "Go" - press the Option key on the keyboard to make the Library folder appear This is your user Library (~/Library). - then, select this revealed Library item.
    • Jan 11 2020 | 10:14 am
      Thank you both ! years using macs and I didn't knew this !!! ha ha ha!! now maybe AU will start making some sense (or not).
    • Jan 11 2020 | 1:53 pm
      the library was not always a hidden folder, and it is a really stupid idea by apple. using a fixed aupreset location is great when you want to share patches across host programs. it is not such a good idea for making a max project portable. i am a big fan of "path"-[thispatcher] for these moments where you want to store stuff right beside the main patch of the project.