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
d99f880277
Rename YaHostApplication implementation
...
The context should make it obvious where it's implemented, and with the
current design we only an implementation on one of the two sides.
2020-12-18 21:36:39 +01:00
Robbert van der Helm
d2585a3550
Add a todo about reusing YaProcessData objects
2020-12-18 20:22:34 +01:00
Robbert van der Helm
af1d573712
Add IConnectionPoint to the implemented interfaces
2020-12-18 14:31:26 +01:00
Robbert van der Helm
74f21f12a5
Use a getter for a proxy object's instance ID
...
We also need this to get some random other object's instance ID, so
might as well use it everywhere.
2020-12-18 14:22:57 +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
41a9ca5a36
Add boilerplate for connecting Vst3PluginProxies
...
This way we can identify the actual objects and directly connect them on
the Wine side.
2020-12-18 13:45:13 +01:00
Robbert van der Helm
f83e526fc6
Add stubs for IConnectionPoint
2020-12-18 13:36:48 +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
381ca253c1
Fix uninitialized seek position in VectorStream
2020-12-18 12:53:51 +01:00
Robbert van der Helm
8066e1d2ee
Fix writing back vector streams
2020-12-17 23:43:52 +01:00
Robbert van der Helm
68c7b9b081
Destroy VST3 objects within the main IO context
2020-12-17 23:32:56 +01:00
Robbert van der Helm
a953eb3bfc
Take PrimitiveWrapper values by value
...
Should not make any difference here anyway since we're dealing with
primitives.
2020-12-17 23:12:29 +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
7809c9094c
Fix query interface log message
2020-12-17 23:06:30 +01:00
Robbert van der Helm
de9250076b
Fix very important typo in IBStream reading
...
No wonder it didn't work.
2020-12-17 23:03:26 +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
9bad0eb50f
Work around bug in Bitwig Studio
...
These FIDStrings are not terminated by null bytes, and thus
`FIDStringsEqual` things they don't match any knows IIDs since they
appear to have different lengths.
2020-12-17 18:27:35 +01:00
Robbert van der Helm
69ec7b3726
Fix FIDString to FUID conversion
2020-12-17 18:15: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
b2cee1e750
Rename PluginObject to InstanceInterfaces
...
To make it a bit clearer that this is a holder of interface smart
pointers.
2020-12-17 17:54:57 +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
d8694b062b
Add IEditController to the PluginObject interfaces
2020-12-17 17:51:47 +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
2155240cca
Add stubs for IEditController{,2}
2020-12-17 16:39:50 +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
231a0293cb
Change VST3 log message direction prefix
...
It looks much mess noisy this way at the cost of maybe being slightly
less clear at a glance.
2020-12-17 14:41:54 +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
f71c7a3895
Move work dropping to Vst2PluginBridge destructor
...
For consistency with `Vst3PluginBridge`.
2020-12-17 13:52:12 +01:00
Robbert van der Helm
a5834cd438
Replace ComponentInstance with a generic variant
...
This allows casting to supported interface from an FUnknown.
2020-12-17 13:47:43 +01:00
Robbert van der Helm
d0e96da21a
Rename register_component to register_plugin_proxy
2020-12-17 13:33:34 +01:00
Robbert van der Helm
481975860c
Use the new simple supports flags for the factory
...
This is both more type safe and as it turns out much more manageable.
2020-12-17 13:20:16 +01:00
Robbert van der Helm
655195a415
Move the plugin interfaces to a subdirectory
2020-12-17 13:12:54 +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
602bbc5d35
Add TODO about replacing known_iids with flags
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
97570a47ba
Add a document with all implemented interfaces
2020-12-16 22:07:43 +01:00
Robbert van der Helm
7488d6f482
Move the VST3 design document to docs/
2020-12-16 21:54:18 +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
6d0a38f720
Null initialize the plugin factory pointer
2020-12-16 18:55:34 +01:00