| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 | 
							- //*****************************************//
 
- //  qmidiin.cpp
 
- //  by Gary Scavone, 2003-2004.
 
- //
 
- //  Simple program to test MIDI input and
 
- //  retrieval from the queue.
 
- //
 
- //*****************************************//
 
- #include <iostream>
 
- #include <cstdlib>
 
- #include <signal.h>
 
- #include "RtMidi.h"
 
- // Platform-dependent sleep routines.
 
- #if defined(__WINDOWS_MM__)
 
-   #include <windows.h>
 
-   #define SLEEP( milliseconds ) Sleep( (DWORD) milliseconds ) 
 
- #else // Unix variants
 
-   #include <unistd.h>
 
-   #define SLEEP( milliseconds ) usleep( (unsigned long) (milliseconds * 1000.0) )
 
- #endif
 
- bool done;
 
- static void finish( int /*ignore*/ ){ done = true; }
 
- void usage( void ) {
 
-   // Error function in case of incorrect command-line
 
-   // argument specifications.
 
-   std::cout << "\nusage: qmidiin <port>\n";
 
-   std::cout << "    where port = the device to use (default = 0).\n\n";
 
-   exit( 0 );
 
- }
 
- int main( int argc, char *argv[] )
 
- {
 
-   RtMidiIn *midiin = 0;
 
-   std::vector<unsigned char> message;
 
-   int nBytes, i;
 
-   double stamp;
 
-   // Minimal command-line check.
 
-   if ( argc > 2 ) usage();
 
-   // RtMidiIn constructor
 
-   try {
 
-     midiin = new RtMidiIn();
 
-   }
 
-   catch ( RtMidiError &error ) {
 
-     error.printMessage();
 
-     exit( EXIT_FAILURE );
 
-   }
 
-   // Check available ports vs. specified.
 
-   unsigned int port = 0;
 
-   unsigned int nPorts = midiin->getPortCount();
 
-   if ( argc == 2 ) port = (unsigned int) atoi( argv[1] );
 
-   if ( port >= nPorts ) {
 
-     delete midiin;
 
-     std::cout << "Invalid port specifier!\n";
 
-     usage();
 
-   }
 
-   try {
 
-     midiin->openPort( port );
 
-   }
 
-   catch ( RtMidiError &error ) {
 
-     error.printMessage();
 
-     goto cleanup;
 
-   }
 
-   // Don't ignore sysex, timing, or active sensing messages.
 
-   midiin->ignoreTypes( false, false, false );
 
-   // Install an interrupt handler function.
 
-   done = false;
 
-   (void) signal(SIGINT, finish);
 
-   // Periodically check input queue.
 
-   std::cout << "Reading MIDI from port ... quit with Ctrl-C.\n";
 
-   while ( !done ) {
 
-     stamp = midiin->getMessage( &message );
 
-     nBytes = message.size();
 
-     for ( i=0; i<nBytes; i++ )
 
-       std::cout << "Byte " << i << " = " << (int)message[i] << ", ";
 
-     if ( nBytes > 0 )
 
-       std::cout << "stamp = " << stamp << std::endl;
 
-     // Sleep for 10 milliseconds.
 
-     SLEEP( 10 );
 
-   }
 
-   // Clean up
 
-  cleanup:
 
-   delete midiin;
 
-   return 0;
 
- }
 
 
  |