feat(midi): qualify routed startup and refresh workflow screenshots (phase 105)

This commit is contained in:
Johannes Findeisen 2026-11-06 02:35:48 +01:00
commit 25d4ad5d3b
73 changed files with 208 additions and 37 deletions

View file

@ -63,6 +63,17 @@ 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_MIDI_ONLY")) {
reset();dialog("preferences-midi",[&]{window.show_preferences();},"midi");
dialog("preferences-midi-help",[&]{window.show_preferences();},"MIDI help");
auto *bar=first<Fl_Menu_Bar>(window);auto *file=bar->find_item("File");if(!file)throw std::runtime_error("File menu missing");
Fl::add_timeout(.3,[](void*){capture("midi-file-menu");if(system("xdotool key Escape"))std::abort();});
(file+1)->pulldown(0,bar->y()+bar->h(),0,0,nullptr,bar);
std::string midi=root+"/exported-keys.mid";check(window.export_midi_clip(midi.c_str()));
check(window.new_project());check(window.import_midi_file(midi.c_str()));window.fit_song();capture("midi-import-arrangement");
piano_view();capture("midi-import-piano-roll");
window.do_callback();std::puts("MIDI workflow captures completed.");return 0;
}
if(std::getenv("XTC_CAPTURE_CREATIVE_ONLY")) {
reset();check(window.open_track_inserts(0));auto *inserts=window.track_inserts();
check(inserts->apply_template(1));tab("Track inserts");capture("creative-dub-rack");
@ -118,7 +129,7 @@ int main(int argc,char **argv) {
dialog("audio-clip-properties",[&]{s->audio_properties_dialog();});dialog("audio-normalization",[&]{s->normalize_dialog();});check(s->normalize_audio(.25f));capture("audio-normalization-result");
dialog("project-collection",[&]{menu("File/Collect project media...");});check(window.collect_project((root+"/portable").c_str()));
dialog("loop-range",[&]{button("Loop range...");});dialog("midi-controller-mapping",[&]{menu("Audio/MIDI controller mapping");});dialog("about",[&]{menu("Help/About");});
for(const char *section:{"audio","plugins","interface","editing","project_defaults","transport"}){std::string file="preferences-"+std::string(section);for(char &c:file)if(c==' ')c='_';dialog(file.c_str(),[&]{window.show_preferences();},section);}
for(const char *section:{"audio","plugins","midi","interface","editing","project_defaults","transport"}){std::string file="preferences-"+std::string(section);for(char &c:file)if(c==' ')c='_';dialog(file.c_str(),[&]{window.show_preferences();},section);}
xtc_settings settings=window.settings();std::string fixtures=std::filesystem::canonical(argv[0]).parent_path().string();snprintf(settings.ladspa_paths,sizeof(settings.ladspa_paths),"%s",fixtures.c_str());settings.clap_paths[0]=settings.vst2_paths[0]=settings.vst3_paths[0]=0;
dialog("plugin-library",[&]{std::string path;xtc_choose_plugin_file(settings,path);});
for(auto entry:{std::pair<const char *,const char *>{"plugin-descriptors","plugin-fixture.so"},{"clap-instrument-descriptors","clap-synth-fixture.clap"},{"vst2-instrument-descriptors","vst2-synth-fixture.so"},{"vst3-instrument-descriptors","vst3-synth-fixture.so"}}){unsigned int index=0;dialog(entry.first,[&]{xtc_choose_plugin((fixtures+"/"+entry.second).c_str(),48000,index,strcmp(entry.first,"plugin-descriptors")!=0);});}