Conversation
|
Hi Hedde, You should not change the categories for VST3 (currently Instrument|Tools, instrument being set by isSynth and tools from VST_Category) because when you export a panel as a VST3 plugin the Search and replace patching method won't work since it's looking for this very plugin category string in the code of the binary. Same happens with plugin name and plugin manufacturer. |
|
Also I noticed you set the isSynth parameter to false and you should leave it to true because this is this exact parameter that enables midi in and out in the juce declarations for midi I/o configuration In CtrlrProcessor.cpp Also if you want to change the VST3 category you need to use a type that is compliant to the VST3 SDK and it's very strict or it will show as "Others" The best in your case is just to open ctrlrx VST3 in your daw, open a blank panel, export it has an unrestricted instance with the proper VST3 category you'll find in the drop down menu in the global properties in the right pane. Your exported instance will show up as whatever you defined in your daw and will allow to close and create new panels. By default this property is set to Instruments|Synth Also Ctrlr is not a midifx. Or it will not show up in the instrument list or audio insert FX in most of the DAWs. What configuration you'd like precisely, I'll help you if needed? |
|
Ah another last thing about the macos certificate failure. You need to select both certificated (application and installer) from your keychain and export them as a single p12 (note your p12 secret password). Then convert the p12 file to a base64 string to import in your GH secrets as well as the related password. EDIT: so yeah my mistake, the initial conditional checks for the apple certificates secrets are not good (deprecated) : since I use a combined string and a single password I'll pass a new condition based on the availability of : i'll update that as well... EDIT: FIXED |
Ok, restored 😄 Indeed the VST categories seem finicky (the
That is not true, the midi i/o configuration is returned to the host by
If I remember, the original Ctrlr was a midi fx? I could instantiate it before a synth plugin or, more importantly, a With CtrlrX being an instrument, it seems to not pass thru the MIDI notes (while https://github.com/gbevin/ShowMIDI does, and the latter can also show that no midi ends up after inserting CtrlrX on the channel). Next to that, I noticed the midi timing is very off using CtrlrX, but I think that is a different issue. Probably the output when CtrlrX owns the midi port is not compensating for the 'time' of a midi event. Only noticeable with large audio buffers I guess... |
|
I remember I tried all combination to fit most of the DAWs and ended up with those settings. Most DAWs don't like midifx true, audiounit was failing to validate with it. You can try many settings to get it work with bitwig and Linux. Let me know when you have something ;) About the timing it's probably coming from Linux because when I check on macos with midi monitor and the timestamp on the Ctrlr input monitor I get the same. But I remember someone was talking about it and asked to implement another type of drivers on the Linux version (Jack) But I don't know how to do that . Have a nice weekend! |
|
Btw can you please check as VST2, it's less strict than VST3? Let me know if you find a working setup for bitwig. |
|
So, with the current set of flags, I tested* that indeed *) On the testing: However, it recompiles the code for the testing, so I'm not yet a big fan (would prefer just linking to the production ( I'll play a bit with google test and cmake, see if that does not need recompiling. I'm more familiar with the gtest framework personally, but do you have any preference? |
|
Hi Hedde, I already noticed that CMakeLists.txt did not have this option and I did not notice it. I'll definitely add it so that we get the same config as with the projucer : I'll take a look at the other mods you did in the PR to see if it's ok with macOS and Windows. Concerning include(Tests) I'm not sure if it's useful since we have pluginval which directly tests the plugin thoroughfully. I saw my latest updated with fallbacks if the GH secrets are not available are now OK, that's super cool. Enjoy! Damien |
|
I've just updated the PR with some google tests as an example. Locally they run (of course...) but in the github runner they seem to be not found, so I'll be doing some debugging on that the coming days... |
|
Hi Hedde, I did not know about that. I never noticed midi could be out of sync. According to your waveform, it's quite groovy :) That would be interesting to check the timing at different sample rate. I have absolutely no time to spend on all that in the next few weeks, maybe even months. So, feel free to take a look at it and keep up with the commits in this particular PR. I'll do a merge once you have something tried and tested. Good luck 🤞 Damien |
|
Cheers, the December period is always busy. Hope you'll have a good time the coming months! I'll keep working on this PR and maybe open a few small ones with other small fixes/improvements that aren't related. |
|
Small update: I found a nice tool to create overview diagrams: https://clang-uml.github.io/ Some example diagrams below.
|
|
Hi Hedde, that's interesting! Another user started to map all the functions but it was never completed because done by hand. Sure you can do another PR I'll merge it asap. Have a nice day Damien |
|
Now I remember someone telling about those duplicated messages and when it occurred. I'll try to recall and post the link about it here. |
f764a92 to
ba33187
Compare
In testing/debugging #187 I ( @sgorpi ) was using Valgrind. Some of the invalid memory access and 'conditional jump on uninitialized value' issues were easily addressed. Some are a bit harder (haven't solved the LUAbind issue in Source/Misc/luabind/luabind/typeid.hpp completely)... but this already prevents a few segfaults...
|
So, I also haven't found much time lately... but today I found at least a way to reproduce the 'duplicate notes' scenario: The "Host 2 Device" flag has to be true/checked, and then midi messages are being duplicated (to the host at least). This is captured in Now, to solve at least the midi timing issues, I think that it probably requires quite some rewriting of the midi message handling. I'm not fully sure how to approach yet, but among others,
Are you OK with such major changes? And if so: maybe it's good to do that in multiple pull requests, so that the incremental steps are small (easier review/less merge conflicts)? |
|
Hi Hedde, congrats for finding the case where duplicate messages are present! If ever you want to update the message handling, just do a branch for that such as 5.6.35-Maintenance-MIDI-Buffer-FIX and do a separate PR, I'll also do a separate branch for testing. I'll follow your progress and try it with the apps compiled online with the GH actions. Right now I only pulled your valgrind debugging commit that I implemented in a temp branch https://github.com/damiensellier/CtrlrX/tree/5.6.35-Maintenance-Memory-Valgrind-FIX. If you confirm it just improves the software I'll merge my temp branch to the higher level 5.6.35-Maintenance one. I did not pulled your commits improving the testing yet. Thanks a lot and enjoy the holidays, have a good time! Damien |
…sellier#204) In testing/debugging damiensellier#187 I ( @sgorpi ) was using Valgrind. Some of the invalid memory access and 'conditional jump on uninitialized value' issues were easily addressed. Some are a bit harder (haven't solved the LUAbind issue in Source/Misc/luabind/luabind/typeid.hpp completely)... but this already prevents a few segfaults...

Apparently the CMakeFiles.txt API changes with the JUCE versions and I had set the wrong flags... This PR fixes that, so that the plugin hosts actually send MIDI to CtrlrX... (tested with Bitwig on Linux).
I took the liberty to set some VST / VST3 / AU categories (AAX is also possible I saw). Let me know if you want to change any.