convert codebase to use Temporal for various time types

This commit is contained in:
Paul Davis
2017-09-24 12:03:54 -04:00
parent 9283bee867
commit 7db12f6b12
114 changed files with 567 additions and 598 deletions

View File

@@ -21,7 +21,7 @@
#include "ardour/route.h"
#include "ardour/session.h"
#include "timecode/time.h"
#include "temporal/time.h"
#include "audiographer/process_context.h"
#include "audiographer/general/chunker.h"

View File

@@ -19,7 +19,7 @@
$Id: midiregion.h 733 2006-08-01 17:19:38Z drobilla $
*/
#include "evoral/Beats.hpp"
#include "temporal/beats.h"
#include "evoral/TimeConverter.hpp"
#include "ardour/libardour_visibility.h"
@@ -37,15 +37,15 @@ class TempoMap;
* them to the opposite unit, taking tempo changes into account.
*/
class LIBARDOUR_API BeatsSamplesConverter
: public Evoral::TimeConverter<Evoral::Beats,samplepos_t> {
: public Evoral::TimeConverter<Temporal::Beats,samplepos_t> {
public:
BeatsSamplesConverter (const TempoMap& tempo_map, samplepos_t origin)
: Evoral::TimeConverter<Evoral::Beats, samplepos_t> (origin)
: Evoral::TimeConverter<Temporal::Beats, samplepos_t> (origin)
, _tempo_map(tempo_map)
{}
samplepos_t to (Evoral::Beats beats) const;
Evoral::Beats from (samplepos_t samples) const;
samplepos_t to (Temporal::Beats beats) const;
Temporal::Beats from (samplepos_t samples) const;
private:
const TempoMap& _tempo_map;

View File

@@ -22,7 +22,7 @@
#include "pbd/enum_convert.h"
#include "evoral/Beats.hpp"
#include "temporal/beats.h"
#include "evoral/ControlList.hpp"
namespace PBD {
@@ -30,24 +30,24 @@ namespace PBD {
DEFINE_ENUM_CONVERT(Evoral::ControlList::InterpolationStyle)
template <>
inline bool to_string (Evoral::Beats beats, std::string& str)
inline bool to_string (Temporal::Beats beats, std::string& str)
{
return double_to_string (beats.to_double (), str);
}
template <>
inline bool string_to (const std::string& str, Evoral::Beats& beats)
inline bool string_to (const std::string& str, Temporal::Beats& beats)
{
double tmp;
if (!string_to_double (str, tmp)) {
return false;
}
beats = Evoral::Beats(tmp);
beats = Temporal::Beats(tmp);
return true;
}
template <>
inline std::string to_string (Evoral::Beats beats)
inline std::string to_string (Temporal::Beats beats)
{
std::string tmp;
double_to_string (beats.to_double (), tmp);
@@ -55,11 +55,11 @@ inline std::string to_string (Evoral::Beats beats)
}
template <>
inline Evoral::Beats string_to (const std::string& str)
inline Temporal::Beats string_to (const std::string& str)
{
double tmp;
string_to_double (str, tmp);
return Evoral::Beats (tmp);
return Temporal::Beats (tmp);
}
} // namespace PBD

View File

@@ -39,10 +39,10 @@ public:
Legatize(bool shrink_only);
~Legatize();
typedef Evoral::Sequence<Evoral::Beats>::Notes Notes;
typedef Evoral::Sequence<Temporal::Beats>::Notes Notes;
Command* operator()(boost::shared_ptr<ARDOUR::MidiModel> model,
Evoral::Beats position,
Temporal::Beats position,
std::vector<Notes>& seqs);
std::string name () const { return (_shrink_only ? std::string ("remove overlap") : std::string ("legatize")); }

View File

@@ -298,10 +298,10 @@ namespace ARDOUR { namespace LuaAPI {
};
boost::shared_ptr<Evoral::Note<Evoral::Beats> >
new_noteptr (uint8_t, Evoral::Beats, Evoral::Beats, uint8_t, uint8_t);
boost::shared_ptr<Evoral::Note<Temporal::Beats> >
new_noteptr (uint8_t, Temporal::Beats, Temporal::Beats, uint8_t, uint8_t);
std::list<boost::shared_ptr< Evoral::Note<Evoral::Beats> > >
std::list<boost::shared_ptr< Evoral::Note<Temporal::Beats> > >
note_list (boost::shared_ptr<ARDOUR::MidiModel>);
} } /* namespace */

View File

@@ -25,7 +25,7 @@
#include <boost/utility.hpp>
#include "ardour/types.h"
#include "evoral/Beats.hpp"
#include "temporal/beats.h"
#include "evoral/Sequence.hpp"
#include "pbd/signals.h"
@@ -45,8 +45,8 @@ struct MidiCursor : public boost::noncopyable {
last_read_end = 0;
}
Evoral::Sequence<Evoral::Beats>::const_iterator iter;
std::set<Evoral::Sequence<Evoral::Beats>::WeakNotePtr> active_notes;
Evoral::Sequence<Temporal::Beats>::const_iterator iter;
std::set<Evoral::Sequence<Temporal::Beats>::WeakNotePtr> active_notes;
samplepos_t last_read_end;
PBD::ScopedConnectionList connections;
};

View File

@@ -52,9 +52,9 @@ class MidiSource;
* Because of this MIDI controllers and automatable controllers/widgets/etc
* are easily interchangeable.
*/
class LIBARDOUR_API MidiModel : public AutomatableSequence<Evoral::Beats> {
class LIBARDOUR_API MidiModel : public AutomatableSequence<Temporal::Beats> {
public:
typedef Evoral::Beats TimeType;
typedef Temporal::Beats TimeType;
MidiModel (boost::shared_ptr<MidiSource>);
@@ -265,8 +265,8 @@ public:
bool write_section_to(boost::shared_ptr<MidiSource> source,
const Glib::Threads::Mutex::Lock& source_lock,
Evoral::Beats begin = Evoral::Beats(),
Evoral::Beats end = std::numeric_limits<Evoral::Beats>::max(),
Temporal::Beats begin = Temporal::Beats(),
Temporal::Beats end = std::numeric_limits<Temporal::Beats>::max(),
bool offset_events = false);
// MidiModel doesn't use the normal AutomationList serialisation code

View File

@@ -23,7 +23,7 @@
#include <vector>
#include <string>
#include "evoral/Beats.hpp"
#include "temporal/beats.h"
#include "evoral/Sequence.hpp"
class Command;
@@ -38,8 +38,8 @@ class LIBARDOUR_API MidiOperator {
virtual ~MidiOperator() {}
virtual Command* operator() (boost::shared_ptr<ARDOUR::MidiModel>,
Evoral::Beats,
std::vector<Evoral::Sequence<Evoral::Beats>::Notes>&) = 0;
Temporal::Beats,
std::vector<Evoral::Sequence<Temporal::Beats>::Notes>&) = 0;
virtual std::string name() const = 0;
};

View File

@@ -117,7 +117,7 @@ protected:
void region_going_away (boost::weak_ptr<Region> region);
private:
typedef Evoral::Note<Evoral::Beats> Note;
typedef Evoral::Note<Temporal::Beats> Note;
typedef Evoral::Event<samplepos_t> Event;
struct RegionTracker : public boost::noncopyable {

View File

@@ -45,7 +45,7 @@ public:
XMLNode& get_state ();
int set_state (const XMLNode&, int version);
void append_event_beats(const Glib::Threads::Mutex::Lock& lock, const Evoral::Event<Evoral::Beats>& ev);
void append_event_beats(const Glib::Threads::Mutex::Lock& lock, const Evoral::Event<Temporal::Beats>& ev);
void append_event_samples(const Glib::Threads::Mutex::Lock& lock, const Evoral::Event<samplepos_t>& ev, samplepos_t source_start);
void load_model(const Glib::Threads::Mutex::Lock& lock, bool force_reload=false);
void destroy_model(const Glib::Threads::Mutex::Lock& lock);

View File

@@ -23,7 +23,7 @@
#include <vector>
#include "evoral/Beats.hpp"
#include "temporal/beats.h"
#include "evoral/Range.hpp"
#include "pbd/string_convert.h"

View File

@@ -46,7 +46,7 @@ template<typename T> class MidiRingBuffer;
class LIBARDOUR_API MidiSource : virtual public Source, public boost::enable_shared_from_this<MidiSource>
{
public:
typedef Evoral::Beats TimeType;
typedef Temporal::Beats TimeType;
MidiSource (Session& session, std::string name, Source::Flag flags = Source::Flag(0));
MidiSource (Session& session, const XMLNode&);
@@ -62,8 +62,8 @@ class LIBARDOUR_API MidiSource : virtual public Source, public boost::enable_sha
*/
int write_to (const Lock& lock,
boost::shared_ptr<MidiSource> newsrc,
Evoral::Beats begin = Evoral::Beats(),
Evoral::Beats end = std::numeric_limits<Evoral::Beats>::max());
Temporal::Beats begin = Temporal::Beats(),
Temporal::Beats end = std::numeric_limits<Temporal::Beats>::max());
/** Export the midi data in the given time range to another MidiSource
* \param newsrc MidiSource to which data will be written. Should be a
@@ -75,8 +75,8 @@ class LIBARDOUR_API MidiSource : virtual public Source, public boost::enable_sha
*/
int export_write_to (const Lock& lock,
boost::shared_ptr<MidiSource> newsrc,
Evoral::Beats begin,
Evoral::Beats end);
Temporal::Beats begin,
Temporal::Beats end);
/** Read the data in a given time range from the MIDI source.
* All time stamps in parameters are in audio samples (even if the source has tempo time).
@@ -116,7 +116,7 @@ class LIBARDOUR_API MidiSource : virtual public Source, public boost::enable_sha
* Caller must ensure that the event is later than the last written event.
*/
virtual void append_event_beats(const Lock& lock,
const Evoral::Event<Evoral::Beats>& ev) = 0;
const Evoral::Event<Temporal::Beats>& ev) = 0;
/** Append a single event with a timestamp in samples.
*
@@ -155,8 +155,8 @@ class LIBARDOUR_API MidiSource : virtual public Source, public boost::enable_sha
*/
virtual void mark_midi_streaming_write_completed (
const Lock& lock,
Evoral::Sequence<Evoral::Beats>::StuckNoteOption stuck_option,
Evoral::Beats when = Evoral::Beats());
Evoral::Sequence<Temporal::Beats>::StuckNoteOption stuck_option,
Temporal::Beats when = Temporal::Beats());
virtual void session_saved();
@@ -232,7 +232,7 @@ class LIBARDOUR_API MidiSource : virtual public Source, public boost::enable_sha
boost::shared_ptr<MidiModel> _model;
bool _writing;
Evoral::Beats _length_beats;
Temporal::Beats _length_beats;
/** The total duration of the current capture. */
samplepos_t _capture_length;

View File

@@ -22,6 +22,7 @@
#include <glibmm/threads.h>
#include "temporal/beats.h"
#include "ardour/midi_buffer.h"
namespace Evoral {
@@ -46,7 +47,7 @@ public:
void remove (uint8_t note, uint8_t chn);
void resolve_notes (MidiBuffer& buffer, samplepos_t time);
void resolve_notes (Evoral::EventSink<samplepos_t>& buffer, samplepos_t time);
void resolve_notes (MidiSource& src, const Glib::Threads::Mutex::Lock& lock, Evoral::Beats time);
void resolve_notes (MidiSource& src, const Glib::Threads::Mutex::Lock& lock, Temporal::Beats time);
void dump (std::ostream&);
void reset ();
bool empty() const { return _on == 0; }

View File

@@ -26,7 +26,7 @@
#include "ardour/midi_model.h"
#include "ardour/types.h"
#include "evoral/Beats.hpp"
#include "temporal/beats.h"
#include "evoral/Note.hpp"
namespace Evoral { template<typename Time> class EventSink; }
@@ -46,7 +46,7 @@ class TempoMap;
class NoteFixer : public boost::noncopyable
{
public:
typedef Evoral::Note<Evoral::Beats> Note;
typedef Evoral::Note<Temporal::Beats> Note;
~NoteFixer();
@@ -85,7 +85,7 @@ private:
typedef std::list<Event*> Events;
/** Copy a beats event to a samples event with the given time stamp. */
Event* copy_event(samplepos_t time, const Evoral::Event<Evoral::Beats>& ev);
Event* copy_event(samplepos_t time, const Evoral::Event<Temporal::Beats>& ev);
/** Return true iff `note` is active at `pos`. */
bool note_is_active(const BeatsSamplesConverter& converter,

View File

@@ -35,8 +35,8 @@ public:
~Quantize ();
Command* operator() (boost::shared_ptr<ARDOUR::MidiModel>,
Evoral::Beats position,
std::vector<Evoral::Sequence<Evoral::Beats>::Notes>&);
Temporal::Beats position,
std::vector<Evoral::Sequence<Temporal::Beats>::Notes>&);
std::string name() const { return std::string ("quantize"); }
private:

View File

@@ -55,7 +55,7 @@
#include "midi++/types.h"
#include "midi++/mmc.h"
#include "timecode/time.h"
#include "temporal/time.h"
#include "ardour/ardour.h"
#include "ardour/chan_count.h"

View File

@@ -28,7 +28,7 @@
#include "pbd/signals.h"
#include "timecode/time.h"
#include "temporal/time.h"
#include "ardour/libardour_visibility.h"
#include "ardour/types.h"

View File

@@ -51,14 +51,14 @@ public:
return safe_midi_file_extension(path);
}
void append_event_beats (const Lock& lock, const Evoral::Event<Evoral::Beats>& ev);
void append_event_beats (const Lock& lock, const Evoral::Event<Temporal::Beats>& ev);
void append_event_samples (const Lock& lock, const Evoral::Event<samplepos_t>& ev, samplepos_t source_start);
void mark_streaming_midi_write_started (const Lock& lock, NoteMode mode);
void mark_streaming_write_completed (const Lock& lock);
void mark_midi_streaming_write_completed (const Lock& lock,
Evoral::Sequence<Evoral::Beats>::StuckNoteOption,
Evoral::Beats when = Evoral::Beats());
Evoral::Sequence<Temporal::Beats>::StuckNoteOption,
Temporal::Beats when = Temporal::Beats());
XMLNode& get_state ();
int set_state (const XMLNode&, int version);
@@ -78,7 +78,7 @@ public:
private:
bool _open;
Evoral::Beats _last_ev_time_beats;
Temporal::Beats _last_ev_time_beats;
samplepos_t _last_ev_time_samples;
/** end time (start + duration) of last call to read_unlocked */
mutable samplepos_t _smf_last_read_end;

View File

@@ -32,7 +32,7 @@
#include "pbd/stateful.h"
#include "pbd/statefuldestructible.h"
#include "evoral/Beats.hpp"
#include "temporal/beats.h"
#include "ardour/ardour.h"
@@ -450,7 +450,7 @@ class LIBARDOUR_API TempoMap : public PBD::StatefulDestructible
that align with the grid formed by tempo and meter sections.
They SHOULD NOT be used to determine the position of events
whose location is canonically defined in Evoral::Beats.
whose location is canonically defined in Temporal::Beats.
*/
double beat_at_sample (const samplecnt_t sample) const;
@@ -482,14 +482,14 @@ class LIBARDOUR_API TempoMap : public PBD::StatefulDestructible
when tempo matters but meter does not.
They SHOULD be used to determine the position of events
whose location is canonically defined in Evoral::Beats.
whose location is canonically defined in Temporal::Beats.
*/
samplepos_t samplepos_plus_qn (samplepos_t, Evoral::Beats) const;
Evoral::Beats framewalk_to_qn (samplepos_t pos, samplecnt_t distance) const;
samplepos_t samplepos_plus_qn (samplepos_t, Temporal::Beats) const;
Temporal::Beats framewalk_to_qn (samplepos_t pos, samplecnt_t distance) const;
/* quarter note related functions are also tempo-sensitive and ignore meter.
quarter notes may be compared with and assigned to Evoral::Beats.
quarter notes may be compared with and assigned to Temporal::Beats.
*/
double quarter_note_at_sample (const samplepos_t sample) const;
double quarter_note_at_sample_rt (const samplepos_t sample) const;

View File

@@ -19,6 +19,6 @@
#ifndef __libardour_timecode_h__
#define __libardour_timecode_h__
#include "timecode/time.h"
#include "temporal/time.h"
#endif // __libardour_timecode_h__

View File

@@ -50,8 +50,8 @@ namespace ARDOUR {
*/
class LIBARDOUR_API Transform : public MidiOperator {
public:
typedef Evoral::Sequence<Evoral::Beats>::NotePtr NotePtr;
typedef Evoral::Sequence<Evoral::Beats>::Notes Notes;
typedef Evoral::Sequence<Temporal::Beats>::NotePtr NotePtr;
typedef Evoral::Sequence<Temporal::Beats>::Notes Notes;
typedef ARDOUR::MidiModel::NoteDiffCommand::Property Property;
/** Context while iterating over notes during transformation. */
@@ -132,7 +132,7 @@ public:
Transform(const Program& prog);
Command* operator()(boost::shared_ptr<ARDOUR::MidiModel> model,
Evoral::Beats position,
Temporal::Beats position,
std::vector<Notes>& seqs);
std::string name() const { return std::string ("transform"); }

View File

@@ -28,13 +28,13 @@ namespace ARDOUR {
class LIBARDOUR_API Transpose : public MidiOperator {
public:
typedef Evoral::Sequence<Evoral::Beats>::NotePtr NotePtr;
typedef Evoral::Sequence<Evoral::Beats>::Notes Notes;
typedef Evoral::Sequence<Temporal::Beats>::NotePtr NotePtr;
typedef Evoral::Sequence<Temporal::Beats>::Notes Notes;
Transpose (int semitones);
Command* operator() (boost::shared_ptr<ARDOUR::MidiModel> model,
Evoral::Beats position,
Temporal::Beats position,
std::vector<Notes>& seqs);
std::string name () const { return std::string ("transpose"); }

View File

@@ -31,8 +31,9 @@
#include <inttypes.h>
#include "timecode/bbt_time.h"
#include "timecode/time.h"
#include "temporal/bbt_time.h"
#include "temporal/time.h"
#include "temporal/types.h"
#include "pbd/id.h"
@@ -43,6 +44,9 @@
#include <map>
using Temporal::max_samplepos;
using Temporal::max_samplecnt;
#if __GNUC__ < 3
typedef int intptr_t;
#endif
@@ -65,23 +69,11 @@ namespace ARDOUR {
typedef uint64_t microseconds_t;
typedef uint32_t pframes_t;
/* Any position measured in audio samples.
Assumed to be non-negative but not enforced.
*/
typedef int64_t samplepos_t;
/* rebind Temporal position types into ARDOUR namespace */
typedef Temporal::samplecnt_t samplecnt_t;
typedef Temporal::samplepos_t samplepos_t;
typedef Temporal::sampleoffset_t sampleoffset_t;
/* Any distance from a given samplepos_t.
Maybe positive or negative.
*/
typedef int64_t sampleoffset_t;
/* Any count of audio samples.
Assumed to be positive but not enforced.
*/
typedef int64_t samplecnt_t;
static const samplepos_t max_samplepos = INT64_MAX;
static const samplecnt_t max_samplecnt = INT64_MAX;
static const layer_t max_layer = UINT32_MAX;
// a set of (time) intervals: first of pair is the offset of the start within the region, second is the offset of the end
@@ -720,38 +712,8 @@ namespace ARDOUR {
} // namespace ARDOUR
static inline ARDOUR::samplepos_t
session_sample_to_track_sample (ARDOUR::samplepos_t session_sample, double speed)
{
long double result = (long double) session_sample * (long double) speed;
if (result >= (long double) ARDOUR::max_samplepos) {
return ARDOUR::max_samplepos;
} else if (result <= (long double) (ARDOUR::max_samplepos) * (ARDOUR::samplepos_t)(-1)) {
return (ARDOUR::max_samplepos * (ARDOUR::samplepos_t)(-1));
} else {
return result;
}
}
static inline ARDOUR::samplepos_t
track_sample_to_session_sample (ARDOUR::samplepos_t track_sample, double speed)
{
/* NB - do we need a check for speed == 0 ??? */
long double result = (long double) track_sample / (long double) speed;
if (result >= (long double) ARDOUR::max_samplepos) {
return ARDOUR::max_samplepos;
} else if (result <= (long double) (ARDOUR::max_samplepos) * (ARDOUR::samplepos_t)(-1)) {
return (ARDOUR::max_samplepos * (ARDOUR::samplepos_t)(-1));
} else {
return result;
}
}
/* for now, break the rules and use "using" to make this "global" */
using ARDOUR::samplepos_t;
#endif /* __ardour_types_h__ */

View File

@@ -27,7 +27,7 @@
#include <stdexcept>
#include "ardour/libardour_visibility.h"
#include "evoral/Beats.hpp"
#include "temporal/beats.h"
#include "pbd/compose.h"
namespace ARDOUR {
@@ -57,7 +57,7 @@ public:
explicit Variant(int32_t value) : _type(INT) { _int = value; }
explicit Variant(int64_t value) : _type(LONG) { _long = value; }
explicit Variant(const Evoral::Beats& beats)
explicit Variant(const Temporal::Beats& beats)
: _type(BEATS)
, _beats(beats)
{}
@@ -94,7 +94,7 @@ public:
std::min(value, (double)INT64_MAX)));
break;
case BEATS:
_beats = Evoral::Beats(value);
_beats = Temporal::Beats(value);
break;
default:
_type = NOTHING;
@@ -158,19 +158,19 @@ public:
return false;
}
bool operator==(const Evoral::Beats& v) const {
bool operator==(const Temporal::Beats& v) const {
return _type == BEATS && _beats == v;
}
bool operator!() const { return _type == NOTHING; }
Variant& operator=(Evoral::Beats v) {
Variant& operator=(Temporal::Beats v) {
_type = BEATS;
_beats = v;
return *this;
}
const Evoral::Beats& get_beats() const {
const Temporal::Beats& get_beats() const {
ensure_type(BEATS); return _beats;
}
@@ -204,7 +204,7 @@ private:
Type _type; ///< Type tag
std::string _string; ///< PATH, STRING, URI
Evoral::Beats _beats; ///< BEATS
Temporal::Beats _beats; ///< BEATS
// Union of all primitive numeric types
union {

View File

@@ -31,9 +31,9 @@ namespace ARDOUR {
* taking tempo changes into account.
*/
samplepos_t
BeatsSamplesConverter::to (Evoral::Beats beats) const
BeatsSamplesConverter::to (Temporal::Beats beats) const
{
if (beats < Evoral::Beats()) {
if (beats < Temporal::Beats()) {
std::cerr << "negative beats passed to BFC: " << beats << std::endl;
PBD::stacktrace (std::cerr, 30);
return 0;
@@ -45,7 +45,7 @@ BeatsSamplesConverter::to (Evoral::Beats beats) const
* supplied to the constructor. Returns the equivalent number of quarter-note beats,
* taking tempo changes into account.
*/
Evoral::Beats
Temporal::Beats
BeatsSamplesConverter::from (samplepos_t samples) const
{
return _tempo_map.framewalk_to_qn (_origin_b, samples);
@@ -60,7 +60,7 @@ DoubleBeatsSamplesConverter::to (double beats) const
PBD::stacktrace (std::cerr, 30);
return 0;
}
return _tempo_map.samplepos_plus_qn (_origin_b, Evoral::Beats(beats)) - _origin_b;
return _tempo_map.samplepos_plus_qn (_origin_b, Temporal::Beats(beats)) - _origin_b;
}
/** As above, but with quarter-note beats in double instead (for GUI). */

View File

@@ -1265,14 +1265,14 @@ DiskWriter::transport_stopped_wallclock (struct tm& when, time_t twhen, bool abo
/* set length in beats to entire capture length */
BeatsSamplesConverter converter (_session.tempo_map(), capture_info.front()->start);
const Evoral::Beats total_capture_beats = converter.from (total_capture);
const Temporal::Beats total_capture_beats = converter.from (total_capture);
_midi_write_source->set_length_beats (total_capture_beats);
/* flush to disk: this step differs from the audio path,
where all the data is already on disk.
*/
_midi_write_source->mark_midi_streaming_write_completed (source_lock, Evoral::Sequence<Evoral::Beats>::ResolveStuckNotes, total_capture_beats);
_midi_write_source->mark_midi_streaming_write_completed (source_lock, Evoral::Sequence<Temporal::Beats>::ResolveStuckNotes, total_capture_beats);
}
_last_capture_sources.insert (_last_capture_sources.end(), audio_srcs.begin(), audio_srcs.end());

View File

@@ -424,9 +424,9 @@ write_midi_data_to_new_files (Evoral::SMF* source, ImportStatus& status,
smfs->append_event_beats(
source_lock,
Evoral::Event<Evoral::Beats>(
Evoral::Event<Temporal::Beats>(
Evoral::MIDI_EVENT,
Evoral::Beats::ticks_at_rate(t, source->ppqn()),
Temporal::Beats::ticks_at_rate(t, source->ppqn()),
size,
buf));
@@ -440,7 +440,7 @@ write_midi_data_to_new_files (Evoral::SMF* source, ImportStatus& status,
/* we wrote something */
const samplepos_t pos = 0;
const Evoral::Beats length_beats = Evoral::Beats::ticks_at_rate(t, source->ppqn());
const Temporal::Beats length_beats = Temporal::Beats::ticks_at_rate(t, source->ppqn());
BeatsSamplesConverter converter(smfs->session().tempo_map(), pos);
smfs->update_length(pos + converter.to(length_beats.round_up_to_beat()));
smfs->mark_streaming_write_completed (source_lock);

View File

@@ -31,7 +31,7 @@ Legatize::~Legatize ()
Command*
Legatize::operator()(boost::shared_ptr<ARDOUR::MidiModel> model,
Evoral::Beats position,
Temporal::Beats position,
std::vector<Legatize::Notes>& seqs)
{
MidiModel::NoteDiffCommand* cmd = new MidiModel::NoteDiffCommand(model, name ());
@@ -43,10 +43,10 @@ Legatize::operator()(boost::shared_ptr<ARDOUR::MidiModel> model,
break;
}
const Evoral::Beats new_end = (*next)->time() - Evoral::Beats::tick();
const Temporal::Beats new_end = (*next)->time() - Temporal::Beats::tick();
if ((*i)->end_time() > new_end ||
(!_shrink_only && (*i)->end_time() < new_end)) {
const Evoral::Beats new_length(new_end - (*i)->time());
const Temporal::Beats new_length(new_end - (*i)->time());
cmd->change((*i), MidiModel::NoteDiffCommand::Length, new_length);
}

View File

@@ -29,7 +29,7 @@
#include "pbd/error.h"
#include "pbd/failed_constructor.h"
#include "timecode/time.h"
#include "temporal/time.h"
#include "ardour/ltc_file_reader.h"
#include "pbd/i18n.h"

View File

@@ -815,16 +815,16 @@ LuaAPI::Vamp::process (const std::vector<float*>& d, ::Vamp::RealTime rt)
return _plugin->process (bufs, rt);
}
boost::shared_ptr<Evoral::Note<Evoral::Beats> >
LuaAPI::new_noteptr (uint8_t chan, Evoral::Beats beat_time, Evoral::Beats length, uint8_t note, uint8_t velocity)
boost::shared_ptr<Evoral::Note<Temporal::Beats> >
LuaAPI::new_noteptr (uint8_t chan, Temporal::Beats beat_time, Temporal::Beats length, uint8_t note, uint8_t velocity)
{
return boost::shared_ptr<Evoral::Note<Evoral::Beats> > (new Evoral::Note<Evoral::Beats>(chan, beat_time, length, note, velocity));
return boost::shared_ptr<Evoral::Note<Temporal::Beats> > (new Evoral::Note<Temporal::Beats>(chan, beat_time, length, note, velocity));
}
std::list<boost::shared_ptr<Evoral::Note<Evoral::Beats> > >
std::list<boost::shared_ptr<Evoral::Note<Temporal::Beats> > >
LuaAPI::note_list (boost::shared_ptr<MidiModel> mm)
{
typedef boost::shared_ptr<Evoral::Note<Evoral::Beats> > NotePtr;
typedef boost::shared_ptr<Evoral::Note<Temporal::Beats> > NotePtr;
std::list<NotePtr> note_ptr_list;

View File

@@ -18,7 +18,7 @@
#include <glibmm.h>
#include "timecode/bbt_time.h"
#include "temporal/bbt_time.h"
#include "pbd/stateful_diff_command.h"
#include "pbd/openuri.h"
#include "evoral/Control.hpp"
@@ -206,7 +206,7 @@ CLASSKEYS(PBD::Configuration);
CLASSKEYS(PBD::PropertyChange);
CLASSKEYS(PBD::StatefulDestructible);
CLASSKEYS(Evoral::Beats);
CLASSKEYS(Temporal::Beats);
CLASSKEYS(Evoral::Event<samplepos_t>);
CLASSKEYS(Evoral::ControlEvent);
@@ -235,7 +235,7 @@ CLASSKEYS(boost::shared_ptr<std::list<boost::shared_ptr<ARDOUR::Route> > >);
CLASSKEYS(boost::shared_ptr<ARDOUR::AudioRegion>);
CLASSKEYS(boost::shared_ptr<ARDOUR::AudioSource>);
CLASSKEYS(boost::shared_ptr<ARDOUR::Automatable>);
CLASSKEYS(boost::shared_ptr<ARDOUR::AutomatableSequence<Evoral::Beats> >);
CLASSKEYS(boost::shared_ptr<ARDOUR::AutomatableSequence<Temporal::Beats> >);
CLASSKEYS(boost::shared_ptr<ARDOUR::AutomationList>);
CLASSKEYS(boost::shared_ptr<ARDOUR::FileSource>);
CLASSKEYS(boost::shared_ptr<ARDOUR::MidiModel>);
@@ -247,8 +247,8 @@ CLASSKEYS(boost::shared_ptr<ARDOUR::Processor>);
CLASSKEYS(boost::shared_ptr<ARDOUR::Readable>);
CLASSKEYS(boost::shared_ptr<ARDOUR::Region>);
CLASSKEYS(boost::shared_ptr<Evoral::ControlList>);
CLASSKEYS(boost::shared_ptr<Evoral::Note<Evoral::Beats> >);
CLASSKEYS(boost::shared_ptr<Evoral::Sequence<Evoral::Beats> >);
CLASSKEYS(boost::shared_ptr<Evoral::Note<Temporal::Beats> >);
CLASSKEYS(boost::shared_ptr<Evoral::Sequence<Temporal::Beats> >);
CLASSKEYS(boost::shared_ptr<ARDOUR::Playlist>);
CLASSKEYS(boost::shared_ptr<ARDOUR::Route>);
@@ -516,9 +516,9 @@ LuaBindings::common (lua_State* L)
.addFunction ("time", (samplepos_t (Evoral::Event<samplepos_t>::*)())&Evoral::Event<samplepos_t>::time)
.endClass ()
.beginClass <Evoral::Beats> ("Beats")
.beginClass <Temporal::Beats> ("Beats")
.addConstructor <void (*) (double)> ()
.addFunction ("to_double", &Evoral::Beats::to_double)
.addFunction ("to_double", &Temporal::Beats::to_double)
.endClass ()
.beginClass <Evoral::Parameter> ("Parameter")
@@ -570,16 +570,16 @@ LuaBindings::common (lua_State* L)
.addData ("to", &Evoral::Range<samplepos_t>::to)
.endClass ()
.deriveWSPtrClass <Evoral::Sequence<Evoral::Beats>, Evoral::ControlSet> ("Sequence")
.deriveWSPtrClass <Evoral::Sequence<Temporal::Beats>, Evoral::ControlSet> ("Sequence")
.endClass ()
.beginWSPtrClass <Evoral::Note<Evoral::Beats> > ("NotePtr")
.addFunction ("time", &Evoral::Note<Evoral::Beats>::time)
.addFunction ("note", &Evoral::Note<Evoral::Beats>::note)
.addFunction ("velocity", &Evoral::Note<Evoral::Beats>::velocity)
.addFunction ("off_velocity", &Evoral::Note<Evoral::Beats>::off_velocity)
.addFunction ("length", &Evoral::Note<Evoral::Beats>::length)
.addFunction ("channel", &Evoral::Note<Evoral::Beats>::channel)
.beginWSPtrClass <Evoral::Note<Temporal::Beats> > ("NotePtr")
.addFunction ("time", &Evoral::Note<Temporal::Beats>::time)
.addFunction ("note", &Evoral::Note<Temporal::Beats>::note)
.addFunction ("velocity", &Evoral::Note<Temporal::Beats>::velocity)
.addFunction ("off_velocity", &Evoral::Note<Temporal::Beats>::off_velocity)
.addFunction ("length", &Evoral::Note<Temporal::Beats>::length)
.addFunction ("channel", &Evoral::Note<Temporal::Beats>::channel)
.endClass ()
/* libevoral enums */
@@ -1267,11 +1267,11 @@ LuaBindings::common (lua_State* L)
//.addFunction ("what_can_be_automated", &Automatable::what_can_be_automated)
.endClass ()
.deriveWSPtrClass <AutomatableSequence<Evoral::Beats>, Automatable> ("AutomatableSequence")
.addCast<Evoral::Sequence<Evoral::Beats> > ("to_sequence")
.deriveWSPtrClass <AutomatableSequence<Temporal::Beats>, Automatable> ("AutomatableSequence")
.addCast<Evoral::Sequence<Temporal::Beats> > ("to_sequence")
.endClass ()
.deriveWSPtrClass <MidiModel, AutomatableSequence<Evoral::Beats> > ("MidiModel")
.deriveWSPtrClass <MidiModel, AutomatableSequence<Temporal::Beats> > ("MidiModel")
.addFunction ("apply_command", (void (MidiModel::*)(Session*, Command*))&MidiModel::apply_command)
.addFunction ("new_note_diff_command", &MidiModel::new_note_diff_command)
.endClass ()
@@ -1583,14 +1583,14 @@ LuaBindings::common (lua_State* L)
.addVoidPtrConstructor<std::list<boost::shared_ptr <AutomationControl> > > ()
.endClass ()
.beginStdList <boost::shared_ptr<Evoral::Note<Evoral::Beats> > > ("NotePtrList")
.beginStdList <boost::shared_ptr<Evoral::Note<Temporal::Beats> > > ("NotePtrList")
.endClass ()
.beginConstStdList <Evoral::ControlEvent*> ("EventList")
.endClass ()
#if 0 // depends on Evoal:: Note, Beats see note_fixer.h
// typedef Evoral::Note<Evoral::Beats> Note;
// typedef Evoral::Note<Temporal::Beats> Note;
// std::set< boost::weak_ptr<Note> >
.beginStdSet <boost::weak_ptr<Note> > ("WeakNoteSet")
.endClass ()

View File

@@ -561,7 +561,7 @@ MidiModel::NoteDiffCommand::unmarshal_change (XMLNode *xml_change)
}
int old_val;
Evoral::Beats old_time;
Temporal::Beats old_time;
if ((change.property == StartTime || change.property == Length) &&
xml_change->get_property ("old", old_time)) {
change.old_value = old_time;
@@ -573,7 +573,7 @@ MidiModel::NoteDiffCommand::unmarshal_change (XMLNode *xml_change)
}
int new_val;
Evoral::Beats new_time;
Temporal::Beats new_time;
if ((change.property == StartTime || change.property == Length) &&
xml_change->get_property ("new", new_time)) {
change.new_value = new_time;
@@ -1113,7 +1113,7 @@ MidiModel::PatchChangeDiffCommand::unmarshal_patch_change (XMLNode* n)
assert(false);
}
Evoral::Beats time = Evoral::Beats();
Temporal::Beats time = Temporal::Beats();
if (!n->get_property ("time", time)) {
// warning??
}
@@ -1832,7 +1832,7 @@ MidiModel::transpose (NoteDiffCommand* c, const NotePtr note_ptr, int semitones)
void
MidiModel::control_list_marked_dirty ()
{
AutomatableSequence<Evoral::Beats>::control_list_marked_dirty ();
AutomatableSequence<Temporal::Beats>::control_list_marked_dirty ();
ContentsChanged (); /* EMIT SIGNAL */
}

View File

@@ -152,7 +152,7 @@ MidiPlaylistSource::write_unlocked (const Lock&,
}
void
MidiPlaylistSource::append_event_beats(const Glib::Threads::Mutex::Lock& /*lock*/, const Evoral::Event<Evoral::Beats>& /*ev*/)
MidiPlaylistSource::append_event_beats(const Glib::Threads::Mutex::Lock& /*lock*/, const Evoral::Event<Temporal::Beats>& /*ev*/)
{
fatal << string_compose (_("programming error: %1"), "MidiPlaylistSource::append_event_beats() called - should be impossible") << endmsg;
abort(); /*NOTREACHED*/

View File

@@ -28,7 +28,7 @@
#include <glibmm/fileutils.h>
#include <glibmm/miscutils.h>
#include "evoral/Beats.hpp"
#include "temporal/beats.h"
#include "pbd/xml++.h"
#include "pbd/basename.h"
@@ -144,8 +144,8 @@ MidiRegion::do_export (string path) const
path, false, _session.sample_rate()));
BeatsSamplesConverter bfc (_session.tempo_map(), _position);
Evoral::Beats const bbegin = bfc.from (_start);
Evoral::Beats const bend = bfc.from (_start + _length);
Temporal::Beats const bbegin = bfc.from (_start);
Temporal::Beats const bend = bfc.from (_start + _length);
{
/* Lock our source since we'll be reading from it. write_to() will
@@ -180,8 +180,8 @@ boost::shared_ptr<MidiRegion>
MidiRegion::clone (boost::shared_ptr<MidiSource> newsrc) const
{
BeatsSamplesConverter bfc (_session.tempo_map(), _position);
Evoral::Beats const bbegin = bfc.from (_start);
Evoral::Beats const bend = bfc.from (_start + _length);
Temporal::Beats const bbegin = bfc.from (_start);
Temporal::Beats const bend = bfc.from (_start + _length);
{
boost::shared_ptr<MidiSource> ms = midi_source(0);
@@ -647,7 +647,7 @@ MidiRegion::fix_negative_start ()
_ignore_shift = true;
model()->insert_silence_at_start (Evoral::Beats (- _start_beats));
model()->insert_silence_at_start (Temporal::Beats (- _start_beats));
_start = 0;
_start_beats = 0.0;

View File

@@ -206,7 +206,7 @@ MidiSource::midi_read (const Lock& lm,
}
// Find appropriate model iterator
Evoral::Sequence<Evoral::Beats>::const_iterator& i = cursor.iter;
Evoral::Sequence<Temporal::Beats>::const_iterator& i = cursor.iter;
const bool linear_read = cursor.last_read_end != 0 && start == cursor.last_read_end;
if (!linear_read || !i.valid()) {
/* Cached iterator is invalid, search for the first event past start.
@@ -256,7 +256,7 @@ MidiSource::midi_read (const Lock& lm,
sure if this is necessary here (channels are mapped later in
buffers anyway), but it preserves existing behaviour without
destroying events in the model during read. */
Evoral::Event<Evoral::Beats> ev(*i, true);
Evoral::Event<Temporal::Beats> ev(*i, true);
if (!filter->filter(ev.buffer(), ev.size())) {
dst.write(time_samples, ev.event_type(), ev.size(), ev.buffer());
} else {
@@ -356,8 +356,8 @@ MidiSource::mark_streaming_write_started (const Lock& lock)
void
MidiSource::mark_midi_streaming_write_completed (const Lock& lock,
Evoral::Sequence<Evoral::Beats>::StuckNoteOption option,
Evoral::Beats end)
Evoral::Sequence<Temporal::Beats>::StuckNoteOption option,
Temporal::Beats end)
{
if (_model) {
_model->end_write (option, end);
@@ -378,11 +378,11 @@ MidiSource::mark_midi_streaming_write_completed (const Lock&
void
MidiSource::mark_streaming_write_completed (const Lock& lock)
{
mark_midi_streaming_write_completed (lock, Evoral::Sequence<Evoral::Beats>::DeleteStuckNotes);
mark_midi_streaming_write_completed (lock, Evoral::Sequence<Temporal::Beats>::DeleteStuckNotes);
}
int
MidiSource::export_write_to (const Lock& lock, boost::shared_ptr<MidiSource> newsrc, Evoral::Beats begin, Evoral::Beats end)
MidiSource::export_write_to (const Lock& lock, boost::shared_ptr<MidiSource> newsrc, Temporal::Beats begin, Temporal::Beats end)
{
Lock newsrc_lock (newsrc->mutex ());
@@ -399,7 +399,7 @@ MidiSource::export_write_to (const Lock& lock, boost::shared_ptr<MidiSource> new
}
int
MidiSource::write_to (const Lock& lock, boost::shared_ptr<MidiSource> newsrc, Evoral::Beats begin, Evoral::Beats end)
MidiSource::write_to (const Lock& lock, boost::shared_ptr<MidiSource> newsrc, Temporal::Beats begin, Temporal::Beats end)
{
Lock newsrc_lock (newsrc->mutex ());
@@ -408,7 +408,7 @@ MidiSource::write_to (const Lock& lock, boost::shared_ptr<MidiSource> newsrc, Ev
newsrc->copy_automation_state_from (this);
if (_model) {
if (begin == Evoral::Beats() && end == std::numeric_limits<Evoral::Beats>::max()) {
if (begin == Temporal::Beats() && end == std::numeric_limits<Temporal::Beats>::max()) {
_model->write_to (newsrc, newsrc_lock);
} else {
_model->write_section_to (newsrc, newsrc_lock, begin, end);
@@ -422,7 +422,7 @@ MidiSource::write_to (const Lock& lock, boost::shared_ptr<MidiSource> newsrc, Ev
/* force a reload of the model if the range is partial */
if (begin != Evoral::Beats() || end != std::numeric_limits<Evoral::Beats>::max()) {
if (begin != Temporal::Beats() || end != std::numeric_limits<Temporal::Beats>::max()) {
newsrc->load_model (newsrc_lock, true);
} else {
newsrc->set_model (newsrc_lock, _model);

View File

@@ -168,7 +168,7 @@ MidiStateTracker::resolve_notes (Evoral::EventSink<samplepos_t> &dst, samplepos_
}
void
MidiStateTracker::resolve_notes (MidiSource& src, const MidiSource::Lock& lock, Evoral::Beats time)
MidiStateTracker::resolve_notes (MidiSource& src, const MidiSource::Lock& lock, Temporal::Beats time)
{
DEBUG_TRACE (PBD::DEBUG::MidiTrackers, string_compose ("%1 MS-resolve notes @ %2 on = %3\n", this, time, _on));
@@ -181,7 +181,7 @@ MidiStateTracker::resolve_notes (MidiSource& src, const MidiSource::Lock& lock,
for (int channel = 0; channel < 16; ++channel) {
for (int note = 0; note < 128; ++note) {
while (_active_notes[note + 128 * channel]) {
Evoral::Event<Evoral::Beats> ev (Evoral::MIDI_EVENT, time, 3, 0, true);
Evoral::Event<Temporal::Beats> ev (Evoral::MIDI_EVENT, time, 3, 0, true);
ev.set_type (MIDI_CMD_NOTE_OFF);
ev.set_channel (channel);
ev.set_note (note);
@@ -191,7 +191,7 @@ MidiStateTracker::resolve_notes (MidiSource& src, const MidiSource::Lock& lock,
this, (int) note, (int) channel, time));
_active_notes[note + 128 * channel]--;
/* don't stack events up at the same time */
time += Evoral::Beats::tick();
time += Temporal::Beats::tick();
}
}
}

View File

@@ -108,7 +108,7 @@ MidiStretch::run (boost::shared_ptr<Region> r, Progress*)
new_model->append(ev, Evoral::next_event_id());
}
new_model->end_write (Evoral::Sequence<Evoral::Beats>::DeleteStuckNotes);
new_model->end_write (Evoral::Sequence<Temporal::Beats>::DeleteStuckNotes);
new_model->set_edited (true);
new_src->copy_interpolation_from (src);

View File

@@ -380,7 +380,7 @@ MidiTrack::non_realtime_locate (samplepos_t pos)
boost::shared_ptr<Evoral::Control> rcontrol;
if ((tcontrol = boost::dynamic_pointer_cast<MidiTrack::MidiControl>(c->second)) &&
(rcontrol = region->control(tcontrol->parameter()))) {
const Evoral::Beats pos_beats = bfc.from(pos - origin);
const Temporal::Beats pos_beats = bfc.from(pos - origin);
if (rcontrol->list()->size() > 0) {
tcontrol->set_value(rcontrol->list()->eval(pos_beats.to_double()), Controllable::NoGroup);
}

View File

@@ -126,7 +126,7 @@ NoteFixer::emit(Evoral::EventSink<samplepos_t>& dst,
}
NoteFixer::Event*
NoteFixer::copy_event(samplepos_t time, const Evoral::Event<Evoral::Beats>& ev)
NoteFixer::copy_event(samplepos_t time, const Evoral::Event<Temporal::Beats>& ev)
{
return new Event(ev.event_type(), time, ev.size(), ev.buffer());
}

View File

@@ -111,8 +111,8 @@ swing_position (double pos, double grid, double swing, double offset)
Command*
Quantize::operator () (boost::shared_ptr<MidiModel> model,
Evoral::Beats position,
std::vector<Evoral::Sequence<Evoral::Beats>::Notes>& seqs)
Temporal::Beats position,
std::vector<Evoral::Sequence<Temporal::Beats>::Notes>& seqs)
{
/* TODO: Rewrite this to be precise with fixed point? */
@@ -125,7 +125,7 @@ Quantize::operator () (boost::shared_ptr<MidiModel> model,
MidiModel::NoteDiffCommand* cmd = new MidiModel::NoteDiffCommand (model, "quantize");
for (std::vector<Evoral::Sequence<Evoral::Beats>::Notes>::iterator s = seqs.begin(); s != seqs.end(); ++s) {
for (std::vector<Evoral::Sequence<Temporal::Beats>::Notes>::iterator s = seqs.begin(); s != seqs.end(); ++s) {
for (Evoral::Sequence<MidiModel::TimeType>::Notes::iterator i = (*s).begin(); i != (*s).end(); ++i) {
@@ -167,10 +167,10 @@ Quantize::operator () (boost::shared_ptr<MidiModel> model,
delta = new_end - (*i)->end_time().to_double();
if (fabs (delta) >= _threshold) {
Evoral::Beats new_dur(new_end - new_start);
Temporal::Beats new_dur(new_end - new_start);
if (!new_dur) {
new_dur = Evoral::Beats(_end_grid);
new_dur = Temporal::Beats(_end_grid);
}
cmd->change ((*i), MidiModel::NoteDiffCommand::Length, new_dur);

View File

@@ -18,7 +18,7 @@
*/
#include "timecode/time.h"
#include "temporal/time.h"
#include "ardour/audioengine.h"
#include "ardour/audio_port.h"

View File

@@ -35,7 +35,7 @@
#include "pbd/timersub.h"
#include "pbd/stacktrace.h"
#include "timecode/time.h"
#include "temporal/time.h"
#include "ardour/audio_track.h"
#include "ardour/audioengine.h"

View File

@@ -1254,7 +1254,7 @@ Session::state (bool full_state, snapshot_t snapshot_type)
if (!ms->model()) {
ms->load_model (lm);
}
if (ms->write_to (lm, newsrc, Evoral::Beats(), std::numeric_limits<Evoral::Beats>::max())) {
if (ms->write_to (lm, newsrc, Temporal::Beats(), std::numeric_limits<Temporal::Beats>::max())) {
error << string_compose (_("Session-Save: Failed to copy MIDI Source '%1' for snapshot"), ancestor_name) << endmsg;
} else {
if (snapshot_type == SnapshotKeep) {

View File

@@ -284,7 +284,7 @@ SMFSource::read_unlocked (const Lock& lock,
/* Note that we add on the source start time (in session samples) here so that ev_sample_time
is in session samples.
*/
const samplepos_t ev_sample_time = converter.to(Evoral::Beats::ticks_at_rate(time, ppqn())) + source_start;
const samplepos_t ev_sample_time = converter.to(Temporal::Beats::ticks_at_rate(time, ppqn())) + source_start;
if (loop_range) {
loop_range->squish (ev_sample_time);
@@ -393,7 +393,7 @@ SMFSource::write_unlocked (const Lock& lock,
/** Append an event with a timestamp in beats */
void
SMFSource::append_event_beats (const Glib::Threads::Mutex::Lock& lock,
const Evoral::Event<Evoral::Beats>& ev)
const Evoral::Event<Temporal::Beats>& ev)
{
if (!_writing || ev.size() == 0) {
return;
@@ -405,9 +405,9 @@ SMFSource::append_event_beats (const Glib::Threads::Mutex::Lock& lock,
for (size_t i = 0; i < ev.size(); ++i) printf("%X ", ev.buffer()[i]); printf("\n");
#endif
Evoral::Beats time = ev.time();
Temporal::Beats time = ev.time();
if (time < _last_ev_time_beats) {
const Evoral::Beats difference = _last_ev_time_beats - time;
const Temporal::Beats difference = _last_ev_time_beats - time;
if (difference.to_double() / (double)ppqn() < 1.0) {
/* Close enough. This problem occurs because Sequence is not
actually ordered due to fuzzy time comparison. I'm pretty sure
@@ -437,7 +437,7 @@ SMFSource::append_event_beats (const Glib::Threads::Mutex::Lock& lock,
_length_beats = max(_length_beats, time);
const Evoral::Beats delta_time_beats = time - _last_ev_time_beats;
const Temporal::Beats delta_time_beats = time - _last_ev_time_beats;
const uint32_t delta_time_ticks = delta_time_beats.to_ticks(ppqn());
Evoral::SMF::append_event_delta(delta_time_ticks, ev.size(), ev.buffer(), event_id);
@@ -467,7 +467,7 @@ SMFSource::append_event_samples (const Glib::Threads::Mutex::Lock& lock,
}
BeatsSamplesConverter converter(_session.tempo_map(), position);
const Evoral::Beats ev_time_beats = converter.from(ev.time());
const Temporal::Beats ev_time_beats = converter.from(ev.time());
Evoral::event_id_t event_id;
if (ev.id() < 0) {
@@ -477,7 +477,7 @@ SMFSource::append_event_samples (const Glib::Threads::Mutex::Lock& lock,
}
if (_model) {
const Evoral::Event<Evoral::Beats> beat_ev (ev.event_type(),
const Evoral::Event<Temporal::Beats> beat_ev (ev.event_type(),
ev_time_beats,
ev.size(),
const_cast<uint8_t*>(ev.buffer()));
@@ -486,8 +486,8 @@ SMFSource::append_event_samples (const Glib::Threads::Mutex::Lock& lock,
_length_beats = max(_length_beats, ev_time_beats);
const Evoral::Beats last_time_beats = converter.from (_last_ev_time_samples);
const Evoral::Beats delta_time_beats = ev_time_beats - last_time_beats;
const Temporal::Beats last_time_beats = converter.from (_last_ev_time_samples);
const Temporal::Beats delta_time_beats = ev_time_beats - last_time_beats;
const uint32_t delta_time_ticks = delta_time_beats.to_ticks(ppqn());
Evoral::SMF::append_event_delta(delta_time_ticks, ev.size(), ev.buffer(), event_id);
@@ -532,18 +532,18 @@ SMFSource::mark_streaming_midi_write_started (const Lock& lock, NoteMode mode)
MidiSource::mark_streaming_midi_write_started (lock, mode);
Evoral::SMF::begin_write ();
_last_ev_time_beats = Evoral::Beats();
_last_ev_time_beats = Temporal::Beats();
_last_ev_time_samples = 0;
}
void
SMFSource::mark_streaming_write_completed (const Lock& lock)
{
mark_midi_streaming_write_completed (lock, Evoral::Sequence<Evoral::Beats>::DeleteStuckNotes);
mark_midi_streaming_write_completed (lock, Evoral::Sequence<Temporal::Beats>::DeleteStuckNotes);
}
void
SMFSource::mark_midi_streaming_write_completed (const Lock& lm, Evoral::Sequence<Evoral::Beats>::StuckNoteOption stuck_notes_option, Evoral::Beats when)
SMFSource::mark_midi_streaming_write_completed (const Lock& lm, Evoral::Sequence<Temporal::Beats>::StuckNoteOption stuck_notes_option, Temporal::Beats when)
{
MidiSource::mark_midi_streaming_write_completed (lm, stuck_notes_option, when);
@@ -601,8 +601,8 @@ SMFSource::safe_midi_file_extension (const string& file)
}
static bool compare_eventlist (
const std::pair< const Evoral::Event<Evoral::Beats>*, gint >& a,
const std::pair< const Evoral::Event<Evoral::Beats>*, gint >& b) {
const std::pair< const Evoral::Event<Temporal::Beats>*, gint >& a,
const std::pair< const Evoral::Event<Temporal::Beats>*, gint >& b) {
return ( a.first->time() < b.first->time() );
}
@@ -633,7 +633,7 @@ SMFSource::load_model (const Glib::Threads::Mutex::Lock& lock, bool force_reload
Evoral::SMF::seek_to_start();
uint64_t time = 0; /* in SMF ticks */
Evoral::Event<Evoral::Beats> ev;
Evoral::Event<Temporal::Beats> ev;
uint32_t scratch_size = 0; // keep track of scratch and minimize reallocs
@@ -645,7 +645,7 @@ SMFSource::load_model (const Glib::Threads::Mutex::Lock& lock, bool force_reload
bool have_event_id;
// TODO simplify event allocation
std::list< std::pair< Evoral::Event<Evoral::Beats>*, gint > > eventlist;
std::list< std::pair< Evoral::Event<Temporal::Beats>*, gint > > eventlist;
for (unsigned i = 1; i <= num_tracks(); ++i) {
if (seek_to_track(i)) continue;
@@ -671,7 +671,7 @@ SMFSource::load_model (const Glib::Threads::Mutex::Lock& lock, bool force_reload
if (!have_event_id) {
event_id = Evoral::next_event_id();
}
const Evoral::Beats event_time = Evoral::Beats::ticks_at_rate(time, ppqn());
const Temporal::Beats event_time = Temporal::Beats::ticks_at_rate(time, ppqn());
#ifndef NDEBUG
std::string ss;
@@ -686,7 +686,7 @@ SMFSource::load_model (const Glib::Threads::Mutex::Lock& lock, bool force_reload
#endif
eventlist.push_back(make_pair (
new Evoral::Event<Evoral::Beats> (
new Evoral::Event<Temporal::Beats> (
Evoral::MIDI_EVENT, event_time,
size, buf, true)
, event_id));
@@ -705,7 +705,7 @@ SMFSource::load_model (const Glib::Threads::Mutex::Lock& lock, bool force_reload
eventlist.sort(compare_eventlist);
std::list< std::pair< Evoral::Event<Evoral::Beats>*, gint > >::iterator it;
std::list< std::pair< Evoral::Event<Temporal::Beats>*, gint > >::iterator it;
for (it=eventlist.begin(); it!=eventlist.end(); ++it) {
_model->append (*it->first, it->second);
delete it->first;
@@ -715,7 +715,7 @@ SMFSource::load_model (const Glib::Threads::Mutex::Lock& lock, bool force_reload
// _playback_buf->dump (cerr);
// cerr << "----------------\n";
_model->end_write (Evoral::Sequence<Evoral::Beats>::ResolveStuckNotes, _length_beats);
_model->end_write (Evoral::Sequence<Temporal::Beats>::ResolveStuckNotes, _length_beats);
_model->set_edited (false);
invalidate(lock);

View File

@@ -27,7 +27,7 @@
#include "pbd/enumwriter.h"
#include "pbd/xml++.h"
#include "evoral/Beats.hpp"
#include "temporal/beats.h"
#include "ardour/debug.h"
#include "ardour/lmath.h"
@@ -2423,7 +2423,7 @@ TempoMap::sample_at_quarter_note (const double quarter_note) const
* @param beat The BBT (meter-based) beat.
* @return The quarter-note position of the supplied BBT (meter-based) beat.
*
* a quarter-note may be compared with and assigned to Evoral::Beats.
* a quarter-note may be compared with and assigned to Temporal::Beats.
*
*/
double
@@ -2438,7 +2438,7 @@ TempoMap::quarter_note_at_beat (const double beat) const
* @param quarter_note The position in quarter-note beats.
* @return the BBT (meter-based) beat position of the supplied quarter-note beats.
*
* a quarter-note is the musical unit of Evoral::Beats.
* a quarter-note is the musical unit of Temporal::Beats.
*
*/
double
@@ -4821,7 +4821,7 @@ TempoMap::remove_time (samplepos_t where, samplecnt_t amount)
* pos can be -ve, if required.
*/
samplepos_t
TempoMap::samplepos_plus_qn (samplepos_t sample, Evoral::Beats beats) const
TempoMap::samplepos_plus_qn (samplepos_t sample, Temporal::Beats beats) const
{
Glib::Threads::RWLock::ReaderLock lm (lock);
const double sample_qn = pulse_at_minute_locked (_metrics, minute_at_sample (sample)) * 4.0;
@@ -4856,12 +4856,12 @@ TempoMap::samplepos_plus_bbt (samplepos_t pos, BBT_Time op) const
/** Count the number of beats that are equivalent to distance when going forward,
starting at pos.
*/
Evoral::Beats
Temporal::Beats
TempoMap::framewalk_to_qn (samplepos_t pos, samplecnt_t distance) const
{
Glib::Threads::RWLock::ReaderLock lm (lock);
return Evoral::Beats (quarter_notes_between_samples_locked (_metrics, pos, pos + distance));
return Temporal::Beats (quarter_notes_between_samples_locked (_metrics, pos, pos + distance));
}
struct bbtcmp {

View File

@@ -2,7 +2,7 @@
#include <sigc++/sigc++.h>
#include <cppunit/TestFixture.h>
#include <cppunit/extensions/HelperMacros.h>
#include "timecode/bbt_time.h"
#include "temporal/bbt_time.h"
class BBTTest : public CppUnit::TestFixture
{

View File

@@ -1,6 +1,6 @@
#include "samplepos_minus_beats_test.h"
#include "ardour/tempo.h"
#include "timecode/bbt_time.h"
#include "temporal/bbt_time.h"
CPPUNIT_TEST_SUITE_REGISTRATION (FrameposMinusBeatsTest);

View File

@@ -1,6 +1,6 @@
#include "samplepos_plus_beats_test.h"
#include "ardour/tempo.h"
#include "timecode/bbt_time.h"
#include "temporal/bbt_time.h"
CPPUNIT_TEST_SUITE_REGISTRATION (FrameposPlusBeatsTest);
@@ -25,11 +25,11 @@ FrameposPlusBeatsTest::singleTempoTest ()
map.replace_tempo (map.first_tempo(), tempo, 0.0, 0, AudioTime);
/* Add 1 beat to beat 3 of the first bar */
samplepos_t r = map.samplepos_plus_qn (samples_per_beat * 2, Evoral::Beats(1));
samplepos_t r = map.samplepos_plus_qn (samples_per_beat * 2, Temporal::Beats(1));
CPPUNIT_ASSERT_EQUAL (samplepos_t (samples_per_beat * 3), r);
/* Add 4 beats to a -ve sample of 1 beat before zero */
r = map.samplepos_plus_qn (-samples_per_beat * 1, Evoral::Beats(4));
r = map.samplepos_plus_qn (-samples_per_beat * 1, Temporal::Beats(4));
CPPUNIT_ASSERT_EQUAL (samplepos_t (samples_per_beat * 3), r);
}
@@ -70,15 +70,15 @@ FrameposPlusBeatsTest::doubleTempoTest ()
/* Now some tests */
/* Add 1 beat to 1|2 */
samplepos_t r = map.samplepos_plus_qn (24e3, Evoral::Beats(1));
samplepos_t r = map.samplepos_plus_qn (24e3, Temporal::Beats(1));
CPPUNIT_ASSERT_EQUAL (samplepos_t (48e3), r);
/* Add 2 beats to 3|4 (over the tempo change) */
r = map.samplepos_plus_qn (264e3, Evoral::Beats(2));
r = map.samplepos_plus_qn (264e3, Temporal::Beats(2));
CPPUNIT_ASSERT_EQUAL (samplepos_t (264e3 + 24e3 + 12e3), r);
/* Add 2.5 beats to 3|3|960 (over the tempo change) */
r = map.samplepos_plus_qn (264e3 - 12e3, Evoral::Beats(2.5));
r = map.samplepos_plus_qn (264e3 - 12e3, Temporal::Beats(2.5));
CPPUNIT_ASSERT_EQUAL (samplepos_t (264e3 + 24e3 + 12e3), r);
}
@@ -125,15 +125,15 @@ FrameposPlusBeatsTest::doubleTempoWithMeterTest ()
/* Now some tests */
/* Add 1 beat to 1|2 */
samplepos_t r = map.samplepos_plus_qn (24e3, Evoral::Beats(1));
samplepos_t r = map.samplepos_plus_qn (24e3, Temporal::Beats(1));
CPPUNIT_ASSERT_EQUAL (samplepos_t (48e3), r);
/* Add 2 beats to 3|4 (over the tempo change) */
r = map.samplepos_plus_qn (264e3, Evoral::Beats(2));
r = map.samplepos_plus_qn (264e3, Temporal::Beats(2));
CPPUNIT_ASSERT_EQUAL (samplepos_t (264e3 + 24e3 + 12e3), r);
/* Add 2.5 beats to 3|3|960 (over the tempo change) */
r = map.samplepos_plus_qn (264e3 - 12e3, Evoral::Beats(2.5));
r = map.samplepos_plus_qn (264e3 - 12e3, Temporal::Beats(2.5));
CPPUNIT_ASSERT_EQUAL (samplepos_t (264e3 + 24e3 + 12e3), r);
}
@@ -181,15 +181,15 @@ FrameposPlusBeatsTest::doubleTempoWithComplexMeterTest ()
/* Now some tests */
/* Add 1 beat to 1|2 */
samplepos_t r = map.samplepos_plus_qn (24e3, Evoral::Beats(1));
samplepos_t r = map.samplepos_plus_qn (24e3, Temporal::Beats(1));
CPPUNIT_ASSERT_EQUAL (samplepos_t (48e3), r);
/* Add 2 beats to 5|1 (over the tempo change) */
r = map.samplepos_plus_qn (264e3, Evoral::Beats(2));
r = map.samplepos_plus_qn (264e3, Temporal::Beats(2));
CPPUNIT_ASSERT_EQUAL (samplepos_t (264e3 + 24e3 + 12e3), r);
/* Add 2.5 beats to 4|5 (over the tempo change) */
r = map.samplepos_plus_qn (264e3 - 12e3, Evoral::Beats(2.5));
r = map.samplepos_plus_qn (264e3 - 12e3, Temporal::Beats(2.5));
CPPUNIT_ASSERT_EQUAL (samplepos_t (264e3 + 24e3 + 12e3), r);
}

View File

@@ -1,6 +1,6 @@
#include "samplewalk_to_beats_test.h"
#include "ardour/tempo.h"
#include "timecode/bbt_time.h"
#include "temporal/bbt_time.h"
CPPUNIT_TEST_SUITE_REGISTRATION (FramewalkToBeatsTest);

View File

@@ -121,7 +121,7 @@ Transform::Operation::eval(Context& ctx) const
Command*
Transform::operator()(boost::shared_ptr<MidiModel> model,
Evoral::Beats position,
Temporal::Beats position,
std::vector<Notes>& seqs)
{
typedef MidiModel::NoteDiffCommand Command;

View File

@@ -27,7 +27,7 @@ Transpose::Transpose(int semitones)
Command*
Transpose::operator()(boost::shared_ptr<MidiModel> model,
Evoral::Beats position,
Temporal::Beats position,
std::vector<Notes>& seqs)
{
typedef MidiModel::NoteDiffCommand Command;

View File

@@ -394,7 +394,7 @@ def build(bld):
'OSX','BOOST','CURL','TAGLIB','VAMPSDK','VAMPHOSTSDK','RUBBERBAND']
obj.use = ['libpbd','libmidipp','libevoral',
'libaudiographer',
'libtimecode',
'libtemporal',
'liblua',
]
if bld.env['build_target'] != 'mingw':
@@ -478,7 +478,7 @@ def build(bld):
source = avx_sources,
cxxflags = avx_cxxflags,
includes = [ '.' ],
use = [ 'libtimecode', 'libpbd', 'libevoral', 'liblua' ],
use = [ 'libtemporal', 'libpbd', 'libevoral', 'liblua' ],
uselib = [ 'GLIBMM', 'XML' ],
target = 'sse_avx_functions')

View File

@@ -85,7 +85,7 @@ def build(bld):
audiographer.name = 'libaudiographer'
audiographer.target = 'audiographer'
audiographer.export_includes = ['.', './src']
audiographer.includes = ['.', './src','../ardour','../timecode','../evoral']
audiographer.includes = ['.', './src','../ardour','../temporal','../evoral']
audiographer.uselib = 'GLIB GLIBMM GTHREAD SAMPLERATE SNDFILE FFTW3F VAMPSDK VAMPHOSTSDK XML'
audiographer.use = 'libpbd'
audiographer.vnum = AUDIOGRAPHER_LIB_VERSION

View File

@@ -18,8 +18,8 @@
#include <glib.h>
#include "temporal/beats.h"
#include "evoral/Event.hpp"
#include "evoral/Beats.hpp"
namespace Evoral {
@@ -162,7 +162,7 @@ Event<Timestamp>::set (const uint8_t* buf, uint32_t size, Timestamp t)
#endif // EVORAL_EVENT_ALLOC
template class Event<Evoral::Beats>;
template class Event<Temporal::Beats>;
template class Event<double>;
template class Event<int64_t>;

View File

@@ -24,7 +24,7 @@
#include "evoral/Note.hpp"
#endif
#include "evoral/Beats.hpp"
#include "temporal/beats.h"
namespace Evoral {
@@ -90,7 +90,7 @@ Note<Time>::set_id (event_id_t id)
_off_event.set_id (id);
}
template class Note<Evoral::Beats>;
template class Note<Temporal::Beats>;
} // namespace Evoral

View File

@@ -364,6 +364,6 @@ SMF<Time>::write_var_len(uint32_t value)
return ret;
}
template class SMF<Evoral::Beats>;
template class SMF<Temporal::Beats>;
} // namespace Evoral

View File

@@ -31,7 +31,8 @@
#include "pbd/compose.h"
#include "pbd/error.h"
#include "evoral/Beats.hpp"
#include "temporal/beats.h"
#include "evoral/Control.hpp"
#include "evoral/ControlList.hpp"
#include "evoral/ControlSet.hpp"
@@ -1408,6 +1409,6 @@ Sequence<Time>::dump (ostream& str) const
str << "--- dump\n";
}
template class Sequence<Evoral::Beats>;
template class Sequence<Temporal::Beats>;
} // namespace Evoral

View File

@@ -1,4 +1,4 @@
/* This file is part of Evoral.
/*
* Copyright (C) 2008 David Robillard <http://drobilla.net>
* Copyright (C) 2000-2008 Paul Davis
*
@@ -18,6 +18,9 @@
#include <stdint.h>
#include "temporal/beats.h"
#include "temporal/types.h"
#include "evoral/TimeConverter.hpp"
#include "evoral/types.hpp"
@@ -43,8 +46,8 @@ IdentityConverter<A,B>::from(B b) const
return static_cast<A>(b);
}
template class IdentityConverter<double, framepos_t>;
template class TimeConverter<double, framepos_t>;
template class TimeConverter<Evoral::Beats, framepos_t>;
template class IdentityConverter<double, Temporal::samplepos_t>;
template class TimeConverter<double, Temporal::samplepos_t>;
template class TimeConverter<Temporal::Beats, Temporal::samplepos_t>;
} // namespace Evoral

View File

@@ -80,6 +80,7 @@ def build(bld):
libsmf.name = 'libsmf'
libsmf.target = 'smf'
libsmf.uselib = 'GLIB'
libsmf.use = [ 'libtemporal' ]
libsmf.install_path = None
if bld.env['build_target'] != 'mingw':
libsmf.cxxflags = [ '-fPIC' ]

View File

@@ -20,7 +20,7 @@
#ifndef __midipp_mmc_h_h__
#define __midipp_mmc_h_h__
#include "timecode/time.h"
#include "temporal/time.h"
#include "pbd/signals.h"
#include "pbd/ringbuffer.h"

View File

@@ -97,7 +97,7 @@ Patch::get_state (void)
node->set_property("Name", _name);
/*
typedef std::list< boost::shared_ptr< Evoral::Event<Evoral::Beats> > > PatchMidiCommands;
typedef std::list< boost::shared_ptr< Evoral::Event<Temporal::Beats> > > PatchMidiCommands;
XMLNode* commands = node->add_child("PatchMIDICommands");
for (PatchMidiCommands::const_iterator event = _patch_midi_commands.begin();
event != _patch_midi_commands.end();

View File

@@ -21,8 +21,8 @@
#include <fcntl.h>
#include <map>
#include "timecode/time.h"
#include "timecode/bbt_time.h"
#include "temporal/time.h"
#include "temporal/bbt_time.h"
#include "pbd/error.h"

View File

@@ -70,7 +70,7 @@ def build(bld):
obj.name = 'libmidipp'
obj.target = 'midipp'
obj.uselib = 'GLIBMM SIGCPP XML OSX'
obj.use = 'libpbd libevoral libtimecode'
obj.use = 'libpbd libevoral libtemporal'
obj.vnum = LIBMIDIPP_LIB_VERSION
obj.install_path = bld.env['LIBDIR']

View File

@@ -29,7 +29,7 @@
#include "ardour/types.h"
#include "ardour/presentation_info.h"
#include "timecode/time.h"
#include "temporal/time.h"
#include "control_protocol/visibility.h"

View File

@@ -28,8 +28,8 @@
#include "pbd/enumwriter.h"
#include "midi++/parser.h"
#include "timecode/time.h"
#include "timecode/bbt_time.h"
#include "temporal/time.h"
#include "temporal/bbt_time.h"
#include "ardour/async_midi_port.h"
#include "ardour/audioengine.h"

View File

@@ -28,8 +28,8 @@
#include "pbd/enumwriter.h"
#include "midi++/parser.h"
#include "timecode/time.h"
#include "timecode/bbt_time.h"
#include "temporal/time.h"
#include "temporal/bbt_time.h"
#include "ardour/amp.h"
#include "ardour/async_midi_port.h"

View File

@@ -29,8 +29,8 @@
#include "pbd/enumwriter.h"
#include "midi++/parser.h"
#include "timecode/time.h"
#include "timecode/bbt_time.h"
#include "temporal/time.h"
#include "temporal/bbt_time.h"
#include "ardour/async_midi_port.h"
#include "ardour/audioengine.h"

View File

@@ -43,7 +43,7 @@ def build(bld):
obj.name = 'libardour_push2'
obj.target = 'ardour_push2'
obj.uselib = 'CAIROMM PANGOMM USB GTKMM SIGCPP'
obj.use = 'libardour libardour_cp libgtkmm2ext libpbd libevoral libcanvas libtimecode'
obj.use = 'libardour libardour_cp libgtkmm2ext libpbd libevoral libcanvas libtemporal'
obj.install_path = os.path.join(bld.env['LIBDIR'], 'surfaces')
def shutdown():

View File

@@ -19,7 +19,7 @@
#include <cmath>
#include <cassert>
#include "timecode/bbt_time.h"
#include "temporal/bbt_time.h"
using namespace Timecode;
@@ -30,7 +30,7 @@ using namespace Timecode;
1920 has many factors, though going up to 3840 gets a couple more.
This needs to match Evoral::Beats::PPQN
This needs to match Temporal::Beats::PPQN
*/
const double BBT_Time::ticks_per_beat = 1920.0;

View File

@@ -24,7 +24,7 @@
#include <iomanip>
#include <exception>
#include "timecode/visibility.h"
#include "temporal/visibility.h"
namespace Timecode {

View File

@@ -16,8 +16,8 @@
* 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef EVORAL_BEATS_HPP
#define EVORAL_BEATS_HPP
#ifndef TEMPORAL_BEATS_HPP
#define TEMPORAL_BEATS_HPP
#include <float.h>
#include <math.h>
@@ -27,14 +27,14 @@
#include <iostream>
#include <limits>
#include "evoral/visibility.h"
#include "temporal/visibility.h"
namespace Evoral {
namespace Temporal {
/** Musical time in beats. */
class /*LIBEVORAL_API*/ Beats {
class /*LIBTEMPORAL_API*/ Beats {
public:
LIBEVORAL_API static const int32_t PPQN = 1920;
LIBTEMPORAL_API static const int32_t PPQN = 1920;
Beats() : _beats(0), _ticks(0) {}
@@ -126,7 +126,7 @@ public:
return Beats(_beats, 0);
}
Beats snap_to(const Evoral::Beats& snap) const {
Beats snap_to(const Temporal::Beats& snap) const {
const double snap_time = snap.to_double();
return Beats(ceil(to_double() / snap_time) * snap_time);
}
@@ -272,7 +272,7 @@ private:
/*
TIL, several horrible hours later, that sometimes the compiler looks in the
namespace of a type (Evoral::Beats in this case) for an operator, and
namespace of a type (Temporal::Beats in this case) for an operator, and
does *NOT* look in the global namespace.
C++ is proof that hell exists and we are living in it. In any case, move
@@ -300,15 +300,15 @@ operator>>(std::istream& is, Beats& t)
namespace PBD {
namespace DEBUG {
LIBEVORAL_API extern uint64_t Beats;
LIBTEMPORAL_API extern uint64_t Beats;
}
}
namespace std {
template<>
struct numeric_limits<Evoral::Beats> {
static Evoral::Beats lowest() {
return Evoral::Beats(std::numeric_limits<int32_t>::min(),
struct numeric_limits<Temporal::Beats> {
static Temporal::Beats lowest() {
return Temporal::Beats(std::numeric_limits<int32_t>::min(),
std::numeric_limits<int32_t>::min());
}
@@ -316,11 +316,11 @@ namespace std {
but Beats is used as both. Better to avoid providing a min at all
than a confusing one. */
static Evoral::Beats max() {
return Evoral::Beats(std::numeric_limits<int32_t>::max(),
static Temporal::Beats max() {
return Temporal::Beats(std::numeric_limits<int32_t>::max(),
std::numeric_limits<int32_t>::max());
}
};
}
#endif // EVORAL_BEATS_HPP
#endif // TEMPORAL_BEATS_HPP

View File

@@ -23,7 +23,7 @@
#include <ostream>
#include <inttypes.h>
#include "timecode/visibility.h"
#include "temporal/visibility.h"
namespace Timecode {

View File

@@ -23,7 +23,7 @@
#include <stdio.h>
#include <stdlib.h>
#include "timecode/time.h"
#include "temporal/time.h"
namespace Timecode {