summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2009-10-25 21:13:02 +0000
committerDavid Robillard <d@drobilla.net>2009-10-25 21:13:02 +0000
commit01b761bbaa1dd7af210b20f47530efe31e9edc76 (patch)
tree058a2b6432346cc2063015e7accd82dd0dece334
parentcd1c58e031e29b83b85d433a90978745adc080c0 (diff)
Remove Session dependency from BeatsFramesConverter.
More constey TempoMap accessors. git-svn-id: svn://localhost/ardour2/branches/3.0@5916 d708f5d6-7413-0410-9779-e7cbd77b26cf
-rw-r--r--gtk2_ardour/midi_streamview.cc2
-rw-r--r--gtk2_ardour/region_view.cc4
-rw-r--r--libs/ardour/ardour/beats_frames_converter.h14
-rw-r--r--libs/ardour/ardour/tempo.h6
-rw-r--r--libs/ardour/beats_frames_converter.cc14
-rw-r--r--libs/ardour/globals.cc19
-rw-r--r--libs/ardour/import.cc2
-rw-r--r--libs/ardour/midi_region.cc4
-rw-r--r--libs/ardour/midi_source.cc4
-rw-r--r--libs/ardour/smf_source.cc4
-rw-r--r--libs/ardour/tempo.cc4
11 files changed, 38 insertions, 39 deletions
diff --git a/gtk2_ardour/midi_streamview.cc b/gtk2_ardour/midi_streamview.cc
index 9d87738354..1b48dfe55e 100644
--- a/gtk2_ardour/midi_streamview.cc
+++ b/gtk2_ardour/midi_streamview.cc
@@ -574,7 +574,7 @@ MidiStreamView::update_rec_regions (boost::shared_ptr<MidiModel> data, nframes_t
gdouble xend = _trackview.editor().frame_to_pixel (region->position() + region->length());
rect->property_x2() = xend;
- ARDOUR::BeatsFramesConverter tconv(_trackview.session(), region->position());
+ ARDOUR::BeatsFramesConverter tconv(_trackview.session().tempo_map(), region->position());
const MidiModel::TimeType start_beats = tconv.from(start);
/* draw events */
diff --git a/gtk2_ardour/region_view.cc b/gtk2_ardour/region_view.cc
index bb5240f871..b44f287079 100644
--- a/gtk2_ardour/region_view.cc
+++ b/gtk2_ardour/region_view.cc
@@ -78,7 +78,7 @@ RegionView::RegionView (ArdourCanvas::Group* parent,
, _pixel_width(1.0)
, in_destructor(false)
, wait_for_data(false)
- , _time_converter(r->session(), r->position())
+ , _time_converter(r->session().tempo_map(), r->position())
{
}
@@ -132,7 +132,7 @@ RegionView::RegionView (ArdourCanvas::Group* parent,
, _pixel_width(1.0)
, in_destructor(false)
, wait_for_data(false)
- , _time_converter(r->session(), r->position())
+ , _time_converter(r->session().tempo_map(), r->position())
{
}
diff --git a/libs/ardour/ardour/beats_frames_converter.h b/libs/ardour/ardour/beats_frames_converter.h
index 7134ea2fe9..9db4448ebb 100644
--- a/libs/ardour/ardour/beats_frames_converter.h
+++ b/libs/ardour/ardour/beats_frames_converter.h
@@ -27,24 +27,24 @@
namespace ARDOUR {
-class Session;
+class TempoMap;
class BeatsFramesConverter : public Evoral::TimeConverter<double,sframes_t> {
public:
- BeatsFramesConverter(Session& session, sframes_t origin)
- : _session(session)
+ BeatsFramesConverter(const TempoMap& tempo_map, sframes_t origin)
+ : _tempo_map(tempo_map)
, _origin(origin)
{}
sframes_t to(double beats) const;
double from(sframes_t frames) const;
- sframes_t origin() const { return _origin; }
- void set_origin(sframes_t origin) { _origin = origin; }
+ sframes_t origin() const { return _origin; }
+ void set_origin(sframes_t origin) { _origin = origin; }
private:
- Session& _session;
- sframes_t _origin;
+ const TempoMap& _tempo_map;
+ sframes_t _origin;
};
} /* namespace ARDOUR */
diff --git a/libs/ardour/ardour/tempo.h b/libs/ardour/ardour/tempo.h
index 658330cf82..613339ff0b 100644
--- a/libs/ardour/ardour/tempo.h
+++ b/libs/ardour/ardour/tempo.h
@@ -184,8 +184,8 @@ class TempoMap : public PBD::StatefulDestructible
static const Tempo& default_tempo() { return _default_tempo; }
static const Meter& default_meter() { return _default_meter; }
- const Tempo& tempo_at (nframes_t);
- const Meter& meter_at (nframes_t);
+ const Tempo& tempo_at (nframes_t) const;
+ const Meter& meter_at (nframes_t) const;
const TempoSection& tempo_section_at (nframes_t);
@@ -253,6 +253,8 @@ class TempoMap : public PBD::StatefulDestructible
int n_tempos () const;
int n_meters () const;
+ nframes_t frame_rate () const { return _frame_rate; }
+
sigc::signal<void,ARDOUR::Change> StateChanged;
private:
diff --git a/libs/ardour/beats_frames_converter.cc b/libs/ardour/beats_frames_converter.cc
index da0f6e4c18..f93e5e7224 100644
--- a/libs/ardour/beats_frames_converter.cc
+++ b/libs/ardour/beats_frames_converter.cc
@@ -19,9 +19,7 @@
$Id: midiregion.h 733 2006-08-01 17:19:38Z drobilla $
*/
-#include "ardour/audioengine.h"
#include "ardour/beats_frames_converter.h"
-#include "ardour/session.h"
#include "ardour/tempo.h"
namespace ARDOUR {
@@ -30,10 +28,10 @@ sframes_t
BeatsFramesConverter::to(double beats) const
{
// FIXME: assumes tempo never changes after origin
- const Tempo& tempo = _session.tempo_map().tempo_at(_origin);
+ const Tempo& tempo = _tempo_map.tempo_at(_origin);
const double frames_per_beat = tempo.frames_per_beat(
- _session.engine().frame_rate(),
- _session.tempo_map().meter_at(_origin));
+ _tempo_map.frame_rate(),
+ _tempo_map.meter_at(_origin));
return lrint(beats * frames_per_beat);
}
@@ -42,10 +40,10 @@ double
BeatsFramesConverter::from(sframes_t frames) const
{
// FIXME: assumes tempo never changes after origin
- const Tempo& tempo = _session.tempo_map().tempo_at(_origin);
+ const Tempo& tempo = _tempo_map.tempo_at(_origin);
const double frames_per_beat = tempo.frames_per_beat(
- _session.engine().frame_rate(),
- _session.tempo_map().meter_at(_origin));
+ _tempo_map.frame_rate(),
+ _tempo_map.meter_at(_origin));
return frames / frames_per_beat;
}
diff --git a/libs/ardour/globals.cc b/libs/ardour/globals.cc
index 73b390b64a..a8e28c1c5c 100644
--- a/libs/ardour/globals.cc
+++ b/libs/ardour/globals.cc
@@ -58,23 +58,22 @@
#include "midi++/manager.h"
#include "midi++/mmc.h"
-#include "ardour/ardour.h"
-#include "ardour/debug.h"
#include "ardour/analyser.h"
+#include "ardour/ardour.h"
#include "ardour/audio_library.h"
-#include "ardour/rc_configuration.h"
-#include "ardour/profile.h"
-#include "ardour/plugin_manager.h"
+#include "ardour/audioengine.h"
#include "ardour/audiosource.h"
-#include "ardour/utils.h"
-#include "ardour/session.h"
-#include "ardour/source_factory.h"
#include "ardour/control_protocol_manager.h"
-#include "ardour/audioengine.h"
+#include "ardour/debug.h"
#include "ardour/filesystem_paths.h"
-
#include "ardour/mix.h"
+#include "ardour/plugin_manager.h"
+#include "ardour/profile.h"
+#include "ardour/rc_configuration.h"
#include "ardour/runtime_functions.h"
+#include "ardour/session.h"
+#include "ardour/source_factory.h"
+#include "ardour/utils.h"
#if defined (__APPLE__)
#include <Carbon/Carbon.h> // For Gestalt
diff --git a/libs/ardour/import.cc b/libs/ardour/import.cc
index 346773bc5f..174a2a81a3 100644
--- a/libs/ardour/import.cc
+++ b/libs/ardour/import.cc
@@ -360,7 +360,7 @@ write_midi_data_to_new_files (Evoral::SMF* source, Session::ImportStatus& status
const nframes64_t pos = 0;
const double length_beats = ceil(t / (double)source->ppqn());
- BeatsFramesConverter converter(smfs->session(), pos);
+ BeatsFramesConverter converter(smfs->session().tempo_map(), pos);
smfs->update_length(pos, converter.to(length_beats));
smfs->end_write();
diff --git a/libs/ardour/midi_region.cc b/libs/ardour/midi_region.cc
index b06f18c1aa..c17763bf80 100644
--- a/libs/ardour/midi_region.cc
+++ b/libs/ardour/midi_region.cc
@@ -119,12 +119,12 @@ MidiRegion::~MidiRegion ()
void
MidiRegion::set_position_internal (nframes_t pos, bool allow_bbt_recompute)
{
- BeatsFramesConverter old_converter(_session, _position - _start);
+ BeatsFramesConverter old_converter(_session.tempo_map(), _position - _start);
double length_beats = old_converter.from(_length);
Region::set_position_internal(pos, allow_bbt_recompute);
- BeatsFramesConverter new_converter(_session, pos - _start);
+ BeatsFramesConverter new_converter(_session.tempo_map(), pos - _start);
set_length(new_converter.to(length_beats), 0);
}
diff --git a/libs/ardour/midi_source.cc b/libs/ardour/midi_source.cc
index 81282c5313..193897d5b7 100644
--- a/libs/ardour/midi_source.cc
+++ b/libs/ardour/midi_source.cc
@@ -112,7 +112,7 @@ MidiSource::set_state (const XMLNode& node, int /*version*/)
sframes_t
MidiSource::length (sframes_t pos) const
{
- BeatsFramesConverter converter(_session, pos);
+ BeatsFramesConverter converter(_session.tempo_map(), pos);
return converter.to(_length_beats);
}
@@ -137,7 +137,7 @@ MidiSource::midi_read (Evoral::EventSink<nframes_t>& dst, sframes_t source_start
{
Glib::Mutex::Lock lm (_lock);
- BeatsFramesConverter converter(_session, source_start);
+ BeatsFramesConverter converter(_session.tempo_map(), source_start);
if (_model) {
Evoral::Sequence<double>::const_iterator& i = _model_iter;
diff --git a/libs/ardour/smf_source.cc b/libs/ardour/smf_source.cc
index d756e86109..5706b6a5d7 100644
--- a/libs/ardour/smf_source.cc
+++ b/libs/ardour/smf_source.cc
@@ -120,7 +120,7 @@ SMFSource::read_unlocked (Evoral::EventSink<nframes_t>& destination, sframes_t s
size_t scratch_size = 0; // keep track of scratch to minimize reallocs
- BeatsFramesConverter converter(_session, source_start);
+ BeatsFramesConverter converter(_session.tempo_map(), source_start);
const uint64_t start_ticks = (uint64_t)(converter.from(start) * ppqn());
@@ -316,7 +316,7 @@ SMFSource::append_event_unlocked_frames (const Evoral::Event<nframes_t>& ev, sfr
return;
}
- BeatsFramesConverter converter(_session, position);
+ BeatsFramesConverter converter(_session.tempo_map(), position);
_length_beats = max(_length_beats, converter.from(ev.time()));
diff --git a/libs/ardour/tempo.cc b/libs/ardour/tempo.cc
index b59719867b..2f9f7b79f1 100644
--- a/libs/ardour/tempo.cc
+++ b/libs/ardour/tempo.cc
@@ -1469,7 +1469,7 @@ TempoMap::tempo_section_at (nframes_t frame)
}
const Tempo&
-TempoMap::tempo_at (nframes_t frame)
+TempoMap::tempo_at (nframes_t frame) const
{
Metric m (metric_at (frame));
return m.tempo();
@@ -1477,7 +1477,7 @@ TempoMap::tempo_at (nframes_t frame)
const Meter&
-TempoMap::meter_at (nframes_t frame)
+TempoMap::meter_at (nframes_t frame) const
{
Metric m (metric_at (frame));
return m.meter();