summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGary Scavone <gary@music.mcgill.ca>2013-10-11 15:38:21 +0200
committerStephen Sinclair <sinclair@music.mcgill.ca>2013-10-11 15:38:21 +0200
commit0f31bb3d0ae7fc6f5ff41e3c4963450dad350fc2 (patch)
tree0af744d634b17667adcbd4f2ba8e1c9c08218165
parenta9f686ec60569047d7df03bfb034326700a56a57 (diff)
Release 2.0.0 tarball2.0.0
-rwxr-xr-xconfigure2541
-rw-r--r--doc/html/RtError_8h_source.html2
-rw-r--r--doc/html/RtMidi_8h.html51
-rw-r--r--doc/html/RtMidi_8h_source.html645
-rw-r--r--doc/html/annotated.html20
-rw-r--r--doc/html/classMidiInAlsa-members.html22
-rw-r--r--doc/html/classMidiInAlsa.html38
-rw-r--r--doc/html/classMidiInAlsa.pngbin0 -> 372 bytes
-rw-r--r--doc/html/classMidiInApi-members.html22
-rw-r--r--doc/html/classMidiInApi.html46
-rw-r--r--doc/html/classMidiInApi.pngbin0 -> 825 bytes
-rw-r--r--doc/html/classMidiInCore-members.html22
-rw-r--r--doc/html/classMidiInCore.html38
-rw-r--r--doc/html/classMidiInCore.pngbin0 -> 372 bytes
-rw-r--r--doc/html/classMidiInDummy-members.html22
-rw-r--r--doc/html/classMidiInDummy.html38
-rw-r--r--doc/html/classMidiInDummy.pngbin0 -> 385 bytes
-rw-r--r--doc/html/classMidiInJack-members.html22
-rw-r--r--doc/html/classMidiInJack.html38
-rw-r--r--doc/html/classMidiInJack.pngbin0 -> 369 bytes
-rw-r--r--doc/html/classMidiInWinKS-members.html22
-rw-r--r--doc/html/classMidiInWinKS.html38
-rw-r--r--doc/html/classMidiInWinKS.pngbin0 -> 385 bytes
-rw-r--r--doc/html/classMidiInWinMM-members.html22
-rw-r--r--doc/html/classMidiInWinMM.html38
-rw-r--r--doc/html/classMidiInWinMM.pngbin0 -> 375 bytes
-rw-r--r--doc/html/classMidiOutAlsa-members.html22
-rw-r--r--doc/html/classMidiOutAlsa.html38
-rw-r--r--doc/html/classMidiOutAlsa.pngbin0 -> 406 bytes
-rw-r--r--doc/html/classMidiOutApi-members.html22
-rw-r--r--doc/html/classMidiOutApi.html42
-rw-r--r--doc/html/classMidiOutApi.pngbin0 -> 896 bytes
-rw-r--r--doc/html/classMidiOutCore-members.html22
-rw-r--r--doc/html/classMidiOutCore.html38
-rw-r--r--doc/html/classMidiOutCore.pngbin0 -> 404 bytes
-rw-r--r--doc/html/classMidiOutDummy-members.html22
-rw-r--r--doc/html/classMidiOutDummy.html38
-rw-r--r--doc/html/classMidiOutDummy.pngbin0 -> 422 bytes
-rw-r--r--doc/html/classMidiOutJack-members.html22
-rw-r--r--doc/html/classMidiOutJack.html38
-rw-r--r--doc/html/classMidiOutJack.pngbin0 -> 407 bytes
-rw-r--r--doc/html/classMidiOutWinKS-members.html22
-rw-r--r--doc/html/classMidiOutWinKS.html38
-rw-r--r--doc/html/classMidiOutWinKS.pngbin0 -> 426 bytes
-rw-r--r--doc/html/classMidiOutWinMM-members.html22
-rw-r--r--doc/html/classMidiOutWinMM.html38
-rw-r--r--doc/html/classMidiOutWinMM.pngbin0 -> 420 bytes
-rw-r--r--doc/html/classRtError-members.html2
-rw-r--r--doc/html/classRtError.html2
-rw-r--r--doc/html/classRtMidi-members.html12
-rw-r--r--doc/html/classRtMidi.html89
-rw-r--r--doc/html/classRtMidiIn-members.html35
-rw-r--r--doc/html/classRtMidiIn.html57
-rw-r--r--doc/html/classRtMidiOut-members.html29
-rw-r--r--doc/html/classRtMidiOut.html55
-rw-r--r--doc/html/classes.html6
-rw-r--r--doc/html/files.html4
-rw-r--r--doc/html/functions.html67
-rw-r--r--doc/html/functions_enum.html5
-rw-r--r--doc/html/functions_eval.html21
-rw-r--r--doc/html/functions_func.html84
-rw-r--r--doc/html/functions_type.html2
-rw-r--r--doc/html/hierarchy.html24
-rw-r--r--doc/html/index.html62
-rw-r--r--doc/html/structMidiInApi_1_1MidiMessage-members.html22
-rw-r--r--doc/html/structMidiInApi_1_1MidiMessage.html30
-rw-r--r--doc/html/structMidiInApi_1_1MidiQueue-members.html22
-rw-r--r--doc/html/structMidiInApi_1_1MidiQueue.html30
-rw-r--r--doc/html/structMidiInApi_1_1RtMidiInData-members.html22
-rw-r--r--doc/html/structMidiInApi_1_1RtMidiInData.html30
70 files changed, 3350 insertions, 1473 deletions
diff --git a/configure b/configure
index c1f8bc0..34263d5 100755
--- a/configure
+++ b/configure
@@ -1,11 +1,11 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.63 for RtMidi 1.0.
+# Generated by GNU Autoconf 2.61 for RtMidi 2.0.
#
# Report bugs to <gary@music.mcgill.ca>.
#
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
-# 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+# 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
# This configure script is free software; the Free Software Foundation
# gives unlimited permission to copy, distribute and modify it.
## --------------------- ##
@@ -17,7 +17,7 @@ DUALCASE=1; export DUALCASE # for MKS sh
if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
emulate sh
NULLCMD=:
- # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
# is contrary to our usage. Disable this feature.
alias -g '${1+"$@"}'='"$@"'
setopt NO_GLOB_SUBST
@@ -39,45 +39,17 @@ as_cr_Letters=$as_cr_letters$as_cr_LETTERS
as_cr_digits='0123456789'
as_cr_alnum=$as_cr_Letters$as_cr_digits
-as_nl='
-'
-export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
- as_echo='printf %s\n'
- as_echo_n='printf %s'
-else
- if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
- as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
- as_echo_n='/usr/ucb/echo -n'
- else
- as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
- as_echo_n_body='eval
- arg=$1;
- case $arg in
- *"$as_nl"*)
- expr "X$arg" : "X\\(.*\\)$as_nl";
- arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
- esac;
- expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
- '
- export as_echo_n_body
- as_echo_n='sh -c $as_echo_n_body as_echo'
- fi
- export as_echo_body
- as_echo='sh -c $as_echo_body as_echo'
-fi
-
# The user is always right.
if test "${PATH_SEPARATOR+set}" != set; then
- PATH_SEPARATOR=:
- (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
- (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
- PATH_SEPARATOR=';'
- }
+ echo "#! /bin/sh" >conf$$.sh
+ echo "exit 0" >>conf$$.sh
+ chmod +x conf$$.sh
+ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+ PATH_SEPARATOR=';'
+ else
+ PATH_SEPARATOR=:
+ fi
+ rm -f conf$$.sh
fi
# Support unset when possible.
@@ -93,6 +65,8 @@ fi
# there to prevent editors from complaining about space-tab.
# (If _AS_PATH_WALK were called with IFS unset, it would disable word
# splitting by setting IFS to empty value.)
+as_nl='
+'
IFS=" "" $as_nl"
# Find who we are. Look in the path if we contain no directory separator.
@@ -115,7 +89,7 @@ if test "x$as_myself" = x; then
as_myself=$0
fi
if test ! -f "$as_myself"; then
- $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
{ (exit 1); exit 1; }
fi
@@ -128,10 +102,17 @@ PS2='> '
PS4='+ '
# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
+for as_var in \
+ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
+ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
+ LC_TELEPHONE LC_TIME
+do
+ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
+ eval $as_var=C; export $as_var
+ else
+ ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+ fi
+done
# Required to use basename.
if expr a : '\(a\)' >/dev/null 2>&1 &&
@@ -153,7 +134,7 @@ as_me=`$as_basename -- "$0" ||
$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
X"$0" : 'X\(//\)$' \| \
X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
+echo X/"$0" |
sed '/^.*\/\([^/][^/]*\)\/*$/{
s//\1/
q
@@ -179,7 +160,7 @@ else
as_have_required=no
fi
- if test $as_have_required = yes && (eval ":
+ if test $as_have_required = yes && (eval ":
(as_func_return () {
(exit \$1)
}
@@ -261,7 +242,7 @@ IFS=$as_save_IFS
if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
emulate sh
NULLCMD=:
- # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
# is contrary to our usage. Disable this feature.
alias -g '${1+"$@"}'='"$@"'
setopt NO_GLOB_SUBST
@@ -282,7 +263,7 @@ _ASEOF
if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
emulate sh
NULLCMD=:
- # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
# is contrary to our usage. Disable this feature.
alias -g '${1+"$@"}'='"$@"'
setopt NO_GLOB_SUBST
@@ -362,10 +343,10 @@ fi
if test "x$CONFIG_SHELL" != x; then
for as_var in BASH_ENV ENV
- do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
- done
- export CONFIG_SHELL
- exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
+ do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+ done
+ export CONFIG_SHELL
+ exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
fi
@@ -434,10 +415,9 @@ fi
test \$exitcode = 0") || {
echo No shell found that supports shell functions.
- echo Please tell bug-autoconf@gnu.org about your system,
- echo including any error possibly output before this message.
- echo This can help us improve future autoconf versions.
- echo Configuration will now proceed without shell functions.
+ echo Please tell autoconf@gnu.org about your system,
+ echo including any error possibly output before this
+ echo message
}
@@ -473,7 +453,7 @@ test \$exitcode = 0") || {
s/-\n.*//
' >$as_me.lineno &&
chmod +x "$as_me.lineno" ||
- { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
+ { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
{ (exit 1); exit 1; }; }
# Don't try to exec as it changes $[0], causing all sort of problems
@@ -501,6 +481,7 @@ case `echo -n x` in
*)
ECHO_N='-n';;
esac
+
if expr a : '\(a\)' >/dev/null 2>&1 &&
test "X`expr 00001 : '.*\(...\)'`" = X001; then
as_expr=expr
@@ -513,22 +494,19 @@ if test -d conf$$.dir; then
rm -f conf$$.dir/conf$$.file
else
rm -f conf$$.dir
- mkdir conf$$.dir 2>/dev/null
-fi
-if (echo >conf$$.file) 2>/dev/null; then
- if ln -s conf$$.file conf$$ 2>/dev/null; then
- as_ln_s='ln -s'
- # ... but there are two gotchas:
- # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
- # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
- # In both cases, we have to default to `cp -p'.
- ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
- as_ln_s='cp -p'
- elif ln conf$$.file conf$$ 2>/dev/null; then
- as_ln_s=ln
- else
+ mkdir conf$$.dir
+fi
+echo >conf$$.file
+if ln -s conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s='ln -s'
+ # ... but there are two gotchas:
+ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+ # In both cases, we have to default to `cp -p'.
+ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
as_ln_s='cp -p'
- fi
+elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
else
as_ln_s='cp -p'
fi
@@ -553,10 +531,10 @@ else
as_test_x='
eval sh -c '\''
if test -d "$1"; then
- test -d "$1/.";
+ test -d "$1/.";
else
case $1 in
- -*)set "./$1";;
+ -*)set "./$1";;
esac;
case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
???[sx]*):;;*)false;;esac;fi
@@ -596,8 +574,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
# Identity of this package.
PACKAGE_NAME='RtMidi'
PACKAGE_TARNAME='rtmidi'
-PACKAGE_VERSION='1.0'
-PACKAGE_STRING='RtMidi 1.0'
+PACKAGE_VERSION='2.0'
+PACKAGE_STRING='RtMidi 2.0'
PACKAGE_BUGREPORT='gary@music.mcgill.ca'
ac_unique_file="RtMidi.cpp"
@@ -637,77 +615,77 @@ ac_includes_default="\
# include <unistd.h>
#endif"
-ac_subst_vars='LTLIBOBJS
-LIBOBJS
-api
-host_os
-host_vendor
-host_cpu
-host
-build_os
-build_vendor
-build_cpu
-build
-object_path
-cxxflag
-cppflag
-EGREP
-GREP
-CPP
-ac_ct_CC
-CFLAGS
-CC
-OBJEXT
-EXEEXT
-ac_ct_CXX
-CPPFLAGS
-LDFLAGS
-CXXFLAGS
-CXX
-GXX
-target_alias
-host_alias
-build_alias
-LIBS
-ECHO_T
-ECHO_N
-ECHO_C
-DEFS
-mandir
-localedir
-libdir
-psdir
-pdfdir
-dvidir
-htmldir
-infodir
-docdir
-oldincludedir
-includedir
-localstatedir
-sharedstatedir
-sysconfdir
-datadir
-datarootdir
-libexecdir
-sbindir
-bindir
-program_transform_name
-prefix
-exec_prefix
-PACKAGE_BUGREPORT
-PACKAGE_STRING
-PACKAGE_VERSION
-PACKAGE_TARNAME
-PACKAGE_NAME
+ac_subst_vars='SHELL
PATH_SEPARATOR
-SHELL'
+PACKAGE_NAME
+PACKAGE_TARNAME
+PACKAGE_VERSION
+PACKAGE_STRING
+PACKAGE_BUGREPORT
+exec_prefix
+prefix
+program_transform_name
+bindir
+sbindir
+libexecdir
+datarootdir
+datadir
+sysconfdir
+sharedstatedir
+localstatedir
+includedir
+oldincludedir
+docdir
+infodir
+htmldir
+dvidir
+pdfdir
+psdir
+libdir
+localedir
+mandir
+DEFS
+ECHO_C
+ECHO_N
+ECHO_T
+LIBS
+build_alias
+host_alias
+target_alias
+GXX
+CXX
+CXXFLAGS
+LDFLAGS
+CPPFLAGS
+ac_ct_CXX
+EXEEXT
+OBJEXT
+RANLIB
+AR
+CC
+CFLAGS
+ac_ct_CC
+CPP
+GREP
+EGREP
+cppflag
+cxxflag
+object_path
+build
+build_cpu
+build_vendor
+build_os
+host
+host_cpu
+host_vendor
+host_os
+sharedlib
+sharedname
+libflags
+api
+LIBOBJS
+LTLIBOBJS'
ac_subst_files=''
-ac_user_opts='
-enable_option_checking
-enable_debug
-with_jack
-'
ac_precious_vars='build_alias
host_alias
target_alias
@@ -725,8 +703,6 @@ CPP'
# Initialize some variables set by options.
ac_init_help=
ac_init_version=false
-ac_unrecognized_opts=
-ac_unrecognized_sep=
# The variables have the same names as the options, with
# dashes changed to underlines.
cache_file=/dev/null
@@ -825,21 +801,13 @@ do
datarootdir=$ac_optarg ;;
-disable-* | --disable-*)
- ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+ ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
# Reject names that are not valid shell variable names.
- expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2
+ expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid feature name: $ac_feature" >&2
{ (exit 1); exit 1; }; }
- ac_useropt_orig=$ac_useropt
- ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
- case $ac_user_opts in
- *"
-"enable_$ac_useropt"
-"*) ;;
- *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
- ac_unrecognized_sep=', ';;
- esac
- eval enable_$ac_useropt=no ;;
+ ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'`
+ eval enable_$ac_feature=no ;;
-docdir | --docdir | --docdi | --doc | --do)
ac_prev=docdir ;;
@@ -852,21 +820,13 @@ do
dvidir=$ac_optarg ;;
-enable-* | --enable-*)
- ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+ ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
# Reject names that are not valid shell variable names.
- expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2
+ expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid feature name: $ac_feature" >&2
{ (exit 1); exit 1; }; }
- ac_useropt_orig=$ac_useropt
- ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
- case $ac_user_opts in
- *"
-"enable_$ac_useropt"
-"*) ;;
- *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
- ac_unrecognized_sep=', ';;
- esac
- eval enable_$ac_useropt=\$ac_optarg ;;
+ ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'`
+ eval enable_$ac_feature=\$ac_optarg ;;
-exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
| --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
@@ -1057,38 +1017,22 @@ do
ac_init_version=: ;;
-with-* | --with-*)
- ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+ ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
# Reject names that are not valid shell variable names.
- expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2
+ expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid package name: $ac_package" >&2
{ (exit 1); exit 1; }; }
- ac_useropt_orig=$ac_useropt
- ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
- case $ac_user_opts in
- *"
-"with_$ac_useropt"
-"*) ;;
- *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
- ac_unrecognized_sep=', ';;
- esac
- eval with_$ac_useropt=\$ac_optarg ;;
+ ac_package=`echo $ac_package | sed 's/[-.]/_/g'`
+ eval with_$ac_package=\$ac_optarg ;;
-without-* | --without-*)
- ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+ ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
# Reject names that are not valid shell variable names.
- expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2
+ expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid package name: $ac_package" >&2
{ (exit 1); exit 1; }; }
- ac_useropt_orig=$ac_useropt
- ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
- case $ac_user_opts in
- *"
-"with_$ac_useropt"
-"*) ;;
- *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
- ac_unrecognized_sep=', ';;
- esac
- eval with_$ac_useropt=no ;;
+ ac_package=`echo $ac_package | sed 's/[-.]/_/g'`
+ eval with_$ac_package=no ;;
--x)
# Obsolete; use --with-x.
@@ -1108,7 +1052,7 @@ do
| --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
x_libraries=$ac_optarg ;;
- -*) { $as_echo "$as_me: error: unrecognized option: $ac_option
+ -*) { echo "$as_me: error: unrecognized option: $ac_option
Try \`$0 --help' for more information." >&2
{ (exit 1); exit 1; }; }
;;
@@ -1117,16 +1061,16 @@ Try \`$0 --help' for more information." >&2
ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
# Reject names that are not valid shell variable names.
expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
- { $as_echo "$as_me: error: invalid variable name: $ac_envvar" >&2
+ { echo "$as_me: error: invalid variable name: $ac_envvar" >&2
{ (exit 1); exit 1; }; }
eval $ac_envvar=\$ac_optarg
export $ac_envvar ;;
*)
# FIXME: should be removed in autoconf 3.0.
- $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+ echo "$as_me: WARNING: you should use --build, --host, --target" >&2
expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
- $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+ echo "$as_me: WARNING: invalid host type: $ac_option" >&2
: ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
;;
@@ -1135,38 +1079,22 @@ done
if test -n "$ac_prev"; then
ac_option=--`echo $ac_prev | sed 's/_/-/g'`
- { $as_echo "$as_me: error: missing argument to $ac_option" >&2
+ { echo "$as_me: error: missing argument to $ac_option" >&2
{ (exit 1); exit 1; }; }
fi
-if test -n "$ac_unrecognized_opts"; then
- case $enable_option_checking in
- no) ;;
- fatal) { $as_echo "$as_me: error: unrecognized options: $ac_unrecognized_opts" >&2
- { (exit 1); exit 1; }; } ;;
- *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
- esac
-fi
-
-# Check all directory arguments for consistency.
+# Be sure to have absolute directory names.
for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
datadir sysconfdir sharedstatedir localstatedir includedir \
oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
libdir localedir mandir
do
eval ac_val=\$$ac_var
- # Remove trailing slashes.
- case $ac_val in
- */ )
- ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
- eval $ac_var=\$ac_val;;
- esac
- # Be sure to have absolute directory names.
case $ac_val in
[\\/$]* | ?:[\\/]* ) continue;;
NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
esac
- { $as_echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
+ { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
{ (exit 1); exit 1; }; }
done
@@ -1181,7 +1109,7 @@ target=$target_alias
if test "x$host_alias" != x; then
if test "x$build_alias" = x; then
cross_compiling=maybe
- $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
+ echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
If a cross compiler is detected then cross compile mode will be used." >&2
elif test "x$build_alias" != "x$host_alias"; then
cross_compiling=yes
@@ -1197,10 +1125,10 @@ test "$silent" = yes && exec 6>/dev/null
ac_pwd=`pwd` && test -n "$ac_pwd" &&
ac_ls_di=`ls -di .` &&
ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
- { $as_echo "$as_me: error: working directory cannot be determined" >&2
+ { echo "$as_me: error: Working directory cannot be determined" >&2
{ (exit 1); exit 1; }; }
test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
- { $as_echo "$as_me: error: pwd does not report name of working directory" >&2
+ { echo "$as_me: error: pwd does not report name of working directory" >&2
{ (exit 1); exit 1; }; }
@@ -1208,12 +1136,12 @@ test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
if test -z "$srcdir"; then
ac_srcdir_defaulted=yes
# Try the directory containing this script, then the parent directory.
- ac_confdir=`$as_dirname -- "$as_myself" ||
-$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$as_myself" : 'X\(//\)[^/]' \| \
- X"$as_myself" : 'X\(//\)$' \| \
- X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_myself" |
+ ac_confdir=`$as_dirname -- "$0" ||
+$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$0" : 'X\(//\)[^/]' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+echo X"$0" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
q
@@ -1240,12 +1168,12 @@ else
fi
if test ! -r "$srcdir/$ac_unique_file"; then
test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
- { $as_echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
+ { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
{ (exit 1); exit 1; }; }
fi
ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
ac_abs_confdir=`(
- cd "$srcdir" && test -r "./$ac_unique_file" || { $as_echo "$as_me: error: $ac_msg" >&2
+ cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2
{ (exit 1); exit 1; }; }
pwd)`
# When building in place, set srcdir=.
@@ -1272,7 +1200,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures RtMidi 1.0 to adapt to many kinds of systems.
+\`configure' configures RtMidi 2.0 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1294,9 +1222,9 @@ Configuration:
Installation directories:
--prefix=PREFIX install architecture-independent files in PREFIX
- [$ac_default_prefix]
+ [$ac_default_prefix]
--exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
- [PREFIX]
+ [PREFIX]
By default, \`make install' will install all the files in
\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
@@ -1306,25 +1234,25 @@ for instance \`--prefix=\$HOME'.
For better control, use the options below.
Fine tuning of the installation directories:
- --bindir=DIR user executables [EPREFIX/bin]
- --sbindir=DIR system admin executables [EPREFIX/sbin]
- --libexecdir=DIR program executables [EPREFIX/libexec]
- --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
- --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
- --localstatedir=DIR modifiable single-machine data [PREFIX/var]
- --libdir=DIR object code libraries [EPREFIX/lib]
- --includedir=DIR C header files [PREFIX/include]
- --oldincludedir=DIR C header files for non-gcc [/usr/include]
- --datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
- --datadir=DIR read-only architecture-independent data [DATAROOTDIR]
- --infodir=DIR info documentation [DATAROOTDIR/info]
- --localedir=DIR locale-dependent data [DATAROOTDIR/locale]
- --mandir=DIR man documentation [DATAROOTDIR/man]
- --docdir=DIR documentation root [DATAROOTDIR/doc/rtmidi]
- --htmldir=DIR html documentation [DOCDIR]
- --dvidir=DIR dvi documentation [DOCDIR]
- --pdfdir=DIR pdf documentation [DOCDIR]
- --psdir=DIR ps documentation [DOCDIR]
+ --bindir=DIR user executables [EPREFIX/bin]
+ --sbindir=DIR system admin executables [EPREFIX/sbin]
+ --libexecdir=DIR program executables [EPREFIX/libexec]
+ --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
+ --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
+ --localstatedir=DIR modifiable single-machine data [PREFIX/var]
+ --libdir=DIR object code libraries [EPREFIX/lib]
+ --includedir=DIR C header files [PREFIX/include]
+ --oldincludedir=DIR C header files for non-gcc [/usr/include]
+ --datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
+ --datadir=DIR read-only architecture-independent data [DATAROOTDIR]
+ --infodir=DIR info documentation [DATAROOTDIR/info]
+ --localedir=DIR locale-dependent data [DATAROOTDIR/locale]
+ --mandir=DIR man documentation [DATAROOTDIR/man]
+ --docdir=DIR documentation root [DATAROOTDIR/doc/rtmidi]
+ --htmldir=DIR html documentation [DOCDIR]
+ --dvidir=DIR dvi documentation [DOCDIR]
+ --pdfdir=DIR pdf documentation [DOCDIR]
+ --psdir=DIR ps documentation [DOCDIR]
_ACEOF
cat <<\_ACEOF
@@ -1337,12 +1265,11 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of RtMidi 1.0:";;
+ short | recursive ) echo "Configuration of RtMidi 2.0:";;
esac
cat <<\_ACEOF
Optional Features:
- --disable-option-checking ignore unrecognized --enable/--with options
--disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
--enable-FEATURE[=ARG] include FEATURE [ARG=yes]
--enable-debug = enable various debug output
@@ -1350,7 +1277,11 @@ Optional Features:
Optional Packages:
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
--without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
- --with-jack = choose JACK server support (linux only)
+ --with-jack = choose JACK server support (mac and linux only)
+ --with-alsa = choose native ALSA sequencer API support (linux only)
+ --with-core = choose CoreMidi API support (mac only)
+ --with-winmm = choose Windows MultiMedia (MM) API support (windoze only)
+ --with-winks = choose kernel streaming support (windoze only)
Some influential environment variables:
CXX C++ compiler command
@@ -1375,17 +1306,15 @@ fi
if test "$ac_init_help" = "recursive"; then
# If there are subdirs, report their specific --help.
for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
- test -d "$ac_dir" ||
- { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
- continue
+ test -d "$ac_dir" || continue
ac_builddir=.
case "$ac_dir" in
.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
*)
- ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
# A ".." for each directory in $ac_dir_suffix.
- ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+ ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'`
case $ac_top_builddir_sub in
"") ac_top_builddir_sub=. ac_top_build_prefix= ;;
*) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
@@ -1421,7 +1350,7 @@ ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
echo &&
$SHELL "$ac_srcdir/configure" --help=recursive
else
- $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+ echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
fi || ac_status=$?
cd "$ac_pwd" || { ac_status=$?; break; }
done
@@ -1430,11 +1359,11 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-RtMidi configure 1.0
-generated by GNU Autoconf 2.63
+RtMidi configure 2.0
+generated by GNU Autoconf 2.61
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
-2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
This configure script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it.
_ACEOF
@@ -1444,8 +1373,8 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by RtMidi $as_me 1.0, which was
-generated by GNU Autoconf 2.63. Invocation command line was
+It was created by RtMidi $as_me 2.0, which was
+generated by GNU Autoconf 2.61. Invocation command line was
$ $0 $@
@@ -1481,7 +1410,7 @@ for as_dir in $PATH
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
- $as_echo "PATH: $as_dir"
+ echo "PATH: $as_dir"
done
IFS=$as_save_IFS
@@ -1516,7 +1445,7 @@ do
| -silent | --silent | --silen | --sile | --sil)
continue ;;
*\'*)
- ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
esac
case $ac_pass in
1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;;
@@ -1568,12 +1497,11 @@ _ASBOX
case $ac_val in #(
*${as_nl}*)
case $ac_var in #(
- *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5
-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+ *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5
+echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
esac
case $ac_var in #(
_ | IFS | as_nl) ;; #(
- BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
*) $as_unset $ac_var ;;
esac ;;
esac
@@ -1603,9 +1531,9 @@ _ASBOX
do
eval ac_val=\$$ac_var
case $ac_val in
- *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
esac
- $as_echo "$ac_var='\''$ac_val'\''"
+ echo "$ac_var='\''$ac_val'\''"
done | sort
echo
@@ -1620,9 +1548,9 @@ _ASBOX
do
eval ac_val=\$$ac_var
case $ac_val in
- *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
esac
- $as_echo "$ac_var='\''$ac_val'\''"
+ echo "$ac_var='\''$ac_val'\''"
done | sort
echo
fi
@@ -1638,8 +1566,8 @@ _ASBOX
echo
fi
test "$ac_signal" != 0 &&
- $as_echo "$as_me: caught signal $ac_signal"
- $as_echo "$as_me: exit $exit_status"
+ echo "$as_me: caught signal $ac_signal"
+ echo "$as_me: exit $exit_status"
} >&5
rm -f core *.core core.conftest.* &&
rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
@@ -1681,24 +1609,21 @@ _ACEOF
# Let the site file select an alternate cache file if it wants to.
-# Prefer an explicitly selected file to automatically selected ones.
-ac_site_file1=NONE
-ac_site_file2=NONE
+# Prefer explicitly selected file to automatically selected ones.
if test -n "$CONFIG_SITE"; then
- ac_site_file1=$CONFIG_SITE
+ set x "$CONFIG_SITE"
elif test "x$prefix" != xNONE; then
- ac_site_file1=$prefix/share/config.site
- ac_site_file2=$prefix/etc/config.site
+ set x "$prefix/share/config.site" "$prefix/etc/config.site"
else
- ac_site_file1=$ac_default_prefix/share/config.site
- ac_site_file2=$ac_default_prefix/etc/config.site
+ set x "$ac_default_prefix/share/config.site" \
+ "$ac_default_prefix/etc/config.site"
fi
-for ac_site_file in "$ac_site_file1" "$ac_site_file2"
+shift
+for ac_site_file
do
- test "x$ac_site_file" = xNONE && continue
if test -r "$ac_site_file"; then
- { $as_echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
-$as_echo "$as_me: loading site script $ac_site_file" >&6;}
+ { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
+echo "$as_me: loading site script $ac_site_file" >&6;}
sed 's/^/| /' "$ac_site_file" >&5
. "$ac_site_file"
fi
@@ -1708,16 +1633,16 @@ if test -r "$cache_file"; then
# Some versions of bash will fail to source /dev/null (special
# files actually), so we avoid doing that.
if test -f "$cache_file"; then
- { $as_echo "$as_me:$LINENO: loading cache $cache_file" >&5
-$as_echo "$as_me: loading cache $cache_file" >&6;}
+ { echo "$as_me:$LINENO: loading cache $cache_file" >&5
+echo "$as_me: loading cache $cache_file" >&6;}
case $cache_file in
[\\/]* | ?:[\\/]* ) . "$cache_file";;
*) . "./$cache_file";;
esac
fi
else
- { $as_echo "$as_me:$LINENO: creating cache $cache_file" >&5
-$as_echo "$as_me: creating cache $cache_file" >&6;}
+ { echo "$as_me:$LINENO: creating cache $cache_file" >&5
+echo "$as_me: creating cache $cache_file" >&6;}
>$cache_file
fi
@@ -1731,38 +1656,29 @@ for ac_var in $ac_precious_vars; do
eval ac_new_val=\$ac_env_${ac_var}_value
case $ac_old_set,$ac_new_set in
set,)
- { $as_echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+ { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
ac_cache_corrupted=: ;;
,set)
- { $as_echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+ { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5
+echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
ac_cache_corrupted=: ;;
,);;
*)
if test "x$ac_old_val" != "x$ac_new_val"; then
- # differences in whitespace do not lead to failure.
- ac_old_val_w=`echo x $ac_old_val`
- ac_new_val_w=`echo x $ac_new_val`
- if test "$ac_old_val_w" != "$ac_new_val_w"; then
- { $as_echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
-$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
- ac_cache_corrupted=:
- else
- { $as_echo "$as_me:$LINENO: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
-$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
- eval $ac_var=\$ac_old_val
- fi
- { $as_echo "$as_me:$LINENO: former value: \`$ac_old_val'" >&5
-$as_echo "$as_me: former value: \`$ac_old_val'" >&2;}
- { $as_echo "$as_me:$LINENO: current value: \`$ac_new_val'" >&5
-$as_echo "$as_me: current value: \`$ac_new_val'" >&2;}
+ { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
+echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+ { echo "$as_me:$LINENO: former value: $ac_old_val" >&5
+echo "$as_me: former value: $ac_old_val" >&2;}
+ { echo "$as_me:$LINENO: current value: $ac_new_val" >&5
+echo "$as_me: current value: $ac_new_val" >&2;}
+ ac_cache_corrupted=:
fi;;
esac
# Pass precious variables to config.status.
if test "$ac_new_set" = set; then
case $ac_new_val in
- *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+ *\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
*) ac_arg=$ac_var=$ac_new_val ;;
esac
case " $ac_configure_args " in
@@ -1772,12 +1688,10 @@ $as_echo "$as_me: current value: \`$ac_new_val'" >&2;}
fi
done
if $ac_cache_corrupted; then
- { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
- { $as_echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
-$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
- { { $as_echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
-$as_echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
+ { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
+echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+ { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
+echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
{ (exit 1); exit 1; }; }
fi
@@ -1829,8 +1743,8 @@ for ac_dir in config "$srcdir"/config; do
fi
done
if test -z "$ac_aux_dir"; then
- { { $as_echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in config \"$srcdir\"/config" >&5
-$as_echo "$as_me: error: cannot find install-sh or install.sh in config \"$srcdir\"/config" >&2;}
+ { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in config \"$srcdir\"/config" >&5
+echo "$as_me: error: cannot find install-sh or install.sh in config \"$srcdir\"/config" >&2;}
{ (exit 1); exit 1; }; }
fi
@@ -1844,7 +1758,7 @@ ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
-ac_config_files="$ac_config_files tests/Makefile"
+ac_config_files="$ac_config_files rtmidi-config Makefile tests/Makefile"
# Fill GXX with something before test.
@@ -1866,10 +1780,10 @@ if test -z "$CXX"; then
do
# Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
if test "${ac_cv_prog_CXX+set}" = set; then
- $as_echo_n "(cached) " >&6
+ echo $ECHO_N "(cached) $ECHO_C" >&6
else
if test -n "$CXX"; then
ac_cv_prog_CXX="$CXX" # Let the user override the test.
@@ -1882,7 +1796,7 @@ do
for ac_exec_ext in '' $ac_executable_extensions; do
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -1893,11 +1807,11 @@ fi
fi
CXX=$ac_cv_prog_CXX
if test -n "$CXX"; then
- { $as_echo "$as_me:$LINENO: result: $CXX" >&5
-$as_echo "$CXX" >&6; }
+ { echo "$as_me:$LINENO: result: $CXX" >&5
+echo "${ECHO_T}$CXX" >&6; }
else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
fi
@@ -1910,10 +1824,10 @@ if test -z "$CXX"; then
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then
- $as_echo_n "(cached) " >&6
+ echo $ECHO_N "(cached) $ECHO_C" >&6
else
if test -n "$ac_ct_CXX"; then
ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
@@ -1926,7 +1840,7 @@ do
for ac_exec_ext in '' $ac_executable_extensions; do
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_ac_ct_CXX="$ac_prog"
- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -1937,11 +1851,11 @@ fi
fi
ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
if test -n "$ac_ct_CXX"; then
- { $as_echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5
-$as_echo "$ac_ct_CXX" >&6; }
+ { echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5
+echo "${ECHO_T}$ac_ct_CXX" >&6; }
else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
fi
@@ -1953,8 +1867,12 @@ done
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet. If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&5
+echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet. If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&2;}
ac_tool_warned=yes ;;
esac
CXX=$ac_ct_CXX
@@ -1964,41 +1882,37 @@ fi
fi
fi
# Provide some information about the compiler.
-$as_echo "$as_me:$LINENO: checking for C++ compiler version" >&5
-set X $ac_compile
-ac_compiler=$2
+echo "$as_me:$LINENO: checking for C++ compiler version" >&5
+ac_compiler=`set X $ac_compile; echo $2`
{ (ac_try="$ac_compiler --version >&5"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
(eval "$ac_compiler --version >&5") 2>&5
ac_status=$?
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }
{ (ac_try="$ac_compiler -v >&5"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
(eval "$ac_compiler -v >&5") 2>&5
ac_status=$?
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }
{ (ac_try="$ac_compiler -V >&5"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
(eval "$ac_compiler -V >&5") 2>&5
ac_status=$?
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }
cat >conftest.$ac_ext <<_ACEOF
@@ -2017,22 +1931,27 @@ main ()
}
_ACEOF
ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
+ac_clean_files="$ac_clean_files a.out a.exe b.out"
# Try to create an executable without -o first, disregard a.out.
# It will help us diagnose broken compilers, and finding out an intuition
# of exeext.
-{ $as_echo "$as_me:$LINENO: checking for C++ compiler default output file name" >&5
-$as_echo_n "checking for C++ compiler default output file name... " >&6; }
-ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
-
-# The possible output files:
-ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
-
+{ echo "$as_me:$LINENO: checking for C++ compiler default output file name" >&5
+echo $ECHO_N "checking for C++ compiler default output file name... $ECHO_C" >&6; }
+ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+#
+# List of possible output files, starting from the most likely.
+# The algorithm is not robust to junk in `.', hence go to wildcards (a.*)
+# only as a last resort. b.out is created by i960 compilers.
+ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out'
+#
+# The IRIX 6 linker writes into existing files which may not be
+# executable, retaining their permissions. Remove them first so a
+# subsequent execution test works.
ac_rmfiles=
for ac_file in $ac_files
do
case $ac_file in
- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;;
* ) ac_rmfiles="$ac_rmfiles $ac_file";;
esac
done
@@ -2043,11 +1962,10 @@ case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
(eval "$ac_link_default") 2>&5
ac_status=$?
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; then
# Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
@@ -2058,7 +1976,7 @@ for ac_file in $ac_files ''
do
test -f "$ac_file" || continue
case $ac_file in
- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj )
;;
[ab].out )
# We found the default executable, but exeext='' is most
@@ -2085,27 +2003,25 @@ else
ac_file=''
fi
-{ $as_echo "$as_me:$LINENO: result: $ac_file" >&5
-$as_echo "$ac_file" >&6; }
+{ echo "$as_me:$LINENO: result: $ac_file" >&5
+echo "${ECHO_T}$ac_file" >&6; }
if test -z "$ac_file"; then
- $as_echo "$as_me: failed program was:" >&5
+ echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
-{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: C++ compiler cannot create executables
+{ { echo "$as_me:$LINENO: error: C++ compiler cannot create executables
See \`config.log' for more details." >&5
-$as_echo "$as_me: error: C++ compiler cannot create executables
+echo "$as_me: error: C++ compiler cannot create executables
See \`config.log' for more details." >&2;}
- { (exit 77); exit 77; }; }; }
+ { (exit 77); exit 77; }; }
fi
ac_exeext=$ac_cv_exeext
# Check that the compiler produces executables we can run. If not, either
# the compiler is broken, or we cross compile.
-{ $as_echo "$as_me:$LINENO: checking whether the C++ compiler works" >&5
-$as_echo_n "checking whether the C++ compiler works... " >&6; }
+{ echo "$as_me:$LINENO: checking whether the C++ compiler works" >&5
+echo $ECHO_N "checking whether the C++ compiler works... $ECHO_C" >&6; }
# FIXME: These cross compiler hacks should be removed for Autoconf 3.0
# If not cross compiling, check that we can run a simple program.
if test "$cross_compiling" != yes; then
@@ -2114,53 +2030,49 @@ if test "$cross_compiling" != yes; then
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
(eval "$ac_try") 2>&5
ac_status=$?
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cross_compiling=no
else
if test "$cross_compiling" = maybe; then
cross_compiling=yes
else
- { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: cannot run C++ compiled programs.
+ { { echo "$as_me:$LINENO: error: cannot run C++ compiled programs.
If you meant to cross compile, use \`--host'.
See \`config.log' for more details." >&5
-$as_echo "$as_me: error: cannot run C++ compiled programs.
+echo "$as_me: error: cannot run C++ compiled programs.
If you meant to cross compile, use \`--host'.
See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; }; }
+ { (exit 1); exit 1; }; }
fi
fi
fi
-{ $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
+{ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6; }
-rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
+rm -f a.out a.exe conftest$ac_cv_exeext b.out
ac_clean_files=$ac_clean_files_save
# Check that the compiler produces executables we can run. If not, either
# the compiler is broken, or we cross compile.
-{ $as_echo "$as_me:$LINENO: checking whether we are cross compiling" >&5
-$as_echo_n "checking whether we are cross compiling... " >&6; }
-{ $as_echo "$as_me:$LINENO: result: $cross_compiling" >&5
-$as_echo "$cross_compiling" >&6; }
+{ echo "$as_me:$LINENO: checking whether we are cross compiling" >&5
+echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6; }
+{ echo "$as_me:$LINENO: result: $cross_compiling" >&5
+echo "${ECHO_T}$cross_compiling" >&6; }
-{ $as_echo "$as_me:$LINENO: checking for suffix of executables" >&5
-$as_echo_n "checking for suffix of executables... " >&6; }
+{ echo "$as_me:$LINENO: checking for suffix of executables" >&5
+echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6; }
if { (ac_try="$ac_link"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
(eval "$ac_link") 2>&5
ac_status=$?
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; then
# If both `conftest.exe' and `conftest' are `present' (well, observable)
# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will
@@ -2169,33 +2081,31 @@ $as_echo "$ac_try_echo") >&5
for ac_file in conftest.exe conftest conftest.*; do
test -f "$ac_file" || continue
case $ac_file in
- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;;
*.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
break;;
* ) break;;
esac
done
else
- { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link
+ { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link
See \`config.log' for more details." >&5
-$as_echo "$as_me: error: cannot compute suffix of executables: cannot compile and link
+echo "$as_me: error: cannot compute suffix of executables: cannot compile and link
See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; }; }
+ { (exit 1); exit 1; }; }
fi
rm -f conftest$ac_cv_exeext
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
-$as_echo "$ac_cv_exeext" >&6; }
+{ echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
+echo "${ECHO_T}$ac_cv_exeext" >&6; }
rm -f conftest.$ac_ext
EXEEXT=$ac_cv_exeext
ac_exeext=$EXEEXT
-{ $as_echo "$as_me:$LINENO: checking for suffix of object files" >&5
-$as_echo_n "checking for suffix of object files... " >&6; }
+{ echo "$as_me:$LINENO: checking for suffix of object files" >&5
+echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6; }
if test "${ac_cv_objext+set}" = set; then
- $as_echo_n "(cached) " >&6
+ echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
@@ -2218,43 +2128,40 @@ case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
(eval "$ac_compile") 2>&5
ac_status=$?
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; then
for ac_file in conftest.o conftest.obj conftest.*; do
test -f "$ac_file" || continue;
case $ac_file in
- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;;
*) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
break;;
esac
done
else
- $as_echo "$as_me: failed program was:" >&5
+ echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
-{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile
+{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile
See \`config.log' for more details." >&5
-$as_echo "$as_me: error: cannot compute suffix of object files: cannot compile
+echo "$as_me: error: cannot compute suffix of object files: cannot compile
See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; }; }
+ { (exit 1); exit 1; }; }
fi
rm -f conftest.$ac_cv_objext conftest.$ac_ext
fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
-$as_echo "$ac_cv_objext" >&6; }
+{ echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
+echo "${ECHO_T}$ac_cv_objext" >&6; }
OBJEXT=$ac_cv_objext
ac_objext=$OBJEXT
-{ $as_echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5
-$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; }
+{ echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5
+echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6; }
if test "${ac_cv_cxx_compiler_gnu+set}" = set; then
- $as_echo_n "(cached) " >&6
+ echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
@@ -2280,21 +2187,20 @@ case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
(eval "$ac_compile") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && {
test -z "$ac_cxx_werror_flag" ||
test ! -s conftest.err
} && test -s conftest.$ac_objext; then
ac_compiler_gnu=yes
else
- $as_echo "$as_me: failed program was:" >&5
+ echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_compiler_gnu=no
@@ -2304,19 +2210,15 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5
-$as_echo "$ac_cv_cxx_compiler_gnu" >&6; }
-if test $ac_compiler_gnu = yes; then
- GXX=yes
-else
- GXX=
-fi
+{ echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5
+echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6; }
+GXX=`test $ac_compiler_gnu = yes && echo yes`
ac_test_CXXFLAGS=${CXXFLAGS+set}
ac_save_CXXFLAGS=$CXXFLAGS
-{ $as_echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5
-$as_echo_n "checking whether $CXX accepts -g... " >&6; }
+{ echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5
+echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6; }
if test "${ac_cv_prog_cxx_g+set}" = set; then
- $as_echo_n "(cached) " >&6
+ echo $ECHO_N "(cached) $ECHO_C" >&6
else
ac_save_cxx_werror_flag=$ac_cxx_werror_flag
ac_cxx_werror_flag=yes
@@ -2343,21 +2245,20 @@ case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
(eval "$ac_compile") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && {
test -z "$ac_cxx_werror_flag" ||
test ! -s conftest.err
} && test -s conftest.$ac_objext; then
ac_cv_prog_cxx_g=yes
else
- $as_echo "$as_me: failed program was:" >&5
+ echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
CXXFLAGS=""
@@ -2382,21 +2283,20 @@ case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
(eval "$ac_compile") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && {
test -z "$ac_cxx_werror_flag" ||
test ! -s conftest.err
} && test -s conftest.$ac_objext; then
:
else
- $as_echo "$as_me: failed program was:" >&5
+ echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_cxx_werror_flag=$ac_save_cxx_werror_flag
@@ -2422,21 +2322,20 @@ case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
(eval "$ac_compile") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && {
test -z "$ac_cxx_werror_flag" ||
test ! -s conftest.err
} && test -s conftest.$ac_objext; then
ac_cv_prog_cxx_g=yes
else
- $as_echo "$as_me: failed program was:" >&5
+ echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
@@ -2451,8 +2350,8 @@ fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
ac_cxx_werror_flag=$ac_save_cxx_werror_flag
fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5
-$as_echo "$ac_cv_prog_cxx_g" >&6; }
+{ echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5
+echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6; }
if test "$ac_test_CXXFLAGS" = set; then
CXXFLAGS=$ac_save_CXXFLAGS
elif test $ac_cv_prog_cxx_g = yes; then
@@ -2474,6 +2373,148 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_RANLIB+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$RANLIB"; then
+ ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+ { echo "$as_me:$LINENO: result: $RANLIB" >&5
+echo "${ECHO_T}$RANLIB" >&6; }
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_RANLIB"; then
+ ac_ct_RANLIB=$RANLIB
+ # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$ac_ct_RANLIB"; then
+ ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_RANLIB="ranlib"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+ { echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
+echo "${ECHO_T}$ac_ct_RANLIB" >&6; }
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+ if test "x$ac_ct_RANLIB" = x; then
+ RANLIB=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet. If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&5
+echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet. If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+ac_tool_warned=yes ;;
+esac
+ RANLIB=$ac_ct_RANLIB
+ fi
+else
+ RANLIB="$ac_cv_prog_RANLIB"
+fi
+
+# Extract the first word of "ar", so it can be a program name with args.
+set dummy ar; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_path_AR+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ case $AR in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_AR="$AR" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_path_AR="$as_dir/$ac_word$ac_exec_ext"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+ test -z "$ac_cv_path_AR" && ac_cv_path_AR="no"
+ ;;
+esac
+fi
+AR=$ac_cv_path_AR
+if test -n "$AR"; then
+ { echo "$as_me:$LINENO: result: $AR" >&5
+echo "${ECHO_T}$AR" >&6; }
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+if [ $AR = "no" ] ; then
+ { { echo "$as_me:$LINENO: error: \"Could not find ar - needed to create a library\"" >&5
+echo "$as_me: error: \"Could not find ar - needed to create a library\"" >&2;}
+ { (exit 1); exit 1; }; };
+fi
# Checks for header files.
ac_ext=c
@@ -2484,10 +2525,10 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
set dummy ${ac_tool_prefix}gcc; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
if test "${ac_cv_prog_CC+set}" = set; then
- $as_echo_n "(cached) " >&6
+ echo $ECHO_N "(cached) $ECHO_C" >&6
else
if test -n "$CC"; then
ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -2500,7 +2541,7 @@ do
for ac_exec_ext in '' $ac_executable_extensions; do
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_CC="${ac_tool_prefix}gcc"
- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -2511,11 +2552,11 @@ fi
fi
CC=$ac_cv_prog_CC
if test -n "$CC"; then
- { $as_echo "$as_me:$LINENO: result: $CC" >&5
-$as_echo "$CC" >&6; }
+ { echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6; }
else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
fi
@@ -2524,10 +2565,10 @@ if test -z "$ac_cv_prog_CC"; then
ac_ct_CC=$CC
# Extract the first word of "gcc", so it can be a program name with args.
set dummy gcc; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
- $as_echo_n "(cached) " >&6
+ echo $ECHO_N "(cached) $ECHO_C" >&6
else
if test -n "$ac_ct_CC"; then
ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
@@ -2540,7 +2581,7 @@ do
for ac_exec_ext in '' $ac_executable_extensions; do
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_ac_ct_CC="gcc"
- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -2551,11 +2592,11 @@ fi
fi
ac_ct_CC=$ac_cv_prog_ac_ct_CC
if test -n "$ac_ct_CC"; then
- { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
+ { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+echo "${ECHO_T}$ac_ct_CC" >&6; }
else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
fi
if test "x$ac_ct_CC" = x; then
@@ -2563,8 +2604,12 @@ fi
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet. If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&5
+echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet. If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&2;}
ac_tool_warned=yes ;;
esac
CC=$ac_ct_CC
@@ -2577,10 +2622,10 @@ if test -z "$CC"; then
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
set dummy ${ac_tool_prefix}cc; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
if test "${ac_cv_prog_CC+set}" = set; then
- $as_echo_n "(cached) " >&6
+ echo $ECHO_N "(cached) $ECHO_C" >&6
else
if test -n "$CC"; then
ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -2593,7 +2638,7 @@ do
for ac_exec_ext in '' $ac_executable_extensions; do
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_CC="${ac_tool_prefix}cc"
- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -2604,11 +2649,11 @@ fi
fi
CC=$ac_cv_prog_CC
if test -n "$CC"; then
- { $as_echo "$as_me:$LINENO: result: $CC" >&5
-$as_echo "$CC" >&6; }
+ { echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6; }
else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
fi
@@ -2617,10 +2662,10 @@ fi
if test -z "$CC"; then
# Extract the first word of "cc", so it can be a program name with args.
set dummy cc; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
if test "${ac_cv_prog_CC+set}" = set; then
- $as_echo_n "(cached) " >&6
+ echo $ECHO_N "(cached) $ECHO_C" >&6
else
if test -n "$CC"; then
ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -2638,7 +2683,7 @@ do
continue
fi
ac_cv_prog_CC="cc"
- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -2661,11 +2706,11 @@ fi
fi
CC=$ac_cv_prog_CC
if test -n "$CC"; then
- { $as_echo "$as_me:$LINENO: result: $CC" >&5
-$as_echo "$CC" >&6; }
+ { echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6; }
else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
fi
@@ -2676,10 +2721,10 @@ if test -z "$CC"; then
do
# Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
if test "${ac_cv_prog_CC+set}" = set; then
- $as_echo_n "(cached) " >&6
+ echo $ECHO_N "(cached) $ECHO_C" >&6
else
if test -n "$CC"; then
ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -2692,7 +2737,7 @@ do
for ac_exec_ext in '' $ac_executable_extensions; do
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -2703,11 +2748,11 @@ fi
fi
CC=$ac_cv_prog_CC
if test -n "$CC"; then
- { $as_echo "$as_me:$LINENO: result: $CC" >&5
-$as_echo "$CC" >&6; }
+ { echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6; }
else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
fi
@@ -2720,10 +2765,10 @@ if test -z "$CC"; then
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
- $as_echo_n "(cached) " >&6
+ echo $ECHO_N "(cached) $ECHO_C" >&6
else
if test -n "$ac_ct_CC"; then
ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
@@ -2736,7 +2781,7 @@ do
for ac_exec_ext in '' $ac_executable_extensions; do
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_ac_ct_CC="$ac_prog"
- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -2747,11 +2792,11 @@ fi
fi
ac_ct_CC=$ac_cv_prog_ac_ct_CC
if test -n "$ac_ct_CC"; then
- { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
+ { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+echo "${ECHO_T}$ac_ct_CC" >&6; }
else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
fi
@@ -2763,8 +2808,12 @@ done
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet. If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&5
+echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet. If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&2;}
ac_tool_warned=yes ;;
esac
CC=$ac_ct_CC
@@ -2774,56 +2823,50 @@ fi
fi
-test -z "$CC" && { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
+test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
See \`config.log' for more details." >&5
-$as_echo "$as_me: error: no acceptable C compiler found in \$PATH
+echo "$as_me: error: no acceptable C compiler found in \$PATH
See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; }; }
+ { (exit 1); exit 1; }; }
# Provide some information about the compiler.
-$as_echo "$as_me:$LINENO: checking for C compiler version" >&5
-set X $ac_compile
-ac_compiler=$2
+echo "$as_me:$LINENO: checking for C compiler version" >&5
+ac_compiler=`set X $ac_compile; echo $2`
{ (ac_try="$ac_compiler --version >&5"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
(eval "$ac_compiler --version >&5") 2>&5
ac_status=$?
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }
{ (ac_try="$ac_compiler -v >&5"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
(eval "$ac_compiler -v >&5") 2>&5
ac_status=$?
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }
{ (ac_try="$ac_compiler -V >&5"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
(eval "$ac_compiler -V >&5") 2>&5
ac_status=$?
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }
-{ $as_echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
-$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
+echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; }
if test "${ac_cv_c_compiler_gnu+set}" = set; then
- $as_echo_n "(cached) " >&6
+ echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
@@ -2849,21 +2892,20 @@ case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
(eval "$ac_compile") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && {
test -z "$ac_c_werror_flag" ||
test ! -s conftest.err
} && test -s conftest.$ac_objext; then
ac_compiler_gnu=yes
else
- $as_echo "$as_me: failed program was:" >&5
+ echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_compiler_gnu=no
@@ -2873,19 +2915,15 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
ac_cv_c_compiler_gnu=$ac_compiler_gnu
fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
-$as_echo "$ac_cv_c_compiler_gnu" >&6; }
-if test $ac_compiler_gnu = yes; then
- GCC=yes
-else
- GCC=
-fi
+{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
+echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; }
+GCC=`test $ac_compiler_gnu = yes && echo yes`
ac_test_CFLAGS=${CFLAGS+set}
ac_save_CFLAGS=$CFLAGS
-{ $as_echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
-$as_echo_n "checking whether $CC accepts -g... " >&6; }
+{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
+echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; }
if test "${ac_cv_prog_cc_g+set}" = set; then
- $as_echo_n "(cached) " >&6
+ echo $ECHO_N "(cached) $ECHO_C" >&6
else
ac_save_c_werror_flag=$ac_c_werror_flag
ac_c_werror_flag=yes
@@ -2912,21 +2950,20 @@ case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
(eval "$ac_compile") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && {
test -z "$ac_c_werror_flag" ||
test ! -s conftest.err
} && test -s conftest.$ac_objext; then
ac_cv_prog_cc_g=yes
else
- $as_echo "$as_me: failed program was:" >&5
+ echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
CFLAGS=""
@@ -2951,21 +2988,20 @@ case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
(eval "$ac_compile") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && {
test -z "$ac_c_werror_flag" ||
test ! -s conftest.err
} && test -s conftest.$ac_objext; then
:
else
- $as_echo "$as_me: failed program was:" >&5
+ echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_c_werror_flag=$ac_save_c_werror_flag
@@ -2991,21 +3027,20 @@ case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
(eval "$ac_compile") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && {
test -z "$ac_c_werror_flag" ||
test ! -s conftest.err
} && test -s conftest.$ac_objext; then
ac_cv_prog_cc_g=yes
else
- $as_echo "$as_me: failed program was:" >&5
+ echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
@@ -3020,8 +3055,8 @@ fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
ac_c_werror_flag=$ac_save_c_werror_flag
fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
-$as_echo "$ac_cv_prog_cc_g" >&6; }
+{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
+echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; }
if test "$ac_test_CFLAGS" = set; then
CFLAGS=$ac_save_CFLAGS
elif test $ac_cv_prog_cc_g = yes; then
@@ -3037,10 +3072,10 @@ else
CFLAGS=
fi
fi
-{ $as_echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5
-$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5
+echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; }
if test "${ac_cv_prog_cc_c89+set}" = set; then
- $as_echo_n "(cached) " >&6
+ echo $ECHO_N "(cached) $ECHO_C" >&6
else
ac_cv_prog_cc_c89=no
ac_save_CC=$CC
@@ -3111,21 +3146,20 @@ case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
(eval "$ac_compile") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && {
test -z "$ac_c_werror_flag" ||
test ! -s conftest.err
} && test -s conftest.$ac_objext; then
ac_cv_prog_cc_c89=$ac_arg
else
- $as_echo "$as_me: failed program was:" >&5
+ echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
@@ -3141,15 +3175,15 @@ fi
# AC_CACHE_VAL
case "x$ac_cv_prog_cc_c89" in
x)
- { $as_echo "$as_me:$LINENO: result: none needed" >&5
-$as_echo "none needed" >&6; } ;;
+ { echo "$as_me:$LINENO: result: none needed" >&5
+echo "${ECHO_T}none needed" >&6; } ;;
xno)
- { $as_echo "$as_me:$LINENO: result: unsupported" >&5
-$as_echo "unsupported" >&6; } ;;
+ { echo "$as_me:$LINENO: result: unsupported" >&5
+echo "${ECHO_T}unsupported" >&6; } ;;
*)
CC="$CC $ac_cv_prog_cc_c89"
- { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5
-$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+ { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5
+echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;;
esac
@@ -3165,15 +3199,15 @@ ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_c_compiler_gnu
-{ $as_echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
-$as_echo_n "checking how to run the C preprocessor... " >&6; }
+{ echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
+echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6; }
# On Suns, sometimes $CPP names a directory.
if test -n "$CPP" && test -d "$CPP"; then
CPP=
fi
if test -z "$CPP"; then
if test "${ac_cv_prog_CPP+set}" = set; then
- $as_echo_n "(cached) " >&6
+ echo $ECHO_N "(cached) $ECHO_C" >&6
else
# Double quotes because CPP needs to be expanded
for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
@@ -3205,21 +3239,20 @@ case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
(eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null && {
test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
test ! -s conftest.err
}; then
:
else
- $as_echo "$as_me: failed program was:" >&5
+ echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
# Broken: fails on valid input.
@@ -3243,14 +3276,13 @@ case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
(eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null && {
test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
test ! -s conftest.err
@@ -3258,7 +3290,7 @@ $as_echo "$ac_try_echo") >&5
# Broken: success on invalid input.
continue
else
- $as_echo "$as_me: failed program was:" >&5
+ echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
# Passes both tests.
@@ -3283,8 +3315,8 @@ fi
else
ac_cv_prog_CPP=$CPP
fi
-{ $as_echo "$as_me:$LINENO: result: $CPP" >&5
-$as_echo "$CPP" >&6; }
+{ echo "$as_me:$LINENO: result: $CPP" >&5
+echo "${ECHO_T}$CPP" >&6; }
ac_preproc_ok=false
for ac_c_preproc_warn_flag in '' yes
do
@@ -3312,21 +3344,20 @@ case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
(eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null && {
test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
test ! -s conftest.err
}; then
:
else
- $as_echo "$as_me: failed program was:" >&5
+ echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
# Broken: fails on valid input.
@@ -3350,14 +3381,13 @@ case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
(eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null && {
test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
test ! -s conftest.err
@@ -3365,7 +3395,7 @@ $as_echo "$ac_try_echo") >&5
# Broken: success on invalid input.
continue
else
- $as_echo "$as_me: failed program was:" >&5
+ echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
# Passes both tests.
@@ -3381,13 +3411,11 @@ rm -f conftest.err conftest.$ac_ext
if $ac_preproc_ok; then
:
else
- { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check
+ { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check
See \`config.log' for more details." >&5
-$as_echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check
+echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check
See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; }; }
+ { (exit 1); exit 1; }; }
fi
ac_ext=c
@@ -3397,37 +3425,42 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
ac_compiler_gnu=$ac_cv_c_compiler_gnu
-{ $as_echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5
-$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
+{ echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5
+echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6; }
+if test "${ac_cv_path_GREP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ # Extract the first word of "grep ggrep" to use in msg output
+if test -z "$GREP"; then
+set dummy grep ggrep; ac_prog_name=$2
if test "${ac_cv_path_GREP+set}" = set; then
- $as_echo_n "(cached) " >&6
+ echo $ECHO_N "(cached) $ECHO_C" >&6
else
- if test -z "$GREP"; then
ac_path_GREP_found=false
- # Loop through the user's path and test for each of PROGNAME-LIST
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+# Loop through the user's path and test for each of PROGNAME-LIST
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_prog in grep ggrep; do
- for ac_exec_ext in '' $ac_executable_extensions; do
- ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
- { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
-# Check for GNU ac_path_GREP and select it if it is found.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
+ { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
+ # Check for GNU ac_path_GREP and select it if it is found.
# Check for GNU $ac_path_GREP
case `"$ac_path_GREP" --version 2>&1` in
*GNU*)
ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
*)
ac_count=0
- $as_echo_n 0123456789 >"conftest.in"
+ echo $ECHO_N "0123456789$ECHO_C" >"conftest.in"
while :
do
cat "conftest.in" "conftest.in" >"conftest.tmp"
mv "conftest.tmp" "conftest.in"
cp "conftest.in" "conftest.nl"
- $as_echo 'GREP' >> "conftest.nl"
+ echo 'GREP' >> "conftest.nl"
"$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
ac_count=`expr $ac_count + 1`
@@ -3442,60 +3475,74 @@ case `"$ac_path_GREP" --version 2>&1` in
rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
esac
- $ac_path_GREP_found && break 3
- done
+
+ $ac_path_GREP_found && break 3
done
done
+
+done
IFS=$as_save_IFS
- if test -z "$ac_cv_path_GREP"; then
- { { $as_echo "$as_me:$LINENO: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
-$as_echo "$as_me: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
+
+
+fi
+
+GREP="$ac_cv_path_GREP"
+if test -z "$GREP"; then
+ { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
+echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
{ (exit 1); exit 1; }; }
- fi
+fi
+
else
ac_cv_path_GREP=$GREP
fi
+
fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5
-$as_echo "$ac_cv_path_GREP" >&6; }
+{ echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5
+echo "${ECHO_T}$ac_cv_path_GREP" >&6; }
GREP="$ac_cv_path_GREP"
-{ $as_echo "$as_me:$LINENO: checking for egrep" >&5
-$as_echo_n "checking for egrep... " >&6; }
+{ echo "$as_me:$LINENO: checking for egrep" >&5
+echo $ECHO_N "checking for egrep... $ECHO_C" >&6; }
if test "${ac_cv_path_EGREP+set}" = set; then
- $as_echo_n "(cached) " >&6
+ echo $ECHO_N "(cached) $ECHO_C" >&6
else
if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
then ac_cv_path_EGREP="$GREP -E"
else
- if test -z "$EGREP"; then
+ # Extract the first word of "egrep" to use in msg output
+if test -z "$EGREP"; then
+set dummy egrep; ac_prog_name=$2
+if test "${ac_cv_path_EGREP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
ac_path_EGREP_found=false
- # Loop through the user's path and test for each of PROGNAME-LIST
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+# Loop through the user's path and test for each of PROGNAME-LIST
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_prog in egrep; do
- for ac_exec_ext in '' $ac_executable_extensions; do
- ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
- { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
-# Check for GNU ac_path_EGREP and select it if it is found.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
+ { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
+ # Check for GNU ac_path_EGREP and select it if it is found.
# Check for GNU $ac_path_EGREP
case `"$ac_path_EGREP" --version 2>&1` in
*GNU*)
ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
*)
ac_count=0
- $as_echo_n 0123456789 >"conftest.in"
+ echo $ECHO_N "0123456789$ECHO_C" >"conftest.in"
while :
do
cat "conftest.in" "conftest.in" >"conftest.tmp"
mv "conftest.tmp" "conftest.in"
cp "conftest.in" "conftest.nl"
- $as_echo 'EGREP' >> "conftest.nl"
+ echo 'EGREP' >> "conftest.nl"
"$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
ac_count=`expr $ac_count + 1`
@@ -3510,31 +3557,40 @@ case `"$ac_path_EGREP" --version 2>&1` in
rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
esac
- $ac_path_EGREP_found && break 3
- done
+
+ $ac_path_EGREP_found && break 3
done
done
+
+done
IFS=$as_save_IFS
- if test -z "$ac_cv_path_EGREP"; then
- { { $as_echo "$as_me:$LINENO: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
-$as_echo "$as_me: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
+
+
+fi
+
+EGREP="$ac_cv_path_EGREP"
+if test -z "$EGREP"; then
+ { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
+echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
{ (exit 1); exit 1; }; }
- fi
+fi
+
else
ac_cv_path_EGREP=$EGREP
fi
+
fi
fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5
-$as_echo "$ac_cv_path_EGREP" >&6; }
+{ echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5
+echo "${ECHO_T}$ac_cv_path_EGREP" >&6; }
EGREP="$ac_cv_path_EGREP"
-{ $as_echo "$as_me:$LINENO: checking for ANSI C header files" >&5
-$as_echo_n "checking for ANSI C header files... " >&6; }
+{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5
+echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; }
if test "${ac_cv_header_stdc+set}" = set; then
- $as_echo_n "(cached) " >&6
+ echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
@@ -3561,21 +3617,20 @@ case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
(eval "$ac_compile") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && {
test -z "$ac_c_werror_flag" ||
test ! -s conftest.err
} && test -s conftest.$ac_objext; then
ac_cv_header_stdc=yes
else
- $as_echo "$as_me: failed program was:" >&5
+ echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_header_stdc=no
@@ -3600,7 +3655,7 @@ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
else
ac_cv_header_stdc=no
fi
-rm -f conftest*
+rm -f -r conftest*
fi
@@ -3621,7 +3676,7 @@ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
else
ac_cv_header_stdc=no
fi
-rm -f conftest*
+rm -f -r conftest*
fi
@@ -3667,40 +3722,37 @@ case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
(eval "$ac_link") 2>&5
ac_status=$?
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && { ac_try='./conftest$ac_exeext'
{ (case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
(eval "$ac_try") 2>&5
ac_status=$?
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
:
else
- $as_echo "$as_me: program exited with status $ac_status" >&5
-$as_echo "$as_me: failed program was:" >&5
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
( exit $ac_status )
ac_cv_header_stdc=no
fi
-rm -rf conftest.dSYM
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
fi
fi
fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
-$as_echo "$ac_cv_header_stdc" >&6; }
+{ echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
+echo "${ECHO_T}$ac_cv_header_stdc" >&6; }
if test $ac_cv_header_stdc = yes; then
cat >>confdefs.h <<\_ACEOF
@@ -3712,21 +3764,21 @@ fi
#AC_CHECK_HEADERS(sys/ioctl.h unistd.h)
# Check for debug
-{ $as_echo "$as_me:$LINENO: checking whether to compile debug version" >&5
-$as_echo_n "checking whether to compile debug version... " >&6; }
+{ echo "$as_me:$LINENO: checking whether to compile debug version" >&5
+echo $ECHO_N "checking whether to compile debug version... $ECHO_C" >&6; }
# Check whether --enable-debug was given.
if test "${enable_debug+set}" = set; then
enableval=$enable_debug; cppflag=-D__RTMIDI_DEBUG__
cxxflag=-g
object_path=Debug
- { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
+ { echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6; }
else
cppflag=
cxxflag=-O3
object_path=Release
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
fi
@@ -3748,34 +3800,34 @@ CXXFLAGS="$CXXFLAGS $cxxflag"
# Checks for package options and external software
# Make sure we can run config.sub.
$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
- { { $as_echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5
-$as_echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;}
+ { { echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5
+echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;}
{ (exit 1); exit 1; }; }
-{ $as_echo "$as_me:$LINENO: checking build system type" >&5
-$as_echo_n "checking build system type... " >&6; }
+{ echo "$as_me:$LINENO: checking build system type" >&5
+echo $ECHO_N "checking build system type... $ECHO_C" >&6; }
if test "${ac_cv_build+set}" = set; then
- $as_echo_n "(cached) " >&6
+ echo $ECHO_N "(cached) $ECHO_C" >&6
else
ac_build_alias=$build_alias
test "x$ac_build_alias" = x &&
ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
test "x$ac_build_alias" = x &&
- { { $as_echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5
-$as_echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
+ { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5
+echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
{ (exit 1); exit 1; }; }
ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
- { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5
-$as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;}
+ { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5
+echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;}
{ (exit 1); exit 1; }; }
fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_build" >&5
-$as_echo "$ac_cv_build" >&6; }
+{ echo "$as_me:$LINENO: result: $ac_cv_build" >&5
+echo "${ECHO_T}$ac_cv_build" >&6; }
case $ac_cv_build in
*-*-*) ;;
-*) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical build" >&5
-$as_echo "$as_me: error: invalid value of canonical build" >&2;}
+*) { { echo "$as_me:$LINENO: error: invalid value of canonical build" >&5
+echo "$as_me: error: invalid value of canonical build" >&2;}
{ (exit 1); exit 1; }; };;
esac
build=$ac_cv_build
@@ -3792,27 +3844,27 @@ IFS=$ac_save_IFS
case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
-{ $as_echo "$as_me:$LINENO: checking host system type" >&5
-$as_echo_n "checking host system type... " >&6; }
+{ echo "$as_me:$LINENO: checking host system type" >&5
+echo $ECHO_N "checking host system type... $ECHO_C" >&6; }
if test "${ac_cv_host+set}" = set; then
- $as_echo_n "(cached) " >&6
+ echo $ECHO_N "(cached) $ECHO_C" >&6
else
if test "x$host_alias" = x; then
ac_cv_host=$ac_cv_build
else
ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
- { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5
-$as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;}
+ { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5
+echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;}
{ (exit 1); exit 1; }; }
fi
fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_host" >&5
-$as_echo "$ac_cv_host" >&6; }
+{ echo "$as_me:$LINENO: result: $ac_cv_host" >&5
+echo "${ECHO_T}$ac_cv_host" >&6; }
case $ac_cv_host in
*-*-*) ;;
-*) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical host" >&5
-$as_echo "$as_me: error: invalid value of canonical host" >&2;}
+*) { { echo "$as_me:$LINENO: error: invalid value of canonical host" >&5
+echo "$as_me: error: invalid value of canonical host" >&2;}
{ (exit 1); exit 1; }; };;
esac
host=$ac_cv_host
@@ -3829,25 +3881,41 @@ IFS=$ac_save_IFS
case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
-{ $as_echo "$as_me:$LINENO: checking for MIDI API" >&5
-$as_echo_n "checking for MIDI API... " >&6; }
+
+sharedlib="librtmidi.so"
+
+sharedname="librtmidi.so.\$(RELEASE)"
+
+libflags="-shared -Wl,-soname,\$(SHARED).\$(MAJOR) -o \$(SHARED).\$(RELEASE)"
+
case $host in
- *-*-linux*)
- api=""
+ *-apple*)
+ sharedlib="librtmidi.dylib"
+
+ sharedname="librtmidi.\$(RELEASE).dylib"
+ libflags="-dynamiclib -o librtmidi.\$(RELEASE).dylib"
+
+esac
+
+api=""
+
+{ echo "$as_me:$LINENO: checking for MIDI API" >&5
+echo $ECHO_N "checking for MIDI API... $ECHO_C" >&6; }
+case $host in
+ *-*-linux*)
# Check whether --with-jack was given.
if test "${with_jack+set}" = set; then
withval=$with_jack;
- api=-D__LINUX_JACK__
+ api="$api -D__UNIX_JACK__"
+ { echo "$as_me:$LINENO: result: using JACK" >&5
+echo "${ECHO_T}using JACK" >&6; }
- { $as_echo "$as_me:$LINENO: result: using JACK" >&5
-$as_echo "using JACK" >&6; }
-
-{ $as_echo "$as_me:$LINENO: checking for jack_client_open in -ljack" >&5
-$as_echo_n "checking for jack_client_open in -ljack... " >&6; }
+{ echo "$as_me:$LINENO: checking for jack_client_open in -ljack" >&5
+echo $ECHO_N "checking for jack_client_open in -ljack... $ECHO_C" >&6; }
if test "${ac_cv_lib_jack_jack_client_open+set}" = set; then
- $as_echo_n "(cached) " >&6
+ echo $ECHO_N "(cached) $ECHO_C" >&6
else
ac_check_lib_save_LIBS=$LIBS
LIBS="-ljack $LIBS"
@@ -3879,37 +3947,33 @@ case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
(eval "$ac_link") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && {
test -z "$ac_c_werror_flag" ||
test ! -s conftest.err
- } && test -s conftest$ac_exeext && {
- test "$cross_compiling" = yes ||
- $as_test_x conftest$ac_exeext
- }; then
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
ac_cv_lib_jack_jack_client_open=yes
else
- $as_echo "$as_me: failed program was:" >&5
+ echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_lib_jack_jack_client_open=no
fi
-rm -rf conftest.dSYM
rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_jack_jack_client_open" >&5
-$as_echo "$ac_cv_lib_jack_jack_client_open" >&6; }
-if test "x$ac_cv_lib_jack_jack_client_open" = x""yes; then
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_jack_jack_client_open" >&5
+echo "${ECHO_T}$ac_cv_lib_jack_jack_client_open" >&6; }
+if test $ac_cv_lib_jack_jack_client_open = yes; then
cat >>confdefs.h <<_ACEOF
#define HAVE_LIBJACK 1
_ACEOF
@@ -3917,22 +3981,27 @@ _ACEOF
LIBS="-ljack $LIBS"
else
- { { $as_echo "$as_me:$LINENO: error: JACK support requires the jack library!" >&5
-$as_echo "$as_me: error: JACK support requires the jack library!" >&2;}
+ { { echo "$as_me:$LINENO: error: JACK support requires the jack library!" >&5
+echo "$as_me: error: JACK support requires the jack library!" >&2;}
{ (exit 1); exit 1; }; }
fi
fi
- if test "$api" == ""; then
- api=-D__LINUX_ALSASEQ__
+ # Look for ALSA flag
+# Check whether --with-alsa was given.
+if test "${with_alsa+set}" = set; then
+ withval=$with_alsa;
+ api="$api -D__LINUX_ALSA__"
+ { echo "$as_me:$LINENO: result: using ALSA" >&5
+echo "${ECHO_T}using ALSA" >&6; }
-{ $as_echo "$as_me:$LINENO: checking for snd_seq_open in -lasound" >&5
-$as_echo_n "checking for snd_seq_open in -lasound... " >&6; }
+{ echo "$as_me:$LINENO: checking for snd_seq_open in -lasound" >&5
+echo $ECHO_N "checking for snd_seq_open in -lasound... $ECHO_C" >&6; }
if test "${ac_cv_lib_asound_snd_seq_open+set}" = set; then
- $as_echo_n "(cached) " >&6
+ echo $ECHO_N "(cached) $ECHO_C" >&6
else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lasound $LIBS"
@@ -3964,37 +4033,33 @@ case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
(eval "$ac_link") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && {
test -z "$ac_c_werror_flag" ||
test ! -s conftest.err
- } && test -s conftest$ac_exeext && {
- test "$cross_compiling" = yes ||
- $as_test_x conftest$ac_exeext
- }; then
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
ac_cv_lib_asound_snd_seq_open=yes
else
- $as_echo "$as_me: failed program was:" >&5
+ echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_lib_asound_snd_seq_open=no
fi
-rm -rf conftest.dSYM
rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_asound_snd_seq_open" >&5
-$as_echo "$ac_cv_lib_asound_snd_seq_open" >&6; }
-if test "x$ac_cv_lib_asound_snd_seq_open" = x""yes; then
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_asound_snd_seq_open" >&5
+echo "${ECHO_T}$ac_cv_lib_asound_snd_seq_open" >&6; }
+if test $ac_cv_lib_asound_snd_seq_open = yes; then
cat >>confdefs.h <<_ACEOF
#define HAVE_LIBASOUND 1
_ACEOF
@@ -4002,20 +4067,27 @@ _ACEOF
LIBS="-lasound $LIBS"
else
- { { $as_echo "$as_me:$LINENO: error: RtMidi in Linux requires the ALSA asound library!" >&5
-$as_echo "$as_me: error: RtMidi in Linux requires the ALSA asound library!" >&2;}
+ { { echo "$as_me:$LINENO: error: ALSA support requires the asound library!" >&5
+echo "$as_me: error: ALSA support requires the asound library!" >&2;}
{ (exit 1); exit 1; }; }
fi
- # Checks for pthread library.
+fi
-{ $as_echo "$as_me:$LINENO: checking for pthread_create in -lpthread" >&5
-$as_echo_n "checking for pthread_create in -lpthread... " >&6; }
-if test "${ac_cv_lib_pthread_pthread_create+set}" = set; then
- $as_echo_n "(cached) " >&6
+
+ if test "$api" == ""; then
+ { echo "$as_me:$LINENO: result: using ALSA" >&5
+echo "${ECHO_T}using ALSA" >&6; }
+ api=-D__LINUX_ALSA__
+
+
+{ echo "$as_me:$LINENO: checking for snd_seq_open in -lasound" >&5
+echo $ECHO_N "checking for snd_seq_open in -lasound... $ECHO_C" >&6; }
+if test "${ac_cv_lib_asound_snd_seq_open+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
else
ac_check_lib_save_LIBS=$LIBS
-LIBS="-lpthread $LIBS"
+LIBS="-lasound $LIBS"
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
@@ -4029,11 +4101,11 @@ cat >>conftest.$ac_ext <<_ACEOF
#ifdef __cplusplus
extern "C"
#endif
-char pthread_create ();
+char snd_seq_open ();
int
main ()
{
-return pthread_create ();
+return snd_seq_open ();
;
return 0;
}
@@ -4044,66 +4116,56 @@ case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
(eval "$ac_link") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && {
test -z "$ac_c_werror_flag" ||
test ! -s conftest.err
- } && test -s conftest$ac_exeext && {
- test "$cross_compiling" = yes ||
- $as_test_x conftest$ac_exeext
- }; then
- ac_cv_lib_pthread_pthread_create=yes
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_lib_asound_snd_seq_open=yes
else
- $as_echo "$as_me: failed program was:" >&5
+ echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
- ac_cv_lib_pthread_pthread_create=no
+ ac_cv_lib_asound_snd_seq_open=no
fi
-rm -rf conftest.dSYM
rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_pthread_pthread_create" >&5
-$as_echo "$ac_cv_lib_pthread_pthread_create" >&6; }
-if test "x$ac_cv_lib_pthread_pthread_create" = x""yes; then
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_asound_snd_seq_open" >&5
+echo "${ECHO_T}$ac_cv_lib_asound_snd_seq_open" >&6; }
+if test $ac_cv_lib_asound_snd_seq_open = yes; then
cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBPTHREAD 1
+#define HAVE_LIBASOUND 1
_ACEOF
- LIBS="-lpthread $LIBS"
+ LIBS="-lasound $LIBS"
else
- { { $as_echo "$as_me:$LINENO: error: RtMidi requires the pthread library!" >&5
-$as_echo "$as_me: error: RtMidi requires the pthread library!" >&2;}
+ { { echo "$as_me:$LINENO: error: ALSA sequencer support requires the asound library!" >&5
+echo "$as_me: error: ALSA sequencer support requires the asound library!" >&2;}
{ (exit 1); exit 1; }; }
fi
fi
- ;;
-
- *-sgi*)
- api="-D__IRIX_MD__ -LANG:std -w"
-
- { $as_echo "$as_me:$LINENO: result: using IRIX MD" >&5
-$as_echo "using IRIX MD" >&6; }
+ # Checks for pthread library.
-{ $as_echo "$as_me:$LINENO: checking for mdInit in -lmd" >&5
-$as_echo_n "checking for mdInit in -lmd... " >&6; }
-if test "${ac_cv_lib_md_mdInit+set}" = set; then
- $as_echo_n "(cached) " >&6
+{ echo "$as_me:$LINENO: checking for pthread_create in -lpthread" >&5
+echo $ECHO_N "checking for pthread_create in -lpthread... $ECHO_C" >&6; }
+if test "${ac_cv_lib_pthread_pthread_create+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
else
ac_check_lib_save_LIBS=$LIBS
-LIBS="-lmd $LIBS"
+LIBS="-lpthread $LIBS"
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
@@ -4117,11 +4179,11 @@ cat >>conftest.$ac_ext <<_ACEOF
#ifdef __cplusplus
extern "C"
#endif
-char mdInit ();
+char pthread_create ();
int
main ()
{
-return mdInit ();
+return pthread_create ();
;
return 0;
}
@@ -4132,58 +4194,63 @@ case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
(eval "$ac_link") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && {
test -z "$ac_c_werror_flag" ||
test ! -s conftest.err
- } && test -s conftest$ac_exeext && {
- test "$cross_compiling" = yes ||
- $as_test_x conftest$ac_exeext
- }; then
- ac_cv_lib_md_mdInit=yes
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_lib_pthread_pthread_create=yes
else
- $as_echo "$as_me: failed program was:" >&5
+ echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
- ac_cv_lib_md_mdInit=no
+ ac_cv_lib_pthread_pthread_create=no
fi
-rm -rf conftest.dSYM
rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_md_mdInit" >&5
-$as_echo "$ac_cv_lib_md_mdInit" >&6; }
-if test "x$ac_cv_lib_md_mdInit" = x""yes; then
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_pthread_pthread_create" >&5
+echo "${ECHO_T}$ac_cv_lib_pthread_pthread_create" >&6; }
+if test $ac_cv_lib_pthread_pthread_create = yes; then
cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBMD 1
+#define HAVE_LIBPTHREAD 1
_ACEOF
- LIBS="-lmd $LIBS"
+ LIBS="-lpthread $LIBS"
else
- { { $as_echo "$as_me:$LINENO: error: IRIX MIDI support requires the md library!" >&5
-$as_echo "$as_me: error: IRIX MIDI support requires the md library!" >&2;}
+ { { echo "$as_me:$LINENO: error: RtMidi requires the pthread library!" >&5
+echo "$as_me: error: RtMidi requires the pthread library!" >&2;}
{ (exit 1); exit 1; }; }
fi
- # Checks for pthread library.
+ ;;
-{ $as_echo "$as_me:$LINENO: checking for pthread_create in -lpthread" >&5
-$as_echo_n "checking for pthread_create in -lpthread... " >&6; }
-if test "${ac_cv_lib_pthread_pthread_create+set}" = set; then
- $as_echo_n "(cached) " >&6
+ *-apple*)
+
+# Check whether --with-jack was given.
+if test "${with_jack+set}" = set; then
+ withval=$with_jack;
+ api="$api -D__UNIX_JACK__"
+ { echo "$as_me:$LINENO: result: using JACK" >&5
+echo "${ECHO_T}using JACK" >&6; }
+
+{ echo "$as_me:$LINENO: checking for jack_client_open in -ljack" >&5
+echo $ECHO_N "checking for jack_client_open in -ljack... $ECHO_C" >&6; }
+if test "${ac_cv_lib_jack_jack_client_open+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
else
ac_check_lib_save_LIBS=$LIBS
-LIBS="-lpthread $LIBS"
+LIBS="-ljack $LIBS"
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
@@ -4197,11 +4264,11 @@ cat >>conftest.$ac_ext <<_ACEOF
#ifdef __cplusplus
extern "C"
#endif
-char pthread_create ();
+char jack_client_open ();
int
main ()
{
-return pthread_create ();
+return jack_client_open ();
;
return 0;
}
@@ -4212,53 +4279,49 @@ case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
(eval "$ac_link") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && {
test -z "$ac_c_werror_flag" ||
test ! -s conftest.err
- } && test -s conftest$ac_exeext && {
- test "$cross_compiling" = yes ||
- $as_test_x conftest$ac_exeext
- }; then
- ac_cv_lib_pthread_pthread_create=yes
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_lib_jack_jack_client_open=yes
else
- $as_echo "$as_me: failed program was:" >&5
+ echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
- ac_cv_lib_pthread_pthread_create=no
+ ac_cv_lib_jack_jack_client_open=no
fi
-rm -rf conftest.dSYM
rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_pthread_pthread_create" >&5
-$as_echo "$ac_cv_lib_pthread_pthread_create" >&6; }
-if test "x$ac_cv_lib_pthread_pthread_create" = x""yes; then
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_jack_jack_client_open" >&5
+echo "${ECHO_T}$ac_cv_lib_jack_jack_client_open" >&6; }
+if test $ac_cv_lib_jack_jack_client_open = yes; then
cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBPTHREAD 1
+#define HAVE_LIBJACK 1
_ACEOF
- LIBS="-lpthread $LIBS"
+ LIBS="-ljack $LIBS"
else
- { { $as_echo "$as_me:$LINENO: error: RtMidi requires the pthread library!" >&5
-$as_echo "$as_me: error: RtMidi requires the pthread library!" >&2;}
+ { { echo "$as_me:$LINENO: error: JACK support requires the jack library!" >&5
+echo "$as_me: error: JACK support requires the jack library!" >&2;}
{ (exit 1); exit 1; }; }
fi
- ;;
+fi
- *-apple*)
- # Check for CoreAudio framework
+
+ # Look for Core flag
# On IRIX 5.3, sys/types and inttypes.h are conflicting.
@@ -4272,11 +4335,11 @@ fi
for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
inttypes.h stdint.h unistd.h
do
-as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-$as_echo_n "checking for $ac_header... " >&6; }
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+{ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
- $as_echo_n "(cached) " >&6
+ echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
@@ -4294,21 +4357,20 @@ case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
(eval "$ac_compile") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && {
test -z "$ac_c_werror_flag" ||
test ! -s conftest.err
} && test -s conftest.$ac_objext; then
eval "$as_ac_Header=yes"
else
- $as_echo "$as_me: failed program was:" >&5
+ echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
eval "$as_ac_Header=no"
@@ -4316,15 +4378,12 @@ fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
-ac_res=`eval 'as_val=${'$as_ac_Header'}
- $as_echo "$as_val"'`
- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-as_val=`eval 'as_val=${'$as_ac_Header'}
- $as_echo "$as_val"'`
- if test "x$as_val" = x""yes; then
+ac_res=`eval echo '${'$as_ac_Header'}'`
+ { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
_ACEOF
fi
@@ -4332,18 +4391,25 @@ fi
done
+
+# Check whether --with-core was given.
+if test "${with_core+set}" = set; then
+ withval=$with_core;
+ api="$api -D__MACOSX_CORE__"
+ { echo "$as_me:$LINENO: result: using CoreMidi" >&5
+echo "${ECHO_T}using CoreMidi" >&6; }
+ if test "${ac_cv_header_CoreMIDI_CoreMIDI_h+set}" = set; then
+ { echo "$as_me:$LINENO: checking for CoreMIDI/CoreMIDI.h" >&5
+echo $ECHO_N "checking for CoreMIDI/CoreMIDI.h... $ECHO_C" >&6; }
if test "${ac_cv_header_CoreMIDI_CoreMIDI_h+set}" = set; then
- { $as_echo "$as_me:$LINENO: checking for CoreMIDI/CoreMIDI.h" >&5
-$as_echo_n "checking for CoreMIDI/CoreMIDI.h... " >&6; }
-if test "${ac_cv_header_CoreMIDI_CoreMIDI_h+set}" = set; then
- $as_echo_n "(cached) " >&6
+ echo $ECHO_N "(cached) $ECHO_C" >&6
fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_CoreMIDI_CoreMIDI_h" >&5
-$as_echo "$ac_cv_header_CoreMIDI_CoreMIDI_h" >&6; }
+{ echo "$as_me:$LINENO: result: $ac_cv_header_CoreMIDI_CoreMIDI_h" >&5
+echo "${ECHO_T}$ac_cv_header_CoreMIDI_CoreMIDI_h" >&6; }
else
# Is the header compilable?
-{ $as_echo "$as_me:$LINENO: checking CoreMIDI/CoreMIDI.h usability" >&5
-$as_echo_n "checking CoreMIDI/CoreMIDI.h usability... " >&6; }
+{ echo "$as_me:$LINENO: checking CoreMIDI/CoreMIDI.h usability" >&5
+echo $ECHO_N "checking CoreMIDI/CoreMIDI.h usability... $ECHO_C" >&6; }
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
@@ -4359,33 +4425,32 @@ case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
(eval "$ac_compile") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && {
test -z "$ac_c_werror_flag" ||
test ! -s conftest.err
} && test -s conftest.$ac_objext; then
ac_header_compiler=yes
else
- $as_echo "$as_me: failed program was:" >&5
+ echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_header_compiler=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-$as_echo "$ac_header_compiler" >&6; }
+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6; }
# Is the header present?
-{ $as_echo "$as_me:$LINENO: checking CoreMIDI/CoreMIDI.h presence" >&5
-$as_echo_n "checking CoreMIDI/CoreMIDI.h presence... " >&6; }
+{ echo "$as_me:$LINENO: checking CoreMIDI/CoreMIDI.h presence" >&5
+echo $ECHO_N "checking CoreMIDI/CoreMIDI.h presence... $ECHO_C" >&6; }
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
@@ -4399,52 +4464,51 @@ case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
(eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null && {
test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
test ! -s conftest.err
}; then
ac_header_preproc=yes
else
- $as_echo "$as_me: failed program was:" >&5
+ echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_header_preproc=no
fi
rm -f conftest.err conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-$as_echo "$ac_header_preproc" >&6; }
+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6; }
# So? What about this header?
case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
yes:no: )
- { $as_echo "$as_me:$LINENO: WARNING: CoreMIDI/CoreMIDI.h: accepted by the compiler, rejected by the preprocessor!" >&5
-$as_echo "$as_me: WARNING: CoreMIDI/CoreMIDI.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
- { $as_echo "$as_me:$LINENO: WARNING: CoreMIDI/CoreMIDI.h: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: CoreMIDI/CoreMIDI.h: proceeding with the compiler's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: CoreMIDI/CoreMIDI.h: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: CoreMIDI/CoreMIDI.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: CoreMIDI/CoreMIDI.h: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: CoreMIDI/CoreMIDI.h: proceeding with the compiler's result" >&2;}
ac_header_preproc=yes
;;
no:yes:* )
- { $as_echo "$as_me:$LINENO: WARNING: CoreMIDI/CoreMIDI.h: present but cannot be compiled" >&5
-$as_echo "$as_me: WARNING: CoreMIDI/CoreMIDI.h: present but cannot be compiled" >&2;}
- { $as_echo "$as_me:$LINENO: WARNING: CoreMIDI/CoreMIDI.h: check for missing prerequisite headers?" >&5
-$as_echo "$as_me: WARNING: CoreMIDI/CoreMIDI.h: check for missing prerequisite headers?" >&2;}
- { $as_echo "$as_me:$LINENO: WARNING: CoreMIDI/CoreMIDI.h: see the Autoconf documentation" >&5
-$as_echo "$as_me: WARNING: CoreMIDI/CoreMIDI.h: see the Autoconf documentation" >&2;}
- { $as_echo "$as_me:$LINENO: WARNING: CoreMIDI/CoreMIDI.h: section \"Present But Cannot Be Compiled\"" >&5
-$as_echo "$as_me: WARNING: CoreMIDI/CoreMIDI.h: section \"Present But Cannot Be Compiled\"" >&2;}
- { $as_echo "$as_me:$LINENO: WARNING: CoreMIDI/CoreMIDI.h: proceeding with the preprocessor's result" >&5
-$as_echo "$as_me: WARNING: CoreMIDI/CoreMIDI.h: proceeding with the preprocessor's result" >&2;}
- { $as_echo "$as_me:$LINENO: WARNING: CoreMIDI/CoreMIDI.h: in the future, the compiler will take precedence" >&5
-$as_echo "$as_me: WARNING: CoreMIDI/CoreMIDI.h: in the future, the compiler will take precedence" >&2;}
+ { echo "$as_me:$LINENO: WARNING: CoreMIDI/CoreMIDI.h: present but cannot be compiled" >&5
+echo "$as_me: WARNING: CoreMIDI/CoreMIDI.h: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: CoreMIDI/CoreMIDI.h: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: CoreMIDI/CoreMIDI.h: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: CoreMIDI/CoreMIDI.h: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: CoreMIDI/CoreMIDI.h: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: CoreMIDI/CoreMIDI.h: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: CoreMIDI/CoreMIDI.h: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: CoreMIDI/CoreMIDI.h: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: CoreMIDI/CoreMIDI.h: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: CoreMIDI/CoreMIDI.h: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: CoreMIDI/CoreMIDI.h: in the future, the compiler will take precedence" >&2;}
( cat <<\_ASBOX
## ----------------------------------- ##
## Report this to gary@music.mcgill.ca ##
@@ -4453,45 +4517,225 @@ _ASBOX
) | sed "s/^/$as_me: WARNING: /" >&2
;;
esac
-{ $as_echo "$as_me:$LINENO: checking for CoreMIDI/CoreMIDI.h" >&5
-$as_echo_n "checking for CoreMIDI/CoreMIDI.h... " >&6; }
+{ echo "$as_me:$LINENO: checking for CoreMIDI/CoreMIDI.h" >&5
+echo $ECHO_N "checking for CoreMIDI/CoreMIDI.h... $ECHO_C" >&6; }
if test "${ac_cv_header_CoreMIDI_CoreMIDI_h+set}" = set; then
- $as_echo_n "(cached) " >&6
+ echo $ECHO_N "(cached) $ECHO_C" >&6
else
ac_cv_header_CoreMIDI_CoreMIDI_h=$ac_header_preproc
fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_CoreMIDI_CoreMIDI_h" >&5
-$as_echo "$ac_cv_header_CoreMIDI_CoreMIDI_h" >&6; }
+{ echo "$as_me:$LINENO: result: $ac_cv_header_CoreMIDI_CoreMIDI_h" >&5
+echo "${ECHO_T}$ac_cv_header_CoreMIDI_CoreMIDI_h" >&6; }
+
+fi
+if test $ac_cv_header_CoreMIDI_CoreMIDI_h = yes; then
+ :
+else
+ { { echo "$as_me:$LINENO: error: CoreMIDI header files not found!" >&5
+echo "$as_me: error: CoreMIDI header files not found!" >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+
+ LIBS="$LIBS -framework CoreMIDI -framework CoreFoundation -framework CoreAudio"
+fi
+
+
+ # If no api flags specified, use CoreMidi
+ if test "$api" == ""; then
+ api=-D__MACOSX_CORE__
+
+ { echo "$as_me:$LINENO: result: using CoreMidi" >&5
+echo "${ECHO_T}using CoreMidi" >&6; }
+ if test "${ac_cv_header_CoreMIDI_CoreMIDI_h+set}" = set; then
+ { echo "$as_me:$LINENO: checking for CoreMIDI/CoreMIDI.h" >&5
+echo $ECHO_N "checking for CoreMIDI/CoreMIDI.h... $ECHO_C" >&6; }
+if test "${ac_cv_header_CoreMIDI_CoreMIDI_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_header_CoreMIDI_CoreMIDI_h" >&5
+echo "${ECHO_T}$ac_cv_header_CoreMIDI_CoreMIDI_h" >&6; }
+else
+ # Is the header compilable?
+{ echo "$as_me:$LINENO: checking CoreMIDI/CoreMIDI.h usability" >&5
+echo $ECHO_N "checking CoreMIDI/CoreMIDI.h usability... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <CoreMIDI/CoreMIDI.h>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6; }
+# Is the header present?
+{ echo "$as_me:$LINENO: checking CoreMIDI/CoreMIDI.h presence" >&5
+echo $ECHO_N "checking CoreMIDI/CoreMIDI.h presence... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <CoreMIDI/CoreMIDI.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
fi
-if test "x$ac_cv_header_CoreMIDI_CoreMIDI_h" = x""yes; then
- api=-D__MACOSX_CORE__
+rm -f conftest.err conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: CoreMIDI/CoreMIDI.h: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: CoreMIDI/CoreMIDI.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: CoreMIDI/CoreMIDI.h: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: CoreMIDI/CoreMIDI.h: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: CoreMIDI/CoreMIDI.h: present but cannot be compiled" >&5
+echo "$as_me: WARNING: CoreMIDI/CoreMIDI.h: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: CoreMIDI/CoreMIDI.h: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: CoreMIDI/CoreMIDI.h: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: CoreMIDI/CoreMIDI.h: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: CoreMIDI/CoreMIDI.h: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: CoreMIDI/CoreMIDI.h: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: CoreMIDI/CoreMIDI.h: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: CoreMIDI/CoreMIDI.h: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: CoreMIDI/CoreMIDI.h: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: CoreMIDI/CoreMIDI.h: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: CoreMIDI/CoreMIDI.h: in the future, the compiler will take precedence" >&2;}
+ ( cat <<\_ASBOX
+## ----------------------------------- ##
+## Report this to gary@music.mcgill.ca ##
+## ----------------------------------- ##
+_ASBOX
+ ) | sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+{ echo "$as_me:$LINENO: checking for CoreMIDI/CoreMIDI.h" >&5
+echo $ECHO_N "checking for CoreMIDI/CoreMIDI.h... $ECHO_C" >&6; }
+if test "${ac_cv_header_CoreMIDI_CoreMIDI_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_cv_header_CoreMIDI_CoreMIDI_h=$ac_header_preproc
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_header_CoreMIDI_CoreMIDI_h" >&5
+echo "${ECHO_T}$ac_cv_header_CoreMIDI_CoreMIDI_h" >&6; }
+
+fi
+if test $ac_cv_header_CoreMIDI_CoreMIDI_h = yes; then
+ :
else
- { { $as_echo "$as_me:$LINENO: error: CoreMIDI header files not found!" >&5
-$as_echo "$as_me: error: CoreMIDI header files not found!" >&2;}
+ { { echo "$as_me:$LINENO: error: CoreMIDI header files not found!" >&5
+echo "$as_me: error: CoreMIDI header files not found!" >&2;}
{ (exit 1); exit 1; }; }
fi
- LIBS="-framework CoreMIDI -framework CoreFoundation -framework CoreAudio"
+ LIBS="-framework CoreMIDI -framework CoreFoundation -framework CoreAudio"
+ fi
;;
*-mingw32*)
- # Use WinMM library
- api=-D__WINDOWS_MM__
+ # Look for WinMM flag
+
+# Check whether --with-winmm was given.
+if test "${with_winmm+set}" = set; then
+ withval=$with_winmm;
+ api="$api -D__WINDOWS_MM__"
+ { echo "$as_me:$LINENO: result: using WinMM" >&5
+echo "${ECHO_T}using WinMM" >&6; }
+ LIBS=-lwinmm
+
+fi
+
+
+
+# Check whether --with-winks was given.
+if test "${with_winks+set}" = set; then
+ withval=$with_winks;
+ api="$api -D__WINDOWS_KS__"
+ LIBS="-lsetupapi -lksuser"
+
+ { echo "$as_me:$LINENO: result: using kernel streaming" >&5
+echo "${ECHO_T}using kernel streaming" >&6; }
+fi
+
# I can't get the following check to work so just manually add the library
- # AC_CHECK_LIB(winmm, midiInGetNumDevs, , AC_MSG_ERROR(Windows MIDI support requires the winmm library!) )
- LIBS=-lwinmm
+ # or could try the following? AC_LIB_WINMM([midiOutGetNumDevs])
+ # AC_CHECK_LIB(winmm, midiInGetNumDevs, , AC_MSG_ERROR(Windows MIDI support requires the winmm library!) )],)
+
+ # If no api flags specified, use WinMM
+ if test "$api" == ""; then
+ api=-D__WINDOWS_MM__
+
+ { echo "$as_me:$LINENO: result: using WinMM" >&5
+echo "${ECHO_T}using WinMM" >&6; }
+ LIBS=-lwinmm
+ fi
;;
*)
# Default case for unknown realtime systems.
- { { $as_echo "$as_me:$LINENO: error: Unknown system type for MIDI support!" >&5
-$as_echo "$as_me: error: Unknown system type for MIDI support!" >&2;}
+ { { echo "$as_me:$LINENO: error: Unknown system type for MIDI support!" >&5
+echo "$as_me: error: Unknown system type for MIDI support!" >&2;}
{ (exit 1); exit 1; }; }
;;
esac
@@ -4525,12 +4769,11 @@ _ACEOF
case $ac_val in #(
*${as_nl}*)
case $ac_var in #(
- *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5
-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+ *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5
+echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
esac
case $ac_var in #(
_ | IFS | as_nl) ;; #(
- BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
*) $as_unset $ac_var ;;
esac ;;
esac
@@ -4563,12 +4806,12 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
if test -w "$cache_file"; then
test "x$cache_file" != "x/dev/null" &&
- { $as_echo "$as_me:$LINENO: updating cache $cache_file" >&5
-$as_echo "$as_me: updating cache $cache_file" >&6;}
+ { echo "$as_me:$LINENO: updating cache $cache_file" >&5
+echo "$as_me: updating cache $cache_file" >&6;}
cat confcache >$cache_file
else
- { $as_echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5
-$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+ { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5
+echo "$as_me: not updating unwritable cache $cache_file" >&6;}
fi
fi
rm -f confcache
@@ -4585,12 +4828,6 @@ test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
# take arguments), then branch to the quote section. Otherwise,
# look for a macro that doesn't take arguments.
ac_script='
-:mline
-/\\$/{
- N
- s,\\\n,,
- b mline
-}
t clear
:clear
s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g
@@ -4620,7 +4857,7 @@ ac_ltlibobjs=
for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
# 1. Remove the extension, and $U if already installed.
ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
- ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
+ ac_i=`echo "$ac_i" | sed "$ac_script"`
# 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR
# will be set to the directory where LIBOBJS objects are built.
ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext"
@@ -4633,12 +4870,11 @@ LTLIBOBJS=$ac_ltlibobjs
: ${CONFIG_STATUS=./config.status}
-ac_write_fail=0
ac_clean_files_save=$ac_clean_files
ac_clean_files="$ac_clean_files $CONFIG_STATUS"
-{ $as_echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
-$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
-cat >$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
+echo "$as_me: creating $CONFIG_STATUS" >&6;}
+cat >$CONFIG_STATUS <<_ACEOF
#! $SHELL
# Generated by $as_me.
# Run this file to recreate the current configuration.
@@ -4651,7 +4887,7 @@ ac_cs_silent=false
SHELL=\${CONFIG_SHELL-$SHELL}
_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+cat >>$CONFIG_STATUS <<\_ACEOF
## --------------------- ##
## M4sh Initialization. ##
## --------------------- ##
@@ -4661,7 +4897,7 @@ DUALCASE=1; export DUALCASE # for MKS sh
if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
emulate sh
NULLCMD=:
- # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
# is contrary to our usage. Disable this feature.
alias -g '${1+"$@"}'='"$@"'
setopt NO_GLOB_SUBST
@@ -4683,45 +4919,17 @@ as_cr_Letters=$as_cr_letters$as_cr_LETTERS
as_cr_digits='0123456789'
as_cr_alnum=$as_cr_Letters$as_cr_digits
-as_nl='
-'
-export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
- as_echo='printf %s\n'
- as_echo_n='printf %s'
-else
- if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
- as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
- as_echo_n='/usr/ucb/echo -n'
- else
- as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
- as_echo_n_body='eval
- arg=$1;
- case $arg in
- *"$as_nl"*)
- expr "X$arg" : "X\\(.*\\)$as_nl";
- arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
- esac;
- expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
- '
- export as_echo_n_body
- as_echo_n='sh -c $as_echo_n_body as_echo'
- fi
- export as_echo_body
- as_echo='sh -c $as_echo_body as_echo'
-fi
-
# The user is always right.
if test "${PATH_SEPARATOR+set}" != set; then
- PATH_SEPARATOR=:
- (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
- (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
- PATH_SEPARATOR=';'
- }
+ echo "#! /bin/sh" >conf$$.sh
+ echo "exit 0" >>conf$$.sh
+ chmod +x conf$$.sh
+ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+ PATH_SEPARATOR=';'
+ else
+ PATH_SEPARATOR=:
+ fi
+ rm -f conf$$.sh
fi
# Support unset when possible.
@@ -4737,6 +4945,8 @@ fi
# there to prevent editors from complaining about space-tab.
# (If _AS_PATH_WALK were called with IFS unset, it would disable word
# splitting by setting IFS to empty value.)
+as_nl='
+'
IFS=" "" $as_nl"
# Find who we are. Look in the path if we contain no directory separator.
@@ -4759,7 +4969,7 @@ if test "x$as_myself" = x; then
as_myself=$0
fi
if test ! -f "$as_myself"; then
- $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
{ (exit 1); exit 1; }
fi
@@ -4772,10 +4982,17 @@ PS2='> '
PS4='+ '
# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
+for as_var in \
+ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
+ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
+ LC_TELEPHONE LC_TIME
+do
+ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
+ eval $as_var=C; export $as_var
+ else
+ ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+ fi
+done
# Required to use basename.
if expr a : '\(a\)' >/dev/null 2>&1 &&
@@ -4797,7 +5014,7 @@ as_me=`$as_basename -- "$0" ||
$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
X"$0" : 'X\(//\)$' \| \
X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
+echo X/"$0" |
sed '/^.*\/\([^/][^/]*\)\/*$/{
s//\1/
q
@@ -4848,7 +5065,7 @@ $as_unset CDPATH
s/-\n.*//
' >$as_me.lineno &&
chmod +x "$as_me.lineno" ||
- { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
+ { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
{ (exit 1); exit 1; }; }
# Don't try to exec as it changes $[0], causing all sort of problems
@@ -4876,6 +5093,7 @@ case `echo -n x` in
*)
ECHO_N='-n';;
esac
+
if expr a : '\(a\)' >/dev/null 2>&1 &&
test "X`expr 00001 : '.*\(...\)'`" = X001; then
as_expr=expr
@@ -4888,22 +5106,19 @@ if test -d conf$$.dir; then
rm -f conf$$.dir/conf$$.file
else
rm -f conf$$.dir
- mkdir conf$$.dir 2>/dev/null
-fi
-if (echo >conf$$.file) 2>/dev/null; then
- if ln -s conf$$.file conf$$ 2>/dev/null; then
- as_ln_s='ln -s'
- # ... but there are two gotchas:
- # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
- # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
- # In both cases, we have to default to `cp -p'.
- ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
- as_ln_s='cp -p'
- elif ln conf$$.file conf$$ 2>/dev/null; then
- as_ln_s=ln
- else
+ mkdir conf$$.dir
+fi
+echo >conf$$.file
+if ln -s conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s='ln -s'
+ # ... but there are two gotchas:
+ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+ # In both cases, we have to default to `cp -p'.
+ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
as_ln_s='cp -p'
- fi
+elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
else
as_ln_s='cp -p'
fi
@@ -4928,10 +5143,10 @@ else
as_test_x='
eval sh -c '\''
if test -d "$1"; then
- test -d "$1/.";
+ test -d "$1/.";
else
case $1 in
- -*)set "./$1";;
+ -*)set "./$1";;
esac;
case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
???[sx]*):;;*)false;;esac;fi
@@ -4953,8 +5168,8 @@ exec 6>&1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by RtMidi $as_me 1.0, which was
-generated by GNU Autoconf 2.63. Invocation command line was
+This file was extended by RtMidi $as_me 2.0, which was
+generated by GNU Autoconf 2.61. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
CONFIG_HEADERS = $CONFIG_HEADERS
@@ -4967,33 +5182,26 @@ on `(hostname || uname -n) 2>/dev/null | sed 1q`
_ACEOF
-case $ac_config_files in *"
-"*) set x $ac_config_files; shift; ac_config_files=$*;;
-esac
-
-
-
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+cat >>$CONFIG_STATUS <<_ACEOF
# Files that config.status was made for.
config_files="$ac_config_files"
_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+cat >>$CONFIG_STATUS <<\_ACEOF
ac_cs_usage="\
\`$as_me' instantiates files from templates according to the
current configuration.
-Usage: $0 [OPTION]... [FILE]...
+Usage: $0 [OPTIONS] [FILE]...
-h, --help print this help, then exit
-V, --version print version number and configuration settings, then exit
- -q, --quiet, --silent
- do not print progress messages
+ -q, --quiet do not print progress messages
-d, --debug don't remove temporary files
--recheck update $as_me by reconfiguring in the same conditions
- --file=FILE[:TEMPLATE]
- instantiate the configuration file FILE
+ --file=FILE[:TEMPLATE]
+ instantiate the configuration file FILE
Configuration files:
$config_files
@@ -5001,23 +5209,23 @@ $config_files
Report bugs to <bug-autoconf@gnu.org>."
_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+cat >>$CONFIG_STATUS <<_ACEOF
ac_cs_version="\\
-RtMidi config.status 1.0
-configured by $0, generated by GNU Autoconf 2.63,
- with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
+RtMidi config.status 2.0
+configured by $0, generated by GNU Autoconf 2.61,
+ with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
-Copyright (C) 2008 Free Software Foundation, Inc.
+Copyright (C) 2006 Free Software Foundation, Inc.
This config.status script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it."
ac_pwd='$ac_pwd'
srcdir='$srcdir'
-test -n "\$AWK" || AWK=awk
_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-# The default lists apply if the user does not specify any file.
+cat >>$CONFIG_STATUS <<\_ACEOF
+# If no file are specified by the user, then we need to provide default
+# value. By we need to know if files were specified by the user.
ac_need_defaults=:
while test $# != 0
do
@@ -5039,24 +5247,21 @@ do
-recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
ac_cs_recheck=: ;;
--version | --versio | --versi | --vers | --ver | --ve | --v | -V )
- $as_echo "$ac_cs_version"; exit ;;
+ echo "$ac_cs_version"; exit ;;
--debug | --debu | --deb | --de | --d | -d )
debug=: ;;
--file | --fil | --fi | --f )
$ac_shift
- case $ac_optarg in
- *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
- esac
- CONFIG_FILES="$CONFIG_FILES '$ac_optarg'"
+ CONFIG_FILES="$CONFIG_FILES $ac_optarg"
ac_need_defaults=false;;
--he | --h | --help | --hel | -h )
- $as_echo "$ac_cs_usage"; exit ;;
+ echo "$ac_cs_usage"; exit ;;
-q | -quiet | --quiet | --quie | --qui | --qu | --q \
| -silent | --silent | --silen | --sile | --sil | --si | --s)
ac_cs_silent=: ;;
# This is an error.
- -*) { $as_echo "$as_me: error: unrecognized option: $1
+ -*) { echo "$as_me: error: unrecognized option: $1
Try \`$0 --help' for more information." >&2
{ (exit 1); exit 1; }; } ;;
@@ -5075,41 +5280,41 @@ if $ac_cs_silent; then
fi
_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+cat >>$CONFIG_STATUS <<_ACEOF
if \$ac_cs_recheck; then
- set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
- shift
- \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
- CONFIG_SHELL='$SHELL'
+ echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6
+ CONFIG_SHELL=$SHELL
export CONFIG_SHELL
- exec "\$@"
+ exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
fi
_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+cat >>$CONFIG_STATUS <<\_ACEOF
exec 5>>config.log
{
echo
sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## Running $as_me. ##
_ASBOX
- $as_echo "$ac_log"
+ echo "$ac_log"
} >&5
_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+cat >>$CONFIG_STATUS <<_ACEOF
_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+cat >>$CONFIG_STATUS <<\_ACEOF
# Handling of arguments.
for ac_config_target in $ac_config_targets
do
case $ac_config_target in
+ "rtmidi-config") CONFIG_FILES="$CONFIG_FILES rtmidi-config" ;;
+ "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
"tests/Makefile") CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;;
- *) { { $as_echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
-$as_echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
+ *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
+echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
{ (exit 1); exit 1; }; };;
esac
done
@@ -5148,144 +5353,135 @@ $debug ||
(umask 077 && mkdir "$tmp")
} ||
{
- $as_echo "$as_me: cannot create a temporary directory in ." >&2
+ echo "$me: cannot create a temporary directory in ." >&2
{ (exit 1); exit 1; }
}
-# Set up the scripts for CONFIG_FILES section.
-# No need to generate them if there are no CONFIG_FILES.
-# This happens for instance with `./config.status config.h'.
-if test -n "$CONFIG_FILES"; then
-
+#
+# Set up the sed scripts for CONFIG_FILES section.
+#
-ac_cr=' '
-ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
-if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
- ac_cs_awk_cr='\\r'
-else
- ac_cs_awk_cr=$ac_cr
-fi
+# No need to generate the scripts if there are no CONFIG_FILES.
+# This happens for instance when ./config.status config.h
+if test -n "$CONFIG_FILES"; then
-echo 'BEGIN {' >"$tmp/subs1.awk" &&
_ACEOF
-{
- echo "cat >conf$$subs.awk <<_ACEOF" &&
- echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
- echo "_ACEOF"
-} >conf$$subs.sh ||
- { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
-$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
- { (exit 1); exit 1; }; }
-ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'`
+
ac_delim='%!_!# '
for ac_last_try in false false false false false :; do
- . ./conf$$subs.sh ||
- { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
-$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
- { (exit 1); exit 1; }; }
+ cat >conf$$subs.sed <<_ACEOF
+SHELL!$SHELL$ac_delim
+PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim
+PACKAGE_NAME!$PACKAGE_NAME$ac_delim
+PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim
+PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim
+PACKAGE_STRING!$PACKAGE_STRING$ac_delim
+PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim
+exec_prefix!$exec_prefix$ac_delim
+prefix!$prefix$ac_delim
+program_transform_name!$program_transform_name$ac_delim
+bindir!$bindir$ac_delim
+sbindir!$sbindir$ac_delim
+libexecdir!$libexecdir$ac_delim
+datarootdir!$datarootdir$ac_delim
+datadir!$datadir$ac_delim
+sysconfdir!$sysconfdir$ac_delim
+sharedstatedir!$sharedstatedir$ac_delim
+localstatedir!$localstatedir$ac_delim
+includedir!$includedir$ac_delim
+oldincludedir!$oldincludedir$ac_delim
+docdir!$docdir$ac_delim
+infodir!$infodir$ac_delim
+htmldir!$htmldir$ac_delim
+dvidir!$dvidir$ac_delim
+pdfdir!$pdfdir$ac_delim
+psdir!$psdir$ac_delim
+libdir!$libdir$ac_delim
+localedir!$localedir$ac_delim
+mandir!$mandir$ac_delim
+DEFS!$DEFS$ac_delim
+ECHO_C!$ECHO_C$ac_delim
+ECHO_N!$ECHO_N$ac_delim
+ECHO_T!$ECHO_T$ac_delim
+LIBS!$LIBS$ac_delim
+build_alias!$build_alias$ac_delim
+host_alias!$host_alias$ac_delim
+target_alias!$target_alias$ac_delim
+GXX!$GXX$ac_delim
+CXX!$CXX$ac_delim
+CXXFLAGS!$CXXFLAGS$ac_delim
+LDFLAGS!$LDFLAGS$ac_delim
+CPPFLAGS!$CPPFLAGS$ac_delim
+ac_ct_CXX!$ac_ct_CXX$ac_delim
+EXEEXT!$EXEEXT$ac_delim
+OBJEXT!$OBJEXT$ac_delim
+RANLIB!$RANLIB$ac_delim
+AR!$AR$ac_delim
+CC!$CC$ac_delim
+CFLAGS!$CFLAGS$ac_delim
+ac_ct_CC!$ac_ct_CC$ac_delim
+CPP!$CPP$ac_delim
+GREP!$GREP$ac_delim
+EGREP!$EGREP$ac_delim
+cppflag!$cppflag$ac_delim
+cxxflag!$cxxflag$ac_delim
+object_path!$object_path$ac_delim
+build!$build$ac_delim
+build_cpu!$build_cpu$ac_delim
+build_vendor!$build_vendor$ac_delim
+build_os!$build_os$ac_delim
+host!$host$ac_delim
+host_cpu!$host_cpu$ac_delim
+host_vendor!$host_vendor$ac_delim
+host_os!$host_os$ac_delim
+sharedlib!$sharedlib$ac_delim
+sharedname!$sharedname$ac_delim
+libflags!$libflags$ac_delim
+api!$api$ac_delim
+LIBOBJS!$LIBOBJS$ac_delim
+LTLIBOBJS!$LTLIBOBJS$ac_delim
+_ACEOF
- ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
- if test $ac_delim_n = $ac_delim_num; then
+ if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 70; then
break
elif $ac_last_try; then
- { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
-$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
+ { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
+echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
{ (exit 1); exit 1; }; }
else
ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
fi
done
-rm -f conf$$subs.sh
-
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-cat >>"\$tmp/subs1.awk" <<\\_ACAWK &&
-_ACEOF
-sed -n '
-h
-s/^/S["/; s/!.*/"]=/
-p
-g
-s/^[^!]*!//
-:repl
-t repl
-s/'"$ac_delim"'$//
-t delim
-:nl
-h
-s/\(.\{148\}\).*/\1/
-t more1
-s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
-p
-n
-b repl
-:more1
-s/["\\]/\\&/g; s/^/"/; s/$/"\\/
-p
-g
-s/.\{148\}//
-t nl
-:delim
-h
-s/\(.\{148\}\).*/\1/
-t more2
-s/["\\]/\\&/g; s/^/"/; s/$/"/
-p
-b
-:more2
-s/["\\]/\\&/g; s/^/"/; s/$/"\\/
-p
-g
-s/.\{148\}//
-t delim
-' <conf$$subs.awk | sed '
-/^[^""]/{
- N
- s/\n//
-}
-' >>$CONFIG_STATUS || ac_write_fail=1
-rm -f conf$$subs.awk
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-_ACAWK
-cat >>"\$tmp/subs1.awk" <<_ACAWK &&
- for (key in S) S_is_set[key] = 1
- FS = ""
-}
-{
- line = $ 0
- nfields = split(line, field, "@")
- substed = 0
- len = length(field[1])
- for (i = 2; i < nfields; i++) {
- key = field[i]
- keylen = length(key)
- if (S_is_set[key]) {
- value = S[key]
- line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
- len += length(value) + length(field[++i])
- substed = 1
- } else
- len += 1 + keylen
- }
-
- print line
-}
+ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed`
+if test -n "$ac_eof"; then
+ ac_eof=`echo "$ac_eof" | sort -nru | sed 1q`
+ ac_eof=`expr $ac_eof + 1`
+fi
-_ACAWK
+cat >>$CONFIG_STATUS <<_ACEOF
+cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end
_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
- sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
-else
- cat
-fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \
- || { { $as_echo "$as_me:$LINENO: error: could not setup config files machinery" >&5
-$as_echo "$as_me: error: could not setup config files machinery" >&2;}
- { (exit 1); exit 1; }; }
+sed '
+s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g
+s/^/s,@/; s/!/@,|#_!!_#|/
+:n
+t n
+s/'"$ac_delim"'$/,g/; t
+s/$/\\/; p
+N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n
+' >>$CONFIG_STATUS <conf$$subs.sed
+rm -f conf$$subs.sed
+cat >>$CONFIG_STATUS <<_ACEOF
+:end
+s/|#_!!_#|//g
+CEOF$ac_eof
_ACEOF
+
# VPATH may cause trouble with some makes, so we remove $(srcdir),
# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
# trailing colons and then remove the whole line if VPATH becomes empty
@@ -5301,21 +5497,19 @@ s/^[^=]*=[ ]*$//
}'
fi
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+cat >>$CONFIG_STATUS <<\_ACEOF
fi # test -n "$CONFIG_FILES"
-eval set X " :F $CONFIG_FILES "
-shift
-for ac_tag
+for ac_tag in :F $CONFIG_FILES
do
case $ac_tag in
:[FHLC]) ac_mode=$ac_tag; continue;;
esac
case $ac_mode$ac_tag in
:[FHL]*:*);;
- :L* | :C*:*) { { $as_echo "$as_me:$LINENO: error: invalid tag $ac_tag" >&5
-$as_echo "$as_me: error: invalid tag $ac_tag" >&2;}
+ :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5
+echo "$as_me: error: Invalid tag $ac_tag." >&2;}
{ (exit 1); exit 1; }; };;
:[FH]-) ac_tag=-:-;;
:[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
@@ -5344,38 +5538,26 @@ $as_echo "$as_me: error: invalid tag $ac_tag" >&2;}
[\\/$]*) false;;
*) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
esac ||
- { { $as_echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5
-$as_echo "$as_me: error: cannot find input file: $ac_f" >&2;}
+ { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5
+echo "$as_me: error: cannot find input file: $ac_f" >&2;}
{ (exit 1); exit 1; }; };;
esac
- case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
- ac_file_inputs="$ac_file_inputs '$ac_f'"
+ ac_file_inputs="$ac_file_inputs $ac_f"
done
# Let's still pretend it is `configure' which instantiates (i.e., don't
# use $as_me), people would be surprised to read:
# /* config.h. Generated by config.status. */
- configure_input='Generated from '`
- $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
- `' by configure.'
+ configure_input="Generated from "`IFS=:
+ echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure."
if test x"$ac_file" != x-; then
configure_input="$ac_file. $configure_input"
- { $as_echo "$as_me:$LINENO: creating $ac_file" >&5
-$as_echo "$as_me: creating $ac_file" >&6;}
+ { echo "$as_me:$LINENO: creating $ac_file" >&5
+echo "$as_me: creating $ac_file" >&6;}
fi
- # Neutralize special characters interpreted by sed in replacement strings.
- case $configure_input in #(
- *\&* | *\|* | *\\* )
- ac_sed_conf_input=`$as_echo "$configure_input" |
- sed 's/[\\\\&|]/\\\\&/g'`;; #(
- *) ac_sed_conf_input=$configure_input;;
- esac
case $ac_tag in
- *:-:* | *:-) cat >"$tmp/stdin" \
- || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
-$as_echo "$as_me: error: could not create $ac_file" >&2;}
- { (exit 1); exit 1; }; } ;;
+ *:-:* | *:-) cat >"$tmp/stdin";;
esac
;;
esac
@@ -5385,7 +5567,7 @@ $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
X"$ac_file" : 'X\(//\)[^/]' \| \
X"$ac_file" : 'X\(//\)$' \| \
X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$ac_file" |
+echo X"$ac_file" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
q
@@ -5411,7 +5593,7 @@ $as_echo X"$ac_file" |
as_dirs=
while :; do
case $as_dir in #(
- *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+ *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #(
*) as_qdir=$as_dir;;
esac
as_dirs="'$as_qdir' $as_dirs"
@@ -5420,7 +5602,7 @@ $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
X"$as_dir" : 'X\(//\)[^/]' \| \
X"$as_dir" : 'X\(//\)$' \| \
X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
+echo X"$as_dir" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
q
@@ -5441,17 +5623,17 @@ $as_echo X"$as_dir" |
test -d "$as_dir" && break
done
test -z "$as_dirs" || eval "mkdir $as_dirs"
- } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
-$as_echo "$as_me: error: cannot create directory $as_dir" >&2;}
+ } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
+echo "$as_me: error: cannot create directory $as_dir" >&2;}
{ (exit 1); exit 1; }; }; }
ac_builddir=.
case "$ac_dir" in
.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
*)
- ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
# A ".." for each directory in $ac_dir_suffix.
- ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+ ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'`
case $ac_top_builddir_sub in
"") ac_top_builddir_sub=. ac_top_build_prefix= ;;
*) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
@@ -5487,13 +5669,12 @@ ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+cat >>$CONFIG_STATUS <<\_ACEOF
# If the template does not know about datarootdir, expand it.
# FIXME: This hack should be removed a few years after 2.60.
ac_datarootdir_hack=; ac_datarootdir_seen=
-ac_sed_dataroot='
-/datarootdir/ {
+case `sed -n '/datarootdir/ {
p
q
}
@@ -5502,14 +5683,13 @@ ac_sed_dataroot='
/@infodir@/p
/@localedir@/p
/@mandir@/p
-'
-case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
+' $ac_file_inputs` in
*datarootdir*) ac_datarootdir_seen=yes;;
*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
- { $as_echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
-$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+cat >>$CONFIG_STATUS <<_ACEOF
ac_datarootdir_hack='
s&@datadir@&$datadir&g
s&@docdir@&$docdir&g
@@ -5523,16 +5703,15 @@ _ACEOF
# Neutralize VPATH when `$srcdir' = `.'.
# Shell code in configure.ac might set extrasub.
# FIXME: do we really want to maintain this feature?
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-ac_sed_extra="$ac_vpsub
+cat >>$CONFIG_STATUS <<_ACEOF
+ sed "$ac_vpsub
$extrasub
_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+cat >>$CONFIG_STATUS <<\_ACEOF
:t
/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
-s|@configure_input@|$ac_sed_conf_input|;t t
+s&@configure_input@&$configure_input&;t t
s&@top_builddir@&$ac_top_builddir_sub&;t t
-s&@top_build_prefix@&$ac_top_build_prefix&;t t
s&@srcdir@&$ac_srcdir&;t t
s&@abs_srcdir@&$ac_abs_srcdir&;t t
s&@top_srcdir@&$ac_top_srcdir&;t t
@@ -5541,28 +5720,21 @@ s&@builddir@&$ac_builddir&;t t
s&@abs_builddir@&$ac_abs_builddir&;t t
s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
$ac_datarootdir_hack
-"
-eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \
- || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
-$as_echo "$as_me: error: could not create $ac_file" >&2;}
- { (exit 1); exit 1; }; }
+" $ac_file_inputs | sed -f "$tmp/subs-1.sed" >$tmp/out
test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
{ ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
{ ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
- { $as_echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+ { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir'
which seems to be undefined. Please make sure it is defined." >&5
-$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
which seems to be undefined. Please make sure it is defined." >&2;}
rm -f "$tmp/stdin"
case $ac_file in
- -) cat "$tmp/out" && rm -f "$tmp/out";;
- *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";;
- esac \
- || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
-$as_echo "$as_me: error: could not create $ac_file" >&2;}
- { (exit 1); exit 1; }; }
+ -) cat "$tmp/out"; rm -f "$tmp/out";;
+ *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;;
+ esac
;;
@@ -5577,11 +5749,6 @@ _ACEOF
chmod +x $CONFIG_STATUS
ac_clean_files=$ac_clean_files_save
-test $ac_write_fail = 0 ||
- { { $as_echo "$as_me:$LINENO: error: write failure creating $CONFIG_STATUS" >&5
-$as_echo "$as_me: error: write failure creating $CONFIG_STATUS" >&2;}
- { (exit 1); exit 1; }; }
-
# configure is writing to config.log, and then calls config.status.
# config.status does its own redirection, appending to config.log.
@@ -5603,8 +5770,6 @@ if test "$no_create" != yes; then
# would make configure fail if this is the last instruction.
$ac_cs_success || { (exit 1); exit 1; }
fi
-if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
- { $as_echo "$as_me:$LINENO: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
-$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
-fi
+
+chmod oug+x rtmidi-config
diff --git a/doc/html/RtError_8h_source.html b/doc/html/RtError_8h_source.html
index 4987b5d..24c3fc4 100644
--- a/doc/html/RtError_8h_source.html
+++ b/doc/html/RtError_8h_source.html
@@ -57,7 +57,7 @@
<HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
- <td>&copy;2003-2011 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ <td>&copy;2003-2012 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/html/RtMidi_8h.html b/doc/html/RtMidi_8h.html
new file mode 100644
index 0000000..b5c22ef
--- /dev/null
+++ b/doc/html/RtMidi_8h.html
@@ -0,0 +1,51 @@
+<HTML>
+<HEAD>
+<TITLE>The RtMidi Tutorial</TITLE>
+<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
+</HEAD>
+<BODY BGCOLOR="#FFFFFF">
+<CENTER>
+<a class="qindex" href="index.html">Tutorial</a> &nbsp; <a class="qindex" href="annotated.html">Class/Enum List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </CENTER>
+<HR>
+<!-- Generated by Doxygen 1.6.2 -->
+<div class="contents">
+<h1>RtMidi.h File Reference</h1><code>#include &quot;RtError.h&quot;</code><br/>
+<code>#include &lt;string&gt;</code><br/>
+<code>#include &lt;vector&gt;</code><br/>
+
+<p><a href="RtMidi_8h_source.html">Go to the source code of this file.</a></p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Classes</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRtMidi.html">RtMidi</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">An abstract base class for realtime MIDI input/output. <a href="classRtMidi.html#_details">More...</a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRtMidiIn.html">RtMidiIn</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A realtime MIDI input class. <a href="classRtMidiIn.html#_details">More...</a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRtMidiOut.html">RtMidiOut</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A realtime MIDI output class. <a href="classRtMidiOut.html#_details">More...</a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classMidiInApi.html">MidiInApi</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structMidiInApi_1_1MidiMessage.html">MidiInApi::MidiMessage</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structMidiInApi_1_1MidiQueue.html">MidiInApi::MidiQueue</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structMidiInApi_1_1RtMidiInData.html">MidiInApi::RtMidiInData</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classMidiOutApi.html">MidiOutApi</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classMidiInCore.html">MidiInCore</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classMidiOutCore.html">MidiOutCore</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classMidiInJack.html">MidiInJack</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classMidiOutJack.html">MidiOutJack</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classMidiInAlsa.html">MidiInAlsa</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classMidiOutAlsa.html">MidiOutAlsa</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classMidiInWinMM.html">MidiInWinMM</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classMidiOutWinMM.html">MidiOutWinMM</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classMidiInWinKS.html">MidiInWinKS</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classMidiOutWinKS.html">MidiOutWinKS</a></td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+</div>
+<HR>
+
+<table><tr><td><img src="../images/mcgill.gif" width=165></td>
+ <td>&copy;2003-2012 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
+</table>
+
+</BODY>
+</HTML>
diff --git a/doc/html/RtMidi_8h_source.html b/doc/html/RtMidi_8h_source.html
index 0867a7b..2fee9bf 100644
--- a/doc/html/RtMidi_8h_source.html
+++ b/doc/html/RtMidi_8h_source.html
@@ -8,177 +8,522 @@
<a class="qindex" href="index.html">Tutorial</a> &nbsp; <a class="qindex" href="annotated.html">Class/Enum List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </CENTER>
<HR>
<!-- Generated by Doxygen 1.6.2 -->
-<h1>RtMidi.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/**********************************************************************/</span>
-<a name="l00036"></a>00036 <span class="comment">/**********************************************************************/</span>
-<a name="l00037"></a>00037
-<a name="l00038"></a>00038 <span class="comment">// RtMidi: Version 1.0.15</span>
-<a name="l00039"></a>00039
-<a name="l00040"></a>00040 <span class="preprocessor">#ifndef RTMIDI_H</span>
-<a name="l00041"></a>00041 <span class="preprocessor"></span><span class="preprocessor">#define RTMIDI_H</span>
-<a name="l00042"></a>00042 <span class="preprocessor"></span>
-<a name="l00043"></a>00043 <span class="preprocessor">#include &quot;RtError.h&quot;</span>
-<a name="l00044"></a>00044 <span class="preprocessor">#include &lt;string&gt;</span>
-<a name="l00045"></a>00045
-<a name="l00046"></a><a class="code" href="classRtMidi.html">00046</a> <span class="keyword">class </span><a class="code" href="classRtMidi.html" title="An abstract base class for realtime MIDI input/output.">RtMidi</a>
-<a name="l00047"></a>00047 {
-<a name="l00048"></a>00048 <span class="keyword">public</span>:
-<a name="l00049"></a>00049
-<a name="l00051"></a>00051 <span class="keyword">virtual</span> <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 = 0, <span class="keyword">const</span> std::string portName = std::string( <span class="stringliteral">&quot;RtMidi&quot;</span> ) ) = 0;
-<a name="l00052"></a>00052
-<a name="l00054"></a>00054 <span class="keyword">virtual</span> <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 = std::string( <span class="stringliteral">&quot;RtMidi&quot;</span> ) ) = 0;
-<a name="l00055"></a>00055
-<a name="l00057"></a>00057 <span class="keyword">virtual</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtMidi.html#a9a49ef73a1e6007444019a7ae095e195" title="Pure virtual getPortCount() function.">getPortCount</a>() = 0;
-<a name="l00058"></a>00058
-<a name="l00060"></a>00060 <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 ) = 0;
-<a name="l00061"></a>00061
-<a name="l00063"></a>00063 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#a36125c4fa16550345b57f4a4927f5b4a" title="Pure virtual closePort() function.">closePort</a>( <span class="keywordtype">void</span> ) = 0;
-<a name="l00064"></a>00064
-<a name="l00065"></a>00065 <span class="keyword">protected</span>:
+<h1>RtMidi.h</h1><a href="RtMidi_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/**********************************************************************/</span>
+<a name="l00037"></a>00037 <span class="comment">/**********************************************************************/</span>
+<a name="l00038"></a>00038
+<a name="l00043"></a>00043 <span class="comment">// RtMidi: Version 2.0.0</span>
+<a name="l00044"></a>00044
+<a name="l00045"></a>00045 <span class="preprocessor">#ifndef RTMIDI_H</span>
+<a name="l00046"></a>00046 <span class="preprocessor"></span><span class="preprocessor">#define RTMIDI_H</span>
+<a name="l00047"></a>00047 <span class="preprocessor"></span>
+<a name="l00048"></a>00048 <span class="preprocessor">#include &quot;RtError.h&quot;</span>
+<a name="l00049"></a>00049 <span class="preprocessor">#include &lt;string&gt;</span>
+<a name="l00050"></a>00050 <span class="preprocessor">#include &lt;vector&gt;</span>
+<a name="l00051"></a>00051
+<a name="l00052"></a><a class="code" href="classRtMidi.html">00052</a> <span class="keyword">class </span><a class="code" href="classRtMidi.html" title="An abstract base class for realtime MIDI input/output.">RtMidi</a>
+<a name="l00053"></a><a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406">00053</a> {
+<a name="l00054"></a>00054 <span class="keyword">public</span>:
+<a name="l00055"></a><a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a4a4d9f7a38a082d6b0d5dd2b5de94ab9">00055</a>
+<a name="l00057"></a><a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a20c691b24844d3ab5dbf882123235df2">00057</a> <span class="keyword">enum</span> <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406" title="MIDI API specifier arguments.">Api</a> {
+<a name="l00058"></a><a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a1f59daf3120f47c0ae3891773112ddfa">00058</a> <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a4a4d9f7a38a082d6b0d5dd2b5de94ab9">UNSPECIFIED</a>,
+<a name="l00059"></a><a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a647868cb4ed37f517bf185a7f41cb70f">00059</a> <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a3f41293f89467641484fbd54c4530908">MACOSX_CORE</a>,
+<a name="l00060"></a><a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a246ae76adf088dd4d359bbac3d605756">00060</a> <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a20c691b24844d3ab5dbf882123235df2">LINUX_ALSA</a>,
+<a name="l00061"></a><a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a54dba406ab358492005ce2b966a2d959">00061</a> <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a1f59daf3120f47c0ae3891773112ddfa">UNIX_JACK</a>,
+<a name="l00062"></a>00062 <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a647868cb4ed37f517bf185a7f41cb70f">WINDOWS_MM</a>,
+<a name="l00063"></a>00063 <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a246ae76adf088dd4d359bbac3d605756">WINDOWS_KS</a>,
+<a name="l00064"></a>00064 <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a54dba406ab358492005ce2b966a2d959">RTMIDI_DUMMY</a>
+<a name="l00065"></a>00065 };
<a name="l00066"></a>00066
-<a name="l00067"></a>00067 <a class="code" href="classRtMidi.html" title="An abstract base class for realtime MIDI input/output.">RtMidi</a>();
-<a name="l00068"></a>00068 <span class="keyword">virtual</span> ~<a class="code" href="classRtMidi.html" title="An abstract base class for realtime MIDI input/output.">RtMidi</a>() {};
-<a name="l00069"></a>00069
-<a name="l00070"></a>00070 <span class="comment">// A basic error reporting function for internal use in the RtMidi</span>
-<a name="l00071"></a>00071 <span class="comment">// subclasses. The behavior of this function can be modified to</span>
-<a name="l00072"></a>00072 <span class="comment">// suit specific needs.</span>
-<a name="l00073"></a>00073 <span class="keywordtype">void</span> error( <a class="code" href="classRtError.html#ab04667aae01bffc354a9ac6bda6903ac" title="Defined RtError types.">RtError::Type</a> type );
+<a name="l00068"></a>00068
+<a name="l00073"></a>00073 <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#a025fa339486c9a34b26ec707aa2944ce" title="A static function to determine the available compiled MIDI APIs.">getCompiledApi</a>( std::vector&lt;RtMidi::Api&gt; &amp;apis ) <span class="keywordflow">throw</span>();
<a name="l00074"></a>00074
-<a name="l00075"></a>00075 <span class="keywordtype">void</span> *apiData_;
-<a name="l00076"></a>00076 <span class="keywordtype">bool</span> connected_;
-<a name="l00077"></a>00077 std::string errorString_;
-<a name="l00078"></a>00078 };
-<a name="l00079"></a>00079
-<a name="l00080"></a>00080 <span class="comment">/**********************************************************************/</span>
-<a name="l00096"></a>00096 <span class="comment">/**********************************************************************/</span>
-<a name="l00097"></a>00097
-<a name="l00098"></a>00098 <span class="preprocessor">#include &lt;vector&gt;</span>
-<a name="l00099"></a>00099
-<a name="l00100"></a><a class="code" href="classRtMidiIn.html">00100</a> <span class="keyword">class </span><a class="code" href="classRtMidiIn.html" title="A realtime MIDI input class.">RtMidiIn</a> : <span class="keyword">public</span> <a class="code" href="classRtMidi.html" title="An abstract base class for realtime MIDI input/output.">RtMidi</a>
-<a name="l00101"></a>00101 {
-<a name="l00102"></a>00102 <span class="keyword">public</span>:
-<a name="l00103"></a>00103
-<a name="l00105"></a><a class="code" href="classRtMidiIn.html#a297d2eb3c3420b437970a6fc59d89cbf">00105</a> <span class="keyword">typedef</span> void (*<a class="code" href="classRtMidiIn.html#a297d2eb3c3420b437970a6fc59d89cbf" title="User callback function type definition.">RtMidiCallback</a>)( <span class="keywordtype">double</span> timeStamp, std::vector&lt;unsigned char&gt; *message, <span class="keywordtype">void</span> *userData);
-<a name="l00106"></a>00106
-<a name="l00108"></a>00108
-<a name="l00115"></a>00115 <a class="code" href="classRtMidiIn.html#a1d70da3ef18d24c5b3f0cc01888e093d" title="Default constructor that allows an optional client name and queue size.">RtMidiIn</a>( <span class="keyword">const</span> std::string clientName = std::string( <span class="stringliteral">&quot;RtMidi Input Client&quot;</span>), <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> queueSizeLimit = 100 );
+<a name="l00076"></a>00076 <span class="keyword">virtual</span> <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 = 0, <span class="keyword">const</span> std::string portName = std::string( <span class="stringliteral">&quot;RtMidi&quot;</span> ) ) = 0;
+<a name="l00077"></a>00077
+<a name="l00079"></a>00079 <span class="keyword">virtual</span> <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 = std::string( <span class="stringliteral">&quot;RtMidi&quot;</span> ) ) = 0;
+<a name="l00080"></a>00080
+<a name="l00082"></a>00082 <span class="keyword">virtual</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtMidi.html#a9a49ef73a1e6007444019a7ae095e195" title="Pure virtual getPortCount() function.">getPortCount</a>() = 0;
+<a name="l00083"></a>00083
+<a name="l00085"></a>00085 <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 ) = 0;
+<a name="l00086"></a>00086
+<a name="l00088"></a>00088 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#a36125c4fa16550345b57f4a4927f5b4a" title="Pure virtual closePort() function.">closePort</a>( <span class="keywordtype">void</span> ) = 0;
+<a name="l00089"></a>00089
+<a name="l00091"></a>00091 <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#ae1a810e84c57b2eb4989056cb384a04c" title="A basic error reporting function for RtMidi classes.">error</a>( <a class="code" href="classRtError.html#ab04667aae01bffc354a9ac6bda6903ac" title="Defined RtError types.">RtError::Type</a> type, std::string errorString );
+<a name="l00092"></a>00092
+<a name="l00093"></a>00093 <span class="keyword">protected</span>:
+<a name="l00094"></a>00094
+<a name="l00095"></a>00095 <a class="code" href="classRtMidi.html" title="An abstract base class for realtime MIDI input/output.">RtMidi</a>() {};
+<a name="l00096"></a>00096 <span class="keyword">virtual</span> ~<a class="code" href="classRtMidi.html" title="An abstract base class for realtime MIDI input/output.">RtMidi</a>() {};
+<a name="l00097"></a>00097 };
+<a name="l00098"></a>00098
+<a name="l00099"></a>00099 <span class="comment">/**********************************************************************/</span>
+<a name="l00115"></a>00115 <span class="comment">/**********************************************************************/</span>
<a name="l00116"></a>00116
-<a name="l00118"></a>00118 <a class="code" href="classRtMidiIn.html#af865d88c154b6fdadc640da5dc278d40" title="If a MIDI connection is still open, it will be closed by the destructor.">~RtMidiIn</a>();
-<a name="l00119"></a>00119
-<a name="l00121"></a>00121
-<a name="l00125"></a>00125 <span class="keywordtype">void</span> <a class="code" href="classRtMidiIn.html#a7e853661b1056083e07318d67c51f6fd" title="Open a MIDI input connection.">openPort</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber = 0, <span class="keyword">const</span> std::string Portname = std::string( <span class="stringliteral">&quot;RtMidi Input&quot;</span> ) );
-<a name="l00126"></a>00126
-<a name="l00128"></a>00128
-<a name="l00134"></a>00134 <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...">openVirtualPort</a>( <span class="keyword">const</span> std::string portName = std::string( <span class="stringliteral">&quot;RtMidi Input&quot;</span> ) );
-<a name="l00135"></a>00135
+<a name="l00117"></a>00117 <span class="comment">// **************************************************************** //</span>
+<a name="l00118"></a>00118 <span class="comment">//</span>
+<a name="l00119"></a>00119 <span class="comment">// RtMidiIn and RtMidiOut class declarations.</span>
+<a name="l00120"></a>00120 <span class="comment">//</span>
+<a name="l00121"></a>00121 <span class="comment">// RtMidiIn / RtMidiOut are &quot;controllers&quot; used to select an available</span>
+<a name="l00122"></a>00122 <span class="comment">// MIDI input or output interface. They present common APIs for the</span>
+<a name="l00123"></a>00123 <span class="comment">// user to call but all functionality is implemented by the classes</span>
+<a name="l00124"></a>00124 <span class="comment">// MidiInApi, MidiOutApi and their subclasses. RtMidiIn and RtMidiOut</span>
+<a name="l00125"></a>00125 <span class="comment">// each create an instance of a MidiInApi or MidiOutApi subclass based</span>
+<a name="l00126"></a>00126 <span class="comment">// on the user&#39;s API choice. If no choice is made, they attempt to</span>
+<a name="l00127"></a>00127 <span class="comment">// make a &quot;logical&quot; API selection.</span>
+<a name="l00128"></a>00128 <span class="comment">//</span>
+<a name="l00129"></a>00129 <span class="comment">// **************************************************************** //</span>
+<a name="l00130"></a>00130
+<a name="l00131"></a>00131 <span class="keyword">class </span><a class="code" href="classMidiInApi.html">MidiInApi</a>;
+<a name="l00132"></a>00132 <span class="keyword">class </span><a class="code" href="classMidiOutApi.html">MidiOutApi</a>;
+<a name="l00133"></a>00133
+<a name="l00134"></a><a class="code" href="classRtMidiIn.html">00134</a> <span class="keyword">class </span><a class="code" href="classRtMidiIn.html" title="A realtime MIDI input class.">RtMidiIn</a> : <span class="keyword">public</span> <a class="code" href="classRtMidi.html" title="An abstract base class for realtime MIDI input/output.">RtMidi</a>
+<a name="l00135"></a>00135 {
+<a name="l00136"></a>00136 <span class="keyword">public</span>:
<a name="l00137"></a>00137
-<a name="l00143"></a>00143 <span class="keywordtype">void</span> <a class="code" href="classRtMidiIn.html#a7590563461c7467608a4b3806406b32d" title="Set a callback function to be invoked for incoming MIDI messages.">setCallback</a>( <a class="code" href="classRtMidiIn.html#a297d2eb3c3420b437970a6fc59d89cbf" title="User callback function type definition.">RtMidiCallback</a> callback, <span class="keywordtype">void</span> *userData = 0 );
-<a name="l00144"></a>00144
-<a name="l00146"></a>00146
-<a name="l00150"></a>00150 <span class="keywordtype">void</span> <a class="code" href="classRtMidiIn.html#ade23832a66c1ed56965c26325602543e" title="Cancel use of the current callback function (if one exists).">cancelCallback</a>();
-<a name="l00151"></a>00151
-<a name="l00153"></a>00153 <span class="keywordtype">void</span> <a class="code" href="classRtMidiIn.html#a55bacf0d228fd8e3be6a79d12fd1dc39" title="Close an open MIDI connection (if one exists).">closePort</a>( <span class="keywordtype">void</span> );
-<a name="l00154"></a>00154
-<a name="l00156"></a>00156 <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.">getPortCount</a>();
-<a name="l00157"></a>00157
+<a name="l00139"></a><a class="code" href="classRtMidiIn.html#a297d2eb3c3420b437970a6fc59d89cbf">00139</a> <span class="keyword">typedef</span> void (*<a class="code" href="classRtMidiIn.html#a297d2eb3c3420b437970a6fc59d89cbf" title="User callback function type definition.">RtMidiCallback</a>)( <span class="keywordtype">double</span> timeStamp, std::vector&lt;unsigned char&gt; *message, <span class="keywordtype">void</span> *userData);
+<a name="l00140"></a>00140
+<a name="l00142"></a>00142
+<a name="l00153"></a>00153 <a class="code" href="classRtMidiIn.html#aeeaeed8dae387dffc70e73e6e88b4d1a" title="Default constructor that allows an optional api, client name and queue size.">RtMidiIn</a>( <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406" title="MIDI API specifier arguments.">RtMidi::Api</a> api=<a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a4a4d9f7a38a082d6b0d5dd2b5de94ab9">UNSPECIFIED</a>,
+<a name="l00154"></a>00154 <span class="keyword">const</span> std::string clientName = std::string( <span class="stringliteral">&quot;RtMidi Input Client&quot;</span>),
+<a name="l00155"></a>00155 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> queueSizeLimit = 100 );
+<a name="l00156"></a>00156
+<a name="l00158"></a>00158 <a class="code" href="classRtMidiIn.html#ae79f4da8a1b2e7efecdd1047670b27dc" title="If a MIDI connection is still open, it will be closed by the destructor.">~RtMidiIn</a> ( <span class="keywordtype">void</span> ) throw();
<a name="l00159"></a>00159
-<a name="l00162"></a>00162 std::string <a class="code" href="classRtMidiIn.html#af2961fff09fa01a3d5bc0f0c5a042aaf" title="Return a string identifier for the specified MIDI input port number.">getPortName</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber = 0 );
-<a name="l00163"></a>00163
-<a name="l00165"></a>00165
-<a name="l00172"></a>00172 <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...">ignoreTypes</a>( <span class="keywordtype">bool</span> midiSysex = <span class="keyword">true</span>, <span class="keywordtype">bool</span> midiTime = <span class="keyword">true</span>, <span class="keywordtype">bool</span> midiSense = <span class="keyword">true</span> );
-<a name="l00173"></a>00173
-<a name="l00175"></a>00175
-<a name="l00182"></a>00182 <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...">getMessage</a>( std::vector&lt;unsigned char&gt; *message );
-<a name="l00183"></a>00183
-<a name="l00184"></a>00184 <span class="comment">// A MIDI structure used internally by the class to store incoming</span>
-<a name="l00185"></a>00185 <span class="comment">// messages. Each message represents one and only one MIDI message.</span>
-<a name="l00186"></a><a class="code" href="structRtMidiIn_1_1MidiMessage.html">00186</a> <span class="keyword">struct </span><a class="code" href="structRtMidiIn_1_1MidiMessage.html">MidiMessage</a> {
-<a name="l00187"></a>00187 std::vector&lt;unsigned char&gt; bytes;
-<a name="l00188"></a>00188 <span class="keywordtype">double</span> timeStamp;
+<a name="l00161"></a>00161 <a class="code" href="classRtMidi.html" title="An abstract base class for realtime MIDI input/output.">RtMidi</a>::<a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406" title="MIDI API specifier arguments.">Api</a> <a class="code" href="classRtMidiIn.html#a6475a11eeb0c8bf22157c3887b100164" title="Returns the MIDI API specifier for the current instance of RtMidiIn.">getCurrentApi</a>( <span class="keywordtype">void</span> ) throw();
+<a name="l00162"></a>00162
+<a name="l00164"></a>00164
+<a name="l00168"></a>00168 <span class="keywordtype">void</span> <a class="code" href="classRtMidiIn.html#a39df8f81a22f729a9904707dde487d2c" title="Open a MIDI input connection.">openPort</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber = 0, const std::<span class="keywordtype">string</span> portName = std::<span class="keywordtype">string</span>( &quot;<a class="code" href="classRtMidi.html" title="An abstract base class for realtime MIDI input/output.">RtMidi</a> Input&quot; ) );
+<a name="l00169"></a>00169
+<a name="l00171"></a>00171
+<a name="l00177"></a>00177 <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...">openVirtualPort</a>( const std::<span class="keywordtype">string</span> portName = std::<span class="keywordtype">string</span>( &quot;<a class="code" href="classRtMidi.html" title="An abstract base class for realtime MIDI input/output.">RtMidi</a> Input&quot; ) );
+<a name="l00178"></a>00178
+<a name="l00180"></a>00180
+<a name="l00186"></a>00186 <span class="keywordtype">void</span> <a class="code" href="classRtMidiIn.html#a7590563461c7467608a4b3806406b32d" title="Set a callback function to be invoked for incoming MIDI messages.">setCallback</a>( <a class="code" href="classRtMidiIn.html#a297d2eb3c3420b437970a6fc59d89cbf" title="User callback function type definition.">RtMidiCallback</a> callback, <span class="keywordtype">void</span> *userData = 0 );
+<a name="l00187"></a>00187
<a name="l00189"></a>00189
-<a name="l00190"></a>00190 <span class="comment">// Default constructor.</span>
-<a name="l00191"></a>00191 <a class="code" href="structRtMidiIn_1_1MidiMessage.html">MidiMessage</a>()
-<a name="l00192"></a>00192 :bytes(0), timeStamp(0.0) {}
-<a name="l00193"></a>00193 };
+<a name="l00193"></a>00193 <span class="keywordtype">void</span> <a class="code" href="classRtMidiIn.html#ade23832a66c1ed56965c26325602543e" title="Cancel use of the current callback function (if one exists).">cancelCallback</a>();
<a name="l00194"></a>00194
-<a name="l00195"></a><a class="code" href="structRtMidiIn_1_1MidiQueue.html">00195</a> <span class="keyword">struct </span><a class="code" href="structRtMidiIn_1_1MidiQueue.html">MidiQueue</a> {
-<a name="l00196"></a>00196 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> front;
-<a name="l00197"></a>00197 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> back;
-<a name="l00198"></a>00198 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> size;
-<a name="l00199"></a>00199 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ringSize;
-<a name="l00200"></a>00200 <a class="code" href="structRtMidiIn_1_1MidiMessage.html">MidiMessage</a> *ring;
-<a name="l00201"></a>00201
-<a name="l00202"></a>00202 <span class="comment">// Default constructor.</span>
-<a name="l00203"></a>00203 <a class="code" href="structRtMidiIn_1_1MidiQueue.html">MidiQueue</a>()
-<a name="l00204"></a>00204 :front(0), back(0), size(0), ringSize(0) {}
-<a name="l00205"></a>00205 };
+<a name="l00196"></a>00196 <span class="keywordtype">void</span> <a class="code" href="classRtMidiIn.html#a55bacf0d228fd8e3be6a79d12fd1dc39" title="Close an open MIDI connection (if one exists).">closePort</a>( <span class="keywordtype">void</span> );
+<a name="l00197"></a>00197
+<a name="l00199"></a>00199 <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.">getPortCount</a>();
+<a name="l00200"></a>00200
+<a name="l00202"></a>00202
+<a name="l00205"></a>00205 std::<span class="keywordtype">string</span> <a class="code" href="classRtMidiIn.html#af2961fff09fa01a3d5bc0f0c5a042aaf" title="Return a string identifier for the specified MIDI input port number.">getPortName</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber = 0 );
<a name="l00206"></a>00206
-<a name="l00207"></a>00207 <span class="comment">// The RtMidiInData structure is used to pass private class data to</span>
-<a name="l00208"></a>00208 <span class="comment">// the MIDI input handling function or thread.</span>
-<a name="l00209"></a><a class="code" href="structRtMidiIn_1_1RtMidiInData.html">00209</a> <span class="keyword">struct </span><a class="code" href="structRtMidiIn_1_1RtMidiInData.html">RtMidiInData</a> {
-<a name="l00210"></a>00210 <a class="code" href="structRtMidiIn_1_1MidiQueue.html">MidiQueue</a> queue;
-<a name="l00211"></a>00211 <a class="code" href="structRtMidiIn_1_1MidiMessage.html">MidiMessage</a> message;
-<a name="l00212"></a>00212 <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> ignoreFlags;
-<a name="l00213"></a>00213 <span class="keywordtype">bool</span> doInput;
-<a name="l00214"></a>00214 <span class="keywordtype">bool</span> firstMessage;
-<a name="l00215"></a>00215 <span class="keywordtype">void</span> *apiData;
-<a name="l00216"></a>00216 <span class="keywordtype">bool</span> usingCallback;
-<a name="l00217"></a>00217 <span class="keywordtype">void</span> *userCallback;
-<a name="l00218"></a>00218 <span class="keywordtype">void</span> *userData;
-<a name="l00219"></a>00219 <span class="keywordtype">bool</span> continueSysex;
-<a name="l00220"></a>00220
-<a name="l00221"></a>00221 <span class="comment">// Default constructor.</span>
-<a name="l00222"></a>00222 <a class="code" href="structRtMidiIn_1_1RtMidiInData.html">RtMidiInData</a>()
-<a name="l00223"></a>00223 : ignoreFlags(7), doInput(<span class="keyword">false</span>), firstMessage(<span class="keyword">true</span>),
-<a name="l00224"></a>00224 apiData(0), usingCallback(<span class="keyword">false</span>), userCallback(0), userData(0),
-<a name="l00225"></a>00225 continueSysex(<span class="keyword">false</span>) {}
-<a name="l00226"></a>00226 };
-<a name="l00227"></a>00227
-<a name="l00228"></a>00228 <span class="keyword">private</span>:
-<a name="l00229"></a>00229
-<a name="l00230"></a>00230 <span class="keywordtype">void</span> initialize( <span class="keyword">const</span> std::string&amp; clientName );
-<a name="l00231"></a>00231 <a class="code" href="structRtMidiIn_1_1RtMidiInData.html">RtMidiInData</a> inputData_;
+<a name="l00208"></a>00208
+<a name="l00215"></a>00215 <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...">ignoreTypes</a>( <span class="keywordtype">bool</span> midiSysex = true, <span class="keywordtype">bool</span> midiTime = true, <span class="keywordtype">bool</span> midiSense = true );
+<a name="l00216"></a>00216
+<a name="l00218"></a>00218
+<a name="l00225"></a>00225 <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...">getMessage</a>( std::vector&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>&gt; *message );
+<a name="l00226"></a>00226
+<a name="l00227"></a>00227 protected:
+<a name="l00228"></a>00228 <span class="keywordtype">void</span> openMidiApi( <a class="code" href="classRtMidi.html" title="An abstract base class for realtime MIDI input/output.">RtMidi</a>::<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 );
+<a name="l00229"></a>00229 <a class="code" href="classMidiInApi.html">MidiInApi</a> *rtapi_;
+<a name="l00230"></a>00230
+<a name="l00231"></a>00231 };
<a name="l00232"></a>00232
-<a name="l00233"></a>00233 };
-<a name="l00234"></a>00234
-<a name="l00235"></a>00235 <span class="comment">/**********************************************************************/</span>
+<a name="l00233"></a>00233 <span class="comment">/**********************************************************************/</span>
<a name="l00247"></a>00247 <span class="comment">/**********************************************************************/</span>
<a name="l00248"></a>00248
-<a name="l00249"></a><a class="code" href="classRtMidiOut.html">00249</a> <span class="keyword">class </span><a class="code" href="classRtMidiOut.html" title="A realtime MIDI output class.">RtMidiOut</a> : <span class="keyword">public</span> <a class="code" href="classRtMidi.html" title="An abstract base class for realtime MIDI input/output.">RtMidi</a>
+<a name="l00249"></a><a class="code" href="classRtMidiOut.html">00249</a> class <a class="code" href="classRtMidiOut.html" title="A realtime MIDI output class.">RtMidiOut</a> : public <a class="code" href="classRtMidi.html" title="An abstract base class for realtime MIDI input/output.">RtMidi</a>
<a name="l00250"></a>00250 {
<a name="l00251"></a>00251 <span class="keyword">public</span>:
<a name="l00252"></a>00252
<a name="l00254"></a>00254
-<a name="l00257"></a>00257 <a class="code" href="classRtMidiOut.html#a8ed1b492900f3410bf91ad53203b9db3" title="Default constructor that allows an optional client name.">RtMidiOut</a>( <span class="keyword">const</span> std::string clientName = std::string( <span class="stringliteral">&quot;RtMidi Output Client&quot;</span> ) );
-<a name="l00258"></a>00258
-<a name="l00260"></a>00260 <a class="code" href="classRtMidiOut.html#ab776c431bd84193febb2f78fb8c7e792" title="The destructor closes any open MIDI connections.">~RtMidiOut</a>();
-<a name="l00261"></a>00261
+<a name="l00261"></a>00261 <a class="code" href="classRtMidiOut.html" title="A realtime MIDI output class.">RtMidiOut</a>( <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406" title="MIDI API specifier arguments.">RtMidi::Api</a> api=<a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a4a4d9f7a38a082d6b0d5dd2b5de94ab9">UNSPECIFIED</a>,
+<a name="l00262"></a>00262 <span class="keyword">const</span> std::string clientName = std::string( <span class="stringliteral">&quot;RtMidi Output Client&quot;</span>) );
<a name="l00263"></a>00263
-<a name="l00269"></a>00269 <span class="keywordtype">void</span> <a class="code" href="classRtMidiOut.html#a1b280d67317cd473a8816aeb2fe6c186" title="Open a MIDI output connection.">openPort</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber = 0, <span class="keyword">const</span> std::string portName = std::string( <span class="stringliteral">&quot;RtMidi Output&quot;</span> ) );
-<a name="l00270"></a>00270
-<a name="l00272"></a>00272 <span class="keywordtype">void</span> <a class="code" href="classRtMidiOut.html#a3092e53a8aed2d3b163fcaa05fafd041" title="Close an open MIDI connection (if one exists).">closePort</a>();
-<a name="l00273"></a>00273
-<a name="l00275"></a>00275
-<a name="l00283"></a>00283 <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...">openVirtualPort</a>( <span class="keyword">const</span> std::string portName = std::string( <span class="stringliteral">&quot;RtMidi Output&quot;</span> ) );
-<a name="l00284"></a>00284
-<a name="l00286"></a>00286 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtMidiOut.html#ad6cddbcc7faa20a7be229f765ade0877" title="Return the number of available MIDI output ports.">getPortCount</a>();
-<a name="l00287"></a>00287
-<a name="l00289"></a>00289
-<a name="l00292"></a>00292 std::string <a class="code" href="classRtMidiOut.html#acc4ae0ab71a49ae7629075d5a9cd837c" title="Return a string identifier for the specified MIDI port type and number.">getPortName</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber = 0 );
-<a name="l00293"></a>00293
+<a name="l00265"></a>00265 ~<a class="code" href="classRtMidiOut.html" title="A realtime MIDI output class.">RtMidiOut</a>( <span class="keywordtype">void</span> ) <span class="keywordflow">throw</span>();
+<a name="l00266"></a>00266
+<a name="l00268"></a>00268 <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.">getCurrentApi</a>( <span class="keywordtype">void</span> ) <span class="keywordflow">throw</span>();
+<a name="l00269"></a>00269
+<a name="l00271"></a>00271
+<a name="l00277"></a>00277 <span class="keywordtype">void</span> <a class="code" href="classRtMidiIn.html#a39df8f81a22f729a9904707dde487d2c" title="Open a MIDI input connection.">openPort</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber = 0, <span class="keyword">const</span> std::string portName = std::string( <span class="stringliteral">&quot;RtMidi Output&quot;</span> ) );
+<a name="l00278"></a>00278
+<a name="l00280"></a>00280 <span class="keywordtype">void</span> <a class="code" href="classRtMidiIn.html#a55bacf0d228fd8e3be6a79d12fd1dc39" title="Close an open MIDI connection (if one exists).">closePort</a>( <span class="keywordtype">void</span> );
+<a name="l00281"></a>00281
+<a name="l00283"></a>00283
+<a name="l00291"></a>00291 <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...">openVirtualPort</a>( <span class="keyword">const</span> std::string portName = std::string( <span class="stringliteral">&quot;RtMidi Output&quot;</span> ) );
+<a name="l00292"></a>00292
+<a name="l00294"></a>00294 <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.">getPortCount</a>( <span class="keywordtype">void</span> );
<a name="l00295"></a>00295
-<a name="l00299"></a>00299 <span class="keywordtype">void</span> <a class="code" href="classRtMidiOut.html#a0bd8972ef8ac4e8d37ccc4b5d51c2eb3" title="Immediately send a single message out an open MIDI output port.">sendMessage</a>( std::vector&lt;unsigned char&gt; *message );
-<a name="l00300"></a>00300
-<a name="l00301"></a>00301 <span class="keyword">private</span>:
-<a name="l00302"></a>00302
-<a name="l00303"></a>00303 <span class="keywordtype">void</span> initialize( <span class="keyword">const</span> std::string&amp; clientName );
-<a name="l00304"></a>00304 };
-<a name="l00305"></a>00305
-<a name="l00306"></a>00306 <span class="preprocessor">#endif</span>
+<a name="l00297"></a>00297
+<a name="l00300"></a>00300 std::string <a class="code" href="classRtMidiIn.html#af2961fff09fa01a3d5bc0f0c5a042aaf" title="Return a string identifier for the specified MIDI input port number.">getPortName</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber = 0 );
+<a name="l00301"></a>00301
+<a name="l00303"></a>00303
+<a name="l00307"></a>00307 <span class="keywordtype">void</span> sendMessage( std::vector&lt;unsigned char&gt; *message );
+<a name="l00308"></a>00308
+<a name="l00309"></a>00309 <span class="keyword">protected</span>:
+<a name="l00310"></a>00310 <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 );
+<a name="l00311"></a>00311 <a class="code" href="classMidiOutApi.html">MidiOutApi</a> *rtapi_;
+<a name="l00312"></a>00312 };
+<a name="l00313"></a>00313
+<a name="l00314"></a>00314
+<a name="l00315"></a>00315 <span class="comment">// **************************************************************** //</span>
+<a name="l00316"></a>00316 <span class="comment">//</span>
+<a name="l00317"></a>00317 <span class="comment">// MidiInApi / MidiOutApi class declarations.</span>
+<a name="l00318"></a>00318 <span class="comment">//</span>
+<a name="l00319"></a>00319 <span class="comment">// Subclasses of MidiInApi and MidiOutApi contain all API- and</span>
+<a name="l00320"></a>00320 <span class="comment">// OS-specific code necessary to fully implement the RtMidi API.</span>
+<a name="l00321"></a>00321 <span class="comment">//</span>
+<a name="l00322"></a>00322 <span class="comment">// Note that MidiInApi and MidiOutApi are abstract base classes and</span>
+<a name="l00323"></a>00323 <span class="comment">// cannot be explicitly instantiated. RtMidiIn and RtMidiOut will</span>
+<a name="l00324"></a>00324 <span class="comment">// create instances of a MidiInApi or MidiOutApi subclass.</span>
+<a name="l00325"></a>00325 <span class="comment">//</span>
+<a name="l00326"></a>00326 <span class="comment">// **************************************************************** //</span>
+<a name="l00327"></a>00327
+<a name="l00328"></a><a class="code" href="classMidiInApi.html">00328</a> <span class="keyword">class </span><a class="code" href="classMidiInApi.html">MidiInApi</a>
+<a name="l00329"></a>00329 {
+<a name="l00330"></a>00330 <span class="keyword">public</span>:
+<a name="l00331"></a>00331
+<a name="l00332"></a>00332 <a class="code" href="classMidiInApi.html">MidiInApi</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> queueSizeLimit );
+<a name="l00333"></a>00333 <span class="keyword">virtual</span> ~<a class="code" href="classMidiInApi.html">MidiInApi</a>( <span class="keywordtype">void</span> );
+<a name="l00334"></a>00334 <span class="keyword">virtual</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.">getCurrentApi</a>( <span class="keywordtype">void</span> ) = 0;
+<a name="l00335"></a>00335 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classRtMidiIn.html#a39df8f81a22f729a9904707dde487d2c" title="Open a MIDI input connection.">openPort</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber, <span class="keyword">const</span> std::string portName ) = 0;
+<a name="l00336"></a>00336 <span class="keyword">virtual</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...">openVirtualPort</a>( <span class="keyword">const</span> std::string portName ) = 0;
+<a name="l00337"></a>00337 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classRtMidiIn.html#a55bacf0d228fd8e3be6a79d12fd1dc39" title="Close an open MIDI connection (if one exists).">closePort</a>( <span class="keywordtype">void</span> ) = 0;
+<a name="l00338"></a>00338 <span class="keywordtype">void</span> <a class="code" href="classRtMidiIn.html#a7590563461c7467608a4b3806406b32d" title="Set a callback function to be invoked for incoming MIDI messages.">setCallback</a>( <a class="code" href="classRtMidiIn.html#a297d2eb3c3420b437970a6fc59d89cbf" title="User callback function type definition.">RtMidiIn::RtMidiCallback</a> callback, <span class="keywordtype">void</span> *userData );
+<a name="l00339"></a>00339 <span class="keywordtype">void</span> <a class="code" href="classRtMidiIn.html#ade23832a66c1ed56965c26325602543e" title="Cancel use of the current callback function (if one exists).">cancelCallback</a>( <span class="keywordtype">void</span> );
+<a name="l00340"></a>00340 <span class="keyword">virtual</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.">getPortCount</a>( <span class="keywordtype">void</span> ) = 0;
+<a name="l00341"></a>00341 <span class="keyword">virtual</span> std::string <a class="code" href="classRtMidiIn.html#af2961fff09fa01a3d5bc0f0c5a042aaf" title="Return a string identifier for the specified MIDI input port number.">getPortName</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber ) = 0;
+<a name="l00342"></a>00342 <span class="keyword">virtual</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...">ignoreTypes</a>( <span class="keywordtype">bool</span> midiSysex, <span class="keywordtype">bool</span> midiTime, <span class="keywordtype">bool</span> midiSense );
+<a name="l00343"></a>00343 <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...">getMessage</a>( std::vector&lt;unsigned char&gt; *message );
+<a name="l00344"></a>00344
+<a name="l00345"></a>00345 <span class="comment">// A MIDI structure used internally by the class to store incoming</span>
+<a name="l00346"></a>00346 <span class="comment">// messages. Each message represents one and only one MIDI message.</span>
+<a name="l00347"></a><a class="code" href="structMidiInApi_1_1MidiMessage.html">00347</a> <span class="keyword">struct </span><a class="code" href="structMidiInApi_1_1MidiMessage.html">MidiMessage</a> {
+<a name="l00348"></a>00348 std::vector&lt;unsigned char&gt; bytes;
+<a name="l00349"></a>00349 <span class="keywordtype">double</span> timeStamp;
+<a name="l00350"></a>00350
+<a name="l00351"></a>00351 <span class="comment">// Default constructor.</span>
+<a name="l00352"></a>00352 <a class="code" href="structMidiInApi_1_1MidiMessage.html">MidiMessage</a>()
+<a name="l00353"></a>00353 :bytes(0), timeStamp(0.0) {}
+<a name="l00354"></a>00354 };
+<a name="l00355"></a>00355
+<a name="l00356"></a><a class="code" href="structMidiInApi_1_1MidiQueue.html">00356</a> <span class="keyword">struct </span><a class="code" href="structMidiInApi_1_1MidiQueue.html">MidiQueue</a> {
+<a name="l00357"></a>00357 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> front;
+<a name="l00358"></a>00358 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> back;
+<a name="l00359"></a>00359 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> size;
+<a name="l00360"></a>00360 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ringSize;
+<a name="l00361"></a>00361 <a class="code" href="structMidiInApi_1_1MidiMessage.html">MidiMessage</a> *ring;
+<a name="l00362"></a>00362
+<a name="l00363"></a>00363 <span class="comment">// Default constructor.</span>
+<a name="l00364"></a>00364 <a class="code" href="structMidiInApi_1_1MidiQueue.html">MidiQueue</a>()
+<a name="l00365"></a>00365 :front(0), back(0), size(0), ringSize(0) {}
+<a name="l00366"></a>00366 };
+<a name="l00367"></a>00367
+<a name="l00368"></a>00368 <span class="comment">// The RtMidiInData structure is used to pass private class data to</span>
+<a name="l00369"></a>00369 <span class="comment">// the MIDI input handling function or thread.</span>
+<a name="l00370"></a><a class="code" href="structMidiInApi_1_1RtMidiInData.html">00370</a> <span class="keyword">struct </span><a class="code" href="structMidiInApi_1_1RtMidiInData.html">RtMidiInData</a> {
+<a name="l00371"></a>00371 <a class="code" href="structMidiInApi_1_1MidiQueue.html">MidiQueue</a> queue;
+<a name="l00372"></a>00372 <a class="code" href="structMidiInApi_1_1MidiMessage.html">MidiMessage</a> message;
+<a name="l00373"></a>00373 <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> ignoreFlags;
+<a name="l00374"></a>00374 <span class="keywordtype">bool</span> doInput;
+<a name="l00375"></a>00375 <span class="keywordtype">bool</span> firstMessage;
+<a name="l00376"></a>00376 <span class="keywordtype">void</span> *apiData;
+<a name="l00377"></a>00377 <span class="keywordtype">bool</span> usingCallback;
+<a name="l00378"></a>00378 <span class="keywordtype">void</span> *userCallback;
+<a name="l00379"></a>00379 <span class="keywordtype">void</span> *userData;
+<a name="l00380"></a>00380 <span class="keywordtype">bool</span> continueSysex;
+<a name="l00381"></a>00381
+<a name="l00382"></a>00382 <span class="comment">// Default constructor.</span>
+<a name="l00383"></a>00383 <a class="code" href="structMidiInApi_1_1RtMidiInData.html">RtMidiInData</a>()
+<a name="l00384"></a>00384 : ignoreFlags(7), doInput(<span class="keyword">false</span>), firstMessage(<span class="keyword">true</span>),
+<a name="l00385"></a>00385 apiData(0), usingCallback(<span class="keyword">false</span>), userCallback(0), userData(0),
+<a name="l00386"></a>00386 continueSysex(<span class="keyword">false</span>) {}
+<a name="l00387"></a>00387 };
+<a name="l00388"></a>00388
+<a name="l00389"></a>00389 <span class="keyword">protected</span>:
+<a name="l00390"></a>00390 <span class="keyword">virtual</span> <span class="keywordtype">void</span> initialize( <span class="keyword">const</span> std::string&amp; clientName ) = 0;
+<a name="l00391"></a>00391 <a class="code" href="structMidiInApi_1_1RtMidiInData.html">RtMidiInData</a> inputData_;
+<a name="l00392"></a>00392
+<a name="l00393"></a>00393 <span class="keywordtype">void</span> *apiData_;
+<a name="l00394"></a>00394 <span class="keywordtype">bool</span> connected_;
+<a name="l00395"></a>00395 std::string errorString_;
+<a name="l00396"></a>00396 };
+<a name="l00397"></a>00397
+<a name="l00398"></a><a class="code" href="classMidiOutApi.html">00398</a> <span class="keyword">class </span><a class="code" href="classMidiOutApi.html">MidiOutApi</a>
+<a name="l00399"></a>00399 {
+<a name="l00400"></a>00400 <span class="keyword">public</span>:
+<a name="l00401"></a>00401
+<a name="l00402"></a>00402 <a class="code" href="classMidiOutApi.html">MidiOutApi</a>( <span class="keywordtype">void</span> );
+<a name="l00403"></a>00403 <span class="keyword">virtual</span> ~<a class="code" href="classMidiOutApi.html">MidiOutApi</a>( <span class="keywordtype">void</span> );
+<a name="l00404"></a>00404 <span class="keyword">virtual</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.">getCurrentApi</a>( <span class="keywordtype">void</span> ) = 0;
+<a name="l00405"></a>00405 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classRtMidiIn.html#a39df8f81a22f729a9904707dde487d2c" title="Open a MIDI input connection.">openPort</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber, <span class="keyword">const</span> std::string portName ) = 0;
+<a name="l00406"></a>00406 <span class="keyword">virtual</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...">openVirtualPort</a>( <span class="keyword">const</span> std::string portName ) = 0;
+<a name="l00407"></a>00407 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classRtMidiIn.html#a55bacf0d228fd8e3be6a79d12fd1dc39" title="Close an open MIDI connection (if one exists).">closePort</a>( <span class="keywordtype">void</span> ) = 0;
+<a name="l00408"></a>00408 <span class="keyword">virtual</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.">getPortCount</a>( <span class="keywordtype">void</span> ) = 0;
+<a name="l00409"></a>00409 <span class="keyword">virtual</span> std::string <a class="code" href="classRtMidiIn.html#af2961fff09fa01a3d5bc0f0c5a042aaf" title="Return a string identifier for the specified MIDI input port number.">getPortName</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber ) = 0;
+<a name="l00410"></a>00410 <span class="keyword">virtual</span> <span class="keywordtype">void</span> sendMessage( std::vector&lt;unsigned char&gt; *message ) = 0;
+<a name="l00411"></a>00411
+<a name="l00412"></a>00412 <span class="keyword">protected</span>:
+<a name="l00413"></a>00413 <span class="keyword">virtual</span> <span class="keywordtype">void</span> initialize( <span class="keyword">const</span> std::string&amp; clientName ) = 0;
+<a name="l00414"></a>00414
+<a name="l00415"></a>00415 <span class="keywordtype">void</span> *apiData_;
+<a name="l00416"></a>00416 <span class="keywordtype">bool</span> connected_;
+<a name="l00417"></a>00417 std::string errorString_;
+<a name="l00418"></a>00418 };
+<a name="l00419"></a>00419
+<a name="l00420"></a>00420 <span class="comment">// **************************************************************** //</span>
+<a name="l00421"></a>00421 <span class="comment">//</span>
+<a name="l00422"></a>00422 <span class="comment">// Inline RtMidiIn and RtMidiOut definitions.</span>
+<a name="l00423"></a>00423 <span class="comment">//</span>
+<a name="l00424"></a>00424 <span class="comment">// **************************************************************** //</span>
+<a name="l00425"></a>00425
+<a name="l00426"></a><a class="code" href="classRtMidiIn.html#a6475a11eeb0c8bf22157c3887b100164">00426</a> <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(); }
+<a name="l00427"></a><a class="code" href="classRtMidiIn.html#a39df8f81a22f729a9904707dde487d2c">00427</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classRtMidiIn.html#a39df8f81a22f729a9904707dde487d2c" title="Open a MIDI input connection.">RtMidiIn :: openPort</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber, <span class="keyword">const</span> std::string portName ) { <span class="keywordflow">return</span> rtapi_-&gt;openPort( portNumber, portName ); }
+<a name="l00428"></a><a class="code" href="classRtMidiIn.html#a245261b3f12ce727faed18fcfeef18c2">00428</a> <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...">RtMidiIn :: openVirtualPort</a>( <span class="keyword">const</span> std::string portName ) { <span class="keywordflow">return</span> rtapi_-&gt;openVirtualPort( portName ); }
+<a name="l00429"></a><a class="code" href="classRtMidiIn.html#a55bacf0d228fd8e3be6a79d12fd1dc39">00429</a> <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> ) { <span class="keywordflow">return</span> rtapi_-&gt;closePort(); }
+<a name="l00430"></a><a class="code" href="classRtMidiIn.html#a7590563461c7467608a4b3806406b32d">00430</a> <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 ) { <span class="keywordflow">return</span> rtapi_-&gt;setCallback( callback, userData ); }
+<a name="l00431"></a><a class="code" href="classRtMidiIn.html#ade23832a66c1ed56965c26325602543e">00431</a> <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> ) { <span class="keywordflow">return</span> rtapi_-&gt;cancelCallback(); }
+<a name="l00432"></a><a class="code" href="classRtMidiIn.html#a62b1b38aa8e5f11cd66f03d59228f4e4">00432</a> <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(); }
+<a name="l00433"></a><a class="code" href="classRtMidiIn.html#af2961fff09fa01a3d5bc0f0c5a042aaf">00433</a> <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 ); }
+<a name="l00434"></a><a class="code" href="classRtMidiIn.html#af9507125aaa42276ccc01df576fc3533">00434</a> <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 ) { <span class="keywordflow">return</span> rtapi_-&gt;ignoreTypes( midiSysex, midiTime, midiSense ); }
+<a name="l00435"></a><a class="code" href="classRtMidiIn.html#a1ba10ecd276b30a8579c7d60a9c890eb">00435</a> <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...">RtMidiIn :: getMessage</a>( std::vector&lt;unsigned char&gt; *message ) { <span class="keywordflow">return</span> rtapi_-&gt;getMessage( message ); }
+<a name="l00436"></a>00436
+<a name="l00437"></a><a class="code" href="classRtMidiOut.html#a532b5712e305bd8afb65a3ad14138e0f">00437</a> <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(); }
+<a name="l00438"></a><a class="code" href="classRtMidiOut.html#a1b280d67317cd473a8816aeb2fe6c186">00438</a> <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 ) { <span class="keywordflow">return</span> rtapi_-&gt;openPort( portNumber, portName ); }
+<a name="l00439"></a><a class="code" href="classRtMidiOut.html#a47068e1c076d91fd89587c0ccdeddc7a">00439</a> <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...">RtMidiOut :: openVirtualPort</a>( <span class="keyword">const</span> std::string portName ) { <span class="keywordflow">return</span> rtapi_-&gt;openVirtualPort( portName ); }
+<a name="l00440"></a><a class="code" href="classRtMidiOut.html#a5a28d1ba9e002fd07a317d3a257d87e8">00440</a> <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> ) { <span class="keywordflow">return</span> rtapi_-&gt;closePort(); }
+<a name="l00441"></a><a class="code" href="classRtMidiOut.html#a0c4d662e1c398ddf35a2dbaf66f50976">00441</a> <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(); }
+<a name="l00442"></a><a class="code" href="classRtMidiOut.html#acc4ae0ab71a49ae7629075d5a9cd837c">00442</a> <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 ); }
+<a name="l00443"></a><a class="code" href="classRtMidiOut.html#a0bd8972ef8ac4e8d37ccc4b5d51c2eb3">00443</a> <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 ) { <span class="keywordflow">return</span> rtapi_-&gt;sendMessage( message ); }
+<a name="l00444"></a>00444
+<a name="l00445"></a>00445 <span class="comment">// **************************************************************** //</span>
+<a name="l00446"></a>00446 <span class="comment">//</span>
+<a name="l00447"></a>00447 <span class="comment">// MidiInApi and MidiOutApi subclass prototypes.</span>
+<a name="l00448"></a>00448 <span class="comment">//</span>
+<a name="l00449"></a>00449 <span class="comment">// **************************************************************** //</span>
+<a name="l00450"></a>00450
+<a name="l00451"></a>00451 <span class="preprocessor">#if !defined(__LINUX_ALSA__) &amp;&amp; !defined(__UNIX_JACK__) &amp;&amp; !defined(__MACOSX_CORE__) &amp;&amp; !defined(__WINDOWS_MM__) &amp;&amp; !defined(__WINDOWS_KS__)</span>
+<a name="l00452"></a>00452 <span class="preprocessor"></span><span class="preprocessor"> #define __RTMIDI_DUMMY__</span>
+<a name="l00453"></a>00453 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00454"></a>00454 <span class="preprocessor"></span>
+<a name="l00455"></a>00455 <span class="preprocessor">#if defined(__MACOSX_CORE__)</span>
+<a name="l00456"></a>00456 <span class="preprocessor"></span>
+<a name="l00457"></a><a class="code" href="classMidiInCore.html">00457</a> <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>
+<a name="l00458"></a>00458 {
+<a name="l00459"></a>00459 <span class="keyword">public</span>:
+<a name="l00460"></a>00460 <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 );
+<a name="l00461"></a>00461 ~<a class="code" href="classMidiInCore.html">MidiInCore</a>( <span class="keywordtype">void</span> );
+<a name="l00462"></a>00462 <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>; };
+<a name="l00463"></a>00463 <span class="keywordtype">void</span> openPort( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber, <span class="keyword">const</span> std::string portName );
+<a name="l00464"></a>00464 <span class="keywordtype">void</span> openVirtualPort( <span class="keyword">const</span> std::string portName );
+<a name="l00465"></a>00465 <span class="keywordtype">void</span> closePort( <span class="keywordtype">void</span> );
+<a name="l00466"></a>00466 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> getPortCount( <span class="keywordtype">void</span> );
+<a name="l00467"></a>00467 std::string getPortName( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber );
+<a name="l00468"></a>00468
+<a name="l00469"></a>00469 <span class="keyword">protected</span>:
+<a name="l00470"></a>00470 <span class="keywordtype">void</span> initialize( <span class="keyword">const</span> std::string&amp; clientName );
+<a name="l00471"></a>00471 };
+<a name="l00472"></a>00472
+<a name="l00473"></a><a class="code" href="classMidiOutCore.html">00473</a> <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>
+<a name="l00474"></a>00474 {
+<a name="l00475"></a>00475 <span class="keyword">public</span>:
+<a name="l00476"></a>00476 <a class="code" href="classMidiOutCore.html">MidiOutCore</a>( <span class="keyword">const</span> std::string clientName );
+<a name="l00477"></a>00477 ~<a class="code" href="classMidiOutCore.html">MidiOutCore</a>( <span class="keywordtype">void</span> );
+<a name="l00478"></a>00478 <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>; };
+<a name="l00479"></a>00479 <span class="keywordtype">void</span> openPort( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber, <span class="keyword">const</span> std::string portName );
+<a name="l00480"></a>00480 <span class="keywordtype">void</span> openVirtualPort( <span class="keyword">const</span> std::string portName );
+<a name="l00481"></a>00481 <span class="keywordtype">void</span> closePort( <span class="keywordtype">void</span> );
+<a name="l00482"></a>00482 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> getPortCount( <span class="keywordtype">void</span> );
+<a name="l00483"></a>00483 std::string getPortName( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber );
+<a name="l00484"></a>00484 <span class="keywordtype">void</span> sendMessage( std::vector&lt;unsigned char&gt; *message );
+<a name="l00485"></a>00485
+<a name="l00486"></a>00486 <span class="keyword">protected</span>:
+<a name="l00487"></a>00487 <span class="keywordtype">void</span> initialize( <span class="keyword">const</span> std::string&amp; clientName );
+<a name="l00488"></a>00488 };
+<a name="l00489"></a>00489
+<a name="l00490"></a>00490 <span class="preprocessor">#endif</span>
+<a name="l00491"></a>00491 <span class="preprocessor"></span>
+<a name="l00492"></a>00492 <span class="preprocessor">#if defined(__UNIX_JACK__)</span>
+<a name="l00493"></a>00493 <span class="preprocessor"></span>
+<a name="l00494"></a><a class="code" href="classMidiInJack.html">00494</a> <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>
+<a name="l00495"></a>00495 {
+<a name="l00496"></a>00496 <span class="keyword">public</span>:
+<a name="l00497"></a>00497 <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 );
+<a name="l00498"></a>00498 ~<a class="code" href="classMidiInJack.html">MidiInJack</a>( <span class="keywordtype">void</span> );
+<a name="l00499"></a>00499 <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>; };
+<a name="l00500"></a>00500 <span class="keywordtype">void</span> openPort( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber, <span class="keyword">const</span> std::string portName );
+<a name="l00501"></a>00501 <span class="keywordtype">void</span> openVirtualPort( <span class="keyword">const</span> std::string portName );
+<a name="l00502"></a>00502 <span class="keywordtype">void</span> closePort( <span class="keywordtype">void</span> );
+<a name="l00503"></a>00503 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> getPortCount( <span class="keywordtype">void</span> );
+<a name="l00504"></a>00504 std::string getPortName( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber );
+<a name="l00505"></a>00505
+<a name="l00506"></a>00506 <span class="keyword">protected</span>:
+<a name="l00507"></a>00507 <span class="keywordtype">void</span> initialize( <span class="keyword">const</span> std::string&amp; clientName );
+<a name="l00508"></a>00508 };
+<a name="l00509"></a>00509
+<a name="l00510"></a><a class="code" href="classMidiOutJack.html">00510</a> <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>
+<a name="l00511"></a>00511 {
+<a name="l00512"></a>00512 <span class="keyword">public</span>:
+<a name="l00513"></a>00513 <a class="code" href="classMidiOutJack.html">MidiOutJack</a>( <span class="keyword">const</span> std::string clientName );
+<a name="l00514"></a>00514 ~<a class="code" href="classMidiOutJack.html">MidiOutJack</a>( <span class="keywordtype">void</span> );
+<a name="l00515"></a>00515 <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>; };
+<a name="l00516"></a>00516 <span class="keywordtype">void</span> openPort( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber, <span class="keyword">const</span> std::string portName );
+<a name="l00517"></a>00517 <span class="keywordtype">void</span> openVirtualPort( <span class="keyword">const</span> std::string portName );
+<a name="l00518"></a>00518 <span class="keywordtype">void</span> closePort( <span class="keywordtype">void</span> );
+<a name="l00519"></a>00519 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> getPortCount( <span class="keywordtype">void</span> );
+<a name="l00520"></a>00520 std::string getPortName( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber );
+<a name="l00521"></a>00521 <span class="keywordtype">void</span> sendMessage( std::vector&lt;unsigned char&gt; *message );
+<a name="l00522"></a>00522
+<a name="l00523"></a>00523 <span class="keyword">protected</span>:
+<a name="l00524"></a>00524 <span class="keywordtype">void</span> initialize( <span class="keyword">const</span> std::string&amp; clientName );
+<a name="l00525"></a>00525 };
+<a name="l00526"></a>00526
+<a name="l00527"></a>00527 <span class="preprocessor">#endif</span>
+<a name="l00528"></a>00528 <span class="preprocessor"></span>
+<a name="l00529"></a>00529 <span class="preprocessor">#if defined(__LINUX_ALSA__)</span>
+<a name="l00530"></a>00530 <span class="preprocessor"></span>
+<a name="l00531"></a><a class="code" href="classMidiInAlsa.html">00531</a> <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>
+<a name="l00532"></a>00532 {
+<a name="l00533"></a>00533 <span class="keyword">public</span>:
+<a name="l00534"></a>00534 <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 );
+<a name="l00535"></a>00535 ~<a class="code" href="classMidiInAlsa.html">MidiInAlsa</a>( <span class="keywordtype">void</span> );
+<a name="l00536"></a>00536 <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>; };
+<a name="l00537"></a>00537 <span class="keywordtype">void</span> openPort( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber, <span class="keyword">const</span> std::string portName );
+<a name="l00538"></a>00538 <span class="keywordtype">void</span> openVirtualPort( <span class="keyword">const</span> std::string portName );
+<a name="l00539"></a>00539 <span class="keywordtype">void</span> closePort( <span class="keywordtype">void</span> );
+<a name="l00540"></a>00540 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> getPortCount( <span class="keywordtype">void</span> );
+<a name="l00541"></a>00541 std::string getPortName( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber );
+<a name="l00542"></a>00542
+<a name="l00543"></a>00543 <span class="keyword">protected</span>:
+<a name="l00544"></a>00544 <span class="keywordtype">void</span> initialize( <span class="keyword">const</span> std::string&amp; clientName );
+<a name="l00545"></a>00545 };
+<a name="l00546"></a>00546
+<a name="l00547"></a><a class="code" href="classMidiOutAlsa.html">00547</a> <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>
+<a name="l00548"></a>00548 {
+<a name="l00549"></a>00549 <span class="keyword">public</span>:
+<a name="l00550"></a>00550 <a class="code" href="classMidiOutAlsa.html">MidiOutAlsa</a>( <span class="keyword">const</span> std::string clientName );
+<a name="l00551"></a>00551 ~<a class="code" href="classMidiOutAlsa.html">MidiOutAlsa</a>( <span class="keywordtype">void</span> );
+<a name="l00552"></a>00552 <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>; };
+<a name="l00553"></a>00553 <span class="keywordtype">void</span> openPort( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber, <span class="keyword">const</span> std::string portName );
+<a name="l00554"></a>00554 <span class="keywordtype">void</span> openVirtualPort( <span class="keyword">const</span> std::string portName );
+<a name="l00555"></a>00555 <span class="keywordtype">void</span> closePort( <span class="keywordtype">void</span> );
+<a name="l00556"></a>00556 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> getPortCount( <span class="keywordtype">void</span> );
+<a name="l00557"></a>00557 std::string getPortName( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber );
+<a name="l00558"></a>00558 <span class="keywordtype">void</span> sendMessage( std::vector&lt;unsigned char&gt; *message );
+<a name="l00559"></a>00559
+<a name="l00560"></a>00560 <span class="keyword">protected</span>:
+<a name="l00561"></a>00561 <span class="keywordtype">void</span> initialize( <span class="keyword">const</span> std::string&amp; clientName );
+<a name="l00562"></a>00562 };
+<a name="l00563"></a>00563
+<a name="l00564"></a>00564 <span class="preprocessor">#endif</span>
+<a name="l00565"></a>00565 <span class="preprocessor"></span>
+<a name="l00566"></a>00566 <span class="preprocessor">#if defined(__WINDOWS_MM__)</span>
+<a name="l00567"></a>00567 <span class="preprocessor"></span>
+<a name="l00568"></a><a class="code" href="classMidiInWinMM.html">00568</a> <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>
+<a name="l00569"></a>00569 {
+<a name="l00570"></a>00570 <span class="keyword">public</span>:
+<a name="l00571"></a>00571 <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 );
+<a name="l00572"></a>00572 ~<a class="code" href="classMidiInWinMM.html">MidiInWinMM</a>( <span class="keywordtype">void</span> );
+<a name="l00573"></a>00573 <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>; };
+<a name="l00574"></a>00574 <span class="keywordtype">void</span> openPort( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber, <span class="keyword">const</span> std::string portName );
+<a name="l00575"></a>00575 <span class="keywordtype">void</span> openVirtualPort( <span class="keyword">const</span> std::string portName );
+<a name="l00576"></a>00576 <span class="keywordtype">void</span> closePort( <span class="keywordtype">void</span> );
+<a name="l00577"></a>00577 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> getPortCount( <span class="keywordtype">void</span> );
+<a name="l00578"></a>00578 std::string getPortName( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber );
+<a name="l00579"></a>00579
+<a name="l00580"></a>00580 <span class="keyword">protected</span>:
+<a name="l00581"></a>00581 <span class="keywordtype">void</span> initialize( <span class="keyword">const</span> std::string&amp; clientName );
+<a name="l00582"></a>00582 };
+<a name="l00583"></a>00583
+<a name="l00584"></a><a class="code" href="classMidiOutWinMM.html">00584</a> <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>
+<a name="l00585"></a>00585 {
+<a name="l00586"></a>00586 <span class="keyword">public</span>:
+<a name="l00587"></a>00587 <a class="code" href="classMidiOutWinMM.html">MidiOutWinMM</a>( <span class="keyword">const</span> std::string clientName );
+<a name="l00588"></a>00588 ~<a class="code" href="classMidiOutWinMM.html">MidiOutWinMM</a>( <span class="keywordtype">void</span> );
+<a name="l00589"></a>00589 <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>; };
+<a name="l00590"></a>00590 <span class="keywordtype">void</span> openPort( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber, <span class="keyword">const</span> std::string portName );
+<a name="l00591"></a>00591 <span class="keywordtype">void</span> openVirtualPort( <span class="keyword">const</span> std::string portName );
+<a name="l00592"></a>00592 <span class="keywordtype">void</span> closePort( <span class="keywordtype">void</span> );
+<a name="l00593"></a>00593 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> getPortCount( <span class="keywordtype">void</span> );
+<a name="l00594"></a>00594 std::string getPortName( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber );
+<a name="l00595"></a>00595 <span class="keywordtype">void</span> sendMessage( std::vector&lt;unsigned char&gt; *message );
+<a name="l00596"></a>00596
+<a name="l00597"></a>00597 <span class="keyword">protected</span>:
+<a name="l00598"></a>00598 <span class="keywordtype">void</span> initialize( <span class="keyword">const</span> std::string&amp; clientName );
+<a name="l00599"></a>00599 };
+<a name="l00600"></a>00600
+<a name="l00601"></a>00601 <span class="preprocessor">#endif</span>
+<a name="l00602"></a>00602 <span class="preprocessor"></span>
+<a name="l00603"></a>00603 <span class="preprocessor">#if defined(__WINDOWS_KS__)</span>
+<a name="l00604"></a>00604 <span class="preprocessor"></span>
+<a name="l00605"></a><a class="code" href="classMidiInWinKS.html">00605</a> <span class="keyword">class </span><a class="code" href="classMidiInWinKS.html">MidiInWinKS</a>: <span class="keyword">public</span> <a class="code" href="classMidiInApi.html">MidiInApi</a>
+<a name="l00606"></a>00606 {
+<a name="l00607"></a>00607 <span class="keyword">public</span>:
+<a name="l00608"></a>00608 <a class="code" href="classMidiInWinKS.html">MidiInWinKS</a>( <span class="keyword">const</span> std::string clientName, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> queueSizeLimit );
+<a name="l00609"></a>00609 ~<a class="code" href="classMidiInWinKS.html">MidiInWinKS</a>( <span class="keywordtype">void</span> );
+<a name="l00610"></a>00610 <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#aac66af04a85fe5c5f07c360574a19406a246ae76adf088dd4d359bbac3d605756">RtMidi::WINDOWS_KS</a>; };
+<a name="l00611"></a>00611 <span class="keywordtype">void</span> openPort( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber, <span class="keyword">const</span> std::string portName );
+<a name="l00612"></a>00612 <span class="keywordtype">void</span> openVirtualPort( <span class="keyword">const</span> std::string portName );
+<a name="l00613"></a>00613 <span class="keywordtype">void</span> closePort( <span class="keywordtype">void</span> );
+<a name="l00614"></a>00614 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> getPortCount( <span class="keywordtype">void</span> );
+<a name="l00615"></a>00615 std::string getPortName( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber );
+<a name="l00616"></a>00616
+<a name="l00617"></a>00617 <span class="keyword">protected</span>:
+<a name="l00618"></a>00618 <span class="keywordtype">void</span> initialize( <span class="keyword">const</span> std::string&amp; clientName );
+<a name="l00619"></a>00619 };
+<a name="l00620"></a>00620
+<a name="l00621"></a><a class="code" href="classMidiOutWinKS.html">00621</a> <span class="keyword">class </span><a class="code" href="classMidiOutWinKS.html">MidiOutWinKS</a>: <span class="keyword">public</span> <a class="code" href="classMidiOutApi.html">MidiOutApi</a>
+<a name="l00622"></a>00622 {
+<a name="l00623"></a>00623 <span class="keyword">public</span>:
+<a name="l00624"></a>00624 <a class="code" href="classMidiOutWinKS.html">MidiOutWinKS</a>( <span class="keyword">const</span> std::string clientName );
+<a name="l00625"></a>00625 ~<a class="code" href="classMidiOutWinKS.html">MidiOutWinKS</a>( <span class="keywordtype">void</span> );
+<a name="l00626"></a>00626 <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#aac66af04a85fe5c5f07c360574a19406a246ae76adf088dd4d359bbac3d605756">RtMidi::WINDOWS_KS</a>; };
+<a name="l00627"></a>00627 <span class="keywordtype">void</span> openPort( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber, <span class="keyword">const</span> std::string portName );
+<a name="l00628"></a>00628 <span class="keywordtype">void</span> openVirtualPort( <span class="keyword">const</span> std::string portName );
+<a name="l00629"></a>00629 <span class="keywordtype">void</span> closePort( <span class="keywordtype">void</span> );
+<a name="l00630"></a>00630 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> getPortCount( <span class="keywordtype">void</span> );
+<a name="l00631"></a>00631 std::string getPortName( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber );
+<a name="l00632"></a>00632 <span class="keywordtype">void</span> sendMessage( std::vector&lt;unsigned char&gt; *message );
+<a name="l00633"></a>00633
+<a name="l00634"></a>00634 <span class="keyword">protected</span>:
+<a name="l00635"></a>00635 <span class="keywordtype">void</span> initialize( <span class="keyword">const</span> std::string&amp; clientName );
+<a name="l00636"></a>00636 };
+<a name="l00637"></a>00637
+<a name="l00638"></a>00638 <span class="preprocessor">#endif</span>
+<a name="l00639"></a>00639 <span class="preprocessor"></span>
+<a name="l00640"></a>00640 <span class="preprocessor">#if defined(__RTMIDI_DUMMY__)</span>
+<a name="l00641"></a>00641 <span class="preprocessor"></span>
+<a name="l00642"></a>00642 <span class="keyword">class </span>MidiInDummy: <span class="keyword">public</span> <a class="code" href="classMidiInApi.html">MidiInApi</a>
+<a name="l00643"></a>00643 {
+<a name="l00644"></a>00644 <span class="keyword">public</span>:
+<a name="l00645"></a>00645 MidiInDummy( <span class="keyword">const</span> std::string clientName, <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>; <a class="code" href="classRtMidi.html#ae1a810e84c57b2eb4989056cb384a04c" title="A basic error reporting function for RtMidi classes.">RtMidi::error</a>( <a class="code" href="classRtError.html#ab04667aae01bffc354a9ac6bda6903aca3a1603c24a56cbdaf5f8ae4ddcb86398">RtError::WARNING</a>, errorString_ ); };
+<a name="l00646"></a>00646 <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>; };
+<a name="l00647"></a>00647 <span class="keywordtype">void</span> openPort( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber, <span class="keyword">const</span> std::string portName ) {};
+<a name="l00648"></a>00648 <span class="keywordtype">void</span> openVirtualPort( <span class="keyword">const</span> std::string portName ) {};
+<a name="l00649"></a>00649 <span class="keywordtype">void</span> closePort( <span class="keywordtype">void</span> ) {};
+<a name="l00650"></a>00650 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> getPortCount( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> 0; };
+<a name="l00651"></a>00651 std::string getPortName( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber ) { <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>; };
+<a name="l00652"></a>00652
+<a name="l00653"></a>00653 <span class="keyword">protected</span>:
+<a name="l00654"></a>00654 <span class="keywordtype">void</span> initialize( <span class="keyword">const</span> std::string&amp; clientName ) {};
+<a name="l00655"></a>00655 };
+<a name="l00656"></a>00656
+<a name="l00657"></a>00657 <span class="keyword">class </span>MidiOutDummy: <span class="keyword">public</span> <a class="code" href="classMidiOutApi.html">MidiOutApi</a>
+<a name="l00658"></a>00658 {
+<a name="l00659"></a>00659 <span class="keyword">public</span>:
+<a name="l00660"></a>00660 MidiOutDummy( <span class="keyword">const</span> std::string clientName ) { errorString_ = <span class="stringliteral">&quot;MidiOutDummy: This class provides no functionality.&quot;</span>; <a class="code" href="classRtMidi.html#ae1a810e84c57b2eb4989056cb384a04c" title="A basic error reporting function for RtMidi classes.">RtMidi::error</a>( <a class="code" href="classRtError.html#ab04667aae01bffc354a9ac6bda6903aca3a1603c24a56cbdaf5f8ae4ddcb86398">RtError::WARNING</a>, errorString_ ); };
+<a name="l00661"></a>00661 <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>; };
+<a name="l00662"></a>00662 <span class="keywordtype">void</span> openPort( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber, <span class="keyword">const</span> std::string portName ) {};
+<a name="l00663"></a>00663 <span class="keywordtype">void</span> openVirtualPort( <span class="keyword">const</span> std::string portName ) {};
+<a name="l00664"></a>00664 <span class="keywordtype">void</span> closePort( <span class="keywordtype">void</span> ) {};
+<a name="l00665"></a>00665 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> getPortCount( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> 0; };
+<a name="l00666"></a>00666 std::string getPortName( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber ) { <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>; };
+<a name="l00667"></a>00667 <span class="keywordtype">void</span> sendMessage( std::vector&lt;unsigned char&gt; *message ) {};
+<a name="l00668"></a>00668
+<a name="l00669"></a>00669 <span class="keyword">protected</span>:
+<a name="l00670"></a>00670 <span class="keywordtype">void</span> initialize( <span class="keyword">const</span> std::string&amp; clientName ) {};
+<a name="l00671"></a>00671 };
+<a name="l00672"></a>00672
+<a name="l00673"></a>00673 <span class="preprocessor">#endif</span>
+<a name="l00674"></a>00674 <span class="preprocessor"></span>
+<a name="l00675"></a>00675 <span class="preprocessor">#endif</span>
</pre></div></div>
<HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
- <td>&copy;2003-2011 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ <td>&copy;2003-2012 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/html/annotated.html b/doc/html/annotated.html
index 9ce3d99..894c735 100644
--- a/doc/html/annotated.html
+++ b/doc/html/annotated.html
@@ -10,19 +10,31 @@
<!-- Generated by Doxygen 1.6.2 -->
<div class="contents">
<h1>Class List</h1>Here are the classes, structs, unions and interfaces with brief descriptions:<table>
- <tr><td class="indexkey"><a class="el" href="structRtMidiIn_1_1MidiMessage.html">RtMidiIn::MidiMessage</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structRtMidiIn_1_1MidiQueue.html">RtMidiIn::MidiQueue</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="classMidiInAlsa.html">MidiInAlsa</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="classMidiInApi.html">MidiInApi</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="classMidiInCore.html">MidiInCore</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="classMidiInJack.html">MidiInJack</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="classMidiInWinKS.html">MidiInWinKS</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="classMidiInWinMM.html">MidiInWinMM</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="structMidiInApi_1_1MidiMessage.html">MidiInApi::MidiMessage</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="classMidiOutAlsa.html">MidiOutAlsa</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="classMidiOutApi.html">MidiOutApi</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="classMidiOutCore.html">MidiOutCore</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="classMidiOutJack.html">MidiOutJack</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="classMidiOutWinKS.html">MidiOutWinKS</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="classMidiOutWinMM.html">MidiOutWinMM</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="structMidiInApi_1_1MidiQueue.html">MidiInApi::MidiQueue</a></td><td class="indexvalue"></td></tr>
<tr><td class="indexkey"><a class="el" href="classRtError.html">RtError</a></td><td class="indexvalue">Exception handling class for RtAudio &amp; <a class="el" href="classRtMidi.html" title="An abstract base class for realtime MIDI input/output.">RtMidi</a> </td></tr>
<tr><td class="indexkey"><a class="el" href="classRtMidi.html">RtMidi</a></td><td class="indexvalue">An abstract base class for realtime MIDI input/output </td></tr>
<tr><td class="indexkey"><a class="el" href="classRtMidiIn.html">RtMidiIn</a></td><td class="indexvalue">A realtime MIDI input class </td></tr>
- <tr><td class="indexkey"><a class="el" href="structRtMidiIn_1_1RtMidiInData.html">RtMidiIn::RtMidiInData</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="structMidiInApi_1_1RtMidiInData.html">MidiInApi::RtMidiInData</a></td><td class="indexvalue"></td></tr>
<tr><td class="indexkey"><a class="el" href="classRtMidiOut.html">RtMidiOut</a></td><td class="indexvalue">A realtime MIDI output class </td></tr>
</table>
</div>
<HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
- <td>&copy;2003-2011 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ <td>&copy;2003-2012 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/html/classMidiInAlsa-members.html b/doc/html/classMidiInAlsa-members.html
new file mode 100644
index 0000000..f4e228e
--- /dev/null
+++ b/doc/html/classMidiInAlsa-members.html
@@ -0,0 +1,22 @@
+<HTML>
+<HEAD>
+<TITLE>The RtMidi Tutorial</TITLE>
+<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
+</HEAD>
+<BODY BGCOLOR="#FFFFFF">
+<CENTER>
+<a class="qindex" href="index.html">Tutorial</a> &nbsp; <a class="qindex" href="annotated.html">Class/Enum List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </CENTER>
+<HR>
+<!-- Generated by Doxygen 1.6.2 -->
+<div class="contents">
+<h1>MidiInAlsa Member List</h1>This is the complete list of members for <a class="el" href="classMidiInAlsa.html">MidiInAlsa</a>, including all inherited members.<table>
+</table></div>
+<HR>
+
+<table><tr><td><img src="../images/mcgill.gif" width=165></td>
+ <td>&copy;2003-2012 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
+</table>
+
+</BODY>
+</HTML>
diff --git a/doc/html/classMidiInAlsa.html b/doc/html/classMidiInAlsa.html
new file mode 100644
index 0000000..ceb57ea
--- /dev/null
+++ b/doc/html/classMidiInAlsa.html
@@ -0,0 +1,38 @@
+<HTML>
+<HEAD>
+<TITLE>The RtMidi Tutorial</TITLE>
+<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
+</HEAD>
+<BODY BGCOLOR="#FFFFFF">
+<CENTER>
+<a class="qindex" href="index.html">Tutorial</a> &nbsp; <a class="qindex" href="annotated.html">Class/Enum List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </CENTER>
+<HR>
+<!-- Generated by Doxygen 1.6.2 -->
+<div class="contents">
+<h1>MidiInAlsa Class Reference</h1><!-- doxytag: class="MidiInAlsa" --><!-- doxytag: inherits="MidiInApi" --><div class="dynheader">
+Inheritance diagram for MidiInAlsa:</div>
+<div class="dynsection">
+ <div class="center">
+ <img src="classMidiInAlsa.png" usemap="#MidiInAlsa_map" alt=""/>
+ <map id="MidiInAlsa_map" name="MidiInAlsa_map">
+<area href="classMidiInApi.html" alt="MidiInApi" shape="rect" coords="0,0,71,24"/>
+</map>
+ </div>
+</div>
+
+<p><a href="classMidiInAlsa-members.html">List of all members.</a></p>
+<table border="0" cellpadding="0" cellspacing="0">
+</table>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="RtMidi_8h_source.html">RtMidi.h</a></li>
+</ul>
+</div>
+<HR>
+
+<table><tr><td><img src="../images/mcgill.gif" width=165></td>
+ <td>&copy;2003-2012 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
+</table>
+
+</BODY>
+</HTML>
diff --git a/doc/html/classMidiInAlsa.png b/doc/html/classMidiInAlsa.png
new file mode 100644
index 0000000..b84f1d1
--- /dev/null
+++ b/doc/html/classMidiInAlsa.png
Binary files differ
diff --git a/doc/html/classMidiInApi-members.html b/doc/html/classMidiInApi-members.html
new file mode 100644
index 0000000..2b30917
--- /dev/null
+++ b/doc/html/classMidiInApi-members.html
@@ -0,0 +1,22 @@
+<HTML>
+<HEAD>
+<TITLE>The RtMidi Tutorial</TITLE>
+<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
+</HEAD>
+<BODY BGCOLOR="#FFFFFF">
+<CENTER>
+<a class="qindex" href="index.html">Tutorial</a> &nbsp; <a class="qindex" href="annotated.html">Class/Enum List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </CENTER>
+<HR>
+<!-- Generated by Doxygen 1.6.2 -->
+<div class="contents">
+<h1>MidiInApi Member List</h1>This is the complete list of members for <a class="el" href="classMidiInApi.html">MidiInApi</a>, including all inherited members.<table>
+</table></div>
+<HR>
+
+<table><tr><td><img src="../images/mcgill.gif" width=165></td>
+ <td>&copy;2003-2012 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
+</table>
+
+</BODY>
+</HTML>
diff --git a/doc/html/classMidiInApi.html b/doc/html/classMidiInApi.html
new file mode 100644
index 0000000..177233b
--- /dev/null
+++ b/doc/html/classMidiInApi.html
@@ -0,0 +1,46 @@
+<HTML>
+<HEAD>
+<TITLE>The RtMidi Tutorial</TITLE>
+<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
+</HEAD>
+<BODY BGCOLOR="#FFFFFF">
+<CENTER>
+<a class="qindex" href="index.html">Tutorial</a> &nbsp; <a class="qindex" href="annotated.html">Class/Enum List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </CENTER>
+<HR>
+<!-- Generated by Doxygen 1.6.2 -->
+<div class="contents">
+<h1>MidiInApi Class Reference</h1><!-- doxytag: class="MidiInApi" --><div class="dynheader">
+Inheritance diagram for MidiInApi:</div>
+<div class="dynsection">
+ <div class="center">
+ <img src="classMidiInApi.png" usemap="#MidiInApi_map" alt=""/>
+ <map id="MidiInApi_map" name="MidiInApi_map">
+<area href="classMidiInAlsa.html" alt="MidiInAlsa" shape="rect" coords="0,56,89,80"/>
+<area href="classMidiInCore.html" alt="MidiInCore" shape="rect" coords="99,56,188,80"/>
+<area href="classMidiInJack.html" alt="MidiInJack" shape="rect" coords="198,56,287,80"/>
+<area href="classMidiInWinKS.html" alt="MidiInWinKS" shape="rect" coords="297,56,386,80"/>
+<area href="classMidiInWinMM.html" alt="MidiInWinMM" shape="rect" coords="396,56,485,80"/>
+</map>
+ </div>
+</div>
+
+<p><a href="classMidiInApi-members.html">List of all members.</a></p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Classes</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structMidiInApi_1_1MidiMessage.html">MidiMessage</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structMidiInApi_1_1MidiQueue.html">MidiQueue</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structMidiInApi_1_1RtMidiInData.html">RtMidiInData</a></td></tr>
+</table>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="RtMidi_8h_source.html">RtMidi.h</a></li>
+</ul>
+</div>
+<HR>
+
+<table><tr><td><img src="../images/mcgill.gif" width=165></td>
+ <td>&copy;2003-2012 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
+</table>
+
+</BODY>
+</HTML>
diff --git a/doc/html/classMidiInApi.png b/doc/html/classMidiInApi.png
new file mode 100644
index 0000000..573ae37
--- /dev/null
+++ b/doc/html/classMidiInApi.png
Binary files differ
diff --git a/doc/html/classMidiInCore-members.html b/doc/html/classMidiInCore-members.html
new file mode 100644
index 0000000..9969f57
--- /dev/null
+++ b/doc/html/classMidiInCore-members.html
@@ -0,0 +1,22 @@
+<HTML>
+<HEAD>
+<TITLE>The RtMidi Tutorial</TITLE>
+<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
+</HEAD>
+<BODY BGCOLOR="#FFFFFF">
+<CENTER>
+<a class="qindex" href="index.html">Tutorial</a> &nbsp; <a class="qindex" href="annotated.html">Class/Enum List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </CENTER>
+<HR>
+<!-- Generated by Doxygen 1.6.2 -->
+<div class="contents">
+<h1>MidiInCore Member List</h1>This is the complete list of members for <a class="el" href="classMidiInCore.html">MidiInCore</a>, including all inherited members.<table>
+</table></div>
+<HR>
+
+<table><tr><td><img src="../images/mcgill.gif" width=165></td>
+ <td>&copy;2003-2012 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
+</table>
+
+</BODY>
+</HTML>
diff --git a/doc/html/classMidiInCore.html b/doc/html/classMidiInCore.html
new file mode 100644
index 0000000..cc31145
--- /dev/null
+++ b/doc/html/classMidiInCore.html
@@ -0,0 +1,38 @@
+<HTML>
+<HEAD>
+<TITLE>The RtMidi Tutorial</TITLE>
+<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
+</HEAD>
+<BODY BGCOLOR="#FFFFFF">
+<CENTER>
+<a class="qindex" href="index.html">Tutorial</a> &nbsp; <a class="qindex" href="annotated.html">Class/Enum List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </CENTER>
+<HR>
+<!-- Generated by Doxygen 1.6.2 -->
+<div class="contents">
+<h1>MidiInCore Class Reference</h1><!-- doxytag: class="MidiInCore" --><!-- doxytag: inherits="MidiInApi" --><div class="dynheader">
+Inheritance diagram for MidiInCore:</div>
+<div class="dynsection">
+ <div class="center">
+ <img src="classMidiInCore.png" usemap="#MidiInCore_map" alt=""/>
+ <map id="MidiInCore_map" name="MidiInCore_map">
+<area href="classMidiInApi.html" alt="MidiInApi" shape="rect" coords="0,0,74,24"/>
+</map>
+ </div>
+</div>
+
+<p><a href="classMidiInCore-members.html">List of all members.</a></p>
+<table border="0" cellpadding="0" cellspacing="0">
+</table>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="RtMidi_8h_source.html">RtMidi.h</a></li>
+</ul>
+</div>
+<HR>
+
+<table><tr><td><img src="../images/mcgill.gif" width=165></td>
+ <td>&copy;2003-2012 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
+</table>
+
+</BODY>
+</HTML>
diff --git a/doc/html/classMidiInCore.png b/doc/html/classMidiInCore.png
new file mode 100644
index 0000000..65f2174
--- /dev/null
+++ b/doc/html/classMidiInCore.png
Binary files differ
diff --git a/doc/html/classMidiInDummy-members.html b/doc/html/classMidiInDummy-members.html
new file mode 100644
index 0000000..3c8d88e
--- /dev/null
+++ b/doc/html/classMidiInDummy-members.html
@@ -0,0 +1,22 @@
+<HTML>
+<HEAD>
+<TITLE>The RtMidi Tutorial</TITLE>
+<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
+</HEAD>
+<BODY BGCOLOR="#FFFFFF">
+<CENTER>
+<a class="qindex" href="index.html">Tutorial</a> &nbsp; <a class="qindex" href="annotated.html">Class/Enum List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </CENTER>
+<HR>
+<!-- Generated by Doxygen 1.6.2 -->
+<div class="contents">
+<h1>MidiInDummy Member List</h1>This is the complete list of members for <a class="el" href="classMidiInDummy.html">MidiInDummy</a>, including all inherited members.<table>
+</table></div>
+<HR>
+
+<table><tr><td><img src="../images/mcgill.gif" width=165></td>
+ <td>&copy;2003-2012 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
+</table>
+
+</BODY>
+</HTML>
diff --git a/doc/html/classMidiInDummy.html b/doc/html/classMidiInDummy.html
new file mode 100644
index 0000000..cb22287
--- /dev/null
+++ b/doc/html/classMidiInDummy.html
@@ -0,0 +1,38 @@
+<HTML>
+<HEAD>
+<TITLE>The RtMidi Tutorial</TITLE>
+<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
+</HEAD>
+<BODY BGCOLOR="#FFFFFF">
+<CENTER>
+<a class="qindex" href="index.html">Tutorial</a> &nbsp; <a class="qindex" href="annotated.html">Class/Enum List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </CENTER>
+<HR>
+<!-- Generated by Doxygen 1.6.2 -->
+<div class="contents">
+<h1>MidiInDummy Class Reference</h1><!-- doxytag: class="MidiInDummy" --><!-- doxytag: inherits="MidiInApi" --><div class="dynheader">
+Inheritance diagram for MidiInDummy:</div>
+<div class="dynsection">
+ <div class="center">
+ <img src="classMidiInDummy.png" usemap="#MidiInDummy_map" alt=""/>
+ <map id="MidiInDummy_map" name="MidiInDummy_map">
+<area href="classMidiInApi.html" alt="MidiInApi" shape="rect" coords="0,0,87,24"/>
+</map>
+ </div>
+</div>
+
+<p><a href="classMidiInDummy-members.html">List of all members.</a></p>
+<table border="0" cellpadding="0" cellspacing="0">
+</table>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="RtMidi_8h_source.html">RtMidi.h</a></li>
+</ul>
+</div>
+<HR>
+
+<table><tr><td><img src="../images/mcgill.gif" width=165></td>
+ <td>&copy;2003-2012 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
+</table>
+
+</BODY>
+</HTML>
diff --git a/doc/html/classMidiInDummy.png b/doc/html/classMidiInDummy.png
new file mode 100644
index 0000000..b0bb7b5
--- /dev/null
+++ b/doc/html/classMidiInDummy.png
Binary files differ
diff --git a/doc/html/classMidiInJack-members.html b/doc/html/classMidiInJack-members.html
new file mode 100644
index 0000000..26f5eb3
--- /dev/null
+++ b/doc/html/classMidiInJack-members.html
@@ -0,0 +1,22 @@
+<HTML>
+<HEAD>
+<TITLE>The RtMidi Tutorial</TITLE>
+<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
+</HEAD>
+<BODY BGCOLOR="#FFFFFF">
+<CENTER>
+<a class="qindex" href="index.html">Tutorial</a> &nbsp; <a class="qindex" href="annotated.html">Class/Enum List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </CENTER>
+<HR>
+<!-- Generated by Doxygen 1.6.2 -->
+<div class="contents">
+<h1>MidiInJack Member List</h1>This is the complete list of members for <a class="el" href="classMidiInJack.html">MidiInJack</a>, including all inherited members.<table>
+</table></div>
+<HR>
+
+<table><tr><td><img src="../images/mcgill.gif" width=165></td>
+ <td>&copy;2003-2012 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
+</table>
+
+</BODY>
+</HTML>
diff --git a/doc/html/classMidiInJack.html b/doc/html/classMidiInJack.html
new file mode 100644
index 0000000..04b90bb
--- /dev/null
+++ b/doc/html/classMidiInJack.html
@@ -0,0 +1,38 @@
+<HTML>
+<HEAD>
+<TITLE>The RtMidi Tutorial</TITLE>
+<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
+</HEAD>
+<BODY BGCOLOR="#FFFFFF">
+<CENTER>
+<a class="qindex" href="index.html">Tutorial</a> &nbsp; <a class="qindex" href="annotated.html">Class/Enum List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </CENTER>
+<HR>
+<!-- Generated by Doxygen 1.6.2 -->
+<div class="contents">
+<h1>MidiInJack Class Reference</h1><!-- doxytag: class="MidiInJack" --><!-- doxytag: inherits="MidiInApi" --><div class="dynheader">
+Inheritance diagram for MidiInJack:</div>
+<div class="dynsection">
+ <div class="center">
+ <img src="classMidiInJack.png" usemap="#MidiInJack_map" alt=""/>
+ <map id="MidiInJack_map" name="MidiInJack_map">
+<area href="classMidiInApi.html" alt="MidiInApi" shape="rect" coords="0,0,73,24"/>
+</map>
+ </div>
+</div>
+
+<p><a href="classMidiInJack-members.html">List of all members.</a></p>
+<table border="0" cellpadding="0" cellspacing="0">
+</table>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="RtMidi_8h_source.html">RtMidi.h</a></li>
+</ul>
+</div>
+<HR>
+
+<table><tr><td><img src="../images/mcgill.gif" width=165></td>
+ <td>&copy;2003-2012 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
+</table>
+
+</BODY>
+</HTML>
diff --git a/doc/html/classMidiInJack.png b/doc/html/classMidiInJack.png
new file mode 100644
index 0000000..fa5a008
--- /dev/null
+++ b/doc/html/classMidiInJack.png
Binary files differ
diff --git a/doc/html/classMidiInWinKS-members.html b/doc/html/classMidiInWinKS-members.html
new file mode 100644
index 0000000..4d0fdfb
--- /dev/null
+++ b/doc/html/classMidiInWinKS-members.html
@@ -0,0 +1,22 @@
+<HTML>
+<HEAD>
+<TITLE>The RtMidi Tutorial</TITLE>
+<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
+</HEAD>
+<BODY BGCOLOR="#FFFFFF">
+<CENTER>
+<a class="qindex" href="index.html">Tutorial</a> &nbsp; <a class="qindex" href="annotated.html">Class/Enum List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </CENTER>
+<HR>
+<!-- Generated by Doxygen 1.6.2 -->
+<div class="contents">
+<h1>MidiInWinKS Member List</h1>This is the complete list of members for <a class="el" href="classMidiInWinKS.html">MidiInWinKS</a>, including all inherited members.<table>
+</table></div>
+<HR>
+
+<table><tr><td><img src="../images/mcgill.gif" width=165></td>
+ <td>&copy;2003-2012 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
+</table>
+
+</BODY>
+</HTML>
diff --git a/doc/html/classMidiInWinKS.html b/doc/html/classMidiInWinKS.html
new file mode 100644
index 0000000..a10fac2
--- /dev/null
+++ b/doc/html/classMidiInWinKS.html
@@ -0,0 +1,38 @@
+<HTML>
+<HEAD>
+<TITLE>The RtMidi Tutorial</TITLE>
+<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
+</HEAD>
+<BODY BGCOLOR="#FFFFFF">
+<CENTER>
+<a class="qindex" href="index.html">Tutorial</a> &nbsp; <a class="qindex" href="annotated.html">Class/Enum List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </CENTER>
+<HR>
+<!-- Generated by Doxygen 1.6.2 -->
+<div class="contents">
+<h1>MidiInWinKS Class Reference</h1><!-- doxytag: class="MidiInWinKS" --><!-- doxytag: inherits="MidiInApi" --><div class="dynheader">
+Inheritance diagram for MidiInWinKS:</div>
+<div class="dynsection">
+ <div class="center">
+ <img src="classMidiInWinKS.png" usemap="#MidiInWinKS_map" alt=""/>
+ <map id="MidiInWinKS_map" name="MidiInWinKS_map">
+<area href="classMidiInApi.html" alt="MidiInApi" shape="rect" coords="0,0,83,24"/>
+</map>
+ </div>
+</div>
+
+<p><a href="classMidiInWinKS-members.html">List of all members.</a></p>
+<table border="0" cellpadding="0" cellspacing="0">
+</table>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="RtMidi_8h_source.html">RtMidi.h</a></li>
+</ul>
+</div>
+<HR>
+
+<table><tr><td><img src="../images/mcgill.gif" width=165></td>
+ <td>&copy;2003-2012 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
+</table>
+
+</BODY>
+</HTML>
diff --git a/doc/html/classMidiInWinKS.png b/doc/html/classMidiInWinKS.png
new file mode 100644
index 0000000..b79159b
--- /dev/null
+++ b/doc/html/classMidiInWinKS.png
Binary files differ
diff --git a/doc/html/classMidiInWinMM-members.html b/doc/html/classMidiInWinMM-members.html
new file mode 100644
index 0000000..1e98845
--- /dev/null
+++ b/doc/html/classMidiInWinMM-members.html
@@ -0,0 +1,22 @@
+<HTML>
+<HEAD>
+<TITLE>The RtMidi Tutorial</TITLE>
+<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
+</HEAD>
+<BODY BGCOLOR="#FFFFFF">
+<CENTER>
+<a class="qindex" href="index.html">Tutorial</a> &nbsp; <a class="qindex" href="annotated.html">Class/Enum List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </CENTER>
+<HR>
+<!-- Generated by Doxygen 1.6.2 -->
+<div class="contents">
+<h1>MidiInWinMM Member List</h1>This is the complete list of members for <a class="el" href="classMidiInWinMM.html">MidiInWinMM</a>, including all inherited members.<table>
+</table></div>
+<HR>
+
+<table><tr><td><img src="../images/mcgill.gif" width=165></td>
+ <td>&copy;2003-2012 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
+</table>
+
+</BODY>
+</HTML>
diff --git a/doc/html/classMidiInWinMM.html b/doc/html/classMidiInWinMM.html
new file mode 100644
index 0000000..775cb1d
--- /dev/null
+++ b/doc/html/classMidiInWinMM.html
@@ -0,0 +1,38 @@
+<HTML>
+<HEAD>
+<TITLE>The RtMidi Tutorial</TITLE>
+<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
+</HEAD>
+<BODY BGCOLOR="#FFFFFF">
+<CENTER>
+<a class="qindex" href="index.html">Tutorial</a> &nbsp; <a class="qindex" href="annotated.html">Class/Enum List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </CENTER>
+<HR>
+<!-- Generated by Doxygen 1.6.2 -->
+<div class="contents">
+<h1>MidiInWinMM Class Reference</h1><!-- doxytag: class="MidiInWinMM" --><!-- doxytag: inherits="MidiInApi" --><div class="dynheader">
+Inheritance diagram for MidiInWinMM:</div>
+<div class="dynsection">
+ <div class="center">
+ <img src="classMidiInWinMM.png" usemap="#MidiInWinMM_map" alt=""/>
+ <map id="MidiInWinMM_map" name="MidiInWinMM_map">
+<area href="classMidiInApi.html" alt="MidiInApi" shape="rect" coords="0,0,89,24"/>
+</map>
+ </div>
+</div>
+
+<p><a href="classMidiInWinMM-members.html">List of all members.</a></p>
+<table border="0" cellpadding="0" cellspacing="0">
+</table>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="RtMidi_8h_source.html">RtMidi.h</a></li>
+</ul>
+</div>
+<HR>
+
+<table><tr><td><img src="../images/mcgill.gif" width=165></td>
+ <td>&copy;2003-2012 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
+</table>
+
+</BODY>
+</HTML>
diff --git a/doc/html/classMidiInWinMM.png b/doc/html/classMidiInWinMM.png
new file mode 100644
index 0000000..6321dda
--- /dev/null
+++ b/doc/html/classMidiInWinMM.png
Binary files differ
diff --git a/doc/html/classMidiOutAlsa-members.html b/doc/html/classMidiOutAlsa-members.html
new file mode 100644
index 0000000..239ad31
--- /dev/null
+++ b/doc/html/classMidiOutAlsa-members.html
@@ -0,0 +1,22 @@
+<HTML>
+<HEAD>
+<TITLE>The RtMidi Tutorial</TITLE>
+<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
+</HEAD>
+<BODY BGCOLOR="#FFFFFF">
+<CENTER>
+<a class="qindex" href="index.html">Tutorial</a> &nbsp; <a class="qindex" href="annotated.html">Class/Enum List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </CENTER>
+<HR>
+<!-- Generated by Doxygen 1.6.2 -->
+<div class="contents">
+<h1>MidiOutAlsa Member List</h1>This is the complete list of members for <a class="el" href="classMidiOutAlsa.html">MidiOutAlsa</a>, including all inherited members.<table>
+</table></div>
+<HR>
+
+<table><tr><td><img src="../images/mcgill.gif" width=165></td>
+ <td>&copy;2003-2012 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
+</table>
+
+</BODY>
+</HTML>
diff --git a/doc/html/classMidiOutAlsa.html b/doc/html/classMidiOutAlsa.html
new file mode 100644
index 0000000..0095a98
--- /dev/null
+++ b/doc/html/classMidiOutAlsa.html
@@ -0,0 +1,38 @@
+<HTML>
+<HEAD>
+<TITLE>The RtMidi Tutorial</TITLE>
+<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
+</HEAD>
+<BODY BGCOLOR="#FFFFFF">
+<CENTER>
+<a class="qindex" href="index.html">Tutorial</a> &nbsp; <a class="qindex" href="annotated.html">Class/Enum List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </CENTER>
+<HR>
+<!-- Generated by Doxygen 1.6.2 -->
+<div class="contents">
+<h1>MidiOutAlsa Class Reference</h1><!-- doxytag: class="MidiOutAlsa" --><!-- doxytag: inherits="MidiOutApi" --><div class="dynheader">
+Inheritance diagram for MidiOutAlsa:</div>
+<div class="dynsection">
+ <div class="center">
+ <img src="classMidiOutAlsa.png" usemap="#MidiOutAlsa_map" alt=""/>
+ <map id="MidiOutAlsa_map" name="MidiOutAlsa_map">
+<area href="classMidiOutApi.html" alt="MidiOutApi" shape="rect" coords="0,0,81,24"/>
+</map>
+ </div>
+</div>
+
+<p><a href="classMidiOutAlsa-members.html">List of all members.</a></p>
+<table border="0" cellpadding="0" cellspacing="0">
+</table>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="RtMidi_8h_source.html">RtMidi.h</a></li>
+</ul>
+</div>
+<HR>
+
+<table><tr><td><img src="../images/mcgill.gif" width=165></td>
+ <td>&copy;2003-2012 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
+</table>
+
+</BODY>
+</HTML>
diff --git a/doc/html/classMidiOutAlsa.png b/doc/html/classMidiOutAlsa.png
new file mode 100644
index 0000000..39453e2
--- /dev/null
+++ b/doc/html/classMidiOutAlsa.png
Binary files differ
diff --git a/doc/html/classMidiOutApi-members.html b/doc/html/classMidiOutApi-members.html
new file mode 100644
index 0000000..8525987
--- /dev/null
+++ b/doc/html/classMidiOutApi-members.html
@@ -0,0 +1,22 @@
+<HTML>
+<HEAD>
+<TITLE>The RtMidi Tutorial</TITLE>
+<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
+</HEAD>
+<BODY BGCOLOR="#FFFFFF">
+<CENTER>
+<a class="qindex" href="index.html">Tutorial</a> &nbsp; <a class="qindex" href="annotated.html">Class/Enum List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </CENTER>
+<HR>
+<!-- Generated by Doxygen 1.6.2 -->
+<div class="contents">
+<h1>MidiOutApi Member List</h1>This is the complete list of members for <a class="el" href="classMidiOutApi.html">MidiOutApi</a>, including all inherited members.<table>
+</table></div>
+<HR>
+
+<table><tr><td><img src="../images/mcgill.gif" width=165></td>
+ <td>&copy;2003-2012 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
+</table>
+
+</BODY>
+</HTML>
diff --git a/doc/html/classMidiOutApi.html b/doc/html/classMidiOutApi.html
new file mode 100644
index 0000000..85a3766
--- /dev/null
+++ b/doc/html/classMidiOutApi.html
@@ -0,0 +1,42 @@
+<HTML>
+<HEAD>
+<TITLE>The RtMidi Tutorial</TITLE>
+<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
+</HEAD>
+<BODY BGCOLOR="#FFFFFF">
+<CENTER>
+<a class="qindex" href="index.html">Tutorial</a> &nbsp; <a class="qindex" href="annotated.html">Class/Enum List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </CENTER>
+<HR>
+<!-- Generated by Doxygen 1.6.2 -->
+<div class="contents">
+<h1>MidiOutApi Class Reference</h1><!-- doxytag: class="MidiOutApi" --><div class="dynheader">
+Inheritance diagram for MidiOutApi:</div>
+<div class="dynsection">
+ <div class="center">
+ <img src="classMidiOutApi.png" usemap="#MidiOutApi_map" alt=""/>
+ <map id="MidiOutApi_map" name="MidiOutApi_map">
+<area href="classMidiOutAlsa.html" alt="MidiOutAlsa" shape="rect" coords="0,56,99,80"/>
+<area href="classMidiOutCore.html" alt="MidiOutCore" shape="rect" coords="109,56,208,80"/>
+<area href="classMidiOutJack.html" alt="MidiOutJack" shape="rect" coords="218,56,317,80"/>
+<area href="classMidiOutWinKS.html" alt="MidiOutWinKS" shape="rect" coords="327,56,426,80"/>
+<area href="classMidiOutWinMM.html" alt="MidiOutWinMM" shape="rect" coords="436,56,535,80"/>
+</map>
+ </div>
+</div>
+
+<p><a href="classMidiOutApi-members.html">List of all members.</a></p>
+<table border="0" cellpadding="0" cellspacing="0">
+</table>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="RtMidi_8h_source.html">RtMidi.h</a></li>
+</ul>
+</div>
+<HR>
+
+<table><tr><td><img src="../images/mcgill.gif" width=165></td>
+ <td>&copy;2003-2012 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
+</table>
+
+</BODY>
+</HTML>
diff --git a/doc/html/classMidiOutApi.png b/doc/html/classMidiOutApi.png
new file mode 100644
index 0000000..814fc29
--- /dev/null
+++ b/doc/html/classMidiOutApi.png
Binary files differ
diff --git a/doc/html/classMidiOutCore-members.html b/doc/html/classMidiOutCore-members.html
new file mode 100644
index 0000000..7e1b4f9
--- /dev/null
+++ b/doc/html/classMidiOutCore-members.html
@@ -0,0 +1,22 @@
+<HTML>
+<HEAD>
+<TITLE>The RtMidi Tutorial</TITLE>
+<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
+</HEAD>
+<BODY BGCOLOR="#FFFFFF">
+<CENTER>
+<a class="qindex" href="index.html">Tutorial</a> &nbsp; <a class="qindex" href="annotated.html">Class/Enum List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </CENTER>
+<HR>
+<!-- Generated by Doxygen 1.6.2 -->
+<div class="contents">
+<h1>MidiOutCore Member List</h1>This is the complete list of members for <a class="el" href="classMidiOutCore.html">MidiOutCore</a>, including all inherited members.<table>
+</table></div>
+<HR>
+
+<table><tr><td><img src="../images/mcgill.gif" width=165></td>
+ <td>&copy;2003-2012 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
+</table>
+
+</BODY>
+</HTML>
diff --git a/doc/html/classMidiOutCore.html b/doc/html/classMidiOutCore.html
new file mode 100644
index 0000000..4bc3967
--- /dev/null
+++ b/doc/html/classMidiOutCore.html
@@ -0,0 +1,38 @@
+<HTML>
+<HEAD>
+<TITLE>The RtMidi Tutorial</TITLE>
+<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
+</HEAD>
+<BODY BGCOLOR="#FFFFFF">
+<CENTER>
+<a class="qindex" href="index.html">Tutorial</a> &nbsp; <a class="qindex" href="annotated.html">Class/Enum List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </CENTER>
+<HR>
+<!-- Generated by Doxygen 1.6.2 -->
+<div class="contents">
+<h1>MidiOutCore Class Reference</h1><!-- doxytag: class="MidiOutCore" --><!-- doxytag: inherits="MidiOutApi" --><div class="dynheader">
+Inheritance diagram for MidiOutCore:</div>
+<div class="dynsection">
+ <div class="center">
+ <img src="classMidiOutCore.png" usemap="#MidiOutCore_map" alt=""/>
+ <map id="MidiOutCore_map" name="MidiOutCore_map">
+<area href="classMidiOutApi.html" alt="MidiOutApi" shape="rect" coords="0,0,84,24"/>
+</map>
+ </div>
+</div>
+
+<p><a href="classMidiOutCore-members.html">List of all members.</a></p>
+<table border="0" cellpadding="0" cellspacing="0">
+</table>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="RtMidi_8h_source.html">RtMidi.h</a></li>
+</ul>
+</div>
+<HR>
+
+<table><tr><td><img src="../images/mcgill.gif" width=165></td>
+ <td>&copy;2003-2012 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
+</table>
+
+</BODY>
+</HTML>
diff --git a/doc/html/classMidiOutCore.png b/doc/html/classMidiOutCore.png
new file mode 100644
index 0000000..a96f3e3
--- /dev/null
+++ b/doc/html/classMidiOutCore.png
Binary files differ
diff --git a/doc/html/classMidiOutDummy-members.html b/doc/html/classMidiOutDummy-members.html
new file mode 100644
index 0000000..bb78664
--- /dev/null
+++ b/doc/html/classMidiOutDummy-members.html
@@ -0,0 +1,22 @@
+<HTML>
+<HEAD>
+<TITLE>The RtMidi Tutorial</TITLE>
+<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
+</HEAD>
+<BODY BGCOLOR="#FFFFFF">
+<CENTER>
+<a class="qindex" href="index.html">Tutorial</a> &nbsp; <a class="qindex" href="annotated.html">Class/Enum List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </CENTER>
+<HR>
+<!-- Generated by Doxygen 1.6.2 -->
+<div class="contents">
+<h1>MidiOutDummy Member List</h1>This is the complete list of members for <a class="el" href="classMidiOutDummy.html">MidiOutDummy</a>, including all inherited members.<table>
+</table></div>
+<HR>
+
+<table><tr><td><img src="../images/mcgill.gif" width=165></td>
+ <td>&copy;2003-2012 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
+</table>
+
+</BODY>
+</HTML>
diff --git a/doc/html/classMidiOutDummy.html b/doc/html/classMidiOutDummy.html
new file mode 100644
index 0000000..7219f9c
--- /dev/null
+++ b/doc/html/classMidiOutDummy.html
@@ -0,0 +1,38 @@
+<HTML>
+<HEAD>
+<TITLE>The RtMidi Tutorial</TITLE>
+<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
+</HEAD>
+<BODY BGCOLOR="#FFFFFF">
+<CENTER>
+<a class="qindex" href="index.html">Tutorial</a> &nbsp; <a class="qindex" href="annotated.html">Class/Enum List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </CENTER>
+<HR>
+<!-- Generated by Doxygen 1.6.2 -->
+<div class="contents">
+<h1>MidiOutDummy Class Reference</h1><!-- doxytag: class="MidiOutDummy" --><!-- doxytag: inherits="MidiOutApi" --><div class="dynheader">
+Inheritance diagram for MidiOutDummy:</div>
+<div class="dynsection">
+ <div class="center">
+ <img src="classMidiOutDummy.png" usemap="#MidiOutDummy_map" alt=""/>
+ <map id="MidiOutDummy_map" name="MidiOutDummy_map">
+<area href="classMidiOutApi.html" alt="MidiOutApi" shape="rect" coords="0,0,97,24"/>
+</map>
+ </div>
+</div>
+
+<p><a href="classMidiOutDummy-members.html">List of all members.</a></p>
+<table border="0" cellpadding="0" cellspacing="0">
+</table>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="RtMidi_8h_source.html">RtMidi.h</a></li>
+</ul>
+</div>
+<HR>
+
+<table><tr><td><img src="../images/mcgill.gif" width=165></td>
+ <td>&copy;2003-2012 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
+</table>
+
+</BODY>
+</HTML>
diff --git a/doc/html/classMidiOutDummy.png b/doc/html/classMidiOutDummy.png
new file mode 100644
index 0000000..c49611f
--- /dev/null
+++ b/doc/html/classMidiOutDummy.png
Binary files differ
diff --git a/doc/html/classMidiOutJack-members.html b/doc/html/classMidiOutJack-members.html
new file mode 100644
index 0000000..0015061
--- /dev/null
+++ b/doc/html/classMidiOutJack-members.html
@@ -0,0 +1,22 @@
+<HTML>
+<HEAD>
+<TITLE>The RtMidi Tutorial</TITLE>
+<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
+</HEAD>
+<BODY BGCOLOR="#FFFFFF">
+<CENTER>
+<a class="qindex" href="index.html">Tutorial</a> &nbsp; <a class="qindex" href="annotated.html">Class/Enum List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </CENTER>
+<HR>
+<!-- Generated by Doxygen 1.6.2 -->
+<div class="contents">
+<h1>MidiOutJack Member List</h1>This is the complete list of members for <a class="el" href="classMidiOutJack.html">MidiOutJack</a>, including all inherited members.<table>
+</table></div>
+<HR>
+
+<table><tr><td><img src="../images/mcgill.gif" width=165></td>
+ <td>&copy;2003-2012 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
+</table>
+
+</BODY>
+</HTML>
diff --git a/doc/html/classMidiOutJack.html b/doc/html/classMidiOutJack.html
new file mode 100644
index 0000000..c333501
--- /dev/null
+++ b/doc/html/classMidiOutJack.html
@@ -0,0 +1,38 @@
+<HTML>
+<HEAD>
+<TITLE>The RtMidi Tutorial</TITLE>
+<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
+</HEAD>
+<BODY BGCOLOR="#FFFFFF">
+<CENTER>
+<a class="qindex" href="index.html">Tutorial</a> &nbsp; <a class="qindex" href="annotated.html">Class/Enum List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </CENTER>
+<HR>
+<!-- Generated by Doxygen 1.6.2 -->
+<div class="contents">
+<h1>MidiOutJack Class Reference</h1><!-- doxytag: class="MidiOutJack" --><!-- doxytag: inherits="MidiOutApi" --><div class="dynheader">
+Inheritance diagram for MidiOutJack:</div>
+<div class="dynsection">
+ <div class="center">
+ <img src="classMidiOutJack.png" usemap="#MidiOutJack_map" alt=""/>
+ <map id="MidiOutJack_map" name="MidiOutJack_map">
+<area href="classMidiOutApi.html" alt="MidiOutApi" shape="rect" coords="0,0,83,24"/>
+</map>
+ </div>
+</div>
+
+<p><a href="classMidiOutJack-members.html">List of all members.</a></p>
+<table border="0" cellpadding="0" cellspacing="0">
+</table>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="RtMidi_8h_source.html">RtMidi.h</a></li>
+</ul>
+</div>
+<HR>
+
+<table><tr><td><img src="../images/mcgill.gif" width=165></td>
+ <td>&copy;2003-2012 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
+</table>
+
+</BODY>
+</HTML>
diff --git a/doc/html/classMidiOutJack.png b/doc/html/classMidiOutJack.png
new file mode 100644
index 0000000..c2f0acf
--- /dev/null
+++ b/doc/html/classMidiOutJack.png
Binary files differ
diff --git a/doc/html/classMidiOutWinKS-members.html b/doc/html/classMidiOutWinKS-members.html
new file mode 100644
index 0000000..0ce4b0e
--- /dev/null
+++ b/doc/html/classMidiOutWinKS-members.html
@@ -0,0 +1,22 @@
+<HTML>
+<HEAD>
+<TITLE>The RtMidi Tutorial</TITLE>
+<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
+</HEAD>
+<BODY BGCOLOR="#FFFFFF">
+<CENTER>
+<a class="qindex" href="index.html">Tutorial</a> &nbsp; <a class="qindex" href="annotated.html">Class/Enum List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </CENTER>
+<HR>
+<!-- Generated by Doxygen 1.6.2 -->
+<div class="contents">
+<h1>MidiOutWinKS Member List</h1>This is the complete list of members for <a class="el" href="classMidiOutWinKS.html">MidiOutWinKS</a>, including all inherited members.<table>
+</table></div>
+<HR>
+
+<table><tr><td><img src="../images/mcgill.gif" width=165></td>
+ <td>&copy;2003-2012 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
+</table>
+
+</BODY>
+</HTML>
diff --git a/doc/html/classMidiOutWinKS.html b/doc/html/classMidiOutWinKS.html
new file mode 100644
index 0000000..7d84752
--- /dev/null
+++ b/doc/html/classMidiOutWinKS.html
@@ -0,0 +1,38 @@
+<HTML>
+<HEAD>
+<TITLE>The RtMidi Tutorial</TITLE>
+<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
+</HEAD>
+<BODY BGCOLOR="#FFFFFF">
+<CENTER>
+<a class="qindex" href="index.html">Tutorial</a> &nbsp; <a class="qindex" href="annotated.html">Class/Enum List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </CENTER>
+<HR>
+<!-- Generated by Doxygen 1.6.2 -->
+<div class="contents">
+<h1>MidiOutWinKS Class Reference</h1><!-- doxytag: class="MidiOutWinKS" --><!-- doxytag: inherits="MidiOutApi" --><div class="dynheader">
+Inheritance diagram for MidiOutWinKS:</div>
+<div class="dynsection">
+ <div class="center">
+ <img src="classMidiOutWinKS.png" usemap="#MidiOutWinKS_map" alt=""/>
+ <map id="MidiOutWinKS_map" name="MidiOutWinKS_map">
+<area href="classMidiOutApi.html" alt="MidiOutApi" shape="rect" coords="0,0,93,24"/>
+</map>
+ </div>
+</div>
+
+<p><a href="classMidiOutWinKS-members.html">List of all members.</a></p>
+<table border="0" cellpadding="0" cellspacing="0">
+</table>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="RtMidi_8h_source.html">RtMidi.h</a></li>
+</ul>
+</div>
+<HR>
+
+<table><tr><td><img src="../images/mcgill.gif" width=165></td>
+ <td>&copy;2003-2012 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
+</table>
+
+</BODY>
+</HTML>
diff --git a/doc/html/classMidiOutWinKS.png b/doc/html/classMidiOutWinKS.png
new file mode 100644
index 0000000..b29a183
--- /dev/null
+++ b/doc/html/classMidiOutWinKS.png
Binary files differ
diff --git a/doc/html/classMidiOutWinMM-members.html b/doc/html/classMidiOutWinMM-members.html
new file mode 100644
index 0000000..ddd3880
--- /dev/null
+++ b/doc/html/classMidiOutWinMM-members.html
@@ -0,0 +1,22 @@
+<HTML>
+<HEAD>
+<TITLE>The RtMidi Tutorial</TITLE>
+<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
+</HEAD>
+<BODY BGCOLOR="#FFFFFF">
+<CENTER>
+<a class="qindex" href="index.html">Tutorial</a> &nbsp; <a class="qindex" href="annotated.html">Class/Enum List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </CENTER>
+<HR>
+<!-- Generated by Doxygen 1.6.2 -->
+<div class="contents">
+<h1>MidiOutWinMM Member List</h1>This is the complete list of members for <a class="el" href="classMidiOutWinMM.html">MidiOutWinMM</a>, including all inherited members.<table>
+</table></div>
+<HR>
+
+<table><tr><td><img src="../images/mcgill.gif" width=165></td>
+ <td>&copy;2003-2012 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
+</table>
+
+</BODY>
+</HTML>
diff --git a/doc/html/classMidiOutWinMM.html b/doc/html/classMidiOutWinMM.html
new file mode 100644
index 0000000..d72b8d7
--- /dev/null
+++ b/doc/html/classMidiOutWinMM.html
@@ -0,0 +1,38 @@
+<HTML>
+<HEAD>
+<TITLE>The RtMidi Tutorial</TITLE>
+<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
+</HEAD>
+<BODY BGCOLOR="#FFFFFF">
+<CENTER>
+<a class="qindex" href="index.html">Tutorial</a> &nbsp; <a class="qindex" href="annotated.html">Class/Enum List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </CENTER>
+<HR>
+<!-- Generated by Doxygen 1.6.2 -->
+<div class="contents">
+<h1>MidiOutWinMM Class Reference</h1><!-- doxytag: class="MidiOutWinMM" --><!-- doxytag: inherits="MidiOutApi" --><div class="dynheader">
+Inheritance diagram for MidiOutWinMM:</div>
+<div class="dynsection">
+ <div class="center">
+ <img src="classMidiOutWinMM.png" usemap="#MidiOutWinMM_map" alt=""/>
+ <map id="MidiOutWinMM_map" name="MidiOutWinMM_map">
+<area href="classMidiOutApi.html" alt="MidiOutApi" shape="rect" coords="0,0,99,24"/>
+</map>
+ </div>
+</div>
+
+<p><a href="classMidiOutWinMM-members.html">List of all members.</a></p>
+<table border="0" cellpadding="0" cellspacing="0">
+</table>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="RtMidi_8h_source.html">RtMidi.h</a></li>
+</ul>
+</div>
+<HR>
+
+<table><tr><td><img src="../images/mcgill.gif" width=165></td>
+ <td>&copy;2003-2012 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
+</table>
+
+</BODY>
+</HTML>
diff --git a/doc/html/classMidiOutWinMM.png b/doc/html/classMidiOutWinMM.png
new file mode 100644
index 0000000..b66c0e0
--- /dev/null
+++ b/doc/html/classMidiOutWinMM.png
Binary files differ
diff --git a/doc/html/classRtError-members.html b/doc/html/classRtError-members.html
index a2ee4a5..e7656c7 100644
--- a/doc/html/classRtError-members.html
+++ b/doc/html/classRtError-members.html
@@ -32,7 +32,7 @@
<HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
- <td>&copy;2003-2011 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ <td>&copy;2003-2012 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/html/classRtError.html b/doc/html/classRtError.html
index 4aec2d8..f124723 100644
--- a/doc/html/classRtError.html
+++ b/doc/html/classRtError.html
@@ -119,7 +119,7 @@ virtual const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class
<HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
- <td>&copy;2003-2011 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ <td>&copy;2003-2012 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/html/classRtMidi-members.html b/doc/html/classRtMidi-members.html
index 17a5d6c..9ff6b2e 100644
--- a/doc/html/classRtMidi-members.html
+++ b/doc/html/classRtMidi-members.html
@@ -10,16 +10,26 @@
<!-- Generated by Doxygen 1.6.2 -->
<div class="contents">
<h1>RtMidi Member List</h1>This is the complete list of members for <a class="el" href="classRtMidi.html">RtMidi</a>, including all inherited members.<table>
+ <tr class="memlist"><td><a class="el" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406">Api</a> enum name</td><td><a class="el" href="classRtMidi.html">RtMidi</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classRtMidi.html#a36125c4fa16550345b57f4a4927f5b4a">closePort</a>(void)=0</td><td><a class="el" href="classRtMidi.html">RtMidi</a></td><td><code> [pure virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classRtMidi.html#ae1a810e84c57b2eb4989056cb384a04c">error</a>(RtError::Type type, std::string errorString)</td><td><a class="el" href="classRtMidi.html">RtMidi</a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classRtMidi.html#a025fa339486c9a34b26ec707aa2944ce">getCompiledApi</a>(std::vector&lt; RtMidi::Api &gt; &amp;apis)</td><td><a class="el" href="classRtMidi.html">RtMidi</a></td><td><code> [static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classRtMidi.html#a9a49ef73a1e6007444019a7ae095e195">getPortCount</a>()=0</td><td><a class="el" href="classRtMidi.html">RtMidi</a></td><td><code> [pure virtual]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classRtMidi.html#a799e2b9f4df39b298518f2b394db3391">getPortName</a>(unsigned int portNumber=0)=0</td><td><a class="el" href="classRtMidi.html">RtMidi</a></td><td><code> [pure virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a20c691b24844d3ab5dbf882123235df2">LINUX_ALSA</a> enum value</td><td><a class="el" href="classRtMidi.html">RtMidi</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a3f41293f89467641484fbd54c4530908">MACOSX_CORE</a> enum value</td><td><a class="el" href="classRtMidi.html">RtMidi</a></td><td></td></tr>
<tr class="memlist"><td><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><a class="el" href="classRtMidi.html">RtMidi</a></td><td><code> [pure virtual]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classRtMidi.html#a9200cde4f5337c0bc421d20bd4fcf654">openVirtualPort</a>(const std::string portName=std::string(&quot;RtMidi&quot;))=0</td><td><a class="el" href="classRtMidi.html">RtMidi</a></td><td><code> [pure virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a54dba406ab358492005ce2b966a2d959">RTMIDI_DUMMY</a> enum value</td><td><a class="el" href="classRtMidi.html">RtMidi</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a1f59daf3120f47c0ae3891773112ddfa">UNIX_JACK</a> enum value</td><td><a class="el" href="classRtMidi.html">RtMidi</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a4a4d9f7a38a082d6b0d5dd2b5de94ab9">UNSPECIFIED</a> enum value</td><td><a class="el" href="classRtMidi.html">RtMidi</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a246ae76adf088dd4d359bbac3d605756">WINDOWS_KS</a> enum value</td><td><a class="el" href="classRtMidi.html">RtMidi</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a647868cb4ed37f517bf185a7f41cb70f">WINDOWS_MM</a> enum value</td><td><a class="el" href="classRtMidi.html">RtMidi</a></td><td></td></tr>
</table></div>
<HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
- <td>&copy;2003-2011 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ <td>&copy;2003-2012 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/html/classRtMidi.html b/doc/html/classRtMidi.html
index 43e3f9d..0f8b485 100644
--- a/doc/html/classRtMidi.html
+++ b/doc/html/classRtMidi.html
@@ -28,6 +28,20 @@ Inheritance diagram for RtMidi:</div>
<p><a href="classRtMidi-members.html">List of all members.</a></p>
<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Public Types</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406">Api</a> { <br/>
+&nbsp;&nbsp;<a class="el" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a4a4d9f7a38a082d6b0d5dd2b5de94ab9">UNSPECIFIED</a>,
+<a class="el" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a3f41293f89467641484fbd54c4530908">MACOSX_CORE</a>,
+<a class="el" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a20c691b24844d3ab5dbf882123235df2">LINUX_ALSA</a>,
+<a class="el" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a1f59daf3120f47c0ae3891773112ddfa">UNIX_JACK</a>,
+<br/>
+&nbsp;&nbsp;<a class="el" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a647868cb4ed37f517bf185a7f41cb70f">WINDOWS_MM</a>,
+<a class="el" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a246ae76adf088dd4d359bbac3d605756">WINDOWS_KS</a>,
+<a class="el" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a54dba406ab358492005ce2b966a2d959">RTMIDI_DUMMY</a>
+<br/>
+ }</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><p>MIDI API specifier arguments. </p>
+ <a href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406">More...</a><br/></td></tr>
<tr><td colspan="2"><h2>Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad9e30a89638f93193cb40edebaa536f5"></a><!-- doxytag: member="RtMidi::openPort" ref="ad9e30a89638f93193cb40edebaa536f5" args="(unsigned int portNumber=0, const std::string portName=std::string(&quot;RtMidi&quot;))=0" -->
virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRtMidi.html#ad9e30a89638f93193cb40edebaa536f5">openPort</a> (unsigned int portNumber=0, const std::string portName=std::string(&quot;RtMidi&quot;))=0</td></tr>
@@ -44,16 +58,85 @@ virtual std::string&nbsp;</td><td class="memItemRight" valign="bottom"><a class=
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a36125c4fa16550345b57f4a4927f5b4a"></a><!-- doxytag: member="RtMidi::closePort" ref="a36125c4fa16550345b57f4a4927f5b4a" args="(void)=0" -->
virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRtMidi.html#a36125c4fa16550345b57f4a4927f5b4a">closePort</a> (void)=0</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Pure virtual <a class="el" href="classRtMidi.html#a36125c4fa16550345b57f4a4927f5b4a" title="Pure virtual closePort() function.">closePort()</a> function. <br/></td></tr>
+<tr><td colspan="2"><h2>Static Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRtMidi.html#a025fa339486c9a34b26ec707aa2944ce">getCompiledApi</a> (std::vector&lt; <a class="el" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406">RtMidi::Api</a> &gt; &amp;apis) throw ()</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A static function to determine the available compiled MIDI APIs. <a href="#a025fa339486c9a34b26ec707aa2944ce"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae1a810e84c57b2eb4989056cb384a04c"></a><!-- doxytag: member="RtMidi::error" ref="ae1a810e84c57b2eb4989056cb384a04c" args="(RtError::Type type, std::string errorString)" -->
+static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRtMidi.html#ae1a810e84c57b2eb4989056cb384a04c">error</a> (<a class="el" href="classRtError.html#ab04667aae01bffc354a9ac6bda6903ac">RtError::Type</a> type, std::string errorString)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A basic error reporting function for <a class="el" href="classRtMidi.html" title="An abstract base class for realtime MIDI input/output.">RtMidi</a> classes. <br/></td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<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-2011 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-2012 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 requested to send the modifications to the original developer so that they can be incorporated into the canonical version.</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>
<p>THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. </p>
+<hr/><h2>Member Enumeration Documentation</h2>
+<a class="anchor" id="aac66af04a85fe5c5f07c360574a19406"></a><!-- doxytag: member="RtMidi::Api" ref="aac66af04a85fe5c5f07c360574a19406" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">enum <a class="el" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406">RtMidi::Api</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>MIDI API specifier arguments. </p>
+<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
+<tr><td valign="top"><em><a class="anchor" id="aac66af04a85fe5c5f07c360574a19406a4a4d9f7a38a082d6b0d5dd2b5de94ab9"></a><!-- doxytag: member="UNSPECIFIED" ref="aac66af04a85fe5c5f07c360574a19406a4a4d9f7a38a082d6b0d5dd2b5de94ab9" args="" -->UNSPECIFIED</em>&nbsp;</td><td>
+<p>Search for a working compiled API. </p>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" id="aac66af04a85fe5c5f07c360574a19406a3f41293f89467641484fbd54c4530908"></a><!-- doxytag: member="MACOSX_CORE" ref="aac66af04a85fe5c5f07c360574a19406a3f41293f89467641484fbd54c4530908" args="" -->MACOSX_CORE</em>&nbsp;</td><td>
+<p>Macintosh OS-X Core Midi API. </p>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" id="aac66af04a85fe5c5f07c360574a19406a20c691b24844d3ab5dbf882123235df2"></a><!-- doxytag: member="LINUX_ALSA" ref="aac66af04a85fe5c5f07c360574a19406a20c691b24844d3ab5dbf882123235df2" args="" -->LINUX_ALSA</em>&nbsp;</td><td>
+<p>The Advanced Linux Sound Architecture API. </p>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" id="aac66af04a85fe5c5f07c360574a19406a1f59daf3120f47c0ae3891773112ddfa"></a><!-- doxytag: member="UNIX_JACK" ref="aac66af04a85fe5c5f07c360574a19406a1f59daf3120f47c0ae3891773112ddfa" args="" -->UNIX_JACK</em>&nbsp;</td><td>
+<p>The Jack Low-Latency MIDI Server API. </p>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" id="aac66af04a85fe5c5f07c360574a19406a647868cb4ed37f517bf185a7f41cb70f"></a><!-- doxytag: member="WINDOWS_MM" ref="aac66af04a85fe5c5f07c360574a19406a647868cb4ed37f517bf185a7f41cb70f" args="" -->WINDOWS_MM</em>&nbsp;</td><td>
+<p>The Microsoft Multimedia MIDI API. </p>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" id="aac66af04a85fe5c5f07c360574a19406a246ae76adf088dd4d359bbac3d605756"></a><!-- doxytag: member="WINDOWS_KS" ref="aac66af04a85fe5c5f07c360574a19406a246ae76adf088dd4d359bbac3d605756" args="" -->WINDOWS_KS</em>&nbsp;</td><td>
+<p>The Microsoft Kernel Streaming MIDI API. </p>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" id="aac66af04a85fe5c5f07c360574a19406a54dba406ab358492005ce2b966a2d959"></a><!-- doxytag: member="RTMIDI_DUMMY" ref="aac66af04a85fe5c5f07c360574a19406a54dba406ab358492005ce2b966a2d959" args="" -->RTMIDI_DUMMY</em>&nbsp;</td><td>
+<p>A compilable but non-functional API. </p>
+</td></tr>
+</table>
+</dd>
+</dl>
+
+</div>
+</div>
+<hr/><h2>Member Function Documentation</h2>
+<a class="anchor" id="a025fa339486c9a34b26ec707aa2944ce"></a><!-- doxytag: member="RtMidi::getCompiledApi" ref="a025fa339486c9a34b26ec707aa2944ce" args="(std::vector&lt; RtMidi::Api &gt; &amp;apis)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">static void RtMidi::getCompiledApi </td>
+ <td>(</td>
+ <td class="paramtype">std::vector&lt; <a class="el" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406">RtMidi::Api</a> &gt; &amp;&nbsp;</td>
+ <td class="paramname"> <em>apis</em></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> throw ()<code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>A static function to determine the available compiled MIDI APIs. </p>
+<p>The values returned in the std::vector can be compared against the enumerated list values. Note that there can be more than one API compiled for certain operating systems. </p>
+
+</div>
+</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="RtMidi_8h_source.html">RtMidi.h</a></li>
</ul>
@@ -61,7 +144,7 @@ virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" hr
<HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
- <td>&copy;2003-2011 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ <td>&copy;2003-2012 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/html/classRtMidiIn-members.html b/doc/html/classRtMidiIn-members.html
index 4cb8ef3..c632f31 100644
--- a/doc/html/classRtMidiIn-members.html
+++ b/doc/html/classRtMidiIn-members.html
@@ -10,23 +10,34 @@
<!-- Generated by Doxygen 1.6.2 -->
<div class="contents">
<h1>RtMidiIn Member List</h1>This is the complete list of members for <a class="el" href="classRtMidiIn.html">RtMidiIn</a>, including all inherited members.<table>
- <tr class="memlist"><td><a class="el" href="classRtMidiIn.html#ade23832a66c1ed56965c26325602543e">cancelCallback</a>()</td><td><a class="el" href="classRtMidiIn.html">RtMidiIn</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classRtMidiIn.html#a55bacf0d228fd8e3be6a79d12fd1dc39">closePort</a>(void)</td><td><a class="el" href="classRtMidiIn.html">RtMidiIn</a></td><td><code> [virtual]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classRtMidiIn.html#a1ba10ecd276b30a8579c7d60a9c890eb">getMessage</a>(std::vector&lt; unsigned char &gt; *message)</td><td><a class="el" href="classRtMidiIn.html">RtMidiIn</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classRtMidiIn.html#a62b1b38aa8e5f11cd66f03d59228f4e4">getPortCount</a>()</td><td><a class="el" href="classRtMidiIn.html">RtMidiIn</a></td><td><code> [virtual]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classRtMidiIn.html#af2961fff09fa01a3d5bc0f0c5a042aaf">getPortName</a>(unsigned int portNumber=0)</td><td><a class="el" href="classRtMidiIn.html">RtMidiIn</a></td><td><code> [virtual]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classRtMidiIn.html#af9507125aaa42276ccc01df576fc3533">ignoreTypes</a>(bool midiSysex=true, bool midiTime=true, bool midiSense=true)</td><td><a class="el" href="classRtMidiIn.html">RtMidiIn</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classRtMidiIn.html#a7e853661b1056083e07318d67c51f6fd">openPort</a>(unsigned int portNumber=0, const std::string Portname=std::string(&quot;RtMidi Input&quot;))</td><td><a class="el" href="classRtMidiIn.html">RtMidiIn</a></td><td><code> [virtual]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classRtMidiIn.html#a245261b3f12ce727faed18fcfeef18c2">openVirtualPort</a>(const std::string portName=std::string(&quot;RtMidi Input&quot;))</td><td><a class="el" href="classRtMidiIn.html">RtMidiIn</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406">Api</a> enum name</td><td><a class="el" href="classRtMidi.html">RtMidi</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classRtMidiIn.html#ade23832a66c1ed56965c26325602543e">cancelCallback</a>()</td><td><a class="el" href="classRtMidiIn.html">RtMidiIn</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classRtMidiIn.html#a55bacf0d228fd8e3be6a79d12fd1dc39">closePort</a>(void)</td><td><a class="el" href="classRtMidiIn.html">RtMidiIn</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classRtMidi.html#ae1a810e84c57b2eb4989056cb384a04c">error</a>(RtError::Type type, std::string errorString)</td><td><a class="el" href="classRtMidi.html">RtMidi</a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classRtMidi.html#a025fa339486c9a34b26ec707aa2944ce">getCompiledApi</a>(std::vector&lt; RtMidi::Api &gt; &amp;apis)</td><td><a class="el" href="classRtMidi.html">RtMidi</a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classRtMidiIn.html#a6475a11eeb0c8bf22157c3887b100164">getCurrentApi</a>(void)</td><td><a class="el" href="classRtMidiIn.html">RtMidiIn</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classRtMidiIn.html#a1ba10ecd276b30a8579c7d60a9c890eb">getMessage</a>(std::vector&lt; unsigned char &gt; *message)</td><td><a class="el" href="classRtMidiIn.html">RtMidiIn</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classRtMidiIn.html#a62b1b38aa8e5f11cd66f03d59228f4e4">getPortCount</a>()</td><td><a class="el" href="classRtMidiIn.html">RtMidiIn</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classRtMidiIn.html#af2961fff09fa01a3d5bc0f0c5a042aaf">getPortName</a>(unsigned int portNumber=0)</td><td><a class="el" href="classRtMidiIn.html">RtMidiIn</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classRtMidiIn.html#af9507125aaa42276ccc01df576fc3533">ignoreTypes</a>(bool midiSysex=true, bool midiTime=true, bool midiSense=true)</td><td><a class="el" href="classRtMidiIn.html">RtMidiIn</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a20c691b24844d3ab5dbf882123235df2">LINUX_ALSA</a> enum value</td><td><a class="el" href="classRtMidi.html">RtMidi</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a3f41293f89467641484fbd54c4530908">MACOSX_CORE</a> enum value</td><td><a class="el" href="classRtMidi.html">RtMidi</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classRtMidiIn.html#a39df8f81a22f729a9904707dde487d2c">openPort</a>(unsigned int portNumber=0, const std::string portName=std::string(&quot;RtMidi Input&quot;))</td><td><a class="el" href="classRtMidiIn.html">RtMidiIn</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classRtMidiIn.html#a245261b3f12ce727faed18fcfeef18c2">openVirtualPort</a>(const std::string portName=std::string(&quot;RtMidi Input&quot;))</td><td><a class="el" href="classRtMidiIn.html">RtMidiIn</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a54dba406ab358492005ce2b966a2d959">RTMIDI_DUMMY</a> enum value</td><td><a class="el" href="classRtMidi.html">RtMidi</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classRtMidiIn.html#a297d2eb3c3420b437970a6fc59d89cbf">RtMidiCallback</a> typedef</td><td><a class="el" href="classRtMidiIn.html">RtMidiIn</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classRtMidiIn.html#a1d70da3ef18d24c5b3f0cc01888e093d">RtMidiIn</a>(const std::string clientName=std::string(&quot;RtMidi Input Client&quot;), unsigned int queueSizeLimit=100)</td><td><a class="el" href="classRtMidiIn.html">RtMidiIn</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classRtMidiIn.html#a7590563461c7467608a4b3806406b32d">setCallback</a>(RtMidiCallback callback, void *userData=0)</td><td><a class="el" href="classRtMidiIn.html">RtMidiIn</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classRtMidiIn.html#af865d88c154b6fdadc640da5dc278d40">~RtMidiIn</a>()</td><td><a class="el" href="classRtMidiIn.html">RtMidiIn</a></td><td></td></tr>
+ <tr class="memlist"><td><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><a class="el" href="classRtMidiIn.html">RtMidiIn</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classRtMidiIn.html#a7590563461c7467608a4b3806406b32d">setCallback</a>(RtMidiCallback callback, void *userData=0)</td><td><a class="el" href="classRtMidiIn.html">RtMidiIn</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a1f59daf3120f47c0ae3891773112ddfa">UNIX_JACK</a> enum value</td><td><a class="el" href="classRtMidi.html">RtMidi</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a4a4d9f7a38a082d6b0d5dd2b5de94ab9">UNSPECIFIED</a> enum value</td><td><a class="el" href="classRtMidi.html">RtMidi</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a246ae76adf088dd4d359bbac3d605756">WINDOWS_KS</a> enum value</td><td><a class="el" href="classRtMidi.html">RtMidi</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a647868cb4ed37f517bf185a7f41cb70f">WINDOWS_MM</a> enum value</td><td><a class="el" href="classRtMidi.html">RtMidi</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classRtMidiIn.html#ae79f4da8a1b2e7efecdd1047670b27dc">~RtMidiIn</a>(void)</td><td><a class="el" href="classRtMidiIn.html">RtMidiIn</a></td><td></td></tr>
</table></div>
<HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
- <td>&copy;2003-2011 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ <td>&copy;2003-2012 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/html/classRtMidiIn.html b/doc/html/classRtMidiIn.html
index 241fd88..9eaabcd 100644
--- a/doc/html/classRtMidiIn.html
+++ b/doc/html/classRtMidiIn.html
@@ -27,22 +27,21 @@ Inheritance diagram for RtMidiIn:</div>
<p><a href="classRtMidiIn-members.html">List of all members.</a></p>
<table border="0" cellpadding="0" cellspacing="0">
-<tr><td colspan="2"><h2>Classes</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structRtMidiIn_1_1MidiMessage.html">MidiMessage</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structRtMidiIn_1_1MidiQueue.html">MidiQueue</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structRtMidiIn_1_1RtMidiInData.html">RtMidiInData</a></td></tr>
<tr><td colspan="2"><h2>Public Types</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a297d2eb3c3420b437970a6fc59d89cbf"></a><!-- doxytag: member="RtMidiIn::RtMidiCallback" ref="a297d2eb3c3420b437970a6fc59d89cbf" args=")(double timeStamp, std::vector&lt; unsigned char &gt; *message, void *userData)" -->
typedef void(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRtMidiIn.html#a297d2eb3c3420b437970a6fc59d89cbf">RtMidiCallback</a> )(double timeStamp, std::vector&lt; unsigned char &gt; *message, void *userData)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">User callback function type definition. <br/></td></tr>
<tr><td colspan="2"><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRtMidiIn.html#a1d70da3ef18d24c5b3f0cc01888e093d">RtMidiIn</a> (const std::string clientName=std::string(&quot;RtMidi Input Client&quot;), unsigned int queueSizeLimit=100)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Default constructor that allows an optional client name and queue size. <a href="#a1d70da3ef18d24c5b3f0cc01888e093d"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af865d88c154b6fdadc640da5dc278d40"></a><!-- doxytag: member="RtMidiIn::~RtMidiIn" ref="af865d88c154b6fdadc640da5dc278d40" args="()" -->
-&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRtMidiIn.html#af865d88c154b6fdadc640da5dc278d40">~RtMidiIn</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRtMidiIn.html#aeeaeed8dae387dffc70e73e6e88b4d1a">RtMidiIn</a> (<a class="el" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406">RtMidi::Api</a> api=UNSPECIFIED, const std::string clientName=std::string(&quot;RtMidi Input Client&quot;), unsigned int queueSizeLimit=100)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Default constructor that allows an optional api, client name and queue size. <a href="#aeeaeed8dae387dffc70e73e6e88b4d1a"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae79f4da8a1b2e7efecdd1047670b27dc"></a><!-- doxytag: member="RtMidiIn::~RtMidiIn" ref="ae79f4da8a1b2e7efecdd1047670b27dc" args="(void)" -->
+&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRtMidiIn.html#ae79f4da8a1b2e7efecdd1047670b27dc">~RtMidiIn</a> (void) throw ()</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">If a MIDI connection is still open, it will be closed by the destructor. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRtMidiIn.html#a7e853661b1056083e07318d67c51f6fd">openPort</a> (unsigned int portNumber=0, const std::string Portname=std::string(&quot;RtMidi Input&quot;))</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Open a MIDI input connection. <a href="#a7e853661b1056083e07318d67c51f6fd"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6475a11eeb0c8bf22157c3887b100164"></a><!-- doxytag: member="RtMidiIn::getCurrentApi" ref="a6475a11eeb0c8bf22157c3887b100164" args="(void)" -->
+<a class="el" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406">RtMidi::Api</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRtMidiIn.html#a6475a11eeb0c8bf22157c3887b100164">getCurrentApi</a> (void) throw ()</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the MIDI API specifier for the current instance of <a class="el" href="classRtMidiIn.html" title="A realtime MIDI input class.">RtMidiIn</a>. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRtMidiIn.html#a39df8f81a22f729a9904707dde487d2c">openPort</a> (unsigned int portNumber=0, const std::string portName=std::string(&quot;RtMidi Input&quot;))</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Open a MIDI input connection. <a href="#a39df8f81a22f729a9904707dde487d2c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRtMidiIn.html#a245261b3f12ce727faed18fcfeef18c2">openVirtualPort</a> (const std::string portName=std::string(&quot;RtMidi Input&quot;))</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a virtual input port, with optional name, to allow software connections (OS X and ALSA only). <a href="#a245261b3f12ce727faed18fcfeef18c2"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRtMidiIn.html#a7590563461c7467608a4b3806406b32d">setCallback</a> (<a class="el" href="classRtMidiIn.html#a297d2eb3c3420b437970a6fc59d89cbf">RtMidiCallback</a> callback, void *userData=0)</td></tr>
@@ -65,15 +64,21 @@ unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" hr
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>A realtime MIDI input class. </p>
<p>This class provides a common, platform-independent API for realtime MIDI input. It allows access to a single MIDI input port. Incoming MIDI messages are either saved to a queue for retrieval using the <a class="el" href="classRtMidiIn.html#a1ba10ecd276b30a8579c7d60a9c890eb" title="Fill the user-provided vector with the data bytes for the next available MIDI message...">getMessage()</a> function or immediately passed to a user-specified callback function. Create multiple instances of this class to connect to more than one MIDI device at the same time. With the OS-X and Linux ALSA MIDI APIs, it is also possible to open a virtual input port to which other MIDI software clients can connect.</p>
-<p>by Gary P. Scavone, 2003-2008. </p>
+<p>by Gary P. Scavone, 2003-2012. </p>
<hr/><h2>Constructor &amp; Destructor Documentation</h2>
-<a class="anchor" id="a1d70da3ef18d24c5b3f0cc01888e093d"></a><!-- doxytag: member="RtMidiIn::RtMidiIn" ref="a1d70da3ef18d24c5b3f0cc01888e093d" args="(const std::string clientName=std::string(&quot;RtMidi Input Client&quot;), unsigned int queueSizeLimit=100)" -->
+<a class="anchor" id="aeeaeed8dae387dffc70e73e6e88b4d1a"></a><!-- doxytag: member="RtMidiIn::RtMidiIn" ref="aeeaeed8dae387dffc70e73e6e88b4d1a" args="(RtMidi::Api api=UNSPECIFIED, const std::string clientName=std::string(&quot;RtMidi Input Client&quot;), unsigned int queueSizeLimit=100)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">RtMidiIn::RtMidiIn </td>
<td>(</td>
+ <td class="paramtype"><a class="el" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406">RtMidi::Api</a>&nbsp;</td>
+ <td class="paramname"> <em>api</em> = <code>UNSPECIFIED</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
<td class="paramtype">const std::string&nbsp;</td>
<td class="paramname"> <em>clientName</em> = <code>std::string(&quot;RtMidi&nbsp;Input&nbsp;Client&quot;)</code>, </td>
</tr>
@@ -92,13 +97,14 @@ unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" hr
</div>
<div class="memdoc">
-<p>Default constructor that allows an optional client name and queue size. </p>
-<p>An exception will be thrown if a MIDI system initialization error occurs. The queue size defines the maximum number of messages that can be held in the MIDI queue (when not using a callback function). If the queue size limit is reached, incoming messages will be ignored. </p>
+<p>Default constructor that allows an optional api, client name and queue size. </p>
+<p>An exception will be thrown if a MIDI system initialization error occurs. The queue size defines the maximum number of messages that can be held in the MIDI queue (when not using a callback function). If the queue size limit is reached, incoming messages will be ignored.</p>
+<p>If no API argument is specified and multiple API support has been compiled, the default order of use is JACK, ALSA (Linux) and CORE, Jack (OS-X). </p>
</div>
</div>
<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a7e853661b1056083e07318d67c51f6fd"></a><!-- doxytag: member="RtMidiIn::openPort" ref="a7e853661b1056083e07318d67c51f6fd" args="(unsigned int portNumber=0, const std::string Portname=std::string(&quot;RtMidi Input&quot;))" -->
+<a class="anchor" id="a39df8f81a22f729a9904707dde487d2c"></a><!-- doxytag: member="RtMidiIn::openPort" ref="a39df8f81a22f729a9904707dde487d2c" args="(unsigned int portNumber=0, const std::string portName=std::string(&quot;RtMidi Input&quot;))" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
@@ -112,12 +118,12 @@ unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" hr
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::string&nbsp;</td>
- <td class="paramname"> <em>Portname</em> = <code>std::string(&quot;RtMidi&nbsp;Input&quot;)</code></td><td>&nbsp;</td>
+ <td class="paramname"> <em>portName</em> = <code>std::string(&nbsp;&quot;RtMidi&nbsp;Input&quot;&nbsp;)</code></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td><code> [virtual]</code></td>
+ <td></td><td></td><td><code> [inline, virtual]</code></td>
</tr>
</table>
</div>
@@ -138,9 +144,9 @@ unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" hr
<td class="memname">void RtMidiIn::openVirtualPort </td>
<td>(</td>
<td class="paramtype">const std::string&nbsp;</td>
- <td class="paramname"> <em>portName</em> = <code>std::string(&quot;RtMidi&nbsp;Input&quot;)</code></td>
+ <td class="paramname"> <em>portName</em> = <code>std::string(&nbsp;&quot;RtMidi&nbsp;Input&quot;&nbsp;)</code></td>
<td>&nbsp;)&nbsp;</td>
- <td><code> [virtual]</code></td>
+ <td><code> [inline, virtual]</code></td>
</tr>
</table>
</div>
@@ -172,7 +178,7 @@ unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" hr
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td></td>
+ <td></td><td></td><td><code> [inline]</code></td>
</tr>
</table>
</div>
@@ -190,9 +196,10 @@ unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" hr
<tr>
<td class="memname">void RtMidiIn::cancelCallback </td>
<td>(</td>
+ <td class="paramtype">void&nbsp;</td>
<td class="paramname"></td>
<td>&nbsp;)&nbsp;</td>
- <td></td>
+ <td><code> [inline]</code></td>
</tr>
</table>
</div>
@@ -213,7 +220,7 @@ unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" hr
<td class="paramtype">unsigned int&nbsp;</td>
<td class="paramname"> <em>portNumber</em> = <code>0</code></td>
<td>&nbsp;)&nbsp;</td>
- <td><code> [virtual]</code></td>
+ <td><code> [inline, virtual]</code></td>
</tr>
</table>
</div>
@@ -251,7 +258,7 @@ unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" hr
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td></td>
+ <td></td><td></td><td><code> [inline]</code></td>
</tr>
</table>
</div>
@@ -272,7 +279,7 @@ unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" hr
<td class="paramtype">std::vector&lt; unsigned char &gt; *&nbsp;</td>
<td class="paramname"> <em>message</em></td>
<td>&nbsp;)&nbsp;</td>
- <td></td>
+ <td><code> [inline]</code></td>
</tr>
</table>
</div>
@@ -290,7 +297,7 @@ unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" hr
<HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
- <td>&copy;2003-2011 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ <td>&copy;2003-2012 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/html/classRtMidiOut-members.html b/doc/html/classRtMidiOut-members.html
index 74aa3db..d5240a0 100644
--- a/doc/html/classRtMidiOut-members.html
+++ b/doc/html/classRtMidiOut-members.html
@@ -10,19 +10,30 @@
<!-- Generated by Doxygen 1.6.2 -->
<div class="contents">
<h1>RtMidiOut Member List</h1>This is the complete list of members for <a class="el" href="classRtMidiOut.html">RtMidiOut</a>, including all inherited members.<table>
- <tr class="memlist"><td><a class="el" href="classRtMidiOut.html#a3092e53a8aed2d3b163fcaa05fafd041">closePort</a>()</td><td><a class="el" href="classRtMidiOut.html">RtMidiOut</a></td><td><code> [virtual]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classRtMidiOut.html#ad6cddbcc7faa20a7be229f765ade0877">getPortCount</a>()</td><td><a class="el" href="classRtMidiOut.html">RtMidiOut</a></td><td><code> [virtual]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classRtMidiOut.html#acc4ae0ab71a49ae7629075d5a9cd837c">getPortName</a>(unsigned int portNumber=0)</td><td><a class="el" href="classRtMidiOut.html">RtMidiOut</a></td><td><code> [virtual]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classRtMidiOut.html#a1b280d67317cd473a8816aeb2fe6c186">openPort</a>(unsigned int portNumber=0, const std::string portName=std::string(&quot;RtMidi Output&quot;))</td><td><a class="el" href="classRtMidiOut.html">RtMidiOut</a></td><td><code> [virtual]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classRtMidiOut.html#a47068e1c076d91fd89587c0ccdeddc7a">openVirtualPort</a>(const std::string portName=std::string(&quot;RtMidi Output&quot;))</td><td><a class="el" href="classRtMidiOut.html">RtMidiOut</a></td><td><code> [virtual]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classRtMidiOut.html#a8ed1b492900f3410bf91ad53203b9db3">RtMidiOut</a>(const std::string clientName=std::string(&quot;RtMidi Output Client&quot;))</td><td><a class="el" href="classRtMidiOut.html">RtMidiOut</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classRtMidiOut.html#a0bd8972ef8ac4e8d37ccc4b5d51c2eb3">sendMessage</a>(std::vector&lt; unsigned char &gt; *message)</td><td><a class="el" href="classRtMidiOut.html">RtMidiOut</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classRtMidiOut.html#ab776c431bd84193febb2f78fb8c7e792">~RtMidiOut</a>()</td><td><a class="el" href="classRtMidiOut.html">RtMidiOut</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406">Api</a> enum name</td><td><a class="el" href="classRtMidi.html">RtMidi</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classRtMidiOut.html#a5a28d1ba9e002fd07a317d3a257d87e8">closePort</a>(void)</td><td><a class="el" href="classRtMidiOut.html">RtMidiOut</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classRtMidi.html#ae1a810e84c57b2eb4989056cb384a04c">error</a>(RtError::Type type, std::string errorString)</td><td><a class="el" href="classRtMidi.html">RtMidi</a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classRtMidi.html#a025fa339486c9a34b26ec707aa2944ce">getCompiledApi</a>(std::vector&lt; RtMidi::Api &gt; &amp;apis)</td><td><a class="el" href="classRtMidi.html">RtMidi</a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classRtMidiOut.html#a532b5712e305bd8afb65a3ad14138e0f">getCurrentApi</a>(void)</td><td><a class="el" href="classRtMidiOut.html">RtMidiOut</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classRtMidiOut.html#a0c4d662e1c398ddf35a2dbaf66f50976">getPortCount</a>(void)</td><td><a class="el" href="classRtMidiOut.html">RtMidiOut</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classRtMidiOut.html#acc4ae0ab71a49ae7629075d5a9cd837c">getPortName</a>(unsigned int portNumber=0)</td><td><a class="el" href="classRtMidiOut.html">RtMidiOut</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a20c691b24844d3ab5dbf882123235df2">LINUX_ALSA</a> enum value</td><td><a class="el" href="classRtMidi.html">RtMidi</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a3f41293f89467641484fbd54c4530908">MACOSX_CORE</a> enum value</td><td><a class="el" href="classRtMidi.html">RtMidi</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classRtMidiOut.html#a1b280d67317cd473a8816aeb2fe6c186">openPort</a>(unsigned int portNumber=0, const std::string portName=std::string(&quot;RtMidi Output&quot;))</td><td><a class="el" href="classRtMidiOut.html">RtMidiOut</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classRtMidiOut.html#a47068e1c076d91fd89587c0ccdeddc7a">openVirtualPort</a>(const std::string portName=std::string(&quot;RtMidi Output&quot;))</td><td><a class="el" href="classRtMidiOut.html">RtMidiOut</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a54dba406ab358492005ce2b966a2d959">RTMIDI_DUMMY</a> enum value</td><td><a class="el" href="classRtMidi.html">RtMidi</a></td><td></td></tr>
+ <tr class="memlist"><td><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><a class="el" href="classRtMidiOut.html">RtMidiOut</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classRtMidiOut.html#a0bd8972ef8ac4e8d37ccc4b5d51c2eb3">sendMessage</a>(std::vector&lt; unsigned char &gt; *message)</td><td><a class="el" href="classRtMidiOut.html">RtMidiOut</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a1f59daf3120f47c0ae3891773112ddfa">UNIX_JACK</a> enum value</td><td><a class="el" href="classRtMidi.html">RtMidi</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a4a4d9f7a38a082d6b0d5dd2b5de94ab9">UNSPECIFIED</a> enum value</td><td><a class="el" href="classRtMidi.html">RtMidi</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a246ae76adf088dd4d359bbac3d605756">WINDOWS_KS</a> enum value</td><td><a class="el" href="classRtMidi.html">RtMidi</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a647868cb4ed37f517bf185a7f41cb70f">WINDOWS_MM</a> enum value</td><td><a class="el" href="classRtMidi.html">RtMidi</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classRtMidiOut.html#afdc37ccd60d7a31b3970da7a1d423881">~RtMidiOut</a>(void)</td><td><a class="el" href="classRtMidiOut.html">RtMidiOut</a></td><td></td></tr>
</table></div>
<HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
- <td>&copy;2003-2011 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ <td>&copy;2003-2012 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/html/classRtMidiOut.html b/doc/html/classRtMidiOut.html
index 02b1dff..7087b66 100644
--- a/doc/html/classRtMidiOut.html
+++ b/doc/html/classRtMidiOut.html
@@ -28,20 +28,23 @@ Inheritance diagram for RtMidiOut:</div>
<p><a href="classRtMidiOut-members.html">List of all members.</a></p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRtMidiOut.html#a8ed1b492900f3410bf91ad53203b9db3">RtMidiOut</a> (const std::string clientName=std::string(&quot;RtMidi Output Client&quot;))</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Default constructor that allows an optional client name. <a href="#a8ed1b492900f3410bf91ad53203b9db3"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab776c431bd84193febb2f78fb8c7e792"></a><!-- doxytag: member="RtMidiOut::~RtMidiOut" ref="ab776c431bd84193febb2f78fb8c7e792" args="()" -->
-&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRtMidiOut.html#ab776c431bd84193febb2f78fb8c7e792">~RtMidiOut</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRtMidiOut.html#a2940966e36b5479fbbf82c07424318cc">RtMidiOut</a> (<a class="el" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406">RtMidi::Api</a> api=UNSPECIFIED, const std::string clientName=std::string(&quot;RtMidi Output Client&quot;))</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Default constructor that allows an optional client name. <a href="#a2940966e36b5479fbbf82c07424318cc"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afdc37ccd60d7a31b3970da7a1d423881"></a><!-- doxytag: member="RtMidiOut::~RtMidiOut" ref="afdc37ccd60d7a31b3970da7a1d423881" args="(void)" -->
+&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRtMidiOut.html#afdc37ccd60d7a31b3970da7a1d423881">~RtMidiOut</a> (void) throw ()</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The destructor closes any open MIDI connections. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a532b5712e305bd8afb65a3ad14138e0f"></a><!-- doxytag: member="RtMidiOut::getCurrentApi" ref="a532b5712e305bd8afb65a3ad14138e0f" args="(void)" -->
+<a class="el" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406">RtMidi::Api</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRtMidiOut.html#a532b5712e305bd8afb65a3ad14138e0f">getCurrentApi</a> (void) throw ()</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the MIDI API specifier for the current instance of <a class="el" href="classRtMidiOut.html" title="A realtime MIDI output class.">RtMidiOut</a>. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRtMidiOut.html#a1b280d67317cd473a8816aeb2fe6c186">openPort</a> (unsigned int portNumber=0, const std::string portName=std::string(&quot;RtMidi Output&quot;))</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Open a MIDI output connection. <a href="#a1b280d67317cd473a8816aeb2fe6c186"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3092e53a8aed2d3b163fcaa05fafd041"></a><!-- doxytag: member="RtMidiOut::closePort" ref="a3092e53a8aed2d3b163fcaa05fafd041" args="()" -->
-void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRtMidiOut.html#a3092e53a8aed2d3b163fcaa05fafd041">closePort</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5a28d1ba9e002fd07a317d3a257d87e8"></a><!-- doxytag: member="RtMidiOut::closePort" ref="a5a28d1ba9e002fd07a317d3a257d87e8" args="(void)" -->
+void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRtMidiOut.html#a5a28d1ba9e002fd07a317d3a257d87e8">closePort</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Close an open MIDI connection (if one exists). <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRtMidiOut.html#a47068e1c076d91fd89587c0ccdeddc7a">openVirtualPort</a> (const std::string portName=std::string(&quot;RtMidi Output&quot;))</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a virtual output port, with optional name, to allow software connections (OS X and ALSA only). <a href="#a47068e1c076d91fd89587c0ccdeddc7a"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad6cddbcc7faa20a7be229f765ade0877"></a><!-- doxytag: member="RtMidiOut::getPortCount" ref="ad6cddbcc7faa20a7be229f765ade0877" args="()" -->
-unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRtMidiOut.html#ad6cddbcc7faa20a7be229f765ade0877">getPortCount</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0c4d662e1c398ddf35a2dbaf66f50976"></a><!-- doxytag: member="RtMidiOut::getPortCount" ref="a0c4d662e1c398ddf35a2dbaf66f50976" args="(void)" -->
+unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRtMidiOut.html#a0c4d662e1c398ddf35a2dbaf66f50976">getPortCount</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return the number of available MIDI output ports. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">std::string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRtMidiOut.html#acc4ae0ab71a49ae7629075d5a9cd837c">getPortName</a> (unsigned int portNumber=0)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return a string identifier for the specified MIDI port type and number. <a href="#acc4ae0ab71a49ae7629075d5a9cd837c"></a><br/></td></tr>
@@ -50,27 +53,37 @@ unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" hr
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>A realtime MIDI output class. </p>
-<p>This class provides a common, platform-independent API for MIDI output. It allows one to probe available MIDI output ports, to connect to one such port, and to send MIDI bytes immediately over the connection. Create multiple instances of this class to connect to more than one MIDI device at the same time.</p>
-<p>by Gary P. Scavone, 2003-2008. </p>
+<p>This class provides a common, platform-independent API for MIDI output. It allows one to probe available MIDI output ports, to connect to one such port, and to send MIDI bytes immediately over the connection. Create multiple instances of this class to connect to more than one MIDI device at the same time. With the OS-X and Linux ALSA MIDI APIs, it is also possible to open a virtual port to which other MIDI software clients can connect.</p>
+<p>by Gary P. Scavone, 2003-2012. </p>
<hr/><h2>Constructor &amp; Destructor Documentation</h2>
-<a class="anchor" id="a8ed1b492900f3410bf91ad53203b9db3"></a><!-- doxytag: member="RtMidiOut::RtMidiOut" ref="a8ed1b492900f3410bf91ad53203b9db3" args="(const std::string clientName=std::string(&quot;RtMidi Output Client&quot;))" -->
+<a class="anchor" id="a2940966e36b5479fbbf82c07424318cc"></a><!-- doxytag: member="RtMidiOut::RtMidiOut" ref="a2940966e36b5479fbbf82c07424318cc" args="(RtMidi::Api api=UNSPECIFIED, const std::string clientName=std::string(&quot;RtMidi Output Client&quot;))" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">RtMidiOut::RtMidiOut </td>
<td>(</td>
+ <td class="paramtype"><a class="el" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406">RtMidi::Api</a>&nbsp;</td>
+ <td class="paramname"> <em>api</em> = <code>UNSPECIFIED</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
<td class="paramtype">const std::string&nbsp;</td>
- <td class="paramname"> <em>clientName</em> = <code>std::string(&quot;RtMidi&nbsp;Output&nbsp;Client&quot;)</code></td>
- <td>&nbsp;)&nbsp;</td>
+ <td class="paramname"> <em>clientName</em> = <code>std::string(&quot;RtMidi&nbsp;Output&nbsp;Client&quot;)</code></td><td>&nbsp;</td>
+ </tr>
+ <tr>
<td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Default constructor that allows an optional client name. </p>
-<p>An exception will be thrown if a MIDI system initialization error occurs. </p>
+<p>An exception will be thrown if a MIDI system initialization error occurs.</p>
+<p>If no API argument is specified and multiple API support has been compiled, the default order of use is JACK, ALSA (Linux) and CORE, Jack (OS-X). </p>
</div>
</div>
@@ -89,12 +102,12 @@ unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" hr
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::string&nbsp;</td>
- <td class="paramname"> <em>portName</em> = <code>std::string(&quot;RtMidi&nbsp;Output&quot;)</code></td><td>&nbsp;</td>
+ <td class="paramname"> <em>portName</em> = <code>std::string(&nbsp;&quot;RtMidi&nbsp;Output&quot;&nbsp;)</code></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td><code> [virtual]</code></td>
+ <td></td><td></td><td><code> [inline, virtual]</code></td>
</tr>
</table>
</div>
@@ -115,9 +128,9 @@ unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" hr
<td class="memname">void RtMidiOut::openVirtualPort </td>
<td>(</td>
<td class="paramtype">const std::string&nbsp;</td>
- <td class="paramname"> <em>portName</em> = <code>std::string(&quot;RtMidi&nbsp;Output&quot;)</code></td>
+ <td class="paramname"> <em>portName</em> = <code>std::string(&nbsp;&quot;RtMidi&nbsp;Output&quot;&nbsp;)</code></td>
<td>&nbsp;)&nbsp;</td>
- <td><code> [virtual]</code></td>
+ <td><code> [inline, virtual]</code></td>
</tr>
</table>
</div>
@@ -140,7 +153,7 @@ unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" hr
<td class="paramtype">unsigned int&nbsp;</td>
<td class="paramname"> <em>portNumber</em> = <code>0</code></td>
<td>&nbsp;)&nbsp;</td>
- <td><code> [virtual]</code></td>
+ <td><code> [inline, virtual]</code></td>
</tr>
</table>
</div>
@@ -163,7 +176,7 @@ unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" hr
<td class="paramtype">std::vector&lt; unsigned char &gt; *&nbsp;</td>
<td class="paramname"> <em>message</em></td>
<td>&nbsp;)&nbsp;</td>
- <td></td>
+ <td><code> [inline]</code></td>
</tr>
</table>
</div>
@@ -181,7 +194,7 @@ unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" hr
<HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
- <td>&copy;2003-2011 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ <td>&copy;2003-2012 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/html/classes.html b/doc/html/classes.html
index 0804176..2b7a01a 100644
--- a/doc/html/classes.html
+++ b/doc/html/classes.html
@@ -12,13 +12,13 @@
<h1>Class Index</h1><div class="qindex"><a class="qindex" href="#letter_M">M</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_R">R</a></div>
<table align="center" width="95%" border="0" cellspacing="0" cellpadding="0">
<tr><td><a name="letter_M"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;M&nbsp;&nbsp;</div></td></tr></table>
-</td><td><a class="el" href="structRtMidiIn_1_1MidiQueue.html">RtMidiIn::MidiQueue</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classRtError.html">RtError</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classRtMidiIn.html">RtMidiIn</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classRtMidiOut.html">RtMidiOut</a>&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structRtMidiIn_1_1MidiMessage.html">RtMidiIn::MidiMessage</a>&nbsp;&nbsp;&nbsp;</td><td><a name="letter_R"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;R&nbsp;&nbsp;</div></td></tr></table>
-</td><td><a class="el" href="classRtMidi.html">RtMidi</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structRtMidiIn_1_1RtMidiInData.html">RtMidiIn::RtMidiInData</a>&nbsp;&nbsp;&nbsp;</td></tr></table><div class="qindex"><a class="qindex" href="#letter_M">M</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_R">R</a></div>
+</td><td><a class="el" href="classMidiInWinKS.html">MidiInWinKS</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classMidiOutApi.html">MidiOutApi</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classMidiOutWinMM.html">MidiOutWinMM</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classRtMidi.html">RtMidi</a>&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="classMidiInAlsa.html">MidiInAlsa</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classMidiInWinMM.html">MidiInWinMM</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classMidiOutCore.html">MidiOutCore</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structMidiInApi_1_1MidiQueue.html">MidiInApi::MidiQueue</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classRtMidiIn.html">RtMidiIn</a>&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="classMidiInApi.html">MidiInApi</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structMidiInApi_1_1MidiMessage.html">MidiInApi::MidiMessage</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classMidiOutJack.html">MidiOutJack</a>&nbsp;&nbsp;&nbsp;</td><td><a name="letter_R"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;R&nbsp;&nbsp;</div></td></tr></table>
+</td><td><a class="el" href="structMidiInApi_1_1RtMidiInData.html">MidiInApi::RtMidiInData</a>&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="classMidiInCore.html">MidiInCore</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classMidiOutAlsa.html">MidiOutAlsa</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classMidiOutWinKS.html">MidiOutWinKS</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classRtError.html">RtError</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classRtMidiOut.html">RtMidiOut</a>&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="classMidiInJack.html">MidiInJack</a>&nbsp;&nbsp;&nbsp;</td></tr></table><div class="qindex"><a class="qindex" href="#letter_M">M</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_R">R</a></div>
</div>
<HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
- <td>&copy;2003-2011 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ <td>&copy;2003-2012 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/html/files.html b/doc/html/files.html
index 01eda9f..f3dc73d 100644
--- a/doc/html/files.html
+++ b/doc/html/files.html
@@ -11,13 +11,13 @@
<div class="contents">
<h1>File List</h1>Here is a list of all documented files with brief descriptions:<table>
<tr><td class="indexkey"><b>RtError.h</b> <a href="RtError_8h_source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>RtMidi.h</b> <a href="RtMidi_8h_source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="RtMidi_8h.html">RtMidi.h</a> <a href="RtMidi_8h_source.html">[code]</a></td><td class="indexvalue"></td></tr>
</table>
</div>
<HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
- <td>&copy;2003-2011 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ <td>&copy;2003-2012 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/html/functions.html b/doc/html/functions.html
index ada21ba..f9157e3 100644
--- a/doc/html/functions.html
+++ b/doc/html/functions.html
@@ -19,10 +19,13 @@
</div>
<div class="tabs">
<ul>
+ <li><a href="#index_a"><span>a</span></a></li>
<li><a href="#index_c"><span>c</span></a></li>
<li><a href="#index_d"><span>d</span></a></li>
+ <li><a href="#index_e"><span>e</span></a></li>
<li><a href="#index_g"><span>g</span></a></li>
<li><a href="#index_i"><span>i</span></a></li>
+ <li><a href="#index_l"><span>l</span></a></li>
<li><a href="#index_m"><span>m</span></a></li>
<li><a href="#index_n"><span>n</span></a></li>
<li><a href="#index_o"><span>o</span></a></li>
@@ -38,12 +41,19 @@
<div class="contents">
Here is a list of all documented class members with links to the class documentation for each member:
+<h3><a class="anchor" id="index_a">- a -</a></h3><ul>
+<li>Api
+: <a class="el" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406">RtMidi</a>
+</li>
+</ul>
+
+
<h3><a class="anchor" id="index_c">- c -</a></h3><ul>
<li>cancelCallback()
: <a class="el" href="classRtMidiIn.html#ade23832a66c1ed56965c26325602543e">RtMidiIn</a>
</li>
<li>closePort()
-: <a class="el" href="classRtMidiOut.html#a3092e53a8aed2d3b163fcaa05fafd041">RtMidiOut</a>
+: <a class="el" href="classRtMidiOut.html#a5a28d1ba9e002fd07a317d3a257d87e8">RtMidiOut</a>
, <a class="el" href="classRtMidiIn.html#a55bacf0d228fd8e3be6a79d12fd1dc39">RtMidiIn</a>
, <a class="el" href="classRtMidi.html#a36125c4fa16550345b57f4a4927f5b4a">RtMidi</a>
</li>
@@ -60,20 +70,34 @@ Here is a list of all documented class members with links to the class documenta
</ul>
+<h3><a class="anchor" id="index_e">- e -</a></h3><ul>
+<li>error()
+: <a class="el" href="classRtMidi.html#ae1a810e84c57b2eb4989056cb384a04c">RtMidi</a>
+</li>
+</ul>
+
+
<h3><a class="anchor" id="index_g">- g -</a></h3><ul>
+<li>getCompiledApi()
+: <a class="el" href="classRtMidi.html#a025fa339486c9a34b26ec707aa2944ce">RtMidi</a>
+</li>
+<li>getCurrentApi()
+: <a class="el" href="classRtMidiIn.html#a6475a11eeb0c8bf22157c3887b100164">RtMidiIn</a>
+, <a class="el" href="classRtMidiOut.html#a532b5712e305bd8afb65a3ad14138e0f">RtMidiOut</a>
+</li>
<li>getMessage()
: <a class="el" href="classRtMidiIn.html#a1ba10ecd276b30a8579c7d60a9c890eb">RtMidiIn</a>
, <a class="el" href="classRtError.html#afd067ba6b46edd37f989cad02cd70b50">RtError</a>
</li>
<li>getPortCount()
-: <a class="el" href="classRtMidiIn.html#a62b1b38aa8e5f11cd66f03d59228f4e4">RtMidiIn</a>
-, <a class="el" href="classRtMidiOut.html#ad6cddbcc7faa20a7be229f765ade0877">RtMidiOut</a>
+: <a class="el" href="classRtMidiOut.html#a0c4d662e1c398ddf35a2dbaf66f50976">RtMidiOut</a>
+, <a class="el" href="classRtMidiIn.html#a62b1b38aa8e5f11cd66f03d59228f4e4">RtMidiIn</a>
, <a class="el" href="classRtMidi.html#a9a49ef73a1e6007444019a7ae095e195">RtMidi</a>
</li>
<li>getPortName()
: <a class="el" href="classRtMidiIn.html#af2961fff09fa01a3d5bc0f0c5a042aaf">RtMidiIn</a>
-, <a class="el" href="classRtMidiOut.html#acc4ae0ab71a49ae7629075d5a9cd837c">RtMidiOut</a>
, <a class="el" href="classRtMidi.html#a799e2b9f4df39b298518f2b394db3391">RtMidi</a>
+, <a class="el" href="classRtMidiOut.html#acc4ae0ab71a49ae7629075d5a9cd837c">RtMidiOut</a>
</li>
<li>getType()
: <a class="el" href="classRtError.html#a3e316dc9b9b41fe2f64cabf34beb4fe7">RtError</a>
@@ -97,7 +121,17 @@ Here is a list of all documented class members with links to the class documenta
</ul>
+<h3><a class="anchor" id="index_l">- l -</a></h3><ul>
+<li>LINUX_ALSA
+: <a class="el" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a20c691b24844d3ab5dbf882123235df2">RtMidi</a>
+</li>
+</ul>
+
+
<h3><a class="anchor" id="index_m">- m -</a></h3><ul>
+<li>MACOSX_CORE
+: <a class="el" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a3f41293f89467641484fbd54c4530908">RtMidi</a>
+</li>
<li>MEMORY_ERROR
: <a class="el" href="classRtError.html#ab04667aae01bffc354a9ac6bda6903acab4f813e5a36905c89d4081a59497432e">RtError</a>
</li>
@@ -114,7 +148,7 @@ Here is a list of all documented class members with links to the class documenta
<h3><a class="anchor" id="index_o">- o -</a></h3><ul>
<li>openPort()
: <a class="el" href="classRtMidi.html#ad9e30a89638f93193cb40edebaa536f5">RtMidi</a>
-, <a class="el" href="classRtMidiIn.html#a7e853661b1056083e07318d67c51f6fd">RtMidiIn</a>
+, <a class="el" href="classRtMidiIn.html#a39df8f81a22f729a9904707dde487d2c">RtMidiIn</a>
, <a class="el" href="classRtMidiOut.html#a1b280d67317cd473a8816aeb2fe6c186">RtMidiOut</a>
</li>
<li>openVirtualPort()
@@ -136,14 +170,17 @@ Here is a list of all documented class members with links to the class documenta
<li>RtError()
: <a class="el" href="classRtError.html#aa479a305ccbe56be0fd9137b9b405a37">RtError</a>
</li>
+<li>RTMIDI_DUMMY
+: <a class="el" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a54dba406ab358492005ce2b966a2d959">RtMidi</a>
+</li>
<li>RtMidiCallback
: <a class="el" href="classRtMidiIn.html#a297d2eb3c3420b437970a6fc59d89cbf">RtMidiIn</a>
</li>
<li>RtMidiIn()
-: <a class="el" href="classRtMidiIn.html#a1d70da3ef18d24c5b3f0cc01888e093d">RtMidiIn</a>
+: <a class="el" href="classRtMidiIn.html#aeeaeed8dae387dffc70e73e6e88b4d1a">RtMidiIn</a>
</li>
<li>RtMidiOut()
-: <a class="el" href="classRtMidiOut.html#a8ed1b492900f3410bf91ad53203b9db3">RtMidiOut</a>
+: <a class="el" href="classRtMidiOut.html#a2940966e36b5479fbbf82c07424318cc">RtMidiOut</a>
</li>
</ul>
@@ -172,8 +209,12 @@ Here is a list of all documented class members with links to the class documenta
<h3><a class="anchor" id="index_u">- u -</a></h3><ul>
+<li>UNIX_JACK
+: <a class="el" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a1f59daf3120f47c0ae3891773112ddfa">RtMidi</a>
+</li>
<li>UNSPECIFIED
: <a class="el" href="classRtError.html#ab04667aae01bffc354a9ac6bda6903aca444efd3ccf774b2ba9f9bde70ec71cd6">RtError</a>
+, <a class="el" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a4a4d9f7a38a082d6b0d5dd2b5de94ab9">RtMidi</a>
</li>
</ul>
@@ -185,6 +226,12 @@ Here is a list of all documented class members with links to the class documenta
<li>what()
: <a class="el" href="classRtError.html#aeb843b7a7785d66061c61ebfc29e7e9d">RtError</a>
</li>
+<li>WINDOWS_KS
+: <a class="el" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a246ae76adf088dd4d359bbac3d605756">RtMidi</a>
+</li>
+<li>WINDOWS_MM
+: <a class="el" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a647868cb4ed37f517bf185a7f41cb70f">RtMidi</a>
+</li>
</ul>
@@ -193,17 +240,17 @@ Here is a list of all documented class members with links to the class documenta
: <a class="el" href="classRtError.html#a6793e03386e7e69ffafb65a296dfa48c">RtError</a>
</li>
<li>~RtMidiIn()
-: <a class="el" href="classRtMidiIn.html#af865d88c154b6fdadc640da5dc278d40">RtMidiIn</a>
+: <a class="el" href="classRtMidiIn.html#ae79f4da8a1b2e7efecdd1047670b27dc">RtMidiIn</a>
</li>
<li>~RtMidiOut()
-: <a class="el" href="classRtMidiOut.html#ab776c431bd84193febb2f78fb8c7e792">RtMidiOut</a>
+: <a class="el" href="classRtMidiOut.html#afdc37ccd60d7a31b3970da7a1d423881">RtMidiOut</a>
</li>
</ul>
</div>
<HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
- <td>&copy;2003-2011 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ <td>&copy;2003-2012 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/html/functions_enum.html b/doc/html/functions_enum.html
index bd8fdf2..270d906 100644
--- a/doc/html/functions_enum.html
+++ b/doc/html/functions_enum.html
@@ -19,6 +19,9 @@
</div>
<div class="contents">
&nbsp;<ul>
+<li>Api
+: <a class="el" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406">RtMidi</a>
+</li>
<li>Type
: <a class="el" href="classRtError.html#ab04667aae01bffc354a9ac6bda6903ac">RtError</a>
</li>
@@ -27,7 +30,7 @@
<HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
- <td>&copy;2003-2011 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ <td>&copy;2003-2012 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/html/functions_eval.html b/doc/html/functions_eval.html
index 75d363e..40a5661 100644
--- a/doc/html/functions_eval.html
+++ b/doc/html/functions_eval.html
@@ -34,30 +34,49 @@
<li>INVALID_USE
: <a class="el" href="classRtError.html#ab04667aae01bffc354a9ac6bda6903aca8e65f51a3fbdc1a4a1552b3260df36bc">RtError</a>
</li>
+<li>LINUX_ALSA
+: <a class="el" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a20c691b24844d3ab5dbf882123235df2">RtMidi</a>
+</li>
+<li>MACOSX_CORE
+: <a class="el" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a3f41293f89467641484fbd54c4530908">RtMidi</a>
+</li>
<li>MEMORY_ERROR
: <a class="el" href="classRtError.html#ab04667aae01bffc354a9ac6bda6903acab4f813e5a36905c89d4081a59497432e">RtError</a>
</li>
<li>NO_DEVICES_FOUND
: <a class="el" href="classRtError.html#ab04667aae01bffc354a9ac6bda6903acaf267eb2d710f33d649ba840eeab6ff82">RtError</a>
</li>
+<li>RTMIDI_DUMMY
+: <a class="el" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a54dba406ab358492005ce2b966a2d959">RtMidi</a>
+</li>
<li>SYSTEM_ERROR
: <a class="el" href="classRtError.html#ab04667aae01bffc354a9ac6bda6903aca8947d0a2e2a84ecf3646271844e06a6b">RtError</a>
</li>
<li>THREAD_ERROR
: <a class="el" href="classRtError.html#ab04667aae01bffc354a9ac6bda6903acaeb6282f991e2d93ab294a4272fc3f6c6">RtError</a>
</li>
+<li>UNIX_JACK
+: <a class="el" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a1f59daf3120f47c0ae3891773112ddfa">RtMidi</a>
+</li>
<li>UNSPECIFIED
: <a class="el" href="classRtError.html#ab04667aae01bffc354a9ac6bda6903aca444efd3ccf774b2ba9f9bde70ec71cd6">RtError</a>
+, <a class="el" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a4a4d9f7a38a082d6b0d5dd2b5de94ab9">RtMidi</a>
</li>
<li>WARNING
: <a class="el" href="classRtError.html#ab04667aae01bffc354a9ac6bda6903aca3a1603c24a56cbdaf5f8ae4ddcb86398">RtError</a>
</li>
+<li>WINDOWS_KS
+: <a class="el" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a246ae76adf088dd4d359bbac3d605756">RtMidi</a>
+</li>
+<li>WINDOWS_MM
+: <a class="el" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a647868cb4ed37f517bf185a7f41cb70f">RtMidi</a>
+</li>
</ul>
</div>
<HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
- <td>&copy;2003-2011 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ <td>&copy;2003-2012 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/html/functions_func.html b/doc/html/functions_func.html
index 91e777e..8d0c48e 100644
--- a/doc/html/functions_func.html
+++ b/doc/html/functions_func.html
@@ -17,39 +17,81 @@
<li><a href="functions_eval.html"><span>Enumerator</span></a></li>
</ul>
</div>
+ <div class="tabs">
+ <ul>
+ <li><a href="#index_c"><span>c</span></a></li>
+ <li><a href="#index_e"><span>e</span></a></li>
+ <li><a href="#index_g"><span>g</span></a></li>
+ <li><a href="#index_i"><span>i</span></a></li>
+ <li><a href="#index_o"><span>o</span></a></li>
+ <li><a href="#index_p"><span>p</span></a></li>
+ <li><a href="#index_r"><span>r</span></a></li>
+ <li><a href="#index_s"><span>s</span></a></li>
+ <li><a href="#index_w"><span>w</span></a></li>
+ <li><a href="#index_~"><span>~</span></a></li>
+ </ul>
+ </div>
<div class="contents">
-&nbsp;<ul>
+&nbsp;
+
+<h3><a class="anchor" id="index_c">- c -</a></h3><ul>
<li>cancelCallback()
: <a class="el" href="classRtMidiIn.html#ade23832a66c1ed56965c26325602543e">RtMidiIn</a>
</li>
<li>closePort()
-: <a class="el" href="classRtMidiOut.html#a3092e53a8aed2d3b163fcaa05fafd041">RtMidiOut</a>
+: <a class="el" href="classRtMidiOut.html#a5a28d1ba9e002fd07a317d3a257d87e8">RtMidiOut</a>
, <a class="el" href="classRtMidiIn.html#a55bacf0d228fd8e3be6a79d12fd1dc39">RtMidiIn</a>
, <a class="el" href="classRtMidi.html#a36125c4fa16550345b57f4a4927f5b4a">RtMidi</a>
</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_e">- e -</a></h3><ul>
+<li>error()
+: <a class="el" href="classRtMidi.html#ae1a810e84c57b2eb4989056cb384a04c">RtMidi</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_g">- g -</a></h3><ul>
+<li>getCompiledApi()
+: <a class="el" href="classRtMidi.html#a025fa339486c9a34b26ec707aa2944ce">RtMidi</a>
+</li>
+<li>getCurrentApi()
+: <a class="el" href="classRtMidiIn.html#a6475a11eeb0c8bf22157c3887b100164">RtMidiIn</a>
+, <a class="el" href="classRtMidiOut.html#a532b5712e305bd8afb65a3ad14138e0f">RtMidiOut</a>
+</li>
<li>getMessage()
: <a class="el" href="classRtMidiIn.html#a1ba10ecd276b30a8579c7d60a9c890eb">RtMidiIn</a>
, <a class="el" href="classRtError.html#afd067ba6b46edd37f989cad02cd70b50">RtError</a>
</li>
<li>getPortCount()
-: <a class="el" href="classRtMidiIn.html#a62b1b38aa8e5f11cd66f03d59228f4e4">RtMidiIn</a>
-, <a class="el" href="classRtMidiOut.html#ad6cddbcc7faa20a7be229f765ade0877">RtMidiOut</a>
+: <a class="el" href="classRtMidiOut.html#a0c4d662e1c398ddf35a2dbaf66f50976">RtMidiOut</a>
+, <a class="el" href="classRtMidiIn.html#a62b1b38aa8e5f11cd66f03d59228f4e4">RtMidiIn</a>
, <a class="el" href="classRtMidi.html#a9a49ef73a1e6007444019a7ae095e195">RtMidi</a>
</li>
<li>getPortName()
: <a class="el" href="classRtMidiIn.html#af2961fff09fa01a3d5bc0f0c5a042aaf">RtMidiIn</a>
-, <a class="el" href="classRtMidiOut.html#acc4ae0ab71a49ae7629075d5a9cd837c">RtMidiOut</a>
, <a class="el" href="classRtMidi.html#a799e2b9f4df39b298518f2b394db3391">RtMidi</a>
+, <a class="el" href="classRtMidiOut.html#acc4ae0ab71a49ae7629075d5a9cd837c">RtMidiOut</a>
</li>
<li>getType()
: <a class="el" href="classRtError.html#a3e316dc9b9b41fe2f64cabf34beb4fe7">RtError</a>
</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_i">- i -</a></h3><ul>
<li>ignoreTypes()
: <a class="el" href="classRtMidiIn.html#af9507125aaa42276ccc01df576fc3533">RtMidiIn</a>
</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_o">- o -</a></h3><ul>
<li>openPort()
: <a class="el" href="classRtMidi.html#ad9e30a89638f93193cb40edebaa536f5">RtMidi</a>
-, <a class="el" href="classRtMidiIn.html#a7e853661b1056083e07318d67c51f6fd">RtMidiIn</a>
+, <a class="el" href="classRtMidiIn.html#a39df8f81a22f729a9904707dde487d2c">RtMidiIn</a>
, <a class="el" href="classRtMidiOut.html#a1b280d67317cd473a8816aeb2fe6c186">RtMidiOut</a>
</li>
<li>openVirtualPort()
@@ -57,42 +99,62 @@
, <a class="el" href="classRtMidiIn.html#a245261b3f12ce727faed18fcfeef18c2">RtMidiIn</a>
, <a class="el" href="classRtMidiOut.html#a47068e1c076d91fd89587c0ccdeddc7a">RtMidiOut</a>
</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_p">- p -</a></h3><ul>
<li>printMessage()
: <a class="el" href="classRtError.html#a251dcdac396c998c91706dd2dd3b8bfc">RtError</a>
</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_r">- r -</a></h3><ul>
<li>RtError()
: <a class="el" href="classRtError.html#aa479a305ccbe56be0fd9137b9b405a37">RtError</a>
</li>
<li>RtMidiIn()
-: <a class="el" href="classRtMidiIn.html#a1d70da3ef18d24c5b3f0cc01888e093d">RtMidiIn</a>
+: <a class="el" href="classRtMidiIn.html#aeeaeed8dae387dffc70e73e6e88b4d1a">RtMidiIn</a>
</li>
<li>RtMidiOut()
-: <a class="el" href="classRtMidiOut.html#a8ed1b492900f3410bf91ad53203b9db3">RtMidiOut</a>
+: <a class="el" href="classRtMidiOut.html#a2940966e36b5479fbbf82c07424318cc">RtMidiOut</a>
</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_s">- s -</a></h3><ul>
<li>sendMessage()
: <a class="el" href="classRtMidiOut.html#a0bd8972ef8ac4e8d37ccc4b5d51c2eb3">RtMidiOut</a>
</li>
<li>setCallback()
: <a class="el" href="classRtMidiIn.html#a7590563461c7467608a4b3806406b32d">RtMidiIn</a>
</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_w">- w -</a></h3><ul>
<li>what()
: <a class="el" href="classRtError.html#aeb843b7a7785d66061c61ebfc29e7e9d">RtError</a>
</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_0x7e">- ~ -</a></h3><ul>
<li>~RtError()
: <a class="el" href="classRtError.html#a6793e03386e7e69ffafb65a296dfa48c">RtError</a>
</li>
<li>~RtMidiIn()
-: <a class="el" href="classRtMidiIn.html#af865d88c154b6fdadc640da5dc278d40">RtMidiIn</a>
+: <a class="el" href="classRtMidiIn.html#ae79f4da8a1b2e7efecdd1047670b27dc">RtMidiIn</a>
</li>
<li>~RtMidiOut()
-: <a class="el" href="classRtMidiOut.html#ab776c431bd84193febb2f78fb8c7e792">RtMidiOut</a>
+: <a class="el" href="classRtMidiOut.html#afdc37ccd60d7a31b3970da7a1d423881">RtMidiOut</a>
</li>
</ul>
</div>
<HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
- <td>&copy;2003-2011 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ <td>&copy;2003-2012 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/html/functions_type.html b/doc/html/functions_type.html
index c2fe1ee..589be8f 100644
--- a/doc/html/functions_type.html
+++ b/doc/html/functions_type.html
@@ -27,7 +27,7 @@
<HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
- <td>&copy;2003-2011 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ <td>&copy;2003-2012 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/html/hierarchy.html b/doc/html/hierarchy.html
index 6aaad3c..31f32e4 100644
--- a/doc/html/hierarchy.html
+++ b/doc/html/hierarchy.html
@@ -10,21 +10,37 @@
<!-- Generated by Doxygen 1.6.2 -->
<div class="contents">
<h1>Class Hierarchy</h1>This inheritance list is sorted roughly, but not completely, alphabetically:<ul>
-<li><a class="el" href="structRtMidiIn_1_1MidiMessage.html">RtMidiIn::MidiMessage</a></li>
-<li><a class="el" href="structRtMidiIn_1_1MidiQueue.html">RtMidiIn::MidiQueue</a></li>
+<li><a class="el" href="classMidiInApi.html">MidiInApi</a><ul>
+<li><a class="el" href="classMidiInAlsa.html">MidiInAlsa</a></li>
+<li><a class="el" href="classMidiInCore.html">MidiInCore</a></li>
+<li><a class="el" href="classMidiInJack.html">MidiInJack</a></li>
+<li><a class="el" href="classMidiInWinKS.html">MidiInWinKS</a></li>
+<li><a class="el" href="classMidiInWinMM.html">MidiInWinMM</a></li>
+</ul>
+</li>
+<li><a class="el" href="structMidiInApi_1_1MidiMessage.html">MidiInApi::MidiMessage</a></li>
+<li><a class="el" href="classMidiOutApi.html">MidiOutApi</a><ul>
+<li><a class="el" href="classMidiOutAlsa.html">MidiOutAlsa</a></li>
+<li><a class="el" href="classMidiOutCore.html">MidiOutCore</a></li>
+<li><a class="el" href="classMidiOutJack.html">MidiOutJack</a></li>
+<li><a class="el" href="classMidiOutWinKS.html">MidiOutWinKS</a></li>
+<li><a class="el" href="classMidiOutWinMM.html">MidiOutWinMM</a></li>
+</ul>
+</li>
+<li><a class="el" href="structMidiInApi_1_1MidiQueue.html">MidiInApi::MidiQueue</a></li>
<li><a class="el" href="classRtError.html">RtError</a></li>
<li><a class="el" href="classRtMidi.html">RtMidi</a><ul>
<li><a class="el" href="classRtMidiIn.html">RtMidiIn</a></li>
<li><a class="el" href="classRtMidiOut.html">RtMidiOut</a></li>
</ul>
</li>
-<li><a class="el" href="structRtMidiIn_1_1RtMidiInData.html">RtMidiIn::RtMidiInData</a></li>
+<li><a class="el" href="structMidiInApi_1_1RtMidiInData.html">MidiInApi::RtMidiInData</a></li>
</ul>
</div>
<HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
- <td>&copy;2003-2011 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ <td>&copy;2003-2012 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/html/index.html b/doc/html/index.html
index 7e433c1..4728ef1 100644
--- a/doc/html/index.html
+++ b/doc/html/index.html
@@ -9,9 +9,9 @@
<HR>
<!-- Generated by Doxygen 1.6.2 -->
<div class="contents">
-<h1>The <a class="el" href="classRtMidi.html" title="An abstract base class for realtime MIDI input/output.">RtMidi</a> Tutorial </h1><h3 class="version">1.0.15 </h3><center><a class="el" href="index.html#intro">Introduction</a> &nbsp;&nbsp; <a class="el" href="index.html#download">Download</a> &nbsp;&nbsp; <a class="el" href="index.html#start">Getting Started</a> &nbsp;&nbsp; <a class="el" href="index.html#error">Error Handling</a> &nbsp;&nbsp; <a class="el" href="index.html#probing">Probing Ports</a> &nbsp;&nbsp; <a class="el" href="index.html#output">MIDI Output</a> &nbsp;&nbsp; <a class="el" href="index.html#input">MIDI Input</a> &nbsp;&nbsp; <a class="el" href="index.html#virtual">Virtual Ports</a> &nbsp;&nbsp; <a class="el" href="index.html#compiling">Compiling</a> &nbsp;&nbsp; <a class="el" href="index.html#debug">Debugging</a> &nbsp;&nbsp; <a class="el" href="index.html#apinotes">API Notes</a> &nbsp;&nbsp; <a class="el" href="index.html#acknowledge">Acknowledgements</a> &nbsp;&nbsp; <a class="el" href="index.html#license">License</a></center><h2><a class="anchor" id="intro">
+<h1>The <a class="el" href="classRtMidi.html" title="An abstract base class for realtime MIDI input/output.">RtMidi</a> Tutorial </h1><h3 class="version">2.0.0 </h3><center><a class="el" href="index.html#intro">Introduction</a> &nbsp;&nbsp; <a class="el" href="index.html#download">Download</a> &nbsp;&nbsp; <a class="el" href="index.html#start">Getting Started</a> &nbsp;&nbsp; <a class="el" href="index.html#error">Error Handling</a> &nbsp;&nbsp; <a class="el" href="index.html#probing">Probing Ports</a> &nbsp;&nbsp; <a class="el" href="index.html#output">MIDI Output</a> &nbsp;&nbsp; <a class="el" href="index.html#input">MIDI Input</a> &nbsp;&nbsp; <a class="el" href="index.html#virtual">Virtual Ports</a> &nbsp;&nbsp; <a class="el" href="index.html#compiling">Compiling</a> &nbsp;&nbsp; <a class="el" href="index.html#debug">Debugging</a> &nbsp;&nbsp; <a class="el" href="index.html#multi">Using Simultaneous Multiple APIs</a> &nbsp;&nbsp; <a class="el" href="index.html#apinotes">API Notes</a> &nbsp;&nbsp; <a class="el" href="index.html#acknowledge">Acknowledgements</a> &nbsp;&nbsp; <a class="el" href="index.html#license">License</a></center><h2><a class="anchor" id="intro">
Introduction</a></h2>
-<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> and <a class="el" href="classRtMidiOut.html" title="A realtime MIDI output class.">RtMidiOut</a>) that provides a common API (Application Programming Interface) for realtime MIDI input/output across Linux (ALSA &amp; Jack), Macintosh OS X, Windows (Multimedia Library), and SGI 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>
+<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 &amp; Kernel Streaming) 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>
@@ -22,14 +22,18 @@ only two header files and one source file for easy inclusion in programming proj
<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>
+<h2><a class="anchor" id="whatsnew">
+What's New (Version 2.0)</a></h2>
+<p>No incompatable API changes were made in version 2.0, however, support for multiple compiled APIs (where available) was added (see <a class="el" href="index.html#multi">Using Simultaneous Multiple APIs</a>). Other changes include: 1. Added Windows Kernel Streaming support (thanks to Sebastien Alaiwan), though not tested in Visual Studio (and timestamping is not implemented); and 2. Support for the IRIX (SGI) operating system was discontinued.</p>
<h2><a class="anchor" id="download">
Download</a></h2>
-<p>Latest Release (11 August 2011): <a href="http://www.music.mcgill.ca/~gary/rtmidi/release/rtmidi-1.0.15.tar.gz">Version 1.0.15</a></p>
+<p>Latest Release (18 June 2012): <a href="http://www.music.mcgill.ca/~gary/rtmidi/release/rtmidi-2.0.0.tar.gz">Version 2.0.0</a></p>
<h2><a class="anchor" id="start">
Getting Started</a></h2>
<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="classRtError.html" title="Exception handling class for RtAudio &amp; RtMidi.">RtError</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>
-<div class="fragment"><pre class="fragment"><span class="preprocessor">#include &quot;RtMidi.h&quot;</span>
+<div class="fragment"><pre class="fragment"><span class="preprocessor">#include &quot;<a class="code" href="RtMidi_8h.html">RtMidi.h</a>&quot;</span>
<span class="keywordtype">int</span> main()
{
@@ -58,7 +62,7 @@ Probing Ports</a></h2>
<span class="preprocessor">#include &lt;iostream&gt;</span>
<span class="preprocessor">#include &lt;cstdlib&gt;</span>
-<span class="preprocessor">#include &quot;RtMidi.h&quot;</span>
+<span class="preprocessor">#include &quot;<a class="code" href="RtMidi_8h.html">RtMidi.h</a>&quot;</span>
<span class="keywordtype">int</span> main()
{
@@ -99,7 +103,7 @@ Probing Ports</a></h2>
}
<span class="comment">// Check outputs.</span>
- nPorts = midiout-&gt;<a class="code" href="classRtMidiOut.html#ad6cddbcc7faa20a7be229f765ade0877" title="Return the number of available MIDI output ports.">getPortCount</a>();
+ nPorts = midiout-&gt;<a class="code" href="classRtMidiOut.html#a0c4d662e1c398ddf35a2dbaf66f50976" title="Return the number of available MIDI output ports.">getPortCount</a>();
std::cout &lt;&lt; <span class="stringliteral">&quot;\nThere are &quot;</span> &lt;&lt; nPorts &lt;&lt; <span class="stringliteral">&quot; MIDI output ports available.\n&quot;</span>;
<span class="keywordflow">for</span> ( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i=0; i&lt;nPorts; i++ ) {
<span class="keywordflow">try</span> {
@@ -128,7 +132,7 @@ MIDI Output</a></h2>
<span class="preprocessor">#include &lt;iostream&gt;</span>
<span class="preprocessor">#include &lt;cstdlib&gt;</span>
-<span class="preprocessor">#include &quot;RtMidi.h&quot;</span>
+<span class="preprocessor">#include &quot;<a class="code" href="RtMidi_8h.html">RtMidi.h</a>&quot;</span>
<span class="keywordtype">int</span> main()
{
@@ -136,7 +140,7 @@ MIDI Output</a></h2>
std::vector&lt;unsigned char&gt; message;
<span class="comment">// Check available ports.</span>
- <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nPorts = midiout-&gt;<a class="code" href="classRtMidiOut.html#ad6cddbcc7faa20a7be229f765ade0877" title="Return the number of available MIDI output ports.">getPortCount</a>();
+ <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nPorts = midiout-&gt;<a class="code" href="classRtMidiOut.html#a0c4d662e1c398ddf35a2dbaf66f50976" title="Return the number of available MIDI output ports.">getPortCount</a>();
<span class="keywordflow">if</span> ( nPorts == 0 ) {
std::cout &lt;&lt; <span class="stringliteral">&quot;No ports available!\n&quot;</span>;
<span class="keywordflow">goto</span> cleanup;
@@ -191,7 +195,7 @@ Queued MIDI Input</a></h3>
<span class="preprocessor">#include &lt;iostream&gt;</span>
<span class="preprocessor">#include &lt;cstdlib&gt;</span>
<span class="preprocessor">#include &lt;signal.h&gt;</span>
-<span class="preprocessor">#include &quot;RtMidi.h&quot;</span>
+<span class="preprocessor">#include &quot;<a class="code" href="RtMidi_8h.html">RtMidi.h</a>&quot;</span>
<span class="keywordtype">bool</span> done;
<span class="keyword">static</span> <span class="keywordtype">void</span> finish(<span class="keywordtype">int</span> ignore){ done = <span class="keyword">true</span>; }
@@ -209,7 +213,7 @@ Queued MIDI Input</a></h3>
std::cout &lt;&lt; <span class="stringliteral">&quot;No ports available!\n&quot;</span>;
<span class="keywordflow">goto</span> cleanup;
}
- midiin-&gt;<a class="code" href="classRtMidiIn.html#a7e853661b1056083e07318d67c51f6fd" title="Open a MIDI input connection.">openPort</a>( 0 );
+ midiin-&gt;<a class="code" href="classRtMidiIn.html#a39df8f81a22f729a9904707dde487d2c" title="Open a MIDI input connection.">openPort</a>( 0 );
<span class="comment">// Don&#39;t ignore sysex, timing, or active sensing messages.</span>
midiin-&gt;<a class="code" href="classRtMidiIn.html#af9507125aaa42276ccc01df576fc3533" title="Specify whether certain MIDI message types should be queued or ignored during input...">ignoreTypes</a>( <span class="keyword">false</span>, <span class="keyword">false</span>, <span class="keyword">false</span> );
@@ -246,7 +250,7 @@ MIDI Input with User Callback</a></h3>
<span class="preprocessor">#include &lt;iostream&gt;</span>
<span class="preprocessor">#include &lt;cstdlib&gt;</span>
-<span class="preprocessor">#include &quot;RtMidi.h&quot;</span>
+<span class="preprocessor">#include &quot;<a class="code" href="RtMidi_8h.html">RtMidi.h</a>&quot;</span>
<span class="keywordtype">void</span> mycallback( <span class="keywordtype">double</span> deltatime, std::vector&lt; unsigned char &gt; *message, <span class="keywordtype">void</span> *userData )
{
@@ -268,7 +272,7 @@ MIDI Input with User Callback</a></h3>
<span class="keywordflow">goto</span> cleanup;
}
- midiin-&gt;<a class="code" href="classRtMidiIn.html#a7e853661b1056083e07318d67c51f6fd" title="Open a MIDI input connection.">openPort</a>( 0 );
+ midiin-&gt;<a class="code" href="classRtMidiIn.html#a39df8f81a22f729a9904707dde487d2c" title="Open a MIDI input connection.">openPort</a>( 0 );
<span class="comment">// Set our callback function. This should be done immediately after</span>
<span class="comment">// opening the port to avoid having incoming messages written to the</span>
@@ -300,30 +304,32 @@ Compiling</a></h2>
<tr>
<td>Linux </td><td>ALSA Sequencer </td><td>__LINUX_ALSASEQ__ </td><td><code>asound, pthread</code> </td><td><code>g++ -Wall -D__LINUX_ALSASEQ__ -o midiprobe midiprobe.cpp RtMidi.cpp -lasound -lpthread</code> </td></tr>
<tr>
-<td>Linux </td><td>Jack MIDI </td><td>__LINUX_JACK__ </td><td><code>jack</code> </td><td><code>g++ -Wall -D__LINUX_JACK__ -o midiprobe midiprobe.cpp RtMidi.cpp -ljack</code> </td></tr>
+<td>Linux or Mac </td><td>Jack MIDI </td><td>__UNIX_JACK__ </td><td><code>jack</code> </td><td><code>g++ -Wall -D__UNIX_JACK__ -o midiprobe midiprobe.cpp RtMidi.cpp -ljack</code> </td></tr>
<tr>
<td>Macintosh OS X </td><td>CoreMidi </td><td>__MACOSX_CORE__ </td><td><code>CoreMidi, CoreAudio, CoreFoundation</code> </td><td><code>g++ -Wall -D__MACOSX_CORE__ -o midiprobe midiprobe.cpp RtMidi.cpp -framework CoreMidi -framework CoreAudio -framework CoreFoundation</code> </td></tr>
<tr>
-<td>Irix </td><td>MD </td><td>__IRIX_MD__ </td><td><code>md, pthread</code> </td><td><code>CC -Wall -D__IRIX_MD__ -o midiprobe midiprobe.cpp RtMidi.cpp -laudio -lpthread</code> </td></tr>
-<tr>
<td>Windows </td><td>Multimedia Library </td><td>__WINDOWS_MM__ </td><td><code>winmm.lib, multithreaded</code> </td><td><em>compiler specific</em> </td></tr>
+<tr>
+<td>Windows </td><td>Kernel Streaming </td><td>__WINDOWS_KS__ </td><td><code>ks.h, ksmedia.h, setupapi.lib, ksuser.lib, multithreaded</code> </td><td><em>compiler specific</em> </td></tr>
</table>
-<p>The example compiler statements above could be used to compile the <code>midiprobe.cpp</code> example file, assuming that <code>midiprobe.cpp</code>, <code><a class="el" href="RtMidi_8h_source.html">RtMidi.h</a></code>, <code><a class="el" href="RtError_8h_source.html">RtError.h</a></code>, and <code>RtMidi.cpp</code> all exist in the same directory.</p>
+<p>The example compiler statements above could be used to compile the <code>midiprobe.cpp</code> example file, assuming that <code>midiprobe.cpp</code>, <code><a class="el" href="RtMidi_8h.html">RtMidi.h</a></code>, <code><a class="el" href="RtError_8h_source.html">RtError.h</a></code>, and <code>RtMidi.cpp</code> all exist in the same directory.</p>
<h2><a class="anchor" id="debug">
Debugging</a></h2>
-<p>If you are having problems getting <a class="el" href="classRtMidi.html" title="An abstract base class for realtime MIDI input/output.">RtMidi</a> to run on your system, try passing the preprocessor definition <code>__RTMIDI_DEBUG__</code> to the compiler (or define it in <a class="el" href="RtMidi_8h_source.html">RtMidi.h</a>). A variety of warning messages will be displayed that may help in determining the problem. Also try using the programs included in the <code>test</code> directory. The program <code>midiprobe</code> displays the queried capabilities of all MIDI ports found.</p>
+<p>If you are having problems getting <a class="el" href="classRtMidi.html" title="An abstract base class for realtime MIDI input/output.">RtMidi</a> to run on your system, try passing the preprocessor definition <code>__RTMIDI_DEBUG__</code> to the compiler (or define it in <a class="el" href="RtMidi_8h.html">RtMidi.h</a>). A variety of warning messages will be displayed that may help in determining the problem. Also try using the programs included in the <code>test</code> directory. The program <code>midiprobe</code> displays the queried capabilities of all MIDI ports found.</p>
+<h2><a class="anchor" id="multi">
+Using Simultaneous Multiple APIs</a></h2>
+<p>Support for each MIDI API is encapsulated in specific <a class="el" href="classMidiInApi.html">MidiInApi</a> or <a class="el" href="classMidiOutApi.html">MidiOutApi</a> subclasses, making it possible to compile and instantiate multiple API-specific subclasses on a given operating system. For example, one can compile both the CoreMIDI and Jack support on the OS-X operating system by providing the appropriate preprocessor definitions for each. In a run-time situation, one might first attempt to determine whether any Jack ports are available. This can be done by specifying the api argument <a class="el" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a1f59daf3120f47c0ae3891773112ddfa">RtMidi::UNIX_JACK</a> when attempting to create an instance of <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>. If no available ports are found, then an instance of <a class="el" href="classRtMidi.html" title="An abstract base class for realtime MIDI input/output.">RtMidi</a> with the api argument <a class="el" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a3f41293f89467641484fbd54c4530908">RtMidi::MACOSX_CORE</a> can be created. Alternately, if no api argument is specified, <a class="el" href="classRtMidi.html" title="An abstract base class for realtime MIDI input/output.">RtMidi</a> will first look for CoreMIDI ports and if none are found, then Jack ports (in linux, the search order is ALSA and then Jack; in windows, the search order is WinMM and then WinKS). In theory, it should also be possible to have separate instances of <a class="el" href="classRtMidi.html" title="An abstract base class for realtime MIDI input/output.">RtMidi</a> open at the same time with different underlying API support, though this has not been tested.</p>
+<p>The static function <a class="el" href="classRtMidi.html#a025fa339486c9a34b26ec707aa2944ce" title="A static function to determine the available compiled MIDI APIs.">RtMidi::getCompiledApi()</a> is provided to determine the available compiled API support. The function RtMidi::getCurrentApi() indicates the API selected for a given <a class="el" href="classRtMidi.html" title="An abstract base class for realtime MIDI input/output.">RtMidi</a> instance.</p>
<h2><a class="anchor" id="apinotes">
API Notes</a></h2>
<p><a class="el" href="classRtMidi.html" title="An abstract base class for realtime MIDI input/output.">RtMidi</a> is designed to provide a common API across the various supported operating systems and audio libraries. Despite that, some issues should be mentioned with regard to each.</p>
<h3><a class="anchor" id="linux">
Linux:</a></h3>
-<p><a class="el" href="classRtMidi.html" title="An abstract base class for realtime MIDI input/output.">RtMidi</a> for Linux was developed using the Fedora distribution. A decision was made to not include support for the OSS API because the OSS API provides such limited functionality and because <a href="http://www.alsa-project.org/">ALSA</a> support is now incorporated in the Linux kernel. <a class="el" href="classRtMidi.html" title="An abstract base class for realtime MIDI input/output.">RtMidi</a> uses the ALSA sequencer API, which allows for virtual software input and output ports.</p>
+<p><a class="el" href="classRtMidi.html" title="An abstract base class for realtime MIDI input/output.">RtMidi</a> for Linux was developed using the Fedora distribution. Two different MIDI APIs are supported on Linux platforms: <a href="http://www.alsa-project.org/">ALSA</a> and <a href="http://jackit.sourceforge.net/">Jack</a>. A decision was made to not include support for the OSS API because the OSS API provides such limited functionality and because <a href="http://www.alsa-project.org/">ALSA</a> support is now incorporated in the Linux kernel. The ALSA sequencer and Jack APIs allows for virtual software input and output ports.</p>
<h3><a class="anchor" id="macosx">
Macintosh OS X (CoreAudio):</a></h3>
<p>The Apple CoreMidi API allows for the establishment of virtual input and output ports to which other software applications can connect.</p>
-<h3><a class="anchor" id="irix">
-Irix (SGI):</a></h3>
-<p>The Irix version of <a class="el" href="classRtMidi.html" title="An abstract base class for realtime MIDI input/output.">RtMidi</a> was written and tested on an SGI Indy running Irix version 6.5.4 and the MD audio library.</p>
+<p>The <a class="el" href="classRtMidi.html" title="An abstract base class for realtime MIDI input/output.">RtMidi</a> Jack support can be compiled on Macintosh OS-X systems, as well as in Linux.</p>
<h3><a class="anchor" id="windowsds">
Windows (Multimedia Library):</a></h3>
<p>The <code>configure</code> script provides support for the MinGW compiler.</p>
@@ -335,6 +341,8 @@ Acknowledgements</a></h2>
<p>Many thanks to the following people for providing 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>
@@ -345,10 +353,14 @@ 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>
@@ -360,20 +372,22 @@ Alexander Svetalkin (Jack MIDI) </li>
Casey Tucker (OS-X driver information, sysex sending) </li>
<li>
Bastiaan Verreijt (Windows sysex multi-buffer code) </li>
+<li>
+Dan Wilcox </li>
</ul>
<h2><a class="anchor" id="license">
License</a></h2>
<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<br/>
- Copyright (c) 2003-2011 Gary P. Scavone</p>
+ Copyright (c) 2003-2012 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 requested to send the modifications to the original developer so that they can be incorporated into the canonical version.</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>
<p>THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. </p>
</div>
<HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
- <td>&copy;2003-2011 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ <td>&copy;2003-2012 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/html/structMidiInApi_1_1MidiMessage-members.html b/doc/html/structMidiInApi_1_1MidiMessage-members.html
new file mode 100644
index 0000000..d1dc4fa
--- /dev/null
+++ b/doc/html/structMidiInApi_1_1MidiMessage-members.html
@@ -0,0 +1,22 @@
+<HTML>
+<HEAD>
+<TITLE>The RtMidi Tutorial</TITLE>
+<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
+</HEAD>
+<BODY BGCOLOR="#FFFFFF">
+<CENTER>
+<a class="qindex" href="index.html">Tutorial</a> &nbsp; <a class="qindex" href="annotated.html">Class/Enum List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </CENTER>
+<HR>
+<!-- Generated by Doxygen 1.6.2 -->
+<div class="contents">
+<h1>MidiInApi::MidiMessage Member List</h1>This is the complete list of members for <a class="el" href="structMidiInApi_1_1MidiMessage.html">MidiInApi::MidiMessage</a>, including all inherited members.<table>
+</table></div>
+<HR>
+
+<table><tr><td><img src="../images/mcgill.gif" width=165></td>
+ <td>&copy;2003-2012 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
+</table>
+
+</BODY>
+</HTML>
diff --git a/doc/html/structMidiInApi_1_1MidiMessage.html b/doc/html/structMidiInApi_1_1MidiMessage.html
new file mode 100644
index 0000000..58e952c
--- /dev/null
+++ b/doc/html/structMidiInApi_1_1MidiMessage.html
@@ -0,0 +1,30 @@
+<HTML>
+<HEAD>
+<TITLE>The RtMidi Tutorial</TITLE>
+<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
+</HEAD>
+<BODY BGCOLOR="#FFFFFF">
+<CENTER>
+<a class="qindex" href="index.html">Tutorial</a> &nbsp; <a class="qindex" href="annotated.html">Class/Enum List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </CENTER>
+<HR>
+<!-- Generated by Doxygen 1.6.2 -->
+ <div class="navpath"><a class="el" href="classMidiInApi.html">MidiInApi</a>::<a class="el" href="structMidiInApi_1_1MidiMessage.html">MidiMessage</a>
+ </div>
+<div class="contents">
+<h1>MidiInApi::MidiMessage Struct Reference</h1><!-- doxytag: class="MidiInApi::MidiMessage" -->
+<p><a href="structMidiInApi_1_1MidiMessage-members.html">List of all members.</a></p>
+<table border="0" cellpadding="0" cellspacing="0">
+</table>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li><a class="el" href="RtMidi_8h_source.html">RtMidi.h</a></li>
+</ul>
+</div>
+<HR>
+
+<table><tr><td><img src="../images/mcgill.gif" width=165></td>
+ <td>&copy;2003-2012 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
+</table>
+
+</BODY>
+</HTML>
diff --git a/doc/html/structMidiInApi_1_1MidiQueue-members.html b/doc/html/structMidiInApi_1_1MidiQueue-members.html
new file mode 100644
index 0000000..9dee502
--- /dev/null
+++ b/doc/html/structMidiInApi_1_1MidiQueue-members.html
@@ -0,0 +1,22 @@
+<HTML>
+<HEAD>
+<TITLE>The RtMidi Tutorial</TITLE>
+<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
+</HEAD>
+<BODY BGCOLOR="#FFFFFF">
+<CENTER>
+<a class="qindex" href="index.html">Tutorial</a> &nbsp; <a class="qindex" href="annotated.html">Class/Enum List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </CENTER>
+<HR>
+<!-- Generated by Doxygen 1.6.2 -->
+<div class="contents">
+<h1>MidiInApi::MidiQueue Member List</h1>This is the complete list of members for <a class="el" href="structMidiInApi_1_1MidiQueue.html">MidiInApi::MidiQueue</a>, including all inherited members.<table>
+</table></div>
+<HR>
+
+<table><tr><td><img src="../images/mcgill.gif" width=165></td>
+ <td>&copy;2003-2012 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
+</table>
+
+</BODY>
+</HTML>
diff --git a/doc/html/structMidiInApi_1_1MidiQueue.html b/doc/html/structMidiInApi_1_1MidiQueue.html
new file mode 100644
index 0000000..5910ac1
--- /dev/null
+++ b/doc/html/structMidiInApi_1_1MidiQueue.html
@@ -0,0 +1,30 @@
+<HTML>
+<HEAD>
+<TITLE>The RtMidi Tutorial</TITLE>
+<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
+</HEAD>
+<BODY BGCOLOR="#FFFFFF">
+<CENTER>
+<a class="qindex" href="index.html">Tutorial</a> &nbsp; <a class="qindex" href="annotated.html">Class/Enum List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </CENTER>
+<HR>
+<!-- Generated by Doxygen 1.6.2 -->
+ <div class="navpath"><a class="el" href="classMidiInApi.html">MidiInApi</a>::<a class="el" href="structMidiInApi_1_1MidiQueue.html">MidiQueue</a>
+ </div>
+<div class="contents">
+<h1>MidiInApi::MidiQueue Struct Reference</h1><!-- doxytag: class="MidiInApi::MidiQueue" -->
+<p><a href="structMidiInApi_1_1MidiQueue-members.html">List of all members.</a></p>
+<table border="0" cellpadding="0" cellspacing="0">
+</table>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li><a class="el" href="RtMidi_8h_source.html">RtMidi.h</a></li>
+</ul>
+</div>
+<HR>
+
+<table><tr><td><img src="../images/mcgill.gif" width=165></td>
+ <td>&copy;2003-2012 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
+</table>
+
+</BODY>
+</HTML>
diff --git a/doc/html/structMidiInApi_1_1RtMidiInData-members.html b/doc/html/structMidiInApi_1_1RtMidiInData-members.html
new file mode 100644
index 0000000..1615462
--- /dev/null
+++ b/doc/html/structMidiInApi_1_1RtMidiInData-members.html
@@ -0,0 +1,22 @@
+<HTML>
+<HEAD>
+<TITLE>The RtMidi Tutorial</TITLE>
+<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
+</HEAD>
+<BODY BGCOLOR="#FFFFFF">
+<CENTER>
+<a class="qindex" href="index.html">Tutorial</a> &nbsp; <a class="qindex" href="annotated.html">Class/Enum List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </CENTER>
+<HR>
+<!-- Generated by Doxygen 1.6.2 -->
+<div class="contents">
+<h1>MidiInApi::RtMidiInData Member List</h1>This is the complete list of members for <a class="el" href="structMidiInApi_1_1RtMidiInData.html">MidiInApi::RtMidiInData</a>, including all inherited members.<table>
+</table></div>
+<HR>
+
+<table><tr><td><img src="../images/mcgill.gif" width=165></td>
+ <td>&copy;2003-2012 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
+</table>
+
+</BODY>
+</HTML>
diff --git a/doc/html/structMidiInApi_1_1RtMidiInData.html b/doc/html/structMidiInApi_1_1RtMidiInData.html
new file mode 100644
index 0000000..67db75b
--- /dev/null
+++ b/doc/html/structMidiInApi_1_1RtMidiInData.html
@@ -0,0 +1,30 @@
+<HTML>
+<HEAD>
+<TITLE>The RtMidi Tutorial</TITLE>
+<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
+</HEAD>
+<BODY BGCOLOR="#FFFFFF">
+<CENTER>
+<a class="qindex" href="index.html">Tutorial</a> &nbsp; <a class="qindex" href="annotated.html">Class/Enum List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </CENTER>
+<HR>
+<!-- Generated by Doxygen 1.6.2 -->
+ <div class="navpath"><a class="el" href="classMidiInApi.html">MidiInApi</a>::<a class="el" href="structMidiInApi_1_1RtMidiInData.html">RtMidiInData</a>
+ </div>
+<div class="contents">
+<h1>MidiInApi::RtMidiInData Struct Reference</h1><!-- doxytag: class="MidiInApi::RtMidiInData" -->
+<p><a href="structMidiInApi_1_1RtMidiInData-members.html">List of all members.</a></p>
+<table border="0" cellpadding="0" cellspacing="0">
+</table>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li><a class="el" href="RtMidi_8h_source.html">RtMidi.h</a></li>
+</ul>
+</div>
+<HR>
+
+<table><tr><td><img src="../images/mcgill.gif" width=165></td>
+ <td>&copy;2003-2012 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
+</table>
+
+</BODY>
+</HTML>