From a9dc45a6205dc22ca05106813ad96d911d62f32b Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Mon, 18 Aug 2025 16:23:01 -0600 Subject: [PATCH] add Evoral::SMF::end_track() This changes the assumption that an SMF object only refers to a single track when being written. ::end_track() is used within begin::write()/end_write() pairs to mark the start of a new SMF track. --- libs/evoral/SMF.cc | 10 +++++++++- libs/evoral/evoral/SMF.h | 2 ++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/libs/evoral/SMF.cc b/libs/evoral/SMF.cc index 9dbfc7f58b..3d9dbd08db 100644 --- a/libs/evoral/SMF.cc +++ b/libs/evoral/SMF.cc @@ -548,7 +548,15 @@ SMF::begin_write() assert(_smf_track); smf_add_track(_smf, _smf_track); - assert(_smf->number_of_tracks == 1); +} + +void +SMF::end_track () +{ + /* nothing to do in libsmf API to "close" the track, it seems */ + _smf_track = smf_track_new(); + assert (_smf_track); + smf_add_track(_smf, _smf_track); } void diff --git a/libs/evoral/evoral/SMF.h b/libs/evoral/evoral/SMF.h index f007fe3a76..67ba0074b2 100644 --- a/libs/evoral/evoral/SMF.h +++ b/libs/evoral/evoral/SMF.h @@ -168,6 +168,8 @@ public: bool _has_pgm_change; int _num_channels; UsedChannels _used_channels; + + void end_track (); }; }; /* namespace Evoral */