globally remove all trailing whitespace from ardour code base.
[ardour.git] / libs / backends / wavesaudio / waves_audiobackend.midi.cc
index 9ebcd1cc547358380cf10555177f1fff931a59ac..334fefd1b69f145aa79fc3be9cd296df13787072 100644 (file)
@@ -1,5 +1,5 @@
 /*
-    Copyright (C) 2013 Valeriy Kamyshniy
+    Copyright (C) 2014 Waves Audio Ltd.
 
     This program is free software; you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
@@ -27,16 +27,16 @@ using namespace ARDOUR;
 
 #ifdef __APPLE__
 
-const std::vector<std::string> WavesAudioBackend::__available_midi_options = boost::assign::list_of ("None") ("CoreMIDI");
+const std::vector<std::string> WavesAudioBackend::__available_midi_options = boost::assign::list_of ("CoreMIDI") ("None");
 
 #elif PLATFORM_WINDOWS
 
-const std::vector<std::string> WavesAudioBackend::__available_midi_options = boost::assign::list_of ("None") ("Multimedia Extensions");
+const std::vector<std::string> WavesAudioBackend::__available_midi_options = boost::assign::list_of ("System MIDI (MME)") ("None");
 
 #endif
 
 
-std::vector<std::string> 
+std::vector<std::string>
 WavesAudioBackend::enumerate_midi_options () const
 {
     // COMMENTED DBG LOGS */ std::cout << "WavesAudioBackend::enumerate_midi_options ()" << std::endl;
@@ -44,15 +44,15 @@ WavesAudioBackend::enumerate_midi_options () const
 }
 
 
-int 
+int
 WavesAudioBackend::set_midi_option (const std::string& option)
 {
     // COMMENTED DBG LOGS */ std::cout << "WavesAudioBackend::set_midi_option ( " << option << " )" << std::endl;
-    if (option == __available_midi_options[0]) {
+    if (option == __available_midi_options[1]) {
         _use_midi = false;
         // COMMENTED DBG LOGS */ std::cout << "\tNO MIDI system used)" << std::endl;
     }
-    else if (option == __available_midi_options[1]) {
+    else if (option == __available_midi_options[0]) {
         _use_midi = true;
         // COMMENTED DBG LOGS */ std::cout << "\tNO MIDI system used)" << std::endl;
     }
@@ -69,7 +69,7 @@ std::string
 WavesAudioBackend::midi_option () const
 {
     // COMMENTED DBG LOGS */ std::cout << "WavesAudioBackend::midi_option ():" << std::endl;
-    return * (__available_midi_options.begin () + (_use_midi?1:0));
+    return * (__available_midi_options.begin () + (_use_midi?0:1));
 }
 
 
@@ -137,7 +137,7 @@ uint32_t
 WavesAudioBackend::get_midi_event_count (void* port_buffer)
 {
     // COMMENTED FREQUENT DBG LOGS */ std::cout << "WavesAudioBackend::get_midi_event_count (): " << std::endl;
-    
+
     if (port_buffer == NULL) {
         std::cerr << "WavesAudioBackend::get_midi_event_count () : NULL in the 'port_buffer' argument!\n";
         return -1;
@@ -170,6 +170,7 @@ WavesAudioBackend::_changed_midi_devices ()
         return;
     }
 
+       _unregister_system_midi_ports ();
     _midi_device_manager.stop ();
 
     if (_midi_device_manager.start () != 0) {
@@ -181,7 +182,7 @@ WavesAudioBackend::_changed_midi_devices ()
         std::cerr << "WavesAudioBackend::_changed_midi_devices (): _register_system_midi_ports () failed!" << std::endl;
         return;
     }
-    
+
     manager.registration_callback ();
 
     if (_midi_device_manager.stream (true)) {
@@ -244,9 +245,9 @@ WavesAudioBackend::_register_system_midi_ports ()
             std::string port_name = "system_midi:" + (*it)->name () + " capture";
             WavesDataPort* port = _find_port (port_name);
             WavesMidiPort* midi_port = dynamic_cast<WavesMidiPort*> (port);
-            if (midi_port && (midi_port->type () != DataType::MIDI || 
-                midi_port->midi_device () != *it || 
-                !midi_port->is_output () || 
+            if (midi_port && (midi_port->type () != DataType::MIDI ||
+                midi_port->midi_device () != *it ||
+                !midi_port->is_output () ||
                 !midi_port->is_physical () ||
                 !midi_port->is_terminal ())) {
                 std::cerr << "WavesAudioBackend::_register_system_midi_ports (): the port [" << midi_port->name () << "] is inconsystently constructed!" << std::endl;
@@ -262,16 +263,16 @@ WavesAudioBackend::_register_system_midi_ports ()
                 }
                 ((WavesMidiPort*)port)->set_midi_device (*it);
             }
-            port->set_latency_range (lr, false); 
+            port->set_latency_range (lr, false);
         }
 
         if ((*it)->is_output ()) {
             std::string port_name = "system_midi:" + (*it)->name () + " playback";
             WavesDataPort* port = _find_port (port_name);
             WavesMidiPort* midi_port = dynamic_cast<WavesMidiPort*> (port);
-            if (midi_port && (midi_port->type () != DataType::MIDI || 
-                midi_port->midi_device () != *it || 
-                !midi_port->is_input () || 
+            if (midi_port && (midi_port->type () != DataType::MIDI ||
+                midi_port->midi_device () != *it ||
+                !midi_port->is_input () ||
                 !midi_port->is_physical () ||
                 !midi_port->is_terminal ())) {
                 std::cerr << "WavesAudioBackend::_register_system_midi_ports (): the port [" << midi_port->name () << "] is inconsystently constructed!" << std::endl;
@@ -292,7 +293,7 @@ WavesAudioBackend::_register_system_midi_ports ()
             port->set_latency_range (lr, true);
         }
     }
-    
+
     return 0;
 }
 
@@ -303,22 +304,21 @@ WavesAudioBackend::_read_midi_data_from_devices ()
     // COMMENTED FREQUENT DBG LOGS */ std::cout  << "WavesAudioBackend::_read_midi_data_from_devices ():" << std::endl;
     if (!_midi_device_manager.is_streaming ())
         return 0;
-    
+
     _midi_device_manager.do_read ();
 
     for (std::vector<WavesMidiPort*>::iterator it = _physical_midi_inputs.begin (); it != _physical_midi_inputs.end (); ++it) {
         WavesMidiDevice* midi_device = (*it)->midi_device ();
-        
+
         WavesMidiBuffer& waves_midi_buffer = (*it)->buffer ();
         waves_midi_buffer.clear ();
-        
+
         while (WavesMidiEvent *waves_midi_event = midi_device->dequeue_input_waves_midi_event ()) {
             int32_t timestamp_st = _buffer_size - (_sample_time_at_cycle_start - waves_midi_event->timestamp ());
-            
+
             if (timestamp_st < 0) {
                 timestamp_st = 0;
-            }
-            else if (timestamp_st >= (int32_t)_buffer_size) {
+            } else if (timestamp_st >= (int32_t)_buffer_size) {
                 timestamp_st = _buffer_size - 1;
             }
             waves_midi_event->set_timestamp (timestamp_st);
@@ -334,16 +334,16 @@ WavesAudioBackend::_write_midi_data_to_devices (pframes_t nframes)
 {
     if (!_midi_device_manager.is_streaming ())
         return 0;
-    
+
     for (std::vector<WavesMidiPort*>::iterator it = _physical_midi_outputs.begin (); it != _physical_midi_outputs.end (); ++it) {
-        WavesMidiDevice* midi_device = (*it)->midi_device (); 
+        WavesMidiDevice* midi_device = (*it)->midi_device ();
         WavesMidiBuffer &waves_midi_buffer = * (WavesMidiBuffer*) (*it)->get_buffer (nframes);
 
         for (WavesMidiBufferIterator it = waves_midi_buffer.begin (); it != waves_midi_buffer.end ();) {
              WavesMidiEvent* waves_midi_event = *it;
-            
+
             waves_midi_buffer.erase (it);
-            
+
             waves_midi_event->set_timestamp (_sample_time_at_cycle_start + waves_midi_event->timestamp () + nframes);
             midi_device->enqueue_output_waves_midi_event (waves_midi_event);
        }