mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-06 23:05:04 +01:00
Add seconds as clock-unit
This commit is contained in:
parent
318e7efb9e
commit
867460cd30
8 changed files with 137 additions and 9 deletions
|
|
@ -568,6 +568,8 @@ ARDOUR_UI::install_actions ()
|
||||||
ActionManager::session_sensitive_actions.push_back (act);
|
ActionManager::session_sensitive_actions.push_back (act);
|
||||||
act = global_actions.register_action (transport_actions, X_("primary-clock-minsec"), _("Minutes & Seconds"), sigc::bind (sigc::mem_fun(primary_clock, &AudioClock::set_mode), AudioClock::MinSec, false));
|
act = global_actions.register_action (transport_actions, X_("primary-clock-minsec"), _("Minutes & Seconds"), sigc::bind (sigc::mem_fun(primary_clock, &AudioClock::set_mode), AudioClock::MinSec, false));
|
||||||
ActionManager::session_sensitive_actions.push_back (act);
|
ActionManager::session_sensitive_actions.push_back (act);
|
||||||
|
act = global_actions.register_action (transport_actions, X_("primary-clock-seconds"), _("Seconds"), sigc::bind (sigc::mem_fun(primary_clock, &AudioClock::set_mode), AudioClock::Seconds, false));
|
||||||
|
ActionManager::session_sensitive_actions.push_back (act);
|
||||||
act = global_actions.register_action (transport_actions, X_("primary-clock-samples"), _("Samples"), sigc::bind (sigc::mem_fun(primary_clock, &AudioClock::set_mode), AudioClock::Samples, false));
|
act = global_actions.register_action (transport_actions, X_("primary-clock-samples"), _("Samples"), sigc::bind (sigc::mem_fun(primary_clock, &AudioClock::set_mode), AudioClock::Samples, false));
|
||||||
ActionManager::session_sensitive_actions.push_back (act);
|
ActionManager::session_sensitive_actions.push_back (act);
|
||||||
|
|
||||||
|
|
@ -577,6 +579,8 @@ ARDOUR_UI::install_actions ()
|
||||||
ActionManager::session_sensitive_actions.push_back (act);
|
ActionManager::session_sensitive_actions.push_back (act);
|
||||||
act = global_actions.register_action (transport_actions, X_("secondary-clock-minsec"), _("Minutes & Seconds"), sigc::bind (sigc::mem_fun(secondary_clock, &AudioClock::set_mode), AudioClock::MinSec, false));
|
act = global_actions.register_action (transport_actions, X_("secondary-clock-minsec"), _("Minutes & Seconds"), sigc::bind (sigc::mem_fun(secondary_clock, &AudioClock::set_mode), AudioClock::MinSec, false));
|
||||||
ActionManager::session_sensitive_actions.push_back (act);
|
ActionManager::session_sensitive_actions.push_back (act);
|
||||||
|
act = global_actions.register_action (transport_actions, X_("secondary-clock-seconds"), _("Seconds"), sigc::bind (sigc::mem_fun(secondary_clock, &AudioClock::set_mode), AudioClock::Seconds, false));
|
||||||
|
ActionManager::session_sensitive_actions.push_back (act);
|
||||||
act = global_actions.register_action (transport_actions, X_("secondary-clock-samples"), _("Samples"), sigc::bind (sigc::mem_fun(secondary_clock, &AudioClock::set_mode), AudioClock::Samples, false));
|
act = global_actions.register_action (transport_actions, X_("secondary-clock-samples"), _("Samples"), sigc::bind (sigc::mem_fun(secondary_clock, &AudioClock::set_mode), AudioClock::Samples, false));
|
||||||
ActionManager::session_sensitive_actions.push_back (act);
|
ActionManager::session_sensitive_actions.push_back (act);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -477,6 +477,10 @@ AudioClock::get_field (Field f)
|
||||||
case Ticks:
|
case Ticks:
|
||||||
return edit_string.substr (8, 4);
|
return edit_string.substr (8, 4);
|
||||||
break;
|
break;
|
||||||
|
case SS_Seconds:
|
||||||
|
return edit_string.substr (0, 8);
|
||||||
|
case SS_Deciseconds:
|
||||||
|
return edit_string.substr (9, 1);
|
||||||
case S_Samples:
|
case S_Samples:
|
||||||
return edit_string;
|
return edit_string;
|
||||||
break;
|
break;
|
||||||
|
|
@ -504,6 +508,8 @@ AudioClock::end_edit (bool modify)
|
||||||
ok = minsec_validate_edit (edit_string);
|
ok = minsec_validate_edit (edit_string);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case Seconds:
|
||||||
|
// no break
|
||||||
case Samples:
|
case Samples:
|
||||||
if (edit_string.length() < 1) {
|
if (edit_string.length() < 1) {
|
||||||
edit_string = pre_edit_string;
|
edit_string = pre_edit_string;
|
||||||
|
|
@ -539,8 +545,12 @@ AudioClock::end_edit (bool modify)
|
||||||
pos = samples_from_minsec_string (edit_string);
|
pos = samples_from_minsec_string (edit_string);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case Seconds:
|
||||||
|
pos = samples_from_seconds_string (edit_string);
|
||||||
|
break;
|
||||||
|
|
||||||
case Samples:
|
case Samples:
|
||||||
pos = samples_from_audioframes_string (edit_string);
|
pos = samples_from_audiosamples_string (edit_string);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -575,6 +585,18 @@ AudioClock::drop_focus ()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
samplecnt_t
|
||||||
|
AudioClock::parse_as_seconds_distance (const std::string& str)
|
||||||
|
{
|
||||||
|
float f;
|
||||||
|
|
||||||
|
if (sscanf (str.c_str(), "%f", &f) == 1) {
|
||||||
|
return f * _session->sample_rate();
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
samplecnt_t
|
samplecnt_t
|
||||||
AudioClock::parse_as_samples_distance (const std::string& str)
|
AudioClock::parse_as_samples_distance (const std::string& str)
|
||||||
{
|
{
|
||||||
|
|
@ -708,6 +730,9 @@ AudioClock::parse_as_distance (const std::string& instr)
|
||||||
case MinSec:
|
case MinSec:
|
||||||
return parse_as_minsec_distance (instr);
|
return parse_as_minsec_distance (instr);
|
||||||
break;
|
break;
|
||||||
|
case Seconds:
|
||||||
|
return parse_as_seconds_distance (instr);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
@ -730,6 +755,9 @@ AudioClock::end_edit_relative (bool add)
|
||||||
ok = minsec_validate_edit (edit_string);
|
ok = minsec_validate_edit (edit_string);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case Seconds:
|
||||||
|
break;
|
||||||
|
|
||||||
case Samples:
|
case Samples:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
@ -866,6 +894,10 @@ AudioClock::set (samplepos_t when, bool force, samplecnt_t offset)
|
||||||
set_minsec (when, force);
|
set_minsec (when, force);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case Seconds:
|
||||||
|
set_seconds (when, force);
|
||||||
|
break;
|
||||||
|
|
||||||
case Samples:
|
case Samples:
|
||||||
set_samples (when, force);
|
set_samples (when, force);
|
||||||
break;
|
break;
|
||||||
|
|
@ -1019,6 +1051,32 @@ AudioClock::set_samples (samplepos_t when, bool /*force*/)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
AudioClock::set_seconds (samplepos_t when, bool /*force*/)
|
||||||
|
{
|
||||||
|
char buf[32];
|
||||||
|
|
||||||
|
if (_off) {
|
||||||
|
_layout->set_text (" ----------");
|
||||||
|
_left_btn.set_text ("", true);
|
||||||
|
_right_btn.set_text ("", true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (when >= _limit_pos || when <= -_limit_pos) {
|
||||||
|
set_out_of_bounds (when < 0);
|
||||||
|
} else {
|
||||||
|
if (when < 0) {
|
||||||
|
snprintf (buf, sizeof (buf), "%12.1f", when / (float)_session->sample_rate());
|
||||||
|
} else {
|
||||||
|
snprintf (buf, sizeof (buf), " %11.1f", when / (float)_session->sample_rate());
|
||||||
|
}
|
||||||
|
_layout->set_text (buf);
|
||||||
|
}
|
||||||
|
|
||||||
|
set_slave_info();
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
AudioClock::print_minsec (samplepos_t when, char* buf, size_t bufsize, float sample_rate)
|
AudioClock::print_minsec (samplepos_t when, char* buf, size_t bufsize, float sample_rate)
|
||||||
{
|
{
|
||||||
|
|
@ -1510,6 +1568,13 @@ AudioClock::index_to_field (int index) const
|
||||||
return MS_Milliseconds;
|
return MS_Milliseconds;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case Seconds:
|
||||||
|
if (index < 10) {
|
||||||
|
return SS_Seconds;
|
||||||
|
} else {
|
||||||
|
return SS_Deciseconds;
|
||||||
|
}
|
||||||
|
break;
|
||||||
case Samples:
|
case Samples:
|
||||||
return S_Samples;
|
return S_Samples;
|
||||||
break;
|
break;
|
||||||
|
|
@ -1604,6 +1669,7 @@ AudioClock::on_button_release_event (GdkEventButton *ev)
|
||||||
case Timecode_frames:
|
case Timecode_frames:
|
||||||
case MS_Milliseconds:
|
case MS_Milliseconds:
|
||||||
case Ticks:
|
case Ticks:
|
||||||
|
case SS_Deciseconds:
|
||||||
f = Field (0);
|
f = Field (0);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|
@ -1778,6 +1844,13 @@ AudioClock::get_sample_step (Field field, samplepos_t pos, int dir)
|
||||||
f = 1;
|
f = 1;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case SS_Seconds:
|
||||||
|
f = (samplecnt_t) _session->sample_rate();
|
||||||
|
break;
|
||||||
|
case SS_Deciseconds:
|
||||||
|
f = (samplecnt_t) _session->sample_rate() / 10.f;
|
||||||
|
break;
|
||||||
|
|
||||||
case MS_Hours:
|
case MS_Hours:
|
||||||
f = (samplecnt_t) floor (3600.0 * _session->sample_rate());
|
f = (samplecnt_t) floor (3600.0 * _session->sample_rate());
|
||||||
break;
|
break;
|
||||||
|
|
@ -1830,18 +1903,15 @@ AudioClock::current_duration (samplepos_t pos) const
|
||||||
samplepos_t ret = 0;
|
samplepos_t ret = 0;
|
||||||
|
|
||||||
switch (_mode) {
|
switch (_mode) {
|
||||||
case Timecode:
|
|
||||||
ret = last_when;
|
|
||||||
break;
|
|
||||||
case BBT:
|
case BBT:
|
||||||
ret = sample_duration_from_bbt_string (pos, _layout->get_text());
|
ret = sample_duration_from_bbt_string (pos, _layout->get_text());
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case Timecode:
|
||||||
case MinSec:
|
case MinSec:
|
||||||
ret = last_when;
|
case Seconds:
|
||||||
break;
|
|
||||||
|
|
||||||
case Samples:
|
case Samples:
|
||||||
|
ret = last_when;
|
||||||
ret = last_when;
|
ret = last_when;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
@ -2021,7 +2091,15 @@ AudioClock::sample_duration_from_bbt_string (samplepos_t pos, const string& str)
|
||||||
}
|
}
|
||||||
|
|
||||||
samplepos_t
|
samplepos_t
|
||||||
AudioClock::samples_from_audioframes_string (const string& str) const
|
AudioClock::samples_from_seconds_string (const string& str) const
|
||||||
|
{
|
||||||
|
float f;
|
||||||
|
sscanf (str.c_str(), "%f", &f);
|
||||||
|
return f * _session->sample_rate();
|
||||||
|
}
|
||||||
|
|
||||||
|
samplepos_t
|
||||||
|
AudioClock::samples_from_audiosamples_string (const string& str) const
|
||||||
{
|
{
|
||||||
samplepos_t f;
|
samplepos_t f;
|
||||||
sscanf (str.c_str(), "%" PRId64, &f);
|
sscanf (str.c_str(), "%" PRId64, &f);
|
||||||
|
|
@ -2057,6 +2135,7 @@ AudioClock::build_ops_menu ()
|
||||||
ops_items.push_back (MenuElem (_("Timecode"), sigc::bind (sigc::mem_fun(*this, &AudioClock::set_mode), Timecode, false)));
|
ops_items.push_back (MenuElem (_("Timecode"), sigc::bind (sigc::mem_fun(*this, &AudioClock::set_mode), Timecode, false)));
|
||||||
ops_items.push_back (MenuElem (_("Bars:Beats"), sigc::bind (sigc::mem_fun(*this, &AudioClock::set_mode), BBT, false)));
|
ops_items.push_back (MenuElem (_("Bars:Beats"), sigc::bind (sigc::mem_fun(*this, &AudioClock::set_mode), BBT, false)));
|
||||||
ops_items.push_back (MenuElem (_("Minutes:Seconds"), sigc::bind (sigc::mem_fun(*this, &AudioClock::set_mode), MinSec, false)));
|
ops_items.push_back (MenuElem (_("Minutes:Seconds"), sigc::bind (sigc::mem_fun(*this, &AudioClock::set_mode), MinSec, false)));
|
||||||
|
ops_items.push_back (MenuElem (_("Seconds"), sigc::bind (sigc::mem_fun(*this, &AudioClock::set_mode), Seconds, false)));
|
||||||
ops_items.push_back (MenuElem (_("Samples"), sigc::bind (sigc::mem_fun(*this, &AudioClock::set_mode), Samples, false)));
|
ops_items.push_back (MenuElem (_("Samples"), sigc::bind (sigc::mem_fun(*this, &AudioClock::set_mode), Samples, false)));
|
||||||
|
|
||||||
if (editable && !_off && !is_duration && !_follows_playhead) {
|
if (editable && !_off && !is_duration && !_follows_playhead) {
|
||||||
|
|
@ -2141,6 +2220,19 @@ AudioClock::set_mode (Mode m, bool noemit)
|
||||||
insert_map.push_back (1);
|
insert_map.push_back (1);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case Seconds:
|
||||||
|
insert_map.push_back (11);
|
||||||
|
insert_map.push_back (9);
|
||||||
|
insert_map.push_back (8);
|
||||||
|
insert_map.push_back (7);
|
||||||
|
insert_map.push_back (6);
|
||||||
|
insert_map.push_back (5);
|
||||||
|
insert_map.push_back (4);
|
||||||
|
insert_map.push_back (3);
|
||||||
|
insert_map.push_back (2);
|
||||||
|
insert_map.push_back (1);
|
||||||
|
break;
|
||||||
|
|
||||||
case Samples:
|
case Samples:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -47,6 +47,7 @@ class AudioClock : public CairoWidget, public ARDOUR::SessionHandlePtr
|
||||||
Timecode,
|
Timecode,
|
||||||
BBT,
|
BBT,
|
||||||
MinSec,
|
MinSec,
|
||||||
|
Seconds,
|
||||||
Samples
|
Samples
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -166,6 +167,8 @@ class AudioClock : public CairoWidget, public ARDOUR::SessionHandlePtr
|
||||||
Bars,
|
Bars,
|
||||||
Beats,
|
Beats,
|
||||||
Ticks,
|
Ticks,
|
||||||
|
SS_Seconds,
|
||||||
|
SS_Deciseconds,
|
||||||
S_Samples,
|
S_Samples,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -208,6 +211,7 @@ class AudioClock : public CairoWidget, public ARDOUR::SessionHandlePtr
|
||||||
void set_timecode (samplepos_t, bool);
|
void set_timecode (samplepos_t, bool);
|
||||||
void set_bbt (samplepos_t, ARDOUR::samplecnt_t, bool);
|
void set_bbt (samplepos_t, ARDOUR::samplecnt_t, bool);
|
||||||
void set_minsec (samplepos_t, bool);
|
void set_minsec (samplepos_t, bool);
|
||||||
|
void set_seconds (samplepos_t, bool);
|
||||||
void set_samples (samplepos_t, bool);
|
void set_samples (samplepos_t, bool);
|
||||||
void set_out_of_bounds (bool negative);
|
void set_out_of_bounds (bool negative);
|
||||||
|
|
||||||
|
|
@ -223,7 +227,8 @@ class AudioClock : public CairoWidget, public ARDOUR::SessionHandlePtr
|
||||||
samplepos_t samples_from_bbt_string (samplepos_t, const std::string&) const;
|
samplepos_t samples_from_bbt_string (samplepos_t, const std::string&) const;
|
||||||
samplepos_t sample_duration_from_bbt_string (samplepos_t, const std::string&) const;
|
samplepos_t sample_duration_from_bbt_string (samplepos_t, const std::string&) const;
|
||||||
samplepos_t samples_from_minsec_string (const std::string&) const;
|
samplepos_t samples_from_minsec_string (const std::string&) const;
|
||||||
samplepos_t samples_from_audioframes_string (const std::string&) const;
|
samplepos_t samples_from_seconds_string (const std::string&) const;
|
||||||
|
samplepos_t samples_from_audiosamples_string (const std::string&) const;
|
||||||
|
|
||||||
void session_configuration_changed (std::string);
|
void session_configuration_changed (std::string);
|
||||||
void session_property_changed (const PBD::PropertyChange&);
|
void session_property_changed (const PBD::PropertyChange&);
|
||||||
|
|
@ -239,6 +244,7 @@ class AudioClock : public CairoWidget, public ARDOUR::SessionHandlePtr
|
||||||
ARDOUR::samplecnt_t parse_as_timecode_distance (const std::string&);
|
ARDOUR::samplecnt_t parse_as_timecode_distance (const std::string&);
|
||||||
ARDOUR::samplecnt_t parse_as_minsec_distance (const std::string&);
|
ARDOUR::samplecnt_t parse_as_minsec_distance (const std::string&);
|
||||||
ARDOUR::samplecnt_t parse_as_bbt_distance (const std::string&);
|
ARDOUR::samplecnt_t parse_as_bbt_distance (const std::string&);
|
||||||
|
ARDOUR::samplecnt_t parse_as_seconds_distance (const std::string&);
|
||||||
ARDOUR::samplecnt_t parse_as_samples_distance (const std::string&);
|
ARDOUR::samplecnt_t parse_as_samples_distance (const std::string&);
|
||||||
|
|
||||||
void set_font (Pango::FontDescription);
|
void set_font (Pango::FontDescription);
|
||||||
|
|
|
||||||
|
|
@ -767,6 +767,14 @@ EditorRegions::format_position (samplepos_t pos, char* buf, size_t bufsize, bool
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case AudioClock::Seconds:
|
||||||
|
if (onoff) {
|
||||||
|
snprintf (buf, bufsize, "%.1f", pos / (float)_session->sample_rate());
|
||||||
|
} else {
|
||||||
|
snprintf (buf, bufsize, "(%.1f)", pos / (float)_session->sample_rate());
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
case AudioClock::Samples:
|
case AudioClock::Samples:
|
||||||
if (onoff) {
|
if (onoff) {
|
||||||
snprintf (buf, bufsize, "%" PRId64, pos);
|
snprintf (buf, bufsize, "%" PRId64, pos);
|
||||||
|
|
|
||||||
|
|
@ -59,6 +59,7 @@ setup_gtk_ardour_enums ()
|
||||||
REGISTER_CLASS_ENUM (AudioClock, Timecode);
|
REGISTER_CLASS_ENUM (AudioClock, Timecode);
|
||||||
REGISTER_CLASS_ENUM (AudioClock, BBT);
|
REGISTER_CLASS_ENUM (AudioClock, BBT);
|
||||||
REGISTER_CLASS_ENUM (AudioClock, MinSec);
|
REGISTER_CLASS_ENUM (AudioClock, MinSec);
|
||||||
|
REGISTER_CLASS_ENUM (AudioClock, Seconds);
|
||||||
REGISTER_CLASS_ENUM (AudioClock, Samples);
|
REGISTER_CLASS_ENUM (AudioClock, Samples);
|
||||||
REGISTER (clock_mode);
|
REGISTER (clock_mode);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -917,6 +917,7 @@ ExportFormatDialog::update_time (AnyTime & time, AudioClock const & clock)
|
||||||
time.type = AnyTime::BBT;
|
time.type = AnyTime::BBT;
|
||||||
_session->bbt_time (samples, time.bbt);
|
_session->bbt_time (samples, time.bbt);
|
||||||
break;
|
break;
|
||||||
|
case AudioClock::Seconds:
|
||||||
case AudioClock::MinSec:
|
case AudioClock::MinSec:
|
||||||
time.type = AnyTime::Seconds;
|
time.type = AnyTime::Seconds;
|
||||||
time.seconds = (double) samples / _session->sample_rate();
|
time.seconds = (double) samples / _session->sample_rate();
|
||||||
|
|
|
||||||
|
|
@ -242,6 +242,7 @@ MiniTimeline::calculate_time_width ()
|
||||||
case AudioClock::MinSec:
|
case AudioClock::MinSec:
|
||||||
_layout->set_text ("88:88:88,88");
|
_layout->set_text ("88:88:88,88");
|
||||||
break;
|
break;
|
||||||
|
case AudioClock::Seconds:
|
||||||
case AudioClock::Samples:
|
case AudioClock::Samples:
|
||||||
_layout->set_text ("8888888888");
|
_layout->set_text ("8888888888");
|
||||||
break;
|
break;
|
||||||
|
|
@ -293,6 +294,13 @@ MiniTimeline::format_time (samplepos_t when)
|
||||||
_layout->set_text (std::string(buf).substr(1));
|
_layout->set_text (std::string(buf).substr(1));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case AudioClock::Seconds:
|
||||||
|
{
|
||||||
|
char buf[32];
|
||||||
|
snprintf (buf, sizeof (buf), "%.1f", when / (float)_session->sample_rate());
|
||||||
|
_layout->set_text (buf);
|
||||||
|
}
|
||||||
|
break;
|
||||||
case AudioClock::Samples:
|
case AudioClock::Samples:
|
||||||
{
|
{
|
||||||
char buf[32];
|
char buf[32];
|
||||||
|
|
|
||||||
|
|
@ -122,6 +122,10 @@ VerboseCursor::set_time (samplepos_t sample)
|
||||||
AudioClock::print_minsec (sample, buf, sizeof (buf), _editor->_session->sample_rate());
|
AudioClock::print_minsec (sample, buf, sizeof (buf), _editor->_session->sample_rate());
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case AudioClock::Seconds:
|
||||||
|
snprintf (buf, sizeof(buf), "%.1f", sample / (float)_editor->_session->sample_rate());
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
snprintf (buf, sizeof(buf), "%" PRIi64, sample);
|
snprintf (buf, sizeof(buf), "%" PRIi64, sample);
|
||||||
break;
|
break;
|
||||||
|
|
@ -191,6 +195,10 @@ VerboseCursor::set_duration (samplepos_t start, samplepos_t end)
|
||||||
AudioClock::print_minsec (end - start, buf, sizeof (buf), _editor->_session->sample_rate());
|
AudioClock::print_minsec (end - start, buf, sizeof (buf), _editor->_session->sample_rate());
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case AudioClock::Seconds:
|
||||||
|
snprintf (buf, sizeof(buf), "%.1f", (end - start) / (float)_editor->_session->sample_rate());
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
snprintf (buf, sizeof(buf), "%" PRIi64, end - start);
|
snprintf (buf, sizeof(buf), "%" PRIi64, end - start);
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue