Commit Graph

76 Commits

Author SHA1 Message Date
Robbert van der Helm b422f6fd42 Don't cache IComponent::getControllerClassId()
For the same reasons as the last commit. Now we don't have any of these
cached methods anymore.
2020-12-19 18:56:47 +01:00
Robbert van der Helm 63ae5f330c Don't cache IHostApplication::getName()
As it turns out there are only two or three functions where we can do
this. It also breaks logging, and this function will probably only be
called once anyways. More consistency is always better.
2020-12-19 18:28:16 +01:00
Robbert van der Helm 0522f84f4a Create Vst3HostContextProxy from YaHostApplication
This is quite a huge refactor, but note everything is consistent (and
we're going to need one or two more of these `Vst3*Proxy` objects).
Right now nothing extends `IHostApplication`, but this way it will be
trivial to add support for more host context interfaces.
2020-12-19 17:13:17 +01:00
Robbert van der Helm 1b454371a6 Implement IComponentHandler::restartComponent()
The base IComponentHandler is now fully implemented.
2020-12-19 15:51:48 +01:00
Robbert van der Helm 25575e2d3a Implement IComponentHandler::endEdit() 2020-12-19 15:48:06 +01:00
Robbert van der Helm bb99a539d5 Implement IComponentHandler::performEdit() 2020-12-19 15:45:24 +01:00
Robbert van der Helm 3b06bca95e Implement IComponentHandler::beginEdit() 2020-12-19 15:39:03 +01:00
Robbert van der Helm bf3d802f36 Implement IEditController::setComponentHandler() 2020-12-19 15:04:27 +01:00
Robbert van der Helm 7e3568e333 Rename YaEditController2 to YaEditController
Adding versions to our implementations doesn't work when the versions
and extensions start becoming non-numerical. This is what happened with
`IComponentHandler`.
2020-12-19 13:49:00 +01:00
Robbert van der Helm fa256ab9be Only log IComponent::getBusCount() on verbosity 2 2020-12-19 13:07:58 +01:00
Robbert van der Helm 38c37f2721 Don't log responses for filtered out requests 2020-12-19 13:07:58 +01:00
Robbert van der Helm 71493299ec Implement IConnectionPoint::disconnect 2020-12-19 13:07:58 +01:00
Robbert van der Helm 24fc584fca Hide a few more messages on verbosity level 1 2020-12-18 23:05:49 +01:00
Robbert van der Helm 43f5e65b45 Implement IEditController::setParamNormalized() 2020-12-18 21:53:13 +01:00
Robbert van der Helm bc0c13778f Implement IEditController::getParamNormalized() 2020-12-18 21:53:04 +01:00
Robbert van der Helm fcbf198fee Implement IEditController::plainParamToNormalized 2020-12-18 21:36:39 +01:00
Robbert van der Helm 78d5e3bbfb Implement IEditController::normalizedValueToPlain 2020-12-18 21:36:39 +01:00
Robbert van der Helm a4e2a18480 Implement IEditController::getParamValueByString() 2020-12-18 21:36:39 +01:00
Robbert van der Helm cfa4849467 Partially implement IConnectionPoint::connect()
This now works for direct connections, which is probably how most hosts
will use this.
2020-12-18 14:09:20 +01:00
Robbert van der Helm e36f53b103 Change VST3 log format to be more readable 2020-12-18 13:14:50 +01:00
Robbert van der Helm 2c01bd8bf1 Fix typo in IEditController::setComponentState log 2020-12-17 23:12:01 +01:00
Robbert van der Helm 7fd488beef Fix plugin proxy cosntruction response log message 2020-12-17 22:55:02 +01:00
Robbert van der Helm 585d1e736c Implement IEditController::getParamStringByValue() 2020-12-17 22:44:13 +01:00
Robbert van der Helm ccc5688f0c Implement IEditController::getParameterInfo() 2020-12-17 22:16:20 +01:00
Robbert van der Helm 4cc24f74d1 Implement IEditController::getParameterCount() 2020-12-17 21:55:12 +01:00
Robbert van der Helm 7eb7e87953 Implement IEditController::setComponentState() 2020-12-17 21:50:04 +01:00
Robbert van der Helm 96c630e608 Fix typo in log message 2020-12-17 18:51:32 +01:00
Robbert van der Helm b3e39daed0 Fix typo in log message 2020-12-17 17:58:32 +01:00
Robbert van der Helm fe2de8de8d Unify handling for *::{get,set}State
Since these functions are exactly the same, and for whatever reason they
didn't just add them to the `IPluginBase` both `IComponent` and
`IEditController`. inherit from
2020-12-17 17:52:51 +01:00
Robbert van der Helm 286023bc22 Allow creating IEditController instances
Now `IPluginFactory::createInstance()` can create multiple (and in our
case, all relevant) different types of objects.
2020-12-17 17:01:26 +01:00
Robbert van der Helm 1ce12227fb Add logging for IAudioProcessor::process()
This is super verbose, but I'm sure it's going to be useful at some
point.
2020-12-17 15:12:19 +01:00
Robbert van der Helm 1f5bd43fe8 Print CIDs in IPluginBase::initialize() 2020-12-17 14:28:02 +01:00
Robbert van der Helm 78f9203378 Implement a UID formatting function 2020-12-17 14:20:49 +01:00
Robbert van der Helm 11bf7532fa Rename the monolitic class to Vst3PluginProxy
Now it's starting to look promising.
2020-12-17 13:07:42 +01:00
Robbert van der Helm d8b2646563 Split off IComponent and create a monolithic class
We can now use implement all VST3 plugin interfaces through this class,
check whether the object from the plugin also supports these classes,
and then conditionally allow casting to the supported classes. This
should give us a one-to-one proxy of the original object.
2020-12-17 12:49:33 +01:00
Robbert van der Helm d6c28f48d9 Split YaAudioProcessor from YaComponent
Now all that's left is splitting YaComponent into the IComponent bits
and separate YaPluginMonlith that implements everything.
2020-12-17 00:31:32 +01:00
Robbert van der Helm 6809e73d6b Split IPluginBase from IComponent
We're also going to need this for `IEditController`. Separating all of
these classes will also keep everything much more maintainable with all
of these associated structs.
2020-12-16 23:46:47 +01:00
Robbert van der Helm 1dd575e4a7 Implement IAudioProcessor::process()
With this the entire `IAudioProcessor` interface has been implemented
and in theory it should now be possible to process audio and events.
Logging for these requests still has to be implemented separately.
2020-12-16 18:55:34 +01:00
Robbert van der Helm c815b3903b Implement IAudioProcessor::getTailSamples() 2020-12-14 21:43:38 +01:00
Robbert van der Helm 007aa1e707 Implement IAudioProcessor::setProcessing() 2020-12-14 21:31:50 +01:00
Robbert van der Helm b1bcfd3873 Implement IAudioProcessor::setupProcessing() 2020-12-14 21:25:05 +01:00
Robbert van der Helm cb7413c521 Add implicit conversion for UniversalTResult 2020-12-14 18:32:18 +01:00
Robbert van der Helm bb110e8cbb Add PrimitiveWrapper<T> response logging 2020-12-14 18:08:16 +01:00
Robbert van der Helm 0f59d6429d Implement IAudioProcessor::getLatencySamples() 2020-12-14 17:53:50 +01:00
Robbert van der Helm d9585fac78 Implement IAudioProcessor::canProcessSampleSize() 2020-12-14 17:12:49 +01:00
Robbert van der Helm b26c2e08a7 Implement IAudioProcessor::getBusArrangement() 2020-12-14 16:55:21 +01:00
Robbert van der Helm e3b442de57 Implement IAudioProcessor::setBusArrangements() 2020-12-14 16:40:40 +01:00
Robbert van der Helm 143d795c0b Unify log message format for initialize() 2020-12-14 13:21:28 +01:00
Robbert van der Helm e653142e45 Implement IComponent::getState()
With this the basic IComponent interface is fully implemented. Next will
be `IAudioProcessor` and `IConnectionPoint` as additions to IComponent.
We'll use the same `known_iids` mechanism as used in the plugin factory.
2020-12-14 12:38:35 +01:00
Robbert van der Helm 816d1c1501 Implement IComponent::setState() 2020-12-14 12:09:47 +01:00