From eb58c4108f9ab7ab04fda7913042a0350dff68c7 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Tue, 13 Dec 2016 16:48:20 +0000 Subject: [PATCH] improving logic/flow for SMF type 1 files part 1: check num tracks for type1 and offer multichannel option if appropriate --- gtk2_ardour/sfdb_ui.cc | 35 +++++++++++++++++------------------ 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/gtk2_ardour/sfdb_ui.cc b/gtk2_ardour/sfdb_ui.cc index b2f96ed8a6..5a8de6c550 100644 --- a/gtk2_ardour/sfdb_ui.cc +++ b/gtk2_ardour/sfdb_ui.cc @@ -1436,7 +1436,7 @@ SoundFileOmega::reset_options () vector channel_strings; if (mode == ImportAsTrack || mode == ImportAsTapeTrack || mode == ImportToTrack) { - /// XXX needs special casing for MIDI type-1 files + channel_strings.push_back (_("one track per file")); if (selection_includes_multichannel) { @@ -1578,24 +1578,23 @@ SoundFileOmega::check_info (const vector& paths, bool& same_size, bool& } else if (SMFSource::valid_midi_file (*i)) { Evoral::SMF reader; - reader.open(*i); - if (reader.num_tracks() > 1) { - /* NOTE: we cannot merge midi-tracks. - * they will always be on separate tracks - * "one track per file" is not possible. - */ - //multichannel = true; // "channel" == track here... - } - if (reader.is_type0 () && reader.channels().size() > 1) { - /* for type-0 files, we can split - * "one track per channel" - */ - multichannel = true; - } - /* XXX we need err = true handling here in case - we can't check the file - */ + if (reader.open (*i)) { + err = true; + } else { + if (reader.is_type0 ()) { + if (reader.channels().size() > 1) { + /* for type-0 files, we can split + * "one track per channel" + */ + multichannel = true; + } + } else { + if (reader.num_tracks() > 1) { + multichannel = true; + } + } + } } else { err = true;