Commit Graph

1071 Commits

Author SHA1 Message Date
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
Robbert van der Helm 2bf98d0a97 Implement writing back YaProcessDataResponse
Everything around `ProcessData` is now fully implemented and should in
theory work.
2020-12-16 18:14:28 +01:00
Robbert van der Helm 6f38f8400c Implement process call creation 2020-12-16 17:42:12 +01:00
Robbert van der Helm 95a4ef8eed Implement reconstructing ProcessData 2020-12-16 17:36:49 +01:00
Robbert van der Helm 3771ed6870 Add more YaProcessData boilerplate 2020-12-16 17:14:42 +01:00
Robbert van der Helm d1c5d4c4ac Implement YaProcessData reading 2020-12-15 23:11:59 +01:00
Robbert van der Helm d6b7ef38e2 Add missing fields in events
Thanks GCC.
2020-12-15 22:39:54 +01:00
Robbert van der Helm f1aefc0a9d Finish implementing YaAudioBusBuffers 2020-12-15 22:32:42 +01:00
Robbert van der Helm 487e6eac98 Add the process context to YaProcessData 2020-12-15 21:49:30 +01:00
Robbert van der Helm e4b97d90c9 Add the events to YaProcessData 2020-12-15 21:32:50 +01:00
Robbert van der Helm 7e40d70ff4 Update the TODO list in the readme 2020-12-15 20:07:03 +01:00
Robbert van der Helm a516309d17 Implement IEventList 2020-12-15 18:32:43 +01:00
Robbert van der Helm 0137bb3499 Fully implement YaEvent 2020-12-15 18:02:26 +01:00
Robbert van der Helm f33b749172 Implement all event types 2020-12-15 17:44:26 +01:00
Robbert van der Helm d8c51d885b Partially implement IEventList and all event types 2020-12-15 17:10:54 +01:00
Robbert van der Helm 6fc54d80fb Move TChar* -> std::u16string conversion to base.h
We're going to need it for VST3 events.
2020-12-15 17:01:57 +01:00
Robbert van der Helm ce09d60447 Add parameter changes to YaProcessData 2020-12-15 14:30:41 +01:00
Robbert van der Helm 92c37f71db Implement IParameterChanges 2020-12-15 14:24:55 +01:00
Robbert van der Helm 026595d99f Implement IParamValueQueue 2020-12-15 14:23:55 +01:00
Robbert van der Helm e7d7317f60 Add a partial AudioBusBuffers implementation 2020-12-15 13:08:12 +01:00
Robbert van der Helm 9c97ebb262 Merge branch 'master' into feature/vst3 2020-12-14 23:21:53 +01:00
Robbert van der Helm 449b17b5e2 Get rid of explicit calling convention on main()
Fixes builds on Wine 6.0, and it's apparently also no longer needed for
Wine 5.9 and up.
2020-12-14 23:20:21 +01:00
Robbert van der Helm 62f376d952 Allow the module to be properly unloaded
Terminating the host process will cause all sockets to be closed so we
can join the threads.
2020-12-14 22:49:20 +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 2becd420b2 Take PrimitiveWrapper<T> value by rvalue 2020-12-14 18:22:12 +01:00
Robbert van der Helm bb110e8cbb Add PrimitiveWrapper<T> response logging 2020-12-14 18:08:16 +01:00
Robbert van der Helm e282f8c572 Fix IComponent::getBusCount() 2020-12-14 18:03:20 +01:00
Robbert van der Helm 0f59d6429d Implement IAudioProcessor::getLatencySamples() 2020-12-14 17:53:50 +01:00
Robbert van der Helm 6979dafa06 Add a wrapper for serializing primitives 2020-12-14 17:53:38 +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 b87c3fe790 Add a todo about non-separated controllers 2020-12-14 16:10:56 +01:00
Robbert van der Helm 49a87371bc Add todos for logging successful interface queries 2020-12-14 13:23:27 +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 e2ba9c13f1 Add IAudioProcessor instance to ComponentInstance
So we don't have to these expensive casts every time.
2020-12-14 13:18:47 +01:00
Robbert van der Helm e0dd4ab22d Add IAudioProcessor query interface to YaComponent 2020-12-14 13:17:10 +01:00
Robbert van der Helm 0668a785b0 Add stubs for implementing IAudioProcessor 2020-12-14 13:06:02 +01:00
Robbert van der Helm 096171bb96 Use the known_iids mechanism for IComponent 2020-12-14 12:48:21 +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 02e6fb1ba8 Add a way to write a VectorStream back 2020-12-14 12:24:09 +01:00
Robbert van der Helm 816d1c1501 Implement IComponent::setState() 2020-12-14 12:09:47 +01:00