+ bool negative;
+
+ if (when < 0) {
+ when = -when;
+ negative = true;
+ } else {
+ negative = false;
+ }
+
+ left = when;
+ hrs = (int) floor (left / (frame_rate * 60.0f * 60.0f));
+ left -= (framecnt_t) floor (hrs * frame_rate * 60.0f * 60.0f);
+ mins = (int) floor (left / (frame_rate * 60.0f));
+ left -= (framecnt_t) floor (mins * frame_rate * 60.0f);
+ secs = (int) floor (left / (float) frame_rate);
+ left -= (framecnt_t) floor ((double)(secs * frame_rate));
+ millisecs = floor (left * 1000.0 / (float) frame_rate);
+
+ if (negative) {
+ snprintf (buf, bufsize, "-%02" PRId32 ":%02" PRId32 ":%02" PRId32 ".%03" PRId32, hrs, mins, secs, millisecs);
+ } else {
+ snprintf (buf, bufsize, " %02" PRId32 ":%02" PRId32 ":%02" PRId32 ".%03" PRId32, hrs, mins, secs, millisecs);
+ }
+
+}
+
+void
+AudioClock::set_minsec (framepos_t when, bool /*force*/)
+{
+ char buf[32];