#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"
}
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;
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;
}
continue;
}
if (smf.num_tempos() > 0) {
- import_smf_tempo_map (smf);
+ import_smf_tempo_map (smf, pos);
smf.close ();
break;
}
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,
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();