a few tweaks for audio clocks (handle loss of focus, change editing colors at the right times) and prep for relative edits
git-svn-id: svn://localhost/ardour2/branches/3.0@10669 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
5cb4efea80
commit
30c62b5f13
@ -637,7 +637,6 @@ ARDOUR_UI::setup_clock ()
|
||||
|
||||
big_clock_window->set (new Window (WINDOW_TOPLEVEL), false);
|
||||
|
||||
big_clock_window->get()->set_resizable (true);
|
||||
big_clock_window->get()->set_keep_above (true);
|
||||
big_clock_window->get()->set_border_width (0);
|
||||
big_clock_window->get()->add (*big_clock);
|
||||
|
@ -374,6 +374,7 @@ AudioClock::start_edit ()
|
||||
editing = true;
|
||||
|
||||
show_edit_status (1);
|
||||
queue_draw ();
|
||||
|
||||
Keyboard::magic_widget_grab_focus ();
|
||||
grab_focus ();
|
||||
@ -414,6 +415,7 @@ AudioClock::end_edit (bool modify)
|
||||
|
||||
} else {
|
||||
editing = false;
|
||||
_layout->set_attributes (normal_attributes);
|
||||
_layout->set_text (pre_edit_string);
|
||||
}
|
||||
|
||||
@ -434,6 +436,89 @@ AudioClock::end_edit (bool modify)
|
||||
}
|
||||
}
|
||||
|
||||
framecnt_t
|
||||
AudioClock::parse_as_frames_distance (const std::string& str)
|
||||
{
|
||||
framecnt_t f;
|
||||
|
||||
if (sscanf (str.c_str(), "%" PRId64, &f) == 1) {
|
||||
return f;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
framecnt_t
|
||||
AudioClock::parse_as_minsec_distance (const std::string& str)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
framecnt_t
|
||||
AudioClock::parse_as_timecode_distance (const std::string& str)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
framecnt_t
|
||||
AudioClock::parse_as_bbt_distance (const std::string& str)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
framecnt_t
|
||||
AudioClock::parse_as_distance (const std::string& str)
|
||||
{
|
||||
switch (_mode) {
|
||||
case Timecode:
|
||||
return parse_as_timecode_distance (str);
|
||||
break;
|
||||
case Frames:
|
||||
return parse_as_frames_distance (str);
|
||||
break;
|
||||
case BBT:
|
||||
return parse_as_bbt_distance (str);
|
||||
break;
|
||||
case MinSec:
|
||||
return parse_as_minsec_distance (str);
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void
|
||||
AudioClock::end_edit_relative (bool add)
|
||||
{
|
||||
framecnt_t frames = parse_as_distance (input_string);
|
||||
|
||||
editing = false;
|
||||
|
||||
if (frames != 0) {
|
||||
if (add) {
|
||||
set (current_time() + frames, true);
|
||||
} else {
|
||||
framepos_t c = current_time();
|
||||
|
||||
if (c > frames) {
|
||||
set (c - frames, true);
|
||||
} else {
|
||||
set (0, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* move focus back to the default widget in the top level window */
|
||||
|
||||
Keyboard::magic_widget_drop_focus ();
|
||||
|
||||
Widget* top = get_toplevel();
|
||||
|
||||
if (top->is_toplevel ()) {
|
||||
Window* win = dynamic_cast<Window*> (top);
|
||||
win->grab_focus ();
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
AudioClock::session_configuration_changed (std::string p)
|
||||
{
|
||||
@ -824,6 +909,16 @@ AudioClock::on_key_release_event (GdkEventKey *ev)
|
||||
new_char = '9';
|
||||
break;
|
||||
|
||||
case GDK_minus:
|
||||
case GDK_KP_Subtract:
|
||||
end_edit_relative (false);
|
||||
break;
|
||||
|
||||
case GDK_plus:
|
||||
case GDK_KP_Add:
|
||||
end_edit_relative (true);
|
||||
break;
|
||||
|
||||
case GDK_Tab:
|
||||
case GDK_Return:
|
||||
case GDK_KP_Enter:
|
||||
@ -1012,6 +1107,16 @@ AudioClock::on_button_release_event (GdkEventButton *ev)
|
||||
return false;
|
||||
}
|
||||
|
||||
bool
|
||||
AudioClock::on_focus_out_event (GdkEventFocus* ev)
|
||||
{
|
||||
bool ret = CairoWidget::on_focus_out_event (ev);
|
||||
|
||||
end_edit (false);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
bool
|
||||
AudioClock::on_scroll_event (GdkEventScroll *ev)
|
||||
{
|
||||
@ -1501,376 +1606,3 @@ AudioClock::set_draw_background (bool yn)
|
||||
_need_bg = yn;
|
||||
}
|
||||
|
||||
void
|
||||
AudioClock::timecode_tester ()
|
||||
{
|
||||
#if 0
|
||||
#define Timecode_SAMPLE_TEST_1
|
||||
#define Timecode_SAMPLE_TEST_2
|
||||
#define Timecode_SAMPLE_TEST_3
|
||||
#define Timecode_SAMPLE_TEST_4
|
||||
#define Timecode_SAMPLE_TEST_5
|
||||
#define Timecode_SAMPLE_TEST_6
|
||||
#define Timecode_SAMPLE_TEST_7
|
||||
|
||||
// Testcode for timecode<->sample conversions (P.S.)
|
||||
Timecode::Time timecode1;
|
||||
framepos_t sample1;
|
||||
framepos_t oldsample = 0;
|
||||
Timecode::Time timecode2;
|
||||
framecnt_t sample_increment;
|
||||
|
||||
sample_increment = (framecnt_t)rint(_session->frame_rate() / _session->timecode_frames_per_second);
|
||||
|
||||
#ifdef Timecode_SAMPLE_TEST_1
|
||||
// Test 1: use_offset = false, use_subframes = false
|
||||
cout << "use_offset = false, use_subframes = false" << endl;
|
||||
for (int i = 0; i < 108003; i++) {
|
||||
_session->timecode_to_sample( timecode1, sample1, false /* use_offset */, false /* use_subframes */ );
|
||||
_session->sample_to_timecode( sample1, timecode2, false /* use_offset */, false /* use_subframes */ );
|
||||
|
||||
if ((i > 0) && ( ((sample1 - oldsample) != sample_increment) && ((sample1 - oldsample) != (sample_increment + 1)) && ((sample1 - oldsample) != (sample_increment - 1)))) {
|
||||
cout << "ERROR: sample increment not right: " << (sample1 - oldsample) << " != " << sample_increment << endl;
|
||||
cout << "timecode1: " << timecode1.hours << ":" << timecode1.minutes << ":" << timecode1.seconds << ":" << timecode1.frames << "::" << timecode1.subframes << " -> ";
|
||||
cout << "sample: " << sample1 << endl;
|
||||
cout << "sample: " << sample1 << " -> ";
|
||||
cout << "timecode2: " << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
|
||||
break;
|
||||
}
|
||||
|
||||
if (timecode2.hours != timecode1.hours || timecode2.minutes != timecode1.minutes || timecode2.seconds != timecode2.seconds || timecode2.frames != timecode1.frames) {
|
||||
cout << "ERROR: timecode2 not equal timecode1" << endl;
|
||||
cout << "timecode1: " << timecode1.hours << ":" << timecode1.minutes << ":" << timecode1.seconds << ":" << timecode1.frames << "::" << timecode1.subframes << " -> ";
|
||||
cout << "sample: " << sample1 << endl;
|
||||
cout << "sample: " << sample1 << " -> ";
|
||||
cout << "timecode2: " << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
|
||||
break;
|
||||
}
|
||||
oldsample = sample1;
|
||||
_session->timecode_increment( timecode1 );
|
||||
}
|
||||
|
||||
cout << "sample_increment: " << sample_increment << endl;
|
||||
cout << "sample: " << sample1 << " -> ";
|
||||
cout << "timecode: " << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
|
||||
#endif
|
||||
|
||||
#ifdef Timecode_SAMPLE_TEST_2
|
||||
// Test 2: use_offset = true, use_subframes = false
|
||||
cout << "use_offset = true, use_subframes = false" << endl;
|
||||
|
||||
timecode1.hours = 0;
|
||||
timecode1.minutes = 0;
|
||||
timecode1.seconds = 0;
|
||||
timecode1.frames = 0;
|
||||
timecode1.subframes = 0;
|
||||
sample1 = oldsample = 0;
|
||||
|
||||
_session->sample_to_timecode( sample1, timecode1, true /* use_offset */, false /* use_subframes */ );
|
||||
cout << "Starting at sample: " << sample1 << " -> ";
|
||||
cout << "timecode: " << (timecode1.negative ? "-" : "") << timecode1.hours << ":" << timecode1.minutes << ":" << timecode1.seconds << ":" << timecode1.frames << "::" << timecode1.subframes << endl;
|
||||
|
||||
for (int i = 0; i < 108003; i++) {
|
||||
_session->timecode_to_sample( timecode1, sample1, true /* use_offset */, false /* use_subframes */ );
|
||||
_session->sample_to_timecode( sample1, timecode2, true /* use_offset */, false /* use_subframes */ );
|
||||
|
||||
// cout << "timecode: " << (timecode1.negative ? "-" : "") << timecode1.hours << ":" << timecode1.minutes << ":" << timecode1.seconds << ":" << timecode1.frames << "::" << timecode1.subframes << " -> ";
|
||||
// cout << "sample: " << sample1 << endl;
|
||||
// cout << "sample: " << sample1 << " -> ";
|
||||
// cout << "timecode: " << (timecode2.negative ? "-" : "") << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
|
||||
|
||||
if ((i > 0) && ( ((sample1 - oldsample) != sample_increment) && ((sample1 - oldsample) != (sample_increment + 1)) && ((sample1 - oldsample) != (sample_increment - 1)))) {
|
||||
cout << "ERROR: sample increment not right: " << (sample1 - oldsample) << " != " << sample_increment << endl;
|
||||
cout << "timecode1: " << (timecode1.negative ? "-" : "") << timecode1.hours << ":" << timecode1.minutes << ":" << timecode1.seconds << ":" << timecode1.frames << "::" << timecode1.subframes << " -> ";
|
||||
cout << "sample: " << sample1 << endl;
|
||||
cout << "sample: " << sample1 << " -> ";
|
||||
cout << "timecode2: " << (timecode2.negative ? "-" : "") << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
|
||||
break;
|
||||
}
|
||||
|
||||
if (timecode2.hours != timecode1.hours || timecode2.minutes != timecode1.minutes || timecode2.seconds != timecode2.seconds || timecode2.frames != timecode1.frames) {
|
||||
cout << "ERROR: timecode2 not equal timecode1" << endl;
|
||||
cout << "timecode1: " << (timecode1.negative ? "-" : "") << timecode1.hours << ":" << timecode1.minutes << ":" << timecode1.seconds << ":" << timecode1.frames << "::" << timecode1.subframes << " -> ";
|
||||
cout << "sample: " << sample1 << endl;
|
||||
cout << "sample: " << sample1 << " -> ";
|
||||
cout << "timecode2: " << (timecode2.negative ? "-" : "") << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
|
||||
break;
|
||||
}
|
||||
oldsample = sample1;
|
||||
_session->timecode_increment( timecode1 );
|
||||
}
|
||||
|
||||
cout << "sample_increment: " << sample_increment << endl;
|
||||
cout << "sample: " << sample1 << " -> ";
|
||||
cout << "timecode: " << (timecode2.negative ? "-" : "") << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
|
||||
#endif
|
||||
|
||||
#ifdef Timecode_SAMPLE_TEST_3
|
||||
// Test 3: use_offset = true, use_subframes = false, decrement
|
||||
cout << "use_offset = true, use_subframes = false, decrement" << endl;
|
||||
|
||||
_session->sample_to_timecode( sample1, timecode1, true /* use_offset */, false /* use_subframes */ );
|
||||
cout << "Starting at sample: " << sample1 << " -> ";
|
||||
cout << "timecode: " << (timecode1.negative ? "-" : "") << timecode1.hours << ":" << timecode1.minutes << ":" << timecode1.seconds << ":" << timecode1.frames << "::" << timecode1.subframes << endl;
|
||||
|
||||
for (int i = 0; i < 108003; i++) {
|
||||
_session->timecode_to_sample( timecode1, sample1, true /* use_offset */, false /* use_subframes */ );
|
||||
_session->sample_to_timecode( sample1, timecode2, true /* use_offset */, false /* use_subframes */ );
|
||||
|
||||
// cout << "timecode: " << (timecode1.negative ? "-" : "") << timecode1.hours << ":" << timecode1.minutes << ":" << timecode1.seconds << ":" << timecode1.frames << "::" << timecode1.subframes << " -> ";
|
||||
// cout << "sample: " << sample1 << endl;
|
||||
// cout << "sample: " << sample1 << " -> ";
|
||||
// cout << "timecode: " << (timecode2.negative ? "-" : "") << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
|
||||
|
||||
if ((i > 0) && ( ((oldsample - sample1) != sample_increment) && ((oldsample - sample1) != (sample_increment + 1)) && ((oldsample - sample1) != (sample_increment - 1)))) {
|
||||
cout << "ERROR: sample increment not right: " << (oldsample - sample1) << " != " << sample_increment << endl;
|
||||
cout << "timecode1: " << (timecode1.negative ? "-" : "") << timecode1.hours << ":" << timecode1.minutes << ":" << timecode1.seconds << ":" << timecode1.frames << "::" << timecode1.subframes << " -> ";
|
||||
cout << "sample: " << sample1 << endl;
|
||||
cout << "sample: " << sample1 << " -> ";
|
||||
cout << "timecode2: " << (timecode2.negative ? "-" : "") << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
|
||||
break;
|
||||
}
|
||||
|
||||
if (timecode2.hours != timecode1.hours || timecode2.minutes != timecode1.minutes || timecode2.seconds != timecode2.seconds || timecode2.frames != timecode1.frames) {
|
||||
cout << "ERROR: timecode2 not equal timecode1" << endl;
|
||||
cout << "timecode1: " << (timecode1.negative ? "-" : "") << timecode1.hours << ":" << timecode1.minutes << ":" << timecode1.seconds << ":" << timecode1.frames << "::" << timecode1.subframes << " -> ";
|
||||
cout << "sample: " << sample1 << endl;
|
||||
cout << "sample: " << sample1 << " -> ";
|
||||
cout << "timecode2: " << (timecode2.negative ? "-" : "") << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
|
||||
break;
|
||||
}
|
||||
oldsample = sample1;
|
||||
_session->timecode_decrement( timecode1 );
|
||||
}
|
||||
|
||||
cout << "sample_decrement: " << sample_increment << endl;
|
||||
cout << "sample: " << sample1 << " -> ";
|
||||
cout << "timecode: " << (timecode2.negative ? "-" : "") << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef Timecode_SAMPLE_TEST_4
|
||||
// Test 4: use_offset = true, use_subframes = true
|
||||
cout << "use_offset = true, use_subframes = true" << endl;
|
||||
|
||||
for (long sub = 5; sub < 80; sub += 5) {
|
||||
timecode1.hours = 0;
|
||||
timecode1.minutes = 0;
|
||||
timecode1.seconds = 0;
|
||||
timecode1.frames = 0;
|
||||
timecode1.subframes = 0;
|
||||
sample1 = oldsample = (sample_increment * sub) / 80;
|
||||
|
||||
_session->sample_to_timecode( sample1, timecode1, true /* use_offset */, true /* use_subframes */ );
|
||||
|
||||
cout << "starting at sample: " << sample1 << " -> ";
|
||||
cout << "timecode: " << (timecode1.negative ? "-" : "") << timecode1.hours << ":" << timecode1.minutes << ":" << timecode1.seconds << ":" << timecode1.frames << "::" << timecode1.subframes << endl;
|
||||
|
||||
for (int i = 0; i < 108003; i++) {
|
||||
_session->timecode_to_sample( timecode1, sample1, true /* use_offset */, true /* use_subframes */ );
|
||||
_session->sample_to_timecode( sample1, timecode2, true /* use_offset */, true /* use_subframes */ );
|
||||
|
||||
if ((i > 0) && ( ((sample1 - oldsample) != sample_increment) && ((sample1 - oldsample) != (sample_increment + 1)) && ((sample1 - oldsample) != (sample_increment - 1)))) {
|
||||
cout << "ERROR: sample increment not right: " << (sample1 - oldsample) << " != " << sample_increment << endl;
|
||||
cout << "timecode1: " << (timecode1.negative ? "-" : "") << timecode1.hours << ":" << timecode1.minutes << ":" << timecode1.seconds << ":" << timecode1.frames << "::" << timecode1.subframes << " -> ";
|
||||
cout << "sample: " << sample1 << endl;
|
||||
cout << "sample: " << sample1 << " -> ";
|
||||
cout << "timecode2: " << (timecode2.negative ? "-" : "") << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
|
||||
//break;
|
||||
}
|
||||
|
||||
if (timecode2.hours != timecode1.hours || timecode2.minutes != timecode1.minutes || timecode2.seconds != timecode2.seconds || timecode2.frames != timecode1.frames || timecode2.subframes != timecode1.subframes) {
|
||||
cout << "ERROR: timecode2 not equal timecode1" << endl;
|
||||
cout << "timecode1: " << (timecode1.negative ? "-" : "") << timecode1.hours << ":" << timecode1.minutes << ":" << timecode1.seconds << ":" << timecode1.frames << "::" << timecode1.subframes << " -> ";
|
||||
cout << "sample: " << sample1 << endl;
|
||||
cout << "sample: " << sample1 << " -> ";
|
||||
cout << "timecode2: " << (timecode2.negative ? "-" : "") << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
|
||||
break;
|
||||
}
|
||||
oldsample = sample1;
|
||||
_session->timecode_increment( timecode1 );
|
||||
}
|
||||
|
||||
cout << "sample_increment: " << sample_increment << endl;
|
||||
cout << "sample: " << sample1 << " -> ";
|
||||
cout << "timecode: " << (timecode2.negative ? "-" : "") << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
|
||||
|
||||
for (int i = 0; i < 108003; i++) {
|
||||
_session->timecode_to_sample( timecode1, sample1, true /* use_offset */, true /* use_subframes */ );
|
||||
_session->sample_to_timecode( sample1, timecode2, true /* use_offset */, true /* use_subframes */ );
|
||||
|
||||
if ((i > 0) && ( ((oldsample - sample1) != sample_increment) && ((oldsample - sample1) != (sample_increment + 1)) && ((oldsample - sample1) != (sample_increment - 1)))) {
|
||||
cout << "ERROR: sample increment not right: " << (oldsample - sample1) << " != " << sample_increment << endl;
|
||||
cout << "timecode1: " << (timecode1.negative ? "-" : "") << timecode1.hours << ":" << timecode1.minutes << ":" << timecode1.seconds << ":" << timecode1.frames << "::" << timecode1.subframes << " -> ";
|
||||
cout << "sample: " << sample1 << endl;
|
||||
cout << "sample: " << sample1 << " -> ";
|
||||
cout << "timecode2: " << (timecode2.negative ? "-" : "") << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
|
||||
//break;
|
||||
}
|
||||
|
||||
if (timecode2.hours != timecode1.hours || timecode2.minutes != timecode1.minutes || timecode2.seconds != timecode2.seconds || timecode2.frames != timecode1.frames || timecode2.subframes != timecode1.subframes) {
|
||||
cout << "ERROR: timecode2 not equal timecode1" << endl;
|
||||
cout << "timecode1: " << (timecode1.negative ? "-" : "") << timecode1.hours << ":" << timecode1.minutes << ":" << timecode1.seconds << ":" << timecode1.frames << "::" << timecode1.subframes << " -> ";
|
||||
cout << "sample: " << sample1 << endl;
|
||||
cout << "sample: " << sample1 << " -> ";
|
||||
cout << "timecode2: " << (timecode2.negative ? "-" : "") << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
|
||||
break;
|
||||
}
|
||||
oldsample = sample1;
|
||||
_session->timecode_decrement( timecode1 );
|
||||
}
|
||||
|
||||
cout << "sample_decrement: " << sample_increment << endl;
|
||||
cout << "sample: " << sample1 << " -> ";
|
||||
cout << "timecode: " << (timecode2.negative ? "-" : "") << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef Timecode_SAMPLE_TEST_5
|
||||
// Test 5: use_offset = true, use_subframes = false, increment seconds
|
||||
cout << "use_offset = true, use_subframes = false, increment seconds" << endl;
|
||||
|
||||
timecode1.hours = 0;
|
||||
timecode1.minutes = 0;
|
||||
timecode1.seconds = 0;
|
||||
timecode1.frames = 0;
|
||||
timecode1.subframes = 0;
|
||||
sample1 = oldsample = 0;
|
||||
sample_increment = _session->frame_rate();
|
||||
|
||||
_session->sample_to_timecode( sample1, timecode1, true /* use_offset */, false /* use_subframes */ );
|
||||
cout << "Starting at sample: " << sample1 << " -> ";
|
||||
cout << "timecode: " << (timecode1.negative ? "-" : "") << timecode1.hours << ":" << timecode1.minutes << ":" << timecode1.seconds << ":" << timecode1.frames << "::" << timecode1.subframes << endl;
|
||||
|
||||
for (int i = 0; i < 3600; i++) {
|
||||
_session->timecode_to_sample( timecode1, sample1, true /* use_offset */, false /* use_subframes */ );
|
||||
_session->sample_to_timecode( sample1, timecode2, true /* use_offset */, false /* use_subframes */ );
|
||||
|
||||
// cout << "timecode: " << (timecode1.negative ? "-" : "") << timecode1.hours << ":" << timecode1.minutes << ":" << timecode1.seconds << ":" << timecode1.frames << "::" << timecode1.subframes << " -> ";
|
||||
// cout << "sample: " << sample1 << endl;
|
||||
// cout << "sample: " << sample1 << " -> ";
|
||||
// cout << "timecode: " << (timecode2.negative ? "-" : "") << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
|
||||
|
||||
// if ((i > 0) && ( ((sample1 - oldsample) != sample_increment) && ((sample1 - oldsample) != (sample_increment + 1)) && ((sample1 - oldsample) != (sample_increment - 1))))
|
||||
// {
|
||||
// cout << "ERROR: sample increment not right: " << (sample1 - oldsample) << " != " << sample_increment << endl;
|
||||
// break;
|
||||
// }
|
||||
|
||||
if (timecode2.hours != timecode1.hours || timecode2.minutes != timecode1.minutes || timecode2.seconds != timecode2.seconds || timecode2.frames != timecode1.frames) {
|
||||
cout << "ERROR: timecode2 not equal timecode1" << endl;
|
||||
cout << "timecode: " << (timecode1.negative ? "-" : "") << timecode1.hours << ":" << timecode1.minutes << ":" << timecode1.seconds << ":" << timecode1.frames << "::" << timecode1.subframes << " -> ";
|
||||
cout << "sample: " << sample1 << endl;
|
||||
cout << "sample: " << sample1 << " -> ";
|
||||
cout << "timecode: " << (timecode2.negative ? "-" : "") << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
|
||||
break;
|
||||
}
|
||||
oldsample = sample1;
|
||||
_session->timecode_increment_seconds( timecode1 );
|
||||
}
|
||||
|
||||
cout << "sample_increment: " << sample_increment << endl;
|
||||
cout << "sample: " << sample1 << " -> ";
|
||||
cout << "timecode: " << (timecode2.negative ? "-" : "") << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef Timecode_SAMPLE_TEST_6
|
||||
// Test 6: use_offset = true, use_subframes = false, increment minutes
|
||||
cout << "use_offset = true, use_subframes = false, increment minutes" << endl;
|
||||
|
||||
timecode1.hours = 0;
|
||||
timecode1.minutes = 0;
|
||||
timecode1.seconds = 0;
|
||||
timecode1.frames = 0;
|
||||
timecode1.subframes = 0;
|
||||
sample1 = oldsample = 0;
|
||||
sample_increment = _session->frame_rate() * 60;
|
||||
|
||||
_session->sample_to_timecode( sample1, timecode1, true /* use_offset */, false /* use_subframes */ );
|
||||
cout << "Starting at sample: " << sample1 << " -> ";
|
||||
cout << "timecode: " << (timecode1.negative ? "-" : "") << timecode1.hours << ":" << timecode1.minutes << ":" << timecode1.seconds << ":" << timecode1.frames << "::" << timecode1.subframes << endl;
|
||||
|
||||
for (int i = 0; i < 60; i++) {
|
||||
_session->timecode_to_sample( timecode1, sample1, true /* use_offset */, false /* use_subframes */ );
|
||||
_session->sample_to_timecode( sample1, timecode2, true /* use_offset */, false /* use_subframes */ );
|
||||
|
||||
// cout << "timecode: " << (timecode1.negative ? "-" : "") << timecode1.hours << ":" << timecode1.minutes << ":" << timecode1.seconds << ":" << timecode1.frames << "::" << timecode1.subframes << " -> ";
|
||||
// cout << "sample: " << sample1 << endl;
|
||||
// cout << "sample: " << sample1 << " -> ";
|
||||
// cout << "timecode: " << (timecode2.negative ? "-" : "") << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
|
||||
|
||||
// if ((i > 0) && ( ((sample1 - oldsample) != sample_increment) && ((sample1 - oldsample) != (sample_increment + 1)) && ((sample1 - oldsample) != (sample_increment - 1))))
|
||||
// {
|
||||
// cout << "ERROR: sample increment not right: " << (sample1 - oldsample) << " != " << sample_increment << endl;
|
||||
// break;
|
||||
// }
|
||||
|
||||
if (timecode2.hours != timecode1.hours || timecode2.minutes != timecode1.minutes || timecode2.seconds != timecode2.seconds || timecode2.frames != timecode1.frames) {
|
||||
cout << "ERROR: timecode2 not equal timecode1" << endl;
|
||||
cout << "timecode: " << (timecode1.negative ? "-" : "") << timecode1.hours << ":" << timecode1.minutes << ":" << timecode1.seconds << ":" << timecode1.frames << "::" << timecode1.subframes << " -> ";
|
||||
cout << "sample: " << sample1 << endl;
|
||||
cout << "sample: " << sample1 << " -> ";
|
||||
cout << "timecode: " << (timecode2.negative ? "-" : "") << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
|
||||
break;
|
||||
}
|
||||
oldsample = sample1;
|
||||
_session->timecode_increment_minutes( timecode1 );
|
||||
}
|
||||
|
||||
cout << "sample_increment: " << sample_increment << endl;
|
||||
cout << "sample: " << sample1 << " -> ";
|
||||
cout << "timecode: " << (timecode2.negative ? "-" : "") << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
|
||||
#endif
|
||||
|
||||
#ifdef Timecode_SAMPLE_TEST_7
|
||||
// Test 7: use_offset = true, use_subframes = false, increment hours
|
||||
cout << "use_offset = true, use_subframes = false, increment hours" << endl;
|
||||
|
||||
timecode1.hours = 0;
|
||||
timecode1.minutes = 0;
|
||||
timecode1.seconds = 0;
|
||||
timecode1.frames = 0;
|
||||
timecode1.subframes = 0;
|
||||
sample1 = oldsample = 0;
|
||||
sample_increment = _session->frame_rate() * 60 * 60;
|
||||
|
||||
_session->sample_to_timecode( sample1, timecode1, true /* use_offset */, false /* use_subframes */ );
|
||||
cout << "Starting at sample: " << sample1 << " -> ";
|
||||
cout << "timecode: " << (timecode1.negative ? "-" : "") << timecode1.hours << ":" << timecode1.minutes << ":" << timecode1.seconds << ":" << timecode1.frames << "::" << timecode1.subframes << endl;
|
||||
|
||||
for (int i = 0; i < 10; i++) {
|
||||
_session->timecode_to_sample( timecode1, sample1, true /* use_offset */, false /* use_subframes */ );
|
||||
_session->sample_to_timecode( sample1, timecode2, true /* use_offset */, false /* use_subframes */ );
|
||||
|
||||
// cout << "timecode: " << (timecode1.negative ? "-" : "") << timecode1.hours << ":" << timecode1.minutes << ":" << timecode1.seconds << ":" << timecode1.frames << "::" << timecode1.subframes << " -> ";
|
||||
// cout << "sample: " << sample1 << endl;
|
||||
// cout << "sample: " << sample1 << " -> ";
|
||||
// cout << "timecode: " << (timecode2.negative ? "-" : "") << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
|
||||
|
||||
// if ((i > 0) && ( ((sample1 - oldsample) != sample_increment) && ((sample1 - oldsample) != (sample_increment + 1)) && ((sample1 - oldsample) != (sample_increment - 1))))
|
||||
// {
|
||||
// cout << "ERROR: sample increment not right: " << (sample1 - oldsample) << " != " << sample_increment << endl;
|
||||
// break;
|
||||
// }
|
||||
|
||||
if (timecode2.hours != timecode1.hours || timecode2.minutes != timecode1.minutes || timecode2.seconds != timecode2.seconds || timecode2.frames != timecode1.frames) {
|
||||
cout << "ERROR: timecode2 not equal timecode1" << endl;
|
||||
cout << "timecode: " << (timecode1.negative ? "-" : "") << timecode1.hours << ":" << timecode1.minutes << ":" << timecode1.seconds << ":" << timecode1.frames << "::" << timecode1.subframes << " -> ";
|
||||
cout << "sample: " << sample1 << endl;
|
||||
cout << "sample: " << sample1 << " -> ";
|
||||
cout << "timecode: " << (timecode2.negative ? "-" : "") << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
|
||||
break;
|
||||
}
|
||||
oldsample = sample1;
|
||||
_session->timecode_increment_hours( timecode1 );
|
||||
}
|
||||
|
||||
cout << "sample_increment: " << sample_increment << endl;
|
||||
cout << "sample: " << sample1 << " -> ";
|
||||
cout << "timecode: " << (timecode2.negative ? "-" : "") << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
|
||||
#endif
|
||||
|
||||
#endif
|
||||
}
|
||||
|
@ -169,6 +169,7 @@ class AudioClock : public CairoWidget, public ARDOUR::SessionHandlePtr
|
||||
void on_size_request (Gtk::Requisition* req);
|
||||
bool on_motion_notify_event (GdkEventMotion *ev);
|
||||
void on_size_allocate (Gtk::Allocation&);
|
||||
bool on_focus_out_event (GdkEventFocus*);
|
||||
|
||||
void set_timecode (framepos_t, bool);
|
||||
void set_bbt (framepos_t, bool);
|
||||
@ -194,8 +195,15 @@ class AudioClock : public CairoWidget, public ARDOUR::SessionHandlePtr
|
||||
|
||||
void start_edit ();
|
||||
void end_edit (bool);
|
||||
void end_edit_relative (bool);
|
||||
void edit_next_field ();
|
||||
ARDOUR::framecnt_t parse_as_distance (const std::string&);
|
||||
|
||||
ARDOUR::framecnt_t parse_as_timecode_distance (const std::string&);
|
||||
ARDOUR::framecnt_t parse_as_minsec_distance (const std::string&);
|
||||
ARDOUR::framecnt_t parse_as_bbt_distance (const std::string&);
|
||||
ARDOUR::framecnt_t parse_as_frames_distance (const std::string&);
|
||||
|
||||
void set_font ();
|
||||
void set_colors ();
|
||||
void show_edit_status (int length);
|
||||
|
Loading…
Reference in New Issue
Block a user