summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
Diffstat (limited to 'doc')
-rw-r--r--doc/Makefile474
-rw-r--r--doc/Makefile.am33
-rw-r--r--doc/Makefile.in474
-rw-r--r--doc/doxygen/footer.html2
-rw-r--r--doc/doxygen/tutorial.txt59
-rw-r--r--doc/html/RtMidi_8h.html12
-rw-r--r--doc/html/RtMidi_8h_source.html600
-rw-r--r--doc/html/annotated.html2
-rw-r--r--doc/html/classMidiApi-members.html2
-rw-r--r--doc/html/classMidiApi.html2
-rw-r--r--doc/html/classMidiInAlsa-members.html2
-rw-r--r--doc/html/classMidiInAlsa.html2
-rw-r--r--doc/html/classMidiInApi-members.html2
-rw-r--r--doc/html/classMidiInApi.html2
-rw-r--r--doc/html/classMidiInCore-members.html2
-rw-r--r--doc/html/classMidiInCore.html2
-rw-r--r--doc/html/classMidiInJack-members.html2
-rw-r--r--doc/html/classMidiInJack.html2
-rw-r--r--doc/html/classMidiInWinMM-members.html2
-rw-r--r--doc/html/classMidiInWinMM.html2
-rw-r--r--doc/html/classMidiOutAlsa-members.html2
-rw-r--r--doc/html/classMidiOutAlsa.html2
-rw-r--r--doc/html/classMidiOutApi-members.html2
-rw-r--r--doc/html/classMidiOutApi.html2
-rw-r--r--doc/html/classMidiOutCore-members.html2
-rw-r--r--doc/html/classMidiOutCore.html2
-rw-r--r--doc/html/classMidiOutJack-members.html2
-rw-r--r--doc/html/classMidiOutJack.html2
-rw-r--r--doc/html/classMidiOutWinMM-members.html2
-rw-r--r--doc/html/classMidiOutWinMM.html2
-rw-r--r--doc/html/classRtMidi-members.html4
-rw-r--r--doc/html/classRtMidi.html28
-rw-r--r--doc/html/classRtMidiError-members.html2
-rw-r--r--doc/html/classRtMidiError.html2
-rw-r--r--doc/html/classRtMidiIn-members.html4
-rw-r--r--doc/html/classRtMidiIn.html26
-rw-r--r--doc/html/classRtMidiOut-members.html4
-rw-r--r--doc/html/classRtMidiOut.html26
-rw-r--r--doc/html/classes.html2
-rw-r--r--doc/html/files.html2
-rw-r--r--doc/html/functions.html8
-rw-r--r--doc/html/functions_enum.html2
-rw-r--r--doc/html/functions_eval.html2
-rw-r--r--doc/html/functions_func.html8
-rw-r--r--doc/html/functions_type.html2
-rw-r--r--doc/html/globals.html4
-rw-r--r--doc/html/globals_type.html4
-rw-r--r--doc/html/hierarchy.html2
-rw-r--r--doc/html/index.html80
-rw-r--r--doc/html/structMidiInApi_1_1MidiMessage-members.html2
-rw-r--r--doc/html/structMidiInApi_1_1MidiMessage.html2
-rw-r--r--doc/html/structMidiInApi_1_1MidiQueue-members.html2
-rw-r--r--doc/html/structMidiInApi_1_1MidiQueue.html2
-rw-r--r--doc/html/structMidiInApi_1_1RtMidiInData-members.html2
-rw-r--r--doc/html/structMidiInApi_1_1RtMidiInData.html2
-rw-r--r--doc/release.txt15
56 files changed, 1469 insertions, 470 deletions
diff --git a/doc/Makefile b/doc/Makefile
new file mode 100644
index 0000000..41cdab7
--- /dev/null
+++ b/doc/Makefile
@@ -0,0 +1,474 @@
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# doc/Makefile. Generated from Makefile.in by configure.
+
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+
+
+
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/rtmidi
+pkgincludedir = $(includedir)/rtmidi
+pkglibdir = $(libdir)/rtmidi
+pkglibexecdir = $(libexecdir)/rtmidi
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = x86_64-apple-darwin13.4.0
+host_triplet = x86_64-apple-darwin13.4.0
+subdir = doc
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+LIBRARIES = $(noinst_LIBRARIES)
+AM_V_P = $(am__v_P_$(V))
+am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY))
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+am__v_at_1 =
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = ${SHELL} /Users/gary/programming/rtmidi/config/missing aclocal-1.14
+AMTAR = $${TAR-tar}
+AM_DEFAULT_VERBOSITY = 1
+AR = /usr/bin/ar
+AS = as
+AUTOCONF = ${SHELL} /Users/gary/programming/rtmidi/config/missing autoconf
+AUTOHEADER = ${SHELL} /Users/gary/programming/rtmidi/config/missing autoheader
+AUTOMAKE = ${SHELL} /Users/gary/programming/rtmidi/config/missing automake-1.14
+AWK = awk
+CC = gcc
+CCDEPMODE = depmode=gcc3
+CFLAGS = -g -O2
+CPP = gcc -E
+CPPFLAGS = -D__RTMIDI_DEBUG__ -D__MACOSX_CORE__
+CXX = g++
+CXXCPP = g++ -E
+CXXDEPMODE = depmode=gcc3
+CXXFLAGS = -g -Wall -Wextra
+CYGPATH_W = echo
+DEFS = -DPACKAGE_NAME=\"RtMidi\" -DPACKAGE_TARNAME=\"rtmidi\" -DPACKAGE_VERSION=\"2.1.1\" -DPACKAGE_STRING=\"RtMidi\ 2.1.1\" -DPACKAGE_BUGREPORT=\"gary@music.mcgill.ca\" -DPACKAGE_URL=\"\" -DPACKAGE=\"rtmidi\" -DVERSION=\"2.1.1\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -DSTDC_HEADERS=1
+DEPDIR = .deps
+DLLTOOL = false
+DOXYGEN = doxygen
+DSYMUTIL = dsymutil
+DUMPBIN =
+ECHO_C = \c
+ECHO_N =
+ECHO_T =
+EGREP = /usr/bin/grep -E
+EXEEXT =
+FGREP = /usr/bin/grep -F
+GREP = /usr/bin/grep
+GXX = yes
+INSTALL = /usr/bin/install -c
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_SCRIPT = ${INSTALL}
+INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
+LD = /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld
+LDFLAGS =
+LIBOBJS =
+LIBS = -framework CoreMIDI -framework CoreFoundation -framework CoreAudio
+LIBTOOL = $(SHELL) $(top_builddir)/libtool
+LIPO = lipo
+LN_S = ln -s
+LTLIBOBJS =
+MAINT =
+MAKEINFO = ${SHELL} /Users/gary/programming/rtmidi/config/missing makeinfo
+MANIFEST_TOOL = :
+MKDIR_P = ../config/install-sh -c -d
+NM = /usr/bin/nm
+NMEDIT = nmedit
+OBJDUMP = false
+OBJEXT = o
+OTOOL = otool
+OTOOL64 = :
+PACKAGE = rtmidi
+PACKAGE_BUGREPORT = gary@music.mcgill.ca
+PACKAGE_NAME = RtMidi
+PACKAGE_STRING = RtMidi 2.1.1
+PACKAGE_TARNAME = rtmidi
+PACKAGE_URL =
+PACKAGE_VERSION = 2.1.1
+PATH_SEPARATOR = :
+RANLIB = ranlib
+SED = /usr/bin/sed
+SET_MAKE =
+SHELL = /bin/sh
+SO_VERSION = 3:0:0
+STRIP = strip
+VERSION = 2.1.1
+abs_builddir = /Users/gary/programming/rtmidi/doc
+abs_srcdir = /Users/gary/programming/rtmidi/doc
+abs_top_builddir = /Users/gary/programming/rtmidi
+abs_top_srcdir = /Users/gary/programming/rtmidi
+ac_ct_AR = ar
+ac_ct_CC = gcc
+ac_ct_CXX = g++
+ac_ct_DUMPBIN =
+am__include = include
+am__leading_dot = .
+am__quote =
+am__tar = $${TAR-tar} chof - "$$tardir"
+am__untar = $${TAR-tar} xf -
+api = -D__MACOSX_CORE__
+bindir = ${exec_prefix}/bin
+build = x86_64-apple-darwin13.4.0
+build_alias =
+build_cpu = x86_64
+build_os = darwin13.4.0
+build_vendor = apple
+builddir = .
+cppflag = -D__RTMIDI_DEBUG__
+cxxflag = -Wall -Wextra
+datadir = ${datarootdir}
+datarootdir = ${prefix}/share
+docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
+dvidir = ${docdir}
+exec_prefix = ${prefix}
+host = x86_64-apple-darwin13.4.0
+host_alias =
+host_cpu = x86_64
+host_os = darwin13.4.0
+host_vendor = apple
+htmldir = ${docdir}
+includedir = ${prefix}/include
+infodir = ${datarootdir}/info
+install_sh = ${SHELL} /Users/gary/programming/rtmidi/config/install-sh
+libdir = ${exec_prefix}/lib
+libexecdir = ${exec_prefix}/libexec
+libflags = -dynamiclib -o librtmidi.$(RELEASE).dylib
+localedir = ${datarootdir}/locale
+localstatedir = ${prefix}/var
+mandir = ${datarootdir}/man
+mkdir_p = $(MKDIR_P)
+noinst_LIBRARIES =
+object_path = Debug
+oldincludedir = /usr/include
+pdfdir = ${docdir}
+prefix = /usr/local
+program_transform_name = s,x,x,
+psdir = ${docdir}
+req =
+sbindir = ${exec_prefix}/sbin
+sharedlib = librtmidi.dylib
+sharedname = librtmidi.$(RELEASE).dylib
+sharedstatedir = ${prefix}/com
+srcdir = .
+sysconfdir = ${prefix}/etc
+target_alias =
+top_build_prefix = ../
+top_builddir = ..
+top_srcdir = ..
+MAINTAINERCLEANFILES = Makefile.in
+CLEANFILES = doxygen-build.stamp
+DOX = Doxyfile
+EXTRA_DIST = html
+INSTIMAGES = html/doxygen.png
+DOC_STAMPS = doxygen-build.stamp
+DOC_DIR = $(HTML_DIR)
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign doc/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign doc/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-noinstLIBRARIES:
+ -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LIBRARIES) all-local
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+ -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-local \
+ clean-noinstLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-local
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am: html-local
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am all-local check check-am clean clean-generic \
+ clean-libtool clean-local clean-noinstLIBRARIES cscopelist-am \
+ ctags-am distclean distclean-generic distclean-libtool \
+ distclean-local distdir dvi dvi-am html html-am html-local \
+ info info-am install install-am install-data install-data-am \
+ install-dvi install-dvi-am install-exec install-exec-am \
+ install-html install-html-am install-info install-info-am \
+ install-man install-pdf install-pdf-am install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
+ ps ps-am tags-am uninstall uninstall-am
+
+
+all-local: doxygen-build.stamp
+
+doxygen-build.stamp: doxygen/$(DOX) $(top_srcdir)/RtMidi.h $(top_srcdir)/rtmidi_c.h
+ @echo '*** Running doxygen ***'
+ cd doxygen; $(DOXYGEN) $(DOX)
+ touch doxygen-build.stamp
+
+clean-local:
+ rm -f *~ *.bak $(DOC_STAMPS) || true
+ if test -d html; then rm -fr html; fi
+ if test -d latex; then rm -fr latex; fi
+ if test -d man; then rm -fr man; fi
+
+distclean-local: clean
+ rm -f *.stamp || true
+ if test -d html; then rm -rf html; fi
+
+html-local: $(DOC_STAMPS)
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/doc/Makefile.am b/doc/Makefile.am
new file mode 100644
index 0000000..b670116
--- /dev/null
+++ b/doc/Makefile.am
@@ -0,0 +1,33 @@
+
+MAINTAINERCLEANFILES=Makefile.in
+
+CLEANFILES=doxygen-build.stamp
+
+DOX=Doxyfile
+
+EXTRA_DIST=html
+
+INSTIMAGES=html/doxygen.png
+
+DOC_STAMPS=doxygen-build.stamp
+
+DOC_DIR=$(HTML_DIR)
+
+all-local: doxygen-build.stamp
+
+doxygen-build.stamp: doxygen/$(DOX) $(top_srcdir)/RtMidi.h $(top_srcdir)/rtmidi_c.h
+ @echo '*** Running doxygen ***'
+ cd doxygen; $(DOXYGEN) $(DOX)
+ touch doxygen-build.stamp
+
+clean-local:
+ rm -f *~ *.bak $(DOC_STAMPS) || true
+ if test -d html; then rm -fr html; fi
+ if test -d latex; then rm -fr latex; fi
+ if test -d man; then rm -fr man; fi
+
+distclean-local: clean
+ rm -f *.stamp || true
+ if test -d html; then rm -rf html; fi
+
+html-local: $(DOC_STAMPS)
diff --git a/doc/Makefile.in b/doc/Makefile.in
new file mode 100644
index 0000000..c4dd58f
--- /dev/null
+++ b/doc/Makefile.in
@@ -0,0 +1,474 @@
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = doc
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+LIBRARIES = $(noinst_LIBRARIES)
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DOXYGEN = @DOXYGEN@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+GXX = @GXX@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SO_VERSION = @SO_VERSION@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+api = @api@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cppflag = @cppflag@
+cxxflag = @cxxflag@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+libflags = @libflags@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+noinst_LIBRARIES = @noinst_LIBRARIES@
+object_path = @object_path@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+req = @req@
+sbindir = @sbindir@
+sharedlib = @sharedlib@
+sharedname = @sharedname@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+MAINTAINERCLEANFILES = Makefile.in
+CLEANFILES = doxygen-build.stamp
+DOX = Doxyfile
+EXTRA_DIST = html
+INSTIMAGES = html/doxygen.png
+DOC_STAMPS = doxygen-build.stamp
+DOC_DIR = $(HTML_DIR)
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign doc/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign doc/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-noinstLIBRARIES:
+ -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LIBRARIES) all-local
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+ -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-local \
+ clean-noinstLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-local
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am: html-local
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am all-local check check-am clean clean-generic \
+ clean-libtool clean-local clean-noinstLIBRARIES cscopelist-am \
+ ctags-am distclean distclean-generic distclean-libtool \
+ distclean-local distdir dvi dvi-am html html-am html-local \
+ info info-am install install-am install-data install-data-am \
+ install-dvi install-dvi-am install-exec install-exec-am \
+ install-html install-html-am install-info install-info-am \
+ install-man install-pdf install-pdf-am install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
+ ps ps-am tags-am uninstall uninstall-am
+
+
+all-local: doxygen-build.stamp
+
+doxygen-build.stamp: doxygen/$(DOX) $(top_srcdir)/RtMidi.h $(top_srcdir)/rtmidi_c.h
+ @echo '*** Running doxygen ***'
+ cd doxygen; $(DOXYGEN) $(DOX)
+ touch doxygen-build.stamp
+
+clean-local:
+ rm -f *~ *.bak $(DOC_STAMPS) || true
+ if test -d html; then rm -fr html; fi
+ if test -d latex; then rm -fr latex; fi
+ if test -d man; then rm -fr man; fi
+
+distclean-local: clean
+ rm -f *.stamp || true
+ if test -d html; then rm -rf html; fi
+
+html-local: $(DOC_STAMPS)
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/doc/doxygen/footer.html b/doc/doxygen/footer.html
index 82ae6c6..8e9922c 100644
--- a/doc/doxygen/footer.html
+++ b/doc/doxygen/footer.html
@@ -1,7 +1,7 @@
<HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
- <td>&copy;2003-2014 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ <td>&copy;2003-2016 Gary P. Scavone, McGill University. All Rights Reserved.<br>
Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
</table>
diff --git a/doc/doxygen/tutorial.txt b/doc/doxygen/tutorial.txt
index aba7f3b..0236ece 100644
--- a/doc/doxygen/tutorial.txt
+++ b/doc/doxygen/tutorial.txt
@@ -6,24 +6,22 @@
RtMidi is a set of C++ classes (RtMidiIn, RtMidiOut and API-specific classes) that provides a common API (Application Programming Interface) for realtime MIDI input/output across Linux (ALSA & JACK), Macintosh OS X (CoreMIDI & JACK), and Windows (Multimedia Library) operating systems. RtMidi significantly simplifies the process of interacting with computer MIDI hardware and software. It was designed with the following goals:
-<UL>
- <LI>object oriented C++ design</LI>
- <LI>simple, common API across all supported platforms</LI>
- <LI>only one header and one source file for easy inclusion in programming projects</LI>
- <LI>MIDI device enumeration</LI>
-</UL>
+- object oriented C++ design
+- simple, common API across all supported platforms
+- only one header and one source file for easy inclusion in programming projects
+- MIDI device enumeration
Where applicable, multiple API support can be compiled and a particular API specified when creating an RtAudio instance.
MIDI input and output functionality are separated into two classes, RtMidiIn and RtMidiOut. Each class instance supports only a single MIDI connection. RtMidi does not provide timing functionality (i.e., output messages are sent immediately). Input messages are timestamped with delta times in seconds (via a \c double floating point type). MIDI data is passed to the user as raw bytes using an std::vector<unsigned char>.
-\section whatsnew What's New (Version 2.1)
+\section whatsnew What's New (Version 2.1.1)
-A minor API change was made. The RtError class was renamed RtMidiError and embedded directly in RtMidi.h. Thus, all references to RtError should be renamed to RtMidiError and the RtError.h file should be deleted. The Windows Kernel Streaming support was removed because it was uncompilable and incomplete.
+There were no API changes made in the current release. The primary changes involved updates to the build system and some small bug fixes. With respect to the previous release (2.1.0), a minor API change was made. The RtError class was renamed RtMidiError and embedded directly in RtMidi.h. Thus, all references to RtError should be renamed to RtMidiError and the RtError.h file should be deleted. The Windows Kernel Streaming code was moved to a separate branch because it was uncompilable and incomplete.
\section download Download
-Latest Release (30 March 2014): <A href="http://www.music.mcgill.ca/~gary/rtmidi/release/rtmidi-2.1.0.tar.gz">Version 2.1.0</A>
+Latest Release (11 February 2016): <A href="http://www.music.mcgill.ca/~gary/rtmidi/release/rtmidi-2.1.1.tar.gz">Version 2.1.1</A>
\section start Getting Started
@@ -412,37 +410,36 @@ The Windows Multimedia library MIDI calls used in RtMidi do not make use of stre
RtMidi was originally developed with Visual C++ version 6.0 but has been tested with Virtual Studio 2010.
-The \c configure script provides support for the MinGW compiler.
-
\section acknowledge Development & Acknowledgements
RtMidi is on github (https://github.com/thestk/rtmidi). Many thanks to the developers that are helping to maintain and improve RtMidi.
In years past, the following people provided bug fixes and improvements:
-<UL>
-<LI>Sebastien Alaiwan (JACK memory leaks, Windows kernel streaming)</LI>
-<LI>Jean-Baptiste Berruchon (Windows sysex code)</LI>
-<LI>Pedro Lopez-Cabanillas (ALSA sequencer API, client naming)</LI>
-<LI>Jason Champion (MSW project file for library build)</LI>
-<LI>Eduardo Coutinho (Windows device names)</LI>
-<LI>Paul Dean (increment optimization)</LI>
-<LI>Luc Deschenaux (sysex issues)</LI>
-<LI>John Dey (OS-X timestamps)</LI>
-<LI>Christoph Eckert (ALSA sysex fixes)</LI>
-<LI>Martin Koegler (various fixes)</LI>
-<LI>Immanuel Litzroth (OS-X sysex fix)</LI>
-<LI>Jon McCormack (Snow Leopard updates)</LI>
-<LI>Axel Schmidt (client naming)</LI>
-<LI>Alexander Svetalkin (JACK MIDI)</LI>
-<LI>Casey Tucker (OS-X driver information, sysex sending)</LI>
-<LI>Bastiaan Verreijt (Windows sysex multi-buffer code)</LI>
-<LI>Dan Wilcox</LI>
-</UL>
+
+- Stephen Sinclair (Git repo and build system)
+- Atsushi Eno (C API)
+- Sebastien Alaiwan (JACK memory leaks, Windows kernel streaming)
+- Jean-Baptiste Berruchon (Windows sysex code)
+- Pedro Lopez-Cabanillas (ALSA sequencer API, client naming)
+- Jason Champion (MSW project file for library build)
+- Eduardo Coutinho (Windows device names)
+- Paul Dean (increment optimization)
+- Luc Deschenaux (sysex issues)
+- John Dey (OS-X timestamps)
+- Christoph Eckert (ALSA sysex fixes)
+- Martin Koegler (various fixes)
+- Immanuel Litzroth (OS-X sysex fix)
+- Jon McCormack (Snow Leopard updates)
+- Axel Schmidt (client naming)
+- Alexander Svetalkin (JACK MIDI)
+- Casey Tucker (OS-X driver information, sysex sending)
+- Bastiaan Verreijt (Windows sysex multi-buffer code)
+- Dan Wilcox
\section license License
RtMidi: realtime MIDI i/o C++ classes<BR>
- Copyright (c) 2003-2014 Gary P. Scavone
+ Copyright (c) 2003-2016 Gary P. Scavone
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation files
diff --git a/doc/html/RtMidi_8h.html b/doc/html/RtMidi_8h.html
index bdeed51..54768fa 100644
--- a/doc/html/RtMidi_8h.html
+++ b/doc/html/RtMidi_8h.html
@@ -69,17 +69,17 @@ Classes</h2></td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
Typedefs</h2></td></tr>
-<tr class="memitem:a530aef8e3582ad9c4042f732eea14abb"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="RtMidi_8h.html#a530aef8e3582ad9c4042f732eea14abb">RtMidiErrorCallback</a> )(<a class="el" href="classRtMidiError.html#a741314057cec5fb8c743c12f284905ee">RtMidiError::Type</a> type, const std::string &amp;errorText)</td></tr>
-<tr class="memdesc:a530aef8e3582ad9c4042f732eea14abb"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classRtMidi.html" title="An abstract base class for realtime MIDI input/output.">RtMidi</a> error callback function prototype. <a href="#a530aef8e3582ad9c4042f732eea14abb">More...</a><br/></td></tr>
-<tr class="separator:a530aef8e3582ad9c4042f732eea14abb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a36eff69cc45bba67a1f315823c7bc78d"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="RtMidi_8h.html#a36eff69cc45bba67a1f315823c7bc78d">RtMidiErrorCallback</a> )(<a class="el" href="classRtMidiError.html#a741314057cec5fb8c743c12f284905ee">RtMidiError::Type</a> type, const std::string &amp;errorText, void *userData)</td></tr>
+<tr class="memdesc:a36eff69cc45bba67a1f315823c7bc78d"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classRtMidi.html" title="An abstract base class for realtime MIDI input/output.">RtMidi</a> error callback function prototype. <a href="#a36eff69cc45bba67a1f315823c7bc78d">More...</a><br/></td></tr>
+<tr class="separator:a36eff69cc45bba67a1f315823c7bc78d"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Typedef Documentation</h2>
-<a class="anchor" id="a530aef8e3582ad9c4042f732eea14abb"></a>
+<a class="anchor" id="a36eff69cc45bba67a1f315823c7bc78d"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">typedef void(* RtMidiErrorCallback)(<a class="el" href="classRtMidiError.html#a741314057cec5fb8c743c12f284905ee">RtMidiError::Type</a> type, const std::string &amp;errorText)</td>
+ <td class="memname">typedef void(* RtMidiErrorCallback)(<a class="el" href="classRtMidiError.html#a741314057cec5fb8c743c12f284905ee">RtMidiError::Type</a> type, const std::string &amp;errorText, void *userData)</td>
</tr>
</table>
</div><div class="memdoc">
@@ -99,7 +99,7 @@ Typedefs</h2></td></tr>
</div><!-- contents -->
<HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
- <td>&copy;2003-2014 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ <td>&copy;2003-2016 Gary P. Scavone, McGill University. All Rights Reserved.<br>
Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
</table>
</BODY>
diff --git a/doc/html/RtMidi_8h_source.html b/doc/html/RtMidi_8h_source.html
index f196eef..d0ffa90 100644
--- a/doc/html/RtMidi_8h_source.html
+++ b/doc/html/RtMidi_8h_source.html
@@ -20,7 +20,7 @@
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="preprocessor">#ifndef RTMIDI_H</span></div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RTMIDI_H</span></div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="preprocessor"></span></div>
-<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="preprocessor">#define RTMIDI_VERSION &quot;2.1.0&quot;</span></div>
+<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="preprocessor">#define RTMIDI_VERSION &quot;2.1.1&quot;</span></div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="preprocessor">#include &lt;exception&gt;</span></div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="preprocessor">#include &lt;iostream&gt;</span></div>
@@ -65,7 +65,7 @@
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;};</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;</div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;</div>
-<div class="line"><a name="l00112"></a><span class="lineno"><a class="code" href="RtMidi_8h.html#a530aef8e3582ad9c4042f732eea14abb"> 112</a></span>&#160;<span class="keyword">typedef</span> void (*<a class="code" href="RtMidi_8h.html#a530aef8e3582ad9c4042f732eea14abb" title="RtMidi error callback function prototype.">RtMidiErrorCallback</a>)( <a class="code" href="classRtMidiError.html#a741314057cec5fb8c743c12f284905ee" title="Defined RtMidiError types.">RtMidiError::Type</a> type, <span class="keyword">const</span> std::string &amp;errorText );</div>
+<div class="line"><a name="l00112"></a><span class="lineno"><a class="code" href="RtMidi_8h.html#a36eff69cc45bba67a1f315823c7bc78d"> 112</a></span>&#160;<span class="keyword">typedef</span> void (*<a class="code" href="RtMidi_8h.html#a36eff69cc45bba67a1f315823c7bc78d" title="RtMidi error callback function prototype.">RtMidiErrorCallback</a>)( <a class="code" href="classRtMidiError.html#a741314057cec5fb8c743c12f284905ee" title="Defined RtMidiError types.">RtMidiError::Type</a> type, <span class="keyword">const</span> std::string &amp;errorText, <span class="keywordtype">void</span> *userData );</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;<span class="keyword">class </span><a class="code" href="classMidiApi.html">MidiApi</a>;</div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;</div>
@@ -100,7 +100,7 @@
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; virtual <span class="keywordtype">bool</span> <a class="code" href="classRtMidi.html#a74fc50ce1aec6b8ecb0c31094b3024a9" title="Returns true if a port is open and false if not.">isPortOpen</a>( <span class="keywordtype">void</span> ) const = 0;</div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;</div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;</div>
-<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; virtual <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#a9c9123f494b523f40ee5040a7ed24478" title="Set an error callback function to be invoked when an error has occured.">setErrorCallback</a>( <a class="code" href="RtMidi_8h.html#a530aef8e3582ad9c4042f732eea14abb" title="RtMidi error callback function prototype.">RtMidiErrorCallback</a> errorCallback = NULL ) = 0;</div>
+<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; virtual <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#aa6d6f2e0d06c64268c8898aa15f3a5df" title="Set an error callback function to be invoked when an error has occured.">setErrorCallback</a>( <a class="code" href="RtMidi_8h.html#a36eff69cc45bba67a1f315823c7bc78d" title="RtMidi error callback function prototype.">RtMidiErrorCallback</a> errorCallback = NULL, <span class="keywordtype">void</span> *userData = 0 ) = 0;</div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;</div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; protected:</div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;</div>
@@ -171,7 +171,7 @@
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <span class="keywordtype">double</span> getMessage( std::vector&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>&gt; *message );</div>
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160;</div>
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160;</div>
-<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; virtual <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#a9c9123f494b523f40ee5040a7ed24478" title="Set an error callback function to be invoked when an error has occured.">setErrorCallback</a>( <a class="code" href="RtMidi_8h.html#a530aef8e3582ad9c4042f732eea14abb" title="RtMidi error callback function prototype.">RtMidiErrorCallback</a> errorCallback = NULL );</div>
+<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; virtual <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#aa6d6f2e0d06c64268c8898aa15f3a5df" title="Set an error callback function to be invoked when an error has occured.">setErrorCallback</a>( <a class="code" href="RtMidi_8h.html#a36eff69cc45bba67a1f315823c7bc78d" title="RtMidi error callback function prototype.">RtMidiErrorCallback</a> errorCallback = NULL, <span class="keywordtype">void</span> *userData = 0 );</div>
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160;</div>
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; protected:</div>
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <span class="keywordtype">void</span> openMidiApi( RtMidi::<a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406" title="MIDI API specifier arguments.">Api</a> api, const std::<span class="keywordtype">string</span> clientName, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> queueSizeLimit );</div>
@@ -212,7 +212,7 @@
<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; <span class="keywordtype">void</span> sendMessage( std::vector&lt;unsigned char&gt; *message );</div>
<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160;</div>
<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160;</div>
-<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#a9c9123f494b523f40ee5040a7ed24478" title="Set an error callback function to be invoked when an error has occured.">setErrorCallback</a>( <a class="code" href="RtMidi_8h.html#a530aef8e3582ad9c4042f732eea14abb" title="RtMidi error callback function prototype.">RtMidiErrorCallback</a> errorCallback = NULL );</div>
+<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#aa6d6f2e0d06c64268c8898aa15f3a5df" title="Set an error callback function to be invoked when an error has occured.">setErrorCallback</a>( <a class="code" href="RtMidi_8h.html#a36eff69cc45bba67a1f315823c7bc78d" title="RtMidi error callback function prototype.">RtMidiErrorCallback</a> errorCallback = NULL, <span class="keywordtype">void</span> *userData = 0 );</div>
<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160;</div>
<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <span class="keyword">protected</span>:</div>
<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; <span class="keywordtype">void</span> openMidiApi( <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406" title="MIDI API specifier arguments.">RtMidi::Api</a> api, <span class="keyword">const</span> std::string clientName );</div>
@@ -247,7 +247,7 @@
<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; <span class="keyword">virtual</span> std::string <a class="code" href="classRtMidi.html#a799e2b9f4df39b298518f2b394db3391" title="Pure virtual getPortName() function.">getPortName</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber ) = 0;</div>
<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160;</div>
<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classRtMidi.html#a74fc50ce1aec6b8ecb0c31094b3024a9" title="Returns true if a port is open and false if not.">isPortOpen</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> connected_; }</div>
-<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#a9c9123f494b523f40ee5040a7ed24478" title="Set an error callback function to be invoked when an error has occured.">setErrorCallback</a>( <a class="code" href="RtMidi_8h.html#a530aef8e3582ad9c4042f732eea14abb" title="RtMidi error callback function prototype.">RtMidiErrorCallback</a> errorCallback );</div>
+<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#aa6d6f2e0d06c64268c8898aa15f3a5df" title="Set an error callback function to be invoked when an error has occured.">setErrorCallback</a>( <a class="code" href="RtMidi_8h.html#a36eff69cc45bba67a1f315823c7bc78d" title="RtMidi error callback function prototype.">RtMidiErrorCallback</a> errorCallback, <span class="keywordtype">void</span> *userData );</div>
<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160;</div>
<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; <span class="keywordtype">void</span> error( <a class="code" href="classRtMidiError.html#a741314057cec5fb8c743c12f284905ee" title="Defined RtMidiError types.">RtMidiError::Type</a> type, std::string errorString );</div>
<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160;</div>
@@ -257,310 +257,312 @@
<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <span class="keywordtype">void</span> *apiData_;</div>
<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; <span class="keywordtype">bool</span> connected_;</div>
<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; std::string errorString_;</div>
-<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <a class="code" href="RtMidi_8h.html#a530aef8e3582ad9c4042f732eea14abb" title="RtMidi error callback function prototype.">RtMidiErrorCallback</a> errorCallback_;</div>
-<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160;};</div>
-<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160;</div>
-<div class="line"><a name="l00465"></a><span class="lineno"><a class="code" href="classMidiInApi.html"> 465</a></span>&#160;<span class="keyword">class </span><a class="code" href="classMidiInApi.html">MidiInApi</a> : <span class="keyword">public</span> <a class="code" href="classMidiApi.html">MidiApi</a></div>
-<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160;{</div>
-<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160;</div>
-<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; <a class="code" href="classMidiInApi.html">MidiInApi</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> queueSizeLimit );</div>
-<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <span class="keyword">virtual</span> ~<a class="code" href="classMidiInApi.html">MidiInApi</a>( <span class="keywordtype">void</span> );</div>
-<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <span class="keywordtype">void</span> setCallback( <a class="code" href="classRtMidiIn.html#a297d2eb3c3420b437970a6fc59d89cbf" title="User callback function type definition.">RtMidiIn::RtMidiCallback</a> callback, <span class="keywordtype">void</span> *userData );</div>
-<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <span class="keywordtype">void</span> cancelCallback( <span class="keywordtype">void</span> );</div>
-<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> ignoreTypes( <span class="keywordtype">bool</span> midiSysex, <span class="keywordtype">bool</span> midiTime, <span class="keywordtype">bool</span> midiSense );</div>
-<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; <span class="keywordtype">double</span> getMessage( std::vector&lt;unsigned char&gt; *message );</div>
-<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160;</div>
-<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <span class="comment">// A MIDI structure used internally by the class to store incoming</span></div>
-<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <span class="comment">// messages. Each message represents one and only one MIDI message.</span></div>
-<div class="line"><a name="l00478"></a><span class="lineno"><a class="code" href="structMidiInApi_1_1MidiMessage.html"> 478</a></span>&#160; <span class="keyword">struct </span><a class="code" href="structMidiInApi_1_1MidiMessage.html">MidiMessage</a> { </div>
-<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; std::vector&lt;unsigned char&gt; bytes; </div>
-<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; <span class="keywordtype">double</span> timeStamp;</div>
-<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160;</div>
-<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; <span class="comment">// Default constructor.</span></div>
-<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <a class="code" href="structMidiInApi_1_1MidiMessage.html">MidiMessage</a>()</div>
-<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; :bytes(0), timeStamp(0.0) {}</div>
-<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; };</div>
-<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160;</div>
-<div class="line"><a name="l00487"></a><span class="lineno"><a class="code" href="structMidiInApi_1_1MidiQueue.html"> 487</a></span>&#160; <span class="keyword">struct </span><a class="code" href="structMidiInApi_1_1MidiQueue.html">MidiQueue</a> {</div>
-<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> front;</div>
-<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> back;</div>
-<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> size;</div>
-<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ringSize;</div>
-<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; <a class="code" href="structMidiInApi_1_1MidiMessage.html">MidiMessage</a> *ring;</div>
-<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160;</div>
-<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <span class="comment">// Default constructor.</span></div>
-<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; <a class="code" href="structMidiInApi_1_1MidiQueue.html">MidiQueue</a>()</div>
-<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; :front(0), back(0), size(0), ringSize(0) {}</div>
-<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; };</div>
-<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160;</div>
-<div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; <span class="comment">// The RtMidiInData structure is used to pass private class data to</span></div>
-<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; <span class="comment">// the MIDI input handling function or thread.</span></div>
-<div class="line"><a name="l00501"></a><span class="lineno"><a class="code" href="structMidiInApi_1_1RtMidiInData.html"> 501</a></span>&#160; <span class="keyword">struct </span><a class="code" href="structMidiInApi_1_1RtMidiInData.html">RtMidiInData</a> {</div>
-<div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; <a class="code" href="structMidiInApi_1_1MidiQueue.html">MidiQueue</a> queue;</div>
-<div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; <a class="code" href="structMidiInApi_1_1MidiMessage.html">MidiMessage</a> message;</div>
-<div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> ignoreFlags;</div>
-<div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <span class="keywordtype">bool</span> doInput;</div>
-<div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <span class="keywordtype">bool</span> firstMessage;</div>
-<div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; <span class="keywordtype">void</span> *apiData;</div>
-<div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; <span class="keywordtype">bool</span> usingCallback;</div>
-<div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; <a class="code" href="classRtMidiIn.html#a297d2eb3c3420b437970a6fc59d89cbf" title="User callback function type definition.">RtMidiIn::RtMidiCallback</a> userCallback;</div>
-<div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; <span class="keywordtype">void</span> *userData;</div>
-<div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <span class="keywordtype">bool</span> continueSysex;</div>
-<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160;</div>
-<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; <span class="comment">// Default constructor.</span></div>
-<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; <a class="code" href="structMidiInApi_1_1RtMidiInData.html">RtMidiInData</a>()</div>
-<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; : ignoreFlags(7), doInput(<span class="keyword">false</span>), firstMessage(<span class="keyword">true</span>),</div>
-<div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; apiData(0), usingCallback(<span class="keyword">false</span>), userCallback(0), userData(0),</div>
-<div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; continueSysex(<span class="keyword">false</span>) {}</div>
-<div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; };</div>
-<div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160;</div>
-<div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; <span class="keyword">protected</span>:</div>
-<div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; <a class="code" href="structMidiInApi_1_1RtMidiInData.html">RtMidiInData</a> inputData_;</div>
-<div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160;};</div>
-<div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160;</div>
-<div class="line"><a name="l00524"></a><span class="lineno"><a class="code" href="classMidiOutApi.html"> 524</a></span>&#160;<span class="keyword">class </span><a class="code" href="classMidiOutApi.html">MidiOutApi</a> : <span class="keyword">public</span> <a class="code" href="classMidiApi.html">MidiApi</a></div>
-<div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160;{</div>
-<div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160;</div>
-<div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; <a class="code" href="classMidiOutApi.html">MidiOutApi</a>( <span class="keywordtype">void</span> );</div>
-<div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; <span class="keyword">virtual</span> ~<a class="code" href="classMidiOutApi.html">MidiOutApi</a>( <span class="keywordtype">void</span> );</div>
-<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> sendMessage( std::vector&lt;unsigned char&gt; *message ) = 0;</div>
-<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160;};</div>
-<div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160;</div>
-<div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160;<span class="comment">// **************************************************************** //</span></div>
-<div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160;<span class="comment">// Inline RtMidiIn and RtMidiOut definitions.</span></div>
+<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <a class="code" href="RtMidi_8h.html#a36eff69cc45bba67a1f315823c7bc78d" title="RtMidi error callback function prototype.">RtMidiErrorCallback</a> errorCallback_;</div>
+<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; <span class="keywordtype">bool</span> firstErrorOccurred_;</div>
+<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; <span class="keywordtype">void</span> *errorCallbackUserData_;</div>
+<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160;};</div>
+<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160;</div>
+<div class="line"><a name="l00467"></a><span class="lineno"><a class="code" href="classMidiInApi.html"> 467</a></span>&#160;<span class="keyword">class </span><a class="code" href="classMidiInApi.html">MidiInApi</a> : <span class="keyword">public</span> <a class="code" href="classMidiApi.html">MidiApi</a></div>
+<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160;{</div>
+<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160;</div>
+<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <a class="code" href="classMidiInApi.html">MidiInApi</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> queueSizeLimit );</div>
+<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <span class="keyword">virtual</span> ~<a class="code" href="classMidiInApi.html">MidiInApi</a>( <span class="keywordtype">void</span> );</div>
+<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <span class="keywordtype">void</span> setCallback( <a class="code" href="classRtMidiIn.html#a297d2eb3c3420b437970a6fc59d89cbf" title="User callback function type definition.">RtMidiIn::RtMidiCallback</a> callback, <span class="keywordtype">void</span> *userData );</div>
+<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; <span class="keywordtype">void</span> cancelCallback( <span class="keywordtype">void</span> );</div>
+<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> ignoreTypes( <span class="keywordtype">bool</span> midiSysex, <span class="keywordtype">bool</span> midiTime, <span class="keywordtype">bool</span> midiSense );</div>
+<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <span class="keywordtype">double</span> getMessage( std::vector&lt;unsigned char&gt; *message );</div>
+<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160;</div>
+<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; <span class="comment">// A MIDI structure used internally by the class to store incoming</span></div>
+<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; <span class="comment">// messages. Each message represents one and only one MIDI message.</span></div>
+<div class="line"><a name="l00480"></a><span class="lineno"><a class="code" href="structMidiInApi_1_1MidiMessage.html"> 480</a></span>&#160; <span class="keyword">struct </span><a class="code" href="structMidiInApi_1_1MidiMessage.html">MidiMessage</a> { </div>
+<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; std::vector&lt;unsigned char&gt; bytes; </div>
+<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; <span class="keywordtype">double</span> timeStamp;</div>
+<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160;</div>
+<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <span class="comment">// Default constructor.</span></div>
+<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; <a class="code" href="structMidiInApi_1_1MidiMessage.html">MidiMessage</a>()</div>
+<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; :bytes(0), timeStamp(0.0) {}</div>
+<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; };</div>
+<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160;</div>
+<div class="line"><a name="l00489"></a><span class="lineno"><a class="code" href="structMidiInApi_1_1MidiQueue.html"> 489</a></span>&#160; <span class="keyword">struct </span><a class="code" href="structMidiInApi_1_1MidiQueue.html">MidiQueue</a> {</div>
+<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> front;</div>
+<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> back;</div>
+<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> size;</div>
+<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ringSize;</div>
+<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <a class="code" href="structMidiInApi_1_1MidiMessage.html">MidiMessage</a> *ring;</div>
+<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160;</div>
+<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; <span class="comment">// Default constructor.</span></div>
+<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <a class="code" href="structMidiInApi_1_1MidiQueue.html">MidiQueue</a>()</div>
+<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; :front(0), back(0), size(0), ringSize(0) {}</div>
+<div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; };</div>
+<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160;</div>
+<div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <span class="comment">// The RtMidiInData structure is used to pass private class data to</span></div>
+<div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; <span class="comment">// the MIDI input handling function or thread.</span></div>
+<div class="line"><a name="l00503"></a><span class="lineno"><a class="code" href="structMidiInApi_1_1RtMidiInData.html"> 503</a></span>&#160; <span class="keyword">struct </span><a class="code" href="structMidiInApi_1_1RtMidiInData.html">RtMidiInData</a> {</div>
+<div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; <a class="code" href="structMidiInApi_1_1MidiQueue.html">MidiQueue</a> queue;</div>
+<div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <a class="code" href="structMidiInApi_1_1MidiMessage.html">MidiMessage</a> message;</div>
+<div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> ignoreFlags;</div>
+<div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; <span class="keywordtype">bool</span> doInput;</div>
+<div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; <span class="keywordtype">bool</span> firstMessage;</div>
+<div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; <span class="keywordtype">void</span> *apiData;</div>
+<div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; <span class="keywordtype">bool</span> usingCallback;</div>
+<div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <a class="code" href="classRtMidiIn.html#a297d2eb3c3420b437970a6fc59d89cbf" title="User callback function type definition.">RtMidiIn::RtMidiCallback</a> userCallback;</div>
+<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; <span class="keywordtype">void</span> *userData;</div>
+<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; <span class="keywordtype">bool</span> continueSysex;</div>
+<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160;</div>
+<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; <span class="comment">// Default constructor.</span></div>
+<div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; <a class="code" href="structMidiInApi_1_1RtMidiInData.html">RtMidiInData</a>()</div>
+<div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; : ignoreFlags(7), doInput(<span class="keyword">false</span>), firstMessage(<span class="keyword">true</span>),</div>
+<div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; apiData(0), usingCallback(<span class="keyword">false</span>), userCallback(0), userData(0),</div>
+<div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; continueSysex(<span class="keyword">false</span>) {}</div>
+<div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; };</div>
+<div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160;</div>
+<div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; <span class="keyword">protected</span>:</div>
+<div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <a class="code" href="structMidiInApi_1_1RtMidiInData.html">RtMidiInData</a> inputData_;</div>
+<div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160;};</div>
+<div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160;</div>
+<div class="line"><a name="l00526"></a><span class="lineno"><a class="code" href="classMidiOutApi.html"> 526</a></span>&#160;<span class="keyword">class </span><a class="code" href="classMidiOutApi.html">MidiOutApi</a> : <span class="keyword">public</span> <a class="code" href="classMidiApi.html">MidiApi</a></div>
+<div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160;{</div>
+<div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160;</div>
+<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; <a class="code" href="classMidiOutApi.html">MidiOutApi</a>( <span class="keywordtype">void</span> );</div>
+<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; <span class="keyword">virtual</span> ~<a class="code" href="classMidiOutApi.html">MidiOutApi</a>( <span class="keywordtype">void</span> );</div>
+<div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> sendMessage( std::vector&lt;unsigned char&gt; *message ) = 0;</div>
+<div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160;};</div>
+<div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160;</div>
+<div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160;<span class="comment">// **************************************************************** //</span></div>
<div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160;<span class="comment">// **************************************************************** //</span></div>
-<div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160;</div>
-<div class="line"><a name="l00539"></a><span class="lineno"><a class="code" href="classRtMidiIn.html#a6475a11eeb0c8bf22157c3887b100164"> 539</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406" title="MIDI API specifier arguments.">RtMidi::Api</a> <a class="code" href="classRtMidiIn.html#a6475a11eeb0c8bf22157c3887b100164" title="Returns the MIDI API specifier for the current instance of RtMidiIn.">RtMidiIn :: getCurrentApi</a>( <span class="keywordtype">void</span> ) throw() { <span class="keywordflow">return</span> rtapi_-&gt;getCurrentApi(); }</div>
-<div class="line"><a name="l00540"></a><span class="lineno"><a class="code" href="classRtMidiIn.html#a39df8f81a22f729a9904707dde487d2c"> 540</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classRtMidiIn.html#a39df8f81a22f729a9904707dde487d2c" title="Open a MIDI input connection given by enumeration number.">RtMidiIn :: openPort</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber, <span class="keyword">const</span> std::string portName ) { rtapi_-&gt;openPort( portNumber, portName ); }</div>
-<div class="line"><a name="l00541"></a><span class="lineno"><a class="code" href="classRtMidiIn.html#a245261b3f12ce727faed18fcfeef18c2"> 541</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classRtMidiIn.html#a245261b3f12ce727faed18fcfeef18c2" title="Create a virtual input port, with optional name, to allow software connections (OS X...">RtMidiIn :: openVirtualPort</a>( <span class="keyword">const</span> std::string portName ) { rtapi_-&gt;openVirtualPort( portName ); }</div>
-<div class="line"><a name="l00542"></a><span class="lineno"><a class="code" href="classRtMidiIn.html#a55bacf0d228fd8e3be6a79d12fd1dc39"> 542</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classRtMidiIn.html#a55bacf0d228fd8e3be6a79d12fd1dc39" title="Close an open MIDI connection (if one exists).">RtMidiIn :: closePort</a>( <span class="keywordtype">void</span> ) { rtapi_-&gt;closePort(); }</div>
-<div class="line"><a name="l00543"></a><span class="lineno"><a class="code" href="classRtMidiIn.html#abc3f1204c9a8b3adc31cda4820c1935c"> 543</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classRtMidiIn.html#abc3f1204c9a8b3adc31cda4820c1935c" title="Returns true if a port is open and false if not.">RtMidiIn :: isPortOpen</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> rtapi_-&gt;isPortOpen(); }</div>
-<div class="line"><a name="l00544"></a><span class="lineno"><a class="code" href="classRtMidiIn.html#a7590563461c7467608a4b3806406b32d"> 544</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classRtMidiIn.html#a7590563461c7467608a4b3806406b32d" title="Set a callback function to be invoked for incoming MIDI messages.">RtMidiIn :: setCallback</a>( RtMidiCallback callback, <span class="keywordtype">void</span> *userData ) { ((<a class="code" href="classMidiInApi.html">MidiInApi</a> *)rtapi_)-&gt;setCallback( callback, userData ); }</div>
-<div class="line"><a name="l00545"></a><span class="lineno"><a class="code" href="classRtMidiIn.html#ade23832a66c1ed56965c26325602543e"> 545</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classRtMidiIn.html#ade23832a66c1ed56965c26325602543e" title="Cancel use of the current callback function (if one exists).">RtMidiIn :: cancelCallback</a>( <span class="keywordtype">void</span> ) { ((<a class="code" href="classMidiInApi.html">MidiInApi</a> *)rtapi_)-&gt;cancelCallback(); }</div>
-<div class="line"><a name="l00546"></a><span class="lineno"><a class="code" href="classRtMidiIn.html#a62b1b38aa8e5f11cd66f03d59228f4e4"> 546</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtMidiIn.html#a62b1b38aa8e5f11cd66f03d59228f4e4" title="Return the number of available MIDI input ports.">RtMidiIn :: getPortCount</a>( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> rtapi_-&gt;getPortCount(); }</div>
-<div class="line"><a name="l00547"></a><span class="lineno"><a class="code" href="classRtMidiIn.html#af2961fff09fa01a3d5bc0f0c5a042aaf"> 547</a></span>&#160;<span class="keyword">inline</span> std::string <a class="code" href="classRtMidiIn.html#af2961fff09fa01a3d5bc0f0c5a042aaf" title="Return a string identifier for the specified MIDI input port number.">RtMidiIn :: getPortName</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber ) { <span class="keywordflow">return</span> rtapi_-&gt;getPortName( portNumber ); }</div>
-<div class="line"><a name="l00548"></a><span class="lineno"><a class="code" href="classRtMidiIn.html#af9507125aaa42276ccc01df576fc3533"> 548</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classRtMidiIn.html#af9507125aaa42276ccc01df576fc3533" title="Specify whether certain MIDI message types should be queued or ignored during input.">RtMidiIn :: ignoreTypes</a>( <span class="keywordtype">bool</span> midiSysex, <span class="keywordtype">bool</span> midiTime, <span class="keywordtype">bool</span> midiSense ) { ((<a class="code" href="classMidiInApi.html">MidiInApi</a> *)rtapi_)-&gt;ignoreTypes( midiSysex, midiTime, midiSense ); }</div>
-<div class="line"><a name="l00549"></a><span class="lineno"><a class="code" href="classRtMidiIn.html#a1ba10ecd276b30a8579c7d60a9c890eb"> 549</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">double</span> <a class="code" href="classRtMidiIn.html#a1ba10ecd276b30a8579c7d60a9c890eb" title="Fill the user-provided vector with the data bytes for the next available MIDI message in the input qu...">RtMidiIn :: getMessage</a>( std::vector&lt;unsigned char&gt; *message ) { <span class="keywordflow">return</span> ((<a class="code" href="classMidiInApi.html">MidiInApi</a> *)rtapi_)-&gt;getMessage( message ); }</div>
-<div class="line"><a name="l00550"></a><span class="lineno"><a class="code" href="classRtMidiIn.html#ac890a603444f0e5876c34f430505fdb0"> 550</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classRtMidiIn.html#ac890a603444f0e5876c34f430505fdb0" title="Set an error callback function to be invoked when an error has occured.">RtMidiIn :: setErrorCallback</a>( <a class="code" href="RtMidi_8h.html#a530aef8e3582ad9c4042f732eea14abb" title="RtMidi error callback function prototype.">RtMidiErrorCallback</a> errorCallback ) { rtapi_-&gt;setErrorCallback(errorCallback); }</div>
-<div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160;</div>
-<div class="line"><a name="l00552"></a><span class="lineno"><a class="code" href="classRtMidiOut.html#a532b5712e305bd8afb65a3ad14138e0f"> 552</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406" title="MIDI API specifier arguments.">RtMidi::Api</a> <a class="code" href="classRtMidiOut.html#a532b5712e305bd8afb65a3ad14138e0f" title="Returns the MIDI API specifier for the current instance of RtMidiOut.">RtMidiOut :: getCurrentApi</a>( <span class="keywordtype">void</span> ) throw() { <span class="keywordflow">return</span> rtapi_-&gt;getCurrentApi(); }</div>
-<div class="line"><a name="l00553"></a><span class="lineno"><a class="code" href="classRtMidiOut.html#a1b280d67317cd473a8816aeb2fe6c186"> 553</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classRtMidiOut.html#a1b280d67317cd473a8816aeb2fe6c186" title="Open a MIDI output connection.">RtMidiOut :: openPort</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber, <span class="keyword">const</span> std::string portName ) { rtapi_-&gt;openPort( portNumber, portName ); }</div>
-<div class="line"><a name="l00554"></a><span class="lineno"><a class="code" href="classRtMidiOut.html#a47068e1c076d91fd89587c0ccdeddc7a"> 554</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classRtMidiOut.html#a47068e1c076d91fd89587c0ccdeddc7a" title="Create a virtual output port, with optional name, to allow software connections (OS X...">RtMidiOut :: openVirtualPort</a>( <span class="keyword">const</span> std::string portName ) { rtapi_-&gt;openVirtualPort( portName ); }</div>
-<div class="line"><a name="l00555"></a><span class="lineno"><a class="code" href="classRtMidiOut.html#a5a28d1ba9e002fd07a317d3a257d87e8"> 555</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classRtMidiOut.html#a5a28d1ba9e002fd07a317d3a257d87e8" title="Close an open MIDI connection (if one exists).">RtMidiOut :: closePort</a>( <span class="keywordtype">void</span> ) { rtapi_-&gt;closePort(); }</div>
-<div class="line"><a name="l00556"></a><span class="lineno"><a class="code" href="classRtMidiOut.html#afe59ea775fb231ac19dab97bb7f5aa7d"> 556</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classRtMidiOut.html#afe59ea775fb231ac19dab97bb7f5aa7d" title="Returns true if a port is open and false if not.">RtMidiOut :: isPortOpen</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> rtapi_-&gt;isPortOpen(); }</div>
-<div class="line"><a name="l00557"></a><span class="lineno"><a class="code" href="classRtMidiOut.html#a0c4d662e1c398ddf35a2dbaf66f50976"> 557</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtMidiOut.html#a0c4d662e1c398ddf35a2dbaf66f50976" title="Return the number of available MIDI output ports.">RtMidiOut :: getPortCount</a>( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> rtapi_-&gt;getPortCount(); }</div>
-<div class="line"><a name="l00558"></a><span class="lineno"><a class="code" href="classRtMidiOut.html#acc4ae0ab71a49ae7629075d5a9cd837c"> 558</a></span>&#160;<span class="keyword">inline</span> std::string <a class="code" href="classRtMidiOut.html#acc4ae0ab71a49ae7629075d5a9cd837c" title="Return a string identifier for the specified MIDI port type and number.">RtMidiOut :: getPortName</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber ) { <span class="keywordflow">return</span> rtapi_-&gt;getPortName( portNumber ); }</div>
-<div class="line"><a name="l00559"></a><span class="lineno"><a class="code" href="classRtMidiOut.html#a0bd8972ef8ac4e8d37ccc4b5d51c2eb3"> 559</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classRtMidiOut.html#a0bd8972ef8ac4e8d37ccc4b5d51c2eb3" title="Immediately send a single message out an open MIDI output port.">RtMidiOut :: sendMessage</a>( std::vector&lt;unsigned char&gt; *message ) { ((<a class="code" href="classMidiOutApi.html">MidiOutApi</a> *)rtapi_)-&gt;sendMessage( message ); }</div>
-<div class="line"><a name="l00560"></a><span class="lineno"><a class="code" href="classRtMidiOut.html#afcabeb089fb3c491707d14e085433500"> 560</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classRtMidiOut.html#afcabeb089fb3c491707d14e085433500" title="Set an error callback function to be invoked when an error has occured.">RtMidiOut :: setErrorCallback</a>( <a class="code" href="RtMidi_8h.html#a530aef8e3582ad9c4042f732eea14abb" title="RtMidi error callback function prototype.">RtMidiErrorCallback</a> errorCallback ) { rtapi_-&gt;setErrorCallback(errorCallback); }</div>
-<div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160;</div>
-<div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160;<span class="comment">// **************************************************************** //</span></div>
-<div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160;<span class="comment">// MidiInApi and MidiOutApi subclass prototypes.</span></div>
+<div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160;<span class="comment">// Inline RtMidiIn and RtMidiOut definitions.</span></div>
+<div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160;<span class="comment">// **************************************************************** //</span></div>
+<div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160;</div>
+<div class="line"><a name="l00541"></a><span class="lineno"><a class="code" href="classRtMidiIn.html#a6475a11eeb0c8bf22157c3887b100164"> 541</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406" title="MIDI API specifier arguments.">RtMidi::Api</a> <a class="code" href="classRtMidiIn.html#a6475a11eeb0c8bf22157c3887b100164" title="Returns the MIDI API specifier for the current instance of RtMidiIn.">RtMidiIn :: getCurrentApi</a>( <span class="keywordtype">void</span> ) throw() { <span class="keywordflow">return</span> rtapi_-&gt;getCurrentApi(); }</div>
+<div class="line"><a name="l00542"></a><span class="lineno"><a class="code" href="classRtMidiIn.html#a39df8f81a22f729a9904707dde487d2c"> 542</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classRtMidiIn.html#a39df8f81a22f729a9904707dde487d2c" title="Open a MIDI input connection given by enumeration number.">RtMidiIn :: openPort</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber, <span class="keyword">const</span> std::string portName ) { rtapi_-&gt;openPort( portNumber, portName ); }</div>
+<div class="line"><a name="l00543"></a><span class="lineno"><a class="code" href="classRtMidiIn.html#a245261b3f12ce727faed18fcfeef18c2"> 543</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classRtMidiIn.html#a245261b3f12ce727faed18fcfeef18c2" title="Create a virtual input port, with optional name, to allow software connections (OS X...">RtMidiIn :: openVirtualPort</a>( <span class="keyword">const</span> std::string portName ) { rtapi_-&gt;openVirtualPort( portName ); }</div>
+<div class="line"><a name="l00544"></a><span class="lineno"><a class="code" href="classRtMidiIn.html#a55bacf0d228fd8e3be6a79d12fd1dc39"> 544</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classRtMidiIn.html#a55bacf0d228fd8e3be6a79d12fd1dc39" title="Close an open MIDI connection (if one exists).">RtMidiIn :: closePort</a>( <span class="keywordtype">void</span> ) { rtapi_-&gt;closePort(); }</div>
+<div class="line"><a name="l00545"></a><span class="lineno"><a class="code" href="classRtMidiIn.html#abc3f1204c9a8b3adc31cda4820c1935c"> 545</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classRtMidiIn.html#abc3f1204c9a8b3adc31cda4820c1935c" title="Returns true if a port is open and false if not.">RtMidiIn :: isPortOpen</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> rtapi_-&gt;isPortOpen(); }</div>
+<div class="line"><a name="l00546"></a><span class="lineno"><a class="code" href="classRtMidiIn.html#a7590563461c7467608a4b3806406b32d"> 546</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classRtMidiIn.html#a7590563461c7467608a4b3806406b32d" title="Set a callback function to be invoked for incoming MIDI messages.">RtMidiIn :: setCallback</a>( RtMidiCallback callback, <span class="keywordtype">void</span> *userData ) { ((<a class="code" href="classMidiInApi.html">MidiInApi</a> *)rtapi_)-&gt;setCallback( callback, userData ); }</div>
+<div class="line"><a name="l00547"></a><span class="lineno"><a class="code" href="classRtMidiIn.html#ade23832a66c1ed56965c26325602543e"> 547</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classRtMidiIn.html#ade23832a66c1ed56965c26325602543e" title="Cancel use of the current callback function (if one exists).">RtMidiIn :: cancelCallback</a>( <span class="keywordtype">void</span> ) { ((<a class="code" href="classMidiInApi.html">MidiInApi</a> *)rtapi_)-&gt;cancelCallback(); }</div>
+<div class="line"><a name="l00548"></a><span class="lineno"><a class="code" href="classRtMidiIn.html#a62b1b38aa8e5f11cd66f03d59228f4e4"> 548</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtMidiIn.html#a62b1b38aa8e5f11cd66f03d59228f4e4" title="Return the number of available MIDI input ports.">RtMidiIn :: getPortCount</a>( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> rtapi_-&gt;getPortCount(); }</div>
+<div class="line"><a name="l00549"></a><span class="lineno"><a class="code" href="classRtMidiIn.html#af2961fff09fa01a3d5bc0f0c5a042aaf"> 549</a></span>&#160;<span class="keyword">inline</span> std::string <a class="code" href="classRtMidiIn.html#af2961fff09fa01a3d5bc0f0c5a042aaf" title="Return a string identifier for the specified MIDI input port number.">RtMidiIn :: getPortName</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber ) { <span class="keywordflow">return</span> rtapi_-&gt;getPortName( portNumber ); }</div>
+<div class="line"><a name="l00550"></a><span class="lineno"><a class="code" href="classRtMidiIn.html#af9507125aaa42276ccc01df576fc3533"> 550</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classRtMidiIn.html#af9507125aaa42276ccc01df576fc3533" title="Specify whether certain MIDI message types should be queued or ignored during input.">RtMidiIn :: ignoreTypes</a>( <span class="keywordtype">bool</span> midiSysex, <span class="keywordtype">bool</span> midiTime, <span class="keywordtype">bool</span> midiSense ) { ((<a class="code" href="classMidiInApi.html">MidiInApi</a> *)rtapi_)-&gt;ignoreTypes( midiSysex, midiTime, midiSense ); }</div>
+<div class="line"><a name="l00551"></a><span class="lineno"><a class="code" href="classRtMidiIn.html#a1ba10ecd276b30a8579c7d60a9c890eb"> 551</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">double</span> <a class="code" href="classRtMidiIn.html#a1ba10ecd276b30a8579c7d60a9c890eb" title="Fill the user-provided vector with the data bytes for the next available MIDI message in the input qu...">RtMidiIn :: getMessage</a>( std::vector&lt;unsigned char&gt; *message ) { <span class="keywordflow">return</span> ((<a class="code" href="classMidiInApi.html">MidiInApi</a> *)rtapi_)-&gt;getMessage( message ); }</div>
+<div class="line"><a name="l00552"></a><span class="lineno"><a class="code" href="classRtMidiIn.html#ad70189a24427b3169d81fcc69f6441e0"> 552</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classRtMidiIn.html#ad70189a24427b3169d81fcc69f6441e0" title="Set an error callback function to be invoked when an error has occured.">RtMidiIn :: setErrorCallback</a>( <a class="code" href="RtMidi_8h.html#a36eff69cc45bba67a1f315823c7bc78d" title="RtMidi error callback function prototype.">RtMidiErrorCallback</a> errorCallback, <span class="keywordtype">void</span> *userData ) { rtapi_-&gt;setErrorCallback(errorCallback, userData); }</div>
+<div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160;</div>
+<div class="line"><a name="l00554"></a><span class="lineno"><a class="code" href="classRtMidiOut.html#a532b5712e305bd8afb65a3ad14138e0f"> 554</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406" title="MIDI API specifier arguments.">RtMidi::Api</a> <a class="code" href="classRtMidiOut.html#a532b5712e305bd8afb65a3ad14138e0f" title="Returns the MIDI API specifier for the current instance of RtMidiOut.">RtMidiOut :: getCurrentApi</a>( <span class="keywordtype">void</span> ) throw() { <span class="keywordflow">return</span> rtapi_-&gt;getCurrentApi(); }</div>
+<div class="line"><a name="l00555"></a><span class="lineno"><a class="code" href="classRtMidiOut.html#a1b280d67317cd473a8816aeb2fe6c186"> 555</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classRtMidiOut.html#a1b280d67317cd473a8816aeb2fe6c186" title="Open a MIDI output connection.">RtMidiOut :: openPort</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber, <span class="keyword">const</span> std::string portName ) { rtapi_-&gt;openPort( portNumber, portName ); }</div>
+<div class="line"><a name="l00556"></a><span class="lineno"><a class="code" href="classRtMidiOut.html#a47068e1c076d91fd89587c0ccdeddc7a"> 556</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classRtMidiOut.html#a47068e1c076d91fd89587c0ccdeddc7a" title="Create a virtual output port, with optional name, to allow software connections (OS X...">RtMidiOut :: openVirtualPort</a>( <span class="keyword">const</span> std::string portName ) { rtapi_-&gt;openVirtualPort( portName ); }</div>
+<div class="line"><a name="l00557"></a><span class="lineno"><a class="code" href="classRtMidiOut.html#a5a28d1ba9e002fd07a317d3a257d87e8"> 557</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classRtMidiOut.html#a5a28d1ba9e002fd07a317d3a257d87e8" title="Close an open MIDI connection (if one exists).">RtMidiOut :: closePort</a>( <span class="keywordtype">void</span> ) { rtapi_-&gt;closePort(); }</div>
+<div class="line"><a name="l00558"></a><span class="lineno"><a class="code" href="classRtMidiOut.html#afe59ea775fb231ac19dab97bb7f5aa7d"> 558</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classRtMidiOut.html#afe59ea775fb231ac19dab97bb7f5aa7d" title="Returns true if a port is open and false if not.">RtMidiOut :: isPortOpen</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> rtapi_-&gt;isPortOpen(); }</div>
+<div class="line"><a name="l00559"></a><span class="lineno"><a class="code" href="classRtMidiOut.html#a0c4d662e1c398ddf35a2dbaf66f50976"> 559</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtMidiOut.html#a0c4d662e1c398ddf35a2dbaf66f50976" title="Return the number of available MIDI output ports.">RtMidiOut :: getPortCount</a>( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> rtapi_-&gt;getPortCount(); }</div>
+<div class="line"><a name="l00560"></a><span class="lineno"><a class="code" href="classRtMidiOut.html#acc4ae0ab71a49ae7629075d5a9cd837c"> 560</a></span>&#160;<span class="keyword">inline</span> std::string <a class="code" href="classRtMidiOut.html#acc4ae0ab71a49ae7629075d5a9cd837c" title="Return a string identifier for the specified MIDI port type and number.">RtMidiOut :: getPortName</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber ) { <span class="keywordflow">return</span> rtapi_-&gt;getPortName( portNumber ); }</div>
+<div class="line"><a name="l00561"></a><span class="lineno"><a class="code" href="classRtMidiOut.html#a0bd8972ef8ac4e8d37ccc4b5d51c2eb3"> 561</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classRtMidiOut.html#a0bd8972ef8ac4e8d37ccc4b5d51c2eb3" title="Immediately send a single message out an open MIDI output port.">RtMidiOut :: sendMessage</a>( std::vector&lt;unsigned char&gt; *message ) { ((<a class="code" href="classMidiOutApi.html">MidiOutApi</a> *)rtapi_)-&gt;sendMessage( message ); }</div>
+<div class="line"><a name="l00562"></a><span class="lineno"><a class="code" href="classRtMidiOut.html#a91a4571214f7b033312cc6cb661d3253"> 562</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classRtMidiOut.html#a91a4571214f7b033312cc6cb661d3253" title="Set an error callback function to be invoked when an error has occured.">RtMidiOut :: setErrorCallback</a>( <a class="code" href="RtMidi_8h.html#a36eff69cc45bba67a1f315823c7bc78d" title="RtMidi error callback function prototype.">RtMidiErrorCallback</a> errorCallback, <span class="keywordtype">void</span> *userData ) { rtapi_-&gt;setErrorCallback(errorCallback, userData); }</div>
+<div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160;</div>
+<div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160;<span class="comment">// **************************************************************** //</span></div>
<div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160;<span class="comment">// **************************************************************** //</span></div>
-<div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160;</div>
-<div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160;<span class="preprocessor">#if !defined(__LINUX_ALSA__) &amp;&amp; !defined(__UNIX_JACK__) &amp;&amp; !defined(__MACOSX_CORE__) &amp;&amp; !defined(__WINDOWS_MM__)</span></div>
-<div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160;<span class="preprocessor"></span><span class="preprocessor"> #define __RTMIDI_DUMMY__</span></div>
-<div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160;<span class="preprocessor"></span></div>
-<div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160;<span class="preprocessor">#if defined(__MACOSX_CORE__)</span></div>
+<div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160;<span class="comment">// MidiInApi and MidiOutApi subclass prototypes.</span></div>
+<div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160;<span class="comment">// **************************************************************** //</span></div>
+<div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160;</div>
+<div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160;<span class="preprocessor">#if !defined(__LINUX_ALSA__) &amp;&amp; !defined(__UNIX_JACK__) &amp;&amp; !defined(__MACOSX_CORE__) &amp;&amp; !defined(__WINDOWS_MM__)</span></div>
+<div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160;<span class="preprocessor"></span><span class="preprocessor"> #define __RTMIDI_DUMMY__</span></div>
+<div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160;<span class="preprocessor"></span></div>
-<div class="line"><a name="l00574"></a><span class="lineno"><a class="code" href="classMidiInCore.html"> 574</a></span>&#160;<span class="keyword">class </span><a class="code" href="classMidiInCore.html">MidiInCore</a>: <span class="keyword">public</span> <a class="code" href="classMidiInApi.html">MidiInApi</a></div>
-<div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160;{</div>
-<div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; <a class="code" href="classMidiInCore.html">MidiInCore</a>( <span class="keyword">const</span> std::string clientName, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> queueSizeLimit );</div>
-<div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; ~<a class="code" href="classMidiInCore.html">MidiInCore</a>( <span class="keywordtype">void</span> );</div>
-<div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406" title="MIDI API specifier arguments.">RtMidi::Api</a> getCurrentApi( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a3f41293f89467641484fbd54c4530908">RtMidi::MACOSX_CORE</a>; };</div>
-<div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#ad9e30a89638f93193cb40edebaa536f5" title="Pure virtual openPort() function.">openPort</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber, <span class="keyword">const</span> std::string portName );</div>
-<div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#a9200cde4f5337c0bc421d20bd4fcf654" title="Pure virtual openVirtualPort() function.">openVirtualPort</a>( <span class="keyword">const</span> std::string portName );</div>
-<div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#a36125c4fa16550345b57f4a4927f5b4a" title="Pure virtual closePort() function.">closePort</a>( <span class="keywordtype">void</span> );</div>
-<div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtMidi.html#a9a49ef73a1e6007444019a7ae095e195" title="Pure virtual getPortCount() function.">getPortCount</a>( <span class="keywordtype">void</span> );</div>
-<div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; std::string <a class="code" href="classRtMidi.html#a799e2b9f4df39b298518f2b394db3391" title="Pure virtual getPortName() function.">getPortName</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber );</div>
-<div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160;</div>
-<div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; <span class="keyword">protected</span>:</div>
-<div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; <span class="keywordtype">void</span> initialize( <span class="keyword">const</span> std::string&amp; clientName );</div>
-<div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160;};</div>
-<div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160;</div>
-<div class="line"><a name="l00590"></a><span class="lineno"><a class="code" href="classMidiOutCore.html"> 590</a></span>&#160;<span class="keyword">class </span><a class="code" href="classMidiOutCore.html">MidiOutCore</a>: <span class="keyword">public</span> <a class="code" href="classMidiOutApi.html">MidiOutApi</a></div>
-<div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160;{</div>
-<div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; <a class="code" href="classMidiOutCore.html">MidiOutCore</a>( <span class="keyword">const</span> std::string clientName );</div>
-<div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; ~<a class="code" href="classMidiOutCore.html">MidiOutCore</a>( <span class="keywordtype">void</span> );</div>
-<div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406" title="MIDI API specifier arguments.">RtMidi::Api</a> getCurrentApi( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a3f41293f89467641484fbd54c4530908">RtMidi::MACOSX_CORE</a>; };</div>
-<div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#ad9e30a89638f93193cb40edebaa536f5" title="Pure virtual openPort() function.">openPort</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber, <span class="keyword">const</span> std::string portName );</div>
-<div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#a9200cde4f5337c0bc421d20bd4fcf654" title="Pure virtual openVirtualPort() function.">openVirtualPort</a>( <span class="keyword">const</span> std::string portName );</div>
-<div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#a36125c4fa16550345b57f4a4927f5b4a" title="Pure virtual closePort() function.">closePort</a>( <span class="keywordtype">void</span> );</div>
-<div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtMidi.html#a9a49ef73a1e6007444019a7ae095e195" title="Pure virtual getPortCount() function.">getPortCount</a>( <span class="keywordtype">void</span> );</div>
-<div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; std::string <a class="code" href="classRtMidi.html#a799e2b9f4df39b298518f2b394db3391" title="Pure virtual getPortName() function.">getPortName</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber );</div>
-<div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; <span class="keywordtype">void</span> sendMessage( std::vector&lt;unsigned char&gt; *message );</div>
-<div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160;</div>
-<div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; <span class="keyword">protected</span>:</div>
-<div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; <span class="keywordtype">void</span> initialize( <span class="keyword">const</span> std::string&amp; clientName );</div>
-<div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160;};</div>
-<div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160;</div>
-<div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160;<span class="preprocessor"></span></div>
-<div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160;<span class="preprocessor">#if defined(__UNIX_JACK__)</span></div>
+<div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160;<span class="preprocessor">#if defined(__MACOSX_CORE__)</span></div>
+<div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00576"></a><span class="lineno"><a class="code" href="classMidiInCore.html"> 576</a></span>&#160;<span class="keyword">class </span><a class="code" href="classMidiInCore.html">MidiInCore</a>: <span class="keyword">public</span> <a class="code" href="classMidiInApi.html">MidiInApi</a></div>
+<div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160;{</div>
+<div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; <a class="code" href="classMidiInCore.html">MidiInCore</a>( <span class="keyword">const</span> std::string clientName, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> queueSizeLimit );</div>
+<div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; ~<a class="code" href="classMidiInCore.html">MidiInCore</a>( <span class="keywordtype">void</span> );</div>
+<div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406" title="MIDI API specifier arguments.">RtMidi::Api</a> getCurrentApi( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a3f41293f89467641484fbd54c4530908">RtMidi::MACOSX_CORE</a>; };</div>
+<div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#ad9e30a89638f93193cb40edebaa536f5" title="Pure virtual openPort() function.">openPort</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber, <span class="keyword">const</span> std::string portName );</div>
+<div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#a9200cde4f5337c0bc421d20bd4fcf654" title="Pure virtual openVirtualPort() function.">openVirtualPort</a>( <span class="keyword">const</span> std::string portName );</div>
+<div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#a36125c4fa16550345b57f4a4927f5b4a" title="Pure virtual closePort() function.">closePort</a>( <span class="keywordtype">void</span> );</div>
+<div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtMidi.html#a9a49ef73a1e6007444019a7ae095e195" title="Pure virtual getPortCount() function.">getPortCount</a>( <span class="keywordtype">void</span> );</div>
+<div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; std::string <a class="code" href="classRtMidi.html#a799e2b9f4df39b298518f2b394db3391" title="Pure virtual getPortName() function.">getPortName</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber );</div>
+<div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160;</div>
+<div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; <span class="keyword">protected</span>:</div>
+<div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; <span class="keywordtype">void</span> initialize( <span class="keyword">const</span> std::string&amp; clientName );</div>
+<div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160;};</div>
+<div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160;</div>
+<div class="line"><a name="l00592"></a><span class="lineno"><a class="code" href="classMidiOutCore.html"> 592</a></span>&#160;<span class="keyword">class </span><a class="code" href="classMidiOutCore.html">MidiOutCore</a>: <span class="keyword">public</span> <a class="code" href="classMidiOutApi.html">MidiOutApi</a></div>
+<div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160;{</div>
+<div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; <a class="code" href="classMidiOutCore.html">MidiOutCore</a>( <span class="keyword">const</span> std::string clientName );</div>
+<div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; ~<a class="code" href="classMidiOutCore.html">MidiOutCore</a>( <span class="keywordtype">void</span> );</div>
+<div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406" title="MIDI API specifier arguments.">RtMidi::Api</a> getCurrentApi( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a3f41293f89467641484fbd54c4530908">RtMidi::MACOSX_CORE</a>; };</div>
+<div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#ad9e30a89638f93193cb40edebaa536f5" title="Pure virtual openPort() function.">openPort</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber, <span class="keyword">const</span> std::string portName );</div>
+<div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#a9200cde4f5337c0bc421d20bd4fcf654" title="Pure virtual openVirtualPort() function.">openVirtualPort</a>( <span class="keyword">const</span> std::string portName );</div>
+<div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#a36125c4fa16550345b57f4a4927f5b4a" title="Pure virtual closePort() function.">closePort</a>( <span class="keywordtype">void</span> );</div>
+<div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtMidi.html#a9a49ef73a1e6007444019a7ae095e195" title="Pure virtual getPortCount() function.">getPortCount</a>( <span class="keywordtype">void</span> );</div>
+<div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; std::string <a class="code" href="classRtMidi.html#a799e2b9f4df39b298518f2b394db3391" title="Pure virtual getPortName() function.">getPortName</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber );</div>
+<div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; <span class="keywordtype">void</span> sendMessage( std::vector&lt;unsigned char&gt; *message );</div>
+<div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160;</div>
+<div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; <span class="keyword">protected</span>:</div>
+<div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; <span class="keywordtype">void</span> initialize( <span class="keyword">const</span> std::string&amp; clientName );</div>
+<div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160;};</div>
+<div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160;</div>
+<div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160;<span class="preprocessor"></span></div>
-<div class="line"><a name="l00611"></a><span class="lineno"><a class="code" href="classMidiInJack.html"> 611</a></span>&#160;<span class="keyword">class </span><a class="code" href="classMidiInJack.html">MidiInJack</a>: <span class="keyword">public</span> <a class="code" href="classMidiInApi.html">MidiInApi</a></div>
-<div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160;{</div>
-<div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; <a class="code" href="classMidiInJack.html">MidiInJack</a>( <span class="keyword">const</span> std::string clientName, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> queueSizeLimit );</div>
-<div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; ~<a class="code" href="classMidiInJack.html">MidiInJack</a>( <span class="keywordtype">void</span> );</div>
-<div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406" title="MIDI API specifier arguments.">RtMidi::Api</a> getCurrentApi( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a1f59daf3120f47c0ae3891773112ddfa">RtMidi::UNIX_JACK</a>; };</div>
-<div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#ad9e30a89638f93193cb40edebaa536f5" title="Pure virtual openPort() function.">openPort</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber, <span class="keyword">const</span> std::string portName );</div>
-<div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#a9200cde4f5337c0bc421d20bd4fcf654" title="Pure virtual openVirtualPort() function.">openVirtualPort</a>( <span class="keyword">const</span> std::string portName );</div>
-<div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#a36125c4fa16550345b57f4a4927f5b4a" title="Pure virtual closePort() function.">closePort</a>( <span class="keywordtype">void</span> );</div>
-<div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtMidi.html#a9a49ef73a1e6007444019a7ae095e195" title="Pure virtual getPortCount() function.">getPortCount</a>( <span class="keywordtype">void</span> );</div>
-<div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; std::string <a class="code" href="classRtMidi.html#a799e2b9f4df39b298518f2b394db3391" title="Pure virtual getPortName() function.">getPortName</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber );</div>
-<div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160;</div>
-<div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; <span class="keyword">protected</span>:</div>
-<div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; std::string clientName;</div>
-<div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160;</div>
-<div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; <span class="keywordtype">void</span> connect( <span class="keywordtype">void</span> );</div>
-<div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; <span class="keywordtype">void</span> initialize( <span class="keyword">const</span> std::string&amp; clientName );</div>
-<div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160;};</div>
-<div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160;</div>
-<div class="line"><a name="l00630"></a><span class="lineno"><a class="code" href="classMidiOutJack.html"> 630</a></span>&#160;<span class="keyword">class </span><a class="code" href="classMidiOutJack.html">MidiOutJack</a>: <span class="keyword">public</span> <a class="code" href="classMidiOutApi.html">MidiOutApi</a></div>
-<div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160;{</div>
-<div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; <a class="code" href="classMidiOutJack.html">MidiOutJack</a>( <span class="keyword">const</span> std::string clientName );</div>
-<div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; ~<a class="code" href="classMidiOutJack.html">MidiOutJack</a>( <span class="keywordtype">void</span> );</div>
-<div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406" title="MIDI API specifier arguments.">RtMidi::Api</a> getCurrentApi( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a1f59daf3120f47c0ae3891773112ddfa">RtMidi::UNIX_JACK</a>; };</div>
-<div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#ad9e30a89638f93193cb40edebaa536f5" title="Pure virtual openPort() function.">openPort</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber, <span class="keyword">const</span> std::string portName );</div>
-<div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#a9200cde4f5337c0bc421d20bd4fcf654" title="Pure virtual openVirtualPort() function.">openVirtualPort</a>( <span class="keyword">const</span> std::string portName );</div>
-<div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#a36125c4fa16550345b57f4a4927f5b4a" title="Pure virtual closePort() function.">closePort</a>( <span class="keywordtype">void</span> );</div>
-<div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtMidi.html#a9a49ef73a1e6007444019a7ae095e195" title="Pure virtual getPortCount() function.">getPortCount</a>( <span class="keywordtype">void</span> );</div>
-<div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; std::string <a class="code" href="classRtMidi.html#a799e2b9f4df39b298518f2b394db3391" title="Pure virtual getPortName() function.">getPortName</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber );</div>
-<div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; <span class="keywordtype">void</span> sendMessage( std::vector&lt;unsigned char&gt; *message );</div>
-<div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160;</div>
-<div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; <span class="keyword">protected</span>:</div>
-<div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; std::string clientName;</div>
-<div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160;</div>
-<div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; <span class="keywordtype">void</span> connect( <span class="keywordtype">void</span> );</div>
-<div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; <span class="keywordtype">void</span> initialize( <span class="keyword">const</span> std::string&amp; clientName );</div>
-<div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160;};</div>
-<div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160;</div>
-<div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160;<span class="preprocessor"></span></div>
-<div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160;<span class="preprocessor">#if defined(__LINUX_ALSA__)</span></div>
+<div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160;<span class="preprocessor">#if defined(__UNIX_JACK__)</span></div>
+<div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00613"></a><span class="lineno"><a class="code" href="classMidiInJack.html"> 613</a></span>&#160;<span class="keyword">class </span><a class="code" href="classMidiInJack.html">MidiInJack</a>: <span class="keyword">public</span> <a class="code" href="classMidiInApi.html">MidiInApi</a></div>
+<div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160;{</div>
+<div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; <a class="code" href="classMidiInJack.html">MidiInJack</a>( <span class="keyword">const</span> std::string clientName, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> queueSizeLimit );</div>
+<div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; ~<a class="code" href="classMidiInJack.html">MidiInJack</a>( <span class="keywordtype">void</span> );</div>
+<div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406" title="MIDI API specifier arguments.">RtMidi::Api</a> getCurrentApi( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a1f59daf3120f47c0ae3891773112ddfa">RtMidi::UNIX_JACK</a>; };</div>
+<div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#ad9e30a89638f93193cb40edebaa536f5" title="Pure virtual openPort() function.">openPort</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber, <span class="keyword">const</span> std::string portName );</div>
+<div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#a9200cde4f5337c0bc421d20bd4fcf654" title="Pure virtual openVirtualPort() function.">openVirtualPort</a>( <span class="keyword">const</span> std::string portName );</div>
+<div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#a36125c4fa16550345b57f4a4927f5b4a" title="Pure virtual closePort() function.">closePort</a>( <span class="keywordtype">void</span> );</div>
+<div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtMidi.html#a9a49ef73a1e6007444019a7ae095e195" title="Pure virtual getPortCount() function.">getPortCount</a>( <span class="keywordtype">void</span> );</div>
+<div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; std::string <a class="code" href="classRtMidi.html#a799e2b9f4df39b298518f2b394db3391" title="Pure virtual getPortName() function.">getPortName</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber );</div>
+<div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160;</div>
+<div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; <span class="keyword">protected</span>:</div>
+<div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; std::string clientName;</div>
+<div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160;</div>
+<div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; <span class="keywordtype">void</span> connect( <span class="keywordtype">void</span> );</div>
+<div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; <span class="keywordtype">void</span> initialize( <span class="keyword">const</span> std::string&amp; clientName );</div>
+<div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160;};</div>
+<div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160;</div>
+<div class="line"><a name="l00632"></a><span class="lineno"><a class="code" href="classMidiOutJack.html"> 632</a></span>&#160;<span class="keyword">class </span><a class="code" href="classMidiOutJack.html">MidiOutJack</a>: <span class="keyword">public</span> <a class="code" href="classMidiOutApi.html">MidiOutApi</a></div>
+<div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160;{</div>
+<div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; <a class="code" href="classMidiOutJack.html">MidiOutJack</a>( <span class="keyword">const</span> std::string clientName );</div>
+<div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; ~<a class="code" href="classMidiOutJack.html">MidiOutJack</a>( <span class="keywordtype">void</span> );</div>
+<div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406" title="MIDI API specifier arguments.">RtMidi::Api</a> getCurrentApi( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a1f59daf3120f47c0ae3891773112ddfa">RtMidi::UNIX_JACK</a>; };</div>
+<div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#ad9e30a89638f93193cb40edebaa536f5" title="Pure virtual openPort() function.">openPort</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber, <span class="keyword">const</span> std::string portName );</div>
+<div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#a9200cde4f5337c0bc421d20bd4fcf654" title="Pure virtual openVirtualPort() function.">openVirtualPort</a>( <span class="keyword">const</span> std::string portName );</div>
+<div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#a36125c4fa16550345b57f4a4927f5b4a" title="Pure virtual closePort() function.">closePort</a>( <span class="keywordtype">void</span> );</div>
+<div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtMidi.html#a9a49ef73a1e6007444019a7ae095e195" title="Pure virtual getPortCount() function.">getPortCount</a>( <span class="keywordtype">void</span> );</div>
+<div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; std::string <a class="code" href="classRtMidi.html#a799e2b9f4df39b298518f2b394db3391" title="Pure virtual getPortName() function.">getPortName</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber );</div>
+<div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; <span class="keywordtype">void</span> sendMessage( std::vector&lt;unsigned char&gt; *message );</div>
+<div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160;</div>
+<div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; <span class="keyword">protected</span>:</div>
+<div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; std::string clientName;</div>
+<div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160;</div>
+<div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; <span class="keywordtype">void</span> connect( <span class="keywordtype">void</span> );</div>
+<div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; <span class="keywordtype">void</span> initialize( <span class="keyword">const</span> std::string&amp; clientName );</div>
+<div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160;};</div>
+<div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160;</div>
+<div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160;<span class="preprocessor"></span></div>
-<div class="line"><a name="l00654"></a><span class="lineno"><a class="code" href="classMidiInAlsa.html"> 654</a></span>&#160;<span class="keyword">class </span><a class="code" href="classMidiInAlsa.html">MidiInAlsa</a>: <span class="keyword">public</span> <a class="code" href="classMidiInApi.html">MidiInApi</a></div>
-<div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160;{</div>
-<div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; <a class="code" href="classMidiInAlsa.html">MidiInAlsa</a>( <span class="keyword">const</span> std::string clientName, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> queueSizeLimit );</div>
-<div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; ~<a class="code" href="classMidiInAlsa.html">MidiInAlsa</a>( <span class="keywordtype">void</span> );</div>
-<div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406" title="MIDI API specifier arguments.">RtMidi::Api</a> getCurrentApi( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a20c691b24844d3ab5dbf882123235df2">RtMidi::LINUX_ALSA</a>; };</div>
-<div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#ad9e30a89638f93193cb40edebaa536f5" title="Pure virtual openPort() function.">openPort</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber, <span class="keyword">const</span> std::string portName );</div>
-<div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#a9200cde4f5337c0bc421d20bd4fcf654" title="Pure virtual openVirtualPort() function.">openVirtualPort</a>( <span class="keyword">const</span> std::string portName );</div>
-<div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#a36125c4fa16550345b57f4a4927f5b4a" title="Pure virtual closePort() function.">closePort</a>( <span class="keywordtype">void</span> );</div>
-<div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtMidi.html#a9a49ef73a1e6007444019a7ae095e195" title="Pure virtual getPortCount() function.">getPortCount</a>( <span class="keywordtype">void</span> );</div>
-<div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; std::string <a class="code" href="classRtMidi.html#a799e2b9f4df39b298518f2b394db3391" title="Pure virtual getPortName() function.">getPortName</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber );</div>
-<div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160;</div>
-<div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; <span class="keyword">protected</span>:</div>
-<div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; <span class="keywordtype">void</span> initialize( <span class="keyword">const</span> std::string&amp; clientName );</div>
-<div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160;};</div>
-<div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160;</div>
-<div class="line"><a name="l00670"></a><span class="lineno"><a class="code" href="classMidiOutAlsa.html"> 670</a></span>&#160;<span class="keyword">class </span><a class="code" href="classMidiOutAlsa.html">MidiOutAlsa</a>: <span class="keyword">public</span> <a class="code" href="classMidiOutApi.html">MidiOutApi</a></div>
-<div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160;{</div>
-<div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; <a class="code" href="classMidiOutAlsa.html">MidiOutAlsa</a>( <span class="keyword">const</span> std::string clientName );</div>
-<div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; ~<a class="code" href="classMidiOutAlsa.html">MidiOutAlsa</a>( <span class="keywordtype">void</span> );</div>
-<div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406" title="MIDI API specifier arguments.">RtMidi::Api</a> getCurrentApi( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a20c691b24844d3ab5dbf882123235df2">RtMidi::LINUX_ALSA</a>; };</div>
-<div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#ad9e30a89638f93193cb40edebaa536f5" title="Pure virtual openPort() function.">openPort</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber, <span class="keyword">const</span> std::string portName );</div>
-<div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#a9200cde4f5337c0bc421d20bd4fcf654" title="Pure virtual openVirtualPort() function.">openVirtualPort</a>( <span class="keyword">const</span> std::string portName );</div>
-<div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#a36125c4fa16550345b57f4a4927f5b4a" title="Pure virtual closePort() function.">closePort</a>( <span class="keywordtype">void</span> );</div>
-<div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtMidi.html#a9a49ef73a1e6007444019a7ae095e195" title="Pure virtual getPortCount() function.">getPortCount</a>( <span class="keywordtype">void</span> );</div>
-<div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; std::string <a class="code" href="classRtMidi.html#a799e2b9f4df39b298518f2b394db3391" title="Pure virtual getPortName() function.">getPortName</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber );</div>
-<div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; <span class="keywordtype">void</span> sendMessage( std::vector&lt;unsigned char&gt; *message );</div>
-<div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160;</div>
-<div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; <span class="keyword">protected</span>:</div>
-<div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; <span class="keywordtype">void</span> initialize( <span class="keyword">const</span> std::string&amp; clientName );</div>
-<div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160;};</div>
-<div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160;</div>
-<div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160;<span class="preprocessor"></span></div>
-<div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160;<span class="preprocessor">#if defined(__WINDOWS_MM__)</span></div>
+<div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160;<span class="preprocessor">#if defined(__LINUX_ALSA__)</span></div>
+<div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00656"></a><span class="lineno"><a class="code" href="classMidiInAlsa.html"> 656</a></span>&#160;<span class="keyword">class </span><a class="code" href="classMidiInAlsa.html">MidiInAlsa</a>: <span class="keyword">public</span> <a class="code" href="classMidiInApi.html">MidiInApi</a></div>
+<div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160;{</div>
+<div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; <a class="code" href="classMidiInAlsa.html">MidiInAlsa</a>( <span class="keyword">const</span> std::string clientName, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> queueSizeLimit );</div>
+<div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; ~<a class="code" href="classMidiInAlsa.html">MidiInAlsa</a>( <span class="keywordtype">void</span> );</div>
+<div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406" title="MIDI API specifier arguments.">RtMidi::Api</a> getCurrentApi( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a20c691b24844d3ab5dbf882123235df2">RtMidi::LINUX_ALSA</a>; };</div>
+<div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#ad9e30a89638f93193cb40edebaa536f5" title="Pure virtual openPort() function.">openPort</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber, <span class="keyword">const</span> std::string portName );</div>
+<div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#a9200cde4f5337c0bc421d20bd4fcf654" title="Pure virtual openVirtualPort() function.">openVirtualPort</a>( <span class="keyword">const</span> std::string portName );</div>
+<div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#a36125c4fa16550345b57f4a4927f5b4a" title="Pure virtual closePort() function.">closePort</a>( <span class="keywordtype">void</span> );</div>
+<div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtMidi.html#a9a49ef73a1e6007444019a7ae095e195" title="Pure virtual getPortCount() function.">getPortCount</a>( <span class="keywordtype">void</span> );</div>
+<div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; std::string <a class="code" href="classRtMidi.html#a799e2b9f4df39b298518f2b394db3391" title="Pure virtual getPortName() function.">getPortName</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber );</div>
+<div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160;</div>
+<div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; <span class="keyword">protected</span>:</div>
+<div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; <span class="keywordtype">void</span> initialize( <span class="keyword">const</span> std::string&amp; clientName );</div>
+<div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160;};</div>
+<div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160;</div>
+<div class="line"><a name="l00672"></a><span class="lineno"><a class="code" href="classMidiOutAlsa.html"> 672</a></span>&#160;<span class="keyword">class </span><a class="code" href="classMidiOutAlsa.html">MidiOutAlsa</a>: <span class="keyword">public</span> <a class="code" href="classMidiOutApi.html">MidiOutApi</a></div>
+<div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160;{</div>
+<div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; <a class="code" href="classMidiOutAlsa.html">MidiOutAlsa</a>( <span class="keyword">const</span> std::string clientName );</div>
+<div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; ~<a class="code" href="classMidiOutAlsa.html">MidiOutAlsa</a>( <span class="keywordtype">void</span> );</div>
+<div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406" title="MIDI API specifier arguments.">RtMidi::Api</a> getCurrentApi( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a20c691b24844d3ab5dbf882123235df2">RtMidi::LINUX_ALSA</a>; };</div>
+<div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#ad9e30a89638f93193cb40edebaa536f5" title="Pure virtual openPort() function.">openPort</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber, <span class="keyword">const</span> std::string portName );</div>
+<div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#a9200cde4f5337c0bc421d20bd4fcf654" title="Pure virtual openVirtualPort() function.">openVirtualPort</a>( <span class="keyword">const</span> std::string portName );</div>
+<div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#a36125c4fa16550345b57f4a4927f5b4a" title="Pure virtual closePort() function.">closePort</a>( <span class="keywordtype">void</span> );</div>
+<div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtMidi.html#a9a49ef73a1e6007444019a7ae095e195" title="Pure virtual getPortCount() function.">getPortCount</a>( <span class="keywordtype">void</span> );</div>
+<div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; std::string <a class="code" href="classRtMidi.html#a799e2b9f4df39b298518f2b394db3391" title="Pure virtual getPortName() function.">getPortName</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber );</div>
+<div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; <span class="keywordtype">void</span> sendMessage( std::vector&lt;unsigned char&gt; *message );</div>
+<div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160;</div>
+<div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; <span class="keyword">protected</span>:</div>
+<div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; <span class="keywordtype">void</span> initialize( <span class="keyword">const</span> std::string&amp; clientName );</div>
+<div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160;};</div>
+<div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160;</div>
+<div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160;<span class="preprocessor"></span></div>
-<div class="line"><a name="l00691"></a><span class="lineno"><a class="code" href="classMidiInWinMM.html"> 691</a></span>&#160;<span class="keyword">class </span><a class="code" href="classMidiInWinMM.html">MidiInWinMM</a>: <span class="keyword">public</span> <a class="code" href="classMidiInApi.html">MidiInApi</a></div>
-<div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160;{</div>
-<div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; <a class="code" href="classMidiInWinMM.html">MidiInWinMM</a>( <span class="keyword">const</span> std::string clientName, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> queueSizeLimit );</div>
-<div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; ~<a class="code" href="classMidiInWinMM.html">MidiInWinMM</a>( <span class="keywordtype">void</span> );</div>
-<div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406" title="MIDI API specifier arguments.">RtMidi::Api</a> getCurrentApi( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a647868cb4ed37f517bf185a7f41cb70f">RtMidi::WINDOWS_MM</a>; };</div>
-<div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#ad9e30a89638f93193cb40edebaa536f5" title="Pure virtual openPort() function.">openPort</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber, <span class="keyword">const</span> std::string portName );</div>
-<div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#a9200cde4f5337c0bc421d20bd4fcf654" title="Pure virtual openVirtualPort() function.">openVirtualPort</a>( <span class="keyword">const</span> std::string portName );</div>
-<div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#a36125c4fa16550345b57f4a4927f5b4a" title="Pure virtual closePort() function.">closePort</a>( <span class="keywordtype">void</span> );</div>
-<div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtMidi.html#a9a49ef73a1e6007444019a7ae095e195" title="Pure virtual getPortCount() function.">getPortCount</a>( <span class="keywordtype">void</span> );</div>
-<div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; std::string <a class="code" href="classRtMidi.html#a799e2b9f4df39b298518f2b394db3391" title="Pure virtual getPortName() function.">getPortName</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber );</div>
-<div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160;</div>
-<div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; <span class="keyword">protected</span>:</div>
-<div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; <span class="keywordtype">void</span> initialize( <span class="keyword">const</span> std::string&amp; clientName );</div>
-<div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160;};</div>
-<div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160;</div>
-<div class="line"><a name="l00707"></a><span class="lineno"><a class="code" href="classMidiOutWinMM.html"> 707</a></span>&#160;<span class="keyword">class </span><a class="code" href="classMidiOutWinMM.html">MidiOutWinMM</a>: <span class="keyword">public</span> <a class="code" href="classMidiOutApi.html">MidiOutApi</a></div>
-<div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160;{</div>
-<div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; <a class="code" href="classMidiOutWinMM.html">MidiOutWinMM</a>( <span class="keyword">const</span> std::string clientName );</div>
-<div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; ~<a class="code" href="classMidiOutWinMM.html">MidiOutWinMM</a>( <span class="keywordtype">void</span> );</div>
-<div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406" title="MIDI API specifier arguments.">RtMidi::Api</a> getCurrentApi( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a647868cb4ed37f517bf185a7f41cb70f">RtMidi::WINDOWS_MM</a>; };</div>
-<div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#ad9e30a89638f93193cb40edebaa536f5" title="Pure virtual openPort() function.">openPort</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber, <span class="keyword">const</span> std::string portName );</div>
-<div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#a9200cde4f5337c0bc421d20bd4fcf654" title="Pure virtual openVirtualPort() function.">openVirtualPort</a>( <span class="keyword">const</span> std::string portName );</div>
-<div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#a36125c4fa16550345b57f4a4927f5b4a" title="Pure virtual closePort() function.">closePort</a>( <span class="keywordtype">void</span> );</div>
-<div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtMidi.html#a9a49ef73a1e6007444019a7ae095e195" title="Pure virtual getPortCount() function.">getPortCount</a>( <span class="keywordtype">void</span> );</div>
-<div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; std::string <a class="code" href="classRtMidi.html#a799e2b9f4df39b298518f2b394db3391" title="Pure virtual getPortName() function.">getPortName</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber );</div>
-<div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; <span class="keywordtype">void</span> sendMessage( std::vector&lt;unsigned char&gt; *message );</div>
-<div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160;</div>
-<div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; <span class="keyword">protected</span>:</div>
-<div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; <span class="keywordtype">void</span> initialize( <span class="keyword">const</span> std::string&amp; clientName );</div>
-<div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160;};</div>
-<div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160;</div>
-<div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160;<span class="preprocessor"></span></div>
-<div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160;<span class="preprocessor">#if defined(__RTMIDI_DUMMY__)</span></div>
+<div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160;<span class="preprocessor">#if defined(__WINDOWS_MM__)</span></div>
+<div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00693"></a><span class="lineno"><a class="code" href="classMidiInWinMM.html"> 693</a></span>&#160;<span class="keyword">class </span><a class="code" href="classMidiInWinMM.html">MidiInWinMM</a>: <span class="keyword">public</span> <a class="code" href="classMidiInApi.html">MidiInApi</a></div>
+<div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160;{</div>
+<div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; <a class="code" href="classMidiInWinMM.html">MidiInWinMM</a>( <span class="keyword">const</span> std::string clientName, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> queueSizeLimit );</div>
+<div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; ~<a class="code" href="classMidiInWinMM.html">MidiInWinMM</a>( <span class="keywordtype">void</span> );</div>
+<div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406" title="MIDI API specifier arguments.">RtMidi::Api</a> getCurrentApi( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a647868cb4ed37f517bf185a7f41cb70f">RtMidi::WINDOWS_MM</a>; };</div>
+<div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#ad9e30a89638f93193cb40edebaa536f5" title="Pure virtual openPort() function.">openPort</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber, <span class="keyword">const</span> std::string portName );</div>
+<div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#a9200cde4f5337c0bc421d20bd4fcf654" title="Pure virtual openVirtualPort() function.">openVirtualPort</a>( <span class="keyword">const</span> std::string portName );</div>
+<div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#a36125c4fa16550345b57f4a4927f5b4a" title="Pure virtual closePort() function.">closePort</a>( <span class="keywordtype">void</span> );</div>
+<div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtMidi.html#a9a49ef73a1e6007444019a7ae095e195" title="Pure virtual getPortCount() function.">getPortCount</a>( <span class="keywordtype">void</span> );</div>
+<div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; std::string <a class="code" href="classRtMidi.html#a799e2b9f4df39b298518f2b394db3391" title="Pure virtual getPortName() function.">getPortName</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber );</div>
+<div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160;</div>
+<div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; <span class="keyword">protected</span>:</div>
+<div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; <span class="keywordtype">void</span> initialize( <span class="keyword">const</span> std::string&amp; clientName );</div>
+<div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160;};</div>
+<div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160;</div>
+<div class="line"><a name="l00709"></a><span class="lineno"><a class="code" href="classMidiOutWinMM.html"> 709</a></span>&#160;<span class="keyword">class </span><a class="code" href="classMidiOutWinMM.html">MidiOutWinMM</a>: <span class="keyword">public</span> <a class="code" href="classMidiOutApi.html">MidiOutApi</a></div>
+<div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160;{</div>
+<div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; <a class="code" href="classMidiOutWinMM.html">MidiOutWinMM</a>( <span class="keyword">const</span> std::string clientName );</div>
+<div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; ~<a class="code" href="classMidiOutWinMM.html">MidiOutWinMM</a>( <span class="keywordtype">void</span> );</div>
+<div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406" title="MIDI API specifier arguments.">RtMidi::Api</a> getCurrentApi( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a647868cb4ed37f517bf185a7f41cb70f">RtMidi::WINDOWS_MM</a>; };</div>
+<div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#ad9e30a89638f93193cb40edebaa536f5" title="Pure virtual openPort() function.">openPort</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber, <span class="keyword">const</span> std::string portName );</div>
+<div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#a9200cde4f5337c0bc421d20bd4fcf654" title="Pure virtual openVirtualPort() function.">openVirtualPort</a>( <span class="keyword">const</span> std::string portName );</div>
+<div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#a36125c4fa16550345b57f4a4927f5b4a" title="Pure virtual closePort() function.">closePort</a>( <span class="keywordtype">void</span> );</div>
+<div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtMidi.html#a9a49ef73a1e6007444019a7ae095e195" title="Pure virtual getPortCount() function.">getPortCount</a>( <span class="keywordtype">void</span> );</div>
+<div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; std::string <a class="code" href="classRtMidi.html#a799e2b9f4df39b298518f2b394db3391" title="Pure virtual getPortName() function.">getPortName</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber );</div>
+<div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; <span class="keywordtype">void</span> sendMessage( std::vector&lt;unsigned char&gt; *message );</div>
+<div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160;</div>
+<div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; <span class="keyword">protected</span>:</div>
+<div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; <span class="keywordtype">void</span> initialize( <span class="keyword">const</span> std::string&amp; clientName );</div>
+<div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160;};</div>
+<div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160;</div>
+<div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160;<span class="preprocessor"></span></div>
-<div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160;<span class="keyword">class </span>MidiInDummy: <span class="keyword">public</span> <a class="code" href="classMidiInApi.html">MidiInApi</a></div>
-<div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160;{</div>
-<div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; MidiInDummy( <span class="keyword">const</span> std::string <span class="comment">/*clientName*/</span>, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> queueSizeLimit ) : <a class="code" href="classMidiInApi.html">MidiInApi</a>( queueSizeLimit ) { errorString_ = <span class="stringliteral">&quot;MidiInDummy: This class provides no functionality.&quot;</span>; error( <a class="code" href="classRtMidiError.html#a741314057cec5fb8c743c12f284905eea778e66d730c9ff2aab7000aed36ca8df">RtMidiError::WARNING</a>, errorString_ ); }</div>
-<div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406" title="MIDI API specifier arguments.">RtMidi::Api</a> getCurrentApi( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a54dba406ab358492005ce2b966a2d959">RtMidi::RTMIDI_DUMMY</a>; }</div>
-<div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#ad9e30a89638f93193cb40edebaa536f5" title="Pure virtual openPort() function.">openPort</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <span class="comment">/*portNumber*/</span>, <span class="keyword">const</span> std::string <span class="comment">/*portName*/</span> ) {}</div>
-<div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#a9200cde4f5337c0bc421d20bd4fcf654" title="Pure virtual openVirtualPort() function.">openVirtualPort</a>( <span class="keyword">const</span> std::string <span class="comment">/*portName*/</span> ) {}</div>
-<div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#a36125c4fa16550345b57f4a4927f5b4a" title="Pure virtual closePort() function.">closePort</a>( <span class="keywordtype">void</span> ) {}</div>
-<div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtMidi.html#a9a49ef73a1e6007444019a7ae095e195" title="Pure virtual getPortCount() function.">getPortCount</a>( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> 0; }</div>
-<div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; std::string <a class="code" href="classRtMidi.html#a799e2b9f4df39b298518f2b394db3391" title="Pure virtual getPortName() function.">getPortName</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber ) { <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>; }</div>
-<div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160;</div>
-<div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; <span class="keyword">protected</span>:</div>
-<div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; <span class="keywordtype">void</span> initialize( <span class="keyword">const</span> std::string&amp; <span class="comment">/*clientName*/</span> ) {}</div>
-<div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160;};</div>
-<div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160;</div>
-<div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160;<span class="keyword">class </span>MidiOutDummy: <span class="keyword">public</span> <a class="code" href="classMidiOutApi.html">MidiOutApi</a></div>
-<div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160;{</div>
-<div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; MidiOutDummy( <span class="keyword">const</span> std::string <span class="comment">/*clientName*/</span> ) { errorString_ = <span class="stringliteral">&quot;MidiOutDummy: This class provides no functionality.&quot;</span>; error( <a class="code" href="classRtMidiError.html#a741314057cec5fb8c743c12f284905eea778e66d730c9ff2aab7000aed36ca8df">RtMidiError::WARNING</a>, errorString_ ); }</div>
-<div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406" title="MIDI API specifier arguments.">RtMidi::Api</a> getCurrentApi( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a54dba406ab358492005ce2b966a2d959">RtMidi::RTMIDI_DUMMY</a>; }</div>
-<div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#ad9e30a89638f93193cb40edebaa536f5" title="Pure virtual openPort() function.">openPort</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <span class="comment">/*portNumber*/</span>, <span class="keyword">const</span> std::string <span class="comment">/*portName*/</span> ) {}</div>
-<div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#a9200cde4f5337c0bc421d20bd4fcf654" title="Pure virtual openVirtualPort() function.">openVirtualPort</a>( <span class="keyword">const</span> std::string <span class="comment">/*portName*/</span> ) {}</div>
-<div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#a36125c4fa16550345b57f4a4927f5b4a" title="Pure virtual closePort() function.">closePort</a>( <span class="keywordtype">void</span> ) {}</div>
-<div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtMidi.html#a9a49ef73a1e6007444019a7ae095e195" title="Pure virtual getPortCount() function.">getPortCount</a>( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> 0; }</div>
-<div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; std::string <a class="code" href="classRtMidi.html#a799e2b9f4df39b298518f2b394db3391" title="Pure virtual getPortName() function.">getPortName</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <span class="comment">/*portNumber*/</span> ) { <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>; }</div>
-<div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; <span class="keywordtype">void</span> sendMessage( std::vector&lt;unsigned char&gt; * <span class="comment">/*message*/</span> ) {}</div>
-<div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160;</div>
-<div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; <span class="keyword">protected</span>:</div>
-<div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; <span class="keywordtype">void</span> initialize( <span class="keyword">const</span> std::string&amp; <span class="comment">/*clientName*/</span> ) {}</div>
-<div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160;};</div>
-<div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160;</div>
-<div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160;<span class="preprocessor">#if defined(__RTMIDI_DUMMY__)</span></div>
+<div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160;<span class="keyword">class </span>MidiInDummy: <span class="keyword">public</span> <a class="code" href="classMidiInApi.html">MidiInApi</a></div>
+<div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160;{</div>
+<div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; MidiInDummy( <span class="keyword">const</span> std::string <span class="comment">/*clientName*/</span>, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> queueSizeLimit ) : <a class="code" href="classMidiInApi.html">MidiInApi</a>( queueSizeLimit ) { errorString_ = <span class="stringliteral">&quot;MidiInDummy: This class provides no functionality.&quot;</span>; error( <a class="code" href="classRtMidiError.html#a741314057cec5fb8c743c12f284905eea778e66d730c9ff2aab7000aed36ca8df">RtMidiError::WARNING</a>, errorString_ ); }</div>
+<div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406" title="MIDI API specifier arguments.">RtMidi::Api</a> getCurrentApi( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a54dba406ab358492005ce2b966a2d959">RtMidi::RTMIDI_DUMMY</a>; }</div>
+<div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#ad9e30a89638f93193cb40edebaa536f5" title="Pure virtual openPort() function.">openPort</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <span class="comment">/*portNumber*/</span>, <span class="keyword">const</span> std::string <span class="comment">/*portName*/</span> ) {}</div>
+<div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#a9200cde4f5337c0bc421d20bd4fcf654" title="Pure virtual openVirtualPort() function.">openVirtualPort</a>( <span class="keyword">const</span> std::string <span class="comment">/*portName*/</span> ) {}</div>
+<div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#a36125c4fa16550345b57f4a4927f5b4a" title="Pure virtual closePort() function.">closePort</a>( <span class="keywordtype">void</span> ) {}</div>
+<div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtMidi.html#a9a49ef73a1e6007444019a7ae095e195" title="Pure virtual getPortCount() function.">getPortCount</a>( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> 0; }</div>
+<div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; std::string <a class="code" href="classRtMidi.html#a799e2b9f4df39b298518f2b394db3391" title="Pure virtual getPortName() function.">getPortName</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber ) { <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>; }</div>
+<div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160;</div>
+<div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; <span class="keyword">protected</span>:</div>
+<div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; <span class="keywordtype">void</span> initialize( <span class="keyword">const</span> std::string&amp; <span class="comment">/*clientName*/</span> ) {}</div>
+<div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160;};</div>
+<div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160;</div>
+<div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160;<span class="keyword">class </span>MidiOutDummy: <span class="keyword">public</span> <a class="code" href="classMidiOutApi.html">MidiOutApi</a></div>
+<div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160;{</div>
+<div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; MidiOutDummy( <span class="keyword">const</span> std::string <span class="comment">/*clientName*/</span> ) { errorString_ = <span class="stringliteral">&quot;MidiOutDummy: This class provides no functionality.&quot;</span>; error( <a class="code" href="classRtMidiError.html#a741314057cec5fb8c743c12f284905eea778e66d730c9ff2aab7000aed36ca8df">RtMidiError::WARNING</a>, errorString_ ); }</div>
+<div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406" title="MIDI API specifier arguments.">RtMidi::Api</a> getCurrentApi( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a54dba406ab358492005ce2b966a2d959">RtMidi::RTMIDI_DUMMY</a>; }</div>
+<div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#ad9e30a89638f93193cb40edebaa536f5" title="Pure virtual openPort() function.">openPort</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <span class="comment">/*portNumber*/</span>, <span class="keyword">const</span> std::string <span class="comment">/*portName*/</span> ) {}</div>
+<div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#a9200cde4f5337c0bc421d20bd4fcf654" title="Pure virtual openVirtualPort() function.">openVirtualPort</a>( <span class="keyword">const</span> std::string <span class="comment">/*portName*/</span> ) {}</div>
+<div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#a36125c4fa16550345b57f4a4927f5b4a" title="Pure virtual closePort() function.">closePort</a>( <span class="keywordtype">void</span> ) {}</div>
+<div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtMidi.html#a9a49ef73a1e6007444019a7ae095e195" title="Pure virtual getPortCount() function.">getPortCount</a>( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> 0; }</div>
+<div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160; std::string <a class="code" href="classRtMidi.html#a799e2b9f4df39b298518f2b394db3391" title="Pure virtual getPortName() function.">getPortName</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <span class="comment">/*portNumber*/</span> ) { <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>; }</div>
+<div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; <span class="keywordtype">void</span> sendMessage( std::vector&lt;unsigned char&gt; * <span class="comment">/*message*/</span> ) {}</div>
+<div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160;</div>
+<div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; <span class="keyword">protected</span>:</div>
+<div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; <span class="keywordtype">void</span> initialize( <span class="keyword">const</span> std::string&amp; <span class="comment">/*clientName*/</span> ) {}</div>
+<div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160;};</div>
+<div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160;</div>
<div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160;<span class="preprocessor">#endif</span></div>
</div><!-- fragment --></div><!-- contents -->
<HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
- <td>&copy;2003-2014 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ <td>&copy;2003-2016 Gary P. Scavone, McGill University. All Rights Reserved.<br>
Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
</table>
</BODY>
diff --git a/doc/html/annotated.html b/doc/html/annotated.html
index 5602631..1ac057d 100644
--- a/doc/html/annotated.html
+++ b/doc/html/annotated.html
@@ -39,7 +39,7 @@
</div><!-- contents -->
<HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
- <td>&copy;2003-2014 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ <td>&copy;2003-2016 Gary P. Scavone, McGill University. All Rights Reserved.<br>
Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
</table>
</BODY>
diff --git a/doc/html/classMidiApi-members.html b/doc/html/classMidiApi-members.html
index e8ea45e..c9dcb12 100644
--- a/doc/html/classMidiApi-members.html
+++ b/doc/html/classMidiApi-members.html
@@ -21,7 +21,7 @@
</table></div><!-- contents -->
<HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
- <td>&copy;2003-2014 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ <td>&copy;2003-2016 Gary P. Scavone, McGill University. All Rights Reserved.<br>
Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
</table>
</BODY>
diff --git a/doc/html/classMidiApi.html b/doc/html/classMidiApi.html
index 2d2b661..adbf3a4 100644
--- a/doc/html/classMidiApi.html
+++ b/doc/html/classMidiApi.html
@@ -49,7 +49,7 @@ void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="clas
</div><!-- contents -->
<HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
- <td>&copy;2003-2014 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ <td>&copy;2003-2016 Gary P. Scavone, McGill University. All Rights Reserved.<br>
Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
</table>
</BODY>
diff --git a/doc/html/classMidiInAlsa-members.html b/doc/html/classMidiInAlsa-members.html
index 60becbe..35e61c0 100644
--- a/doc/html/classMidiInAlsa-members.html
+++ b/doc/html/classMidiInAlsa-members.html
@@ -21,7 +21,7 @@
</table></div><!-- contents -->
<HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
- <td>&copy;2003-2014 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ <td>&copy;2003-2016 Gary P. Scavone, McGill University. All Rights Reserved.<br>
Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
</table>
</BODY>
diff --git a/doc/html/classMidiInAlsa.html b/doc/html/classMidiInAlsa.html
index 324ee69..262c4bb 100644
--- a/doc/html/classMidiInAlsa.html
+++ b/doc/html/classMidiInAlsa.html
@@ -41,7 +41,7 @@ void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="clas
</div><!-- contents -->
<HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
- <td>&copy;2003-2014 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ <td>&copy;2003-2016 Gary P. Scavone, McGill University. All Rights Reserved.<br>
Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
</table>
</BODY>
diff --git a/doc/html/classMidiInApi-members.html b/doc/html/classMidiInApi-members.html
index 1ad6021..7474102 100644
--- a/doc/html/classMidiInApi-members.html
+++ b/doc/html/classMidiInApi-members.html
@@ -21,7 +21,7 @@
</table></div><!-- contents -->
<HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
- <td>&copy;2003-2014 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ <td>&copy;2003-2016 Gary P. Scavone, McGill University. All Rights Reserved.<br>
Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
</table>
</BODY>
diff --git a/doc/html/classMidiInApi.html b/doc/html/classMidiInApi.html
index 559d178..7d00b35 100644
--- a/doc/html/classMidiInApi.html
+++ b/doc/html/classMidiInApi.html
@@ -54,7 +54,7 @@ void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="clas
</div><!-- contents -->
<HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
- <td>&copy;2003-2014 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ <td>&copy;2003-2016 Gary P. Scavone, McGill University. All Rights Reserved.<br>
Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
</table>
</BODY>
diff --git a/doc/html/classMidiInCore-members.html b/doc/html/classMidiInCore-members.html
index a276d40..81c818a 100644
--- a/doc/html/classMidiInCore-members.html
+++ b/doc/html/classMidiInCore-members.html
@@ -21,7 +21,7 @@
</table></div><!-- contents -->
<HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
- <td>&copy;2003-2014 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ <td>&copy;2003-2016 Gary P. Scavone, McGill University. All Rights Reserved.<br>
Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
</table>
</BODY>
diff --git a/doc/html/classMidiInCore.html b/doc/html/classMidiInCore.html
index 74898b0..27a44b6 100644
--- a/doc/html/classMidiInCore.html
+++ b/doc/html/classMidiInCore.html
@@ -41,7 +41,7 @@ void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="clas
</div><!-- contents -->
<HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
- <td>&copy;2003-2014 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ <td>&copy;2003-2016 Gary P. Scavone, McGill University. All Rights Reserved.<br>
Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
</table>
</BODY>
diff --git a/doc/html/classMidiInJack-members.html b/doc/html/classMidiInJack-members.html
index f1740be..cc6975c 100644
--- a/doc/html/classMidiInJack-members.html
+++ b/doc/html/classMidiInJack-members.html
@@ -21,7 +21,7 @@
</table></div><!-- contents -->
<HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
- <td>&copy;2003-2014 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ <td>&copy;2003-2016 Gary P. Scavone, McGill University. All Rights Reserved.<br>
Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
</table>
</BODY>
diff --git a/doc/html/classMidiInJack.html b/doc/html/classMidiInJack.html
index a0ccdcc..bb064e2 100644
--- a/doc/html/classMidiInJack.html
+++ b/doc/html/classMidiInJack.html
@@ -41,7 +41,7 @@ void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="clas
</div><!-- contents -->
<HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
- <td>&copy;2003-2014 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ <td>&copy;2003-2016 Gary P. Scavone, McGill University. All Rights Reserved.<br>
Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
</table>
</BODY>
diff --git a/doc/html/classMidiInWinMM-members.html b/doc/html/classMidiInWinMM-members.html
index 7810c3c..ceb7461 100644
--- a/doc/html/classMidiInWinMM-members.html
+++ b/doc/html/classMidiInWinMM-members.html
@@ -21,7 +21,7 @@
</table></div><!-- contents -->
<HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
- <td>&copy;2003-2014 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ <td>&copy;2003-2016 Gary P. Scavone, McGill University. All Rights Reserved.<br>
Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
</table>
</BODY>
diff --git a/doc/html/classMidiInWinMM.html b/doc/html/classMidiInWinMM.html
index 6d254e3..5f04010 100644
--- a/doc/html/classMidiInWinMM.html
+++ b/doc/html/classMidiInWinMM.html
@@ -41,7 +41,7 @@ void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="clas
</div><!-- contents -->
<HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
- <td>&copy;2003-2014 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ <td>&copy;2003-2016 Gary P. Scavone, McGill University. All Rights Reserved.<br>
Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
</table>
</BODY>
diff --git a/doc/html/classMidiOutAlsa-members.html b/doc/html/classMidiOutAlsa-members.html
index 89ca70c..b0ffa84 100644
--- a/doc/html/classMidiOutAlsa-members.html
+++ b/doc/html/classMidiOutAlsa-members.html
@@ -21,7 +21,7 @@
</table></div><!-- contents -->
<HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
- <td>&copy;2003-2014 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ <td>&copy;2003-2016 Gary P. Scavone, McGill University. All Rights Reserved.<br>
Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
</table>
</BODY>
diff --git a/doc/html/classMidiOutAlsa.html b/doc/html/classMidiOutAlsa.html
index 264d362..fcc074c 100644
--- a/doc/html/classMidiOutAlsa.html
+++ b/doc/html/classMidiOutAlsa.html
@@ -41,7 +41,7 @@ void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="clas
</div><!-- contents -->
<HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
- <td>&copy;2003-2014 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ <td>&copy;2003-2016 Gary P. Scavone, McGill University. All Rights Reserved.<br>
Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
</table>
</BODY>
diff --git a/doc/html/classMidiOutApi-members.html b/doc/html/classMidiOutApi-members.html
index b5d645a..d89d16f 100644
--- a/doc/html/classMidiOutApi-members.html
+++ b/doc/html/classMidiOutApi-members.html
@@ -21,7 +21,7 @@
</table></div><!-- contents -->
<HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
- <td>&copy;2003-2014 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ <td>&copy;2003-2016 Gary P. Scavone, McGill University. All Rights Reserved.<br>
Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
</table>
</BODY>
diff --git a/doc/html/classMidiOutApi.html b/doc/html/classMidiOutApi.html
index 31ab7f2..e92e3fe 100644
--- a/doc/html/classMidiOutApi.html
+++ b/doc/html/classMidiOutApi.html
@@ -44,7 +44,7 @@ void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="clas
</div><!-- contents -->
<HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
- <td>&copy;2003-2014 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ <td>&copy;2003-2016 Gary P. Scavone, McGill University. All Rights Reserved.<br>
Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
</table>
</BODY>
diff --git a/doc/html/classMidiOutCore-members.html b/doc/html/classMidiOutCore-members.html
index 2c388bd..72b6831 100644
--- a/doc/html/classMidiOutCore-members.html
+++ b/doc/html/classMidiOutCore-members.html
@@ -21,7 +21,7 @@
</table></div><!-- contents -->
<HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
- <td>&copy;2003-2014 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ <td>&copy;2003-2016 Gary P. Scavone, McGill University. All Rights Reserved.<br>
Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
</table>
</BODY>
diff --git a/doc/html/classMidiOutCore.html b/doc/html/classMidiOutCore.html
index 02637ce..5d6024f 100644
--- a/doc/html/classMidiOutCore.html
+++ b/doc/html/classMidiOutCore.html
@@ -41,7 +41,7 @@ void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="clas
</div><!-- contents -->
<HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
- <td>&copy;2003-2014 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ <td>&copy;2003-2016 Gary P. Scavone, McGill University. All Rights Reserved.<br>
Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
</table>
</BODY>
diff --git a/doc/html/classMidiOutJack-members.html b/doc/html/classMidiOutJack-members.html
index 181f437..3ad61b4 100644
--- a/doc/html/classMidiOutJack-members.html
+++ b/doc/html/classMidiOutJack-members.html
@@ -21,7 +21,7 @@
</table></div><!-- contents -->
<HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
- <td>&copy;2003-2014 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ <td>&copy;2003-2016 Gary P. Scavone, McGill University. All Rights Reserved.<br>
Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
</table>
</BODY>
diff --git a/doc/html/classMidiOutJack.html b/doc/html/classMidiOutJack.html
index bf07e98..5c3ed9f 100644
--- a/doc/html/classMidiOutJack.html
+++ b/doc/html/classMidiOutJack.html
@@ -41,7 +41,7 @@ void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="clas
</div><!-- contents -->
<HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
- <td>&copy;2003-2014 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ <td>&copy;2003-2016 Gary P. Scavone, McGill University. All Rights Reserved.<br>
Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
</table>
</BODY>
diff --git a/doc/html/classMidiOutWinMM-members.html b/doc/html/classMidiOutWinMM-members.html
index 32015ea..a7a65f8 100644
--- a/doc/html/classMidiOutWinMM-members.html
+++ b/doc/html/classMidiOutWinMM-members.html
@@ -21,7 +21,7 @@
</table></div><!-- contents -->
<HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
- <td>&copy;2003-2014 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ <td>&copy;2003-2016 Gary P. Scavone, McGill University. All Rights Reserved.<br>
Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
</table>
</BODY>
diff --git a/doc/html/classMidiOutWinMM.html b/doc/html/classMidiOutWinMM.html
index be95ec5..365eec8 100644
--- a/doc/html/classMidiOutWinMM.html
+++ b/doc/html/classMidiOutWinMM.html
@@ -41,7 +41,7 @@ void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="clas
</div><!-- contents -->
<HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
- <td>&copy;2003-2014 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ <td>&copy;2003-2016 Gary P. Scavone, McGill University. All Rights Reserved.<br>
Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
</table>
</BODY>
diff --git a/doc/html/classRtMidi-members.html b/doc/html/classRtMidi-members.html
index 1eec59f..6a74952 100644
--- a/doc/html/classRtMidi-members.html
+++ b/doc/html/classRtMidi-members.html
@@ -29,14 +29,14 @@
<tr><td class="entry"><a class="el" href="classRtMidi.html#ad9e30a89638f93193cb40edebaa536f5">openPort</a>(unsigned int portNumber=0, const std::string portName=std::string(&quot;RtMidi&quot;))=0</td><td class="entry"><a class="el" href="classRtMidi.html">RtMidi</a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classRtMidi.html#a9200cde4f5337c0bc421d20bd4fcf654">openVirtualPort</a>(const std::string portName=std::string(&quot;RtMidi&quot;))=0</td><td class="entry"><a class="el" href="classRtMidi.html">RtMidi</a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a54dba406ab358492005ce2b966a2d959">RTMIDI_DUMMY</a> enum value</td><td class="entry"><a class="el" href="classRtMidi.html">RtMidi</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classRtMidi.html#a9c9123f494b523f40ee5040a7ed24478">setErrorCallback</a>(RtMidiErrorCallback errorCallback=NULL)=0</td><td class="entry"><a class="el" href="classRtMidi.html">RtMidi</a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classRtMidi.html#aa6d6f2e0d06c64268c8898aa15f3a5df">setErrorCallback</a>(RtMidiErrorCallback errorCallback=NULL, void *userData=0)=0</td><td class="entry"><a class="el" href="classRtMidi.html">RtMidi</a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a1f59daf3120f47c0ae3891773112ddfa">UNIX_JACK</a> enum value</td><td class="entry"><a class="el" href="classRtMidi.html">RtMidi</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a4a4d9f7a38a082d6b0d5dd2b5de94ab9">UNSPECIFIED</a> enum value</td><td class="entry"><a class="el" href="classRtMidi.html">RtMidi</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a647868cb4ed37f517bf185a7f41cb70f">WINDOWS_MM</a> enum value</td><td class="entry"><a class="el" href="classRtMidi.html">RtMidi</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
<HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
- <td>&copy;2003-2014 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ <td>&copy;2003-2016 Gary P. Scavone, McGill University. All Rights Reserved.<br>
Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
</table>
</BODY>
diff --git a/doc/html/classRtMidi.html b/doc/html/classRtMidi.html
index 72737e2..8f76a38 100644
--- a/doc/html/classRtMidi.html
+++ b/doc/html/classRtMidi.html
@@ -76,9 +76,9 @@ virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" hr
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRtMidi.html#a74fc50ce1aec6b8ecb0c31094b3024a9">isPortOpen</a> (void) const =0</td></tr>
<tr class="memdesc:a74fc50ce1aec6b8ecb0c31094b3024a9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true if a port is open and false if not. <br/></td></tr>
<tr class="separator:a74fc50ce1aec6b8ecb0c31094b3024a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a9c9123f494b523f40ee5040a7ed24478"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRtMidi.html#a9c9123f494b523f40ee5040a7ed24478">setErrorCallback</a> (<a class="el" href="RtMidi_8h.html#a530aef8e3582ad9c4042f732eea14abb">RtMidiErrorCallback</a> errorCallback=NULL)=0</td></tr>
-<tr class="memdesc:a9c9123f494b523f40ee5040a7ed24478"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set an error callback function to be invoked when an error has occured. <a href="#a9c9123f494b523f40ee5040a7ed24478">More...</a><br/></td></tr>
-<tr class="separator:a9c9123f494b523f40ee5040a7ed24478"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa6d6f2e0d06c64268c8898aa15f3a5df"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRtMidi.html#aa6d6f2e0d06c64268c8898aa15f3a5df">setErrorCallback</a> (<a class="el" href="RtMidi_8h.html#a36eff69cc45bba67a1f315823c7bc78d">RtMidiErrorCallback</a> errorCallback=NULL, void *userData=0)=0</td></tr>
+<tr class="memdesc:aa6d6f2e0d06c64268c8898aa15f3a5df"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set an error callback function to be invoked when an error has occured. <a href="#aa6d6f2e0d06c64268c8898aa15f3a5df">More...</a><br/></td></tr>
+<tr class="separator:aa6d6f2e0d06c64268c8898aa15f3a5df"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
@@ -94,7 +94,7 @@ static std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="
<div class="textblock"><p>An abstract base class for realtime MIDI input/output. </p>
<p>This class implements some common functionality for the realtime MIDI input/output subclasses <a class="el" href="classRtMidiIn.html" title="A realtime MIDI input class.">RtMidiIn</a> and <a class="el" href="classRtMidiOut.html" title="A realtime MIDI output class.">RtMidiOut</a>.</p>
<p><a class="el" href="classRtMidi.html" title="An abstract base class for realtime MIDI input/output.">RtMidi</a> WWW site: <a href="http://music.mcgill.ca/~gary/rtmidi/">http://music.mcgill.ca/~gary/rtmidi/</a></p>
-<p><a class="el" href="classRtMidi.html" title="An abstract base class for realtime MIDI input/output.">RtMidi</a>: realtime MIDI i/o C++ classes Copyright (c) 2003-2014 Gary P. Scavone</p>
+<p><a class="el" href="classRtMidi.html" title="An abstract base class for realtime MIDI input/output.">RtMidi</a>: realtime MIDI i/o C++ classes Copyright (c) 2003-2016 Gary P. Scavone</p>
<p>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:</p>
<p>The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.</p>
<p>Any person wishing to distribute modifications to the Software is asked to send the modifications to the original developer so that they can be incorporated into the canonical version. This is, however, not a binding provision of this license.</p>
@@ -162,7 +162,7 @@ static std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="
</div>
</div>
-<a class="anchor" id="a9c9123f494b523f40ee5040a7ed24478"></a>
+<a class="anchor" id="aa6d6f2e0d06c64268c8898aa15f3a5df"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
@@ -172,9 +172,19 @@ static std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="
<tr>
<td class="memname">virtual void RtMidi::setErrorCallback </td>
<td>(</td>
- <td class="paramtype"><a class="el" href="RtMidi_8h.html#a530aef8e3582ad9c4042f732eea14abb">RtMidiErrorCallback</a>&#160;</td>
- <td class="paramname"><em>errorCallback</em> = <code>NULL</code></td><td>)</td>
+ <td class="paramtype"><a class="el" href="RtMidi_8h.html#a36eff69cc45bba67a1f315823c7bc78d">RtMidiErrorCallback</a>&#160;</td>
+ <td class="paramname"><em>errorCallback</em> = <code>NULL</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">void *&#160;</td>
+ <td class="paramname"><em>userData</em> = <code>0</code>&#160;</td>
+ </tr>
+ <tr>
<td></td>
+ <td>)</td>
+ <td></td><td></td>
</tr>
</table>
</td>
@@ -187,7 +197,7 @@ static std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="
<p>Set an error callback function to be invoked when an error has occured. </p>
<p>The callback function will be called whenever an error has occured. It is best to set the error callback function before opening a port. </p>
-<p>Implemented in <a class="el" href="classRtMidiOut.html#afcabeb089fb3c491707d14e085433500">RtMidiOut</a>, and <a class="el" href="classRtMidiIn.html#ac890a603444f0e5876c34f430505fdb0">RtMidiIn</a>.</p>
+<p>Implemented in <a class="el" href="classRtMidiOut.html#a91a4571214f7b033312cc6cb661d3253">RtMidiOut</a>, and <a class="el" href="classRtMidiIn.html#ad70189a24427b3169d81fcc69f6441e0">RtMidiIn</a>.</p>
</div>
</div>
@@ -197,7 +207,7 @@ static std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="
</div><!-- contents -->
<HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
- <td>&copy;2003-2014 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ <td>&copy;2003-2016 Gary P. Scavone, McGill University. All Rights Reserved.<br>
Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
</table>
</BODY>
diff --git a/doc/html/classRtMidiError-members.html b/doc/html/classRtMidiError-members.html
index d17ed02..b2605ac 100644
--- a/doc/html/classRtMidiError-members.html
+++ b/doc/html/classRtMidiError-members.html
@@ -38,7 +38,7 @@
</table></div><!-- contents -->
<HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
- <td>&copy;2003-2014 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ <td>&copy;2003-2016 Gary P. Scavone, McGill University. All Rights Reserved.<br>
Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
</table>
</BODY>
diff --git a/doc/html/classRtMidiError.html b/doc/html/classRtMidiError.html
index b80eb52..d191ea5 100644
--- a/doc/html/classRtMidiError.html
+++ b/doc/html/classRtMidiError.html
@@ -139,7 +139,7 @@ virtual const char *&#160;</td><td class="memItemRight" valign="bottom"><a class
</div><!-- contents -->
<HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
- <td>&copy;2003-2014 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ <td>&copy;2003-2016 Gary P. Scavone, McGill University. All Rights Reserved.<br>
Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
</table>
</BODY>
diff --git a/doc/html/classRtMidiIn-members.html b/doc/html/classRtMidiIn-members.html
index 54b1264..d9c8210 100644
--- a/doc/html/classRtMidiIn-members.html
+++ b/doc/html/classRtMidiIn-members.html
@@ -36,7 +36,7 @@
<tr class="even"><td class="entry"><a class="el" href="classRtMidiIn.html#a297d2eb3c3420b437970a6fc59d89cbf">RtMidiCallback</a> typedef</td><td class="entry"><a class="el" href="classRtMidiIn.html">RtMidiIn</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classRtMidiIn.html#aeeaeed8dae387dffc70e73e6e88b4d1a">RtMidiIn</a>(RtMidi::Api api=UNSPECIFIED, const std::string clientName=std::string(&quot;RtMidi Input Client&quot;), unsigned int queueSizeLimit=100)</td><td class="entry"><a class="el" href="classRtMidiIn.html">RtMidiIn</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classRtMidiIn.html#a7590563461c7467608a4b3806406b32d">setCallback</a>(RtMidiCallback callback, void *userData=0)</td><td class="entry"><a class="el" href="classRtMidiIn.html">RtMidiIn</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr><td class="entry"><a class="el" href="classRtMidiIn.html#ac890a603444f0e5876c34f430505fdb0">setErrorCallback</a>(RtMidiErrorCallback errorCallback=NULL)</td><td class="entry"><a class="el" href="classRtMidiIn.html">RtMidiIn</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classRtMidiIn.html#ad70189a24427b3169d81fcc69f6441e0">setErrorCallback</a>(RtMidiErrorCallback errorCallback=NULL, void *userData=0)</td><td class="entry"><a class="el" href="classRtMidiIn.html">RtMidiIn</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a1f59daf3120f47c0ae3891773112ddfa">UNIX_JACK</a> enum value</td><td class="entry"><a class="el" href="classRtMidi.html">RtMidi</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a4a4d9f7a38a082d6b0d5dd2b5de94ab9">UNSPECIFIED</a> enum value</td><td class="entry"><a class="el" href="classRtMidi.html">RtMidi</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a647868cb4ed37f517bf185a7f41cb70f">WINDOWS_MM</a> enum value</td><td class="entry"><a class="el" href="classRtMidi.html">RtMidi</a></td><td class="entry"></td></tr>
@@ -44,7 +44,7 @@
</table></div><!-- contents -->
<HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
- <td>&copy;2003-2014 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ <td>&copy;2003-2016 Gary P. Scavone, McGill University. All Rights Reserved.<br>
Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
</table>
</BODY>
diff --git a/doc/html/classRtMidiIn.html b/doc/html/classRtMidiIn.html
index 45ffa2d..8e5a772 100644
--- a/doc/html/classRtMidiIn.html
+++ b/doc/html/classRtMidiIn.html
@@ -98,9 +98,9 @@ virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" hr
<tr class="memitem:a1ba10ecd276b30a8579c7d60a9c890eb"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRtMidiIn.html#a1ba10ecd276b30a8579c7d60a9c890eb">getMessage</a> (std::vector&lt; unsigned char &gt; *message)</td></tr>
<tr class="memdesc:a1ba10ecd276b30a8579c7d60a9c890eb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fill the user-provided vector with the data bytes for the next available MIDI message in the input queue and return the event delta-time in seconds. <a href="#a1ba10ecd276b30a8579c7d60a9c890eb">More...</a><br/></td></tr>
<tr class="separator:a1ba10ecd276b30a8579c7d60a9c890eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ac890a603444f0e5876c34f430505fdb0"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRtMidiIn.html#ac890a603444f0e5876c34f430505fdb0">setErrorCallback</a> (<a class="el" href="RtMidi_8h.html#a530aef8e3582ad9c4042f732eea14abb">RtMidiErrorCallback</a> errorCallback=NULL)</td></tr>
-<tr class="memdesc:ac890a603444f0e5876c34f430505fdb0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set an error callback function to be invoked when an error has occured. <a href="#ac890a603444f0e5876c34f430505fdb0">More...</a><br/></td></tr>
-<tr class="separator:ac890a603444f0e5876c34f430505fdb0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad70189a24427b3169d81fcc69f6441e0"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRtMidiIn.html#ad70189a24427b3169d81fcc69f6441e0">setErrorCallback</a> (<a class="el" href="RtMidi_8h.html#a36eff69cc45bba67a1f315823c7bc78d">RtMidiErrorCallback</a> errorCallback=NULL, void *userData=0)</td></tr>
+<tr class="memdesc:ad70189a24427b3169d81fcc69f6441e0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set an error callback function to be invoked when an error has occured. <a href="#ad70189a24427b3169d81fcc69f6441e0">More...</a><br/></td></tr>
+<tr class="separator:ad70189a24427b3169d81fcc69f6441e0"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
Additional Inherited Members</h2></td></tr>
@@ -448,7 +448,7 @@ static std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="
</div>
</div>
-<a class="anchor" id="ac890a603444f0e5876c34f430505fdb0"></a>
+<a class="anchor" id="ad70189a24427b3169d81fcc69f6441e0"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
@@ -458,9 +458,19 @@ static std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="
<tr>
<td class="memname">void RtMidiIn::setErrorCallback </td>
<td>(</td>
- <td class="paramtype"><a class="el" href="RtMidi_8h.html#a530aef8e3582ad9c4042f732eea14abb">RtMidiErrorCallback</a>&#160;</td>
- <td class="paramname"><em>errorCallback</em> = <code>NULL</code></td><td>)</td>
+ <td class="paramtype"><a class="el" href="RtMidi_8h.html#a36eff69cc45bba67a1f315823c7bc78d">RtMidiErrorCallback</a>&#160;</td>
+ <td class="paramname"><em>errorCallback</em> = <code>NULL</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">void *&#160;</td>
+ <td class="paramname"><em>userData</em> = <code>0</code>&#160;</td>
+ </tr>
+ <tr>
<td></td>
+ <td>)</td>
+ <td></td><td></td>
</tr>
</table>
</td>
@@ -473,7 +483,7 @@ static std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="
<p>Set an error callback function to be invoked when an error has occured. </p>
<p>The callback function will be called whenever an error has occured. It is best to set the error callback function before opening a port. </p>
-<p>Implements <a class="el" href="classRtMidi.html#a9c9123f494b523f40ee5040a7ed24478">RtMidi</a>.</p>
+<p>Implements <a class="el" href="classRtMidi.html#aa6d6f2e0d06c64268c8898aa15f3a5df">RtMidi</a>.</p>
</div>
</div>
@@ -483,7 +493,7 @@ static std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="
</div><!-- contents -->
<HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
- <td>&copy;2003-2014 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ <td>&copy;2003-2016 Gary P. Scavone, McGill University. All Rights Reserved.<br>
Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
</table>
</BODY>
diff --git a/doc/html/classRtMidiOut-members.html b/doc/html/classRtMidiOut-members.html
index 8971533..724435c 100644
--- a/doc/html/classRtMidiOut-members.html
+++ b/doc/html/classRtMidiOut-members.html
@@ -32,7 +32,7 @@
<tr class="even"><td class="entry"><a class="el" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a54dba406ab358492005ce2b966a2d959">RTMIDI_DUMMY</a> enum value</td><td class="entry"><a class="el" href="classRtMidi.html">RtMidi</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classRtMidiOut.html#a2940966e36b5479fbbf82c07424318cc">RtMidiOut</a>(RtMidi::Api api=UNSPECIFIED, const std::string clientName=std::string(&quot;RtMidi Output Client&quot;))</td><td class="entry"><a class="el" href="classRtMidiOut.html">RtMidiOut</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classRtMidiOut.html#a0bd8972ef8ac4e8d37ccc4b5d51c2eb3">sendMessage</a>(std::vector&lt; unsigned char &gt; *message)</td><td class="entry"><a class="el" href="classRtMidiOut.html">RtMidiOut</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr><td class="entry"><a class="el" href="classRtMidiOut.html#afcabeb089fb3c491707d14e085433500">setErrorCallback</a>(RtMidiErrorCallback errorCallback=NULL)</td><td class="entry"><a class="el" href="classRtMidiOut.html">RtMidiOut</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classRtMidiOut.html#a91a4571214f7b033312cc6cb661d3253">setErrorCallback</a>(RtMidiErrorCallback errorCallback=NULL, void *userData=0)</td><td class="entry"><a class="el" href="classRtMidiOut.html">RtMidiOut</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a1f59daf3120f47c0ae3891773112ddfa">UNIX_JACK</a> enum value</td><td class="entry"><a class="el" href="classRtMidi.html">RtMidi</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a4a4d9f7a38a082d6b0d5dd2b5de94ab9">UNSPECIFIED</a> enum value</td><td class="entry"><a class="el" href="classRtMidi.html">RtMidi</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a647868cb4ed37f517bf185a7f41cb70f">WINDOWS_MM</a> enum value</td><td class="entry"><a class="el" href="classRtMidi.html">RtMidi</a></td><td class="entry"></td></tr>
@@ -40,7 +40,7 @@
</table></div><!-- contents -->
<HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
- <td>&copy;2003-2014 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ <td>&copy;2003-2016 Gary P. Scavone, McGill University. All Rights Reserved.<br>
Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
</table>
</BODY>
diff --git a/doc/html/classRtMidiOut.html b/doc/html/classRtMidiOut.html
index cca4247..3c35a26 100644
--- a/doc/html/classRtMidiOut.html
+++ b/doc/html/classRtMidiOut.html
@@ -69,9 +69,9 @@ unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" hr
<tr class="memitem:a0bd8972ef8ac4e8d37ccc4b5d51c2eb3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRtMidiOut.html#a0bd8972ef8ac4e8d37ccc4b5d51c2eb3">sendMessage</a> (std::vector&lt; unsigned char &gt; *message)</td></tr>
<tr class="memdesc:a0bd8972ef8ac4e8d37ccc4b5d51c2eb3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Immediately send a single message out an open MIDI output port. <a href="#a0bd8972ef8ac4e8d37ccc4b5d51c2eb3">More...</a><br/></td></tr>
<tr class="separator:a0bd8972ef8ac4e8d37ccc4b5d51c2eb3"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:afcabeb089fb3c491707d14e085433500"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRtMidiOut.html#afcabeb089fb3c491707d14e085433500">setErrorCallback</a> (<a class="el" href="RtMidi_8h.html#a530aef8e3582ad9c4042f732eea14abb">RtMidiErrorCallback</a> errorCallback=NULL)</td></tr>
-<tr class="memdesc:afcabeb089fb3c491707d14e085433500"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set an error callback function to be invoked when an error has occured. <a href="#afcabeb089fb3c491707d14e085433500">More...</a><br/></td></tr>
-<tr class="separator:afcabeb089fb3c491707d14e085433500"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a91a4571214f7b033312cc6cb661d3253"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRtMidiOut.html#a91a4571214f7b033312cc6cb661d3253">setErrorCallback</a> (<a class="el" href="RtMidi_8h.html#a36eff69cc45bba67a1f315823c7bc78d">RtMidiErrorCallback</a> errorCallback=NULL, void *userData=0)</td></tr>
+<tr class="memdesc:a91a4571214f7b033312cc6cb661d3253"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set an error callback function to be invoked when an error has occured. <a href="#a91a4571214f7b033312cc6cb661d3253">More...</a><br/></td></tr>
+<tr class="separator:a91a4571214f7b033312cc6cb661d3253"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
Additional Inherited Members</h2></td></tr>
@@ -257,7 +257,7 @@ static std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="
</div>
</div>
-<a class="anchor" id="afcabeb089fb3c491707d14e085433500"></a>
+<a class="anchor" id="a91a4571214f7b033312cc6cb661d3253"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
@@ -267,9 +267,19 @@ static std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="
<tr>
<td class="memname">void RtMidiOut::setErrorCallback </td>
<td>(</td>
- <td class="paramtype"><a class="el" href="RtMidi_8h.html#a530aef8e3582ad9c4042f732eea14abb">RtMidiErrorCallback</a>&#160;</td>
- <td class="paramname"><em>errorCallback</em> = <code>NULL</code></td><td>)</td>
+ <td class="paramtype"><a class="el" href="RtMidi_8h.html#a36eff69cc45bba67a1f315823c7bc78d">RtMidiErrorCallback</a>&#160;</td>
+ <td class="paramname"><em>errorCallback</em> = <code>NULL</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">void *&#160;</td>
+ <td class="paramname"><em>userData</em> = <code>0</code>&#160;</td>
+ </tr>
+ <tr>
<td></td>
+ <td>)</td>
+ <td></td><td></td>
</tr>
</table>
</td>
@@ -282,7 +292,7 @@ static std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="
<p>Set an error callback function to be invoked when an error has occured. </p>
<p>The callback function will be called whenever an error has occured. It is best to set the error callback function before opening a port. </p>
-<p>Implements <a class="el" href="classRtMidi.html#a9c9123f494b523f40ee5040a7ed24478">RtMidi</a>.</p>
+<p>Implements <a class="el" href="classRtMidi.html#aa6d6f2e0d06c64268c8898aa15f3a5df">RtMidi</a>.</p>
</div>
</div>
@@ -292,7 +302,7 @@ static std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="
</div><!-- contents -->
<HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
- <td>&copy;2003-2014 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ <td>&copy;2003-2016 Gary P. Scavone, McGill University. All Rights Reserved.<br>
Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
</table>
</BODY>
diff --git a/doc/html/classes.html b/doc/html/classes.html
index 837e0af..a0913d9 100644
--- a/doc/html/classes.html
+++ b/doc/html/classes.html
@@ -29,7 +29,7 @@
</div><!-- contents -->
<HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
- <td>&copy;2003-2014 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ <td>&copy;2003-2016 Gary P. Scavone, McGill University. All Rights Reserved.<br>
Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
</table>
</BODY>
diff --git a/doc/html/files.html b/doc/html/files.html
index 2876f40..b37bc66 100644
--- a/doc/html/files.html
+++ b/doc/html/files.html
@@ -22,7 +22,7 @@
</div><!-- contents -->
<HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
- <td>&copy;2003-2014 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ <td>&copy;2003-2016 Gary P. Scavone, McGill University. All Rights Reserved.<br>
Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
</table>
</BODY>
diff --git a/doc/html/functions.html b/doc/html/functions.html
index cfd7830..4053496 100644
--- a/doc/html/functions.html
+++ b/doc/html/functions.html
@@ -172,9 +172,9 @@
: <a class="el" href="classRtMidiIn.html#a7590563461c7467608a4b3806406b32d">RtMidiIn</a>
</li>
<li>setErrorCallback()
-: <a class="el" href="classRtMidiOut.html#afcabeb089fb3c491707d14e085433500">RtMidiOut</a>
-, <a class="el" href="classRtMidiIn.html#ac890a603444f0e5876c34f430505fdb0">RtMidiIn</a>
-, <a class="el" href="classRtMidi.html#a9c9123f494b523f40ee5040a7ed24478">RtMidi</a>
+: <a class="el" href="classRtMidiOut.html#a91a4571214f7b033312cc6cb661d3253">RtMidiOut</a>
+, <a class="el" href="classRtMidiIn.html#ad70189a24427b3169d81fcc69f6441e0">RtMidiIn</a>
+, <a class="el" href="classRtMidi.html#aa6d6f2e0d06c64268c8898aa15f3a5df">RtMidi</a>
</li>
<li>SYSTEM_ERROR
: <a class="el" href="classRtMidiError.html#a741314057cec5fb8c743c12f284905eeaf2708443eebfe5dcd0f656e22a73cfd8">RtMidiError</a>
@@ -230,7 +230,7 @@
</div><!-- contents -->
<HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
- <td>&copy;2003-2014 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ <td>&copy;2003-2016 Gary P. Scavone, McGill University. All Rights Reserved.<br>
Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
</table>
</BODY>
diff --git a/doc/html/functions_enum.html b/doc/html/functions_enum.html
index d7e3985..11abbde 100644
--- a/doc/html/functions_enum.html
+++ b/doc/html/functions_enum.html
@@ -21,7 +21,7 @@
</div><!-- contents -->
<HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
- <td>&copy;2003-2014 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ <td>&copy;2003-2016 Gary P. Scavone, McGill University. All Rights Reserved.<br>
Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
</table>
</BODY>
diff --git a/doc/html/functions_eval.html b/doc/html/functions_eval.html
index 473fddb..7658912 100644
--- a/doc/html/functions_eval.html
+++ b/doc/html/functions_eval.html
@@ -64,7 +64,7 @@
</div><!-- contents -->
<HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
- <td>&copy;2003-2014 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ <td>&copy;2003-2016 Gary P. Scavone, McGill University. All Rights Reserved.<br>
Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
</table>
</BODY>
diff --git a/doc/html/functions_func.html b/doc/html/functions_func.html
index 5d4fb38..1b00b71 100644
--- a/doc/html/functions_func.html
+++ b/doc/html/functions_func.html
@@ -116,9 +116,9 @@
: <a class="el" href="classRtMidiIn.html#a7590563461c7467608a4b3806406b32d">RtMidiIn</a>
</li>
<li>setErrorCallback()
-: <a class="el" href="classRtMidiIn.html#ac890a603444f0e5876c34f430505fdb0">RtMidiIn</a>
-, <a class="el" href="classRtMidi.html#a9c9123f494b523f40ee5040a7ed24478">RtMidi</a>
-, <a class="el" href="classRtMidiOut.html#afcabeb089fb3c491707d14e085433500">RtMidiOut</a>
+: <a class="el" href="classRtMidiIn.html#ad70189a24427b3169d81fcc69f6441e0">RtMidiIn</a>
+, <a class="el" href="classRtMidi.html#aa6d6f2e0d06c64268c8898aa15f3a5df">RtMidi</a>
+, <a class="el" href="classRtMidiOut.html#a91a4571214f7b033312cc6cb661d3253">RtMidiOut</a>
</li>
</ul>
@@ -144,7 +144,7 @@
</div><!-- contents -->
<HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
- <td>&copy;2003-2014 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ <td>&copy;2003-2016 Gary P. Scavone, McGill University. All Rights Reserved.<br>
Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
</table>
</BODY>
diff --git a/doc/html/functions_type.html b/doc/html/functions_type.html
index 7343d60..612f27d 100644
--- a/doc/html/functions_type.html
+++ b/doc/html/functions_type.html
@@ -18,7 +18,7 @@
</div><!-- contents -->
<HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
- <td>&copy;2003-2014 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ <td>&copy;2003-2016 Gary P. Scavone, McGill University. All Rights Reserved.<br>
Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
</table>
</BODY>
diff --git a/doc/html/globals.html b/doc/html/globals.html
index 7431cf7..cdda2e9 100644
--- a/doc/html/globals.html
+++ b/doc/html/globals.html
@@ -12,13 +12,13 @@
<div class="contents">
<div class="textblock">Here is a list of all documented file members with links to the documentation:</div><ul>
<li>RtMidiErrorCallback
-: <a class="el" href="RtMidi_8h.html#a530aef8e3582ad9c4042f732eea14abb">RtMidi.h</a>
+: <a class="el" href="RtMidi_8h.html#a36eff69cc45bba67a1f315823c7bc78d">RtMidi.h</a>
</li>
</ul>
</div><!-- contents -->
<HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
- <td>&copy;2003-2014 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ <td>&copy;2003-2016 Gary P. Scavone, McGill University. All Rights Reserved.<br>
Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
</table>
</BODY>
diff --git a/doc/html/globals_type.html b/doc/html/globals_type.html
index 26c3911..4ed1d4f 100644
--- a/doc/html/globals_type.html
+++ b/doc/html/globals_type.html
@@ -12,13 +12,13 @@
<div class="contents">
&#160;<ul>
<li>RtMidiErrorCallback
-: <a class="el" href="RtMidi_8h.html#a530aef8e3582ad9c4042f732eea14abb">RtMidi.h</a>
+: <a class="el" href="RtMidi_8h.html#a36eff69cc45bba67a1f315823c7bc78d">RtMidi.h</a>
</li>
</ul>
</div><!-- contents -->
<HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
- <td>&copy;2003-2014 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ <td>&copy;2003-2016 Gary P. Scavone, McGill University. All Rights Reserved.<br>
Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
</table>
</BODY>
diff --git a/doc/html/hierarchy.html b/doc/html/hierarchy.html
index e552829..27b5b77 100644
--- a/doc/html/hierarchy.html
+++ b/doc/html/hierarchy.html
@@ -40,7 +40,7 @@
</div><!-- contents -->
<HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
- <td>&copy;2003-2014 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ <td>&copy;2003-2016 Gary P. Scavone, McGill University. All Rights Reserved.<br>
Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
</table>
</BODY>
diff --git a/doc/html/index.html b/doc/html/index.html
index e8e3e79..ba74939 100644
--- a/doc/html/index.html
+++ b/doc/html/index.html
@@ -18,23 +18,19 @@
Introduction</h1>
<p><a class="el" href="classRtMidi.html" title="An abstract base class for realtime MIDI input/output.">RtMidi</a> is a set of C++ classes (<a class="el" href="classRtMidiIn.html" title="A realtime MIDI input class.">RtMidiIn</a>, <a class="el" href="classRtMidiOut.html" title="A realtime MIDI output class.">RtMidiOut</a> and API-specific classes) that provides a common API (Application Programming Interface) for realtime MIDI input/output across Linux (ALSA &amp; JACK), Macintosh OS X (CoreMIDI &amp; JACK), and Windows (Multimedia Library) operating systems. <a class="el" href="classRtMidi.html" title="An abstract base class for realtime MIDI input/output.">RtMidi</a> significantly simplifies the process of interacting with computer MIDI hardware and software. It was designed with the following goals:</p>
<ul>
-<li>
-object oriented C++ design </li>
-<li>
-simple, common API across all supported platforms </li>
-<li>
-only one header and one source file for easy inclusion in programming projects </li>
-<li>
-MIDI device enumeration </li>
+<li>object oriented C++ design</li>
+<li>simple, common API across all supported platforms</li>
+<li>only one header and one source file for easy inclusion in programming projects</li>
+<li>MIDI device enumeration</li>
</ul>
<p>Where applicable, multiple API support can be compiled and a particular API specified when creating an RtAudio instance.</p>
<p>MIDI input and output functionality are separated into two classes, <a class="el" href="classRtMidiIn.html" title="A realtime MIDI input class.">RtMidiIn</a> and <a class="el" href="classRtMidiOut.html" title="A realtime MIDI output class.">RtMidiOut</a>. Each class instance supports only a single MIDI connection. <a class="el" href="classRtMidi.html" title="An abstract base class for realtime MIDI input/output.">RtMidi</a> does not provide timing functionality (i.e., output messages are sent immediately). Input messages are timestamped with delta times in seconds (via a <code>double</code> floating point type). MIDI data is passed to the user as raw bytes using an std::vector&lt;unsigned char&gt;.</p>
<h1><a class="anchor" id="whatsnew"></a>
-What's New (Version 2.1)</h1>
-<p>A minor API change was made. The RtError class was renamed <a class="el" href="classRtMidiError.html" title="Exception handling class for RtMidi.">RtMidiError</a> and embedded directly in <a class="el" href="RtMidi_8h.html">RtMidi.h</a>. Thus, all references to RtError should be renamed to <a class="el" href="classRtMidiError.html" title="Exception handling class for RtMidi.">RtMidiError</a> and the RtError.h file should be deleted. The Windows Kernel Streaming support was removed because it was uncompilable and incomplete.</p>
+What's New (Version 2.1.1)</h1>
+<p>There were no API changes made in the current release. The primary changes involved updates to the build system and some small bug fixes. With respect to the previous release (2.1.0), a minor API change was made. The RtError class was renamed <a class="el" href="classRtMidiError.html" title="Exception handling class for RtMidi.">RtMidiError</a> and embedded directly in <a class="el" href="RtMidi_8h.html">RtMidi.h</a>. Thus, all references to RtError should be renamed to <a class="el" href="classRtMidiError.html" title="Exception handling class for RtMidi.">RtMidiError</a> and the RtError.h file should be deleted. The Windows Kernel Streaming code was moved to a separate branch because it was uncompilable and incomplete.</p>
<h1><a class="anchor" id="download"></a>
Download</h1>
-<p>Latest Release (30 March 2014): <a href="http://www.music.mcgill.ca/~gary/rtmidi/release/rtmidi-2.1.0.tar.gz">Version 2.1.0</a></p>
+<p>Latest Release (11 February 2016): <a href="http://www.music.mcgill.ca/~gary/rtmidi/release/rtmidi-2.1.1.tar.gz">Version 2.1.1</a></p>
<h1><a class="anchor" id="start"></a>
Getting Started</h1>
<p>The first thing that must be done when using <a class="el" href="classRtMidi.html" title="An abstract base class for realtime MIDI input/output.">RtMidi</a> is to create an instance of the <a class="el" href="classRtMidiIn.html" title="A realtime MIDI input class.">RtMidiIn</a> or <a class="el" href="classRtMidiOut.html" title="A realtime MIDI output class.">RtMidiOut</a> subclasses. <a class="el" href="classRtMidi.html" title="An abstract base class for realtime MIDI input/output.">RtMidi</a> is an abstract base class, which itself cannot be instantiated. Each default constructor attempts to establish any necessary "connections" with the underlying MIDI system. <a class="el" href="classRtMidi.html" title="An abstract base class for realtime MIDI input/output.">RtMidi</a> uses C++ exceptions to report errors, necessitating try/catch blocks around many member functions. An <a class="el" href="classRtMidiError.html" title="Exception handling class for RtMidi.">RtMidiError</a> can be thrown during instantiation in some circumstances. A warning message may also be reported if no MIDI devices are found during instantiation. The <a class="el" href="classRtMidi.html" title="An abstract base class for realtime MIDI input/output.">RtMidi</a> classes have been designed to work with "hot pluggable" or virtual (software) MIDI devices, making it possible to connect to MIDI devices that may not have been present when the classes were instantiated. The following code example demonstrates default object construction and destruction:</p>
@@ -59,7 +55,7 @@ Getting Started</h1>
</div><!-- fragment --><p>Obviously, this example doesn't demonstrate any of the real functionality of <a class="el" href="classRtMidi.html" title="An abstract base class for realtime MIDI input/output.">RtMidi</a>. However, all uses of <a class="el" href="classRtMidi.html" title="An abstract base class for realtime MIDI input/output.">RtMidi</a> must begin with construction and must end with class destruction. Further, it is necessary that all class methods that can throw a C++ exception be called within a try/catch block.</p>
<h1><a class="anchor" id="error"></a>
Error Handling</h1>
-<p><a class="el" href="classRtMidi.html" title="An abstract base class for realtime MIDI input/output.">RtMidi</a> uses a C++ exception handler called <a class="el" href="classRtMidiError.html" title="Exception handling class for RtMidi.">RtMidiError</a>, which is declared and defined in <a class="el" href="RtMidi_8h.html">RtMidi.h</a>. The <a class="el" href="classRtMidiError.html" title="Exception handling class for RtMidi.">RtMidiError</a> class is quite simple but it does allow errors to be "caught" by <a class="el" href="classRtMidiError.html#a741314057cec5fb8c743c12f284905ee" title="Defined RtMidiError types.">RtMidiError::Type</a>. Many <a class="el" href="classRtMidi.html" title="An abstract base class for realtime MIDI input/output.">RtMidi</a> methods can "throw" an <a class="el" href="classRtMidiError.html" title="Exception handling class for RtMidi.">RtMidiError</a>, most typically if a driver error occurs or an invalid function argument is specified. There are a number of cases within <a class="el" href="classRtMidi.html" title="An abstract base class for realtime MIDI input/output.">RtMidi</a> where warning messages may be displayed but an exception is not thrown. A client error callback function can be specified (via the <a class="el" href="classRtMidi.html#a9c9123f494b523f40ee5040a7ed24478" title="Set an error callback function to be invoked when an error has occured.">RtMidi::setErrorCallback</a> function) that is invoked when an error occurs. By default, error messages are not automatically displayed in <a class="el" href="classRtMidi.html" title="An abstract base class for realtime MIDI input/output.">RtMidi</a> unless the preprocessor definition <b>RTMIDI_DEBUG</b> is defined during compilation. Messages associated with caught exceptions can be displayed with, for example, the <a class="el" href="classRtMidiError.html#a7f45ae29b66b25817a7aa7b4ea81ab71" title="Prints thrown error message to stderr.">RtMidiError::printMessage()</a> function.</p>
+<p><a class="el" href="classRtMidi.html" title="An abstract base class for realtime MIDI input/output.">RtMidi</a> uses a C++ exception handler called <a class="el" href="classRtMidiError.html" title="Exception handling class for RtMidi.">RtMidiError</a>, which is declared and defined in <a class="el" href="RtMidi_8h.html">RtMidi.h</a>. The <a class="el" href="classRtMidiError.html" title="Exception handling class for RtMidi.">RtMidiError</a> class is quite simple but it does allow errors to be "caught" by <a class="el" href="classRtMidiError.html#a741314057cec5fb8c743c12f284905ee" title="Defined RtMidiError types.">RtMidiError::Type</a>. Many <a class="el" href="classRtMidi.html" title="An abstract base class for realtime MIDI input/output.">RtMidi</a> methods can "throw" an <a class="el" href="classRtMidiError.html" title="Exception handling class for RtMidi.">RtMidiError</a>, most typically if a driver error occurs or an invalid function argument is specified. There are a number of cases within <a class="el" href="classRtMidi.html" title="An abstract base class for realtime MIDI input/output.">RtMidi</a> where warning messages may be displayed but an exception is not thrown. A client error callback function can be specified (via the <a class="el" href="classRtMidi.html#aa6d6f2e0d06c64268c8898aa15f3a5df" title="Set an error callback function to be invoked when an error has occured.">RtMidi::setErrorCallback</a> function) that is invoked when an error occurs. By default, error messages are not automatically displayed in <a class="el" href="classRtMidi.html" title="An abstract base class for realtime MIDI input/output.">RtMidi</a> unless the preprocessor definition <b>RTMIDI_DEBUG</b> is defined during compilation. Messages associated with caught exceptions can be displayed with, for example, the <a class="el" href="classRtMidiError.html#a7f45ae29b66b25817a7aa7b4ea81ab71" title="Prints thrown error message to stderr.">RtMidiError::printMessage()</a> function.</p>
<h1><a class="anchor" id="probing"></a>
Probing Ports</h1>
<p>A client generally must query the available MIDI ports before deciding which to use. The following example outlines how this can be done.</p>
@@ -338,51 +334,35 @@ Windows (Multimedia Library):</h2>
<p>The <code>configure</code> script provides support for the MinGW compiler.</p>
<p>The Windows Multimedia library MIDI calls used in <a class="el" href="classRtMidi.html" title="An abstract base class for realtime MIDI input/output.">RtMidi</a> do not make use of streaming functionality. Incoming system exclusive messages read by <a class="el" href="classRtMidiIn.html" title="A realtime MIDI input class.">RtMidiIn</a> are limited to a length as defined by the preprocessor definition RT_SYSEX_BUFFER_SIZE (set in RtMidi.cpp). The default value is 1024. There is no such limit for outgoing sysex messages via <a class="el" href="classRtMidiOut.html" title="A realtime MIDI output class.">RtMidiOut</a>.</p>
<p><a class="el" href="classRtMidi.html" title="An abstract base class for realtime MIDI input/output.">RtMidi</a> was originally developed with Visual C++ version 6.0 but has been tested with Virtual Studio 2010.</p>
-<p>The <code>configure</code> script provides support for the MinGW compiler.</p>
<h1><a class="anchor" id="acknowledge"></a>
Development &amp; Acknowledgements</h1>
<p><a class="el" href="classRtMidi.html" title="An abstract base class for realtime MIDI input/output.">RtMidi</a> is on github (<a href="https://github.com/thestk/rtmidi">https://github.com/thestk/rtmidi</a>). Many thanks to the developers that are helping to maintain and improve <a class="el" href="classRtMidi.html" title="An abstract base class for realtime MIDI input/output.">RtMidi</a>.</p>
-<p>In years past, the following people provided bug fixes and improvements: </p>
+<p>In years past, the following people provided bug fixes and improvements:</p>
<ul>
-<li>
-Sebastien Alaiwan (JACK memory leaks, Windows kernel streaming) </li>
-<li>
-Jean-Baptiste Berruchon (Windows sysex code) </li>
-<li>
-Pedro Lopez-Cabanillas (ALSA sequencer API, client naming) </li>
-<li>
-Jason Champion (MSW project file for library build) </li>
-<li>
-Eduardo Coutinho (Windows device names) </li>
-<li>
-Paul Dean (increment optimization) </li>
-<li>
-Luc Deschenaux (sysex issues) </li>
-<li>
-John Dey (OS-X timestamps) </li>
-<li>
-Christoph Eckert (ALSA sysex fixes) </li>
-<li>
-Martin Koegler (various fixes) </li>
-<li>
-Immanuel Litzroth (OS-X sysex fix) </li>
-<li>
-Jon McCormack (Snow Leopard updates) </li>
-<li>
-Axel Schmidt (client naming) </li>
-<li>
-Alexander Svetalkin (JACK MIDI) </li>
-<li>
-Casey Tucker (OS-X driver information, sysex sending) </li>
-<li>
-Bastiaan Verreijt (Windows sysex multi-buffer code) </li>
-<li>
-Dan Wilcox </li>
+<li>Stephen Sinclair (Git repo and build system)</li>
+<li>Atsushi Eno (C API)</li>
+<li>Sebastien Alaiwan (JACK memory leaks, Windows kernel streaming)</li>
+<li>Jean-Baptiste Berruchon (Windows sysex code)</li>
+<li>Pedro Lopez-Cabanillas (ALSA sequencer API, client naming)</li>
+<li>Jason Champion (MSW project file for library build)</li>
+<li>Eduardo Coutinho (Windows device names)</li>
+<li>Paul Dean (increment optimization)</li>
+<li>Luc Deschenaux (sysex issues)</li>
+<li>John Dey (OS-X timestamps)</li>
+<li>Christoph Eckert (ALSA sysex fixes)</li>
+<li>Martin Koegler (various fixes)</li>
+<li>Immanuel Litzroth (OS-X sysex fix)</li>
+<li>Jon McCormack (Snow Leopard updates)</li>
+<li>Axel Schmidt (client naming)</li>
+<li>Alexander Svetalkin (JACK MIDI)</li>
+<li>Casey Tucker (OS-X driver information, sysex sending)</li>
+<li>Bastiaan Verreijt (Windows sysex multi-buffer code)</li>
+<li>Dan Wilcox</li>
</ul>
<h1><a class="anchor" id="license"></a>
License</h1>
<pre class="fragment">RtMidi: realtime MIDI i/o C++ classes&lt;BR&gt;
-Copyright (c) 2003-2014 Gary P. Scavone
+Copyright (c) 2003-2016 Gary P. Scavone
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation files
@@ -409,7 +389,7 @@ CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</pre> </div></div><!-- contents -->
<HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
- <td>&copy;2003-2014 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ <td>&copy;2003-2016 Gary P. Scavone, McGill University. All Rights Reserved.<br>
Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
</table>
</BODY>
diff --git a/doc/html/structMidiInApi_1_1MidiMessage-members.html b/doc/html/structMidiInApi_1_1MidiMessage-members.html
index bf3438b..045493e 100644
--- a/doc/html/structMidiInApi_1_1MidiMessage-members.html
+++ b/doc/html/structMidiInApi_1_1MidiMessage-members.html
@@ -24,7 +24,7 @@
</table></div><!-- contents -->
<HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
- <td>&copy;2003-2014 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ <td>&copy;2003-2016 Gary P. Scavone, McGill University. All Rights Reserved.<br>
Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
</table>
</BODY>
diff --git a/doc/html/structMidiInApi_1_1MidiMessage.html b/doc/html/structMidiInApi_1_1MidiMessage.html
index c968b74..c90e021 100644
--- a/doc/html/structMidiInApi_1_1MidiMessage.html
+++ b/doc/html/structMidiInApi_1_1MidiMessage.html
@@ -26,7 +26,7 @@
</div><!-- contents -->
<HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
- <td>&copy;2003-2014 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ <td>&copy;2003-2016 Gary P. Scavone, McGill University. All Rights Reserved.<br>
Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
</table>
</BODY>
diff --git a/doc/html/structMidiInApi_1_1MidiQueue-members.html b/doc/html/structMidiInApi_1_1MidiQueue-members.html
index 71f46db..d57208b 100644
--- a/doc/html/structMidiInApi_1_1MidiQueue-members.html
+++ b/doc/html/structMidiInApi_1_1MidiQueue-members.html
@@ -24,7 +24,7 @@
</table></div><!-- contents -->
<HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
- <td>&copy;2003-2014 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ <td>&copy;2003-2016 Gary P. Scavone, McGill University. All Rights Reserved.<br>
Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
</table>
</BODY>
diff --git a/doc/html/structMidiInApi_1_1MidiQueue.html b/doc/html/structMidiInApi_1_1MidiQueue.html
index 36183b3..1ed6386 100644
--- a/doc/html/structMidiInApi_1_1MidiQueue.html
+++ b/doc/html/structMidiInApi_1_1MidiQueue.html
@@ -26,7 +26,7 @@
</div><!-- contents -->
<HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
- <td>&copy;2003-2014 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ <td>&copy;2003-2016 Gary P. Scavone, McGill University. All Rights Reserved.<br>
Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
</table>
</BODY>
diff --git a/doc/html/structMidiInApi_1_1RtMidiInData-members.html b/doc/html/structMidiInApi_1_1RtMidiInData-members.html
index 60b88d6..b4fabbd 100644
--- a/doc/html/structMidiInApi_1_1RtMidiInData-members.html
+++ b/doc/html/structMidiInApi_1_1RtMidiInData-members.html
@@ -24,7 +24,7 @@
</table></div><!-- contents -->
<HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
- <td>&copy;2003-2014 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ <td>&copy;2003-2016 Gary P. Scavone, McGill University. All Rights Reserved.<br>
Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
</table>
</BODY>
diff --git a/doc/html/structMidiInApi_1_1RtMidiInData.html b/doc/html/structMidiInApi_1_1RtMidiInData.html
index 000500b..f1d1838 100644
--- a/doc/html/structMidiInApi_1_1RtMidiInData.html
+++ b/doc/html/structMidiInApi_1_1RtMidiInData.html
@@ -26,7 +26,7 @@
</div><!-- contents -->
<HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
- <td>&copy;2003-2014 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ <td>&copy;2003-2016 Gary P. Scavone, McGill University. All Rights Reserved.<br>
Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
</table>
</BODY>
diff --git a/doc/release.txt b/doc/release.txt
index d08f706..e1bfdad 100644
--- a/doc/release.txt
+++ b/doc/release.txt
@@ -1,6 +1,15 @@
-RtMidi - a set of C++ classes that provides a common API for realtime MIDI input/output across Linux (ALSA & JACK), Macintosh OS X (CoreMidi & JACK), and Windows (Multimedia, Kernel Streaming).
-
-By Gary P. Scavone, 2003-2014
+RtMidi - a set of C++ classes that provides a common API for realtime MIDI input/output across Linux (ALSA & JACK), Macintosh OS X (CoreMidi & JACK), and Windows (Multimedia Library).
+
+By Gary P. Scavone, 2003-2016
+
+v2.1.1: (11 February 2016)
+- updates to automake routines
+- added C API (thanks to Atsushi Eno!)
+- JACK ringbuffer allocation change
+- OSX virtual port closing fix
+- OSX sysex sending fix
+- moved Windows kernel streaming code to other branch because it is incomplete
+- miscellaneous small fixes
v2.1.0: (30 March 2014)
- renamed RtError class to RtMidiError and embedded it in RtMidi.h (and deleted RtError.h)