Exemple #1
0
MidiCommDescriptionList MidiCommOut::GetDeviceList()
{
   if (built_output_list) return out_list;

   MidiCommDescriptionList devices;

   // Add the built-in synth
   MidiCommDescription mac_synth;
   mac_synth.id = 0;
   mac_synth.name = L"Built-in MIDI Synthesizer";
   devices.push_back(mac_synth);

   // Add any external devices
   ItemCount destinations = MIDIGetNumberOfDestinations();
   for (int i = 0; i < destinations; ++i)
   {
      MIDIEndpointRef endpoint = MIDIGetDestination(i);

      CFStringRef cf_name = BuildEndpointName(endpoint);
      
      MidiCommDescription d;
      d.id = i + 1;
      d.name = WideFromMacString(cf_name);
      CFRelease(cf_name);
      
      devices.push_back(d);
   }

   built_output_list = true;
   return devices;
}
Exemple #2
0
MidiCommDescriptionList MidiCommOut::GetDeviceList()
{
   MidiCommDescriptionList devices;

   unsigned int dev_count = midiOutGetNumDevs();
   for (unsigned int i = 0; i < dev_count; ++i)
   {
      MIDIOUTCAPS dev;
      midi_check(midiOutGetDevCaps(i, &dev, sizeof(MIDIOUTCAPS)));

      MidiCommDescription d;
      d.id = i;
      d.name = dev.szPname;

      devices.push_back(d);
   }

   return devices;
}
Exemple #3
0
MidiCommDescriptionList MidiCommIn::GetDeviceList()
{
   MidiCommDescriptionList devices;

   unsigned int dev_count = midiInGetNumDevs();
   for (unsigned int i = 0; i < dev_count; ++i)
   {
      MIDIINCAPS dev;

      const static int MaxTries = 10;
      int tries = 0;
      while (tries++ < MaxTries)
      {
         try
         {
            midi_check(midiInGetDevCaps(i, &dev, sizeof(MIDIINCAPS)));
            break;
         }
         catch (MidiError ex)
         {
            // Sometimes input needs to take a quick break
            if (ex.m_error != MidiError_MM_NotEnabled) throw;
            Sleep(50);
         }
      }
      if (tries == MaxTries) throw MidiError_MM_NotEnabled;

      MidiCommDescription d;
      d.id = i;
      d.name = dev.szPname;

      devices.push_back(d);
   }

   return devices;
}
Exemple #4
0
MidiCommDescriptionList MidiCommIn::GetDeviceList()
{
   if (built_input_list) return in_list;

   MidiCommDescriptionList devices;

   ItemCount sources = MIDIGetNumberOfSources();
   for (int i = 0; i < sources; ++i)
   {
      MIDIEndpointRef endpoint = MIDIGetSource(i);
      
      CFStringRef cf_name = BuildEndpointName(endpoint);
      
      MidiCommDescription d;
      d.id = i;
      d.name = WideFromMacString(cf_name);
      CFRelease(cf_name);
      
      devices.push_back(d);
   }   

   built_input_list = true;
   return devices;
}