float playback_buffer_load() const;
float capture_buffer_load() const;
- void get_playback(MidiBuffer& dst, nframes_t start, nframes_t end);
+ void get_playback(MidiBuffer& dst, framepos_t start, framepos_t end);
void set_record_enabled (bool yn);
int use_new_playlist ();
int use_copy_playlist ();
+ bool set_name (std::string const &);
+
/* stateful */
XMLNode& get_state(void);
int set_state(const XMLNode&, int version);
void monitor_input (bool);
- MidiRingBuffer<nframes_t>* playback_buffer () { return _playback_buf; }
- MidiRingBuffer<nframes_t>* capture_buffer () { return _capture_buf; }
boost::shared_ptr<SMFSource> write_source () { return _write_source; }
int set_destructive (bool yn); // doom!
return playback_mode;
}
+ /** Emitted when some MIDI data has been received for recording.
+ * First parameter is the data.
+ * Second parameter is the source that it is destined for.
+ */
+ PBD::Signal2<void, boost::shared_ptr<MidiBuffer>, boost::weak_ptr<MidiSource> > DataRecorded;
+
protected:
friend class Session;
friend class Butler;
void set_pending_overwrite(bool);
int overwrite_existing_buffers ();
- void set_block_size (nframes_t);
- int internal_playback_seek (nframes_t distance);
- int can_internal_playback_seek (nframes_t distance);
- int rename_write_sources ();
+ void set_block_size (pframes_t);
+ int internal_playback_seek (framecnt_t distance);
+ int can_internal_playback_seek (framecnt_t distance);
+ std::list<boost::shared_ptr<Source> > steal_write_sources();
void reset_write_sources (bool, bool force = false);
void non_realtime_input_change ();
- void non_realtime_locate (nframes_t location);
+ void non_realtime_locate (framepos_t location);
- static void set_readahead_frames(nframes_t frames_ahead) { midi_readahead = frames_ahead; }
+ static void set_readahead_frames (framecnt_t frames_ahead) { midi_readahead = frames_ahead; }
protected:
- int seek (nframes_t which_sample, bool complete_refill = false);
+ int seek (framepos_t which_sample, bool complete_refill = false);
protected:
friend class MidiTrack;
- int process (nframes_t transport_frame, nframes_t nframes, bool can_record, bool rec_monitors_input);
- bool commit (nframes_t nframes);
- static nframes_t midi_readahead;
+ int process (framepos_t transport_frame, pframes_t nframes, bool can_record, bool rec_monitors_input, bool& need_butler);
+ bool commit (framecnt_t nframes);
+ static framecnt_t midi_readahead;
private:
int do_refill_with_alloc();
- int read (nframes_t& start, nframes_t cnt, bool reversed);
+ int read (framepos_t& start, framecnt_t cnt, bool reversed);
void finish_capture (bool rec_monitors_input);
- void transport_stopped (struct tm&, time_t, bool abort);
- void transport_looped (nframes_t transport_frame);
+ void transport_stopped_wallclock (struct tm&, time_t, bool abort);
+ void transport_looped (framepos_t transport_frame);
- void init (Diskstream::Flag);
+ void init ();
int use_new_write_source (uint32_t n=0);
void get_input_sources ();
void set_align_style_from_io();
+ /* fixed size buffers per instance of ardour for now (non-dynamic)
+ */
+
+ void adjust_playback_buffering () {}
+ void adjust_capture_buffering () {}
+
void engage_record_enable ();
void disengage_record_enable ();
- MidiRingBuffer<nframes_t>* _playback_buf;
- MidiRingBuffer<nframes_t>* _capture_buf;
+ MidiRingBuffer<framepos_t>* _playback_buf;
+ MidiRingBuffer<framepos_t>* _capture_buf;
MidiPort* _source_port;
boost::shared_ptr<SMFSource> _write_source;
- nframes_t _last_flush_frame;
+ framepos_t _last_flush_frame;
NoteMode _note_mode;
volatile gint _frames_written_to_ringbuffer;
volatile gint _frames_read_from_ringbuffer;