atsushieno / augene

MML compiler connected to "audio plugin based" music player / deprecated. Switch to augene-ng.
GNU General Public License v3.0
3 stars 0 forks source link

Portable plugin graph #1

Open atsushieno opened 4 years ago

atsushieno commented 4 years ago

Right now, when we use this tool to define audio plugin graphs for each track, those plugins are recorded as bare filtergraph generated by AudioPluginHost. When we switch environment across platforms, those plugins become different (they would be AU on Mac, and they would be VST3 on Windows and/or Linux, or LV2 on Linux). Since my secondary purpose of this project is to support AAP, it has to be also portable to Android too.

Since they don't share the same set of plugins, it is song author's responsibility to use the set of common audio plugins. But even if they use only such plugins, those filtergraph files from AudioPluginHost is platform dependent.

Maybe there should be some kind of mapping aliases, or at least per-platform filtergraphs. But the fundamental problem lying around here is, what is an "identical" plugin? Some possible usage scenarios:

Can we cover some or all of them?

atsushieno commented 3 years ago

AudioGraph element is now given a name, meaning that it is somewhat more abstract than before.

atsushieno commented 3 years ago

Some relevant web resources (will be updated):

atsushieno commented 3 years ago

I tried loading OPNplug's JUCE-VST3 state on aap OPNplug (which is JUCE-AAP), but turned out that the state is VST3-specific and not immediately portable on AAP. Yet the content seems to be just wrapped and the content may be still reusable.

atsushieno commented 3 years ago

...That however involves manual importing and it cannot be regarded as "implemented".

atsushieno commented 3 years ago

I have integrated jlv2 into augene, as well as build scripts for AudioPluginHost to add LV2PluginFormat, so that I can use LV2 plugins along with VST3. It would also help bringing in portable LV2 plugin graphs.

atsushieno commented 3 years ago

For LV2 plugins, there is LV2_State_Map_Path feature that should be provided by the host of which a plugin can make use to convert absolute and abstract file paths. https://lv2plug.in/doc/html/group__state.html#structLV2__State__Map__Path

It is used by sfizz for example, so that SFZ files are stored in abstract form, not immediate path.

atsushieno commented 2 years ago

Even for the same JUCE plugin project sources, the uid on VST and AU are different. They need certain mappings.