From c1ad8d0ae2f3981baba5ef3b95a972de0ad3f236 Mon Sep 17 00:00:00 2001 From: "Raine M. Ekman" Date: Sun, 29 Mar 2015 17:16:35 +0300 Subject: [PATCH 1/2] MIDI import: add support for track names --- plugins/MidiImport/MidiImport.cpp | 34 +++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/plugins/MidiImport/MidiImport.cpp b/plugins/MidiImport/MidiImport.cpp index 67e7ba3b4..0b528fa2f 100644 --- a/plugins/MidiImport/MidiImport.cpp +++ b/plugins/MidiImport/MidiImport.cpp @@ -215,8 +215,9 @@ public: bool isSF2; bool hasNotes; MidiTime lastEnd; + QString trackName; - smfMidiChannel * create( TrackContainer* tc ) + smfMidiChannel * create( TrackContainer* tc, QString tn ) { if( !it ) { it = dynamic_cast( Track::create( Track::InstrumentTrack, tc ) ); @@ -238,7 +239,10 @@ public: #else it_inst = it->loadInstrument( "patman" ); #endif - + trackName = tn; + if( trackName != "") { + it->setName( tn ); + } lastEnd = 0; } return this; @@ -353,6 +357,7 @@ bool MidiImport::readSMF( TrackContainer* tc ) // Tracks for( int t = 0; t < seq->tracks(); ++t ) { + QString trackName = ""; Alg_track_ptr trk = seq->track( t ); pd.setValue( t + preTrackSteps ); @@ -368,15 +373,26 @@ bool MidiImport::readSMF( TrackContainer* tc ) if( evt->chan == -1 ) { - printf("MISSING GLOBAL THINGY\n"); - printf(" %d %d %f %s\n", (int) evt->chan, - evt->get_type_code(), evt->time, - evt->get_attribute() ); - // Global stuff + bool handled = false; + if( evt->is_update() ) + { + QString attr = evt->get_attribute(); + if( attr == "tracknames" ) { + trackName = evt->get_atom_value(); + handled = true; + } + } + if(!handled) { + printf("MISSING GLOBAL THINGY\n"); + printf(" %d %d %f %s %s\n", (int) evt->chan, + evt->get_type_code(), evt->time, + evt->get_attribute(), evt->get_atom_value() ); + // Global stuff + } } else if( evt->is_note() && evt->chan < 256 ) { - smfMidiChannel * ch = chs[evt->chan].create( tc ); + smfMidiChannel * ch = chs[evt->chan].create( tc, trackName ); Alg_note_ptr noteEvt = dynamic_cast( evt ); Note n( noteEvt->get_duration() * ticksPerBeat, @@ -389,7 +405,7 @@ bool MidiImport::readSMF( TrackContainer* tc ) else if( evt->is_update() ) { - smfMidiChannel * ch = chs[evt->chan].create( tc ); + smfMidiChannel * ch = chs[evt->chan].create( tc, trackName ); double time = evt->time*ticksPerBeat; QString update( evt->get_attribute() ); From 4d1e8633e1a0cde7cce739438edf3ef20a2ac73c Mon Sep 17 00:00:00 2001 From: "Raine M. Ekman" Date: Sun, 29 Mar 2015 17:26:02 +0300 Subject: [PATCH 2/2] MIDI import: remove old non-functional track name code. --- plugins/MidiImport/MidiImport.cpp | 6 ------ 1 file changed, 6 deletions(-) diff --git a/plugins/MidiImport/MidiImport.cpp b/plugins/MidiImport/MidiImport.cpp index 0b528fa2f..25c204368 100644 --- a/plugins/MidiImport/MidiImport.cpp +++ b/plugins/MidiImport/MidiImport.cpp @@ -431,12 +431,6 @@ bool MidiImport::readSMF( TrackContainer* tc ) } } } - else if( update == "tracknames" ) - { - QString trackName( evt->get_string_value() ); - ch->it->setName( trackName ); - //ch.p->setName( trackName ); - } else if( update.startsWith( "control" ) || update == "bendr" ) {