Commit Graph

661 Commits

Author SHA1 Message Date
Robbert van der Helm fb8fe035d8 Clean up chunk buffer retrieval for effGetChunk 2020-04-28 12:48:31 +02:00
Robbert van der Helm ed9428da83 Fix chunk size formatting in log messages 2020-04-28 12:28:41 +02:00
Robbert van der Helm 641351d525 Also filter out the event with opcode 52
Not sure what this is, but it's called by Bitwig every time a buffer is
being processed.
2020-04-28 12:04:09 +02:00
Robbert van der Helm e515547d5a Add a todo on another event to filter 2020-04-27 18:56:14 +02:00
Robbert van der Helm e69d08c503 Add assertion for bytes written while sending
To avoid problems like 13dcb2f74a in the
future.
2020-04-27 18:00:01 +02:00
Robbert van der Helm f0d16c4afb Add note on potentially misbehaving type detection 2020-04-27 16:42:04 +02:00
Robbert van der Helm 13dcb2f74a Fix handling of large chunk data 2020-04-27 16:41:55 +02:00
Robbert van der Helm 527db1f49f Use different types for strings and binary data 2020-04-27 00:51:36 +02:00
Robbert van der Helm af6ae2c2ad Fix capitalization of the word MIDI 2020-04-26 18:19:10 +02:00
Robbert van der Helm aeac8e87fa Implement effGetParameterProperties 2020-04-26 16:53:34 +02:00
Robbert van der Helm aee890fbf6 Remove the now unused ability to skip opcodes
If this is needed again in the future (it shouldn't be), then it should
be re-implemented using a separate function.
2020-04-26 16:30:11 +02:00
Robbert van der Helm 0ce9c1e3a4 Add another less verbose debug level 2020-04-26 15:42:01 +02:00
Robbert van der Helm b17c413de4 Add the generated version header to the file list
Otherwise it may not be generated yet on first build.
2020-04-26 14:29:08 +02:00
Robbert van der Helm 5ce20be9d9 Allow storing and loading of larger chunks 2020-04-25 17:35:02 +02:00
Robbert van der Helm 4a1133146a Generate a header containing git version info
It contains the last annotated tag, and possibly also the number of
commits since then and the hash of the last commit.
2020-04-25 16:14:14 +02:00
Robbert van der Helm 2e36c64796 Return a 0 for skipped events
Not that any events get skipped at the moment.
2020-04-21 18:13:22 +02:00
Robbert van der Helm b13d7d554d Prevent rare race conditions with get/setParameter
I've never seen it happen, but in theory they could be called
simultaneously.
2020-04-19 16:14:22 +02:00
Robbert van der Helm 9f3ed85208 Replace std::monostate with std::nullptr_t
This represents the underlying meaning better since we're mostly dealing
with the `data` void pointer argument.
2020-04-19 16:05:37 +02:00
Robbert van der Helm 717ffb719d Remove resolved todo 2020-04-19 16:05:37 +02:00
Robbert van der Helm 106d1e3907 Use lock guards for mutexes 2020-04-17 15:37:03 +02:00
Robbert van der Helm eed4677ed3 Fix VstTimeinfo responses and allow null responses
The host is allowed to return a null pointer if it doesn't support the
query.
2020-04-14 15:59:23 +02:00
Robbert van der Helm b5b3b69f67 Fix typos 2020-04-09 00:40:50 +02:00
Robbert van der Helm effe584373 Actually only initialize the first value 2020-03-28 23:09:05 +01:00
Robbert van der Helm 8ab5fff914 Fix audioMasterSpecific related segfaults
Not initializing our buffer is fine if something is going to write to
it, but in this case the default way to handle
`audioMasterSpecific` (and any other opcode without specific behaviour)
would be to treat it as a writable string. Since the host wasn't
actually writing to it we would just send some old data from the stack
back which obviously would cause some plugins to crash.
2020-03-28 22:56:48 +01:00
Robbert van der Helm 629fa72e0c Allow for an arbitrary number of midi events
By building the object on the heap in a buffer. I preferred the old
solution but this is more flexible.
2020-03-28 14:07:11 +01:00
Robbert van der Helm cc52c87f34 Properly handle effGet{Input,Output}Properties
Apparently the plugin needs the actual contents of the struct for this
to work.
2020-03-26 16:24:49 +01:00
Robbert van der Helm a85e936059 Reverse engineer IO related opcodes 2020-03-26 15:58:15 +01:00
Robbert van der Helm d2be82285a Make sure messages can't get out of order 2020-03-23 22:33:28 +01:00
Robbert van der Helm f1f7523248 Make the GUI embedding work
There's still a few things that need fixing.
2020-03-19 17:29:30 +01:00
Robbert van der Helm eebfceff56 Implement the rest of the GUI events
The GUI is still not updating though.
2020-03-19 00:58:03 +01:00
Robbert van der Helm 1c17513936 Move all window handling to the Wine host side 2020-03-17 21:31:19 +01:00
Robbert van der Helm d0a86887d3 Explicitely handle editor opening failures 2020-03-17 20:54:49 +01:00
Robbert van der Helm e7e1b26455 Add the base for GUI handling
Still need to embed the opened window into the window provided by the
host.
2020-03-17 01:51:02 +01:00
Robbert van der Helm 44a953c2d2 Change argument order for event handling functions 2020-03-17 00:53:09 +01:00
Robbert van der Helm 7172a42c67 Prevent data races in host callbacks 2020-03-16 13:58:49 +01:00
Robbert van der Helm 37b0e72d4a Increase the number of permitted midi events 2020-03-12 23:17:42 +01:00
Robbert van der Helm 8464706336 Handle AEffect object updates 2020-03-11 16:33:44 +01:00
Robbert van der Helm ea8feb07a9 Reorder arguments 2020-03-11 16:08:09 +01:00
Robbert van der Helm 6ab7af10f9 Use the fancy new variant instead of strings 2020-03-11 16:04:49 +01:00
Robbert van der Helm 8c187e3ca5 Use const references for logging paylaod data 2020-03-11 15:58:56 +01:00
Robbert van der Helm 1ee0ffef8b Wrap event result data in an std::variant
Gets a bit more complicated this way, but this avoids having to use
string to manually serialize and deserialize arbitrary objects.

The new options for `AEffect` and `VstTimeInfo` structs are not yet
used.
2020-03-11 15:52:56 +01:00
Robbert van der Helm aa31665666 Move event handling its own file 2020-03-11 14:42:09 +01:00
Robbert van der Helm c86ad23703 Get rid of old todos 2020-03-11 14:32:47 +01:00
Robbert van der Helm 7f2eab476d Clarify the return value override 2020-03-11 01:12:40 +01:00
Robbert van der Helm 5cdfb90a9b Implement audioMasterGetTime,fixing playback
Midi and audio now work!
2020-03-11 00:34:58 +01:00
Robbert van der Helm 2bd33f1322 Print ignored opcodes 2020-03-10 22:15:11 +01:00
Robbert van der Helm af94fe80d8 Filter out unsupported aduioMaster* events
Not sure if this is the correct approach, but these seem to not really
do anything and they sometimes crash the host.
2020-03-10 14:21:27 +01:00
Robbert van der Helm 07d488a4f3 Fix deserialization errors when reading chunks
Forgot to also increase this limit
2020-03-10 14:16:40 +01:00
Robbert van der Helm 84480c5d35 Don't print long binary strings 2020-03-10 14:07:56 +01:00
Robbert van der Helm 54966a36f2 Implement effSetChunk 2020-03-10 12:57:53 +01:00