#include "pbd/signals.h"
#include "pbd/stacktrace.h"
-#include <jack/weakjack.h>
-#include <jack/jack.h>
-#include <jack/transport.h>
-#include <jack/thread.h>
+#include "midi++/mmc.h"
#include "ardour/ardour.h"
-
#include "ardour/data_type.h"
#include "ardour/session_handle.h"
#include "ardour/types.h"
int discover_backends();
std::vector<const AudioBackendInfo*> available_backends() const;
std::string current_backend_name () const;
- int set_backend (const std::string&, const std::string& arg1, const std::string& arg2);
+ boost::shared_ptr<AudioBackend> set_backend (const std::string&, const std::string& arg1, const std::string& arg2);
+ boost::shared_ptr<AudioBackend> current_backend() const { return _backend; }
+ bool setup_required () const;
ProcessThread* main_thread() const { return _main_thread; }
void set_session (Session *);
void remove_session (); // not a replacement for SessionHandle::session_going_away()
-
+ Session* session() const { return _session; }
+
class NoBackendAvailable : public std::exception {
public:
virtual const char *what() const throw() { return "could not connect to engine backend"; }
PBD::Signal1<int, pframes_t> Freewheel;
PBD::Signal0<void> Xrun;
-
-#ifdef HAVE_JACK_SESSION
- PBD::Signal1<void,jack_session_event_t *> JackSessionEvent;
-#endif
-
/* this signal is emitted if the sample rate changes */
PBD::Signal1<void, framecnt_t> SampleRateChanged;
PBD::Signal0<void> Running;
PBD::Signal0<void> Stopped;
- /* these two are emitted as we create backends that
- can actually be used to do stuff (e.g. register ports)
- */
-
- PBD::Signal0<void> BackendAvailable;
- PBD::Signal0<void> BackendRemoved;
-
static AudioEngine* instance() { return _instance; }
static void destroy();
void died ();
/* sets up the process callback thread */
static void thread_init_callback (void *);
+ MIDI::MachineControl& mmc() { return _mmc; }
+
private:
AudioEngine ();
gain_t session_removal_gain;
gain_t session_removal_gain_step;
bool _running;
- bool _has_run;
- mutable framecnt_t _buffer_size;
- std::map<DataType,size_t> _raw_buffer_sizes;
- mutable framecnt_t _frame_rate;
+ bool _freewheeling;
/// number of frames between each check for changes in monitor input
framecnt_t monitor_check_interval;
/// time of the last monitor check in frames
framecnt_t last_monitor_check;
/// the number of frames processed since start() was called
framecnt_t _processed_frames;
- bool _freewheeling;
bool _pre_freewheel_mmc_enabled;
- int _usecs_per_cycle;
- bool port_remove_in_progress;
Glib::Threads::Thread* m_meter_thread;
ProcessThread* _main_thread;
+ MIDI::MachineControl _mmc;
void meter_thread ();
void start_metering_thread ();