Virtuelle MIDI Ports mit rtmidi auf MacOSX



  • Nachdem ich nach langem probieren die rtmidi hofendlich richtig eingebunden habe, habe ich auch schon das nächste Problem. Das unten angehängte Programm gibt mit anstelle von midi Signalen nur die Meldung "MidiOutDummy: This class provide no functionality." Komischerweise kommt diese Meldung nicht nur beim unten angehängte sondern auch beim rtmidi Exampleprogramm. Also ist eventuell doch noch was an der Einbindung falsch. Eventuell ist diese Meldung aber auch ganz normal und es liegt einfach an einem Programmierfehler, dass ich mit einem Programm wie z.B. Loic keine Signale empfange. Und ist es normal dass ein Mac keine echten midi Ports und man sattessen einen Virtuellen erstellen muss? Ich habe wieder mal Stundenlange herumprobiert und bin nun ziemlich ratlos wo der Fehler stecken könnte.

    Falls jemand noch gute Dokumentationen oder einige Beispielprogramme zu rtmidi kennt wäre ich auch über diese noch ziemlich froh da ich ausser der Offiziellen rtmidi Webseite keine gute Dokumentation gefunden habe.

    #define __MACOSX_CORE__
    #include <iostream>
    #include "lib/RtMidi.h"
    #include <unistd.h>
    #include <cstdlib>
    
    int main()
    {
      RtMidiOut *midiout = new RtMidiOut();
      std::vector<unsigned char> message;
      std::string VirtualPort="MIDI";
      // Open a new virtual MIDI port.
      midiout->openVirtualPort("MIDI");
      // midiout->openPort(1); // Don't work because no Port is available
    
      // Send out a series of MIDI messages.
      // Program change: 192, 5
      message.push_back( 192 );
      message.push_back( 5 );
      midiout->sendMessage( &message );
      // Control Change: 176, 7, 100 (volume)
      message[0] = 176;
      message[1] = 7;
      message.push_back( 100 );
      midiout->sendMessage( &message );
    
      // Note On: 144, 64, 90
      message[0] = 144;
      message[1] = 64;
      message[2] = 90;
      midiout->sendMessage( &message );
      usleep(3500 * 1000); // wait 3.5 seconds
      // Note Off: 128, 64, 40
      message[0] = 128;
      message[1] = 64;
      message[2] = 40;
      midiout->sendMessage( &message );
    
      // Clean up
     cleanup:
      delete midiout;
      return 0;
    }
    


  • Wo war jetzt die C++ Frage?



  • Sorry dass ich mich unverständlich ausgedrückt habe. Meine Frage ist natürlich weshalb andere Programme wie beispielsweise Logic die von meinem Programm gesendeten Noten nicht empfangen können und wie ich dieses Problem lösen kann. Auch interessiert es mich ob die komische Meldung "MidiOutDummy" etwas mit meinem Problem zutun haben könnte. Also kurz gesagt: Wo liegt der Fehler in meinem geposteten Code und wie kann ich ihn beheben.



  • Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (auch C++0x und C++11) in das Forum Rund um die Programmierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


Anmelden zum Antworten