/*! \mainpage The RtMidi Tutorial
OS: | Audio API: | Preprocessor Definition: | Library or Framework: | Example Compiler Statement: |
Linux | ALSA Sequencer | __LINUX_ALSASEQ__ | asound, pthread | g++ -Wall -D__LINUX_ALSASEQ__ -o midiinfo midiinfo.cpp RtMidi.cpp -lasound -lpthread |
Macintosh OS X | CoreAudio | __MACOSX_CORE__ | pthread, stdc++, CoreAudio | g++ -Wall -D__MACOSX_CORE__ -o midiinfo midiinfo.cpp RtMidi.cpp -framework CoreMidi -lpthread |
Irix | MD | __IRIX_MD__ | md, pthread | CC -Wall -D__IRIX_MD__ -o midiinfo midiinfo.cpp RtMidi.cpp -laudio -lpthread |
Windows | Multimedia Library | __WINDOWS_MM__ | winmm.lib, multithreaded | compiler specific |
The example compiler statements above could be used to compile the probe.cpp example file, assuming that midiinfo.cpp, RtMidi.h, RtError.h, and RtMidi.cpp all exist in the same directory.
\section debug Debugging
If you are having problems getting RtMidi to run on your system, try passing the preprocessor definition __RTMIDI_DEBUG__ to the compiler (or uncomment the definition at the bottom of RtMidi.h). A variety of warning messages will be displayed which may help in determining the problem. Also try using the programs included in the test directory. The program midiinfo displays the queried capabilities of all MIDI ports found.
\section apinotes API Notes
RtMidi is designed to provide a common API across the various supported operating systems and audio libraries. Despite that, some issues should be mentioned with regard to each.
\subsection linux Linux:
RtMidi for Linux was developed using the Fedora distribution. A decision was made to not include support for the OSS API because the OSS API provides such limited functionality and because ALSA support is now incorporated in the Linux kernel. RtMidi uses the ALSA sequencer API, which allows for virtual software input and output ports.
\subsection macosx Macintosh OS X (CoreAudio):
The Apple CoreMidi API allows for the establishment of virtual input and output ports to which other software applications can connect.
\subsection irix Irix (SGI):
The Irix version of RtMidi was written and tested on an SGI Indy running Irix version 6.5.4 and the MD audio library.
\subsection windowsds Windows (Multimedia Library):
The Windows Multimedia library MIDI calls used in RtMidi do not make use of streaming functionality. RtMidi was originally developed with Visual C++ version 6.0.
\section acknowledge Acknowledgements
Many thanks to Pedro Lopez-Cabanillas for his help with the ALSA sequencer API!
\section license License
RtMidi: realtime MIDI i/o C++ classes
Copyright (c) 2003-2005 Gary P. Scavone
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation files
(the "Software"), to deal in the Software without restriction,
including without limitation the rights to use, copy, modify, merge,
publish, distribute, sublicense, and/or sell copies of the Software,
and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
Any person wishing to distribute modifications to the Software is
requested to send the modifications to the original developer so that
they can be incorporated into the canonical version.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/