mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-21 14:16:31 +01:00
triggerbox: change note tracker to a full state tracker, and move it up to the TriggerBox
We don't need one state tracker per trigger, one per box is more appropriate
This commit is contained in:
parent
8449d344ae
commit
f5d5ecffbb
2 changed files with 8 additions and 5 deletions
|
|
@ -494,7 +494,6 @@ class LIBARDOUR_API MIDITrigger : public Trigger {
|
||||||
|
|
||||||
private:
|
private:
|
||||||
PBD::ID data_source;
|
PBD::ID data_source;
|
||||||
MidiNoteTracker tracker;
|
|
||||||
PBD::ScopedConnection content_connection;
|
PBD::ScopedConnection content_connection;
|
||||||
|
|
||||||
Temporal::Beats final_beat;
|
Temporal::Beats final_beat;
|
||||||
|
|
@ -656,6 +655,9 @@ class LIBARDOUR_API TriggerBox : public Processor
|
||||||
ByMidiChannel
|
ByMidiChannel
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* This is null for TriggerBoxen constructed with DataType::AUDIO */
|
||||||
|
MidiStateTracker* tracker;
|
||||||
|
|
||||||
static Temporal::BBT_Offset assumed_trigger_duration () { return _assumed_trigger_duration; }
|
static Temporal::BBT_Offset assumed_trigger_duration () { return _assumed_trigger_duration; }
|
||||||
static void set_assumed_trigger_duration (Temporal::BBT_Offset const &);
|
static void set_assumed_trigger_duration (Temporal::BBT_Offset const &);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1747,7 +1747,7 @@ MIDITrigger::shutdown (BufferSet& bufs, pframes_t dest_offset)
|
||||||
{
|
{
|
||||||
Trigger::shutdown (bufs, dest_offset);
|
Trigger::shutdown (bufs, dest_offset);
|
||||||
MidiBuffer& mb (bufs.get_midi (0));
|
MidiBuffer& mb (bufs.get_midi (0));
|
||||||
tracker.resolve_notes (mb, dest_offset);
|
_box.tracker->resolve_notes (mb, dest_offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
@ -1756,7 +1756,7 @@ MIDITrigger::jump_stop (BufferSet& bufs, pframes_t dest_offset)
|
||||||
Trigger::jump_stop (bufs, dest_offset);
|
Trigger::jump_stop (bufs, dest_offset);
|
||||||
|
|
||||||
MidiBuffer& mb (bufs.get_midi (0));
|
MidiBuffer& mb (bufs.get_midi (0));
|
||||||
tracker.resolve_notes (mb, dest_offset);
|
_box.tracker->resolve_notes (mb, dest_offset);
|
||||||
|
|
||||||
retrigger ();
|
retrigger ();
|
||||||
}
|
}
|
||||||
|
|
@ -1984,7 +1984,7 @@ MIDITrigger::run (BufferSet& bufs, samplepos_t start_sample, samplepos_t end_sam
|
||||||
DEBUG_TRACE (DEBUG::Triggers, string_compose ("given et %1 TS %7 rs %8 ts %2 bs %3 ss %4 do %5, inserting %6\n", maybe_last_event_timeline_beats, timeline_samples, buffer_samples, start_sample, dest_offset, ev, transition_beats, region_start));
|
DEBUG_TRACE (DEBUG::Triggers, string_compose ("given et %1 TS %7 rs %8 ts %2 bs %3 ss %4 do %5, inserting %6\n", maybe_last_event_timeline_beats, timeline_samples, buffer_samples, start_sample, dest_offset, ev, transition_beats, region_start));
|
||||||
mb.insert_event (ev);
|
mb.insert_event (ev);
|
||||||
|
|
||||||
tracker.track (event.buffer());
|
_box.tracker->track (event.buffer());
|
||||||
|
|
||||||
last_event_beats = event.time();
|
last_event_beats = event.time();
|
||||||
last_event_timeline_beats = maybe_last_event_timeline_beats;
|
last_event_timeline_beats = maybe_last_event_timeline_beats;
|
||||||
|
|
@ -1996,7 +1996,7 @@ MIDITrigger::run (BufferSet& bufs, samplepos_t start_sample, samplepos_t end_sam
|
||||||
|
|
||||||
if (_state == Stopping) {
|
if (_state == Stopping) {
|
||||||
DEBUG_TRACE (DEBUG::Triggers, string_compose ("%1 was stopping, now stopped\n", index()));
|
DEBUG_TRACE (DEBUG::Triggers, string_compose ("%1 was stopping, now stopped\n", index()));
|
||||||
tracker.resolve_notes (mb, nframes-1);
|
_box.tracker->resolve_notes (mb, nframes-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (iter == model->end()) {
|
if (iter == model->end()) {
|
||||||
|
|
@ -2118,6 +2118,7 @@ TriggerBox::init ()
|
||||||
|
|
||||||
TriggerBox::TriggerBox (Session& s, DataType dt)
|
TriggerBox::TriggerBox (Session& s, DataType dt)
|
||||||
: Processor (s, _("TriggerBox"), Temporal::BeatTime)
|
: Processor (s, _("TriggerBox"), Temporal::BeatTime)
|
||||||
|
, tracker (dt == DataType::MIDI ? new MidiStateTracker : 0)
|
||||||
, _data_type (dt)
|
, _data_type (dt)
|
||||||
, _order (-1)
|
, _order (-1)
|
||||||
, explicit_queue (64)
|
, explicit_queue (64)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue