Fix assert() when using DnD to import MIDI files
When importing a multi-track MIDI files with identical track-names, Ardour would create the same file for each track. Effectively overwriting an existing file. The following MIDI file would create the same file twice in `interchange/`, once for each MTrk. ``` MFile 1 2 240 MTrk 0 Meta SeqName "Foo Bar" 0 TimeSig 4/4 24 8 0 Tempo 666667 0 Meta TrkEnd TrkEnd MTrk 0 Meta TrkName "Foo Bar" 0 On ch=10 n=36 v=95 ... ```
This commit is contained in:
parent
50bccb44d5
commit
b51621a1ae
@ -432,7 +432,7 @@ Editor::drop_paths_part_two (const vector<string>& paths, timepos_t const & p, d
|
||||
/* drop onto canvas background: create new tracks */
|
||||
|
||||
InstrumentSelector is; // instantiation builds instrument-list and sets default.
|
||||
do_import (midi_paths, Editing::ImportDistinctFiles, ImportAsTrack, SrcBest, SMFTrackName, SMFTempoIgnore, pos, is.selected_instrument(), false);
|
||||
do_import (midi_paths, Editing::ImportDistinctFiles, ImportAsTrack, SrcBest, SMFTrackNumber, SMFTempoIgnore, pos, is.selected_instrument(), false);
|
||||
|
||||
if (UIConfiguration::instance().get_only_copy_imported_files() || copy) {
|
||||
do_import (audio_paths, Editing::ImportDistinctFiles, Editing::ImportAsTrack,
|
||||
@ -450,7 +450,7 @@ Editor::drop_paths_part_two (const vector<string>& paths, timepos_t const & p, d
|
||||
selection->set (tv);
|
||||
|
||||
do_import (midi_paths, Editing::ImportSerializeFiles, ImportToTrack,
|
||||
SrcBest, SMFTrackName, SMFTempoIgnore, pos);
|
||||
SrcBest, SMFTrackNumber, SMFTempoIgnore, pos);
|
||||
|
||||
if (UIConfiguration::instance().get_only_copy_imported_files() || copy) {
|
||||
do_import (audio_paths, Editing::ImportSerializeFiles, Editing::ImportToTrack,
|
||||
|
@ -280,7 +280,7 @@ EditorSources::drag_data_received (const RefPtr<Gdk::DragContext>& context,
|
||||
|
||||
if (UIConfiguration::instance ().get_only_copy_imported_files () || copy) {
|
||||
_editor->do_import (paths, Editing::ImportDistinctFiles, Editing::ImportAsRegion,
|
||||
SrcBest, SMFTrackName, SMFTempoIgnore, pos);
|
||||
SrcBest, SMFTrackNumber, SMFTempoIgnore, pos);
|
||||
} else {
|
||||
_editor->do_embed (paths, Editing::ImportDistinctFiles, Editing::ImportAsRegion, pos);
|
||||
}
|
||||
|
@ -602,8 +602,8 @@ TriggerPage::drop_paths_part_two (std::vector<std::string> paths)
|
||||
InstrumentSelector is; // instantiation builds instrument-list and sets default.
|
||||
timepos_t pos (0);
|
||||
Editing::ImportDisposition disposition = Editing::ImportSerializeFiles; // or Editing::ImportDistinctFiles // TODO use drop modifier? config?
|
||||
PublicEditor::instance().do_import (midi_paths, disposition, Editing::ImportAsTrigger, SrcBest, SMFTrackName, SMFTempoIgnore, pos, is.selected_instrument (), false);
|
||||
PublicEditor::instance().do_import (audio_paths, disposition, Editing::ImportAsTrigger, SrcBest, SMFTrackName, SMFTempoIgnore, pos);
|
||||
PublicEditor::instance().do_import (midi_paths, disposition, Editing::ImportAsTrigger, SrcBest, SMFTrackNumber, SMFTempoIgnore, pos, is.selected_instrument (), false);
|
||||
PublicEditor::instance().do_import (audio_paths, disposition, Editing::ImportAsTrigger, SrcBest, SMFTrackNumber, SMFTempoIgnore, pos);
|
||||
}
|
||||
|
||||
bool
|
||||
|
Loading…
Reference in New Issue
Block a user