mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-10 16:46:35 +01:00
Rename libmusictime libtimecode (consistent with already used namespace "Timecode").
Move BBT_Time to libtimecode. git-svn-id: svn://localhost/ardour2/branches/3.0@8271 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
341c409fa1
commit
4b861e6039
41 changed files with 173 additions and 167 deletions
|
|
@ -16,7 +16,7 @@ fi
|
||||||
|
|
||||||
export VAMP_PATH=$libs/vamp-plugins${VAMP_PATH:+:$VAMP_PATH}
|
export VAMP_PATH=$libs/vamp-plugins${VAMP_PATH:+:$VAMP_PATH}
|
||||||
|
|
||||||
export LD_LIBRARY_PATH=$libs/vamp-sdk:$libs/surfaces:$libs/surfaces/control_protocol:$libs/ardour:$libs/midi++2:$libs/pbd:$libs/rubberband:$libs/soundtouch:$libs/gtkmm2ext:$libs/gnomecanvas:$libs/libsndfile:$libs/appleutility:$libs/taglib:$libs/evoral:$libs/evoral/src/libsmf:$libs/audiographer:$libs/musictime:${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
|
export LD_LIBRARY_PATH=$libs/vamp-sdk:$libs/surfaces:$libs/surfaces/control_protocol:$libs/ardour:$libs/midi++2:$libs/pbd:$libs/rubberband:$libs/soundtouch:$libs/gtkmm2ext:$libs/gnomecanvas:$libs/libsndfile:$libs/appleutility:$libs/taglib:$libs/evoral:$libs/evoral/src/libsmf:$libs/audiographer:$libs/timecode:${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
|
||||||
|
|
||||||
# DYLD_LIBRARY_PATH is for darwin.
|
# DYLD_LIBRARY_PATH is for darwin.
|
||||||
export DYLD_FALLBACK_LIBRARY_PATH=$LD_LIBRARY_PATH
|
export DYLD_FALLBACK_LIBRARY_PATH=$LD_LIBRARY_PATH
|
||||||
|
|
|
||||||
|
|
@ -640,7 +640,7 @@ void
|
||||||
AudioClock::set_bbt (framepos_t when, bool force)
|
AudioClock::set_bbt (framepos_t when, bool force)
|
||||||
{
|
{
|
||||||
char buf[16];
|
char buf[16];
|
||||||
BBT_Time bbt;
|
Timecode::BBT_Time bbt;
|
||||||
|
|
||||||
/* handle a common case */
|
/* handle a common case */
|
||||||
if (is_duration) {
|
if (is_duration) {
|
||||||
|
|
@ -1342,7 +1342,7 @@ framepos_t
|
||||||
AudioClock::get_frames (Field field, framepos_t pos, int dir)
|
AudioClock::get_frames (Field field, framepos_t pos, int dir)
|
||||||
{
|
{
|
||||||
framecnt_t frames = 0;
|
framecnt_t frames = 0;
|
||||||
BBT_Time bbt;
|
Timecode::BBT_Time bbt;
|
||||||
switch (field) {
|
switch (field) {
|
||||||
case Timecode_Hours:
|
case Timecode_Hours:
|
||||||
frames = (framecnt_t) floor (3600.0 * _session->frame_rate());
|
frames = (framecnt_t) floor (3600.0 * _session->frame_rate());
|
||||||
|
|
@ -1930,7 +1930,7 @@ AudioClock::bbt_frame_duration_from_display (framepos_t pos) const
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
BBT_Time bbt;
|
Timecode::BBT_Time bbt;
|
||||||
|
|
||||||
|
|
||||||
bbt.bars = atoi (bars_label.get_text());
|
bbt.bars = atoi (bars_label.get_text());
|
||||||
|
|
|
||||||
|
|
@ -1101,7 +1101,7 @@ Editor::set_session (Session *t)
|
||||||
_session->history().Changed.connect (_session_connections, invalidator (*this), boost::bind (&Editor::history_changed, this), gui_context());
|
_session->history().Changed.connect (_session_connections, invalidator (*this), boost::bind (&Editor::history_changed, this), gui_context());
|
||||||
|
|
||||||
if (Profile->get_sae()) {
|
if (Profile->get_sae()) {
|
||||||
BBT_Time bbt;
|
Timecode::BBT_Time bbt;
|
||||||
bbt.bars = 0;
|
bbt.bars = 0;
|
||||||
bbt.beats = 0;
|
bbt.beats = 0;
|
||||||
bbt.ticks = 120;
|
bbt.ticks = 120;
|
||||||
|
|
|
||||||
|
|
@ -1824,7 +1824,7 @@ MeterMarkerDrag::finished (GdkEvent* event, bool movement_occurred)
|
||||||
|
|
||||||
motion (event, false);
|
motion (event, false);
|
||||||
|
|
||||||
BBT_Time when;
|
Timecode::BBT_Time when;
|
||||||
|
|
||||||
TempoMap& map (_editor->session()->tempo_map());
|
TempoMap& map (_editor->session()->tempo_map());
|
||||||
map.bbt_time (last_pointer_frame(), when);
|
map.bbt_time (last_pointer_frame(), when);
|
||||||
|
|
@ -1913,7 +1913,7 @@ TempoMarkerDrag::finished (GdkEvent* event, bool movement_occurred)
|
||||||
|
|
||||||
motion (event, false);
|
motion (event, false);
|
||||||
|
|
||||||
BBT_Time when;
|
Timecode::BBT_Time when;
|
||||||
|
|
||||||
TempoMap& map (_editor->session()->tempo_map());
|
TempoMap& map (_editor->session()->tempo_map());
|
||||||
map.bbt_time (last_pointer_frame(), when);
|
map.bbt_time (last_pointer_frame(), when);
|
||||||
|
|
|
||||||
|
|
@ -2150,7 +2150,7 @@ Editor::show_verbose_time_cursor (framepos_t frame, double offset, double xpos,
|
||||||
{
|
{
|
||||||
char buf[128];
|
char buf[128];
|
||||||
Timecode::Time timecode;
|
Timecode::Time timecode;
|
||||||
BBT_Time bbt;
|
Timecode::BBT_Time bbt;
|
||||||
int hours, mins;
|
int hours, mins;
|
||||||
framepos_t frame_rate;
|
framepos_t frame_rate;
|
||||||
float secs;
|
float secs;
|
||||||
|
|
@ -2207,8 +2207,8 @@ Editor::show_verbose_duration_cursor (framepos_t start, framepos_t end, double o
|
||||||
{
|
{
|
||||||
char buf[128];
|
char buf[128];
|
||||||
Timecode::Time timecode;
|
Timecode::Time timecode;
|
||||||
BBT_Time sbbt;
|
Timecode::BBT_Time sbbt;
|
||||||
BBT_Time ebbt;
|
Timecode::BBT_Time ebbt;
|
||||||
int hours, mins;
|
int hours, mins;
|
||||||
framepos_t distance, frame_rate;
|
framepos_t distance, frame_rate;
|
||||||
float secs;
|
float secs;
|
||||||
|
|
|
||||||
|
|
@ -783,7 +783,7 @@ EditorRegions::update_all_subrows (TreeModel::Row const &parent_row, int level)
|
||||||
void
|
void
|
||||||
EditorRegions::format_position (framepos_t pos, char* buf, size_t bufsize)
|
EditorRegions::format_position (framepos_t pos, char* buf, size_t bufsize)
|
||||||
{
|
{
|
||||||
BBT_Time bbt;
|
Timecode::BBT_Time bbt;
|
||||||
Timecode::Time timecode;
|
Timecode::Time timecode;
|
||||||
|
|
||||||
switch (ARDOUR_UI::instance()->secondary_clock.mode ()) {
|
switch (ARDOUR_UI::instance()->secondary_clock.mode ()) {
|
||||||
|
|
|
||||||
|
|
@ -1144,20 +1144,20 @@ Editor::metric_get_timecode (GtkCustomRulerMark **marks, gdouble lower, gdouble
|
||||||
void
|
void
|
||||||
Editor::compute_bbt_ruler_scale (framepos_t lower, framepos_t upper)
|
Editor::compute_bbt_ruler_scale (framepos_t lower, framepos_t upper)
|
||||||
{
|
{
|
||||||
if (_session == 0) {
|
if (_session == 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
TempoMap::BBTPointList::iterator i;
|
TempoMap::BBTPointList::iterator i;
|
||||||
BBT_Time lower_beat, upper_beat; // the beats at each end of the ruler
|
Timecode::BBT_Time lower_beat, upper_beat; // the beats at each end of the ruler
|
||||||
|
|
||||||
_session->bbt_time (lower, lower_beat);
|
_session->bbt_time (lower, lower_beat);
|
||||||
_session->bbt_time (upper, upper_beat);
|
_session->bbt_time (upper, upper_beat);
|
||||||
uint32_t beats = 0;
|
uint32_t beats = 0;
|
||||||
|
|
||||||
bbt_accent_modulo = 1;
|
bbt_accent_modulo = 1;
|
||||||
bbt_bar_helper_on = false;
|
bbt_bar_helper_on = false;
|
||||||
bbt_bars = 0;
|
bbt_bars = 0;
|
||||||
bbt_nmarks = 1;
|
bbt_nmarks = 1;
|
||||||
|
|
||||||
bbt_ruler_scale = bbt_over;
|
bbt_ruler_scale = bbt_over;
|
||||||
|
|
||||||
|
|
@ -1268,18 +1268,18 @@ Editor::compute_bbt_ruler_scale (framepos_t lower, framepos_t upper)
|
||||||
gint
|
gint
|
||||||
Editor::metric_get_bbt (GtkCustomRulerMark **marks, gdouble lower, gdouble /*upper*/, gint /*maxchars*/)
|
Editor::metric_get_bbt (GtkCustomRulerMark **marks, gdouble lower, gdouble /*upper*/, gint /*maxchars*/)
|
||||||
{
|
{
|
||||||
if (_session == 0) {
|
if (_session == 0) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
TempoMap::BBTPointList::iterator i;
|
TempoMap::BBTPointList::iterator i;
|
||||||
|
|
||||||
char buf[64];
|
char buf[64];
|
||||||
gint n = 0;
|
gint n = 0;
|
||||||
framepos_t pos;
|
framepos_t pos;
|
||||||
BBT_Time next_beat;
|
Timecode::BBT_Time next_beat;
|
||||||
framepos_t next_beat_pos;
|
framepos_t next_beat_pos;
|
||||||
uint32_t beats = 0;
|
uint32_t beats = 0;
|
||||||
|
|
||||||
uint32_t tick = 0;
|
uint32_t tick = 0;
|
||||||
uint32_t skip;
|
uint32_t skip;
|
||||||
|
|
|
||||||
|
|
@ -144,7 +144,7 @@ Editor::compute_current_bbt_points (framepos_t leftmost, framepos_t rightmost)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
BBT_Time previous_beat, next_beat; // the beats previous to the leftmost frame and after the rightmost frame
|
Timecode::BBT_Time previous_beat, next_beat; // the beats previous to the leftmost frame and after the rightmost frame
|
||||||
|
|
||||||
_session->bbt_time(leftmost, previous_beat);
|
_session->bbt_time(leftmost, previous_beat);
|
||||||
_session->bbt_time(rightmost, next_beat);
|
_session->bbt_time(rightmost, next_beat);
|
||||||
|
|
@ -224,7 +224,7 @@ Editor::mouse_add_new_tempo_event (framepos_t frame)
|
||||||
}
|
}
|
||||||
|
|
||||||
double bpm = 0;
|
double bpm = 0;
|
||||||
BBT_Time requested;
|
Timecode::BBT_Time requested;
|
||||||
|
|
||||||
bpm = tempo_dialog.get_bpm ();
|
bpm = tempo_dialog.get_bpm ();
|
||||||
double nt = tempo_dialog.get_note_type();
|
double nt = tempo_dialog.get_note_type();
|
||||||
|
|
@ -271,7 +271,7 @@ Editor::mouse_add_new_meter_event (framepos_t frame)
|
||||||
bpb = max (1.0, bpb); // XXX is this a reasonable limit?
|
bpb = max (1.0, bpb); // XXX is this a reasonable limit?
|
||||||
|
|
||||||
double note_type = meter_dialog.get_note_type ();
|
double note_type = meter_dialog.get_note_type ();
|
||||||
BBT_Time requested;
|
Timecode::BBT_Time requested;
|
||||||
|
|
||||||
meter_dialog.get_bbt_time (requested);
|
meter_dialog.get_bbt_time (requested);
|
||||||
|
|
||||||
|
|
@ -352,7 +352,7 @@ Editor::edit_tempo_section (TempoSection* section)
|
||||||
|
|
||||||
double bpm = tempo_dialog.get_bpm ();
|
double bpm = tempo_dialog.get_bpm ();
|
||||||
double nt = tempo_dialog.get_note_type ();
|
double nt = tempo_dialog.get_note_type ();
|
||||||
BBT_Time when;
|
Timecode::BBT_Time when;
|
||||||
tempo_dialog.get_bbt_time(when);
|
tempo_dialog.get_bbt_time(when);
|
||||||
bpm = max (0.01, bpm);
|
bpm = max (0.01, bpm);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -246,7 +246,7 @@ ExportTimespanSelector::bbt_str (framepos_t frames) const
|
||||||
}
|
}
|
||||||
|
|
||||||
std::ostringstream oss;
|
std::ostringstream oss;
|
||||||
BBT_Time time;
|
Timecode::BBT_Time time;
|
||||||
_session->bbt_time (frames, time);
|
_session->bbt_time (frames, time);
|
||||||
|
|
||||||
print_padded (oss, time);
|
print_padded (oss, time);
|
||||||
|
|
|
||||||
|
|
@ -200,7 +200,7 @@ MidiListEditor::redisplay_model ()
|
||||||
row[columns.note] = (*i)->note();
|
row[columns.note] = (*i)->note();
|
||||||
row[columns.velocity] = (*i)->velocity();
|
row[columns.velocity] = (*i)->velocity();
|
||||||
|
|
||||||
BBT_Time bbt;
|
Timecode::BBT_Time bbt;
|
||||||
double dur;
|
double dur;
|
||||||
|
|
||||||
_session->tempo_map().bbt_time (conv.to ((*i)->time()), bbt);
|
_session->tempo_map().bbt_time (conv.to ((*i)->time()), bbt);
|
||||||
|
|
|
||||||
|
|
@ -42,7 +42,7 @@ TempoDialog::TempoDialog (TempoMap& map, framepos_t frame, const string & action
|
||||||
when_bar_label (_("bar:"), ALIGN_LEFT, ALIGN_CENTER),
|
when_bar_label (_("bar:"), ALIGN_LEFT, ALIGN_CENTER),
|
||||||
when_beat_label (_("beat:"), ALIGN_LEFT, ALIGN_CENTER)
|
when_beat_label (_("beat:"), ALIGN_LEFT, ALIGN_CENTER)
|
||||||
{
|
{
|
||||||
BBT_Time when;
|
Timecode::BBT_Time when;
|
||||||
Tempo tempo (map.tempo_at (frame));
|
Tempo tempo (map.tempo_at (frame));
|
||||||
map.bbt_time (frame, when);
|
map.bbt_time (frame, when);
|
||||||
|
|
||||||
|
|
@ -62,7 +62,7 @@ TempoDialog::TempoDialog (TempoSection& section, const string & action)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
TempoDialog::init (const BBT_Time& when, double bpm, double note_type, bool movable)
|
TempoDialog::init (const Timecode::BBT_Time& when, double bpm, double note_type, bool movable)
|
||||||
{
|
{
|
||||||
bpm_spinner.set_numeric (true);
|
bpm_spinner.set_numeric (true);
|
||||||
bpm_spinner.set_digits (2);
|
bpm_spinner.set_digits (2);
|
||||||
|
|
@ -189,7 +189,7 @@ TempoDialog::get_bpm ()
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
TempoDialog::get_bbt_time (BBT_Time& requested)
|
TempoDialog::get_bbt_time (Timecode::BBT_Time& requested)
|
||||||
{
|
{
|
||||||
if (sscanf (when_bar_entry.get_text().c_str(), "%" PRIu32, &requested.bars) != 1) {
|
if (sscanf (when_bar_entry.get_text().c_str(), "%" PRIu32, &requested.bars) != 1) {
|
||||||
return false;
|
return false;
|
||||||
|
|
@ -244,7 +244,7 @@ MeterDialog::MeterDialog (TempoMap& map, framepos_t frame, const string & action
|
||||||
ok_button (action),
|
ok_button (action),
|
||||||
cancel_button (_("Cancel"))
|
cancel_button (_("Cancel"))
|
||||||
{
|
{
|
||||||
BBT_Time when;
|
Timecode::BBT_Time when;
|
||||||
frame = map.round_to_bar(frame,0);
|
frame = map.round_to_bar(frame,0);
|
||||||
Meter meter (map.meter_at(frame));
|
Meter meter (map.meter_at(frame));
|
||||||
|
|
||||||
|
|
@ -261,7 +261,7 @@ MeterDialog::MeterDialog (MeterSection& section, const string & action)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
MeterDialog::init (const BBT_Time& when, double bpb, double note_type, bool movable)
|
MeterDialog::init (const Timecode::BBT_Time& when, double bpb, double note_type, bool movable)
|
||||||
{
|
{
|
||||||
snprintf (buf, sizeof (buf), "%.2f", bpb);
|
snprintf (buf, sizeof (buf), "%.2f", bpb);
|
||||||
bpb_entry.set_text (buf);
|
bpb_entry.set_text (buf);
|
||||||
|
|
@ -447,9 +447,8 @@ MeterDialog::get_note_type ()
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
MeterDialog::get_bbt_time (BBT_Time& requested)
|
MeterDialog::get_bbt_time (Timecode::BBT_Time& requested)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (sscanf (when_bar_entry.get_text().c_str(), "%" PRIu32, &requested.bars) != 1) {
|
if (sscanf (when_bar_entry.get_text().c_str(), "%" PRIu32, &requested.bars) != 1) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -43,10 +43,10 @@ public:
|
||||||
|
|
||||||
double get_bpm ();
|
double get_bpm ();
|
||||||
double get_note_type ();
|
double get_note_type ();
|
||||||
bool get_bbt_time (ARDOUR::BBT_Time&);
|
bool get_bbt_time (Timecode::BBT_Time&);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void init (const ARDOUR::BBT_Time& start, double, double, bool);
|
void init (const Timecode::BBT_Time& start, double, double, bool);
|
||||||
void bpm_changed ();
|
void bpm_changed ();
|
||||||
bool bpm_button_press (GdkEventButton* );
|
bool bpm_button_press (GdkEventButton* );
|
||||||
bool bpm_button_release (GdkEventButton* );
|
bool bpm_button_release (GdkEventButton* );
|
||||||
|
|
@ -75,10 +75,10 @@ public:
|
||||||
|
|
||||||
double get_bpb ();
|
double get_bpb ();
|
||||||
double get_note_type ();
|
double get_note_type ();
|
||||||
bool get_bbt_time (ARDOUR::BBT_Time&);
|
bool get_bbt_time (Timecode::BBT_Time&);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void init (const ARDOUR::BBT_Time&, double, double, bool);
|
void init (const Timecode::BBT_Time&, double, double, bool);
|
||||||
bool entry_key_press (GdkEventKey* );
|
bool entry_key_press (GdkEventKey* );
|
||||||
bool entry_key_release (GdkEventKey* );
|
bool entry_key_release (GdkEventKey* );
|
||||||
void note_types_change ();
|
void note_types_change ();
|
||||||
|
|
|
||||||
|
|
@ -115,14 +115,14 @@ class Location : public SessionHandleRef, public PBD::StatefulDestructible
|
||||||
void recompute_frames_from_bbt ();
|
void recompute_frames_from_bbt ();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::string _name;
|
std::string _name;
|
||||||
framepos_t _start;
|
framepos_t _start;
|
||||||
BBT_Time _bbt_start;
|
Timecode::BBT_Time _bbt_start;
|
||||||
framepos_t _end;
|
framepos_t _end;
|
||||||
BBT_Time _bbt_end;
|
Timecode::BBT_Time _bbt_end;
|
||||||
Flags _flags;
|
Flags _flags;
|
||||||
bool _locked;
|
bool _locked;
|
||||||
PositionLockStyle _position_lock_style;
|
PositionLockStyle _position_lock_style;
|
||||||
|
|
||||||
void set_mark (bool yn);
|
void set_mark (bool yn);
|
||||||
bool set_flag_internal (bool yn, Flags flag);
|
bool set_flag_internal (bool yn, Flags flag);
|
||||||
|
|
|
||||||
|
|
@ -369,7 +369,7 @@ class Region
|
||||||
framecnt_t _last_length;
|
framecnt_t _last_length;
|
||||||
framepos_t _last_position;
|
framepos_t _last_position;
|
||||||
mutable RegionEditState _first_edit;
|
mutable RegionEditState _first_edit;
|
||||||
BBT_Time _bbt_time;
|
Timecode::BBT_Time _bbt_time;
|
||||||
AnalysisFeatureList _transients;
|
AnalysisFeatureList _transients;
|
||||||
|
|
||||||
mutable uint64_t _read_data_count; ///< modified in read()
|
mutable uint64_t _read_data_count; ///< modified in read()
|
||||||
|
|
|
||||||
|
|
@ -43,6 +43,8 @@
|
||||||
|
|
||||||
#include "midi++/types.h"
|
#include "midi++/types.h"
|
||||||
|
|
||||||
|
#include "timecode/time.h"
|
||||||
|
|
||||||
#include "ardour/ardour.h"
|
#include "ardour/ardour.h"
|
||||||
#include "ardour/click.h"
|
#include "ardour/click.h"
|
||||||
#include "ardour/chan_count.h"
|
#include "ardour/chan_count.h"
|
||||||
|
|
@ -50,7 +52,6 @@
|
||||||
#include "ardour/session_configuration.h"
|
#include "ardour/session_configuration.h"
|
||||||
#include "ardour/session_event.h"
|
#include "ardour/session_event.h"
|
||||||
#include "ardour/location.h"
|
#include "ardour/location.h"
|
||||||
#include "ardour/timecode.h"
|
|
||||||
#include "ardour/interpolation.h"
|
#include "ardour/interpolation.h"
|
||||||
#include "ardour/speakers.h"
|
#include "ardour/speakers.h"
|
||||||
|
|
||||||
|
|
@ -449,7 +450,7 @@ class Session : public PBD::StatefulDestructible, public PBD::ScopedConnectionLi
|
||||||
|
|
||||||
void sync_time_vars();
|
void sync_time_vars();
|
||||||
|
|
||||||
void bbt_time (framepos_t when, BBT_Time&);
|
void bbt_time (framepos_t when, Timecode::BBT_Time&);
|
||||||
void timecode_to_sample(Timecode::Time& timecode, framepos_t& sample, bool use_offset, bool use_subframes) const;
|
void timecode_to_sample(Timecode::Time& timecode, framepos_t& sample, bool use_offset, bool use_subframes) const;
|
||||||
void sample_to_timecode(framepos_t sample, Timecode::Time& timecode, bool use_offset, bool use_subframes) const;
|
void sample_to_timecode(framepos_t sample, Timecode::Time& timecode, bool use_offset, bool use_subframes) const;
|
||||||
void timecode_time (Timecode::Time &);
|
void timecode_time (Timecode::Time &);
|
||||||
|
|
@ -478,7 +479,7 @@ class Session : public PBD::StatefulDestructible, public PBD::ScopedConnectionLi
|
||||||
TempoMap& tempo_map() { return *_tempo_map; }
|
TempoMap& tempo_map() { return *_tempo_map; }
|
||||||
|
|
||||||
/// signals the current transport position in frames, bbt and timecode time (in that order)
|
/// signals the current transport position in frames, bbt and timecode time (in that order)
|
||||||
PBD::Signal3<void, const framepos_t &, const BBT_Time&, const Timecode::Time&> tick;
|
PBD::Signal3<void, const framepos_t &, const Timecode::BBT_Time&, const Timecode::Time&> tick;
|
||||||
|
|
||||||
/* region info */
|
/* region info */
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -78,15 +78,15 @@ class Meter {
|
||||||
|
|
||||||
class MetricSection {
|
class MetricSection {
|
||||||
public:
|
public:
|
||||||
MetricSection (const BBT_Time& start)
|
MetricSection (const Timecode::BBT_Time& start)
|
||||||
: _start (start), _frame (0), _movable (true) {}
|
: _start (start), _frame (0), _movable (true) {}
|
||||||
MetricSection (framepos_t start)
|
MetricSection (framepos_t start)
|
||||||
: _frame (start), _movable (true) {}
|
: _frame (start), _movable (true) {}
|
||||||
|
|
||||||
virtual ~MetricSection() {}
|
virtual ~MetricSection() {}
|
||||||
|
|
||||||
const BBT_Time& start() const { return _start; }
|
const Timecode::BBT_Time& start() const { return _start; }
|
||||||
framepos_t frame() const { return _frame; }
|
framepos_t frame() const { return _frame; }
|
||||||
|
|
||||||
void set_movable (bool yn) { _movable = yn; }
|
void set_movable (bool yn) { _movable = yn; }
|
||||||
bool movable() const { return _movable; }
|
bool movable() const { return _movable; }
|
||||||
|
|
@ -95,7 +95,7 @@ class MetricSection {
|
||||||
_frame = f;
|
_frame = f;
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void set_start (const BBT_Time& w) {
|
virtual void set_start (const Timecode::BBT_Time& w) {
|
||||||
_start = w;
|
_start = w;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -108,14 +108,14 @@ class MetricSection {
|
||||||
int compare (MetricSection *, bool) const;
|
int compare (MetricSection *, bool) const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
BBT_Time _start;
|
Timecode::BBT_Time _start;
|
||||||
framepos_t _frame;
|
framepos_t _frame;
|
||||||
bool _movable;
|
bool _movable;
|
||||||
};
|
};
|
||||||
|
|
||||||
class MeterSection : public MetricSection, public Meter {
|
class MeterSection : public MetricSection, public Meter {
|
||||||
public:
|
public:
|
||||||
MeterSection (const BBT_Time& start, double bpb, double note_type)
|
MeterSection (const Timecode::BBT_Time& start, double bpb, double note_type)
|
||||||
: MetricSection (start), Meter (bpb, note_type) {}
|
: MetricSection (start), Meter (bpb, note_type) {}
|
||||||
MeterSection (framepos_t start, double bpb, double note_type)
|
MeterSection (framepos_t start, double bpb, double note_type)
|
||||||
: MetricSection (start), Meter (bpb, note_type) {}
|
: MetricSection (start), Meter (bpb, note_type) {}
|
||||||
|
|
@ -128,7 +128,7 @@ class MeterSection : public MetricSection, public Meter {
|
||||||
|
|
||||||
class TempoSection : public MetricSection, public Tempo {
|
class TempoSection : public MetricSection, public Tempo {
|
||||||
public:
|
public:
|
||||||
TempoSection (const BBT_Time& start, double qpm, double note_type)
|
TempoSection (const Timecode::BBT_Time& start, double qpm, double note_type)
|
||||||
: MetricSection (start), Tempo (qpm, note_type) {}
|
: MetricSection (start), Tempo (qpm, note_type) {}
|
||||||
TempoSection (framepos_t start, double qpm, double note_type)
|
TempoSection (framepos_t start, double qpm, double note_type)
|
||||||
: MetricSection (start), Tempo (qpm, note_type) {}
|
: MetricSection (start), Tempo (qpm, note_type) {}
|
||||||
|
|
@ -151,18 +151,18 @@ class TempoMetric {
|
||||||
void set_tempo (const Tempo& t) { _tempo = &t; }
|
void set_tempo (const Tempo& t) { _tempo = &t; }
|
||||||
void set_meter (const Meter& m) { _meter = &m; }
|
void set_meter (const Meter& m) { _meter = &m; }
|
||||||
void set_frame (framepos_t f) { _frame = f; }
|
void set_frame (framepos_t f) { _frame = f; }
|
||||||
void set_start (const BBT_Time& t) { _start = t; }
|
void set_start (const Timecode::BBT_Time& t) { _start = t; }
|
||||||
|
|
||||||
const Meter& meter() const { return *_meter; }
|
const Meter& meter() const { return *_meter; }
|
||||||
const Tempo& tempo() const { return *_tempo; }
|
const Tempo& tempo() const { return *_tempo; }
|
||||||
framepos_t frame() const { return _frame; }
|
framepos_t frame() const { return _frame; }
|
||||||
const BBT_Time& start() const { return _start; }
|
const Timecode::BBT_Time& start() const { return _start; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
const Meter* _meter;
|
const Meter* _meter;
|
||||||
const Tempo* _tempo;
|
const Tempo* _tempo;
|
||||||
framepos_t _frame;
|
framepos_t _frame;
|
||||||
BBT_Time _start;
|
Timecode::BBT_Time _start;
|
||||||
};
|
};
|
||||||
|
|
||||||
class TempoMap : public PBD::StatefulDestructible
|
class TempoMap : public PBD::StatefulDestructible
|
||||||
|
|
@ -200,11 +200,11 @@ class TempoMap : public PBD::StatefulDestructible
|
||||||
|
|
||||||
BBTPointList *get_points (framepos_t start, framepos_t end) const;
|
BBTPointList *get_points (framepos_t start, framepos_t end) const;
|
||||||
|
|
||||||
void bbt_time (framepos_t when, BBT_Time&) const;
|
void bbt_time (framepos_t when, Timecode::BBT_Time&) const;
|
||||||
framecnt_t frame_time (const BBT_Time&) const;
|
framecnt_t frame_time (const Timecode::BBT_Time&) const;
|
||||||
framecnt_t bbt_duration_at (framepos_t, const BBT_Time&, int dir) const;
|
framecnt_t bbt_duration_at (framepos_t, const Timecode::BBT_Time&, int dir) const;
|
||||||
|
|
||||||
void bbt_time_add (framepos_t origin, BBT_Time& start, const BBT_Time& shift);
|
void bbt_time_add (framepos_t origin, Timecode::BBT_Time& start, const Timecode::BBT_Time& shift);
|
||||||
|
|
||||||
static const Tempo& default_tempo() { return _default_tempo; }
|
static const Tempo& default_tempo() { return _default_tempo; }
|
||||||
static const Meter& default_meter() { return _default_meter; }
|
static const Meter& default_meter() { return _default_meter; }
|
||||||
|
|
@ -214,14 +214,14 @@ class TempoMap : public PBD::StatefulDestructible
|
||||||
|
|
||||||
const TempoSection& tempo_section_at (framepos_t);
|
const TempoSection& tempo_section_at (framepos_t);
|
||||||
|
|
||||||
void add_tempo(const Tempo&, BBT_Time where);
|
void add_tempo(const Tempo&, Timecode::BBT_Time where);
|
||||||
void add_meter(const Meter&, BBT_Time where);
|
void add_meter(const Meter&, Timecode::BBT_Time where);
|
||||||
|
|
||||||
void add_tempo(const Tempo&, framepos_t where);
|
void add_tempo(const Tempo&, framepos_t where);
|
||||||
void add_meter(const Meter&, framepos_t where);
|
void add_meter(const Meter&, framepos_t where);
|
||||||
|
|
||||||
void move_tempo (TempoSection&, const BBT_Time& to);
|
void move_tempo (TempoSection&, const Timecode::BBT_Time& to);
|
||||||
void move_meter (MeterSection&, const BBT_Time& to);
|
void move_meter (MeterSection&, const Timecode::BBT_Time& to);
|
||||||
|
|
||||||
void remove_tempo(const TempoSection&);
|
void remove_tempo(const TempoSection&);
|
||||||
void remove_meter(const MeterSection&);
|
void remove_meter(const MeterSection&);
|
||||||
|
|
@ -242,13 +242,13 @@ class TempoMap : public PBD::StatefulDestructible
|
||||||
void dump (std::ostream&) const;
|
void dump (std::ostream&) const;
|
||||||
void clear ();
|
void clear ();
|
||||||
|
|
||||||
TempoMetric metric_at (BBT_Time bbt) const;
|
TempoMetric metric_at (Timecode::BBT_Time bbt) const;
|
||||||
TempoMetric metric_at (framepos_t) const;
|
TempoMetric metric_at (framepos_t) const;
|
||||||
void bbt_time_with_metric (framepos_t, BBT_Time&, const TempoMetric&) const;
|
void bbt_time_with_metric (framepos_t, Timecode::BBT_Time&, const TempoMetric&) const;
|
||||||
|
|
||||||
BBT_Time bbt_add (const BBT_Time&, const BBT_Time&, const TempoMetric&) const;
|
Timecode::BBT_Time bbt_add (const Timecode::BBT_Time&, const Timecode::BBT_Time&, const TempoMetric&) const;
|
||||||
BBT_Time bbt_add (const BBT_Time& a, const BBT_Time& b) const;
|
Timecode::BBT_Time bbt_add (const Timecode::BBT_Time& a, const Timecode::BBT_Time& b) const;
|
||||||
BBT_Time bbt_subtract (const BBT_Time&, const BBT_Time&) const;
|
Timecode::BBT_Time bbt_subtract (const Timecode::BBT_Time&, const Timecode::BBT_Time&) const;
|
||||||
|
|
||||||
void change_existing_tempo_at (framepos_t, double bpm, double note_type);
|
void change_existing_tempo_at (framepos_t, double bpm, double note_type);
|
||||||
void change_initial_tempo (double bpm, double note_type);
|
void change_initial_tempo (double bpm, double note_type);
|
||||||
|
|
@ -265,30 +265,30 @@ class TempoMap : public PBD::StatefulDestructible
|
||||||
static Meter _default_meter;
|
static Meter _default_meter;
|
||||||
|
|
||||||
Metrics* metrics;
|
Metrics* metrics;
|
||||||
framecnt_t _frame_rate;
|
framecnt_t _frame_rate;
|
||||||
framepos_t last_bbt_when;
|
framepos_t last_bbt_when;
|
||||||
bool last_bbt_valid;
|
bool last_bbt_valid;
|
||||||
BBT_Time last_bbt;
|
Timecode::BBT_Time last_bbt;
|
||||||
mutable Glib::RWLock lock;
|
mutable Glib::RWLock lock;
|
||||||
|
|
||||||
void timestamp_metrics (bool use_bbt);
|
void timestamp_metrics (bool use_bbt);
|
||||||
|
|
||||||
framepos_t round_to_type (framepos_t fr, int dir, BBTPointType);
|
framepos_t round_to_type (framepos_t fr, int dir, BBTPointType);
|
||||||
|
|
||||||
framepos_t frame_time_unlocked (const BBT_Time&) const;
|
framepos_t frame_time_unlocked (const Timecode::BBT_Time&) const;
|
||||||
|
|
||||||
void bbt_time_unlocked (framepos_t, BBT_Time&) const;
|
void bbt_time_unlocked (framepos_t, Timecode::BBT_Time&) const;
|
||||||
|
|
||||||
framecnt_t bbt_duration_at_unlocked (const BBT_Time& when, const BBT_Time& bbt, int dir) const;
|
framecnt_t bbt_duration_at_unlocked (const Timecode::BBT_Time& when, const Timecode::BBT_Time& bbt, int dir) const;
|
||||||
|
|
||||||
const MeterSection& first_meter() const;
|
const MeterSection& first_meter() const;
|
||||||
const TempoSection& first_tempo() const;
|
const TempoSection& first_tempo() const;
|
||||||
|
|
||||||
framecnt_t count_frames_between (const BBT_Time&, const BBT_Time&) const;
|
framecnt_t count_frames_between (const Timecode::BBT_Time&, const Timecode::BBT_Time&) const;
|
||||||
framecnt_t count_frames_between_metrics (const Meter&, const Tempo&,
|
framecnt_t count_frames_between_metrics (const Meter&, const Tempo&,
|
||||||
const BBT_Time&, const BBT_Time&) const;
|
const Timecode::BBT_Time&, const Timecode::BBT_Time&) const;
|
||||||
|
|
||||||
int move_metric_section (MetricSection&, const BBT_Time& to);
|
int move_metric_section (MetricSection&, const Timecode::BBT_Time& to);
|
||||||
void do_insert (MetricSection* section, bool with_bbt);
|
void do_insert (MetricSection* section, bool with_bbt);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -44,9 +44,9 @@ public:
|
||||||
virtual ~Ticker() {}
|
virtual ~Ticker() {}
|
||||||
|
|
||||||
virtual void tick (
|
virtual void tick (
|
||||||
const framepos_t& transport_frames,
|
const framepos_t& transport_frames,
|
||||||
const BBT_Time& transport_bbt,
|
const Timecode::BBT_Time& transport_bbt,
|
||||||
const Timecode::Time& transport_timecode) = 0;
|
const Timecode::Time& transport_timecode) = 0;
|
||||||
|
|
||||||
void set_session (Session* s);
|
void set_session (Session* s);
|
||||||
};
|
};
|
||||||
|
|
@ -68,9 +68,9 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
void tick(
|
void tick(
|
||||||
const framepos_t& transport_frames,
|
const framepos_t& transport_frames,
|
||||||
const BBT_Time& transport_bbt,
|
const Timecode::BBT_Time& transport_bbt,
|
||||||
const Timecode::Time& transport_timecode);
|
const Timecode::Time& transport_timecode);
|
||||||
|
|
||||||
void set_session (Session* s);
|
void set_session (Session* s);
|
||||||
void session_going_away();
|
void session_going_away();
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,6 @@
|
||||||
#ifndef __libardour_timecode_h__
|
#ifndef __libardour_timecode_h__
|
||||||
#define __libardour_timecode_h__
|
#define __libardour_timecode_h__
|
||||||
|
|
||||||
#include "musictime/time.h"
|
#include "timecode/time.h"
|
||||||
|
|
||||||
#endif // __libardour_timecode_h__
|
#endif // __libardour_timecode_h__
|
||||||
|
|
|
||||||
|
|
@ -30,10 +30,12 @@
|
||||||
#include <inttypes.h>
|
#include <inttypes.h>
|
||||||
#include <jack/types.h>
|
#include <jack/types.h>
|
||||||
#include <jack/midiport.h>
|
#include <jack/midiport.h>
|
||||||
#include "musictime/time.h"
|
|
||||||
|
#include "timecode/bbt_time.h"
|
||||||
|
#include "timecode/time.h"
|
||||||
|
|
||||||
#include "pbd/id.h"
|
#include "pbd/id.h"
|
||||||
|
|
||||||
#include "ardour/bbt_time.h"
|
|
||||||
#include "ardour/chan_count.h"
|
#include "ardour/chan_count.h"
|
||||||
|
|
||||||
#include <map>
|
#include <map>
|
||||||
|
|
@ -47,7 +49,7 @@ namespace ARDOUR {
|
||||||
class Source;
|
class Source;
|
||||||
class AudioSource;
|
class AudioSource;
|
||||||
class Route;
|
class Route;
|
||||||
class Region;
|
class Region;
|
||||||
|
|
||||||
typedef jack_default_audio_sample_t Sample;
|
typedef jack_default_audio_sample_t Sample;
|
||||||
typedef float pan_t;
|
typedef float pan_t;
|
||||||
|
|
@ -56,28 +58,28 @@ namespace ARDOUR {
|
||||||
typedef uint64_t microseconds_t;
|
typedef uint64_t microseconds_t;
|
||||||
typedef jack_nframes_t pframes_t;
|
typedef jack_nframes_t pframes_t;
|
||||||
|
|
||||||
/* Any position measured in audio frames.
|
/* Any position measured in audio frames.
|
||||||
Assumed to be non-negative but not enforced.
|
Assumed to be non-negative but not enforced.
|
||||||
*/
|
*/
|
||||||
typedef int64_t framepos_t;
|
typedef int64_t framepos_t;
|
||||||
|
|
||||||
/* Any distance from a given framepos_t.
|
/* Any distance from a given framepos_t.
|
||||||
Maybe positive or negative.
|
Maybe positive or negative.
|
||||||
*/
|
*/
|
||||||
typedef int64_t frameoffset_t;
|
typedef int64_t frameoffset_t;
|
||||||
|
|
||||||
/* Any count of audio frames.
|
/* Any count of audio frames.
|
||||||
Assumed to be positive but not enforced.
|
Assumed to be positive but not enforced.
|
||||||
*/
|
*/
|
||||||
typedef int64_t framecnt_t;
|
typedef int64_t framecnt_t;
|
||||||
|
|
||||||
static const framepos_t max_framepos = INT64_MAX;
|
static const framepos_t max_framepos = INT64_MAX;
|
||||||
static const framecnt_t max_framecnt = INT64_MAX;
|
static const framecnt_t max_framecnt = INT64_MAX;
|
||||||
|
|
||||||
// a set of (time) intervals: first of pair is the offset within the region, second is the length of the interval
|
// a set of (time) intervals: first of pair is the offset within the region, second is the length of the interval
|
||||||
typedef std::list<std::pair<frameoffset_t,framecnt_t> > AudioIntervalResult;
|
typedef std::list<std::pair<frameoffset_t,framecnt_t> > AudioIntervalResult;
|
||||||
// associate a set of intervals with regions (e.g. for silence detection)
|
// associate a set of intervals with regions (e.g. for silence detection)
|
||||||
typedef std::map<boost::shared_ptr<ARDOUR::Region>,AudioIntervalResult> AudioIntervalMap;
|
typedef std::map<boost::shared_ptr<ARDOUR::Region>,AudioIntervalResult> AudioIntervalMap;
|
||||||
|
|
||||||
struct IOChange {
|
struct IOChange {
|
||||||
|
|
||||||
|
|
@ -216,8 +218,8 @@ namespace ARDOUR {
|
||||||
|
|
||||||
Type type;
|
Type type;
|
||||||
|
|
||||||
Timecode::Time timecode;
|
Timecode::Time timecode;
|
||||||
BBT_Time bbt;
|
Timecode::BBT_Time bbt;
|
||||||
|
|
||||||
union {
|
union {
|
||||||
framecnt_t frames;
|
framecnt_t frames;
|
||||||
|
|
@ -250,11 +252,11 @@ namespace ARDOUR {
|
||||||
};
|
};
|
||||||
|
|
||||||
struct MusicRange {
|
struct MusicRange {
|
||||||
BBT_Time start;
|
Timecode::BBT_Time start;
|
||||||
BBT_Time end;
|
Timecode::BBT_Time end;
|
||||||
uint32_t id;
|
uint32_t id;
|
||||||
|
|
||||||
MusicRange (BBT_Time& s, BBT_Time& e, uint32_t i)
|
MusicRange (Timecode::BBT_Time& s, Timecode::BBT_Time& e, uint32_t i)
|
||||||
: start (s), end (e), id (i) {}
|
: start (s), end (e), id (i) {}
|
||||||
|
|
||||||
bool operator== (const MusicRange& other) const {
|
bool operator== (const MusicRange& other) const {
|
||||||
|
|
|
||||||
|
|
@ -1331,7 +1331,7 @@ AUPlugin::get_beat_and_tempo_callback (Float64* outCurrentBeat,
|
||||||
return kAudioUnitErr_CannotDoInCurrentContext;
|
return kAudioUnitErr_CannotDoInCurrentContext;
|
||||||
}
|
}
|
||||||
|
|
||||||
BBT_Time bbt;
|
Timecode::BBT_Time bbt;
|
||||||
TempoMetric metric = tmap.metric_at (_session.transport_frame() + current_offset);
|
TempoMetric metric = tmap.metric_at (_session.transport_frame() + current_offset);
|
||||||
tmap.bbt_time_with_metric (_session.transport_frame() + current_offset, bbt, metric);
|
tmap.bbt_time_with_metric (_session.transport_frame() + current_offset, bbt, metric);
|
||||||
|
|
||||||
|
|
@ -1370,7 +1370,7 @@ AUPlugin::get_musical_time_location_callback (UInt32* outDeltaSampleOffsetToNe
|
||||||
return kAudioUnitErr_CannotDoInCurrentContext;
|
return kAudioUnitErr_CannotDoInCurrentContext;
|
||||||
}
|
}
|
||||||
|
|
||||||
BBT_Time bbt;
|
Timecode::BBT_Time bbt;
|
||||||
TempoMetric metric = tmap.metric_at (_session.transport_frame() + current_offset);
|
TempoMetric metric = tmap.metric_at (_session.transport_frame() + current_offset);
|
||||||
tmap.bbt_time_with_metric (_session.transport_frame() + current_offset, bbt, metric);
|
tmap.bbt_time_with_metric (_session.transport_frame() + current_offset, bbt, metric);
|
||||||
|
|
||||||
|
|
@ -1462,7 +1462,7 @@ AUPlugin::get_transport_state_callback (Boolean* outIsPlaying,
|
||||||
return kAudioUnitErr_CannotDoInCurrentContext;
|
return kAudioUnitErr_CannotDoInCurrentContext;
|
||||||
}
|
}
|
||||||
|
|
||||||
BBT_Time bbt;
|
Timecode::BBT_Time bbt;
|
||||||
|
|
||||||
if (outCycleStartBeat) {
|
if (outCycleStartBeat) {
|
||||||
TempoMetric metric = tmap.metric_at (loc->start() + current_offset);
|
TempoMetric metric = tmap.metric_at (loc->start() + current_offset);
|
||||||
|
|
|
||||||
|
|
@ -32,9 +32,12 @@
|
||||||
#include "midi++/mmc.h"
|
#include "midi++/mmc.h"
|
||||||
#include "midi++/port.h"
|
#include "midi++/port.h"
|
||||||
#include "midi++/manager.h"
|
#include "midi++/manager.h"
|
||||||
|
|
||||||
#include "pbd/error.h"
|
#include "pbd/error.h"
|
||||||
#include "pbd/pthread_utils.h"
|
#include "pbd/pthread_utils.h"
|
||||||
|
|
||||||
|
#include "timecode/time.h"
|
||||||
|
|
||||||
#include "ardour/configuration.h"
|
#include "ardour/configuration.h"
|
||||||
#include "ardour/debug.h"
|
#include "ardour/debug.h"
|
||||||
#include "ardour/audioengine.h"
|
#include "ardour/audioengine.h"
|
||||||
|
|
@ -45,7 +48,6 @@
|
||||||
#include "ardour/audio_diskstream.h"
|
#include "ardour/audio_diskstream.h"
|
||||||
#include "ardour/slave.h"
|
#include "ardour/slave.h"
|
||||||
#include "ardour/cycles.h"
|
#include "ardour/cycles.h"
|
||||||
#include "ardour/timecode.h"
|
|
||||||
|
|
||||||
#include "i18n.h"
|
#include "i18n.h"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -69,15 +69,15 @@ Session::process (pframes_t nframes)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_engine.main_thread()->get_buffers ();
|
_engine.main_thread()->get_buffers ();
|
||||||
|
|
||||||
(this->*process_function) (nframes);
|
(this->*process_function) (nframes);
|
||||||
|
|
||||||
_engine.main_thread()->drop_buffers ();
|
_engine.main_thread()->drop_buffers ();
|
||||||
|
|
||||||
// the ticker is for sending time information like MidiClock
|
// the ticker is for sending time information like MidiClock
|
||||||
framepos_t transport_frames = transport_frame();
|
framepos_t transport_frames = transport_frame();
|
||||||
BBT_Time transport_bbt;
|
Timecode::BBT_Time transport_bbt;
|
||||||
bbt_time(transport_frames, transport_bbt);
|
bbt_time(transport_frames, transport_bbt);
|
||||||
Timecode::Time transport_timecode;
|
Timecode::Time transport_timecode;
|
||||||
timecode_time(transport_frames, transport_timecode);
|
timecode_time(transport_frames, transport_timecode);
|
||||||
|
|
|
||||||
|
|
@ -47,7 +47,7 @@ using namespace PBD;
|
||||||
/* BBT TIME*/
|
/* BBT TIME*/
|
||||||
|
|
||||||
void
|
void
|
||||||
Session::bbt_time (framepos_t when, BBT_Time& bbt)
|
Session::bbt_time (framepos_t when, Timecode::BBT_Time& bbt)
|
||||||
{
|
{
|
||||||
_tempo_map->bbt_time (when, bbt);
|
_tempo_map->bbt_time (when, bbt);
|
||||||
}
|
}
|
||||||
|
|
@ -473,11 +473,11 @@ Session::jack_timebase_callback (jack_transport_state_t /*state*/,
|
||||||
jack_position_t* pos,
|
jack_position_t* pos,
|
||||||
int /*new_position*/)
|
int /*new_position*/)
|
||||||
{
|
{
|
||||||
BBT_Time bbt;
|
Timecode::BBT_Time bbt;
|
||||||
|
|
||||||
if (pos->frame != _transport_frame) {
|
if (pos->frame != _transport_frame) {
|
||||||
cerr << "ARDOUR says " << _transport_frame << " JACK says " << pos->frame << endl;
|
cerr << "ARDOUR says " << _transport_frame << " JACK says " << pos->frame << endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* BBT info */
|
/* BBT info */
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -38,6 +38,8 @@ using namespace std;
|
||||||
using namespace ARDOUR;
|
using namespace ARDOUR;
|
||||||
using namespace PBD;
|
using namespace PBD;
|
||||||
|
|
||||||
|
using Timecode::BBT_Time;
|
||||||
|
|
||||||
/* _default tempo is 4/4 qtr=120 */
|
/* _default tempo is 4/4 qtr=120 */
|
||||||
|
|
||||||
Meter TempoMap::_default_meter (4.0, 4.0);
|
Meter TempoMap::_default_meter (4.0, 4.0);
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,8 @@ CPPUNIT_TEST_SUITE_REGISTRATION(BBTTest);
|
||||||
using namespace std;
|
using namespace std;
|
||||||
using namespace ARDOUR;
|
using namespace ARDOUR;
|
||||||
|
|
||||||
|
using Timecode::BBT_Time;
|
||||||
|
|
||||||
void
|
void
|
||||||
BBTTest::addTest ()
|
BBTTest::addTest ()
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
#include <sigc++/sigc++.h>
|
#include <sigc++/sigc++.h>
|
||||||
#include <cppunit/TestFixture.h>
|
#include <cppunit/TestFixture.h>
|
||||||
#include <cppunit/extensions/HelperMacros.h>
|
#include <cppunit/extensions/HelperMacros.h>
|
||||||
#include "ardour/bbt_time.h"
|
#include "timecode/bbt_time.h"
|
||||||
|
|
||||||
class BBTTest : public CppUnit::TestFixture
|
class BBTTest : public CppUnit::TestFixture
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -48,8 +48,8 @@ class TestSlaveSessionProxy : public ISlaveSessionProxy {
|
||||||
meter (4.0, 4.0)
|
meter (4.0, 4.0)
|
||||||
{
|
{
|
||||||
_tempo_map = new TempoMap (FRAME_RATE);
|
_tempo_map = new TempoMap (FRAME_RATE);
|
||||||
_tempo_map->add_tempo (tempo, BBT_Time(1, 1, 0));
|
_tempo_map->add_tempo (tempo, Timecode::BBT_Time(1, 1, 0));
|
||||||
_tempo_map->add_meter (meter, BBT_Time(1, 1, 0));
|
_tempo_map->add_meter (meter, Timecode::BBT_Time(1, 1, 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Controlling the mock object
|
// Controlling the mock object
|
||||||
|
|
|
||||||
|
|
@ -103,7 +103,7 @@ void MidiClockTicker::transport_state_changed()
|
||||||
send_stop_event(0);
|
send_stop_event(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
tick(position, *((ARDOUR::BBT_Time *) 0), *((Timecode::Time *)0));
|
tick(position, *((Timecode::BBT_Time *) 0), *((Timecode::Time *)0));
|
||||||
}
|
}
|
||||||
|
|
||||||
void MidiClockTicker::position_changed (framepos_t position)
|
void MidiClockTicker::position_changed (framepos_t position)
|
||||||
|
|
@ -129,7 +129,7 @@ void MidiClockTicker::transport_looped()
|
||||||
_last_tick = loop_location->start() - elapsed_since_last_tick;
|
_last_tick = loop_location->start() - elapsed_since_last_tick;
|
||||||
}
|
}
|
||||||
|
|
||||||
void MidiClockTicker::tick (const framepos_t& transport_frames, const BBT_Time& /*transport_bbt*/, const Timecode::Time& /*transport_smpt*/)
|
void MidiClockTicker::tick (const framepos_t& transport_frames, const Timecode::BBT_Time& /*transport_bbt*/, const Timecode::Time& /*transport_smpt*/)
|
||||||
{
|
{
|
||||||
if (!Config->get_send_midi_clock() || _session == 0 || _session->transport_speed() != 1.0f || _midi_port == 0)
|
if (!Config->get_send_midi_clock() || _session == 0 || _session->transport_speed() != 1.0f || _midi_port == 0)
|
||||||
return;
|
return;
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@
|
||||||
#define __midipp_mmc_h_h__
|
#define __midipp_mmc_h_h__
|
||||||
|
|
||||||
#include <jack/types.h>
|
#include <jack/types.h>
|
||||||
#include "musictime/time.h"
|
#include "timecode/time.h"
|
||||||
#include "pbd/signals.h"
|
#include "pbd/signals.h"
|
||||||
#include "pbd/ringbuffer.h"
|
#include "pbd/ringbuffer.h"
|
||||||
#include "midi++/types.h"
|
#include "midi++/types.h"
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <map>
|
#include <map>
|
||||||
|
|
||||||
#include "musictime/time.h"
|
#include "timecode/time.h"
|
||||||
#include "pbd/error.h"
|
#include "pbd/error.h"
|
||||||
#include "midi++/mmc.h"
|
#include "midi++/mmc.h"
|
||||||
#include "midi++/port.h"
|
#include "midi++/port.h"
|
||||||
|
|
|
||||||
|
|
@ -62,7 +62,7 @@ def build(bld):
|
||||||
obj.name = 'libmidipp'
|
obj.name = 'libmidipp'
|
||||||
obj.target = 'midipp'
|
obj.target = 'midipp'
|
||||||
obj.uselib = 'GLIBMM SIGCPP XML JACK OSX'
|
obj.uselib = 'GLIBMM SIGCPP XML JACK OSX'
|
||||||
obj.uselib_local = 'libpbd libevoral libmusictime'
|
obj.uselib_local = 'libpbd libevoral libtimecode'
|
||||||
obj.vnum = LIBMIDIPP_LIB_VERSION
|
obj.vnum = LIBMIDIPP_LIB_VERSION
|
||||||
obj.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3')
|
obj.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3')
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@
|
||||||
|
|
||||||
#include <jack/types.h>
|
#include <jack/types.h>
|
||||||
|
|
||||||
#include "musictime/time.h"
|
#include "timecode/time.h"
|
||||||
|
|
||||||
namespace ARDOUR {
|
namespace ARDOUR {
|
||||||
class Session;
|
class Session;
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ def build(bld):
|
||||||
obj.includes = ['.', './control_protocol']
|
obj.includes = ['.', './control_protocol']
|
||||||
obj.name = 'libardour_cp'
|
obj.name = 'libardour_cp'
|
||||||
obj.target = 'ardourcp'
|
obj.target = 'ardourcp'
|
||||||
obj.uselib_local = 'libardour libmusictime'
|
obj.uselib_local = 'libardour libtimecode'
|
||||||
obj.vnum = LIBARDOUR_CP_LIB_VERSION
|
obj.vnum = LIBARDOUR_CP_LIB_VERSION
|
||||||
obj.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3')
|
obj.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3')
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -559,7 +559,7 @@ TranzportControlProtocol::show_bbt (framepos_t where)
|
||||||
{
|
{
|
||||||
if ((where != last_where) || lcd_isdamaged(1,9,8)) {
|
if ((where != last_where) || lcd_isdamaged(1,9,8)) {
|
||||||
char buf[16];
|
char buf[16];
|
||||||
BBT_Time bbt;
|
Timecode::BBT_Time bbt;
|
||||||
session->tempo_map().bbt_time (where, bbt);
|
session->tempo_map().bbt_time (where, bbt);
|
||||||
sprintf (buf, "%03" PRIu32 "|%02" PRIu32 "|%04" PRIu32, bbt.bars,bbt.beats,bbt.ticks);
|
sprintf (buf, "%03" PRIu32 "|%02" PRIu32 "|%04" PRIu32, bbt.bars,bbt.beats,bbt.ticks);
|
||||||
last_bars = bbt.bars;
|
last_bars = bbt.bars;
|
||||||
|
|
|
||||||
|
|
@ -1050,7 +1050,7 @@ MackieControlProtocol::update_automation (RouteSignal & rs)
|
||||||
string
|
string
|
||||||
MackieControlProtocol::format_bbt_timecode (framepos_t now_frame)
|
MackieControlProtocol::format_bbt_timecode (framepos_t now_frame)
|
||||||
{
|
{
|
||||||
BBT_Time bbt_time;
|
Timecode::BBT_Time bbt_time;
|
||||||
session->bbt_time (now_frame, bbt_time);
|
session->bbt_time (now_frame, bbt_time);
|
||||||
|
|
||||||
// According to the Logic docs
|
// According to the Logic docs
|
||||||
|
|
|
||||||
|
|
@ -288,7 +288,7 @@ TranzportControlProtocol::show_bbt (framepos_t where)
|
||||||
{
|
{
|
||||||
if (where != last_where) {
|
if (where != last_where) {
|
||||||
char buf[16];
|
char buf[16];
|
||||||
BBT_Time bbt;
|
Timecode::BBT_Time bbt;
|
||||||
|
|
||||||
// When recording or playing back < 1.0 speed do 1 or 2
|
// When recording or playing back < 1.0 speed do 1 or 2
|
||||||
// FIXME - clean up state machine & break up logic
|
// FIXME - clean up state machine & break up logic
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@
|
||||||
|
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
|
||||||
#include "musictime/time.h"
|
#include "timecode/time.h"
|
||||||
|
|
||||||
namespace Timecode {
|
namespace Timecode {
|
||||||
|
|
||||||
|
|
@ -17,25 +17,23 @@
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __ardour_bbt_time_h__
|
#ifndef __timecode_bbt_time_h__
|
||||||
#define __ardour_bbt_time_h__
|
#define __timecode_bbt_time_h__
|
||||||
|
|
||||||
#include <ostream>
|
#include <ostream>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <iomanip>
|
#include <iomanip>
|
||||||
|
|
||||||
namespace ARDOUR {
|
namespace Timecode {
|
||||||
|
|
||||||
|
/** Bar, Beat, Tick Time (i.e. Tempo-Based Time) */
|
||||||
struct BBT_Time {
|
struct BBT_Time {
|
||||||
uint32_t bars;
|
uint32_t bars;
|
||||||
uint32_t beats;
|
uint32_t beats;
|
||||||
uint32_t ticks;
|
uint32_t ticks;
|
||||||
|
|
||||||
BBT_Time() {
|
BBT_Time ()
|
||||||
bars = 1;
|
: bars (1), beats (1), ticks (0) {}
|
||||||
beats = 1;
|
|
||||||
ticks = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
BBT_Time (uint32_t ba, uint32_t be, uint32_t t)
|
BBT_Time (uint32_t ba, uint32_t be, uint32_t t)
|
||||||
: bars (ba), beats (be), ticks (t) {}
|
: bars (ba), beats (be), ticks (t) {}
|
||||||
|
|
@ -54,14 +52,14 @@ struct BBT_Time {
|
||||||
}
|
}
|
||||||
|
|
||||||
inline std::ostream&
|
inline std::ostream&
|
||||||
operator<< (std::ostream& o, const ARDOUR::BBT_Time& bbt)
|
operator<< (std::ostream& o, const Timecode::BBT_Time& bbt)
|
||||||
{
|
{
|
||||||
o << bbt.bars << '|' << bbt.beats << '|' << bbt.ticks;
|
o << bbt.bars << '|' << bbt.beats << '|' << bbt.ticks;
|
||||||
return o;
|
return o;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline std::ostream&
|
inline std::ostream&
|
||||||
print_padded (std::ostream& o, const ARDOUR::BBT_Time& bbt)
|
print_padded (std::ostream& o, const Timecode::BBT_Time& bbt)
|
||||||
{
|
{
|
||||||
o << std::setfill ('0') << std::right
|
o << std::setfill ('0') << std::right
|
||||||
<< std::setw (3) << bbt.bars << "|"
|
<< std::setw (3) << bbt.bars << "|"
|
||||||
|
|
@ -71,4 +69,4 @@ print_padded (std::ostream& o, const ARDOUR::BBT_Time& bbt)
|
||||||
return o;
|
return o;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* __ardour_bbt_time_h__ */
|
#endif /* __timecode_bbt_time_h__ */
|
||||||
|
|
@ -4,7 +4,7 @@ import Options
|
||||||
import os
|
import os
|
||||||
|
|
||||||
# Version of this package (even if built as a child)
|
# Version of this package (even if built as a child)
|
||||||
MUSICTIME_VERSION = '0.0.0'
|
TIMECODE_VERSION = '0.0.0'
|
||||||
|
|
||||||
# Library version (UNIX style major, minor, micro)
|
# Library version (UNIX style major, minor, micro)
|
||||||
# major increment <=> incompatible changes
|
# major increment <=> incompatible changes
|
||||||
|
|
@ -12,11 +12,11 @@ MUSICTIME_VERSION = '0.0.0'
|
||||||
# micro increment <=> no interface changes
|
# micro increment <=> no interface changes
|
||||||
# Version history:
|
# Version history:
|
||||||
# 0.0.0 = 0,0,0
|
# 0.0.0 = 0,0,0
|
||||||
MUSICTIME_LIB_VERSION = '0.0.0'
|
TIMECODE_LIB_VERSION = '0.0.0'
|
||||||
|
|
||||||
# Variables for 'waf dist'
|
# Variables for 'waf dist'
|
||||||
APPNAME = 'musictime'
|
APPNAME = 'timecode'
|
||||||
VERSION = MUSICTIME_VERSION
|
VERSION = TIMECODE_VERSION
|
||||||
|
|
||||||
# Mandatory variables
|
# Mandatory variables
|
||||||
srcdir = '.'
|
srcdir = '.'
|
||||||
|
|
@ -36,9 +36,9 @@ def build(bld):
|
||||||
obj.source = 'src/time.cc'
|
obj.source = 'src/time.cc'
|
||||||
obj.export_incdirs = ['.']
|
obj.export_incdirs = ['.']
|
||||||
obj.includes = ['.', './src']
|
obj.includes = ['.', './src']
|
||||||
obj.name = 'libmusictime'
|
obj.name = 'libtimecode'
|
||||||
obj.target = 'musictime'
|
obj.target = 'timecode'
|
||||||
obj.vnum = MUSICTIME_LIB_VERSION
|
obj.vnum = TIMECODE_LIB_VERSION
|
||||||
obj.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3')
|
obj.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3')
|
||||||
|
|
||||||
def shutdown():
|
def shutdown():
|
||||||
4
wscript
4
wscript
|
|
@ -25,7 +25,7 @@ children = [
|
||||||
'libs/taglib',
|
'libs/taglib',
|
||||||
'libs/rubberband',
|
'libs/rubberband',
|
||||||
'libs/surfaces',
|
'libs/surfaces',
|
||||||
'libs/musictime',
|
'libs/timecode',
|
||||||
'libs/ardour',
|
'libs/ardour',
|
||||||
'libs/gtkmm2ext',
|
'libs/gtkmm2ext',
|
||||||
'libs/clearlooks-newer',
|
'libs/clearlooks-newer',
|
||||||
|
|
@ -583,7 +583,7 @@ def build(bld):
|
||||||
bld.path.find_dir ('libs/evoral/evoral')
|
bld.path.find_dir ('libs/evoral/evoral')
|
||||||
bld.path.find_dir ('libs/vamp-sdk/vamp-sdk')
|
bld.path.find_dir ('libs/vamp-sdk/vamp-sdk')
|
||||||
bld.path.find_dir ('libs/surfaces/control_protocol/control_protocol')
|
bld.path.find_dir ('libs/surfaces/control_protocol/control_protocol')
|
||||||
bld.path.find_dir ('libs/musictime/musictime')
|
bld.path.find_dir ('libs/timecode/timecode')
|
||||||
bld.path.find_dir ('libs/rubberband/rubberband')
|
bld.path.find_dir ('libs/rubberband/rubberband')
|
||||||
bld.path.find_dir ('libs/gtkmm2ext/gtkmm2ext')
|
bld.path.find_dir ('libs/gtkmm2ext/gtkmm2ext')
|
||||||
bld.path.find_dir ('libs/ardour/ardour')
|
bld.path.find_dir ('libs/ardour/ardour')
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue