summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorAnas Nashif <anas.nashif@intel.com>2012-11-22 06:35:44 -0800
committerAnas Nashif <anas.nashif@intel.com>2012-11-22 06:35:44 -0800
commitf51c187432a2b2a5845142e6b662e81303b2ea94 (patch)
tree780a77f4566bcd40699807df516fa1e562e77886 /include
downloadremix-f51c187432a2b2a5845142e6b662e81303b2ea94.tar.gz
remix-f51c187432a2b2a5845142e6b662e81303b2ea94.tar.bz2
remix-f51c187432a2b2a5845142e6b662e81303b2ea94.zip
Imported Upstream version 0.2.4upstream/0.2.4upstream
Diffstat (limited to 'include')
-rw-r--r--include/Makefile.am2
-rw-r--r--include/Makefile.in562
-rw-r--r--include/remix/Makefile.am10
-rw-r--r--include/remix/Makefile.in465
-rw-r--r--include/remix/remix.h262
-rw-r--r--include/remix/remix_deck.h138
-rw-r--r--include/remix/remix_envelope.h85
-rw-r--r--include/remix/remix_meta.h58
-rw-r--r--include/remix/remix_plugin.h327
-rw-r--r--include/remix/remix_stream.h104
-rw-r--r--include/remix/remix_time.h63
-rw-r--r--include/remix/remix_types.h165
12 files changed, 2241 insertions, 0 deletions
diff --git a/include/Makefile.am b/include/Makefile.am
new file mode 100644
index 0000000..b58b753
--- /dev/null
+++ b/include/Makefile.am
@@ -0,0 +1,2 @@
+
+SUBDIRS = remix
diff --git a/include/Makefile.in b/include/Makefile.in
new file mode 100644
index 0000000..6b184ff
--- /dev/null
+++ b/include/Makefile.in
@@ -0,0 +1,562 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = include
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+ install-dvi-recursive install-exec-recursive \
+ install-html-recursive install-info-recursive \
+ install-pdf-recursive install-ps-recursive install-recursive \
+ installcheck-recursive installdirs-recursive pdf-recursive \
+ ps-recursive uninstall-recursive
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
+ distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+ distdir
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+ dir0=`pwd`; \
+ sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+ sed_rest='s,^[^/]*/*,,'; \
+ sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+ sed_butlast='s,/*[^/]*$$,,'; \
+ while test -n "$$dir1"; do \
+ first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+ if test "$$first" != "."; then \
+ if test "$$first" = ".."; then \
+ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+ else \
+ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+ if test "$$first2" = "$$first"; then \
+ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+ else \
+ dir2="../$$dir2"; \
+ fi; \
+ dir0="$$dir0"/"$$first"; \
+ fi; \
+ fi; \
+ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+ done; \
+ reldir="$$dir2"
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BUILD_MONITOR = @BUILD_MONITOR@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+HAVE_DOXYGEN = @HAVE_DOXYGEN@
+HAVE_VALGRIND = @HAVE_VALGRIND@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_PLUGIN_DIR = @PACKAGE_PLUGIN_DIR@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHARED_VERSION_INFO = @SHARED_VERSION_INFO@
+SHELL = @SHELL@
+SHLIB_VERSION_ARG = @SHLIB_VERSION_ARG@
+SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
+SNDFILE_LIBS = @SNDFILE_LIBS@
+STRIP = @STRIP@
+VALGRIND_ENVIRONMENT = @VALGRIND_ENVIRONMENT@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+SUBDIRS = remix
+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 ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu include/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu include/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+# 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):
+ @fail= 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; \
+ ($(am__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"
+
+$(RECURSIVE_CLEAN_TARGETS):
+ @fail= 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; \
+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || ($(am__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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ 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 || \
+ set "$$@" "$$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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ 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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__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)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test -d "$(distdir)/$$subdir" \
+ || $(MKDIR_P) "$(distdir)/$$subdir" \
+ || exit 1; \
+ fi; \
+ done
+ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+ $(am__relativize); \
+ new_distdir=$$reldir; \
+ dir1=$$subdir; dir2="$(top_distdir)"; \
+ $(am__relativize); \
+ new_top_distdir=$$reldir; \
+ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+ ($(am__cd) $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$new_top_distdir" \
+ distdir="$$new_distdir" \
+ am__remove_distdir=: \
+ am__skip_length_check=: \
+ am__skip_mode_fix=: \
+ 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)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+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:
+
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
+ install-am install-strip tags-recursive
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+ all all-am check check-am clean clean-generic clean-libtool \
+ ctags ctags-recursive distclean 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-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs installdirs-am maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
+ uninstall uninstall-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/include/remix/Makefile.am b/include/remix/Makefile.am
new file mode 100644
index 0000000..1e86fc1
--- /dev/null
+++ b/include/remix/Makefile.am
@@ -0,0 +1,10 @@
+## Process this file with automake to produce Makefile.in
+
+# Include files to install
+includedir = $(prefix)/include/remix
+
+include_HEADERS = \
+ remix.h remix_types.h remix_time.h remix_meta.h \
+ remix_deck.h remix_stream.h \
+ remix_envelope.h \
+ remix_plugin.h
diff --git a/include/remix/Makefile.in b/include/remix/Makefile.in
new file mode 100644
index 0000000..8b242fa
--- /dev/null
+++ b/include/remix/Makefile.in
@@ -0,0 +1,465 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = include/remix
+DIST_COMMON = $(include_HEADERS) $(srcdir)/Makefile.am \
+ $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+SOURCES =
+DIST_SOURCES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(includedir)"
+HEADERS = $(include_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BUILD_MONITOR = @BUILD_MONITOR@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+HAVE_DOXYGEN = @HAVE_DOXYGEN@
+HAVE_VALGRIND = @HAVE_VALGRIND@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_PLUGIN_DIR = @PACKAGE_PLUGIN_DIR@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHARED_VERSION_INFO = @SHARED_VERSION_INFO@
+SHELL = @SHELL@
+SHLIB_VERSION_ARG = @SHLIB_VERSION_ARG@
+SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
+SNDFILE_LIBS = @SNDFILE_LIBS@
+STRIP = @STRIP@
+VALGRIND_ENVIRONMENT = @VALGRIND_ENVIRONMENT@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+
+# Include files to install
+includedir = $(prefix)/include/remix
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+include_HEADERS = \
+ remix.h remix_types.h remix_time.h remix_meta.h \
+ remix_deck.h remix_stream.h \
+ remix_envelope.h \
+ remix_plugin.h
+
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu include/remix/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu include/remix/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+install-includeHEADERS: $(include_HEADERS)
+ @$(NORMAL_INSTALL)
+ test -z "$(includedir)" || $(MKDIR_P) "$(DESTDIR)$(includedir)"
+ @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includedir)'"; \
+ $(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \
+ done
+
+uninstall-includeHEADERS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ test -n "$$files" || exit 0; \
+ echo " ( cd '$(DESTDIR)$(includedir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(includedir)" && rm -f $$files
+
+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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ 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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ 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; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__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)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(HEADERS)
+installdirs:
+ for dir in "$(DESTDIR)$(includedir)"; 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)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-includeHEADERS
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-includeHEADERS
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ clean-libtool ctags distclean 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-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am \
+ install-includeHEADERS install-info install-info-am \
+ install-man install-pdf install-pdf-am install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
+ ps ps-am tags uninstall uninstall-am uninstall-includeHEADERS
+
+
+# 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/include/remix/remix.h b/include/remix/remix.h
new file mode 100644
index 0000000..4ec3427
--- /dev/null
+++ b/include/remix/remix.h
@@ -0,0 +1,262 @@
+/*
+ * libremix -- An audio mixing and sequencing library.
+ *
+ * Copyright (C) 2001 Commonwealth Scientific and Industrial Research
+ * Organisation (CSIRO), Australia.
+ * Copyright (C) 2003 Conrad Parker
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+/** \file
+ * Base types and public interfaces to libremix
+ *
+ */
+
+/*
+ * Conrad Parker <conrad@metadecks.org>, August 2001
+ */
+
+#ifndef __REMIX_H__
+#define __REMIX_H__
+
+/** \mainpage
+ *
+ * \section Introduction
+ *
+ * Remix is an audio sequencing and mixing library that provides a
+ * multichannel, sparse audio data container (streams), a structured mixing
+ * abstraction (decks), and widely useful means of generating control data
+ * (via envelopes) and of caching audio data.
+ *
+ * \subsection contents Contents
+ *
+ * - \link remix_deck.h Decks \endlink:
+ * The Remix hierarchical mixing abstraction
+ *
+ * - \link remix_stream.h Streams \endlink:
+ * The multichannel PCM stream abstraction
+ *
+ * - \link remix.h remix.h \endlink:
+ * Documentation of the Remix C API
+ *
+ * - \link examples Examples \endlink:
+ * Annotated example programs
+ *
+ * - \link configuration Configuration \endlink:
+ * Customizing libremix.
+ *
+ * - \link building Building \endlink:
+ * Information related to building software that uses libremix.
+ *
+ * \section licensing Licensing
+ *
+ * libremix is provided under the
+ * \link lgpl GNU Lesser General Public License \endlink.
+ *
+ */
+
+/** \defgroup lgpl Licensing
+ * \section lgpl GNU Lesser General Public License
+ *
+ * \include COPYING
+ */
+
+/** \defgroup configuration Configuration
+ * \section ./configure ./configure
+ *
+ * It is possible to customize the functionality of libremix
+ * by using various ./configure flags when
+ * building it from source.
+ *
+ * For general information about using ./configure, see the file
+ * \link install INSTALL \endlink
+ */
+
+/** \defgroup install Installation
+ * \section install INSTALL
+ *
+ * \include INSTALL
+ */
+
+/** \defgroup building Building against libremix
+ *
+ *
+ * \section autoconf Using GNU autoconf
+ *
+ * If you are using GNU autoconf, you do not need to call pkg-config
+ * directly. Use the following macro to determine if libremix is
+ * available:
+ *
+ <pre>
+ PKG_CHECK_MODULES(REMIX, remix >= 0.2.0,
+ HAVE_REMIX="yes", HAVE_REMIX="no")
+ if test "x$HAVE_REMIX" = "xyes" ; then
+ AC_SUBST(REMIX_CFLAGS)
+ AC_SUBST(REMIX_LIBS)
+ fi
+ </pre>
+ *
+ * If libremix is found, HAVE_REMIX will be set to "yes", and
+ * the autoconf variables REMIX_CFLAGS and REMIX_LIBS will
+ * be set appropriately.
+ *
+ * \section pkg-config Determining compiler options with pkg-config
+ *
+ * If you are not using GNU autoconf in your project, you can use the
+ * pkg-config tool directly to determine the correct compiler options.
+ *
+ <pre>
+ REMIX_CFLAGS=`pkg-config --cflags remix`
+
+ REMIX_LIBS=`pkg-config --libs remix`
+ </pre>
+ *
+ */
+
+/** \defgroup examples Example programs
+ *
+ * Example programs are fun for all the family.
+ *
+ * Here's some examples.
+ * - \link noisedemo Noise demo \endlink
+ * - \link squaredemo Square demo \endlink
+ * - \link sndfiledemo Sndfile demo \endlink
+ */
+
+/** \defgroup noisedemo Noise demo
+ *
+ * Plays a sequence of short bursts of whitenoise.
+ *
+ * \include noisedemo.c noisedemo.c
+ */
+
+/** \defgroup squaredemo Square demo
+ *
+ * Plays a polyphonic sequence of musical notes generated by a builtin
+ * square wave synthesizer.
+ *
+ * \include squaredemo.c squaredemo.c
+ */
+
+/** \defgroup sndfiledemo Sndfile demo
+ *
+ * Plays a sequence of notes using sound files from disk.
+ *
+ * \include sndfiledemo.c sndfiledemo.c
+ */
+
+#include <remix/remix_types.h>
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+extern CDSet * REMIX_MONO;
+extern CDSet * REMIX_STEREO;
+
+
+/* RemixEnv */
+RemixEnv * remix_init (void);
+RemixEnv * remix_init_clone (RemixEnv * env);
+void remix_purge (RemixEnv * env);
+RemixError remix_last_error (RemixEnv * env);
+char * remix_error_string (RemixEnv * env, RemixError error);
+RemixSamplerate remix_set_samplerate (RemixEnv * env, RemixSamplerate samplerate);
+RemixSamplerate remix_get_samplerate (RemixEnv * env);
+RemixTempo remix_set_tempo (RemixEnv * env, RemixTempo tempo);
+RemixTempo remix_get_tempo (RemixEnv * env);
+CDSet * remix_set_channels (RemixEnv * env, CDSet * channelset);
+CDSet * remix_get_channels (RemixEnv * env);
+
+#if 0
+ /* XXX */
+/* Sources: Plugins, Samples etc. */
+CDList * remix_open (SOUNDRENDER env, char * filename);
+void remix_close (SOUNDRENDER env, RemixPlugin plugin);
+#endif
+
+/* Base objects */
+
+RemixPlugin * remix_find_plugin (RemixEnv * env, char * identifier);
+
+RemixBase * remix_new (RemixEnv * env, RemixPlugin * plugin, CDSet * parameters);
+CDSet * remix_suggest (RemixEnv * env, RemixPlugin * plugin, CDSet * parameters);
+
+int remix_get_init_parameter_key (RemixEnv * env, RemixPlugin * plugin, char * name);
+int remix_get_parameter_key (RemixEnv * env, RemixBase * base, char * name);
+
+RemixParameter remix_set_parameter (RemixEnv * env, RemixBase * base, int key,
+ RemixParameter parameter);
+RemixParameter remix_get_parameter (RemixEnv * env, RemixBase * base, int key);
+RemixParameterType remix_get_parameter_type (RemixEnv * env, RemixBase * base, int key);
+
+
+RemixBase * remix_clone_subclass (RemixEnv * env, RemixBase * base);
+int remix_destroy (RemixEnv * env, RemixBase * base);
+int remix_destroy_list (RemixEnv * env, CDList * list);
+RemixBase * remix_prepare (RemixEnv * env, RemixBase * base);
+RemixCount remix_process (RemixEnv * env, RemixBase * base, RemixCount count,
+ RemixStream * input, RemixStream * output);
+RemixCount remix_length (RemixEnv * env, RemixBase * base);
+RemixCount remix_seek (RemixEnv * env, RemixBase * base, RemixCount offset, int whence);
+RemixCount remix_tell (RemixEnv * env, RemixBase * base);
+int remix_flush (RemixEnv * env, RemixBase * base);
+
+RemixCount remix_set_mixlength (RemixEnv * env, RemixCount mixlength);
+RemixCount remix_get_mixlength (RemixEnv * env);
+
+
+int remix_is_writeable (RemixEnv * env, RemixBase * base);
+int remix_is_seekable (RemixEnv * env, RemixBase * base);
+int remix_is_cacheable (RemixEnv * env, RemixBase * base);
+int remix_is_causal (RemixEnv * env, RemixBase * base);
+
+char * remix_set_name (RemixEnv * env, RemixBase * base, char * name);
+char * remix_get_name (RemixEnv * env, RemixBase * base);
+
+#include <remix/remix_deck.h>
+#include <remix/remix_envelope.h>
+#include <remix/remix_stream.h>
+
+/* SquareTone */
+RemixBase * remix_squaretone_new (RemixEnv * env, float frequency);
+float remix_squaretone_set_frequency (RemixEnv * env,
+ RemixBase * squaretone,
+ float frequency);
+float remix_squaretone_get_frequency (RemixEnv * env,
+ RemixBase * squaretone);
+
+/* Monitor */
+RemixMonitor * remix_monitor_new (RemixEnv * env);
+
+/* Scrubby */
+RemixBase * remix_scrubby_new (RemixEnv * env);
+RemixBase * remix_scrubby_set_source (RemixEnv * env, RemixBase * scrubby,
+ RemixBase * source);
+RemixBase * remix_scrubby_get_source (RemixEnv * env, RemixBase * scrubby);
+int remix_scrubby_set_direction (RemixEnv * env, RemixBase * scrubby, int direction);
+int remix_scrubby_get_direction (RemixEnv * env, RemixBase * scrubby);
+
+#include <remix/remix_time.h>
+
+#include <remix/remix_meta.h>
+
+#if defined(__cplusplus)
+}
+#endif
+
+#endif /* __REMIX_H__ */
diff --git a/include/remix/remix_deck.h b/include/remix/remix_deck.h
new file mode 100644
index 0000000..e27053a
--- /dev/null
+++ b/include/remix/remix_deck.h
@@ -0,0 +1,138 @@
+/*
+ * libremix -- An audio mixing and sequencing library.
+ *
+ * Copyright (C) 2001 Commonwealth Scientific and Industrial Research
+ * Organisation (CSIRO), Australia.
+ * Copyright (C) 2003 Conrad Parker
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+/*
+ * Conrad Parker <conrad@metadecks.org>, August 2001
+ */
+
+#ifndef __REMIX_DECK_H__
+#define __REMIX_DECK_H__
+
+/** \file
+ *
+ * The top level structured mixing abstraction in libremix is known as a deck.
+ * A deck contains a number of tracks which are mixed in parallel. Each
+ * track may contain a number of layers which are mixed from bottom
+ * to top in series. Finally, these layers each contain a sequence of
+ * sounds with transparency.
+ *
+ * \image html decks.png
+ * \image latex decks.eps "Inside a Remix deck" width=10cm
+ *
+ * The sequence of sounds in a layer can be indexed by samples, seconds or
+ * tempo.
+ * Sounds provide audio data from any instrument or effect source, and these
+ * sources can each be reused multiple times. A sound can even source its
+ * audio data from another entire deck, thus decks can be used to sequence
+ * other decks. In this manner effects can be applied to sequences of decks,
+ * and sequences of decks can be stored as higher level units such as
+ * verses and choruses in a music application.
+ */
+
+
+#include <remix/remix_types.h>
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+/* Decks */
+RemixDeck * remix_deck_new (RemixEnv * env);
+
+RemixCount remix_deck_set_mixlength (RemixEnv * env, RemixDeck * deck, RemixCount mixlength);
+RemixCount remix_deck_get_mixlength (RemixEnv * env, RemixDeck * deck);
+
+CDList * remix_deck_get_tracks (RemixEnv * env, RemixDeck * deck);
+
+/* Tracks */
+RemixTrack * remix_track_new (RemixEnv * env, RemixDeck * deck);
+RemixPCM remix_track_set_gain (RemixEnv * env, RemixTrack * track, RemixPCM gain);
+RemixPCM remix_track_get_gain (RemixEnv * env, RemixTrack * track);
+RemixCount remix_track_set_mixlength (RemixEnv * env, RemixTrack * track,
+ RemixCount mixlength);
+RemixCount remix_track_get_mixlength (RemixEnv * env, RemixTrack * track);
+void remix_remove_track (RemixEnv * env, RemixTrack * track);
+
+RemixDeck * remix_track_get_deck (RemixEnv * env, RemixTrack * track);
+
+
+/* Layers */
+RemixLayer * remix_layer_new_ontop (RemixEnv * env, RemixTrack * track,
+ RemixTimeType timetype);
+RemixLayer * remix_layer_new_above (RemixEnv * env, RemixLayer * above,
+ RemixTimeType timetype);
+RemixLayer * remix_layer_move_ontop (RemixEnv * env, RemixLayer * layer, RemixTrack * track);
+RemixLayer * remix_layer_move_above (RemixEnv * env, RemixLayer * layer, RemixLayer * above);
+RemixLayer * remix_layer_raise (RemixEnv * env, RemixLayer * layer);
+RemixLayer * remix_layer_lower (RemixEnv * env, RemixLayer * layer);
+RemixTrack * remix_layer_get_track (RemixEnv * env, RemixLayer * layer);
+RemixDeck * remix_layer_get_deck (RemixEnv * env, RemixLayer * layer);
+RemixTimeType remix_layer_set_timetype (RemixEnv * env, RemixLayer * layer,
+ RemixTimeType new_type);
+RemixTimeType remix_layer_get_timetype (RemixEnv * env, RemixLayer * layer);
+RemixSound * remix_layer_get_sound_before (RemixEnv * env, RemixLayer * layer,
+ RemixTime time);
+RemixSound * remix_layer_get_sound_at (RemixEnv * env, RemixLayer * layer, RemixTime time);
+RemixSound * remix_layer_get_sound_after (RemixEnv * env, RemixLayer * layer, RemixTime time);
+RemixLayer * remix_layer_below (RemixEnv * env, RemixLayer * layer);
+RemixLayer * remix_layer_above (RemixEnv * env, RemixLayer * layer);
+
+/* Sounds */
+RemixSound * remix_sound_new (RemixEnv * env, RemixBase * source,
+ RemixLayer * layer,
+ RemixTime start_time, RemixTime duration);
+
+RemixBase * remix_sound_set_source (RemixEnv * env, RemixSound * sound,
+ RemixBase * source);
+RemixBase * remix_sound_get_source (RemixEnv * env, RemixSound * sound);
+RemixLayer * remix_sound_get_layer (RemixEnv * env, RemixSound * sound);
+RemixTrack * remix_sound_get_track (RemixEnv * env, RemixSound * sound);
+RemixDeck * remix_sound_get_deck (RemixEnv * env, RemixSound * sound);
+
+RemixTime remix_sound_move (RemixEnv * env, RemixSound * sound,
+ RemixTime time);
+RemixSound * remix_sound_get_prev (RemixEnv * env, RemixSound * sound);
+RemixSound * remix_sound_get_next (RemixEnv * env, RemixSound * sound);
+
+RemixTime remix_sound_set_start_time (RemixEnv * env, RemixSound * sound,
+ RemixTime time);
+RemixTime remix_sound_get_start_time (RemixEnv * env, RemixSound * sound);
+RemixTime remix_sound_set_duration (RemixEnv * env, RemixSound * sound,
+ RemixTime time);
+RemixTime remix_sound_get_duration (RemixEnv * env, RemixSound * sound);
+
+RemixBase * remix_sound_set_rate_envelope (RemixEnv * env, RemixSound * sound,
+ RemixBase * rate_envelope);
+RemixBase * remix_sound_get_rate_envelope (RemixEnv * env, RemixSound * sound);
+RemixBase * remix_sound_set_gain_envelope (RemixEnv * env, RemixSound * sound,
+ RemixBase * gain_envelope);
+RemixBase * remix_sound_get_gain_envelope (RemixEnv * env, RemixSound * sound);
+RemixBase * remix_sound_set_blend_envelope (RemixEnv * env, RemixSound * sound,
+ RemixBase * blend_envelope);
+RemixBase * remix_sound_get_blend_envelope (RemixEnv * env, RemixSound * sound);
+
+#if defined(__cplusplus)
+}
+#endif
+
+#endif /* __REMIX_DECK_H__ */
diff --git a/include/remix/remix_envelope.h b/include/remix/remix_envelope.h
new file mode 100644
index 0000000..659e4f7
--- /dev/null
+++ b/include/remix/remix_envelope.h
@@ -0,0 +1,85 @@
+/*
+ * libremix -- An audio mixing and sequencing library.
+ *
+ * Copyright (C) 2001 Commonwealth Scientific and Industrial Research
+ * Organisation (CSIRO), Australia.
+ * Copyright (C) 2003 Conrad Parker
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+/** \file
+ * Base types and public interfaces to libremix
+ *
+ */
+
+/*
+ * Conrad Parker <conrad@metadecks.org>, August 2001
+ */
+
+#ifndef __REMIX_ENVELOPE_H__
+#define __REMIX_ENVELOPE_H__
+
+/** \file
+ *
+ * The information describing how a parameter changes over time appears
+ * as a generic data source. In order to create this mix automation information
+ * Remix provides linear and spline envelopes.
+ * However, parameters could alternatively be controlled by other means such
+ * as from a recording of physical slider values, from a sine wave
+ * generator, or from a deck constructed solely to generate interesting
+ * parameter values.
+ */
+
+#include <remix/remix_types.h>
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+/* Envelopes */
+RemixEnvelope * remix_envelope_new (RemixEnv * env, RemixEnvelopeType type);
+RemixEnvelopeType remix_envelope_set_type (RemixEnv * env,
+ RemixEnvelope * envelope,
+ RemixEnvelopeType type);
+RemixEnvelopeType remix_envelope_get_type (RemixEnv * env, RemixEnvelope * envelope);
+RemixTimeType remix_envelope_set_timetype (RemixEnv * env,
+ RemixEnvelope * envelope,
+ RemixTimeType timetype);
+RemixTimeType remix_envelope_get_timetype (RemixEnv * env,
+ RemixEnvelope * envelope);
+RemixPCM remix_envelope_get_value (RemixEnv * env, RemixEnvelope * envelope,
+ RemixTime time);
+RemixTime remix_envelope_get_duration (RemixEnv * env,
+ RemixEnvelope * envelope);
+RemixPCM remix_envelope_get_integral (RemixEnv * env, RemixEnvelope * envelope,
+ RemixTime t1, RemixTime t2);
+RemixPoint * remix_envelope_add_point (RemixEnv * env,
+ RemixEnvelope * envelope,
+ RemixTime time, RemixPCM value);
+RemixEnvelope * remix_envelope_remove_point (RemixEnv * env,
+ RemixEnvelope * envelope,
+ RemixPoint * point);
+RemixEnvelope * remix_envelope_scale (RemixEnv * env, RemixEnvelope * envelope,
+ RemixPCM gain);
+RemixEnvelope * remix_envelope_shift (RemixEnv * env, RemixEnvelope * envelope,
+ RemixTime delta);
+
+#if defined(__cplusplus)
+}
+#endif
+
+#endif /* __REMIX_H__ */
diff --git a/include/remix/remix_meta.h b/include/remix/remix_meta.h
new file mode 100644
index 0000000..f075d7a
--- /dev/null
+++ b/include/remix/remix_meta.h
@@ -0,0 +1,58 @@
+/*
+ * libremix -- An audio mixing and sequencing library.
+ *
+ * Copyright (C) 2001 Commonwealth Scientific and Industrial Research
+ * Organisation (CSIRO), Australia.
+ * Copyright (C) 2003 Conrad Parker
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+/** \file
+ * Metadata for RemixBase objects
+ */
+
+/*
+ * Conrad Parker <conrad@metadecks.org>, August 2001
+ */
+
+#ifndef __REMIX_META_H__
+#define __REMIX_META_H__
+
+char * remix_meta_text_get_identifier (RemixEnv * env, RemixMetaText * mt);
+char * remix_meta_text_set_identifier (RemixEnv * env, RemixMetaText * mt,
+ char * identifier);
+char * remix_meta_text_get_category (RemixEnv * env, RemixMetaText * mt);
+char * remix_meta_text_set_category (RemixEnv * env, RemixMetaText * mt,
+ char * category);
+char * remix_meta_text_get_description (RemixEnv * env, RemixMetaText * mt);
+char * remix_meta_text_set_description (RemixEnv * env, RemixMetaText * mt,
+ char * description);
+char * remix_meta_text_get_copyright (RemixEnv * env, RemixMetaText * mt);
+char * remix_meta_text_set_copyright (RemixEnv * env, RemixMetaText * mt,
+ char * copyright);
+char * remix_meta_text_get_url (RemixEnv * env, RemixMetaText * mt);
+char * remix_meta_text_set_url (RemixEnv * env, RemixMetaText * mt,
+ char * url);
+CDList * remix_meta_text_get_authors (RemixEnv * env, RemixMetaText * mt);
+void remix_meta_text_add_author (RemixEnv * env, RemixMetaText * mt,
+ char * name, char * email);
+
+#if defined(__cplusplus)
+}
+#endif
+
+#endif /* __REMIX_META_H__ */
diff --git a/include/remix/remix_plugin.h b/include/remix/remix_plugin.h
new file mode 100644
index 0000000..5381426
--- /dev/null
+++ b/include/remix/remix_plugin.h
@@ -0,0 +1,327 @@
+/*
+ * libremix -- An audio mixing and sequencing library.
+ *
+ * Copyright (C) 2001 Commonwealth Scientific and Industrial Research
+ * Organisation (CSIRO), Australia.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+/*
+ * remix_plugin.h -- libremix internal data types and functions.
+ *
+ * Conrad Parker <conrad@metadecks.org>, August 2001
+ */
+
+#ifndef __REMIX_PLUGIN_H__
+#define __REMIX_PLUGIN_H__
+
+/*#define DEBUG*/
+
+#if defined(__REMIX_PLUGIN__) || defined(__REMIX__)
+
+#include <stdio.h>
+
+#include "ctxdata.h"
+
+#define REMIX_PLUGIN_API_MAJOR 1
+#define REMIX_PLUGIN_API_MINOR 0
+#define REMIX_PLUGIN_API_REVISION 0
+
+typedef struct _RemixMetaAuthor RemixMetaAuthor;
+typedef struct _RemixMetaText RemixMetaText;
+
+typedef struct _RemixParameterScheme RemixParameterScheme;
+typedef struct _RemixParameterRange RemixParameterRange;
+
+typedef struct _RemixNamedParameter RemixNamedParameter;
+
+typedef union _RemixConstraint RemixConstraint;
+
+typedef struct _RemixMethods RemixMethods;;
+
+#define REMIX_PLUGIN_WRITEABLE 1<<0
+#define REMIX_PLUGIN_SEEKABLE 1<<1
+#define REMIX_PLUGIN_CACHEABLE 1<<2
+#define REMIX_PLUGIN_CAUSAL 1<<3
+
+/* A base of a plugin */
+typedef struct _RemixPlugin RemixPlugin;
+/*typedef struct _RemixBase * RemixBase;*/
+
+typedef struct _RemixChunk RemixChunk;
+
+#if defined (__REMIX__)
+#include "remix_private.h"
+#else
+typedef RemixOpaque RemixEnv;
+typedef RemixOpaque RemixPoint;
+typedef RemixOpaque RemixEnvelope;
+typedef RemixOpaque RemixStream;
+typedef RemixOpaque RemixChannel;
+typedef RemixOpaque RemixDeck;
+typedef RemixOpaque RemixTrack;
+typedef RemixOpaque RemixLayer;
+typedef RemixOpaque RemixSound;
+typedef RemixOpaque RemixSquareTone;
+typedef RemixOpaque RemixMonitor;
+#endif
+
+
+typedef CDList * (*RemixPluginInitFunc) (RemixEnv * env);
+typedef int (*RemixPluginDestroyFunc) (RemixEnv * env, RemixPlugin * plugin);
+
+typedef RemixBase * (*RemixInitFunc) (RemixEnv * env, RemixBase * base,
+ CDSet * parameters);
+
+typedef CDSet * (*RemixSuggestFunc) (RemixEnv * env, RemixPlugin * plugin,
+ CDSet * parameters,
+ void * plugin_data);
+
+typedef RemixBase * (*RemixCloneFunc) (RemixEnv * env, RemixBase * base);
+typedef int (*RemixDestroyFunc) (RemixEnv * env, RemixBase * base);
+typedef int (*RemixReadyFunc) (RemixEnv * env, RemixBase * base);
+typedef RemixBase * (*RemixPrepareFunc) (RemixEnv * env, RemixBase * base);
+typedef RemixCount (*RemixSeekFunc) (RemixEnv * env, RemixBase * base,
+ RemixCount count);
+typedef RemixCount (*RemixLengthFunc) (RemixEnv * env, RemixBase * base);
+typedef RemixCount (*RemixProcessFunc) (RemixEnv * env, RemixBase * base,
+ RemixCount count,
+ RemixStream * input,
+ RemixStream * output);
+typedef int (*RemixFlushFunc) (RemixEnv * env, RemixBase * base);
+
+#define REMIX_FLAGS_NONE (0)
+
+#define REMIX_AUTHOR(n,e) ((struct _RemixMetaAuthor){(n),(e)})
+#define REMIX_ONE_AUTHOR(n,e) CD_SINGLETON_LIST(CD_POINTER(&(REMIX_AUTHOR((n),(e)))))
+
+/* ChunkChunkFuncs and all the rest */
+
+/* RemixChunkFunc: a function to apply to one chunk */
+typedef RemixCount (*RemixChunkFunc) (RemixEnv * env, RemixChunk * chunk,
+ RemixCount offset,
+ RemixCount count, int channelname,
+ void * data);
+
+/* RemixChunkChunkFunc: a function to apply between two chunks :) */
+typedef RemixCount (*RemixChunkChunkFunc) (RemixEnv * env,
+ RemixChunk * src,
+ RemixCount src_offset,
+ RemixChunk * dest,
+ RemixCount dest_offset,
+ RemixCount count, int channelname,
+ void * data);
+
+/* RemixChunkChunkChunkFunc: a function to apply between THREE chunks !! */
+typedef RemixCount (*RemixChunkChunkChunkFunc) (RemixEnv * env,
+ RemixChunk * src1,
+ RemixCount src1_offset,
+ RemixChunk * src2,
+ RemixCount src2_offset,
+ RemixChunk * dest,
+ RemixCount dest_offset,
+ RemixCount count,
+ int channelname,
+ void * data);
+
+struct _RemixMetaAuthor {
+ char * name;
+ char * email;
+};
+
+struct _RemixMetaText {
+ char * identifier;
+ char * category;
+ char * description;
+ char * copyright;
+ char * url;
+ CDList * authors;
+};
+
+struct _RemixParameterRange {
+ RemixFlags valid_mask;
+ RemixParameter lower;
+ RemixParameter upper;
+ RemixParameter step;
+};
+
+struct _RemixNamedParameter {
+ char * name;
+ RemixParameter parameter;
+};
+
+#define REMIX_NAMED_PARAMETER(n,p) (&((struct _RemixNamedParameter){(n),(p)}))
+
+union _RemixConstraint {
+ CDList * list; /* list of RemixNamedParameter */
+ RemixParameterRange * range;
+};
+
+struct _RemixParameterScheme {
+ char * name;
+ char * description;
+ RemixParameterType type;
+ RemixConstraintType constraint_type;
+ RemixConstraint constraint;
+ RemixFlags hints;
+};
+
+struct _RemixPlugin {
+ RemixMetaText * metatext;
+ RemixFlags flags;
+ CDSet * init_scheme;
+ RemixInitFunc init;
+ CDSet * process_scheme;
+ RemixSuggestFunc suggest;
+ void * plugin_data;
+ RemixPluginDestroyFunc destroy;
+};
+
+struct _RemixMethods {
+ RemixCloneFunc clone;
+ RemixDestroyFunc destroy;
+ RemixReadyFunc ready;
+ RemixPrepareFunc prepare;
+ RemixProcessFunc process;
+ RemixLengthFunc length;
+ RemixSeekFunc seek;
+ RemixFlushFunc flush;
+};
+
+
+struct _RemixChunk {
+ RemixCount start_index;
+ RemixCount length;
+ RemixPCM * data;
+};
+
+
+/* debug */
+void remix_dprintf (const char * fmt, ...);
+
+/* SOUNDRENDER, remix_context */
+
+RemixError remix_set_error (RemixEnv * env, RemixError error);
+
+
+/* remix_base */
+RemixBase * remix_base_new (RemixEnv * env);
+
+RemixPlugin * remix_base_set_plugin (RemixEnv * env, RemixBase * base,
+ RemixPlugin * plugin);
+RemixPlugin * remix_base_get_plugin (RemixEnv * env, RemixBase * base);
+RemixMethods * remix_base_set_methods (RemixEnv * env, RemixBase * base,
+ RemixMethods * methods);
+void * remix_base_set_instance_data (RemixEnv * env, RemixBase * base,
+ void * data);
+void * remix_base_get_instance_data (RemixEnv * env, RemixBase * base);
+
+RemixCount remix_base_get_mixlength (RemixEnv * env, RemixBase * base);
+RemixSamplerate remix_base_get_samplerate (RemixEnv * env, RemixBase * base);
+RemixTempo remix_base_get_tempo (RemixEnv * env, RemixBase * base);
+CDSet * remix_base_get_channels (RemixEnv * env, RemixBase * base);
+
+int remix_base_has_samplerate (RemixEnv * env, RemixBase * base);
+int remix_base_has_tempo (RemixEnv * env, RemixBase * base);
+int remix_base_encompasses_mixlength (RemixEnv * env, RemixBase * base);
+int remix_base_encompasses_channels (RemixEnv * env, RemixBase * base);
+
+
+/* remix_meta */
+RemixMetaText * remix_meta_text_new (RemixEnv * env);
+void remix_meta_text_free (RemixEnv * env, RemixMetaText * mt);
+RemixMetaText * remix_get_meta_text (RemixEnv * env, RemixBase * base);
+RemixMetaText * remix_set_meta_text (RemixEnv * env, RemixBase * base,
+ RemixMetaText * mt);
+
+
+/* remix_null */
+RemixCount remix_null_length (RemixEnv * env, RemixBase * base);
+RemixCount remix_null_process (RemixEnv * env, RemixBase * base,
+ RemixCount count,
+ RemixStream * input, RemixStream * output);
+RemixCount remix_null_seek (RemixEnv * env, RemixBase * base,
+ RemixCount offset);
+
+
+/* remix_stream */
+RemixCount remix_stream_chunkfuncify (RemixEnv * env, RemixStream * stream,
+ RemixCount count,
+ RemixChunkFunc func, void * data);
+RemixCount remix_stream_chunkchunkfuncify (RemixEnv * env,
+ RemixStream * src,
+ RemixStream * dest,
+ RemixCount count,
+ RemixChunkChunkFunc func,
+ void * data);
+RemixCount remix_stream_chunkchunkchunkfuncify (RemixEnv * env,
+ RemixStream * src1,
+ RemixStream * src2,
+ RemixStream * dest,
+ RemixCount count,
+ RemixChunkChunkChunkFunc func,
+ void * data);
+
+/* RemixChannel */
+RemixChunk * remix_channel_get_chunk_at (RemixEnv * env,
+ RemixChannel * channel,
+ RemixCount offset);
+
+RemixCount remix_channel_chunkfuncify (RemixEnv * env, RemixChannel * channel,
+ RemixCount count, RemixChunkFunc func,
+ int channelname, void * data);
+RemixCount remix_channel_chunkchunkfuncify (RemixEnv * env,
+ RemixChannel * src,
+ RemixChannel * dest,
+ RemixCount count,
+ RemixChunkChunkFunc func,
+ int channelname, void * data);
+RemixCount remix_channel_chunkchunkchunkfuncify (RemixEnv * env,
+ RemixChannel * src1,
+ RemixChannel * src2,
+ RemixChannel * dest,
+ RemixCount count,
+ RemixChunkChunkChunkFunc func,
+ int channelname, void * data);
+/* RemixPCM */
+
+RemixCount _remix_pcm_clear_region (RemixPCM * data, RemixCount count,
+ void * unused);
+RemixCount _remix_pcm_set (RemixPCM * data, RemixPCM value, RemixCount count);
+RemixCount _remix_pcm_gain (RemixPCM * data, RemixCount count,
+ /* (RemixPCM *) */ void * gain);
+RemixCount _remix_pcm_copy (RemixPCM * src, RemixPCM * dest, RemixCount count,
+ void * unused);
+RemixCount _remix_pcm_add (RemixPCM * src, RemixPCM * dest, RemixCount count,
+ void * unused);
+RemixCount _remix_pcm_mult (RemixPCM * src, RemixPCM * dest, RemixCount count,
+ void * unused);
+RemixCount _remix_pcm_fade (RemixPCM * src, RemixPCM * dest, RemixCount count,
+ void * unused);
+RemixCount _remix_pcm_interleave_2 (RemixPCM * src1, RemixPCM * src2,
+ RemixCount count, void * data);
+RemixCount _remix_pcm_deinterleave_2 (RemixPCM * dest1, RemixPCM * dest2,
+ RemixCount count, void * data);
+RemixCount _remix_pcm_blend (RemixPCM * src, RemixPCM * blend, RemixPCM * dest,
+ RemixCount count, void * unused);
+RemixCount _remix_pcm_write_linear (RemixPCM * data, RemixCount x1,
+ RemixPCM y1, RemixCount x2, RemixPCM y2,
+ RemixCount offset, RemixCount count);
+
+#endif /* defined(__REMIX__) */
+
+#endif /* __REMIX_PLUGIN_H__ */
diff --git a/include/remix/remix_stream.h b/include/remix/remix_stream.h
new file mode 100644
index 0000000..893736a
--- /dev/null
+++ b/include/remix/remix_stream.h
@@ -0,0 +1,104 @@
+/*
+ * libremix -- An audio mixing and sequencing library.
+ *
+ * Copyright (C) 2001 Commonwealth Scientific and Industrial Research
+ * Organisation (CSIRO), Australia.
+ * Copyright (C) 2003 Conrad Parker
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+/*
+ * Conrad Parker <conrad@metadecks.org>, August 2001
+ */
+
+#ifndef __REMIX_STREAM_H__
+#define __REMIX_STREAM_H__
+
+/** \file
+ *
+ * The abstraction of multichannel audio data in libremix is known as a
+ * stream.
+ * A stream may consist of multiple channels, each of which can consist
+ * of an arbitrary number of sparsely placed chunks of raw audio data.
+ * The channels are named with spatial names such as LEFT, RIGHT and CENTRE
+ * as required for common home, studio and theatre environments.
+ *
+ * \image html streams.png
+ * \image latex streams.eps "Inside a Remix stream" width=10cm
+ *
+ * Generic routines are provided for mixing, multiplying and blending
+ * streams of data.
+ *
+ */
+
+#include <remix/remix_types.h>
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+/* Streams */
+RemixStream * remix_stream_new (RemixEnv * env);
+RemixStream * remix_stream_new_contiguous (RemixEnv * env, RemixCount length);
+RemixStream * remix_stream_new_from_buffers (RemixEnv * env, RemixCount length,
+ RemixPCM ** buffers);
+RemixCount remix_stream_nr_channels (RemixEnv * env, RemixStream * stream);
+RemixChannel * remix_stream_find_channel (RemixEnv * env,
+ RemixStream * stream, int name);
+RemixChannel * remix_stream_add_channel (RemixEnv * env,
+ RemixStream * stream, int name);
+RemixStream * remix_stream_remove_channel (RemixEnv * env,
+ RemixStream * stream, int name);
+RemixStream * remix_stream_add_chunks (RemixEnv * env, RemixStream * stream,
+ RemixCount offset, RemixCount length);
+
+RemixCount remix_stream_write0 (RemixEnv * env, RemixStream * stream,
+ RemixCount count);
+RemixCount remix_stream_write (RemixEnv * env, RemixStream * stream,
+ RemixCount count, RemixStream * data);
+RemixCount remix_stream_copy (RemixEnv * env, RemixStream * src,
+ RemixStream * dest, RemixCount count);
+RemixCount remix_stream_gain (RemixEnv * env, RemixStream * stream,
+ RemixCount count, RemixPCM gain);
+RemixCount remix_stream_mix (RemixEnv * env, RemixStream * src,
+ RemixStream * dest, RemixCount count);
+RemixCount remix_stream_mult (RemixEnv * env, RemixStream * src,
+ RemixStream * dest, RemixCount count);
+RemixCount remix_streams_mix (RemixEnv * env, CDList * streams,
+ RemixStream * dest, RemixCount count);
+RemixCount remix_stream_fade (RemixEnv * env, RemixStream * src,
+ RemixStream * dest, RemixCount count);
+RemixCount remix_stream_blend (RemixEnv * env, RemixStream * src,
+ RemixStream * dest,
+ RemixStream * blend, RemixCount count);
+
+RemixCount remix_stream_interleave_2 (RemixEnv * env, RemixStream * stream,
+ int name1, int name2,
+ RemixPCM * dest, RemixCount count);
+RemixCount remix_stream_deinterleave_2 (RemixEnv * env, RemixStream * stream,
+ int name1, int name2,
+ RemixPCM * src, RemixCount count);
+
+/* Chunks */
+int remix_chunk_later (RemixEnv * env, RemixChunk * u1, RemixChunk * u2);
+RemixCount remix_chunk_clear (RemixEnv * env, RemixChunk * chunk);
+
+#if defined(__cplusplus)
+}
+#endif
+
+#endif /* __REMIX_STREAM_H__ */
diff --git a/include/remix/remix_time.h b/include/remix/remix_time.h
new file mode 100644
index 0000000..2ec5ba4
--- /dev/null
+++ b/include/remix/remix_time.h
@@ -0,0 +1,63 @@
+/*
+ * libremix -- An audio mixing and sequencing library.
+ *
+ * Copyright (C) 2001 Commonwealth Scientific and Industrial Research
+ * Organisation (CSIRO), Australia.
+ * Copyright (C) 2003 Conrad Parker
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+/** \file
+ * Base types and public interfaces to libremix
+ *
+ */
+
+/*
+ * Conrad Parker <conrad@metadecks.org>, August 2001
+ */
+
+#ifndef __REMIX_TIME_H__
+#define __REMIX_TIME_H__
+
+#include <remix/remix_types.h>
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+/* Time */
+RemixTime remix_time_convert (RemixEnv * env, RemixTime time,
+ RemixTimeType old_type, RemixTimeType new_type);
+RemixTime remix_time_zero (RemixTimeType type);
+RemixTime remix_time_invalid (RemixTimeType type);
+int remix_time_is_invalid (RemixTimeType type, RemixTime time);
+RemixTime remix_time_add (RemixTimeType type, RemixTime t1, RemixTime t2);
+RemixTime remix_time_sub (RemixTimeType type, RemixTime t1, RemixTime t2);
+RemixTime remix_time_min (RemixTimeType type, RemixTime t1, RemixTime t2);
+RemixTime remix_time_max (RemixTimeType type, RemixTime t1, RemixTime t2);
+int remix_time_eq (RemixTimeType type, RemixTime t1, RemixTime t2);
+int remix_time_gt (RemixTimeType type, RemixTime t1, RemixTime t2);
+int remix_time_lt (RemixTimeType type, RemixTime t1, RemixTime t2);
+int remix_time_ge (RemixTimeType type, RemixTime t1, RemixTime t2);
+int remix_time_le (RemixTimeType type, RemixTime t1, RemixTime t2);
+
+
+#if defined(__cplusplus)
+}
+#endif
+
+#endif /* __REMIX_TIME_H__ */
diff --git a/include/remix/remix_types.h b/include/remix/remix_types.h
new file mode 100644
index 0000000..4f379a8
--- /dev/null
+++ b/include/remix/remix_types.h
@@ -0,0 +1,165 @@
+/*
+ * libremix -- An audio mixing and sequencing library.
+ *
+ * Copyright (C) 2001 Commonwealth Scientific and Industrial Research
+ * Organisation (CSIRO), Australia.
+ * Copyright (C) 2003 Conrad Parker
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+/** \file
+ * Base types and public interfaces to libremix
+ *
+ */
+
+/*
+ * Conrad Parker <conrad@metadecks.org>, August 2001
+ */
+
+#ifndef __REMIX_TYPES_H__
+#define __REMIX_TYPES_H__
+
+#include <limits.h>
+
+#include "ctxdata.h"
+
+#define RemixNone NULL
+
+typedef int RemixError;
+
+typedef float RemixPCM;
+
+typedef long RemixCount;
+#define REMIX_COUNT_MAX (LONG_MAX - 1L)
+#define REMIX_COUNT_MIN LONG_MIN
+#define REMIX_COUNT_INFINITE REMIX_COUNT_MAX
+
+typedef void RemixOpaque;
+
+#if defined (__REMIX__)
+typedef struct _RemixBase RemixBase;
+#else
+typedef RemixOpaque RemixBase;
+#endif
+
+typedef CDScalar RemixParameter;
+
+typedef int RemixFlags;
+typedef double RemixSamplerate;
+typedef double RemixTempo;
+typedef union _RemixTime RemixTime;
+
+
+/* Errors */
+#define REMIX_ERROR_OK 0
+#define REMIX_ERROR_INVALID 1
+#define REMIX_ERROR_NOENTITY 2
+#define REMIX_ERROR_EXISTS 3
+#define REMIX_ERROR_SILENCE 4
+#define REMIX_ERROR_NOOP 5
+#define REMIX_ERROR_SYSTEM 6
+
+typedef enum {
+ REMIX_CHANNEL_LEFT,
+ REMIX_CHANNEL_RIGHT,
+ REMIX_CHANNEL_CENTRE,
+ REMIX_CHANNEL_REAR,
+ REMIX_CHANNEL_REAR_LEFT,
+ REMIX_CHANNEL_REAR_RIGHT,
+ REMIX_CHANNEL_REAR_CENTRE,
+ REMIX_CHANNEL_LFE /* Low Frequency Effects */
+} RemixChannelName;
+
+typedef enum {
+ REMIX_TIME_INVALID,
+ REMIX_TIME_SAMPLES,
+ REMIX_TIME_SECONDS,
+ REMIX_TIME_BEAT24S
+} RemixTimeType;
+
+/* Envelope types */
+typedef enum {
+ REMIX_ENVELOPE_LINEAR,
+ REMIX_ENVELOPE_SPLINE
+} RemixEnvelopeType;
+
+union _RemixTime {
+ long TIME;
+ RemixCount samples;
+ float seconds;
+ int beat24s;
+};
+
+typedef enum {
+ REMIX_TYPE_BOOL = 0,
+ REMIX_TYPE_INT,
+ REMIX_TYPE_FLOAT,
+ REMIX_TYPE_STRING,
+ REMIX_TYPE_BASE
+} RemixParameterType;
+
+typedef enum {
+ REMIX_CONSTRAINT_TYPE_NONE = 0,
+ REMIX_CONSTRAINT_TYPE_LIST,
+ REMIX_CONSTRAINT_TYPE_RANGE
+} RemixConstraintType;
+
+
+#define REMIX_RANGE_LOWER_BOUND_VALID (1<<0)
+#define REMIX_RANGE_UPPER_BOUND_VALID (1<<1)
+#define REMIX_RANGE_STEP_VALID (1<<2)
+#define REMIX_RANGE_ALL_VALID (REMIX_RANGE_LOWER_BOUND_VALID | \
+ REMIX_RANGE_UPPER_BOUND_VALID | \
+ REMIX_RANGE_STEP_VALID)
+
+#define REMIX_HINT_DEFAULT (0)
+#define REMIX_HINT_LOG (1<<0)
+#define REMIX_HINT_TIME (1<<1)
+#define REMIX_HINT_FILENAME (1<<2)
+
+#define REMIX_CONSTRAINT_EMPTY ((RemixConstraint){NULL})
+
+#define REMIX_SAMPLES(x) ((RemixTime){(RemixCount)(x)})
+#define REMIX_SECONDS(x) ((RemixTime){(float)(x)})
+#define REMIX_BEAT24S(x) ((RemixTime){(int)(x)})
+
+
+#if (defined(__REMIX__) || defined(__REMIX_PLUGIN__))
+#include <remix/remix_plugin.h>
+#else
+typedef RemixOpaque RemixEnv;
+typedef RemixOpaque RemixPoint;
+typedef RemixOpaque RemixEnvelope;
+typedef RemixOpaque RemixChunk;
+typedef RemixOpaque RemixChannel;
+typedef RemixOpaque RemixStream;
+typedef RemixOpaque RemixDeck;
+typedef RemixOpaque RemixTrack;
+typedef RemixOpaque RemixLayer;
+typedef RemixOpaque RemixSound;
+typedef RemixOpaque RemixMetaAuthor;
+typedef RemixOpaque RemixMetaText;
+typedef RemixOpaque RemixPlugin;
+typedef RemixOpaque RemixSquareTone;
+typedef RemixOpaque RemixMonitor;
+#endif
+
+#if defined(__cplusplus)
+}
+#endif
+
+#endif /* __REMIX_TYPES_H__ */