midiprobe.cpp 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  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. RtMidiIn *midiin = 0;
  25. RtMidiOut *midiout = 0;
  26. try {
  27. // RtMidiIn constructor ... exception possible
  28. midiin = new RtMidiIn();
  29. std::cout << "\nCurrent input API: " << apiMap[ midiin->getCurrentApi() ] << std::endl;
  30. // Check inputs.
  31. unsigned int nPorts = midiin->getPortCount();
  32. std::cout << "\nThere are " << nPorts << " MIDI input sources available.\n";
  33. for ( unsigned i=0; i<nPorts; i++ ) {
  34. std::string portName = midiin->getPortName(i);
  35. std::cout << " Input Port #" << i+1 << ": " << portName << '\n';
  36. }
  37. // RtMidiOut constructor ... exception possible
  38. midiout = new RtMidiOut();
  39. std::cout << "\nCurrent output API: " << apiMap[ midiout->getCurrentApi() ] << std::endl;
  40. // Check outputs.
  41. nPorts = midiout->getPortCount();
  42. std::cout << "\nThere are " << nPorts << " MIDI output ports available.\n";
  43. for ( unsigned i=0; i<nPorts; i++ ) {
  44. std::string portName = midiout->getPortName(i);
  45. std::cout << " Output Port #" << i+1 << ": " << portName << std::endl;
  46. }
  47. std::cout << std::endl;
  48. } catch ( RtMidiError &error ) {
  49. error.printMessage();
  50. }
  51. delete midiin;
  52. delete midiout;
  53. return 0;
  54. }