ardour has a new ruler

The mapping bar is where tempo mapping operations will take place
This commit is contained in:
Paul Davis 2023-02-26 12:26:11 -07:00
parent 38bb89c110
commit 18249f7395
20 changed files with 87 additions and 8 deletions

View file

@ -173,8 +173,9 @@ Editor::initialize_rulers ()
lab_children.push_back (Element(timecode_label, PACK_SHRINK, PACK_START));
lab_children.push_back (Element(samples_label, PACK_SHRINK, PACK_START));
lab_children.push_back (Element(bbt_label, PACK_SHRINK, PACK_START));
lab_children.push_back (Element(meter_label, PACK_SHRINK, PACK_START));
lab_children.push_back (Element(mapping_label, PACK_SHRINK, PACK_START));
lab_children.push_back (Element(tempo_label, PACK_SHRINK, PACK_START));
lab_children.push_back (Element(meter_label, PACK_SHRINK, PACK_START));
lab_children.push_back (Element(range_mark_label, PACK_SHRINK, PACK_START));
lab_children.push_back (Element(transport_mark_label, PACK_SHRINK, PACK_START));
lab_children.push_back (Element(cd_mark_label, PACK_SHRINK, PACK_START));
@ -253,6 +254,11 @@ Editor::popup_ruler_menu (timepos_t const & where, ItemType t)
}
break;
case MappingBarItem:
ruler_items.push_back (MenuElem (_("New BBT Marker"), sigc::bind (sigc::mem_fun(*this, &Editor::mouse_add_new_tempo_event), where)));
ruler_items.push_back (MenuElem (_("New Tempo Marker"), sigc::bind (sigc::mem_fun(*this, &Editor::mouse_add_new_tempo_event), where)));
break;
case TempoBarItem:
case TempoCurveItem:
ruler_items.push_back (MenuElem (_("New Tempo"), sigc::bind (sigc::mem_fun(*this, &Editor::mouse_add_new_tempo_event), where)));
@ -328,6 +334,7 @@ Editor::store_ruler_visibility ()
node->set_property (X_("bbt"), ruler_bbt_action->get_active());
node->set_property (X_("meter"), ruler_meter_action->get_active());
node->set_property (X_("tempo"), ruler_tempo_action->get_active());
node->set_property (X_("mapping"), ruler_mapping_action->get_active());
node->set_property (X_("rangemarker"), ruler_range_action->get_active());
node->set_property (X_("transportmarker"), ruler_loop_punch_action->get_active());
node->set_property (X_("cdmarker"), ruler_cd_marker_action->get_active());
@ -362,6 +369,9 @@ Editor::restore_ruler_visibility ()
if (node->get_property ("tempo", yn)) {
ruler_tempo_action->set_active (yn);
}
if (node->get_property ("mapping", yn)) {
ruler_mapping_action->set_active (yn);
}
if (node->get_property ("meter", yn)) {
ruler_meter_action->set_active (yn);
}
@ -441,6 +451,7 @@ Editor::update_ruler_visibility ()
/* gtk update probs require this (damn) */
meter_label.hide();
tempo_label.hide();
mapping_label.hide();
range_mark_label.hide();
transport_mark_label.hide();
cd_mark_label.hide();
@ -509,19 +520,19 @@ Editor::update_ruler_visibility ()
bbt_label.hide();
}
if (ruler_meter_action->get_active()) {
old_unit_pos = meter_group->position().y;
if (ruler_mapping_action->get_active()) {
old_unit_pos = mapping_group->position().y;
if (tbpos != old_unit_pos) {
meter_group->move (ArdourCanvas::Duple (0.0, tbpos - old_unit_pos));
mapping_group->move (ArdourCanvas::Duple (0.0, tbpos - old_unit_pos));
}
meter_group->show();
meter_label.show();
mapping_group->show();
mapping_label.show();
tbpos += timebar_height;
tbgpos += timebar_height;
visible_timebars++;
} else {
meter_group->hide();
meter_label.hide();
mapping_group->hide();
mapping_label.hide();
}
if (ruler_tempo_action->get_active()) {
@ -539,6 +550,21 @@ Editor::update_ruler_visibility ()
tempo_label.hide();
}
if (ruler_meter_action->get_active()) {
old_unit_pos = meter_group->position().y;
if (tbpos != old_unit_pos) {
meter_group->move (ArdourCanvas::Duple (0.0, tbpos - old_unit_pos));
}
meter_group->show();
meter_label.show();
tbpos += timebar_height;
tbgpos += timebar_height;
visible_timebars++;
} else {
meter_group->hide();
meter_label.hide();
}
if (ruler_range_action->get_active()) {
old_unit_pos = range_marker_group->position().y;
if (tbpos != old_unit_pos) {