Hi there,
I’m having some problems when trying to run tracktion engine within a plugin. Just to give a bit of context, I’m working on an app based on tracktion engine which I want to deploy on the ELK Audio OS/raspberry pi embedded platform (if interested check their talk at ADC 2019). A requirement for deploying in their platform is to have the app compiled as a plugin so a custom plugin host in ELK’s Audio OS can load the plugin and pass audio/midi in/out using the super low latency drivers they have developed.
I know from this highly related thread Using the Tracktion engine within a plugin? that running tracktion engine inside a plugin is currently possible (albeit with some limitations) and there is example code in the tracktion engine repository (EngineInPluginDemo
project). Nevertheless, I’ve been trying to deploy this demo project compiled as VST2 in ELK board and I had no success. To discard issues particular to the ELK platform, I decided to try compiling and running the demo project in a Linux virtual machine and also on my host macOS machine first, but I’m also having problems. My goal is now to fix these issues for the Linux VM/macOS versions and then I’ll continue trying to deploy in ELK.
These are the results of the experiments I did while trying to get EngineInPluginDemo
running:
macOS (vst2/3, au, stand alone)
- all targets compile OK
- works well as stand alone (I can connect MIDI keyboard and play and hear notes)
- loads well as vst2 in Carla plugin host, but it does not seem to produce any notes when sending MIDI (I hear nothing)
- loads well as vst2/vst3 in Bitwig DAW, but similarly to Carla, it does not seem to produce any notes when sending MIDI
- fails AU validation when trying to load in Logic as AU. Error says something like
ERROR: -4 IN CALL MusicDeviceMIDIEvent
(link to full log file here) - using JUCE plugin host, vst3 fails initialization and can’t be loaded (in fact it makes plugin host crash)
- using JUCE plugin host, AU version seems lo load fine but I don’t seem to be able to produce any notes when sending MIDI (I hear nothing)
linux VM - ubuntu studio 18.04 64bit (vst2, stand alone)
- all targets compile OK
- as stand alone I can run it and see normal plugin output log messages in the console without errors, but it freezes my VM right after engine initialization (most likely when it would start the engine or something like this). Maybe because the audio device in my VM is making JUCE go nuts.
- as vst2, with Carla I’m not able to load the plugin as as scan operation seems to fail for the plugin and I can’t have it available in the list of plugins. Maybe the plugin is failing some sort of validation?
- as vst2, when running in ELK’s custom plugin host (called Sushi), I see some errors in the console which end with a segmentation fault. Error says
*** ERROR: Rogue call to triggerAndWaitForCallback() *** ERROR: triggerAndWaitForCallback() unable to complete
(link to full log file here). This errors are indeed the same that I saw on my ELK board after compiling the plugin for the board and trying to run with sushi. - I could not test with JUCE’s AudioPluginHost because even if I can compile it ok on my VM, I can lot launch the app as it freezes my VM
I’ve been discussing with @stez-mind from the ELK team. They’re interested in getting this running so might join the conversation here as well.
Anyone from the tracktion engine team has ideas about what could be happening? Are you indeed able to compile as VST in linux and run the demo project in a host like Carla?
Any help will be much appreciated, thanks!