class LIBARDOUR_API Auditioner : public Track
{
- public:
+public:
Auditioner (Session&);
~Auditioner ();
int init ();
int connect ();
+ bool auditioning() const;
void audition_region (boost::shared_ptr<Region>);
-
- void seek_to_sample (sampleoffset_t pos) { if (_seek_sample < 0 && !_seeking) { _seek_sample = pos; }}
- void seek_to_percent (float const pos) { if (_seek_sample < 0 && !_seeking) { _seek_sample = floorf(length * pos / 100.0); }}
-
int play_audition (samplecnt_t nframes);
+ void cancel_audition ();
- MonitorState monitoring_state () const;
+ void seek_to_sample (sampleoffset_t pos);
+ void seek_to_percent (float const pos);
+ sampleoffset_t seek_sample() const { return _seeking ? _seek_sample : -1;}
+ void seek_response(sampleoffset_t pos);
- void cancel_audition () {
- g_atomic_int_set (&_auditioning, 0);
- }
+ MonitorState monitoring_state () const;
- bool auditioning() const { return g_atomic_int_get (&_auditioning); }
bool needs_monitor() const { return via_monitor; }
virtual ChanCount input_streams () const;
- sampleoffset_t seek_sample() const { return _seeking ? _seek_sample : -1;}
- void seek_response(sampleoffset_t pos) {
- _seek_complete = true;
- if (_seeking) { current_sample = pos; _seek_complete = true;}
- }
-
PBD::Signal2<void, ARDOUR::samplecnt_t, ARDOUR::samplecnt_t> AuditionProgress;
/* Track */
void freeze_me (InterThreadInfo&) {}
void unfreeze () {}
- boost::shared_ptr<Region> bounce (InterThreadInfo&)
- { return boost::shared_ptr<Region> (); }
+ boost::shared_ptr<Region> bounce (InterThreadInfo&) {
+ return boost::shared_ptr<Region> ();
+ }
- boost::shared_ptr<Region> bounce_range (samplepos_t, samplepos_t, InterThreadInfo&, boost::shared_ptr<Processor>, bool)
- { return boost::shared_ptr<Region> (); }
+ boost::shared_ptr<Region> bounce_range (samplepos_t, samplepos_t, InterThreadInfo&, boost::shared_ptr<Processor>, bool) {
+ return boost::shared_ptr<Region> ();
+ }
- int export_stuff (BufferSet&, samplepos_t, samplecnt_t, boost::shared_ptr<Processor>, bool, bool, bool)
- { return -1; }
+ int export_stuff (BufferSet&, samplepos_t, samplecnt_t, boost::shared_ptr<Processor>, bool, bool, bool) { return -1; }
- private:
+private:
boost::shared_ptr<AudioRegion> the_region;
boost::shared_ptr<MidiRegion> midi_region;
samplepos_t current_sample;
return 0;
}
-
DataType
Auditioner::data_type () const {
if (_midi_audition) {
}
}
+void
+Auditioner::cancel_audition () {
+ g_atomic_int_set (&_auditioning, 0);
+}
+
+bool
+Auditioner::auditioning() const {
+ return g_atomic_int_get (&_auditioning);
+}
+
+void
+Auditioner::seek_to_sample (sampleoffset_t pos) {
+ if (_seek_sample < 0 && !_seeking) {
+ _seek_sample = pos;
+ }
+}
+
+void
+Auditioner::seek_to_percent (float const pos) {
+ if (_seek_sample < 0 && !_seeking) {
+ _seek_sample = floorf(length * pos / 100.0);
+ }
+}
+
+void
+Auditioner::seek_response (sampleoffset_t pos) {
+ /* called from the butler thread */
+ _seek_complete = true;
+ if (_seeking) {
+ current_sample = pos;
+ _seek_complete = true;
+ }
+}
+
+
void
Auditioner::output_changed (IOChange change, void* /*src*/)
{