From 97570a47ba71a47c1fb1f6b3a2bd846566a6a959 Mon Sep 17 00:00:00 2001 From: Robbert van der Helm Date: Wed, 16 Dec 2020 22:06:45 +0100 Subject: [PATCH] Add a document with all implemented interfaces --- README.md | 11 ++--------- src/common/serialization/vst3/README.md | 26 +++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 9 deletions(-) create mode 100644 src/common/serialization/vst3/README.md diff --git a/README.md b/README.md index 5d7e6a8c..1c3e5d9f 100644 --- a/README.md +++ b/README.md @@ -21,15 +21,8 @@ incomplete list of things that still have to be done before this can be used: - `IEditController{,2}` - All other mandatory interfaces - All other optional interfaces -- Fully implemented: - - `GetPluginFactory()` and `IPluginFactory{,2,3}` - - `IPluginBase` and `IComponent` - - `IBStream` - - `IAudioProcessor` - - Everything surrounding `ProcessData`, `ProcessingContext` and - `AudioBusBuffers` - - `IParameterChanges`, `IParamValueQueue`, `IEventList`, and all event types - in VST 3.7.1 +- Fully implemented: see [this + document](https://github.com/robbert-vdh/yabridge/tree/feature/vst3/src/common/serialization/vst3/README.md) - Update the GitHub Actions workflows. - Update yabridgectl to handle buth VST2 and VST3 plugins. - Update all documentation to refer to VST2 and VST3 support separately, and diff --git a/src/common/serialization/vst3/README.md b/src/common/serialization/vst3/README.md new file mode 100644 index 00000000..e93902ec --- /dev/null +++ b/src/common/serialization/vst3/README.md @@ -0,0 +1,26 @@ +# VST3 interfaces + +TODO: After merging into master, update this link to just point to GitHub + +See [docs/vst3.md](../../../../docs/vst3.md) for more information on how the +serialization works. + +VST3 interfaces are implemented as follows: + +| Yabridge class | Interfaces | Notes | +| ------------------- | ------------------------------------------------------ | ---------------------------------------------------------- | +| `YaComponent` | `IComponent`, `IPluginBase`, `IAudioProcessor` | | +| `YaHostApplication` | `iHostAPplication` | Used as a 'context' to allow the plugin to maek callbacks. | +| `YaPluginFactory` | `IPluginFactory`, `IPluginFactory2`, `IPluginFactory3` | | + +The following interfaces are implemented purely fur serialization purposes: + +| Yabridge class | Interfaces | Notes | +| -------------------- | ------------------- | ---------------------------------------------------------------------- | +| `YaEventList` | `IEventList` | Comes with a lot of serialization wrappers around the related structs. | +| `YaParameterChanges` | `IParameterChanges` | | +| `YaParamValueQueue` | `IParamValueQueue` | | +| `VectorStream` | `IBStream` | Used for serializing data streams. | + +And finally `YaProcessData` uses the above along with `YaAudioBusBuffers` to +wrap around `ProcessData`.