Commit Graph

548 Commits

Author SHA1 Message Date
Robbert van der Helm 82840ab6df Properly resize the CLAP editor window 2022-09-29 20:11:41 +02:00
Robbert van der Helm b5aaa02645 Add missing default cases 2022-09-29 20:01:05 +02:00
Robbert van der Helm cd609fa90f Implement the plugin side of the GUI functions 2022-09-29 20:01:05 +02:00
Robbert van der Helm 48a3c76fe6 Remove debug prints when opening VST2 editors 2022-09-29 19:57:31 +02:00
Robbert van der Helm 87a9ac75b9 Fully implement the host side GUI extension 2022-09-29 19:57:31 +02:00
Robbert van der Helm 7305178654 Fully implement the state extension 2022-09-27 15:20:15 +02:00
Robbert van der Helm 95c10952a2 Mark CLAP vtable methods as protected
Since they only make sense when called from the vtable.
2022-09-27 13:38:34 +02:00
Robbert van der Helm 4ac0b60ca7 Fix typo 2022-09-26 19:42:23 +02:00
Robbert van der Helm c7ea37309d Implement the CLAP latency extension 2022-09-26 19:42:23 +02:00
Robbert van der Helm de028faf70 Fully implement the CLAP tail extension
Trivial extension, but this required us to be able to send audio thread
callbacks first.
2022-09-26 18:15:10 +02:00
Robbert van der Helm 8bc61837c9 Move the flush request to the audio thread 2022-09-26 16:47:46 +02:00
Robbert van der Helm 214ba51010 Add audio thread callbacks 2022-09-26 16:47:46 +02:00
Robbert van der Helm 0d472dcd58 Add CLAP audio thread callback sockets
The initialization here is a bit funky and happens in lockstep to ensure
both sides are synchronized.
2022-09-26 16:28:30 +02:00
Robbert van der Helm 0f58f3409b Fully implement the CLAP params extension 2022-09-25 14:55:16 +02:00
Robbert van der Helm 95be79adfe Add missing host side note-ports extension query 2022-09-23 20:34:51 +02:00
Robbert van der Helm e26025f7c6 Allocate shared memory audio buffers for CLAP 2022-09-15 19:12:29 +02:00
Robbert van der Helm 7f07d5f29f Change audio SHM buffer offsets to be in bytes
CLAP allows mixed precision ports. For instance, the main IO ports can
be 32-bit only, while some CV ports allow 64-bit audio. The plugin only
knows the sample format it receives when the process call happens, so
we'll always need to allocate enough space for that to work.
2022-09-15 18:07:56 +02:00
Robbert van der Helm cead56c9aa Skip main thread requirement in array lookups
This should be fine, right? We'll do it everywhere else, but especially
for parameters this is going to be very costly and may thus increase
plugin startup time by a noticeable amount if we spool every individual
call to the main thread.
2022-09-13 18:28:30 +02:00
Robbert van der Helm 168837c8ac Always honor CLAP main thread requirement
If this ever becomes a bottleneck we can always decide to not do it
right there and then.
2022-09-13 18:20:33 +02:00
Robbert van der Helm d5f4d563d4 Implement CLAP note ports extension 2022-09-13 18:20:33 +02:00
Robbert van der Helm 4dbd57d47c Add logging for CLAP extension queries 2022-09-13 14:54:40 +02:00
Robbert van der Helm bb3bc49c60 Fully implement the audio ports extension 2022-09-12 20:11:34 +02:00
Robbert van der Helm 51edef4427 Deduplicate CLAP extension support queries
They're only queried once now and the booleans are derived from the
stored pointers.
2022-09-12 19:14:39 +02:00
Robbert van der Helm b31bee24b6 Store plugin and host extension struct pointers 2022-09-12 19:14:39 +02:00
Robbert van der Helm fa47274dd4 Add stubs for host side audio ports extension 2022-09-12 17:09:01 +02:00
Robbert van der Helm e7fe5426c8 Support the hide_daw option for CLAP. 2022-09-11 19:29:18 +02:00
Robbert van der Helm f64e5c4353 Add logging for CLAP callback requests 2022-09-11 19:18:03 +02:00
Robbert van der Helm 5d31191806 Implement CLAP callback requests 2022-09-11 19:18:03 +02:00
Robbert van der Helm 7151544f99 Add restart and process request callbacks 2022-09-11 19:18:03 +02:00
Robbert van der Helm 200bf1a84e Rename ClapHost::send_message()
To clarify that this is intended for main thread callbacks. Not that
outside of the thread pool extension there are any latency sensitive
audio thread callbacks.
2022-09-11 19:18:03 +02:00
Robbert van der Helm feae63b091 Implement start_processing, stop_processing, reset 2022-09-11 19:18:03 +02:00
Robbert van der Helm c676dfb651 Add CLAP plugin activation and deactivation
Shared memory audio buffers are not yet set up.
2022-09-11 19:18:03 +02:00
Robbert van der Helm 6865cbd937 Implement CLAP plugin initialization 2022-09-11 19:18:03 +02:00
Robbert van der Helm d2fb84e529 Add CLAP plugin destroying
Everything else is still a stub, but at least the lifecycle now works
correctly.
2022-09-11 19:18:03 +02:00
Robbert van der Helm a9bb60772d Add functions for registering CLAP plugin proxies 2022-09-11 19:18:03 +02:00
Robbert van der Helm a1f73692cc Start CLAP audio thread socket
This doesn't do anything yet, but otherwise creating the plugin instance
stalls. And it's safer to add a dummy listener here for the time being
than to remove the latch and risk forgetting to add it back later.
2022-09-11 19:18:03 +02:00
Robbert van der Helm 7575fb7af3 Ensure CLAP_ABI is set
This will avoid some potential issues when people try to build this
against old CLAP headers.
2022-09-11 19:18:03 +02:00
Robbert van der Helm 423534f373 Implement Wine side for creating plugin instances 2022-09-11 19:18:03 +02:00
Robbert van der Helm 8c5fb448de Add stubs for a CLAP host proxy implementation 2022-09-11 19:18:03 +02:00
Robbert van der Helm 64bc31d819 Work around spurious GCC warning w/ string concat 2022-09-11 19:18:03 +02:00
Robbert van der Helm 49e3f7ff1e Capitalize CLAP plugin descriptor class name
To stay consistent with the rest of the naming.
2022-09-11 19:18:03 +02:00
Robbert van der Helm 1339c20fc1 Implement the Wine side of listing plugins 2022-09-11 19:18:03 +02:00
Robbert van der Helm 9cea175f2a Globally ignore attribute warnings on Wine side
These started happening after Wine 5.12, and it doesn't look like it's
going to change.
2022-09-11 19:18:03 +02:00
Robbert van der Helm e1efe52cfd Silence new ignored attributes warning 2022-09-11 19:18:03 +02:00
Robbert van der Helm d7266a1bc3 Bail when initializing CLAP entry point fails 2022-09-11 19:18:03 +02:00
Robbert van der Helm 1274edf649 Bail when loading incompatible CLAP plugins
Based on the version.
2022-09-11 19:18:03 +02:00
Robbert van der Helm e531334bde Initialize the CLAP entry point 2022-09-11 19:18:03 +02:00
Robbert van der Helm ec8028f78c Allow serializing CLAP plugin factory list message 2022-09-11 19:18:03 +02:00
Robbert van der Helm f595a48fbd Enable CLAP support for plugin groups 2022-09-11 19:18:03 +02:00
Robbert van der Helm bfe3cab8d2 Add boilerplate for a CLAP bridge 2022-09-11 19:18:03 +02:00