Don't try to auto-start engine for new sessions
[ardour.git] / gtk2_ardour / editor_audio_import.cc
index a75ecad7e0a22ef91f66b12293b129be5ad1604d..b7dabed6986844007a451539306eca7cc5744bdd 100644 (file)
@@ -39,6 +39,7 @@
 #include "ardour/midi_region.h"
 #include "ardour/midi_track.h"
 #include "ardour/operations.h"
+#include "ardour/profile.h"
 #include "ardour/region_factory.h"
 #include "ardour/smf_source.h"
 #include "ardour/source_factory.h"
@@ -262,7 +263,7 @@ Editor::get_nth_selected_midi_track (int nth) const
 }
 
 void
-Editor::import_smf_tempo_map (Evoral::SMF const & smf)
+Editor::import_smf_tempo_map (Evoral::SMF const & smf, framepos_t pos)
 {
        if (!_session) {
                return;
@@ -284,20 +285,20 @@ Editor::import_smf_tempo_map (Evoral::SMF const & smf)
                Evoral::SMF::Tempo* t = smf.nth_tempo (n);
                assert (t);
 
-               Tempo tempo (60 * (1000000 / (double) t->microseconds_per_quarter_note), 4.0);
+               Tempo tempo (t->tempo(), 32.0 / (double) t->notes_per_note);
                Meter meter (t->numerator, t->denominator);
                Timecode::BBT_Time bbt; /* 1|1|0 which is correct for the no-meter case */
 
                if (have_initial_meter) {
-                       new_map.add_tempo (tempo, (t->time_pulses/smf.ppqn()) / 4.0, 0, TempoSection::Constant, MusicTime);
+                       new_map.add_tempo (tempo, (t->time_pulses/smf.ppqn()) / 4.0, 0, MusicTime);
                        if (!(meter == last_meter)) {
                                bbt = new_map.bbt_at_quarter_note ((t->time_pulses/smf.ppqn()));
                                new_map.add_meter (meter, t->time_pulses, bbt, 0, MusicTime);
                        }
 
                } else {
-                       new_map.replace_tempo (new_map.tempo_section_at_frame (0), tempo, (t->time_pulses/smf.ppqn()) / 4.0, 0, TempoSection::Constant, AudioTime);
-                       new_map.replace_meter (new_map.meter_section_at_frame (0), meter, bbt, 0, AudioTime);
+                       new_map.replace_meter (new_map.meter_section_at_frame (0), meter, bbt, pos, AudioTime);
+                       new_map.replace_tempo (new_map.tempo_section_at_frame (0), tempo, 0.0, pos, AudioTime);
                        have_initial_meter = true;
 
                }
@@ -340,7 +341,7 @@ Editor::do_import (vector<string>        paths,
                                continue;
                        }
                        if (smf.num_tempos() > 0) {
-                               import_smf_tempo_map (smf);
+                               import_smf_tempo_map (smf, pos);
                                smf.close ();
                                break;
                        }
@@ -1029,6 +1030,7 @@ Editor::finish_bringing_in_material (boost::shared_ptr<Region> region,
                                list<boost::shared_ptr<MidiTrack> > mt (
                                        _session->new_midi_track (ChanCount (DataType::MIDI, 1),
                                                                  ChanCount (DataType::MIDI, 1),
+                                                                 Config->get_strict_io () || Profile->get_mixbus (),
                                                                  instrument, (Plugin::PresetRecord*) 0,
                                                                  (RouteGroup*) 0,
                                                                  1,
@@ -1038,11 +1040,6 @@ Editor::finish_bringing_in_material (boost::shared_ptr<Region> region,
                                if (mt.empty()) {
                                        return -1;
                                }
-                               if (Config->get_strict_io ()) {
-                                       for (list<boost::shared_ptr<MidiTrack> >::iterator i = mt.begin(); i != mt.end(); ++i) {
-                                               (*i)->set_strict_io (true);
-                                       }
-                               }
 
                                // TODO set strict_io from preferences
                                existing_track = mt.front();