AU and VST Cross platform

I saved a file on OSX with the pluginHost demo and tried to open the file on a Windows machine (VST).

It did not work. The file was saved using an AudioUnit, Kontakt 5.

How would one do this?

I was able to change the PluginDescription to correctly load the plugin. The problem is that the AudioUnit header needs to be converted to the Ccnk data and of course vice versa going the other way.

Anybody know how to do this?

I am getting closer. I found this on the juce forum but I don't know python.

Is anybody willing to convert this python code to juce c++?

Erm, Python?!

Have you tried building the example audio plugin demo and tried it? Did it work?

{Actually, I think AU is only on OSX}

Hint: Yes, they work on OSX/Win and Linux


My Python script is for converting .aupreset files (as used by Logic for saving presets) to .fxp files, and it only works for plugins created with JUCE, and probably won't work for other plugins. Here's why:

Audio units save their state into a "CFPropertyList" and JUCE adds a specific key ("jucePluginState"/JUCE_STATE_DICTIONARY_KEY) to store the data block returned by the JUCE plugin's getCurrentProgramStateInformation/getStateInformation. (relevant code at, JuceAU::SaveState).

My script looks for this specific key in the .aupreset file.

I'd look in Kontakt 5's returned state to see if they too save their state in a block in the property list (the AU host-side code in, AudioUnitPluginInstance::getCurrentProgramStateInformation encodes the CFPropertyList from the AU into a MemoryBlock, you'll have to decode it back to look..). If they do, it shouldn't be hard to convert Kontakt 5's state to VST, but this wouldn't be a generic solution for all AU plugins.

Thank you for the info, but I am looking for a solution for all plugins.

I used Kontakt 5 as an example.

I guess I have some reverse engineering work ahead of me.

Any volunteers? This would be a great juce feature, seeing juce is almost a cross platform enviroment.

This isn't really possible for the general case. JUCE plugins happen to add a "jucePluginState" entry to the AU state property list but another plugin could for example store the state in the property list accross different keys while storing it in a completely different format in vsts..