mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-16 19:56:31 +01:00
Tempo ramps - fix messed up meter section state, audio-locked tempos ignore the bbt setting in the tempo dialog for now.
This commit is contained in:
parent
d7ec204bf6
commit
c7ff67004a
2 changed files with 6 additions and 9 deletions
|
|
@ -345,7 +345,7 @@ Editor::edit_meter_section (MeterSection* section)
|
||||||
if (meter_dialog.get_lock_style() == MusicTime) {
|
if (meter_dialog.get_lock_style() == MusicTime) {
|
||||||
_session->tempo_map().replace_meter (*section, Meter (bpb, note_type), when);
|
_session->tempo_map().replace_meter (*section, Meter (bpb, note_type), when);
|
||||||
} else {
|
} else {
|
||||||
_session->tempo_map().replace_meter (*section, Meter (bpb, note_type), frame);
|
_session->tempo_map().replace_meter (*section, Meter (bpb, note_type), section->frame());
|
||||||
}
|
}
|
||||||
XMLNode &after = _session->tempo_map().get_state();
|
XMLNode &after = _session->tempo_map().get_state();
|
||||||
_session->add_command(new MementoCommand<TempoMap>(_session->tempo_map(), &before, &after));
|
_session->add_command(new MementoCommand<TempoMap>(_session->tempo_map(), &before, &after));
|
||||||
|
|
@ -378,7 +378,7 @@ Editor::edit_tempo_section (TempoSection* section)
|
||||||
if (tempo_dialog.get_lock_style() == MusicTime) {
|
if (tempo_dialog.get_lock_style() == MusicTime) {
|
||||||
_session->tempo_map().replace_tempo (*section, Tempo (bpm, nt), beat, tempo_dialog.get_tempo_type());
|
_session->tempo_map().replace_tempo (*section, Tempo (bpm, nt), beat, tempo_dialog.get_tempo_type());
|
||||||
} else {
|
} else {
|
||||||
_session->tempo_map().replace_tempo (*section, Tempo (bpm, nt), _session->tempo_map().frame_at_beat (beat), tempo_dialog.get_tempo_type());
|
_session->tempo_map().replace_tempo (*section, Tempo (bpm, nt), section->frame(), tempo_dialog.get_tempo_type());
|
||||||
}
|
}
|
||||||
XMLNode &after = _session->tempo_map().get_state();
|
XMLNode &after = _session->tempo_map().get_state();
|
||||||
_session->add_command (new MementoCommand<TempoMap>(_session->tempo_map(), &before, &after));
|
_session->add_command (new MementoCommand<TempoMap>(_session->tempo_map(), &before, &after));
|
||||||
|
|
|
||||||
|
|
@ -500,7 +500,7 @@ MeterSection::MeterSection (const XMLNode& node)
|
||||||
&bbt.beats,
|
&bbt.beats,
|
||||||
&bbt.ticks) < 3) {
|
&bbt.ticks) < 3) {
|
||||||
error << _("MeterSection XML node has an illegal \"bbt\" value") << endmsg;
|
error << _("MeterSection XML node has an illegal \"bbt\" value") << endmsg;
|
||||||
throw failed_constructor();
|
//throw failed_constructor();
|
||||||
}
|
}
|
||||||
|
|
||||||
start.second = bbt;
|
start.second = bbt;
|
||||||
|
|
@ -523,9 +523,8 @@ MeterSection::MeterSection (const XMLNode& node)
|
||||||
throw failed_constructor();
|
throw failed_constructor();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sscanf (prop->value().c_str(), "%lf", &_divisions_per_bar) != 1 || _divisions_per_bar < 0.0) {
|
if (sscanf (prop->value().c_str(), "%lf", &_divisions_per_bar) != 1 || _divisions_per_bar < 0.0) {
|
||||||
error << _("MeterSection XML node has an illegal \"beats-per-bar\" or \"divisions-per-bar\" value") << endmsg;
|
error << _("MeterSection XML node has an illegal \"divisions-per-bar\" value") << endmsg;
|
||||||
throw failed_constructor();
|
throw failed_constructor();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -533,7 +532,6 @@ MeterSection::MeterSection (const XMLNode& node)
|
||||||
error << _("MeterSection XML node has no \"note-type\" property") << endmsg;
|
error << _("MeterSection XML node has no \"note-type\" property") << endmsg;
|
||||||
throw failed_constructor();
|
throw failed_constructor();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sscanf (prop->value().c_str(), "%lf", &_note_type) != 1 || _note_type < 0.0) {
|
if (sscanf (prop->value().c_str(), "%lf", &_note_type) != 1 || _note_type < 0.0) {
|
||||||
error << _("MeterSection XML node has an illegal \"note-type\" value") << endmsg;
|
error << _("MeterSection XML node has an illegal \"note-type\" value") << endmsg;
|
||||||
throw failed_constructor();
|
throw failed_constructor();
|
||||||
|
|
@ -541,7 +539,6 @@ MeterSection::MeterSection (const XMLNode& node)
|
||||||
|
|
||||||
if ((prop = node.property ("lock-style")) == 0) {
|
if ((prop = node.property ("lock-style")) == 0) {
|
||||||
warning << _("MeterSection XML node has no \"lock-style\" property") << endmsg;
|
warning << _("MeterSection XML node has no \"lock-style\" property") << endmsg;
|
||||||
//throw failed_constructor();
|
|
||||||
set_position_lock_style (PositionLockStyle::MusicTime);
|
set_position_lock_style (PositionLockStyle::MusicTime);
|
||||||
} else {
|
} else {
|
||||||
set_position_lock_style (PositionLockStyle (string_2_enum (prop->value(), position_lock_style())));
|
set_position_lock_style (PositionLockStyle (string_2_enum (prop->value(), position_lock_style())));
|
||||||
|
|
@ -570,9 +567,9 @@ MeterSection::get_state() const
|
||||||
snprintf (buf, sizeof (buf), "%lf", beat());
|
snprintf (buf, sizeof (buf), "%lf", beat());
|
||||||
root->add_property ("beat", buf);
|
root->add_property ("beat", buf);
|
||||||
snprintf (buf, sizeof (buf), "%f", _note_type);
|
snprintf (buf, sizeof (buf), "%f", _note_type);
|
||||||
root->add_property ("frame", buf);
|
|
||||||
snprintf (buf, sizeof (buf), "%li", frame());
|
|
||||||
root->add_property ("note-type", buf);
|
root->add_property ("note-type", buf);
|
||||||
|
snprintf (buf, sizeof (buf), "%li", frame());
|
||||||
|
root->add_property ("frame", buf);
|
||||||
root->add_property ("lock-style", enum_2_string (position_lock_style()));
|
root->add_property ("lock-style", enum_2_string (position_lock_style()));
|
||||||
snprintf (buf, sizeof (buf), "%f", _divisions_per_bar);
|
snprintf (buf, sizeof (buf), "%f", _divisions_per_bar);
|
||||||
root->add_property ("divisions-per-bar", buf);
|
root->add_property ("divisions-per-bar", buf);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue