clean up ghost note wrt create drag.
[ardour.git] / session_utils / fix_bbtppq.cc
index 504a8b1886a0548990036553119701e942e0d03a..8dce59c35d995e88acde0fc6b7a5328ba8c3b938 100644 (file)
@@ -135,7 +135,7 @@ ensure_per_region_source (Session* session, boost::shared_ptr<MidiRegion> region
 
                Source::Lock newsrc_lock (newsrc->mutex());
 
-               write_bbt_source_to_source (region->midi_source(0), newsrc, newsrc_lock, region->pulse() - (region->start_beats().to_double() / 4.0));
+               write_bbt_source_to_source (region->midi_source(0), newsrc, newsrc_lock, region->pulse() - (region->start_beats() / 4.0));
 
                cout << UTILNAME << ":" << endl
                     << " Created new midi source file" << endl
@@ -189,7 +189,7 @@ ensure_per_source_source (Session* session, boost::shared_ptr<MidiRegion> region
 
                Source::Lock newsrc_lock (newsrc->mutex());
 
-               write_bbt_source_to_source (region->midi_source(0), newsrc, newsrc_lock, region->pulse() - (region->start_beats().to_double() / 4.0));
+               write_bbt_source_to_source (region->midi_source(0), newsrc, newsrc_lock, region->pulse() - (region->start_beats() / 4.0));
 
                cout << UTILNAME << ":" << endl
                     << " Created new midi source file" << endl
@@ -206,13 +206,13 @@ reset_start (Session* session, boost::shared_ptr<MidiRegion> region)
 {
        /* set start_beats to quarter note value from incorrect bbt*/
        TempoMap& tmap (session->tempo_map());
-       double new_start_qn = (tmap.pulse_at_beat (region->beat()) - tmap.pulse_at_beat (region->beat() - region->start_beats().to_double())) * 4.0;
+       double new_start_qn = (tmap.pulse_at_beat (region->beat()) - tmap.pulse_at_beat (region->beat() - region->start_beats())) * 4.0;
 
        /* force a change to start and start_beats */
        PositionLockStyle old_pls = region->position_lock_style();
        region->set_position_lock_style (AudioTime);
-       region->set_start (tmap.frame_at_quarter_note (new_start_qn) + 1);
-       region->set_start (tmap.frame_at_quarter_note (new_start_qn));
+       region->set_start (tmap.frame_at_quarter_note (region->pulse() * 4.0) - tmap.frame_at_quarter_note ((region->pulse() * 4.0) - new_start_qn) + 1);
+       region->set_start (tmap.frame_at_quarter_note (region->pulse() * 4.0) - tmap.frame_at_quarter_note ((region->pulse() * 4.0) - new_start_qn));
        region->set_position_lock_style (old_pls);
 
 }
@@ -222,14 +222,14 @@ reset_length (Session* session, boost::shared_ptr<MidiRegion> region)
 {
        /* set length_beats to quarter note value */
        TempoMap& tmap (session->tempo_map());
-       double new_length_qn = (tmap.pulse_at_beat (region->beat() + region->length_beats().to_double())
+       double new_length_qn = (tmap.pulse_at_beat (region->beat() + region->length_beats())
                                  - tmap.pulse_at_beat (region->beat())) * 4.0;
 
        /* force a change to length and length_beats */
        PositionLockStyle old_pls = region->position_lock_style();
        region->set_position_lock_style (AudioTime);
-       region->set_length (tmap.frame_at_quarter_note (new_length_qn) + 1, 0);
-       region->set_length (tmap.frame_at_quarter_note (new_length_qn), 0);
+       region->set_length (tmap.frame_at_quarter_note ((region->pulse() * 4.0) + new_length_qn) + 1 - region->position(), 0);
+       region->set_length (tmap.frame_at_quarter_note ((region->pulse() * 4.0) + new_length_qn)- region->position(), 0);
        region->set_position_lock_style (old_pls);
 }