feat(plugins): qualify host VST3 chains and refresh the DAW gallery (phase 89)

This commit is contained in:
Johannes Findeisen 2026-11-06 01:50:25 +01:00
commit 26ace28bb5
73 changed files with 344 additions and 18 deletions

View file

@ -6,6 +6,8 @@
#include "../src/gui/piano_roll.hpp"
#include "../src/gui/plugin_dialog.hpp"
#include "../src/gui/plugin_library.hpp"
#include "../src/gui/track_inserts.hpp"
#include <FL/Fl_Menu_Button.H>
#include <FL/Fl.H>
#include <FL/Fl_Tabs.H>
#include <FL/Fl_Menu_Bar.H>
@ -61,6 +63,18 @@ int main(int argc,char **argv) {
MainWindow window(false,"");main_window=&window;window.resize(0,0,1400,900);window.show();check(window.open_project(project.c_str()));pump();
auto *s=first<SequencerWidget>(window);if(!s)throw std::runtime_error("Sequencer missing");
auto reset=[&](){window.reset_layout();check(window.open_project(project.c_str()));window.resize(0,20,1400,900);tab("Sequencer");s->select(0,0);s->position(0);check(window.set_loop(3840,7680,true));window.fit_song();pump();};
if(std::getenv("XTC_CAPTURE_HOST_VST3")) {
reset();capture("compact-workspace");
auto *create=dynamic_cast<Fl_Menu_Button *>(named(window,"Create"));if(!create)throw std::runtime_error("Missing Create dropdown");
Fl::add_timeout(.3,[](void*){capture("create-track-menu");if(system("xdotool key Escape"))std::abort();});
create->menu()->pulldown(create->x(),create->y(),create->w(),create->h(),nullptr,create);
const char *effects[]={"ZamEQ2","ZamAutoSat","ZamDelay"};
for(const char *effect:effects){std::string binary=std::string("/usr/lib/vst3/")+effect+".vst3/Contents/x86_64-linux/"+effect+".so";check(window.add_track_effect(0,binary.c_str(),0));}
auto *inserts=window.track_inserts();inserts->select_track(0);tab("Track inserts");capture("track-inserts-vst3");
dialog("track-insert-vst3-identity",[&]{check(inserts->inspect_slot());});
check(inserts->set_mix(.65,1));capture("track-inserts-parallel");
window.do_callback();std::puts("Installed host VST3 captures completed.");return 0;
}
if(std::getenv("XTC_CAPTURE_SAMPLE_ONLY")) {
reset();char source[4096];if(!realpath("examples/projects/original-pluck.wav",source))throw std::runtime_error("Missing sample WAV");
check(window.create_track(false));check(window.import_audio(source));