feat(midi): strum chords with preserved note ends and undo (phase 99)

This commit is contained in:
Johannes Findeisen 2026-11-06 02:16:46 +01:00
commit bd0a63c06d
17 changed files with 172 additions and 5 deletions

View file

@ -63,6 +63,16 @@ 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_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");
Fl::add_timeout(.3,[](void*){capture("creative-rack-actions");if(system("xdotool key Escape"))std::abort();});
auto *actions=dynamic_cast<Fl_Menu_Button *>(named(window,"Rack actions"));if(!actions)throw std::runtime_error("Missing rack actions");
actions->menu()->pulldown(actions->x(),actions->y(),actions->w(),actions->h(),nullptr,actions);
reset();dialog("creative-strum-dialog",[&]{s->strum_dialog();});
check(s->make_chord({4,7}));check(s->strum_chords(30,false));piano_view();capture("creative-strum-result");
window.do_callback();std::puts("Creative workflow captures completed.");return 0;
}
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");