123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146 |
- #include <iostream>
- #include <cstdlib>
- #include "RtMidi.h"
- #if defined(__WINDOWS_MM__)
- #include <windows.h>
- #define SLEEP( milliseconds ) Sleep( (DWORD) milliseconds )
- #else
- #include <unistd.h>
- #define SLEEP( milliseconds ) usleep( (unsigned long) (milliseconds * 1000.0) )
- #endif
- bool chooseMidiPort( RtMidiOut *rtmidi );
- int main( void )
- {
- RtMidiOut *midiout = 0;
- std::vector<unsigned char> message;
-
- try {
- midiout = new RtMidiOut();
- }
- catch ( RtMidiError &error ) {
- error.printMessage();
- exit( EXIT_FAILURE );
- }
-
- try {
- if ( chooseMidiPort( midiout ) == false ) goto cleanup;
- }
- catch ( RtMidiError &error ) {
- error.printMessage();
- goto cleanup;
- }
-
-
- message.push_back( 192 );
- message.push_back( 5 );
- midiout->sendMessage( &message );
- SLEEP( 500 );
- message[0] = 0xF1;
- message[1] = 60;
- midiout->sendMessage( &message );
-
- message[0] = 176;
- message[1] = 7;
- message.push_back( 100 );
- midiout->sendMessage( &message );
-
- message[0] = 144;
- message[1] = 64;
- message[2] = 90;
- midiout->sendMessage( &message );
- SLEEP( 500 );
-
- message[0] = 128;
- message[1] = 64;
- message[2] = 40;
- midiout->sendMessage( &message );
- SLEEP( 500 );
-
- message[0] = 176;
- message[1] = 7;
- message[2] = 40;
- midiout->sendMessage( &message );
- SLEEP( 500 );
-
- message[0] = 240;
- message[1] = 67;
- message[2] = 4;
- message.push_back( 3 );
- message.push_back( 2 );
- message.push_back( 247 );
- midiout->sendMessage( &message );
-
- cleanup:
- delete midiout;
- return 0;
- }
- bool chooseMidiPort( RtMidiOut *rtmidi )
- {
- std::cout << "\nWould you like to open a virtual output port? [y/N] ";
- std::string keyHit;
- std::getline( std::cin, keyHit );
- if ( keyHit == "y" ) {
- rtmidi->openVirtualPort();
- return true;
- }
- std::string portName;
- unsigned int i = 0, nPorts = rtmidi->getPortCount();
- if ( nPorts == 0 ) {
- std::cout << "No output ports available!" << std::endl;
- return false;
- }
- if ( nPorts == 1 ) {
- std::cout << "\nOpening " << rtmidi->getPortName() << std::endl;
- }
- else {
- for ( i=0; i<nPorts; i++ ) {
- portName = rtmidi->getPortName(i);
- std::cout << " Output port #" << i << ": " << portName << '\n';
- }
- do {
- std::cout << "\nChoose a port number: ";
- std::cin >> i;
- } while ( i >= nPorts );
- }
- std::cout << "\n";
- rtmidi->openPort( i );
- return true;
- }
|