131 for (
ssize_t i = future_stack.size() - 1; i >= 0; i--)
134 const int64 frame0 = 0;
135 if (tnote.event.
type == MidiEvent::NOTE_OFF)
138 MDEBUG (
"FLUSH: t=%d ev=%s f=%d\n", tnote.tick, tnote.event.to_string(), frame0);
141 future_stack.resize (0);
144 while (future_stack.size() && future_stack.back().tick < end_tick)
147 future_stack.pop_back();
148 const int64 frame =
transport.sample_from_tick (tnote.tick - begin_tick);
150 MDEBUG (
"POP: t=%d ev=%s f=%d\n", tnote.tick, tnote.event.to_string(), frame);
156 MDEBUG (
"THROUGH: f=%+3d ev=%s\n", mevent.frame, mevent.to_string());
157 evout.
append (mevent.frame, mevent);
161 bpm > 0 && position_->current >= 0 &&
162 generator_start_ >= 0))
165 while (position_->current >= 0 &&
166 generator_start_ + feed_->generators[position_->current].play_position() < end_tick)
170 const int64 etick = generator_start_ + cliptick;
171 if (etick < end_tick)
173 const int64 frame =
transport.sample_from_tick (etick - begin_tick);
176 evout.append_unsorted (frame, event);
177 MDEBUG (
"NOW: t=%d ev=%s f=%d\n", etick, event.to_string(), frame);
183 MDEBUG (
"FUT: t=%d ev=%s f=%d\n", etick, event.to_string(),
transport.sample_from_tick (etick - begin_tick));
187 const int64 advanced = feed_->generators[position_->current].generate (end_tick - generator_start_, qevent);
190 if (feed_->generators[position_->current].done())
192 const int64 play_point = generator_start_ + feed_->generators[position_->current].play_position();
194 position_->current = feed_->scout.advance (position_->current);
195 if (position_->current >= 0)
197 generator_start_ =
transport.current_bar_tick;
198 while (generator_start_ < play_point)
199 generator_start_ +=
transport.tick_sig.bar_ticks();
200 feed_->generators[position_->current].jumpto (0);
201 if (feed_->generators[position_->current].done())
202 position_->current = -1;
204 if (position_->current == -1)
205 generator_start_ = -1;
206 position_->next = -1;
209 if (position_->current >= 0)
210 position_->tick = feed_->generators[position_->current].clip_position();
212 position_->tick = -M52MAX;