summaryrefslogtreecommitdiff
path: root/libs/backends/alsa/alsa_audiobackend.h
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2014-06-12 21:35:25 +0200
committerRobin Gareus <robin@gareus.org>2014-06-13 11:47:51 +0200
commitda912f7ed41249af2262cb11b6332bf5bd8d9907 (patch)
treea635a059f83b180064d10a5b6e551897f716d40b /libs/backends/alsa/alsa_audiobackend.h
parentbe7da2e9526c394b14d1b84129c400bc0dc0f96d (diff)
add AudioEngine API to configure individual MIDI devices
Diffstat (limited to 'libs/backends/alsa/alsa_audiobackend.h')
-rw-r--r--libs/backends/alsa/alsa_audiobackend.h36
1 files changed, 30 insertions, 6 deletions
diff --git a/libs/backends/alsa/alsa_audiobackend.h b/libs/backends/alsa/alsa_audiobackend.h
index 1f6c3d3400..e0d1f114c3 100644
--- a/libs/backends/alsa/alsa_audiobackend.h
+++ b/libs/backends/alsa/alsa_audiobackend.h
@@ -178,6 +178,8 @@ class AlsaAudioBackend : public AudioBackend {
int set_output_channels (uint32_t);
int set_systemic_input_latency (uint32_t);
int set_systemic_output_latency (uint32_t);
+ int set_systemic_midi_input_latency (std::string const, uint32_t);
+ int set_systemic_midi_output_latency (std::string const, uint32_t);
/* Retrieving parameters */
std::string device_name () const;
@@ -188,6 +190,10 @@ class AlsaAudioBackend : public AudioBackend {
uint32_t output_channels () const;
uint32_t systemic_input_latency () const;
uint32_t systemic_output_latency () const;
+ uint32_t systemic_midi_input_latency (std::string const) const;
+ uint32_t systemic_midi_output_latency (std::string const) const;
+
+ bool can_set_systemic_midi_latencies () const { return true; }
/* External control app */
std::string control_app_name () const { return std::string (); }
@@ -198,6 +204,10 @@ class AlsaAudioBackend : public AudioBackend {
int set_midi_option (const std::string&);
std::string midi_option () const;
+ std::vector<DeviceStatus> enumerate_midi_devices () const;
+ int set_midi_device_enabled (std::string const, bool);
+ bool midi_device_enabled (std::string const) const;
+
/* State Control */
protected:
int _start (bool for_latency_measurement);
@@ -287,10 +297,10 @@ class AlsaAudioBackend : public AudioBackend {
bool _run; /* keep going or stop, ardour thread */
bool _active; /* is running, process thread */
bool _freewheeling;
+ bool _measure_latency;
- void enumerate_midi_devices (std::vector<std::string> &) const;
std::string _audio_device;
- std::string _midi_device;
+ std::string _midi_driver_option;
/* audio device reservation */
ARDOUR::SystemExec *_device_reservation;
@@ -300,10 +310,10 @@ class AlsaAudioBackend : public AudioBackend {
void release_device();
bool _reservation_succeeded;
+ /* audio settings */
float _samplerate;
size_t _samples_per_period;
size_t _periods_per_cycle;
- float _dsp_load;
static size_t _max_buffer_size;
uint32_t _n_inputs;
@@ -311,11 +321,25 @@ class AlsaAudioBackend : public AudioBackend {
uint32_t _systemic_audio_input_latency;
uint32_t _systemic_audio_output_latency;
- uint32_t _systemic_midi_input_latency;
- uint32_t _systemic_midi_output_latency;
- uint64_t _processed_samples;
+ /* midi settings */
+ struct AlsaMidiDeviceInfo {
+ bool enabled;
+ uint32_t systemic_input_latency;
+ uint32_t systemic_output_latency;
+ AlsaMidiDeviceInfo()
+ : enabled (true)
+ , systemic_input_latency (0)
+ , systemic_output_latency (0)
+ {}
+ };
+
+ mutable std::map<std::string, struct AlsaMidiDeviceInfo *> _midi_devices;
+ struct AlsaMidiDeviceInfo * midi_device_info(std::string const) const;
+ /* processing */
+ float _dsp_load;
+ uint64_t _processed_samples;
pthread_t _main_thread;
/* process threads */