midiprobe.cpp 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. // midiprobe.cpp
  2. //
  3. // Simple program to check MIDI inputs and outputs.
  4. //
  5. // by Gary Scavone, 2003-2012.
  6. #include <iostream>
  7. #include <cstdlib>
  8. #include <map>
  9. #include "RtMidi.h"
  10. int main()
  11. {
  12. // Create an api map.
  13. std::map<int, std::string> apiMap;
  14. apiMap[RtMidi::MACOSX_CORE] = "OS-X CoreMIDI";
  15. apiMap[RtMidi::WINDOWS_MM] = "Windows MultiMedia";
  16. apiMap[RtMidi::UNIX_JACK] = "Jack Client";
  17. apiMap[RtMidi::LINUX_ALSA] = "Linux ALSA";
  18. apiMap[RtMidi::RTMIDI_DUMMY] = "RtMidi Dummy";
  19. std::vector< RtMidi::Api > apis;
  20. RtMidi :: getCompiledApi( apis );
  21. std::cout << "\nCompiled APIs:\n";
  22. for ( unsigned int i=0; i<apis.size(); i++ )
  23. std::cout << " " << apiMap[ apis[i] ] << std::endl;
  24. std::cout << std::endl;
  25. for ( unsigned int i=0; i<apis.size(); i++ ){
  26. std::cout << "Probing with API " << apiMap[ apis[i] ] << std::endl;
  27. RtMidiIn *midiin = 0;
  28. RtMidiOut *midiout = 0;
  29. try {
  30. // RtMidiIn constructor ... exception possible
  31. midiin = new RtMidiIn(apis[i]);
  32. std::cout << "\nCurrent input API: " << apiMap[ midiin->getCurrentApi() ] << std::endl;
  33. // Check inputs.
  34. unsigned int nPorts = midiin->getPortCount();
  35. std::cout << "\nThere are " << nPorts << " MIDI input sources available.\n";
  36. for ( unsigned i=0; i<nPorts; i++ ) {
  37. std::string portName = midiin->getPortName(i);
  38. std::cout << " Input Port #" << i << ": " << portName << '\n';
  39. }
  40. // RtMidiOut constructor ... exception possible
  41. midiout = new RtMidiOut(apis[i]);
  42. std::cout << "\nCurrent output API: " << apiMap[ midiout->getCurrentApi() ] << std::endl;
  43. // Check outputs.
  44. nPorts = midiout->getPortCount();
  45. std::cout << "\nThere are " << nPorts << " MIDI output ports available.\n";
  46. for ( unsigned i=0; i<nPorts; i++ ) {
  47. std::string portName = midiout->getPortName(i);
  48. std::cout << " Output Port #" << i << ": " << portName << std::endl;
  49. }
  50. std::cout << std::endl;
  51. } catch ( RtMidiError &error ) {
  52. error.printMessage();
  53. }
  54. delete midiin;
  55. delete midiout;
  56. }
  57. return 0;
  58. }