triggers: return a segment descriptor
This commit is contained in:
parent
483bdd99cc
commit
9d4a1f080d
@ -43,6 +43,7 @@
|
||||
#include "ardour/midi_model.h"
|
||||
#include "ardour/midi_state_tracker.h"
|
||||
#include "ardour/processor.h"
|
||||
#include "ardour/segment_descriptor.h"
|
||||
|
||||
#include "ardour/libardour_visibility.h"
|
||||
|
||||
@ -223,6 +224,8 @@ class LIBARDOUR_API Trigger : public PBD::Stateful {
|
||||
double apparent_tempo() const { return _apparent_tempo; }
|
||||
double set_tempo (double t);
|
||||
|
||||
virtual SegmentDescriptor get_segment_descriptor () const = 0;
|
||||
|
||||
protected:
|
||||
struct UIRequests {
|
||||
std::atomic<bool> stop;
|
||||
@ -288,6 +291,8 @@ class LIBARDOUR_API AudioTrigger : public Trigger {
|
||||
|
||||
RubberBand::RubberBandStretcher* stretcher() { return (_stretcher); }
|
||||
|
||||
SegmentDescriptor get_segment_descriptor () const;
|
||||
|
||||
protected:
|
||||
void retrigger ();
|
||||
void set_usable_length ();
|
||||
@ -343,6 +348,8 @@ class LIBARDOUR_API MIDITrigger : public Trigger {
|
||||
XMLNode& get_state (void);
|
||||
int set_state (const XMLNode&, int version);
|
||||
|
||||
SegmentDescriptor get_segment_descriptor () const;
|
||||
|
||||
protected:
|
||||
void retrigger ();
|
||||
void set_usable_length ();
|
||||
|
@ -550,6 +550,17 @@ AudioTrigger::~AudioTrigger ()
|
||||
delete _stretcher;
|
||||
}
|
||||
|
||||
SegmentDescriptor
|
||||
AudioTrigger::get_segment_descriptor () const
|
||||
{
|
||||
SegmentDescriptor sd;
|
||||
|
||||
sd.set_extent (_start_offset, usable_length);
|
||||
sd.set_tempo (Temporal::Tempo (_apparent_tempo, 4));
|
||||
|
||||
return sd;
|
||||
}
|
||||
|
||||
void
|
||||
AudioTrigger::startup ()
|
||||
{
|
||||
@ -1133,6 +1144,21 @@ MIDITrigger::~MIDITrigger ()
|
||||
{
|
||||
}
|
||||
|
||||
SegmentDescriptor
|
||||
MIDITrigger::get_segment_descriptor () const
|
||||
{
|
||||
SegmentDescriptor sd;
|
||||
boost::shared_ptr<MidiRegion> mr = boost::dynamic_pointer_cast<MidiRegion> (_region);
|
||||
assert (mr);
|
||||
|
||||
sd.set_extent (Temporal::Beats(), mr->length().beats());
|
||||
|
||||
/* we don't really have tempo information for MIDI yet */
|
||||
sd.set_tempo (Temporal::Tempo (120, 4));
|
||||
|
||||
return sd;
|
||||
}
|
||||
|
||||
void
|
||||
MIDITrigger::startup ()
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user