summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorLuo Jinghua <sunmoon1997@gmail.com>2008-11-15 22:58:30 +0800
committerLuo Jinghua <sunmoon1997@gmail.com>2008-11-15 22:58:30 +0800
commit3d72bf3401f3bcec0bea96135d6a37941340d693 (patch)
treee7c81ae2fc20c260edde9542c2963ae56e1d1cd2 /examples
Initial commit
Diffstat (limited to 'examples')
-rw-r--r--examples/Makefile.am1
-rw-r--r--examples/Makefile.in496
-rw-r--r--examples/simple/Makefile.am6
-rw-r--r--examples/simple/Makefile.in449
-rw-r--r--examples/simple/simple.cpp68
-rwxr-xr-xexamples/wxPlayer/CDDeviceDialog.cpp90
-rwxr-xr-xexamples/wxPlayer/CDDeviceDialog.h31
-rwxr-xr-xexamples/wxPlayer/CDDeviceFrame.cpp177
-rwxr-xr-xexamples/wxPlayer/CDDeviceFrame.h35
-rwxr-xr-xexamples/wxPlayer/Commands.h62
-rwxr-xr-xexamples/wxPlayer/DeviceFrame.cpp362
-rwxr-xr-xexamples/wxPlayer/DeviceFrame.h37
-rwxr-xr-xexamples/wxPlayer/EditLoopPointsDialog.cpp116
-rwxr-xr-xexamples/wxPlayer/EditLoopPointsDialog.h37
-rwxr-xr-xexamples/wxPlayer/MIDIDeviceDialog.cpp44
-rwxr-xr-xexamples/wxPlayer/MIDIDeviceDialog.h31
-rwxr-xr-xexamples/wxPlayer/MIDIDeviceFrame.cpp100
-rwxr-xr-xexamples/wxPlayer/MIDIDeviceFrame.h28
-rwxr-xr-xexamples/wxPlayer/MIDIStreamFrame.cpp104
-rwxr-xr-xexamples/wxPlayer/MIDIStreamFrame.h41
-rw-r--r--examples/wxPlayer/Makefile.am43
-rw-r--r--examples/wxPlayer/Makefile.in711
-rwxr-xr-xexamples/wxPlayer/NewDeviceDialog.cpp79
-rwxr-xr-xexamples/wxPlayer/NewDeviceDialog.h35
-rwxr-xr-xexamples/wxPlayer/SoundEffectFrame.cpp87
-rwxr-xr-xexamples/wxPlayer/SoundEffectFrame.h32
-rwxr-xr-xexamples/wxPlayer/StreamFrame.cpp223
-rwxr-xr-xexamples/wxPlayer/StreamFrame.h60
-rwxr-xr-xexamples/wxPlayer/TagsDialog.cpp64
-rwxr-xr-xexamples/wxPlayer/wx.h24
-rw-r--r--examples/wxPlayer/wxPlayer.cpp89
-rwxr-xr-xexamples/wxPlayer/wxPlayer.h24
32 files changed, 3786 insertions, 0 deletions
diff --git a/examples/Makefile.am b/examples/Makefile.am
new file mode 100644
index 0000000..a1ce4d2
--- /dev/null
+++ b/examples/Makefile.am
@@ -0,0 +1 @@
+SUBDIRS = simple wxPlayer
diff --git a/examples/Makefile.in b/examples/Makefile.in
new file mode 100644
index 0000000..d0cf6fe
--- /dev/null
+++ b/examples/Makefile.in
@@ -0,0 +1,496 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+LIBOBJDIR =
+subdir = examples
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+ install-exec-recursive install-info-recursive \
+ install-recursive installcheck-recursive installdirs-recursive \
+ pdf-recursive ps-recursive uninstall-info-recursive \
+ uninstall-recursive
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+EXTRA_LIBS = @EXTRA_LIBS@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+HAVE_AL_FALSE = @HAVE_AL_FALSE@
+HAVE_AL_TRUE = @HAVE_AL_TRUE@
+HAVE_DSOUND_FALSE = @HAVE_DSOUND_FALSE@
+HAVE_DSOUND_TRUE = @HAVE_DSOUND_TRUE@
+HAVE_DUMB_FALSE = @HAVE_DUMB_FALSE@
+HAVE_DUMB_TRUE = @HAVE_DUMB_TRUE@
+HAVE_FLAC_FALSE = @HAVE_FLAC_FALSE@
+HAVE_FLAC_TRUE = @HAVE_FLAC_TRUE@
+HAVE_LIBCDAUDIO_FALSE = @HAVE_LIBCDAUDIO_FALSE@
+HAVE_LIBCDAUDIO_TRUE = @HAVE_LIBCDAUDIO_TRUE@
+HAVE_OGG_FALSE = @HAVE_OGG_FALSE@
+HAVE_OGG_TRUE = @HAVE_OGG_TRUE@
+HAVE_OSS_FALSE = @HAVE_OSS_FALSE@
+HAVE_OSS_TRUE = @HAVE_OSS_TRUE@
+HAVE_SPEEX_FALSE = @HAVE_SPEEX_FALSE@
+HAVE_SPEEX_TRUE = @HAVE_SPEEX_TRUE@
+HAVE_WINMM_FALSE = @HAVE_WINMM_FALSE@
+HAVE_WINMM_TRUE = @HAVE_WINMM_TRUE@
+HAVE_WXWINDOWS_FALSE = @HAVE_WXWINDOWS_FALSE@
+HAVE_WXWINDOWS_TRUE = @HAVE_WXWINDOWS_TRUE@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+WORDS_BIGENDIAN = @WORDS_BIGENDIAN@
+WX_CONFIG = @WX_CONFIG@
+WX_CPPFLAGS = @WX_CPPFLAGS@
+WX_LIBS = @WX_LIBS@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+SUBDIRS = simple wxPlayer
+all: all-recursive
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign examples/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --foreign examples/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool
+uninstall-info-am:
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+# (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+mostlyclean-recursive clean-recursive distclean-recursive \
+maintainer-clean-recursive:
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ rev=''; for subdir in $$list; do \
+ if test "$$subdir" = "."; then :; else \
+ rev="$$subdir $$rev"; \
+ fi; \
+ done; \
+ rev="$$rev ."; \
+ target=`echo $@ | sed s/-recursive//`; \
+ for subdir in $$rev; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+ done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+ list='$(DISTFILES)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+ list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test -d "$(distdir)/$$subdir" \
+ || $(mkdir_p) "$(distdir)/$$subdir" \
+ || exit 1; \
+ distdir=`$(am__cd) $(distdir) && pwd`; \
+ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
+ (cd $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$top_distdir" \
+ distdir="$$distdir/$$subdir" \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-recursive
+all-am: Makefile
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-libtool \
+ distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-exec-am:
+
+install-info: install-info-recursive
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-info-am
+
+uninstall-info: uninstall-info-recursive
+
+.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \
+ clean clean-generic clean-libtool clean-recursive ctags \
+ ctags-recursive distclean distclean-generic distclean-libtool \
+ distclean-recursive distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-exec install-exec-am install-info \
+ install-info-am install-man install-strip installcheck \
+ installcheck-am installdirs installdirs-am maintainer-clean \
+ maintainer-clean-generic maintainer-clean-recursive \
+ mostlyclean mostlyclean-generic mostlyclean-libtool \
+ mostlyclean-recursive pdf pdf-am ps ps-am tags tags-recursive \
+ uninstall uninstall-am uninstall-info-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/examples/simple/Makefile.am b/examples/simple/Makefile.am
new file mode 100644
index 0000000..0da77ab
--- /dev/null
+++ b/examples/simple/Makefile.am
@@ -0,0 +1,6 @@
+INCLUDES = -I $(top_srcdir)/src
+
+noinst_PROGRAMS = simple
+
+simple_SOURCES = simple.cpp
+simple_LDADD = $(top_builddir)/src/libaudiere.la
diff --git a/examples/simple/Makefile.in b/examples/simple/Makefile.in
new file mode 100644
index 0000000..c47cd53
--- /dev/null
+++ b/examples/simple/Makefile.in
@@ -0,0 +1,449 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+LIBOBJDIR =
+noinst_PROGRAMS = simple$(EXEEXT)
+subdir = examples/simple
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_CLEAN_FILES =
+PROGRAMS = $(noinst_PROGRAMS)
+am_simple_OBJECTS = simple.$(OBJEXT)
+simple_OBJECTS = $(am_simple_OBJECTS)
+simple_DEPENDENCIES = $(top_builddir)/src/libaudiere.la
+DEFAULT_INCLUDES = -I. -I$(srcdir)
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+LTCXXCOMPILE = $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CXXFLAGS) $(CXXFLAGS)
+CXXLD = $(CXX)
+CXXLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXXLD) $(AM_CXXFLAGS) \
+ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = $(simple_SOURCES)
+DIST_SOURCES = $(simple_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+EXTRA_LIBS = @EXTRA_LIBS@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+HAVE_AL_FALSE = @HAVE_AL_FALSE@
+HAVE_AL_TRUE = @HAVE_AL_TRUE@
+HAVE_DSOUND_FALSE = @HAVE_DSOUND_FALSE@
+HAVE_DSOUND_TRUE = @HAVE_DSOUND_TRUE@
+HAVE_DUMB_FALSE = @HAVE_DUMB_FALSE@
+HAVE_DUMB_TRUE = @HAVE_DUMB_TRUE@
+HAVE_FLAC_FALSE = @HAVE_FLAC_FALSE@
+HAVE_FLAC_TRUE = @HAVE_FLAC_TRUE@
+HAVE_LIBCDAUDIO_FALSE = @HAVE_LIBCDAUDIO_FALSE@
+HAVE_LIBCDAUDIO_TRUE = @HAVE_LIBCDAUDIO_TRUE@
+HAVE_OGG_FALSE = @HAVE_OGG_FALSE@
+HAVE_OGG_TRUE = @HAVE_OGG_TRUE@
+HAVE_OSS_FALSE = @HAVE_OSS_FALSE@
+HAVE_OSS_TRUE = @HAVE_OSS_TRUE@
+HAVE_SPEEX_FALSE = @HAVE_SPEEX_FALSE@
+HAVE_SPEEX_TRUE = @HAVE_SPEEX_TRUE@
+HAVE_WINMM_FALSE = @HAVE_WINMM_FALSE@
+HAVE_WINMM_TRUE = @HAVE_WINMM_TRUE@
+HAVE_WXWINDOWS_FALSE = @HAVE_WXWINDOWS_FALSE@
+HAVE_WXWINDOWS_TRUE = @HAVE_WXWINDOWS_TRUE@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+WORDS_BIGENDIAN = @WORDS_BIGENDIAN@
+WX_CONFIG = @WX_CONFIG@
+WX_CPPFLAGS = @WX_CPPFLAGS@
+WX_LIBS = @WX_LIBS@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+INCLUDES = -I $(top_srcdir)/src
+simple_SOURCES = simple.cpp
+simple_LDADD = $(top_builddir)/src/libaudiere.la
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .cpp .lo .o .obj
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign examples/simple/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --foreign examples/simple/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+clean-noinstPROGRAMS:
+ @list='$(noinst_PROGRAMS)'; for p in $$list; do \
+ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f $$p $$f"; \
+ rm -f $$p $$f ; \
+ done
+simple$(EXEEXT): $(simple_OBJECTS) $(simple_DEPENDENCIES)
+ @rm -f simple$(EXEEXT)
+ $(CXXLINK) $(simple_LDFLAGS) $(simple_OBJECTS) $(simple_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/simple.Po@am__quote@
+
+.cpp.o:
+@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $<
+
+.cpp.obj:
+@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.cpp.lo:
+@am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool
+uninstall-info-am:
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+ list='$(DISTFILES)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(PROGRAMS)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \
+ mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-libtool distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ clean-libtool clean-noinstPROGRAMS ctags distclean \
+ distclean-compile distclean-generic distclean-libtool \
+ distclean-tags distdir dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am install-exec \
+ install-exec-am install-info install-info-am install-man \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+ pdf pdf-am ps ps-am tags uninstall uninstall-am \
+ uninstall-info-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/examples/simple/simple.cpp b/examples/simple/simple.cpp
new file mode 100644
index 0000000..7ccfaec
--- /dev/null
+++ b/examples/simple/simple.cpp
@@ -0,0 +1,68 @@
+#include <iostream>
+#include <memory>
+#include <stdio.h>
+#include <stdlib.h>
+#include <audiere.h>
+using namespace std;
+using namespace audiere;
+
+
+#ifdef WIN32
+
+#include <windows.h>
+inline void sleepSecond() {
+ Sleep(1000);
+}
+
+#else // assume POSIX
+
+#include <unistd.h>
+inline void sleepSecond() {
+ sleep(1);
+}
+
+#endif
+
+
+int main(int argc, const char** argv) {
+
+ if (argc != 2 && argc != 3) {
+ cerr << "usage: simple <filename> [<device>]" << endl;
+ return EXIT_FAILURE;
+ }
+
+ cerr << "initializing..." << endl;
+
+ const char* device_name = "";
+ if (argc == 3) {
+ device_name = argv[2];
+ }
+
+ AudioDevicePtr device = OpenDevice(device_name);
+ if (!device) {
+ cerr << "OpenDevice() failed" << endl;
+ return EXIT_FAILURE;
+ }
+
+ cerr << "opened device" << endl;
+
+ OutputStreamPtr sound = OpenSound(device, argv[1]);
+ if (!sound) {
+ cerr << "OpenSound() failed" << endl;
+ return EXIT_FAILURE;
+ }
+
+ cerr << "opened sound" << endl;
+
+ sound->play();
+
+ cerr << "started playback" << endl;
+ while (sound->isPlaying()) {
+ sleepSecond();
+ if (sound->isSeekable()) {
+ cerr << "position: " << sound->getPosition() << endl;
+ }
+ }
+
+ return EXIT_SUCCESS;
+}
diff --git a/examples/wxPlayer/CDDeviceDialog.cpp b/examples/wxPlayer/CDDeviceDialog.cpp
new file mode 100755
index 0000000..79854fc
--- /dev/null
+++ b/examples/wxPlayer/CDDeviceDialog.cpp
@@ -0,0 +1,90 @@
+#ifdef _MSC_VER
+#pragma warning(disable : 4786)
+#endif
+
+#include <audiere.h>
+#include "CDDeviceDialog.h"
+
+
+BEGIN_EVENT_TABLE(CDDeviceDialog, wxDialog)
+ EVT_BUTTON(-1, CDDeviceDialog::OnButton)
+END_EVENT_TABLE()
+
+
+CDDeviceDialog::CDDeviceDialog(wxWindow* parent)
+: wxDialog(parent, -1, wxString(wxT("New CD Device")))
+{
+ audiere::EnumerateCDDevices(m_devices);
+
+ m_device = 0;
+ m_explicit_device = 0;
+ // create vertical sizer
+ wxBoxSizer* sizer = new wxBoxSizer(wxVERTICAL);
+
+ if (m_devices.size()) {
+ m_device = new wxChoice(this, -1, wxDefaultPosition, wxSize(300, 22));
+ for (size_t i = 0; i < m_devices.size(); ++i) {
+ m_device->Append(CStr2wxString(m_devices[i].c_str()));
+ }
+ m_device->SetSelection(0);
+ sizer->Add(
+ m_device,
+ 0, wxALIGN_CENTER | wxALL, 5);
+ } else {
+ sizer->Add(
+ new wxStaticText(this, -1, wxT("No devices found. Please enter one.")),
+ 0, wxALIGN_CENTER | wxALL, 5);
+ m_explicit_device = new wxTextCtrl(this, -1);
+ sizer->Add(
+ m_explicit_device,
+ 0, wxALIGN_CENTER | wxALL, 5);
+ }
+
+ // button bar
+ wxBoxSizer* buttonSizer = new wxBoxSizer(wxHORIZONTAL);
+ m_ok = new wxButton(this, wxID_OK, wxT("OK"));
+ m_ok->SetDefault();
+ buttonSizer->Add(m_ok, 0, wxALIGN_CENTER | wxALL, 5);
+ m_cancel = new wxButton(this, wxID_CANCEL, wxT("Cancel"));
+ buttonSizer->Add(m_cancel, 0, wxALIGN_CENTER | wxALL, 5);
+ sizer->Add(buttonSizer, 0, wxALIGN_CENTER | wxALL, 4);
+
+ SetAutoLayout(true);
+ SetSizer(sizer);
+
+ if (m_device) {
+ m_device->SetFocus();
+ }
+ if (m_explicit_device) {
+ m_explicit_device->SetFocus();
+ }
+
+ sizer->Fit(this);
+ sizer->SetSizeHints(this);
+}
+
+
+const std::string& CDDeviceDialog::getName() const {
+ return m_name;
+}
+
+
+void CDDeviceDialog::OnButton(wxCommandEvent& event) {
+ if (event.GetEventObject() == m_ok) {
+ if (m_device) {
+ int value = m_device->GetSelection();
+ if (value < 0 || value >= static_cast<int>(m_devices.size())) {
+ wxMessageBox(wxT("No device selected"), wxT("New CD Device"), wxOK | wxICON_ERROR, this);
+ return;
+ }
+ m_name = m_devices[value];
+ EndModal(wxID_OK);
+ }
+ if (m_explicit_device) {
+ m_name = wxString2CStr(m_explicit_device->GetValue());
+ EndModal(wxID_OK);
+ }
+ } else {
+ EndModal(wxID_CANCEL);
+ }
+}
diff --git a/examples/wxPlayer/CDDeviceDialog.h b/examples/wxPlayer/CDDeviceDialog.h
new file mode 100755
index 0000000..7318fef
--- /dev/null
+++ b/examples/wxPlayer/CDDeviceDialog.h
@@ -0,0 +1,31 @@
+#ifndef ADR_CD_DEVICE_DIALOG_H
+#define ADR_CD_DEVICE_DIALOG_H
+
+
+#include <vector>
+#include <string>
+#include "wx.h"
+
+
+class CDDeviceDialog : public wxDialog {
+public:
+ CDDeviceDialog(wxWindow* parent);
+
+ const std::string& getName() const;
+
+private:
+ void OnButton(wxCommandEvent& event);
+
+ std::vector<std::string> m_devices;
+ std::string m_name;
+
+ wxChoice* m_device;
+ wxTextCtrl* m_explicit_device;
+ wxButton* m_ok;
+ wxButton* m_cancel;
+
+ DECLARE_EVENT_TABLE()
+};
+
+
+#endif
diff --git a/examples/wxPlayer/CDDeviceFrame.cpp b/examples/wxPlayer/CDDeviceFrame.cpp
new file mode 100755
index 0000000..f82956d
--- /dev/null
+++ b/examples/wxPlayer/CDDeviceFrame.cpp
@@ -0,0 +1,177 @@
+#ifdef _MSC_VER
+#pragma warning(disable : 4786)
+#endif
+
+
+#include <sstream>
+#include "CDDeviceFrame.h"
+#include "Commands.h"
+#include "wxPlayer.h"
+
+
+BEGIN_EVENT_TABLE(CDDeviceFrame, wxFrame)
+ EVT_MENU(DEVICE_NEW_DEVICE, CDDeviceFrame::OnDeviceNewDevice)
+ EVT_MENU(DEVICE_NEW_CDDEVICE, CDDeviceFrame::OnDeviceNewCDDevice)
+ EVT_MENU(DEVICE_NEW_MIDIDEVICE, CDDeviceFrame::OnDeviceNewMIDIDevice)
+ EVT_MENU(HELP_ABOUT, CDDeviceFrame::OnHelpAbout)
+
+ EVT_BUTTON(CD_PLAY, CDDeviceFrame::OnPlay)
+ EVT_BUTTON(CD_STOP, CDDeviceFrame::OnStop)
+ EVT_BUTTON(CD_PAUSE, CDDeviceFrame::OnPause)
+ EVT_BUTTON(CD_RESUME, CDDeviceFrame::OnResume)
+ EVT_BUTTON(CD_OPEN_DOOR, CDDeviceFrame::OnOpenDoor)
+ EVT_BUTTON(CD_CLOSE_DOOR, CDDeviceFrame::OnCloseDoor)
+ EVT_BUTTON(CD_CHECK_STATUS, CDDeviceFrame::OnCheckStatus)
+END_EVENT_TABLE()
+
+
+CDDeviceFrame::CDDeviceFrame(audiere::CDDevicePtr device)
+: wxFrame(0, -1, wxT("CD Device - ") + CStr2wxString(device->getName()),
+ wxDefaultPosition, wxDefaultSize,
+ wxDEFAULT_FRAME_STYLE | wxTAB_TRAVERSAL)
+{
+ m_device = device;
+
+ wxMenu* deviceMenu = new wxMenu;
+ deviceMenu->Append(DEVICE_NEW_DEVICE, wxT("&New Device..."));
+ deviceMenu->Append(DEVICE_NEW_CDDEVICE, wxT("New C&D Device..."));
+ deviceMenu->Append(DEVICE_NEW_MIDIDEVICE, wxT("New &MIDI Device..."));
+
+ wxMenu* helpMenu = new wxMenu;
+ helpMenu->Append(HELP_ABOUT, wxT("&About..."));
+
+ wxMenuBar* menuBar = new wxMenuBar;
+ menuBar->Append(deviceMenu, wxT("&Device"));
+ menuBar->Append(helpMenu, wxT("&Help"));
+ SetMenuBar(menuBar);
+
+ wxBoxSizer* sizer = new wxBoxSizer(wxVERTICAL);
+ const int border = 4;
+
+ wxBoxSizer* playSizer = new wxBoxSizer(wxHORIZONTAL);
+ playSizer->Add(
+ new wxButton(this, CD_PLAY, wxT("Play")),
+ 1, wxEXPAND | wxALL, 0);
+ m_track = new wxTextCtrl(this, -1, wxT("1"));
+ playSizer->Add(m_track, 1, wxADJUST_MINSIZE | wxALL, 0);
+ sizer->Add(
+ playSizer,
+ 1, wxEXPAND | wxALL, border);
+
+ sizer->Add(
+ new wxButton(this, CD_STOP, wxT("Stop")),
+ 1, wxEXPAND | wxALL, border);
+ sizer->Add(
+ new wxButton(this, CD_PAUSE, wxT("Pause")),
+ 1, wxEXPAND | wxALL, border);
+ sizer->Add(
+ new wxButton(this, CD_RESUME, wxT("Resume")),
+ 1, wxEXPAND | wxALL, border);
+
+ wxBoxSizer* doorSizer = new wxBoxSizer(wxHORIZONTAL);
+ doorSizer->Add(
+ new wxButton(this, CD_OPEN_DOOR, wxT("Open Door")),
+ 1, wxEXPAND | wxALL, 0);
+ doorSizer->Add(
+ new wxButton(this, CD_CLOSE_DOOR, wxT("Close Door")),
+ 1, wxEXPAND | wxALL, 0);
+ sizer->Add(
+ doorSizer,
+ 1, wxEXPAND | wxALL, border);
+
+ sizer->Add(
+ new wxButton(this, CD_CHECK_STATUS, wxT("Check Status")),
+ 1, wxEXPAND | wxALL, border);
+
+ SetAutoLayout(true);
+ SetSizer(sizer);
+
+ sizer->Fit(this);
+ sizer->SetSizeHints(this);
+
+ SetFocus();
+}
+
+
+void CDDeviceFrame::OnDeviceNewDevice(wxCommandEvent&) {
+ wxGetApp().OnNewDevice(this);
+}
+
+
+void CDDeviceFrame::OnDeviceNewCDDevice(wxCommandEvent&) {
+ wxGetApp().OnNewCDDevice(this);
+}
+
+
+void CDDeviceFrame::OnDeviceNewMIDIDevice(wxCommandEvent&) {
+ wxGetApp().OnNewMIDIDevice(this);
+}
+
+
+void CDDeviceFrame::OnHelpAbout(wxCommandEvent&) {
+ wxGetApp().ShowAboutDialog(this);
+}
+
+
+void CDDeviceFrame::OnPlay(wxCommandEvent&) {
+ int track = wxAtoi(m_track->GetValue()) - 1;
+ if (track < 0) {
+ track = 0;
+ } else if (track >= m_device->getTrackCount()) {
+ return;
+ }
+
+ m_device->play(track);
+}
+
+
+void CDDeviceFrame::OnStop(wxCommandEvent&) {
+ m_device->stop();
+}
+
+
+void CDDeviceFrame::OnPause(wxCommandEvent&) {
+ m_device->pause();
+}
+
+
+void CDDeviceFrame::OnResume(wxCommandEvent&) {
+ m_device->resume();
+}
+
+
+void CDDeviceFrame::OnOpenDoor(wxCommandEvent&) {
+ m_device->openDoor();
+}
+
+
+void CDDeviceFrame::OnCloseDoor(wxCommandEvent&) {
+ m_device->closeDoor();
+}
+
+
+void CDDeviceFrame::OnCheckStatus(wxCommandEvent&) {
+ std::ostringstream message;
+
+ if (m_device->isDoorOpen()) {
+ message << "Door Open\n";
+ } else {
+ message << "Door Closed\n";
+ }
+
+ if (m_device->containsCD()) {
+ message << "CD Present\n";
+ } else {
+ message << "CD Not Present\n";
+ }
+
+ message << m_device->getTrackCount() << " tracks\n";
+
+ if (m_device->isPlaying()) {
+ message << "Playing\n";
+ } else {
+ message << "Not Playing\n";
+ }
+
+ wxMessageBox(CStr2wxString(message.str().c_str()), wxT("Check Status"), wxOK, this);
+}
diff --git a/examples/wxPlayer/CDDeviceFrame.h b/examples/wxPlayer/CDDeviceFrame.h
new file mode 100755
index 0000000..e9b7b90
--- /dev/null
+++ b/examples/wxPlayer/CDDeviceFrame.h
@@ -0,0 +1,35 @@
+#ifndef ADR_CD_DEVICE_FRAME_H
+#define ADR_CD_DEVICE_FRAME_H
+
+
+#include <audiere.h>
+#include "wx.h"
+
+
+class CDDeviceFrame : public wxFrame {
+public:
+ CDDeviceFrame(audiere::CDDevicePtr device);
+
+private:
+ void OnDeviceNewDevice(wxCommandEvent&);
+ void OnDeviceNewCDDevice(wxCommandEvent&);
+ void OnDeviceNewMIDIDevice(wxCommandEvent&);
+ void OnHelpAbout(wxCommandEvent&);
+
+ void OnPlay(wxCommandEvent&);
+ void OnStop(wxCommandEvent&);
+ void OnPause(wxCommandEvent&);
+ void OnResume(wxCommandEvent&);
+ void OnOpenDoor(wxCommandEvent&);
+ void OnCloseDoor(wxCommandEvent&);
+ void OnCheckStatus(wxCommandEvent&);
+
+ audiere::CDDevicePtr m_device;
+
+ wxTextCtrl* m_track;
+
+ DECLARE_EVENT_TABLE()
+};
+
+
+#endif
diff --git a/examples/wxPlayer/Commands.h b/examples/wxPlayer/Commands.h
new file mode 100755
index 0000000..c610919
--- /dev/null
+++ b/examples/wxPlayer/Commands.h
@@ -0,0 +1,62 @@
+#ifndef ADR_COMMANDS_H
+#define ADR_COMMANDS_H
+
+
+enum {
+ DEVICE_NEW_DEVICE,
+ DEVICE_NEW_CDDEVICE,
+ DEVICE_NEW_MIDIDEVICE,
+ DEVICE_OPEN_STREAM,
+ DEVICE_OPEN_SOUND,
+ DEVICE_CREATE_TONE,
+ DEVICE_CREATE_SQUARE_WAVE,
+ DEVICE_CREATE_WHITE_NOISE,
+ DEVICE_CREATE_PINK_NOISE,
+ DEVICE_OPEN_SINGLE_EFFECT,
+ DEVICE_OPEN_MULTIPLE_EFFECT,
+ DEVICE_CLOSE_WINDOW,
+ DEVICE_CLOSE,
+
+ // For MIDI devices.
+ DEVICE_OPEN_SONG,
+
+ HELP_ABOUT,
+
+ STREAM_PLAY,
+ STREAM_STOP,
+ STREAM_RESET,
+ STREAM_REPEAT,
+ STREAM_VOLUME,
+ STREAM_PAN,
+ STREAM_PITCH,
+ STREAM_POS,
+ STREAM_UPDATE,
+
+ STREAM_VIEW_INFO,
+ STREAM_EDIT_LOOP_POINTS,
+ STREAM_VIEW_TAGS,
+
+ EFFECT_PLAY,
+ EFFECT_STOP,
+ EFFECT_VOLUME,
+ EFFECT_PAN,
+ EFFECT_PITCH,
+
+ CD_PLAY,
+ CD_STOP,
+ CD_PAUSE,
+ CD_RESUME,
+ CD_OPEN_DOOR,
+ CD_CLOSE_DOOR,
+ CD_CHECK_STATUS,
+
+ MIDI_PLAY,
+ MIDI_PAUSE,
+ MIDI_STOP,
+ MIDI_REPEAT,
+ MIDI_POS,
+ MIDI_UPDATE,
+};
+
+
+#endif
diff --git a/examples/wxPlayer/DeviceFrame.cpp b/examples/wxPlayer/DeviceFrame.cpp
new file mode 100755
index 0000000..7728df2
--- /dev/null
+++ b/examples/wxPlayer/DeviceFrame.cpp
@@ -0,0 +1,362 @@
+#ifdef _MSC_VER
+#pragma warning(disable : 4786)
+#endif
+
+
+#include <set>
+#include <string>
+#include <vector>
+#include "Commands.h"
+#include "DeviceFrame.h"
+#include "SoundEffectFrame.h"
+#include "StreamFrame.h"
+#include "wxPlayer.h"
+
+#if wxCHECK_VERSION(2,5,3)
+#include "wx/generic/numdlgg.h"
+#endif
+
+template<typename T>
+std::string Join(
+ T cont,
+ const std::string& joiner,
+ const std::string& prefix = "")
+{
+ std::string result;
+
+ typename T::iterator i = cont.begin();
+ for (;;) {
+ result += prefix + *i++;
+ if (i == cont.end()) {
+ break;
+ } else {
+ result += joiner;
+ }
+ }
+
+ return result;
+}
+
+
+BEGIN_EVENT_TABLE(DeviceFrame, wxMDIParentFrame)
+ EVT_MENU(DEVICE_NEW_DEVICE, DeviceFrame::OnDeviceNewDevice)
+ EVT_MENU(DEVICE_NEW_CDDEVICE, DeviceFrame::OnDeviceNewCDDevice)
+ EVT_MENU(DEVICE_NEW_MIDIDEVICE, DeviceFrame::OnDeviceNewMIDIDevice)
+ EVT_MENU(DEVICE_OPEN_STREAM, DeviceFrame::OnDeviceOpenStream)
+ EVT_MENU(DEVICE_OPEN_SOUND, DeviceFrame::OnDeviceOpenSound)
+ EVT_MENU(DEVICE_CREATE_TONE, DeviceFrame::OnDeviceCreateTone)
+ EVT_MENU(DEVICE_CREATE_SQUARE_WAVE, DeviceFrame::OnDeviceCreateSquareWave)
+ EVT_MENU(DEVICE_CREATE_WHITE_NOISE, DeviceFrame::OnDeviceCreateWhiteNoise)
+ EVT_MENU(DEVICE_CREATE_PINK_NOISE, DeviceFrame::OnDeviceCreatePinkNoise)
+ EVT_MENU(DEVICE_OPEN_SINGLE_EFFECT, DeviceFrame::OnDeviceOpenSingleEffect)
+ EVT_MENU(DEVICE_OPEN_MULTIPLE_EFFECT, DeviceFrame::OnDeviceOpenMultipleEffect)
+ EVT_MENU(DEVICE_CLOSE_WINDOW, DeviceFrame::OnDeviceCloseCurrentWindow)
+ EVT_MENU(DEVICE_CLOSE, DeviceFrame::OnDeviceClose)
+ EVT_MENU(HELP_ABOUT, DeviceFrame::OnHelpAbout)
+END_EVENT_TABLE()
+
+
+DeviceFrame::DeviceFrame(audiere::AudioDevicePtr device)
+: wxMDIParentFrame(0, -1, wxT("Audio Device - " + wxString(device->getName())),
+ wxDefaultPosition, wxSize(400, 500))
+{
+ m_device = device;
+
+ wxMenu* deviceMenu = new wxMenu();
+ deviceMenu->Append(DEVICE_NEW_DEVICE, wxT("&New Device..."));
+ deviceMenu->Append(DEVICE_NEW_CDDEVICE, wxT("New C&D Device..."));
+ deviceMenu->Append(DEVICE_NEW_MIDIDEVICE, wxT("New &MIDI Device..."));
+ deviceMenu->AppendSeparator();
+ deviceMenu->Append(DEVICE_OPEN_STREAM, wxT("&Open Stream..."));
+ deviceMenu->Append(DEVICE_OPEN_SOUND, wxT("Open &Sound..."));
+ deviceMenu->AppendSeparator();
+ deviceMenu->Append(DEVICE_CREATE_TONE, wxT("Create &Tone..."));
+ deviceMenu->Append(DEVICE_CREATE_SQUARE_WAVE, wxT("Create S&quare Wave..."));
+ deviceMenu->Append(DEVICE_CREATE_WHITE_NOISE, wxT("Create &White Noise"));
+ deviceMenu->Append(DEVICE_CREATE_PINK_NOISE, wxT("Create &Pink Noise"));
+ deviceMenu->AppendSeparator();
+ deviceMenu->Append(DEVICE_OPEN_SINGLE_EFFECT, wxT("Open &Effect (Single)..."));
+ deviceMenu->Append(DEVICE_OPEN_MULTIPLE_EFFECT, wxT("Open Effect (&Multiple)..."));
+ deviceMenu->AppendSeparator();
+ deviceMenu->Append(DEVICE_CLOSE_WINDOW, wxT("Close C&urrent Window"));
+ deviceMenu->Append(DEVICE_CLOSE, wxT("&Close Device"));
+
+ wxMenu* helpMenu = new wxMenu();
+ helpMenu->Append(HELP_ABOUT, wxT("&About..."));
+
+ wxMenuBar* menuBar = new wxMenuBar();
+ menuBar->Append(deviceMenu, wxT("&Device"));
+ menuBar->Append(helpMenu, wxT("&Help"));
+ SetMenuBar(menuBar);
+
+ SetFocus();
+}
+
+
+void DeviceFrame::OnDeviceNewDevice(wxCommandEvent&) {
+ wxGetApp().OnNewDevice(this);
+}
+
+
+void DeviceFrame::OnDeviceNewCDDevice(wxCommandEvent&) {
+ wxGetApp().OnNewCDDevice(this);
+}
+
+
+void DeviceFrame::OnDeviceNewMIDIDevice(wxCommandEvent&) {
+ wxGetApp().OnNewMIDIDevice(this);
+}
+
+
+wxString DeviceFrame::GetSoundFile() {
+ std::vector<audiere::FileFormatDesc> formats;
+ audiere::GetSupportedFileFormats(formats);
+
+ // combine all of the supported extensions into one collection
+ std::set<std::string> all_extensions;
+ {
+ for (unsigned i = 0; i < formats.size(); ++i) {
+ for (unsigned j = 0; j < formats[i].extensions.size(); ++j) {
+ all_extensions.insert("*." + formats[i].extensions[j]);
+ }
+ }
+ }
+
+ // build a string of wildcards for wxWindows
+ std::string wildcards;
+ wildcards = "Sound Files (" + Join(all_extensions, ",") + ")|";
+ wildcards += Join(all_extensions, ";") + "|";
+
+ {
+ for (unsigned i = 0; i < formats.size(); ++i) {
+ audiere::FileFormatDesc& ffd = formats[i];
+ wildcards += ffd.description + " ";
+ wildcards += "(" + Join(ffd.extensions, ",", "*.") + ")|";
+ wildcards += Join(ffd.extensions, ";", "*.") + "|";
+ }
+ }
+
+ wildcards += "All Files (*.*)|*.*";
+
+ return wxFileSelector(
+ wxT("Select a sound file"), wxT(""), wxT(""), wxT(""),
+ CStr2wxString(wildcards.c_str()), wxOPEN, this);
+}
+
+
+void DeviceFrame::OnDeviceOpenStream(wxCommandEvent &) {
+ wxString filename(GetSoundFile());
+ if (filename.empty()) {
+ return;
+ }
+
+#if wxUSE_UNICODE
+ wxCharBuffer buffFilename = filename.mb_str(wxConvUTF8);
+ audiere::SampleSourcePtr source = audiere::OpenSampleSource(buffFilename.data());
+#else
+ audiere::SampleSourcePtr source = audiere::OpenSampleSource(filename);
+#endif
+ if (!source) {
+ wxMessageBox(
+ wxT("Could not open sample source: ") + filename,
+ wxT("Open Stream"), wxOK | wxCENTRE, this);
+ return;
+ }
+
+ audiere::LoopPointSourcePtr loop_source =
+ audiere::CreateLoopPointSource(source);
+ if (loop_source) {
+ source = loop_source.get();
+ }
+
+ audiere::OutputStreamPtr stream = audiere::OpenSound(
+ m_device,
+ source,
+ true);
+ if (!stream) {
+ wxMessageBox(
+ wxT("Could not open output stream: ") + filename,
+ wxT("Open Stream"), wxOK | wxCENTRE, this);
+ return;
+ }
+
+ // get the basename of the path for the window title
+ wxString basename = wxFileNameFromPath(filename);
+ new StreamFrame(this, wxT("Stream: ") + basename, stream.get(), source.get(), loop_source.get());
+}
+
+
+void DeviceFrame::OnDeviceOpenSound(wxCommandEvent &) {
+ wxString filename(GetSoundFile());
+ if (filename.empty()) {
+ return;
+ }
+
+ audiere::SampleSourcePtr source = audiere::OpenSampleSource(wxString2CStr(filename));
+ if (!source) {
+ wxMessageBox(
+ wxT("Could not open source: ") + filename,
+ wxT("Open Sound"), wxOK | wxCENTRE, this);
+ return;
+ }
+
+ audiere::OutputStreamPtr stream = audiere::OpenSound(m_device, source);
+ if (!stream) {
+ wxMessageBox(
+ wxT("Could not open sound: ") + filename,
+ wxT("Open Sound"), wxOK | wxCENTRE, this);
+ return;
+ }
+
+ // get the basename of the path for the window title
+ wxString basename = wxFileNameFromPath(filename);
+ new StreamFrame(this, wxT("Sound: ") + basename, stream.get(), source.get());
+}
+
+
+void DeviceFrame::OnDeviceCreateTone(wxCommandEvent &) {
+ int frequency = ::wxGetNumberFromUser(
+ wxT("Value must be between 1 and 30000."), wxT("Enter frequency in Hz"),
+ wxT("Create Tone"), 256, 1, 30000, this);
+ if (frequency != -1) {
+ audiere::SampleSourcePtr source = audiere::CreateTone(frequency);
+ if (!source) {
+ wxMessageBox(
+ wxT("Could not create tone"),
+ wxT("Create Tone"), wxOK | wxCENTRE, this);
+ return;
+ }
+
+ audiere::OutputStreamPtr stream = m_device->openStream(source.get());
+ if (!stream) {
+ wxMessageBox(
+ wxT("Could not open output stream"),
+ wxT("Create Tone"), wxOK | wxCENTRE, this);
+ return;
+
+ }
+
+ wxString title;
+ title.sprintf(wxT("Tone: %d Hz"), frequency);
+ new StreamFrame(this, title, stream.get(), source.get());
+ }
+}
+
+
+void DeviceFrame::OnDeviceCreateSquareWave(wxCommandEvent &) {
+ int frequency = ::wxGetNumberFromUser(
+ wxT("Value must be between 1 and 30000."), wxT("Enter frequency in Hz"),
+ wxT("Create Square Wave"), 256, 1, 30000, this);
+ if (frequency != -1) {
+ audiere::SampleSourcePtr source = audiere::CreateSquareWave(frequency);
+ if (!source) {
+ wxMessageBox(
+ wxT("Could not create square wave"),
+ wxT("Create Square Wave"), wxOK | wxCENTRE, this);
+ return;
+ }
+
+ audiere::OutputStreamPtr stream = m_device->openStream(source.get());
+ if (!stream) {
+ wxMessageBox(
+ wxT("Could not open output stream"),
+ wxT("Create Square Wave"), wxOK | wxCENTRE, this);
+ return;
+ }
+
+ wxString title;
+ title.sprintf(wxT("Square Wave: %d Hz"), frequency);
+ new StreamFrame(this, title, stream.get(), source.get());
+ }
+}
+
+
+void DeviceFrame::OnDeviceCreateWhiteNoise(wxCommandEvent &) {
+ audiere::SampleSourcePtr source = audiere::CreateWhiteNoise();
+ if (!source) {
+ wxMessageBox(
+ wxT("Could not create white noise"),
+ wxT("Create White Noise"), wxOK | wxCENTRE, this);
+ return;
+ }
+
+ audiere::OutputStreamPtr stream = m_device->openStream(source.get());
+ if (!stream) {
+ wxMessageBox(
+ wxT("Could not open output stream"),
+ wxT("Create White Noise"), wxOK | wxCENTRE, this);
+ return;
+ }
+
+ new StreamFrame(this, wxT("White Noise"), stream.get(), source.get());
+}
+
+
+void DeviceFrame::OnDeviceCreatePinkNoise(wxCommandEvent &) {
+ audiere::SampleSourcePtr source = audiere::CreatePinkNoise();
+ if (!source) {
+ wxMessageBox(
+ wxT("Could not create white noise"),
+ wxT("Create Pink Noise"), wxOK | wxCENTRE, this);
+ return;
+ }
+
+ audiere::OutputStreamPtr stream = m_device->openStream(source.get());
+ if (!stream) {
+ wxMessageBox(
+ wxT("Could not open output stream"),
+ wxT("Create Pink Noise"), wxOK | wxCENTRE, this);
+ return;
+ }
+
+ new StreamFrame(this, wxT("Pink Noise"), stream.get(), source.get());
+}
+
+
+void DeviceFrame::OnDeviceOpenSingleEffect(wxCommandEvent &) {
+ DoOpenEffect(audiere::SINGLE, wxT("Single"));
+}
+
+
+void DeviceFrame::OnDeviceOpenMultipleEffect(wxCommandEvent &) {
+ DoOpenEffect(audiere::MULTIPLE, wxT("Multiple"));
+}
+
+
+void DeviceFrame::DoOpenEffect(audiere::SoundEffectType type, wxString typestring) {
+ wxString filename(GetSoundFile());
+ if (filename.empty()) {
+ return;
+ }
+
+ audiere::SoundEffectPtr effect = audiere::OpenSoundEffect(m_device, wxString2CStr(filename), type);
+ if (effect) {
+ wxString basename = wxFileNameFromPath(filename);
+ wxString title;
+ title.sprintf(wxT("Sound Effect (%s): %s"),
+ typestring.c_str(), basename.c_str());
+ new SoundEffectFrame(this, title, effect);
+ } else {
+ wxMessageBox(
+ wxT("Could not open sound effect: ") + filename,
+ wxT("Open Sound Effect"), wxOK | wxCENTRE, this);
+ }
+}
+
+
+void DeviceFrame::OnDeviceCloseCurrentWindow(wxCommandEvent&) {
+ wxMDIChildFrame* frame = GetActiveChild();
+ if (frame) {
+ frame->Close();
+ }
+}
+
+
+void DeviceFrame::OnDeviceClose(wxCommandEvent &) {
+ Close();
+}
+
+
+void DeviceFrame::OnHelpAbout(wxCommandEvent &) {
+ wxGetApp().ShowAboutDialog(this);
+}
diff --git a/examples/wxPlayer/DeviceFrame.h b/examples/wxPlayer/DeviceFrame.h
new file mode 100755
index 0000000..0454d8d
--- /dev/null
+++ b/examples/wxPlayer/DeviceFrame.h
@@ -0,0 +1,37 @@
+#ifndef ADR_DEVICE_FRAME_H
+#define ADR_DEVICE_FRAME_H
+
+
+#include <audiere.h>
+#include "wx.h"
+
+
+class DeviceFrame : public wxMDIParentFrame {
+public:
+ DeviceFrame(audiere::AudioDevicePtr device);
+
+ void OnDeviceNewDevice(wxCommandEvent&);
+ void OnDeviceNewCDDevice(wxCommandEvent&);
+ void OnDeviceNewMIDIDevice(wxCommandEvent&);
+ wxString GetSoundFile();
+ void OnDeviceOpenStream(wxCommandEvent&);
+ void OnDeviceOpenSound(wxCommandEvent&);
+ void OnDeviceCreateTone(wxCommandEvent&);
+ void OnDeviceCreateSquareWave(wxCommandEvent&);
+ void OnDeviceCreateWhiteNoise(wxCommandEvent&);
+ void OnDeviceCreatePinkNoise(wxCommandEvent&);
+ void OnDeviceOpenSingleEffect(wxCommandEvent&);
+ void OnDeviceOpenMultipleEffect(wxCommandEvent&);
+ void DoOpenEffect(audiere::SoundEffectType type, wxString typestring);
+ void OnDeviceCloseCurrentWindow(wxCommandEvent&);
+ void OnDeviceClose(wxCommandEvent&);
+ void OnHelpAbout(wxCommandEvent&);
+
+private:
+ audiere::AudioDevicePtr m_device;
+
+ DECLARE_EVENT_TABLE()
+};
+
+
+#endif
diff --git a/examples/wxPlayer/EditLoopPointsDialog.cpp b/examples/wxPlayer/EditLoopPointsDialog.cpp
new file mode 100755
index 0000000..e6c71ba
--- /dev/null
+++ b/examples/wxPlayer/EditLoopPointsDialog.cpp
@@ -0,0 +1,116 @@
+#ifdef _MSC_VER
+#pragma warning(disable : 4786)
+#endif
+
+
+#include "Commands.h"
+#include "EditLoopPointsDialog.h"
+
+
+BEGIN_EVENT_TABLE(EditLoopPointsDialog, wxDialog)
+ EVT_CLOSE(EditLoopPointsDialog::OnClose)
+ EVT_BUTTON(-1, EditLoopPointsDialog::OnButton)
+END_EVENT_TABLE()
+
+
+EditLoopPointsDialog::EditLoopPointsDialog(
+ wxWindow* parent,
+ audiere::LoopPointSourcePtr loop_source)
+: wxDialog(parent, -1, wxString(wxT("Edit Loop Points")), wxDefaultPosition,
+ wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER)
+{
+ m_loop_source = loop_source;
+ const int CA = wxALIGN_CENTER | wxALL;
+ const int LEFT_STYLE = CA | wxALIGN_CENTER_VERTICAL;
+ wxBoxSizer* sizer = new wxBoxSizer(wxVERTICAL);
+
+ m_points = new wxListBox(this, -1);
+ sizer->Add(m_points, 1, CA | wxGROW | wxADJUST_MINSIZE, 5);
+
+ wxFlexGridSizer* fieldSizer = new wxFlexGridSizer(2);
+ fieldSizer->Add(new wxStaticText(this, -1, wxT("Location")), 0, LEFT_STYLE, 0);
+ m_location = new wxTextCtrl(this, -1);
+ fieldSizer->Add(m_location, 0, CA, 1);
+ fieldSizer->Add(new wxStaticText(this, -1, wxT("Target")), 0, LEFT_STYLE, 0);
+ m_target = new wxTextCtrl(this, -1);
+ fieldSizer->Add(m_target, 0, CA, 1);
+ fieldSizer->Add(new wxStaticText(this, -1, wxT("Loop Count")), 0, LEFT_STYLE, 0);
+ m_loop_count = new wxTextCtrl(this, -1);
+ fieldSizer->Add(m_loop_count, 0, CA, 1);
+ sizer->Add(fieldSizer, 0, CA, 5);
+
+ wxBoxSizer* buttonSizer = new wxBoxSizer(wxHORIZONTAL);
+ m_add = new wxButton(this, -1, wxT("Add"));
+ buttonSizer->Add(m_add, 0, CA, 5);
+ m_remove = new wxButton(this, -1, wxT("Remove"));
+ buttonSizer->Add(m_remove, 0, CA, 5);
+ sizer->Add(buttonSizer, 0, CA, 2);
+
+ m_close = new wxButton(this, -1, wxT("Close"));
+ sizer->Add(m_close, 0, CA, 1);
+
+ m_location->SetFocus();
+ m_add->SetDefault();
+
+ SetAutoLayout(true);
+ SetSizer(sizer);
+
+ sizer->Fit(this);
+ sizer->SetSizeHints(this);
+
+ resetFields();
+ refreshLoopPoints();
+}
+
+
+void EditLoopPointsDialog::OnButton(wxCommandEvent& event) {
+ if (event.GetEventObject() == m_add) {
+
+ int location = wxAtoi(m_location ->GetValue());
+ int target = wxAtoi(m_target ->GetValue());
+ int loop_count = wxAtoi(m_loop_count->GetValue());
+ m_loop_source->addLoopPoint(location, target, loop_count);
+
+ resetFields();
+ refreshLoopPoints();
+
+ } else if (event.GetEventObject() == m_remove) {
+
+ int sel = m_points->GetSelection();
+ if (sel >= 0 && sel < m_loop_source->getLoopPointCount()) {
+ m_loop_source->removeLoopPoint(sel);
+ refreshLoopPoints();
+ }
+
+ } else if (event.GetEventObject() == m_close) {
+
+ EndModal(0);
+
+ }
+}
+
+
+void EditLoopPointsDialog::OnClose(wxCloseEvent& event) {
+ EndModal(0);
+}
+
+
+void EditLoopPointsDialog::resetFields() {
+ m_location ->SetValue(wxT("0"));
+ m_target ->SetValue(wxT("0"));
+ m_loop_count->SetValue(wxT("0"));
+}
+
+
+void EditLoopPointsDialog::refreshLoopPoints() {
+ m_points->Clear();
+ int count = m_loop_source->getLoopPointCount();
+ for (int i = 0; i < count; ++i) {
+ int location, target, loopCount;
+ if (m_loop_source->getLoopPoint(i, location, target, loopCount)) {
+ wxString str;
+ str.Printf(wxT("%d %d %d"), location, target, loopCount);
+ m_points->Append(str);
+ }
+ }
+}
diff --git a/examples/wxPlayer/EditLoopPointsDialog.h b/examples/wxPlayer/EditLoopPointsDialog.h
new file mode 100755
index 0000000..40843b6
--- /dev/null
+++ b/examples/wxPlayer/EditLoopPointsDialog.h
@@ -0,0 +1,37 @@
+#ifndef ADR_EDIT_LOOP_POINTS_DIALOG_H
+#define ADR_EDIT_LOOP_POINTS_DIALOG_H
+
+
+#include <audiere.h>
+#include "wx.h"
+
+
+class EditLoopPointsDialog : public wxDialog {
+public:
+ EditLoopPointsDialog(
+ wxWindow* parent,
+ audiere::LoopPointSourcePtr loop_source);
+
+private:
+ void OnButton(wxCommandEvent& event);
+ void OnClose(wxCloseEvent& event);
+
+ void resetFields();
+ void refreshLoopPoints();
+
+
+ audiere::LoopPointSourcePtr m_loop_source;
+
+ wxListBox* m_points;
+ wxTextCtrl* m_location;
+ wxTextCtrl* m_target;
+ wxTextCtrl* m_loop_count;
+ wxButton* m_add;
+ wxButton* m_remove;
+ wxButton* m_close;
+
+ DECLARE_EVENT_TABLE()
+};
+
+
+#endif
diff --git a/examples/wxPlayer/MIDIDeviceDialog.cpp b/examples/wxPlayer/MIDIDeviceDialog.cpp
new file mode 100755
index 0000000..d597a32
--- /dev/null
+++ b/examples/wxPlayer/MIDIDeviceDialog.cpp
@@ -0,0 +1,44 @@
+#include "MIDIDeviceDialog.h"
+
+
+BEGIN_EVENT_TABLE(MIDIDeviceDialog, wxDialog)
+ EVT_BUTTON(-1, MIDIDeviceDialog::OnButton)
+END_EVENT_TABLE()
+
+
+MIDIDeviceDialog::MIDIDeviceDialog(wxWindow* parent)
+: wxDialog(parent, -1, wxString(wxT("New MIDI Device")))
+{
+ // size of text controls
+ static const wxSize size(300, 22);
+
+ wxBoxSizer* sizer = new wxBoxSizer(wxVERTICAL);
+ m_name = new wxTextCtrl(this, -1, wxT(""), wxDefaultPosition, size);
+ sizer->Add(m_name, 0, wxALIGN_CENTER | wxALL, 5);
+
+ wxBoxSizer* buttonSizer = new wxBoxSizer(wxHORIZONTAL);
+ m_ok = new wxButton(this, wxID_OK, wxT("OK"));
+ buttonSizer->Add(m_ok, 0, wxALIGN_CENTER | wxALL, 5);
+ m_cancel = new wxButton(this, wxID_CANCEL, wxT("Cancel"));
+ buttonSizer->Add(m_cancel, 0, wxALIGN_CENTER | wxALL, 5);
+ sizer->Add(buttonSizer, 0, wxALIGN_CENTER | wxALL, 5);
+
+ SetAutoLayout(true);
+ SetSizer(sizer);
+
+ m_name->SetFocus();
+ m_ok->SetDefault();
+
+ sizer->Fit(this);
+ sizer->SetSizeHints(this);
+}
+
+
+void MIDIDeviceDialog::OnButton(wxCommandEvent& event) {
+ if (event.GetEventObject() == m_ok) {
+ m_name_str = wxString2CStr(m_name->GetValue());
+ EndModal(wxID_OK);
+ } else if (event.GetEventObject() == m_cancel) {
+ EndModal(wxID_CANCEL);
+ }
+}
diff --git a/examples/wxPlayer/MIDIDeviceDialog.h b/examples/wxPlayer/MIDIDeviceDialog.h
new file mode 100755
index 0000000..682b3ad
--- /dev/null
+++ b/examples/wxPlayer/MIDIDeviceDialog.h
@@ -0,0 +1,31 @@
+#ifndef ADR_MIDI_DEVICE_DIALOG_H
+#define ADR_MIDI_DEVICE_DIALOG_H
+
+
+#include <string>
+#include "wx.h"
+
+
+class MIDIDeviceDialog : public wxDialog {
+public:
+ MIDIDeviceDialog(wxWindow* parent);
+
+ const std::string& getName() const {
+ return m_name_str;
+ }
+
+private:
+ void MIDIDeviceDialog::OnButton(wxCommandEvent& event);
+
+ wxTextCtrl* m_name;
+
+ wxButton* m_ok;
+ wxButton* m_cancel;
+
+ std::string m_name_str;
+
+ DECLARE_EVENT_TABLE()
+};
+
+
+#endif
diff --git a/examples/wxPlayer/MIDIDeviceFrame.cpp b/examples/wxPlayer/MIDIDeviceFrame.cpp
new file mode 100755
index 0000000..0d52acc
--- /dev/null
+++ b/examples/wxPlayer/MIDIDeviceFrame.cpp
@@ -0,0 +1,100 @@
+#ifdef _MSC_VER
+#pragma warning(disable : 4786)
+#endif
+
+
+#include "Commands.h"
+#include "MIDIDeviceFrame.h"
+#include "MIDIStreamFrame.h"
+#include "wxPlayer.h"
+
+
+BEGIN_EVENT_TABLE(MIDIDeviceFrame, wxMDIParentFrame)
+ EVT_MENU(DEVICE_NEW_DEVICE, MIDIDeviceFrame::OnDeviceNewDevice)
+ EVT_MENU(DEVICE_NEW_CDDEVICE, MIDIDeviceFrame::OnDeviceNewCDDevice)
+ EVT_MENU(DEVICE_NEW_MIDIDEVICE, MIDIDeviceFrame::OnDeviceNewMIDIDevice)
+ EVT_MENU(DEVICE_OPEN_SONG, MIDIDeviceFrame::OnDeviceOpenSong)
+ EVT_MENU(DEVICE_CLOSE_WINDOW, MIDIDeviceFrame::OnDeviceCloseCurrentWindow)
+ EVT_MENU(DEVICE_CLOSE, MIDIDeviceFrame::OnDeviceClose)
+ EVT_MENU(HELP_ABOUT, MIDIDeviceFrame::OnHelpAbout)
+END_EVENT_TABLE()
+
+
+MIDIDeviceFrame::MIDIDeviceFrame(audiere::MIDIDevicePtr device)
+: wxMDIParentFrame(0, -1, wxT("MIDI Device - ") + CStr2wxString(device->getName()),
+ wxDefaultPosition, wxSize(400, 500))
+{
+ m_device = device;
+
+ wxMenu* deviceMenu = new wxMenu;
+ deviceMenu->Append(DEVICE_NEW_DEVICE, wxT("&New Device..."));
+ deviceMenu->Append(DEVICE_NEW_CDDEVICE, wxT("New C&D Device..."));
+ deviceMenu->Append(DEVICE_NEW_MIDIDEVICE, wxT("New &MIDI Device..."));
+ deviceMenu->AppendSeparator();
+ deviceMenu->Append(DEVICE_OPEN_SONG, wxT("Open &Song..."));
+ deviceMenu->AppendSeparator();
+ deviceMenu->Append(DEVICE_CLOSE_WINDOW, wxT("Close C&urrent Window"));
+ deviceMenu->Append(DEVICE_CLOSE, wxT("&Close Device"));
+
+ wxMenu* helpMenu = new wxMenu;
+ helpMenu->Append(HELP_ABOUT, wxT("&About..."));
+
+ wxMenuBar* menuBar = new wxMenuBar;
+ menuBar->Append(deviceMenu, wxT("&Device"));
+ menuBar->Append(helpMenu, wxT("&Help"));
+ SetMenuBar(menuBar);
+
+ SetFocus();
+}
+
+
+void MIDIDeviceFrame::OnDeviceNewDevice(wxCommandEvent&) {
+ wxGetApp().OnNewDevice(this);
+}
+
+
+void MIDIDeviceFrame::OnDeviceNewCDDevice(wxCommandEvent&) {
+ wxGetApp().OnNewCDDevice(this);
+}
+
+
+void MIDIDeviceFrame::OnDeviceNewMIDIDevice(wxCommandEvent&) {
+ wxGetApp().OnNewMIDIDevice(this);
+}
+
+
+void MIDIDeviceFrame::OnDeviceOpenSong(wxCommandEvent&) {
+ wxString file = wxFileSelector(
+ wxT("Select a MIDI file"), wxT(""), wxT(""), wxT(""),
+ wxT( "MIDI Files (*.midi,*.mid,*.rmi)|*.midi;*.mid;*.rmi|")
+ wxT("All Files (*.*)|*.*"),
+ wxOPEN, this);
+ if (!file.empty()) {
+ audiere::MIDIStreamPtr stream = m_device->openStream(wxString2CStr(file));
+ if (!stream) {
+ wxMessageBox(
+ wxT("Could not open MIDI file: ") + file,
+ wxT("Open MIDI File"), wxOK | wxCENTRE, this);
+ }
+
+ new MIDIStreamFrame(this, wxT("MIDI File - ") + file, stream);
+ }
+}
+
+
+void MIDIDeviceFrame::OnDeviceCloseCurrentWindow(wxCommandEvent&) {
+ wxMDIChildFrame* frame = GetActiveChild();
+ if (frame) {
+ frame->Close();
+ }
+}
+
+
+void MIDIDeviceFrame::OnDeviceClose(wxCommandEvent&) {
+ Close();
+}
+
+
+void MIDIDeviceFrame::OnHelpAbout(wxCommandEvent&) {
+ wxGetApp().ShowAboutDialog(this);
+}
diff --git a/examples/wxPlayer/MIDIDeviceFrame.h b/examples/wxPlayer/MIDIDeviceFrame.h
new file mode 100755
index 0000000..eb1afc4
--- /dev/null
+++ b/examples/wxPlayer/MIDIDeviceFrame.h
@@ -0,0 +1,28 @@
+#ifndef ADR_MIDI_DEVICE_FRAME_H
+#define ADR_MIDI_DEVICE_FRAME_H
+
+
+#include <audiere.h>
+#include "wx.h"
+
+
+class MIDIDeviceFrame : public wxMDIParentFrame {
+public:
+ MIDIDeviceFrame(audiere::MIDIDevicePtr device);
+
+ void OnDeviceNewDevice(wxCommandEvent&);
+ void OnDeviceNewCDDevice(wxCommandEvent&);
+ void OnDeviceNewMIDIDevice(wxCommandEvent&);
+ void OnDeviceOpenSong(wxCommandEvent&);
+ void OnDeviceCloseCurrentWindow(wxCommandEvent&);
+ void OnDeviceClose(wxCommandEvent&);
+ void OnHelpAbout(wxCommandEvent&);
+
+private:
+ audiere::MIDIDevicePtr m_device;
+
+ DECLARE_EVENT_TABLE()
+};
+
+
+#endif
diff --git a/examples/wxPlayer/MIDIStreamFrame.cpp b/examples/wxPlayer/MIDIStreamFrame.cpp
new file mode 100755
index 0000000..e412edc
--- /dev/null
+++ b/examples/wxPlayer/MIDIStreamFrame.cpp
@@ -0,0 +1,104 @@
+#include "Commands.h"
+#include "MIDIStreamFrame.h"
+
+
+BEGIN_EVENT_TABLE(MIDIStreamFrame, wxMDIChildFrame)
+ EVT_BUTTON(MIDI_PLAY, MIDIStreamFrame::OnPlay)
+ EVT_BUTTON(MIDI_PAUSE, MIDIStreamFrame::OnPause)
+ EVT_BUTTON(MIDI_STOP, MIDIStreamFrame::OnStop)
+
+ EVT_CHECKBOX(MIDI_REPEAT, MIDIStreamFrame::OnRepeat)
+
+ EVT_COMMAND_SCROLL(MIDI_POS, MIDIStreamFrame::OnChangePos)
+
+ EVT_TIMER(MIDI_UPDATE, MIDIStreamFrame::OnUpdateStatus)
+END_EVENT_TABLE()
+
+
+MIDIStreamFrame::MIDIStreamFrame(
+ wxMDIParentFrame* parent,
+ const wxString& title,
+ audiere::MIDIStreamPtr stream)
+: wxMDIChildFrame(parent, -1, title)
+{
+ m_stream = stream;
+
+ int f = wxEXPAND | wxALL;
+
+ wxBoxSizer* sizer = new wxBoxSizer(wxVERTICAL);
+ sizer->Add(new wxButton(this, MIDI_PLAY, wxT("Play")), 1, f, 4);
+ sizer->Add(new wxButton(this, MIDI_PAUSE, wxT("Pause")), 1, f, 4);
+ sizer->Add(new wxButton(this, MIDI_STOP, wxT("Stop")), 1, f, 4);
+ m_is_playing_label = new wxStaticText(this, -1, wxT(""));
+ sizer->Add(m_is_playing_label, 1, f, 4);
+ m_repeating = new wxCheckBox(this, MIDI_REPEAT, wxT("Repeating"));
+ sizer->Add(m_repeating, 1, f, 4);
+ m_length_pos_label = new wxStaticText(this, -1, wxT(""));
+ sizer->Add(m_length_pos_label, 1, f, 4);
+ m_pos = new wxSlider(this, MIDI_POS, 0, 0, 1000);
+ sizer->Add(m_pos, 1, f, 4);
+
+ SetAutoLayout(true);
+ SetSizer(sizer);
+
+ sizer->Fit(this);
+ sizer->SetSizeHints(this);
+
+ // Create a timer to update the current position.
+ m_timer = new wxTimer(this, MIDI_UPDATE);
+ m_timer->Start(100);
+
+ UpdateStatus();
+}
+
+
+MIDIStreamFrame::~MIDIStreamFrame() {
+ m_timer->Stop();
+ delete m_timer;
+}
+
+
+void MIDIStreamFrame::OnPlay(wxCommandEvent&) {
+ m_stream->play();
+}
+
+
+void MIDIStreamFrame::OnPause(wxCommandEvent&) {
+ m_stream->pause();
+}
+
+
+void MIDIStreamFrame::OnStop(wxCommandEvent&) {
+ m_stream->stop();
+}
+
+
+void MIDIStreamFrame::OnRepeat(wxCommandEvent&) {
+ m_stream->setRepeat(m_repeating->GetValue());
+}
+
+
+void MIDIStreamFrame::OnChangePos(wxScrollEvent&) {
+ float pos = m_pos->GetValue() / 1000.0f;
+ int len = m_stream->getLength();
+ m_stream->setPosition(int(pos * len));
+}
+
+void MIDIStreamFrame::OnUpdateStatus(wxTimerEvent&) {
+ UpdateStatus();
+}
+
+
+void MIDIStreamFrame::UpdateStatus() {
+ m_is_playing_label->SetLabel(m_stream->isPlaying() ? wxT("Playing") : wxT("Stopped"));
+
+ int pos = m_stream->getPosition();
+ int len = m_stream->getLength();
+
+ wxString label;
+ label.Printf(wxT("Pos/Len: %d / %d"), pos, len);
+ m_length_pos_label->SetLabel(label);
+
+ float l = (len == 0 ? 0.0f : float(pos) / len);
+ m_pos->SetValue(int(l * 1000));
+}
diff --git a/examples/wxPlayer/MIDIStreamFrame.h b/examples/wxPlayer/MIDIStreamFrame.h
new file mode 100755
index 0000000..62bb03e
--- /dev/null
+++ b/examples/wxPlayer/MIDIStreamFrame.h
@@ -0,0 +1,41 @@
+#ifndef ADR_MIDI_STREAM_FRAME_H
+#define ADR_MIDI_STREAM_FRAME_H
+
+
+#include <audiere.h>
+#include "wx.h"
+
+
+class MIDIStreamFrame : public wxMDIChildFrame {
+public:
+ MIDIStreamFrame(
+ wxMDIParentFrame* parent,
+ const wxString& title,
+ audiere::MIDIStreamPtr stream);
+ ~MIDIStreamFrame();
+
+ void OnPlay(wxCommandEvent&);
+ void OnPause(wxCommandEvent&);
+ void OnStop(wxCommandEvent&);
+
+ void OnRepeat(wxCommandEvent&);
+ void OnChangePos(wxScrollEvent&);
+ void OnUpdateStatus(wxTimerEvent&);
+
+ void UpdateStatus();
+
+private:
+ audiere::MIDIStreamPtr m_stream;
+
+ wxTimer* m_timer;
+
+ wxCheckBox* m_repeating;
+ wxStaticText* m_is_playing_label;
+ wxStaticText* m_length_pos_label;
+ wxSlider* m_pos;
+
+ DECLARE_EVENT_TABLE()
+};
+
+
+#endif
diff --git a/examples/wxPlayer/Makefile.am b/examples/wxPlayer/Makefile.am
new file mode 100644
index 0000000..2317977
--- /dev/null
+++ b/examples/wxPlayer/Makefile.am
@@ -0,0 +1,43 @@
+INCLUDES = -I $(top_srcdir)/src
+
+SRC = \
+ CDDeviceDialog.cpp \
+ CDDeviceDialog.h \
+ CDDeviceFrame.cpp \
+ CDDeviceFrame.h \
+ Commands.h \
+ DeviceFrame.cpp \
+ DeviceFrame.h \
+ EditLoopPointsDialog.cpp \
+ EditLoopPointsDialog.h \
+ MIDIDeviceDialog.cpp \
+ MIDIDeviceDialog.h \
+ MIDIDeviceFrame.cpp \
+ MIDIDeviceFrame.h \
+ MIDIStreamFrame.cpp \
+ MIDIStreamFrame.h \
+ NewDeviceDialog.cpp \
+ NewDeviceDialog.h \
+ SoundEffectFrame.cpp \
+ SoundEffectFrame.h \
+ StreamFrame.cpp \
+ StreamFrame.h \
+ TagsDialog.cpp \
+ wx.h \
+ wxPlayer.cpp \
+ wxPlayer.h
+
+if HAVE_WXWINDOWS
+
+bin_PROGRAMS = wxPlayer
+wxPlayer_LDADD = $(top_builddir)/src/libaudiere.la
+wxPlayer_CXXFLAGS = @WX_CPPFLAGS@
+wxPlayer_LDFLAGS = @WX_LIBS@
+
+wxPlayer_SOURCES = $(SRC)
+
+else
+
+EXTRA_DIST = $(SRC)
+
+endif
diff --git a/examples/wxPlayer/Makefile.in b/examples/wxPlayer/Makefile.in
new file mode 100644
index 0000000..ce818bd
--- /dev/null
+++ b/examples/wxPlayer/Makefile.in
@@ -0,0 +1,711 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+LIBOBJDIR =
+@HAVE_WXWINDOWS_TRUE@bin_PROGRAMS = wxPlayer$(EXEEXT)
+subdir = examples/wxPlayer
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_CLEAN_FILES =
+am__installdirs = "$(DESTDIR)$(bindir)"
+binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
+PROGRAMS = $(bin_PROGRAMS)
+am__wxPlayer_SOURCES_DIST = CDDeviceDialog.cpp CDDeviceDialog.h \
+ CDDeviceFrame.cpp CDDeviceFrame.h Commands.h DeviceFrame.cpp \
+ DeviceFrame.h EditLoopPointsDialog.cpp EditLoopPointsDialog.h \
+ MIDIDeviceDialog.cpp MIDIDeviceDialog.h MIDIDeviceFrame.cpp \
+ MIDIDeviceFrame.h MIDIStreamFrame.cpp MIDIStreamFrame.h \
+ NewDeviceDialog.cpp NewDeviceDialog.h SoundEffectFrame.cpp \
+ SoundEffectFrame.h StreamFrame.cpp StreamFrame.h \
+ TagsDialog.cpp wx.h wxPlayer.cpp wxPlayer.h
+am__objects_1 = wxPlayer-CDDeviceDialog.$(OBJEXT) \
+ wxPlayer-CDDeviceFrame.$(OBJEXT) \
+ wxPlayer-DeviceFrame.$(OBJEXT) \
+ wxPlayer-EditLoopPointsDialog.$(OBJEXT) \
+ wxPlayer-MIDIDeviceDialog.$(OBJEXT) \
+ wxPlayer-MIDIDeviceFrame.$(OBJEXT) \
+ wxPlayer-MIDIStreamFrame.$(OBJEXT) \
+ wxPlayer-NewDeviceDialog.$(OBJEXT) \
+ wxPlayer-SoundEffectFrame.$(OBJEXT) \
+ wxPlayer-StreamFrame.$(OBJEXT) wxPlayer-TagsDialog.$(OBJEXT) \
+ wxPlayer-wxPlayer.$(OBJEXT)
+@HAVE_WXWINDOWS_TRUE@am_wxPlayer_OBJECTS = $(am__objects_1)
+wxPlayer_OBJECTS = $(am_wxPlayer_OBJECTS)
+@HAVE_WXWINDOWS_TRUE@wxPlayer_DEPENDENCIES = \
+@HAVE_WXWINDOWS_TRUE@ $(top_builddir)/src/libaudiere.la
+DEFAULT_INCLUDES = -I. -I$(srcdir)
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+LTCXXCOMPILE = $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CXXFLAGS) $(CXXFLAGS)
+CXXLD = $(CXX)
+CXXLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXXLD) $(AM_CXXFLAGS) \
+ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = $(wxPlayer_SOURCES)
+DIST_SOURCES = $(am__wxPlayer_SOURCES_DIST)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+EXTRA_LIBS = @EXTRA_LIBS@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+HAVE_AL_FALSE = @HAVE_AL_FALSE@
+HAVE_AL_TRUE = @HAVE_AL_TRUE@
+HAVE_DSOUND_FALSE = @HAVE_DSOUND_FALSE@
+HAVE_DSOUND_TRUE = @HAVE_DSOUND_TRUE@
+HAVE_DUMB_FALSE = @HAVE_DUMB_FALSE@
+HAVE_DUMB_TRUE = @HAVE_DUMB_TRUE@
+HAVE_FLAC_FALSE = @HAVE_FLAC_FALSE@
+HAVE_FLAC_TRUE = @HAVE_FLAC_TRUE@
+HAVE_LIBCDAUDIO_FALSE = @HAVE_LIBCDAUDIO_FALSE@
+HAVE_LIBCDAUDIO_TRUE = @HAVE_LIBCDAUDIO_TRUE@
+HAVE_OGG_FALSE = @HAVE_OGG_FALSE@
+HAVE_OGG_TRUE = @HAVE_OGG_TRUE@
+HAVE_OSS_FALSE = @HAVE_OSS_FALSE@
+HAVE_OSS_TRUE = @HAVE_OSS_TRUE@
+HAVE_SPEEX_FALSE = @HAVE_SPEEX_FALSE@
+HAVE_SPEEX_TRUE = @HAVE_SPEEX_TRUE@
+HAVE_WINMM_FALSE = @HAVE_WINMM_FALSE@
+HAVE_WINMM_TRUE = @HAVE_WINMM_TRUE@
+HAVE_WXWINDOWS_FALSE = @HAVE_WXWINDOWS_FALSE@
+HAVE_WXWINDOWS_TRUE = @HAVE_WXWINDOWS_TRUE@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+WORDS_BIGENDIAN = @WORDS_BIGENDIAN@
+WX_CONFIG = @WX_CONFIG@
+WX_CPPFLAGS = @WX_CPPFLAGS@
+WX_LIBS = @WX_LIBS@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+INCLUDES = -I $(top_srcdir)/src
+SRC = \
+ CDDeviceDialog.cpp \
+ CDDeviceDialog.h \
+ CDDeviceFrame.cpp \
+ CDDeviceFrame.h \
+ Commands.h \
+ DeviceFrame.cpp \
+ DeviceFrame.h \
+ EditLoopPointsDialog.cpp \
+ EditLoopPointsDialog.h \
+ MIDIDeviceDialog.cpp \
+ MIDIDeviceDialog.h \
+ MIDIDeviceFrame.cpp \
+ MIDIDeviceFrame.h \
+ MIDIStreamFrame.cpp \
+ MIDIStreamFrame.h \
+ NewDeviceDialog.cpp \
+ NewDeviceDialog.h \
+ SoundEffectFrame.cpp \
+ SoundEffectFrame.h \
+ StreamFrame.cpp \
+ StreamFrame.h \
+ TagsDialog.cpp \
+ wx.h \
+ wxPlayer.cpp \
+ wxPlayer.h
+
+@HAVE_WXWINDOWS_TRUE@wxPlayer_LDADD = $(top_builddir)/src/libaudiere.la
+@HAVE_WXWINDOWS_TRUE@wxPlayer_CXXFLAGS = @WX_CPPFLAGS@
+@HAVE_WXWINDOWS_TRUE@wxPlayer_LDFLAGS = @WX_LIBS@
+@HAVE_WXWINDOWS_TRUE@wxPlayer_SOURCES = $(SRC)
+@HAVE_WXWINDOWS_FALSE@EXTRA_DIST = $(SRC)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .cpp .lo .o .obj
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign examples/wxPlayer/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --foreign examples/wxPlayer/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+install-binPROGRAMS: $(bin_PROGRAMS)
+ @$(NORMAL_INSTALL)
+ test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
+ @list='$(bin_PROGRAMS)'; for p in $$list; do \
+ p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ if test -f $$p \
+ || test -f $$p1 \
+ ; then \
+ f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
+ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \
+ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \
+ else :; fi; \
+ done
+
+uninstall-binPROGRAMS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(bin_PROGRAMS)'; for p in $$list; do \
+ f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
+ echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
+ rm -f "$(DESTDIR)$(bindir)/$$f"; \
+ done
+
+clean-binPROGRAMS:
+ @list='$(bin_PROGRAMS)'; for p in $$list; do \
+ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f $$p $$f"; \
+ rm -f $$p $$f ; \
+ done
+wxPlayer$(EXEEXT): $(wxPlayer_OBJECTS) $(wxPlayer_DEPENDENCIES)
+ @rm -f wxPlayer$(EXEEXT)
+ $(CXXLINK) $(wxPlayer_LDFLAGS) $(wxPlayer_OBJECTS) $(wxPlayer_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wxPlayer-CDDeviceDialog.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wxPlayer-CDDeviceFrame.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wxPlayer-DeviceFrame.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wxPlayer-EditLoopPointsDialog.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wxPlayer-MIDIDeviceDialog.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wxPlayer-MIDIDeviceFrame.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wxPlayer-MIDIStreamFrame.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wxPlayer-NewDeviceDialog.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wxPlayer-SoundEffectFrame.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wxPlayer-StreamFrame.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wxPlayer-TagsDialog.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wxPlayer-wxPlayer.Po@am__quote@
+
+.cpp.o:
+@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $<
+
+.cpp.obj:
+@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.cpp.lo:
+@am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $<
+
+wxPlayer-CDDeviceDialog.o: CDDeviceDialog.cpp
+@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(wxPlayer_CXXFLAGS) $(CXXFLAGS) -MT wxPlayer-CDDeviceDialog.o -MD -MP -MF "$(DEPDIR)/wxPlayer-CDDeviceDialog.Tpo" -c -o wxPlayer-CDDeviceDialog.o `test -f 'CDDeviceDialog.cpp' || echo '$(srcdir)/'`CDDeviceDialog.cpp; \
+@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/wxPlayer-CDDeviceDialog.Tpo" "$(DEPDIR)/wxPlayer-CDDeviceDialog.Po"; else rm -f "$(DEPDIR)/wxPlayer-CDDeviceDialog.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='CDDeviceDialog.cpp' object='wxPlayer-CDDeviceDialog.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(wxPlayer_CXXFLAGS) $(CXXFLAGS) -c -o wxPlayer-CDDeviceDialog.o `test -f 'CDDeviceDialog.cpp' || echo '$(srcdir)/'`CDDeviceDialog.cpp
+
+wxPlayer-CDDeviceDialog.obj: CDDeviceDialog.cpp
+@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(wxPlayer_CXXFLAGS) $(CXXFLAGS) -MT wxPlayer-CDDeviceDialog.obj -MD -MP -MF "$(DEPDIR)/wxPlayer-CDDeviceDialog.Tpo" -c -o wxPlayer-CDDeviceDialog.obj `if test -f 'CDDeviceDialog.cpp'; then $(CYGPATH_W) 'CDDeviceDialog.cpp'; else $(CYGPATH_W) '$(srcdir)/CDDeviceDialog.cpp'; fi`; \
+@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/wxPlayer-CDDeviceDialog.Tpo" "$(DEPDIR)/wxPlayer-CDDeviceDialog.Po"; else rm -f "$(DEPDIR)/wxPlayer-CDDeviceDialog.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='CDDeviceDialog.cpp' object='wxPlayer-CDDeviceDialog.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(wxPlayer_CXXFLAGS) $(CXXFLAGS) -c -o wxPlayer-CDDeviceDialog.obj `if test -f 'CDDeviceDialog.cpp'; then $(CYGPATH_W) 'CDDeviceDialog.cpp'; else $(CYGPATH_W) '$(srcdir)/CDDeviceDialog.cpp'; fi`
+
+wxPlayer-CDDeviceFrame.o: CDDeviceFrame.cpp
+@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(wxPlayer_CXXFLAGS) $(CXXFLAGS) -MT wxPlayer-CDDeviceFrame.o -MD -MP -MF "$(DEPDIR)/wxPlayer-CDDeviceFrame.Tpo" -c -o wxPlayer-CDDeviceFrame.o `test -f 'CDDeviceFrame.cpp' || echo '$(srcdir)/'`CDDeviceFrame.cpp; \
+@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/wxPlayer-CDDeviceFrame.Tpo" "$(DEPDIR)/wxPlayer-CDDeviceFrame.Po"; else rm -f "$(DEPDIR)/wxPlayer-CDDeviceFrame.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='CDDeviceFrame.cpp' object='wxPlayer-CDDeviceFrame.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(wxPlayer_CXXFLAGS) $(CXXFLAGS) -c -o wxPlayer-CDDeviceFrame.o `test -f 'CDDeviceFrame.cpp' || echo '$(srcdir)/'`CDDeviceFrame.cpp
+
+wxPlayer-CDDeviceFrame.obj: CDDeviceFrame.cpp
+@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(wxPlayer_CXXFLAGS) $(CXXFLAGS) -MT wxPlayer-CDDeviceFrame.obj -MD -MP -MF "$(DEPDIR)/wxPlayer-CDDeviceFrame.Tpo" -c -o wxPlayer-CDDeviceFrame.obj `if test -f 'CDDeviceFrame.cpp'; then $(CYGPATH_W) 'CDDeviceFrame.cpp'; else $(CYGPATH_W) '$(srcdir)/CDDeviceFrame.cpp'; fi`; \
+@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/wxPlayer-CDDeviceFrame.Tpo" "$(DEPDIR)/wxPlayer-CDDeviceFrame.Po"; else rm -f "$(DEPDIR)/wxPlayer-CDDeviceFrame.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='CDDeviceFrame.cpp' object='wxPlayer-CDDeviceFrame.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(wxPlayer_CXXFLAGS) $(CXXFLAGS) -c -o wxPlayer-CDDeviceFrame.obj `if test -f 'CDDeviceFrame.cpp'; then $(CYGPATH_W) 'CDDeviceFrame.cpp'; else $(CYGPATH_W) '$(srcdir)/CDDeviceFrame.cpp'; fi`
+
+wxPlayer-DeviceFrame.o: DeviceFrame.cpp
+@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(wxPlayer_CXXFLAGS) $(CXXFLAGS) -MT wxPlayer-DeviceFrame.o -MD -MP -MF "$(DEPDIR)/wxPlayer-DeviceFrame.Tpo" -c -o wxPlayer-DeviceFrame.o `test -f 'DeviceFrame.cpp' || echo '$(srcdir)/'`DeviceFrame.cpp; \
+@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/wxPlayer-DeviceFrame.Tpo" "$(DEPDIR)/wxPlayer-DeviceFrame.Po"; else rm -f "$(DEPDIR)/wxPlayer-DeviceFrame.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='DeviceFrame.cpp' object='wxPlayer-DeviceFrame.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(wxPlayer_CXXFLAGS) $(CXXFLAGS) -c -o wxPlayer-DeviceFrame.o `test -f 'DeviceFrame.cpp' || echo '$(srcdir)/'`DeviceFrame.cpp
+
+wxPlayer-DeviceFrame.obj: DeviceFrame.cpp
+@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(wxPlayer_CXXFLAGS) $(CXXFLAGS) -MT wxPlayer-DeviceFrame.obj -MD -MP -MF "$(DEPDIR)/wxPlayer-DeviceFrame.Tpo" -c -o wxPlayer-DeviceFrame.obj `if test -f 'DeviceFrame.cpp'; then $(CYGPATH_W) 'DeviceFrame.cpp'; else $(CYGPATH_W) '$(srcdir)/DeviceFrame.cpp'; fi`; \
+@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/wxPlayer-DeviceFrame.Tpo" "$(DEPDIR)/wxPlayer-DeviceFrame.Po"; else rm -f "$(DEPDIR)/wxPlayer-DeviceFrame.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='DeviceFrame.cpp' object='wxPlayer-DeviceFrame.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(wxPlayer_CXXFLAGS) $(CXXFLAGS) -c -o wxPlayer-DeviceFrame.obj `if test -f 'DeviceFrame.cpp'; then $(CYGPATH_W) 'DeviceFrame.cpp'; else $(CYGPATH_W) '$(srcdir)/DeviceFrame.cpp'; fi`
+
+wxPlayer-EditLoopPointsDialog.o: EditLoopPointsDialog.cpp
+@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(wxPlayer_CXXFLAGS) $(CXXFLAGS) -MT wxPlayer-EditLoopPointsDialog.o -MD -MP -MF "$(DEPDIR)/wxPlayer-EditLoopPointsDialog.Tpo" -c -o wxPlayer-EditLoopPointsDialog.o `test -f 'EditLoopPointsDialog.cpp' || echo '$(srcdir)/'`EditLoopPointsDialog.cpp; \
+@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/wxPlayer-EditLoopPointsDialog.Tpo" "$(DEPDIR)/wxPlayer-EditLoopPointsDialog.Po"; else rm -f "$(DEPDIR)/wxPlayer-EditLoopPointsDialog.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='EditLoopPointsDialog.cpp' object='wxPlayer-EditLoopPointsDialog.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(wxPlayer_CXXFLAGS) $(CXXFLAGS) -c -o wxPlayer-EditLoopPointsDialog.o `test -f 'EditLoopPointsDialog.cpp' || echo '$(srcdir)/'`EditLoopPointsDialog.cpp
+
+wxPlayer-EditLoopPointsDialog.obj: EditLoopPointsDialog.cpp
+@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(wxPlayer_CXXFLAGS) $(CXXFLAGS) -MT wxPlayer-EditLoopPointsDialog.obj -MD -MP -MF "$(DEPDIR)/wxPlayer-EditLoopPointsDialog.Tpo" -c -o wxPlayer-EditLoopPointsDialog.obj `if test -f 'EditLoopPointsDialog.cpp'; then $(CYGPATH_W) 'EditLoopPointsDialog.cpp'; else $(CYGPATH_W) '$(srcdir)/EditLoopPointsDialog.cpp'; fi`; \
+@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/wxPlayer-EditLoopPointsDialog.Tpo" "$(DEPDIR)/wxPlayer-EditLoopPointsDialog.Po"; else rm -f "$(DEPDIR)/wxPlayer-EditLoopPointsDialog.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='EditLoopPointsDialog.cpp' object='wxPlayer-EditLoopPointsDialog.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(wxPlayer_CXXFLAGS) $(CXXFLAGS) -c -o wxPlayer-EditLoopPointsDialog.obj `if test -f 'EditLoopPointsDialog.cpp'; then $(CYGPATH_W) 'EditLoopPointsDialog.cpp'; else $(CYGPATH_W) '$(srcdir)/EditLoopPointsDialog.cpp'; fi`
+
+wxPlayer-MIDIDeviceDialog.o: MIDIDeviceDialog.cpp
+@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(wxPlayer_CXXFLAGS) $(CXXFLAGS) -MT wxPlayer-MIDIDeviceDialog.o -MD -MP -MF "$(DEPDIR)/wxPlayer-MIDIDeviceDialog.Tpo" -c -o wxPlayer-MIDIDeviceDialog.o `test -f 'MIDIDeviceDialog.cpp' || echo '$(srcdir)/'`MIDIDeviceDialog.cpp; \
+@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/wxPlayer-MIDIDeviceDialog.Tpo" "$(DEPDIR)/wxPlayer-MIDIDeviceDialog.Po"; else rm -f "$(DEPDIR)/wxPlayer-MIDIDeviceDialog.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='MIDIDeviceDialog.cpp' object='wxPlayer-MIDIDeviceDialog.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(wxPlayer_CXXFLAGS) $(CXXFLAGS) -c -o wxPlayer-MIDIDeviceDialog.o `test -f 'MIDIDeviceDialog.cpp' || echo '$(srcdir)/'`MIDIDeviceDialog.cpp
+
+wxPlayer-MIDIDeviceDialog.obj: MIDIDeviceDialog.cpp
+@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(wxPlayer_CXXFLAGS) $(CXXFLAGS) -MT wxPlayer-MIDIDeviceDialog.obj -MD -MP -MF "$(DEPDIR)/wxPlayer-MIDIDeviceDialog.Tpo" -c -o wxPlayer-MIDIDeviceDialog.obj `if test -f 'MIDIDeviceDialog.cpp'; then $(CYGPATH_W) 'MIDIDeviceDialog.cpp'; else $(CYGPATH_W) '$(srcdir)/MIDIDeviceDialog.cpp'; fi`; \
+@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/wxPlayer-MIDIDeviceDialog.Tpo" "$(DEPDIR)/wxPlayer-MIDIDeviceDialog.Po"; else rm -f "$(DEPDIR)/wxPlayer-MIDIDeviceDialog.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='MIDIDeviceDialog.cpp' object='wxPlayer-MIDIDeviceDialog.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(wxPlayer_CXXFLAGS) $(CXXFLAGS) -c -o wxPlayer-MIDIDeviceDialog.obj `if test -f 'MIDIDeviceDialog.cpp'; then $(CYGPATH_W) 'MIDIDeviceDialog.cpp'; else $(CYGPATH_W) '$(srcdir)/MIDIDeviceDialog.cpp'; fi`
+
+wxPlayer-MIDIDeviceFrame.o: MIDIDeviceFrame.cpp
+@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(wxPlayer_CXXFLAGS) $(CXXFLAGS) -MT wxPlayer-MIDIDeviceFrame.o -MD -MP -MF "$(DEPDIR)/wxPlayer-MIDIDeviceFrame.Tpo" -c -o wxPlayer-MIDIDeviceFrame.o `test -f 'MIDIDeviceFrame.cpp' || echo '$(srcdir)/'`MIDIDeviceFrame.cpp; \
+@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/wxPlayer-MIDIDeviceFrame.Tpo" "$(DEPDIR)/wxPlayer-MIDIDeviceFrame.Po"; else rm -f "$(DEPDIR)/wxPlayer-MIDIDeviceFrame.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='MIDIDeviceFrame.cpp' object='wxPlayer-MIDIDeviceFrame.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(wxPlayer_CXXFLAGS) $(CXXFLAGS) -c -o wxPlayer-MIDIDeviceFrame.o `test -f 'MIDIDeviceFrame.cpp' || echo '$(srcdir)/'`MIDIDeviceFrame.cpp
+
+wxPlayer-MIDIDeviceFrame.obj: MIDIDeviceFrame.cpp
+@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(wxPlayer_CXXFLAGS) $(CXXFLAGS) -MT wxPlayer-MIDIDeviceFrame.obj -MD -MP -MF "$(DEPDIR)/wxPlayer-MIDIDeviceFrame.Tpo" -c -o wxPlayer-MIDIDeviceFrame.obj `if test -f 'MIDIDeviceFrame.cpp'; then $(CYGPATH_W) 'MIDIDeviceFrame.cpp'; else $(CYGPATH_W) '$(srcdir)/MIDIDeviceFrame.cpp'; fi`; \
+@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/wxPlayer-MIDIDeviceFrame.Tpo" "$(DEPDIR)/wxPlayer-MIDIDeviceFrame.Po"; else rm -f "$(DEPDIR)/wxPlayer-MIDIDeviceFrame.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='MIDIDeviceFrame.cpp' object='wxPlayer-MIDIDeviceFrame.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(wxPlayer_CXXFLAGS) $(CXXFLAGS) -c -o wxPlayer-MIDIDeviceFrame.obj `if test -f 'MIDIDeviceFrame.cpp'; then $(CYGPATH_W) 'MIDIDeviceFrame.cpp'; else $(CYGPATH_W) '$(srcdir)/MIDIDeviceFrame.cpp'; fi`
+
+wxPlayer-MIDIStreamFrame.o: MIDIStreamFrame.cpp
+@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(wxPlayer_CXXFLAGS) $(CXXFLAGS) -MT wxPlayer-MIDIStreamFrame.o -MD -MP -MF "$(DEPDIR)/wxPlayer-MIDIStreamFrame.Tpo" -c -o wxPlayer-MIDIStreamFrame.o `test -f 'MIDIStreamFrame.cpp' || echo '$(srcdir)/'`MIDIStreamFrame.cpp; \
+@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/wxPlayer-MIDIStreamFrame.Tpo" "$(DEPDIR)/wxPlayer-MIDIStreamFrame.Po"; else rm -f "$(DEPDIR)/wxPlayer-MIDIStreamFrame.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='MIDIStreamFrame.cpp' object='wxPlayer-MIDIStreamFrame.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(wxPlayer_CXXFLAGS) $(CXXFLAGS) -c -o wxPlayer-MIDIStreamFrame.o `test -f 'MIDIStreamFrame.cpp' || echo '$(srcdir)/'`MIDIStreamFrame.cpp
+
+wxPlayer-MIDIStreamFrame.obj: MIDIStreamFrame.cpp
+@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(wxPlayer_CXXFLAGS) $(CXXFLAGS) -MT wxPlayer-MIDIStreamFrame.obj -MD -MP -MF "$(DEPDIR)/wxPlayer-MIDIStreamFrame.Tpo" -c -o wxPlayer-MIDIStreamFrame.obj `if test -f 'MIDIStreamFrame.cpp'; then $(CYGPATH_W) 'MIDIStreamFrame.cpp'; else $(CYGPATH_W) '$(srcdir)/MIDIStreamFrame.cpp'; fi`; \
+@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/wxPlayer-MIDIStreamFrame.Tpo" "$(DEPDIR)/wxPlayer-MIDIStreamFrame.Po"; else rm -f "$(DEPDIR)/wxPlayer-MIDIStreamFrame.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='MIDIStreamFrame.cpp' object='wxPlayer-MIDIStreamFrame.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(wxPlayer_CXXFLAGS) $(CXXFLAGS) -c -o wxPlayer-MIDIStreamFrame.obj `if test -f 'MIDIStreamFrame.cpp'; then $(CYGPATH_W) 'MIDIStreamFrame.cpp'; else $(CYGPATH_W) '$(srcdir)/MIDIStreamFrame.cpp'; fi`
+
+wxPlayer-NewDeviceDialog.o: NewDeviceDialog.cpp
+@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(wxPlayer_CXXFLAGS) $(CXXFLAGS) -MT wxPlayer-NewDeviceDialog.o -MD -MP -MF "$(DEPDIR)/wxPlayer-NewDeviceDialog.Tpo" -c -o wxPlayer-NewDeviceDialog.o `test -f 'NewDeviceDialog.cpp' || echo '$(srcdir)/'`NewDeviceDialog.cpp; \
+@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/wxPlayer-NewDeviceDialog.Tpo" "$(DEPDIR)/wxPlayer-NewDeviceDialog.Po"; else rm -f "$(DEPDIR)/wxPlayer-NewDeviceDialog.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='NewDeviceDialog.cpp' object='wxPlayer-NewDeviceDialog.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(wxPlayer_CXXFLAGS) $(CXXFLAGS) -c -o wxPlayer-NewDeviceDialog.o `test -f 'NewDeviceDialog.cpp' || echo '$(srcdir)/'`NewDeviceDialog.cpp
+
+wxPlayer-NewDeviceDialog.obj: NewDeviceDialog.cpp
+@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(wxPlayer_CXXFLAGS) $(CXXFLAGS) -MT wxPlayer-NewDeviceDialog.obj -MD -MP -MF "$(DEPDIR)/wxPlayer-NewDeviceDialog.Tpo" -c -o wxPlayer-NewDeviceDialog.obj `if test -f 'NewDeviceDialog.cpp'; then $(CYGPATH_W) 'NewDeviceDialog.cpp'; else $(CYGPATH_W) '$(srcdir)/NewDeviceDialog.cpp'; fi`; \
+@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/wxPlayer-NewDeviceDialog.Tpo" "$(DEPDIR)/wxPlayer-NewDeviceDialog.Po"; else rm -f "$(DEPDIR)/wxPlayer-NewDeviceDialog.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='NewDeviceDialog.cpp' object='wxPlayer-NewDeviceDialog.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(wxPlayer_CXXFLAGS) $(CXXFLAGS) -c -o wxPlayer-NewDeviceDialog.obj `if test -f 'NewDeviceDialog.cpp'; then $(CYGPATH_W) 'NewDeviceDialog.cpp'; else $(CYGPATH_W) '$(srcdir)/NewDeviceDialog.cpp'; fi`
+
+wxPlayer-SoundEffectFrame.o: SoundEffectFrame.cpp
+@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(wxPlayer_CXXFLAGS) $(CXXFLAGS) -MT wxPlayer-SoundEffectFrame.o -MD -MP -MF "$(DEPDIR)/wxPlayer-SoundEffectFrame.Tpo" -c -o wxPlayer-SoundEffectFrame.o `test -f 'SoundEffectFrame.cpp' || echo '$(srcdir)/'`SoundEffectFrame.cpp; \
+@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/wxPlayer-SoundEffectFrame.Tpo" "$(DEPDIR)/wxPlayer-SoundEffectFrame.Po"; else rm -f "$(DEPDIR)/wxPlayer-SoundEffectFrame.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='SoundEffectFrame.cpp' object='wxPlayer-SoundEffectFrame.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(wxPlayer_CXXFLAGS) $(CXXFLAGS) -c -o wxPlayer-SoundEffectFrame.o `test -f 'SoundEffectFrame.cpp' || echo '$(srcdir)/'`SoundEffectFrame.cpp
+
+wxPlayer-SoundEffectFrame.obj: SoundEffectFrame.cpp
+@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(wxPlayer_CXXFLAGS) $(CXXFLAGS) -MT wxPlayer-SoundEffectFrame.obj -MD -MP -MF "$(DEPDIR)/wxPlayer-SoundEffectFrame.Tpo" -c -o wxPlayer-SoundEffectFrame.obj `if test -f 'SoundEffectFrame.cpp'; then $(CYGPATH_W) 'SoundEffectFrame.cpp'; else $(CYGPATH_W) '$(srcdir)/SoundEffectFrame.cpp'; fi`; \
+@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/wxPlayer-SoundEffectFrame.Tpo" "$(DEPDIR)/wxPlayer-SoundEffectFrame.Po"; else rm -f "$(DEPDIR)/wxPlayer-SoundEffectFrame.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='SoundEffectFrame.cpp' object='wxPlayer-SoundEffectFrame.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(wxPlayer_CXXFLAGS) $(CXXFLAGS) -c -o wxPlayer-SoundEffectFrame.obj `if test -f 'SoundEffectFrame.cpp'; then $(CYGPATH_W) 'SoundEffectFrame.cpp'; else $(CYGPATH_W) '$(srcdir)/SoundEffectFrame.cpp'; fi`
+
+wxPlayer-StreamFrame.o: StreamFrame.cpp
+@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(wxPlayer_CXXFLAGS) $(CXXFLAGS) -MT wxPlayer-StreamFrame.o -MD -MP -MF "$(DEPDIR)/wxPlayer-StreamFrame.Tpo" -c -o wxPlayer-StreamFrame.o `test -f 'StreamFrame.cpp' || echo '$(srcdir)/'`StreamFrame.cpp; \
+@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/wxPlayer-StreamFrame.Tpo" "$(DEPDIR)/wxPlayer-StreamFrame.Po"; else rm -f "$(DEPDIR)/wxPlayer-StreamFrame.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='StreamFrame.cpp' object='wxPlayer-StreamFrame.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(wxPlayer_CXXFLAGS) $(CXXFLAGS) -c -o wxPlayer-StreamFrame.o `test -f 'StreamFrame.cpp' || echo '$(srcdir)/'`StreamFrame.cpp
+
+wxPlayer-StreamFrame.obj: StreamFrame.cpp
+@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(wxPlayer_CXXFLAGS) $(CXXFLAGS) -MT wxPlayer-StreamFrame.obj -MD -MP -MF "$(DEPDIR)/wxPlayer-StreamFrame.Tpo" -c -o wxPlayer-StreamFrame.obj `if test -f 'StreamFrame.cpp'; then $(CYGPATH_W) 'StreamFrame.cpp'; else $(CYGPATH_W) '$(srcdir)/StreamFrame.cpp'; fi`; \
+@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/wxPlayer-StreamFrame.Tpo" "$(DEPDIR)/wxPlayer-StreamFrame.Po"; else rm -f "$(DEPDIR)/wxPlayer-StreamFrame.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='StreamFrame.cpp' object='wxPlayer-StreamFrame.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(wxPlayer_CXXFLAGS) $(CXXFLAGS) -c -o wxPlayer-StreamFrame.obj `if test -f 'StreamFrame.cpp'; then $(CYGPATH_W) 'StreamFrame.cpp'; else $(CYGPATH_W) '$(srcdir)/StreamFrame.cpp'; fi`
+
+wxPlayer-TagsDialog.o: TagsDialog.cpp
+@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(wxPlayer_CXXFLAGS) $(CXXFLAGS) -MT wxPlayer-TagsDialog.o -MD -MP -MF "$(DEPDIR)/wxPlayer-TagsDialog.Tpo" -c -o wxPlayer-TagsDialog.o `test -f 'TagsDialog.cpp' || echo '$(srcdir)/'`TagsDialog.cpp; \
+@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/wxPlayer-TagsDialog.Tpo" "$(DEPDIR)/wxPlayer-TagsDialog.Po"; else rm -f "$(DEPDIR)/wxPlayer-TagsDialog.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='TagsDialog.cpp' object='wxPlayer-TagsDialog.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(wxPlayer_CXXFLAGS) $(CXXFLAGS) -c -o wxPlayer-TagsDialog.o `test -f 'TagsDialog.cpp' || echo '$(srcdir)/'`TagsDialog.cpp
+
+wxPlayer-TagsDialog.obj: TagsDialog.cpp
+@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(wxPlayer_CXXFLAGS) $(CXXFLAGS) -MT wxPlayer-TagsDialog.obj -MD -MP -MF "$(DEPDIR)/wxPlayer-TagsDialog.Tpo" -c -o wxPlayer-TagsDialog.obj `if test -f 'TagsDialog.cpp'; then $(CYGPATH_W) 'TagsDialog.cpp'; else $(CYGPATH_W) '$(srcdir)/TagsDialog.cpp'; fi`; \
+@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/wxPlayer-TagsDialog.Tpo" "$(DEPDIR)/wxPlayer-TagsDialog.Po"; else rm -f "$(DEPDIR)/wxPlayer-TagsDialog.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='TagsDialog.cpp' object='wxPlayer-TagsDialog.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(wxPlayer_CXXFLAGS) $(CXXFLAGS) -c -o wxPlayer-TagsDialog.obj `if test -f 'TagsDialog.cpp'; then $(CYGPATH_W) 'TagsDialog.cpp'; else $(CYGPATH_W) '$(srcdir)/TagsDialog.cpp'; fi`
+
+wxPlayer-wxPlayer.o: wxPlayer.cpp
+@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(wxPlayer_CXXFLAGS) $(CXXFLAGS) -MT wxPlayer-wxPlayer.o -MD -MP -MF "$(DEPDIR)/wxPlayer-wxPlayer.Tpo" -c -o wxPlayer-wxPlayer.o `test -f 'wxPlayer.cpp' || echo '$(srcdir)/'`wxPlayer.cpp; \
+@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/wxPlayer-wxPlayer.Tpo" "$(DEPDIR)/wxPlayer-wxPlayer.Po"; else rm -f "$(DEPDIR)/wxPlayer-wxPlayer.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='wxPlayer.cpp' object='wxPlayer-wxPlayer.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(wxPlayer_CXXFLAGS) $(CXXFLAGS) -c -o wxPlayer-wxPlayer.o `test -f 'wxPlayer.cpp' || echo '$(srcdir)/'`wxPlayer.cpp
+
+wxPlayer-wxPlayer.obj: wxPlayer.cpp
+@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(wxPlayer_CXXFLAGS) $(CXXFLAGS) -MT wxPlayer-wxPlayer.obj -MD -MP -MF "$(DEPDIR)/wxPlayer-wxPlayer.Tpo" -c -o wxPlayer-wxPlayer.obj `if test -f 'wxPlayer.cpp'; then $(CYGPATH_W) 'wxPlayer.cpp'; else $(CYGPATH_W) '$(srcdir)/wxPlayer.cpp'; fi`; \
+@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/wxPlayer-wxPlayer.Tpo" "$(DEPDIR)/wxPlayer-wxPlayer.Po"; else rm -f "$(DEPDIR)/wxPlayer-wxPlayer.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='wxPlayer.cpp' object='wxPlayer-wxPlayer.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(wxPlayer_CXXFLAGS) $(CXXFLAGS) -c -o wxPlayer-wxPlayer.obj `if test -f 'wxPlayer.cpp'; then $(CYGPATH_W) 'wxPlayer.cpp'; else $(CYGPATH_W) '$(srcdir)/wxPlayer.cpp'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool
+uninstall-info-am:
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+ list='$(DISTFILES)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(PROGRAMS)
+installdirs:
+ for dir in "$(DESTDIR)$(bindir)"; do \
+ test -z "$$dir" || $(mkdir_p) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-libtool distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-exec-am: install-binPROGRAMS
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-binPROGRAMS uninstall-info-am
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
+ clean-generic clean-libtool ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-binPROGRAMS install-data install-data-am install-exec \
+ install-exec-am install-info install-info-am install-man \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+ pdf pdf-am ps ps-am tags uninstall uninstall-am \
+ uninstall-binPROGRAMS uninstall-info-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/examples/wxPlayer/NewDeviceDialog.cpp b/examples/wxPlayer/NewDeviceDialog.cpp
new file mode 100755
index 0000000..e4a9a11
--- /dev/null
+++ b/examples/wxPlayer/NewDeviceDialog.cpp
@@ -0,0 +1,79 @@
+#ifdef _MSC_VER
+#pragma warning(disable : 4786)
+#endif
+
+
+#include "NewDeviceDialog.h"
+
+
+BEGIN_EVENT_TABLE(NewDeviceDialog, wxDialog)
+ EVT_BUTTON(-1, NewDeviceDialog::OnButton)
+END_EVENT_TABLE()
+
+
+NewDeviceDialog::NewDeviceDialog(wxWindow* parent)
+ : wxDialog(parent, -1, wxString(wxT("New Device")))
+{
+ // size of text controls
+ static const wxSize size(300, 22);
+
+ audiere::GetSupportedAudioDevices(m_devices);
+ // create vertical sizer
+ wxBoxSizer* sizer = new wxBoxSizer(wxVERTICAL);
+
+ m_device = new wxChoice(this, -1, wxDefaultPosition, size);
+ m_device->Append(wxT("autodetect: Choose default device"));
+ for (unsigned i = 0; i < m_devices.size(); ++i) {
+ m_device->Append((CStr2wxString(m_devices[i].name.c_str()) + wxT(": ") + CStr2wxString(m_devices[i].description.c_str())));
+ }
+ m_device->SetSelection(0);
+ sizer->Add(m_device, 0, wxALIGN_CENTER | wxALL, 5);
+
+ // create parameters box
+ m_parameters = new wxTextCtrl(this, -1, wxT(""), wxDefaultPosition, size);
+ sizer->Add(m_parameters, 0, wxALIGN_CENTER | wxALL, 5);
+
+ // button bar
+ wxBoxSizer* buttonSizer = new wxBoxSizer(wxHORIZONTAL);
+ m_ok = new wxButton(this, wxID_OK, wxT("OK"));
+ buttonSizer->Add(m_ok, 0, wxALIGN_CENTER | wxALL, 5);
+ m_cancel = new wxButton(this, wxID_CANCEL, wxT("Cancel"));
+ buttonSizer->Add(m_cancel, 0, wxALIGN_CENTER | wxALL, 5);
+ sizer->Add(buttonSizer, 0, wxALIGN_CENTER | wxALL, 4);
+
+ SetAutoLayout(true);
+ SetSizer(sizer);
+
+ m_device->SetFocus();
+ m_ok->SetDefault();
+
+ sizer->Fit(this);
+ sizer->SetSizeHints(this);
+}
+
+
+const std::string& NewDeviceDialog::getDevice() const {
+ return m_device_str;
+}
+
+
+const std::string& NewDeviceDialog::getParameters() const {
+ return m_parameters_str;
+}
+
+
+void NewDeviceDialog::OnButton(wxCommandEvent& event) {
+ if (event.GetEventObject() == m_ok) {
+ int value = m_device->GetSelection();
+ if (value == 0) {
+ m_device_str = "autodetect";
+ } else {
+ m_device_str = m_devices[value - 1].name;
+ }
+
+ m_parameters_str = wxString2CStr(m_parameters->GetValue());
+ EndModal(wxID_OK);
+ } else if (event.GetEventObject() == m_cancel) {
+ EndModal(wxID_CANCEL);
+ }
+}
diff --git a/examples/wxPlayer/NewDeviceDialog.h b/examples/wxPlayer/NewDeviceDialog.h
new file mode 100755
index 0000000..9182049
--- /dev/null
+++ b/examples/wxPlayer/NewDeviceDialog.h
@@ -0,0 +1,35 @@
+#ifndef ADR_NEW_DEVICE_DIALOG_H
+#define ADR_NEW_DEVICE_DIALOG_H
+
+
+#include <vector>
+#include <audiere.h>
+#include "wx.h"
+
+
+class NewDeviceDialog : public wxDialog {
+public:
+ NewDeviceDialog(wxWindow* parent);
+
+ const std::string& getDevice() const;
+ const std::string& getParameters() const;
+
+private:
+ void OnButton(wxCommandEvent& event);
+
+ std::vector<audiere::AudioDeviceDesc> m_devices;
+
+ wxChoice* m_device;
+ wxTextCtrl* m_parameters;
+
+ wxButton* m_ok;
+ wxButton* m_cancel;
+
+ std::string m_device_str;
+ std::string m_parameters_str;
+
+ DECLARE_EVENT_TABLE()
+};
+
+
+#endif
diff --git a/examples/wxPlayer/SoundEffectFrame.cpp b/examples/wxPlayer/SoundEffectFrame.cpp
new file mode 100755
index 0000000..30c2c74
--- /dev/null
+++ b/examples/wxPlayer/SoundEffectFrame.cpp
@@ -0,0 +1,87 @@
+#ifdef _MSC_VER
+#pragma warning(disable : 4786)
+#endif
+
+
+#include "Commands.h"
+#include "SoundEffectFrame.h"
+
+
+BEGIN_EVENT_TABLE(SoundEffectFrame, wxMDIChildFrame)
+ EVT_BUTTON(EFFECT_PLAY, SoundEffectFrame::OnPlay)
+ EVT_BUTTON(EFFECT_STOP, SoundEffectFrame::OnStop)
+
+ EVT_COMMAND_SCROLL(STREAM_VOLUME, SoundEffectFrame::OnChangeVolume)
+ EVT_COMMAND_SCROLL(STREAM_PAN, SoundEffectFrame::OnChangePan)
+ EVT_COMMAND_SCROLL(STREAM_PITCH, SoundEffectFrame::OnChangePitch)
+END_EVENT_TABLE()
+
+
+SoundEffectFrame::SoundEffectFrame(wxMDIParentFrame* parent, const wxString& title, audiere::SoundEffectPtr effect)
+: wxMDIChildFrame(parent, -1, title)
+{
+ m_effect = effect;
+
+ wxBoxSizer* sizer = new wxBoxSizer(wxVERTICAL);
+ sizer->Add(
+ new wxButton(this, EFFECT_PLAY, wxT("Play")),
+ 1, wxEXPAND | wxALL, 4);
+ sizer->Add(
+ new wxButton(this, EFFECT_STOP, wxT("Stop")),
+ 1, wxEXPAND | wxALL, 4);
+ m_vpp_label = new wxStaticText(this, -1, wxT("Volume - Pan - Pitch"));
+ sizer->Add(m_vpp_label, 1, wxEXPAND | wxALL, 4);
+ m_volume = new wxSlider(this, STREAM_VOLUME, 100, 0, 100);
+ sizer->Add(m_volume, 1, wxEXPAND | wxALL, 4);
+ m_pan = new wxSlider(this, STREAM_PAN, 0, -100, 100);
+ sizer->Add(m_pan, 1, wxEXPAND | wxALL, 4);
+ m_pitch = new wxSlider(this, STREAM_PITCH, 100, 50, 200);
+ sizer->Add(m_pitch, 1, wxEXPAND | wxALL, 4);
+
+ UpdateVPPLabel();
+
+ SetAutoLayout(true);
+ SetSizer(sizer);
+
+ sizer->Fit(this);
+ sizer->SetSizeHints(this);
+}
+
+
+void SoundEffectFrame::OnPlay(wxCommandEvent&) {
+ m_effect->play();
+}
+
+
+void SoundEffectFrame::OnStop(wxCommandEvent&) {
+ m_effect->stop();
+}
+
+
+void SoundEffectFrame::OnChangeVolume(wxScrollEvent&) {
+ m_effect->setVolume(m_volume->GetValue() / 100.0f);
+ UpdateVPPLabel();
+}
+
+
+void SoundEffectFrame::OnChangePan(wxScrollEvent&) {
+ m_effect->setPan(m_pan->GetValue() / 100.0f);
+ UpdateVPPLabel();
+}
+
+
+void SoundEffectFrame::OnChangePitch(wxScrollEvent&) {
+ m_effect->setPitchShift(m_pitch->GetValue() / 100.0f);
+ UpdateVPPLabel();
+}
+
+
+void SoundEffectFrame::UpdateVPPLabel() {
+ wxString label;
+ label.Printf(
+ wxT("Vol: %1.2f Pan: %1.2f Pitch: %1.2f"),
+ m_volume->GetValue() / 100.0f,
+ m_pan->GetValue() / 100.0f,
+ m_pitch->GetValue() / 100.0f);
+ m_vpp_label->SetLabel(label);
+}
diff --git a/examples/wxPlayer/SoundEffectFrame.h b/examples/wxPlayer/SoundEffectFrame.h
new file mode 100755
index 0000000..9b7c852
--- /dev/null
+++ b/examples/wxPlayer/SoundEffectFrame.h
@@ -0,0 +1,32 @@
+#ifndef ADR_SOUND_EFFECT_FRAME_H
+#define ADR_SOUND_EFFECT_FRAME_H
+
+
+#include <audiere.h>
+#include "wx.h"
+
+
+class SoundEffectFrame : public wxMDIChildFrame {
+public:
+ SoundEffectFrame(wxMDIParentFrame* parent, const wxString& title, audiere::SoundEffectPtr effect);
+
+ void OnPlay(wxCommandEvent&);
+ void OnStop(wxCommandEvent&);
+ void OnChangeVolume(wxScrollEvent&);
+ void OnChangePan(wxScrollEvent&);
+ void OnChangePitch(wxScrollEvent&);
+ void UpdateVPPLabel();
+
+private:
+ audiere::SoundEffectPtr m_effect;
+
+ wxStaticText* m_vpp_label;
+ wxSlider* m_volume;
+ wxSlider* m_pan;
+ wxSlider* m_pitch;
+
+ DECLARE_EVENT_TABLE()
+};
+
+
+#endif
diff --git a/examples/wxPlayer/StreamFrame.cpp b/examples/wxPlayer/StreamFrame.cpp
new file mode 100755
index 0000000..5457b16
--- /dev/null
+++ b/examples/wxPlayer/StreamFrame.cpp
@@ -0,0 +1,223 @@
+#ifdef _MSC_VER
+#pragma warning(disable : 4786)
+#endif
+
+
+#include <sstream>
+#include "Commands.h"
+#include "EditLoopPointsDialog.h"
+#include "StreamFrame.h"
+#include "TagsDialog.h"
+
+
+BEGIN_EVENT_TABLE(StreamFrame, wxMDIChildFrame)
+ EVT_BUTTON(STREAM_PLAY, StreamFrame::OnPlay)
+ EVT_BUTTON(STREAM_STOP, StreamFrame::OnStop)
+ EVT_BUTTON(STREAM_RESET, StreamFrame::OnReset)
+ EVT_BUTTON(STREAM_VIEW_INFO, StreamFrame::OnViewInfo)
+ EVT_BUTTON(STREAM_EDIT_LOOP_POINTS, StreamFrame::OnEditLoopPoints)
+ EVT_BUTTON(STREAM_VIEW_TAGS, StreamFrame::OnViewTags)
+
+ EVT_CHECKBOX(STREAM_REPEAT, StreamFrame::OnRepeat)
+
+ EVT_COMMAND_SCROLL(STREAM_VOLUME, StreamFrame::OnChangeVolume)
+ EVT_COMMAND_SCROLL(STREAM_PAN, StreamFrame::OnChangePan)
+ EVT_COMMAND_SCROLL(STREAM_PITCH, StreamFrame::OnChangePitch)
+ EVT_COMMAND_SCROLL(STREAM_POS, StreamFrame::OnChangePos)
+
+ EVT_TIMER(STREAM_UPDATE, StreamFrame::OnUpdateStatus)
+END_EVENT_TABLE()
+
+
+StreamFrame::StreamFrame(
+ wxMDIParentFrame* parent,
+ const wxString& title,
+ audiere::OutputStreamPtr stream,
+ audiere::SampleSourcePtr source,
+ audiere::LoopPointSourcePtr loop_source)
+: wxMDIChildFrame(parent, -1, title)
+{
+ m_stream = stream;
+ m_source = source;
+ m_loop_source = loop_source;
+ m_stream_is_seekable = stream->isSeekable();
+ m_stream_length = stream->getLength();
+
+ wxBoxSizer* sizer = new wxBoxSizer(wxVERTICAL);
+ sizer->Add(
+ new wxButton(this, STREAM_PLAY, wxT("Play")),
+ 1, wxEXPAND | wxALL, 4);
+ sizer->Add(
+ new wxButton(this, STREAM_STOP, wxT("Stop")),
+ 1, wxEXPAND | wxALL, 4);
+ sizer->Add(
+ new wxButton(this, STREAM_RESET, wxT("Reset")),
+ 1, wxEXPAND | wxALL, 4);
+ m_playing_label = new wxStaticText(this, -1, wxT("Stopped"));
+ sizer->Add(m_playing_label, 1, wxEXPAND | wxALL, 4);
+ m_repeating = new wxCheckBox(this, STREAM_REPEAT, wxT("Repeating"));
+ sizer->Add(m_repeating, 1, wxEXPAND | wxALL, 4);
+ m_vpp_label = new wxStaticText(this, -1, wxT("Volume - Pan - Pitch"));
+ sizer->Add(m_vpp_label, 1, wxEXPAND | wxALL, 4);
+ m_volume = new wxSlider(this, STREAM_VOLUME, 100, 0, 100);
+ sizer->Add(m_volume, 1, wxEXPAND | wxALL, 4);
+ m_pan = new wxSlider(this, STREAM_PAN, 0, -100, 100);
+ sizer->Add(m_pan, 1, wxEXPAND | wxALL, 4);
+ m_pitch = new wxSlider(this, STREAM_PITCH, 100, 50, 200);
+ sizer->Add(m_pitch, 1, wxEXPAND | wxALL, 4);
+ m_length_pos_label = new wxStaticText(this, -1, wxT("Length - Pos"));
+ sizer->Add(m_length_pos_label, 1, wxEXPAND | wxALL, 4);
+ m_pos = new wxSlider(this, STREAM_POS, 0, 0, 1000);
+ sizer->Add(m_pos, 1, wxEXPAND | wxALL, 4);
+
+ wxButton* infoButton = new wxButton(
+ this, STREAM_VIEW_INFO, wxT("View Info"));
+ sizer->Add(infoButton, 1, wxEXPAND | wxALL, 4);
+
+ wxButton* editButton = new wxButton(
+ this, STREAM_EDIT_LOOP_POINTS, wxT("Edit Loop Points..."));
+ sizer->Add(editButton, 1, wxEXPAND | wxALL, 4);
+ if (!loop_source) {
+ editButton->Enable(false);
+ }
+
+ wxButton* tagsButton = new wxButton(
+ this, STREAM_VIEW_TAGS, wxT("View Tags..."));
+ sizer->Add(tagsButton, 1, wxEXPAND | wxALL, 4);
+
+ if (!m_stream_is_seekable) {
+ m_pos->Enable(false);
+ }
+
+ UpdateVPPLabel();
+ UpdateLengthPosLabel();
+
+ SetAutoLayout(true);
+ SetSizer(sizer);
+
+ sizer->Fit(this);
+ sizer->SetSizeHints(this);
+
+ // create a timer to update the current position
+ m_timer = new wxTimer(this, STREAM_UPDATE);
+ m_timer->Start(100);
+}
+
+
+StreamFrame::~StreamFrame() {
+ m_timer->Stop();
+ delete m_timer;
+}
+
+
+void StreamFrame::OnPlay(wxCommandEvent&) {
+ m_stream->play();
+}
+
+
+void StreamFrame::OnStop(wxCommandEvent&) {
+ m_stream->stop();
+}
+
+
+void StreamFrame::OnReset(wxCommandEvent&) {
+ m_stream->reset();
+}
+
+
+void StreamFrame::OnViewInfo(wxCommandEvent&) {
+ int channel_count, sample_rate;
+ audiere::SampleFormat format;
+ m_source->getFormat(channel_count, sample_rate, format);
+
+ const char* format_name;
+ if (format == audiere::SF_U8) {
+ format_name = "SF_U8";
+ } else if (format == audiere::SF_S16) {
+ format_name = "SF_S16";
+ } else {
+ format_name = "Unknown";
+ }
+
+ std::stringstream ss;
+ ss << "Channel Count: " << channel_count << std::endl;
+ ss << "Sample Rate: " << sample_rate << std::endl;
+ ss << "Format: " << format_name << std::endl;
+ wxMessageBox(CStr2wxString(ss.str().c_str()), wxT("Stream Info"), wxOK, this);
+}
+
+
+void StreamFrame::OnEditLoopPoints(wxCommandEvent&) {
+ EditLoopPointsDialog(this, m_loop_source.get()).ShowModal();
+}
+
+
+void StreamFrame::OnViewTags(wxCommandEvent&) {
+ TagsDialog(this, m_source.get()).ShowModal();
+}
+
+
+void StreamFrame::OnRepeat(wxCommandEvent&) {
+ m_stream->setRepeat(m_repeating->GetValue());
+}
+
+
+void StreamFrame::OnChangeVolume(wxScrollEvent&) {
+ m_stream->setVolume(m_volume->GetValue() / 100.0f);
+ UpdateVPPLabel();
+}
+
+
+void StreamFrame::OnChangePan(wxScrollEvent&) {
+ m_stream->setPan(m_pan->GetValue() / 100.0f);
+ UpdateVPPLabel();
+}
+
+
+void StreamFrame::OnChangePitch(wxScrollEvent&) {
+ m_stream->setPitchShift(m_pitch->GetValue() / 100.0f);
+ UpdateVPPLabel();
+}
+
+
+void StreamFrame::OnChangePos(wxScrollEvent&) {
+ float pos = float(m_pos->GetValue()) / 1000;
+ m_stream->setPosition(int(pos * m_stream_length));
+}
+
+
+void StreamFrame::OnUpdateStatus(wxTimerEvent&) {
+ if (m_stream_is_seekable) {
+ float pos = float(m_stream->getPosition()) / m_stream_length;
+ m_pos->SetValue(int(1000 * pos));
+ }
+ UpdateLengthPosLabel();
+
+ // update the playing label
+ m_playing_label->SetLabel(m_stream->isPlaying() ? wxT("Playing") : wxT("Stopped"));
+}
+
+
+void StreamFrame::UpdateVPPLabel() {
+ wxString label;
+ label.Printf(
+ wxT("Vol: %1.2f Pan: %1.2f Pitch: %1.2f"),
+ m_volume->GetValue() / 100.0f,
+ m_pan->GetValue() / 100.0f,
+ m_pitch->GetValue() / 100.0f);
+ m_vpp_label->SetLabel(label);
+}
+
+
+void StreamFrame::UpdateLengthPosLabel() {
+ if (m_stream_is_seekable) {
+ wxString label;
+ label.Printf(
+ wxT("Pos/Len: %d / %d"),
+ m_stream->getPosition(),
+ m_stream_length);
+ m_length_pos_label->SetLabel(label);
+ } else {
+ m_length_pos_label->SetLabel(wxT("Unseekable Stream"));
+ }
+}
diff --git a/examples/wxPlayer/StreamFrame.h b/examples/wxPlayer/StreamFrame.h
new file mode 100755
index 0000000..7c191d8
--- /dev/null
+++ b/examples/wxPlayer/StreamFrame.h
@@ -0,0 +1,60 @@
+#ifndef ADR_WX_STREAM_FRAME_H
+#define ADR_WX_STREAM_FRAME_H
+
+
+#include <audiere.h>
+#include "wx.h"
+
+
+class StreamFrame : public wxMDIChildFrame {
+public:
+ StreamFrame(
+ wxMDIParentFrame* parent,
+ const wxString& title,
+ audiere::OutputStreamPtr stream,
+ audiere::SampleSourcePtr source,
+ audiere::LoopPointSourcePtr loop_source = 0);
+ ~StreamFrame();
+
+ void OnPlay(wxCommandEvent&);
+ void OnStop(wxCommandEvent&);
+ void OnReset(wxCommandEvent&);
+ void OnViewInfo(wxCommandEvent&);
+ void OnEditLoopPoints(wxCommandEvent&);
+ void OnViewTags(wxCommandEvent&);
+
+ void OnRepeat(wxCommandEvent&);
+ void OnChangeVolume(wxScrollEvent&);
+ void OnChangePan(wxScrollEvent&);
+ void OnChangePitch(wxScrollEvent&);
+ void OnChangePos(wxScrollEvent&);
+ void OnUpdateStatus(wxTimerEvent&);
+ void UpdateVPPLabel();
+ void UpdateLengthPosLabel();
+
+private:
+ audiere::OutputStreamPtr m_stream;
+ audiere::SampleSourcePtr m_source;
+
+ /// Only a valid pointer when the output stream is fed from it.
+ audiere::LoopPointSourcePtr m_loop_source;
+
+ bool m_stream_is_seekable;
+ int m_stream_length;
+
+ wxTimer* m_timer;
+
+ wxStaticText* m_playing_label;
+ wxCheckBox* m_repeating;
+ wxStaticText* m_vpp_label;
+ wxSlider* m_volume;
+ wxSlider* m_pan;
+ wxSlider* m_pitch;
+ wxStaticText* m_length_pos_label;
+ wxSlider* m_pos;
+
+ DECLARE_EVENT_TABLE()
+};
+
+
+#endif
diff --git a/examples/wxPlayer/TagsDialog.cpp b/examples/wxPlayer/TagsDialog.cpp
new file mode 100755
index 0000000..4071704
--- /dev/null
+++ b/examples/wxPlayer/TagsDialog.cpp
@@ -0,0 +1,64 @@
+#ifdef _MSC_VER
+#pragma warning(disable : 4786)
+#endif
+
+
+#include <algorithm>
+#include "TagsDialog.h"
+
+
+BEGIN_EVENT_TABLE(TagsDialog, wxDialog)
+ EVT_CLOSE(TagsDialog::OnClose)
+ EVT_BUTTON(-1, TagsDialog::OnButton)
+END_EVENT_TABLE()
+
+
+TagsDialog::TagsDialog(
+ wxWindow* parent,
+ audiere::SampleSourcePtr source)
+: wxDialog(parent, -1, wxString(wxT("View Tags")), wxDefaultPosition,
+ wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER)
+{
+ wxBoxSizer* sizer = new wxBoxSizer(wxVERTICAL);
+ m_tags = new wxListBox(this, -1);
+ m_tags->SetFocus();
+
+ std::vector<std::string> tags;
+ {
+ for (int i = 0; i < source->getTagCount(); ++i) {
+ std::string tag = source->getTagType(i);
+ tag += ": ";
+ tag += source->getTagKey(i);
+ tag += "=";
+ tag += source->getTagValue(i);
+ tags.push_back(tag.c_str());
+ }
+ }
+ std::sort(tags.begin(), tags.end());
+ {
+ for (size_t i = 0; i < tags.size(); ++i) {
+ m_tags->Append(CStr2wxString(tags[i].c_str()));
+ }
+ }
+ sizer->Add(m_tags, 1, wxADJUST_MINSIZE | wxGROW | wxALIGN_CENTER | wxALL, 1);
+
+ m_close = new wxButton(this, wxID_CANCEL, wxT("Close"));
+ m_close->SetDefault();
+ sizer->Add(m_close, 0, wxALIGN_CENTER | wxALL, 1);
+
+ SetAutoLayout(true);
+ SetSizer(sizer);
+
+ sizer->Fit(this);
+ sizer->SetSizeHints(this);
+}
+
+
+void TagsDialog::OnButton(wxCommandEvent& event) {
+ EndModal(0);
+}
+
+
+void TagsDialog::OnClose(wxCloseEvent& event) {
+ EndModal(0);
+}
diff --git a/examples/wxPlayer/wx.h b/examples/wxPlayer/wx.h
new file mode 100755
index 0000000..222669c
--- /dev/null
+++ b/examples/wxPlayer/wx.h
@@ -0,0 +1,24 @@
+#ifndef ADR_WX_H
+#define ADR_WX_H
+
+
+#ifdef _MSC_VER
+ #pragma warning(disable : 4786)
+ #include <windows.h>
+ #ifdef CreateDialog
+ #undef CreateDialog
+ #endif
+#endif
+
+#include <wx/wx.h>
+
+#if defined(wxUSE_UNICODE) && wxUSE_UNICODE
+ #define CStr2wxString(x) wxString((const char *)x, wxConvUTF8)
+ #define wxString2CStr(x) x.mb_str(wxConvUTF8).data()
+#else
+ #define CStr2wxString(x) wxString((const char *)x)
+ #define wxString2CStr(x) x
+#endif
+
+
+#endif
diff --git a/examples/wxPlayer/wxPlayer.cpp b/examples/wxPlayer/wxPlayer.cpp
new file mode 100644
index 0000000..c639e96
--- /dev/null
+++ b/examples/wxPlayer/wxPlayer.cpp
@@ -0,0 +1,89 @@
+#ifdef _MSC_VER
+#pragma warning(disable : 4786)
+#endif
+
+
+#include <audiere.h>
+#include "CDDeviceDialog.h"
+#include "CDDeviceFrame.h"
+#include "DeviceFrame.h"
+#include "MIDIDeviceDialog.h"
+#include "MIDIDeviceFrame.h"
+#include "NewDeviceDialog.h"
+#include "wxPlayer.h"
+
+
+IMPLEMENT_APP(wxPlayer)
+
+
+bool wxPlayer::OnInit() {
+ bool result = (TryDevice("autodetect") || TryDevice("null"));
+ if (!result) {
+ wxMessageBox(wxT("Could not open output device"), wxT("wxPlayer"));
+ }
+ return result;
+}
+
+
+bool wxPlayer::TryDevice(const std::string& name, const std::string& parameters) {
+ if (audiere::AudioDevicePtr device = audiere::OpenDevice(name.c_str(), parameters.c_str())) {
+ (new DeviceFrame(device.get()))->Show(true);
+ return true;
+ } else {
+ return false;
+ }
+}
+
+
+void wxPlayer::OnNewDevice(wxWindow* parent) {
+ NewDeviceDialog dialog(parent);
+ if (dialog.ShowModal() == wxID_OK) {
+ bool result = TryDevice(
+ dialog.getDevice().c_str(),
+ dialog.getParameters().c_str());
+ if (!result) {
+ wxMessageBox(wxT("Error opening new device"), wxT("New Device"),
+ wxOK | wxICON_ERROR, parent);
+ }
+ }
+}
+
+
+void wxPlayer::OnNewCDDevice(wxWindow* parent) {
+ CDDeviceDialog dialog(parent);
+ if (dialog.ShowModal() == wxID_OK) {
+ audiere::CDDevicePtr device = audiere::OpenCDDevice(dialog.getName().c_str());
+ if (!device) {
+ wxMessageBox(wxT("Error opening CD device"), wxT("New CD Device"),
+ wxOK | wxICON_ERROR, parent);
+ return;
+ }
+
+ (new CDDeviceFrame(device))->Show(true);
+ }
+}
+
+
+void wxPlayer::OnNewMIDIDevice(wxWindow* parent) {
+ MIDIDeviceDialog dialog(parent);
+ if (dialog.ShowModal() == wxID_OK) {
+ audiere::MIDIDevicePtr device = audiere::OpenMIDIDevice(dialog.getName().c_str());
+ if (!device) {
+ wxMessageBox(wxT("Error opening MIDI device"), wxT("New MIDI Device"),
+ wxOK | wxICON_ERROR, parent);
+ return;
+ }
+
+ (new MIDIDeviceFrame(device))->Show(true);
+ }
+}
+
+
+void wxPlayer::ShowAboutDialog(wxWindow* parent) {
+ wxString message =
+ wxT("wxPlayer\n")
+ wxT("Copyright (c) Chad Austin 2002-2004\n\n")
+ wxT("Audiere Version: ");
+ message += CStr2wxString(audiere::GetVersion());
+ wxMessageBox(message, wxT("About wxPlayer"), wxOK | wxCENTRE, parent);
+}
diff --git a/examples/wxPlayer/wxPlayer.h b/examples/wxPlayer/wxPlayer.h
new file mode 100755
index 0000000..f0309cc
--- /dev/null
+++ b/examples/wxPlayer/wxPlayer.h
@@ -0,0 +1,24 @@
+#ifndef ADR_WX_PLAYER_H
+#define ADR_WX_PLAYER_H
+
+
+#include <string>
+#include "wx.h"
+
+
+class wxPlayer : public wxApp {
+public:
+ bool OnInit();
+ bool TryDevice(const std::string& name, const std::string& parameters = "");
+
+ void OnNewDevice(wxWindow* parent);
+ void OnNewCDDevice(wxWindow* parent);
+ void OnNewMIDIDevice(wxWindow* parent);
+ void ShowAboutDialog(wxWindow* parent);
+};
+
+
+DECLARE_APP(wxPlayer)
+
+
+#endif