mirror of
				https://github.com/cookiengineer/audacity
				synced 2025-11-04 08:04:06 +01:00 
			
		
		
		
	Reworked LV2 plug-ing support.
This enables all platforms to use LV2 plugins in non-GUI mode. There is still some work to do, like subgroup handling and better scalepoint handling.
This commit is contained in:
		
							
								
								
									
										317
									
								
								configure
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										317
									
								
								configure
									
									
									
									
										vendored
									
									
								
							@@ -637,6 +637,8 @@ build_os
 | 
			
		||||
build_vendor
 | 
			
		||||
build_cpu
 | 
			
		||||
build
 | 
			
		||||
LV2_LIBS
 | 
			
		||||
LV2_CFLAGS
 | 
			
		||||
PORTAUDIO_LIBS
 | 
			
		||||
PORTAUDIO_CFLAGS
 | 
			
		||||
PORTSMF_LIBS
 | 
			
		||||
@@ -769,6 +771,7 @@ with_ffmpeg
 | 
			
		||||
with_midi
 | 
			
		||||
with_portaudio
 | 
			
		||||
with_lame
 | 
			
		||||
with_LV2
 | 
			
		||||
enable_audiounits
 | 
			
		||||
enable_ladspa
 | 
			
		||||
enable_quicktime
 | 
			
		||||
@@ -815,12 +818,29 @@ PORTSMF_CFLAGS
 | 
			
		||||
PORTSMF_LIBS
 | 
			
		||||
PORTAUDIO_CFLAGS
 | 
			
		||||
PORTAUDIO_LIBS
 | 
			
		||||
LV2_CFLAGS
 | 
			
		||||
LV2_LIBS
 | 
			
		||||
GTK_CFLAGS
 | 
			
		||||
GTK_LIBS
 | 
			
		||||
JACK_CFLAGS
 | 
			
		||||
JACK_LIBS'
 | 
			
		||||
ac_subdirs_all='lib-src/FileDialog
 | 
			
		||||
$CONFIG_SUBDIRS
 | 
			
		||||
lib-src/libflac
 | 
			
		||||
lib-src/libid3tag
 | 
			
		||||
lib-src/libmad
 | 
			
		||||
lib-src/libnyquist
 | 
			
		||||
lib-src/libresample
 | 
			
		||||
lib-src/libsamplerate
 | 
			
		||||
lib-src/sbsms
 | 
			
		||||
lib-src/libsndfile
 | 
			
		||||
lib-src/soundtouch
 | 
			
		||||
lib-src/libsoxr
 | 
			
		||||
lib-src/twolame
 | 
			
		||||
lib-src/libvamp
 | 
			
		||||
lib-src/libogg lib-src/libvorbis
 | 
			
		||||
lib-src/lv2
 | 
			
		||||
lib-src/portaudio-v19
 | 
			
		||||
lib-src/portsmf
 | 
			
		||||
lib-src/portmixer'
 | 
			
		||||
 | 
			
		||||
# Initialize some variables set by options.
 | 
			
		||||
@@ -1476,6 +1496,7 @@ Optional Packages:
 | 
			
		||||
  --with-midi             use portSMF for Midi support
 | 
			
		||||
  --with-portaudio        use portaudio19
 | 
			
		||||
  --with-lame             use lame for import and export support
 | 
			
		||||
  --with-lv2              use for adding LV2 plug-in support
 | 
			
		||||
  --with-portmixer        compile with PortMixer [default=yes]
 | 
			
		||||
 | 
			
		||||
Some influential environment variables:
 | 
			
		||||
@@ -1539,6 +1560,8 @@ Some influential environment variables:
 | 
			
		||||
              C compiler flags for PORTAUDIO, overriding pkg-config
 | 
			
		||||
  PORTAUDIO_LIBS
 | 
			
		||||
              linker flags for PORTAUDIO, overriding pkg-config
 | 
			
		||||
  LV2_CFLAGS  C compiler flags for LV2, overriding pkg-config
 | 
			
		||||
  LV2_LIBS    linker flags for LV2, overriding pkg-config
 | 
			
		||||
  GTK_CFLAGS  C compiler flags for GTK, overriding pkg-config
 | 
			
		||||
  GTK_LIBS    linker flags for GTK, overriding pkg-config
 | 
			
		||||
  JACK_CFLAGS C compiler flags for JACK, overriding pkg-config
 | 
			
		||||
@@ -5848,7 +5871,7 @@ BUILD_LDFLAGS="$BUILD_LDFLAGS $WIDGETEXTRA_LIBS"
 | 
			
		||||
CXXFLAGS="$CXXFLAGS $WIDGETEXTRA_CFLAGS"
 | 
			
		||||
LIBSRC_BUILD="$LIBSRC_BUILD widgetextra"
 | 
			
		||||
 | 
			
		||||
LIBRARIES="LIBVORBIS LIBMAD LIBSNDFILE LIBFLAC LIBID3TAG LIBSOXR LIBRESAMPLE LIBSAMPLERATE LIBSBSMS LIBSOUNDTOUCH LIBNYQUIST LIBVAMP LIBEXPAT LIBTWOLAME FFMPEG PORTSMF PORTAUDIO LAME"
 | 
			
		||||
LIBRARIES="LIBVORBIS LIBMAD LIBSNDFILE LIBFLAC LIBID3TAG LIBSOXR LIBRESAMPLE LIBSAMPLERATE LIBSBSMS LIBSOUNDTOUCH LIBNYQUIST LIBVAMP LIBEXPAT LIBTWOLAME FFMPEG PORTSMF PORTAUDIO LAME LV2"
 | 
			
		||||
 | 
			
		||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: Determining what libraries are available in this tree and on the system" >&5
 | 
			
		||||
$as_echo "$as_me: Determining what libraries are available in this tree and on the system" >&6;}
 | 
			
		||||
@@ -5974,7 +5997,6 @@ fi
 | 
			
		||||
      LIBSNDFILE_LOCAL_AVAILABLE="yes"
 | 
			
		||||
      LIBSNDFILE_LOCAL_LIBS="libsndfile.a"
 | 
			
		||||
      LIBSNDFILE_LOCAL_CXXFLAGS='-I$(top_srcdir)/lib-src/libsndfile/src'
 | 
			
		||||
      LIBSNDFILE_LOCAL_CONFIG_SUBDIRS="lib-src/libsndfile"
 | 
			
		||||
      { $as_echo "$as_me:${as_lineno-$LINENO}: libsndfile libraries are available in this source tree" >&5
 | 
			
		||||
$as_echo "$as_me: libsndfile libraries are available in this source tree" >&6;}
 | 
			
		||||
 | 
			
		||||
@@ -6117,13 +6139,9 @@ fi
 | 
			
		||||
      LIBSOXR_LOCAL_CXXFLAGS='-I$(top_srcdir)/lib-src/libsoxr/src'
 | 
			
		||||
      LIBSOXR_LOCAL_CPPSYMBOLS="USE_LIBSOXR"
 | 
			
		||||
 | 
			
		||||
      if test ! -f lib-src/libsoxr/Makefile ; then
 | 
			
		||||
         LIBSOXR_LOCAL_CONFIG_SUBDIRS="lib-src/libsoxr"
 | 
			
		||||
 | 
			
		||||
         # Breaks other other libraries in Audacity tree; but why is ./configure
 | 
			
		||||
         # passing options specific to this library to other libraries?
 | 
			
		||||
         #LIBSOXR_LOCAL_CONFIGURE_ARGS="\"-DBUILD_SHARED_LIBS=OFF -DWITH_OPENMP=OFF\""
 | 
			
		||||
      fi
 | 
			
		||||
      # Breaks other other libraries in Audacity tree; but why is ./configure
 | 
			
		||||
      # passing options specific to this library to other libraries?
 | 
			
		||||
      #LIBSOXR_LOCAL_CONFIGURE_ARGS="\"-DBUILD_SHARED_LIBS=OFF -DWITH_OPENMP=OFF\""
 | 
			
		||||
      { $as_echo "$as_me:${as_lineno-$LINENO}: libsoxr libraries are available in the local tree" >&5
 | 
			
		||||
$as_echo "$as_me: libsoxr libraries are available in the local tree" >&6;}
 | 
			
		||||
   else
 | 
			
		||||
@@ -6183,7 +6201,6 @@ fi
 | 
			
		||||
      LIBRESAMPLE_LOCAL_LIBS="libresample.a"
 | 
			
		||||
      LIBRESAMPLE_LOCAL_CXXFLAGS='-I$(top_srcdir)/lib-src/libresample/include'
 | 
			
		||||
      LIBRESAMPLE_LOCAL_CPPSYMBOLS="USE_LIBRESAMPLE"
 | 
			
		||||
      LIBRESAMPLE_LOCAL_CONFIG_SUBDIRS="lib-src/libresample"
 | 
			
		||||
 | 
			
		||||
      { $as_echo "$as_me:${as_lineno-$LINENO}: libresample libraries are available in the local tree" >&5
 | 
			
		||||
$as_echo "$as_me: libresample libraries are available in the local tree" >&6;}
 | 
			
		||||
@@ -6322,10 +6339,6 @@ fi
 | 
			
		||||
      LIBSAMPLERATE_LOCAL_LIBS="libsamplerate.a"
 | 
			
		||||
      LIBSAMPLERATE_LOCAL_CXXFLAGS='-I$(top_srcdir)/lib-src/libsamplerate/src'
 | 
			
		||||
      LIBSAMPLERATE_LOCAL_CPPSYMBOLS="USE_LIBSAMPLERATE"
 | 
			
		||||
 | 
			
		||||
      if test ! -f lib-src/libsamplerate/Makefile ; then
 | 
			
		||||
         LIBSAMPLERATE_LOCAL_CONFIG_SUBDIRS="lib-src/libsamplerate"
 | 
			
		||||
      fi
 | 
			
		||||
      { $as_echo "$as_me:${as_lineno-$LINENO}: libsamplerate libraries are available in the local tree" >&5
 | 
			
		||||
$as_echo "$as_me: libsamplerate libraries are available in the local tree" >&6;}
 | 
			
		||||
   else
 | 
			
		||||
@@ -6592,7 +6605,6 @@ fi
 | 
			
		||||
 | 
			
		||||
      LIBVORBIS_LOCAL_CPPSYMBOLS="USE_LIBVORBIS"
 | 
			
		||||
 | 
			
		||||
      LIBVORBIS_LOCAL_CONFIG_SUBDIRS="lib-src/libogg lib-src/libvorbis"
 | 
			
		||||
      LIBVORBIS_LOCAL_CONFIGURE_OPTS="--disable-oggtest"
 | 
			
		||||
      export PKG_CONFIG_PATH="../libogg:${PKG_CONFIG_PATH}"
 | 
			
		||||
 | 
			
		||||
@@ -6742,7 +6754,7 @@ $as_echo "$as_me: WARNING: system installation of libmad found, but it is too ol
 | 
			
		||||
   if test "x$libmad_available_system" = "xyes" ; then
 | 
			
		||||
      LIBMAD_SYSTEM_AVAILABLE="yes"
 | 
			
		||||
      LIBMAD_SYSTEM_LIBS="$LIBMAD_LIBS"
 | 
			
		||||
	  LIBMAD_SYSTEM_CXXFLAGS="$LIBMAD_CFLAGS"
 | 
			
		||||
      LIBMAD_SYSTEM_CXXFLAGS="$LIBMAD_CFLAGS"
 | 
			
		||||
      LIBMAD_SYSTEM_CPPSYMBOLS="USE_LIBMAD"
 | 
			
		||||
      { $as_echo "$as_me:${as_lineno-$LINENO}: libmad libraries are available as system libraries" >&5
 | 
			
		||||
$as_echo "$as_me: libmad libraries are available as system libraries" >&6;}
 | 
			
		||||
@@ -6781,7 +6793,6 @@ fi
 | 
			
		||||
      LIBMAD_LOCAL_LIBS="libmad.a"
 | 
			
		||||
      LIBMAD_LOCAL_CXXFLAGS='-I$(top_srcdir)/lib-src/libmad'
 | 
			
		||||
      LIBMAD_LOCAL_CPPSYMBOLS="USE_LIBMAD"
 | 
			
		||||
      LIBMAD_LOCAL_CONFIG_SUBDIRS="lib-src/libmad"
 | 
			
		||||
      { $as_echo "$as_me:${as_lineno-$LINENO}: libmad libraries are available in the local tree" >&5
 | 
			
		||||
$as_echo "$as_me: libmad libraries are available in the local tree" >&6;}
 | 
			
		||||
   else
 | 
			
		||||
@@ -6935,7 +6946,6 @@ fi
 | 
			
		||||
      LIBFLAC_LOCAL_CPPSYMBOLS="USE_LIBFLAC"
 | 
			
		||||
      # this file shouldn't be built at if no libflac is available
 | 
			
		||||
      LIBFLAC_LOCAL_OPTOBJS="ondemand/ODDecodeFlacTask.o"
 | 
			
		||||
      LIBFLAC_LOCAL_CONFIG_SUBDIRS="lib-src/libflac"
 | 
			
		||||
      LIBFLAC_LOCAL_CONFIGURE_ARGS="--disable-xmms-plugin --disable-doxygen-docs --disable-thorough-tests"
 | 
			
		||||
 | 
			
		||||
      { $as_echo "$as_me:${as_lineno-$LINENO}: FLAC libraries are available in this source tree" >&5
 | 
			
		||||
@@ -7060,7 +7070,6 @@ fi
 | 
			
		||||
      LIBID3TAG_LOCAL_LIBS="libid3tag.a"
 | 
			
		||||
      LIBID3TAG_LOCAL_CXXFLAGS='-I$(top_srcdir)/lib-src/libid3tag'
 | 
			
		||||
      LIBID3TAG_LOCAL_CPPSYMBOLS="USE_LIBID3TAG"
 | 
			
		||||
      LIBID3TAG_LOCAL_CONFIG_SUBDIRS="lib-src/libid3tag"
 | 
			
		||||
      { $as_echo "$as_me:${as_lineno-$LINENO}: libid3tag libraries are available in the local tree" >&5
 | 
			
		||||
$as_echo "$as_me: libid3tag libraries are available in the local tree" >&6;}
 | 
			
		||||
   else
 | 
			
		||||
@@ -7199,8 +7208,7 @@ fi
 | 
			
		||||
      LIBSBSMS_LOCAL_CXXFLAGS='-I$(top_srcdir)/lib-src/sbsms/include'
 | 
			
		||||
      LIBSBSMS_LOCAL_CPPSYMBOLS="USE_SBSMS"
 | 
			
		||||
 | 
			
		||||
	        LIBSBSMS_LOCAL_CONFIG_SUBDIRS="lib-src/sbsms"
 | 
			
		||||
	  	   LIBSBSMS_LOCAL_CONFIGURE_ARGS="--disable-programs"
 | 
			
		||||
            LIBSBSMS_LOCAL_CONFIGURE_ARGS="--disable-programs"
 | 
			
		||||
 | 
			
		||||
      { $as_echo "$as_me:${as_lineno-$LINENO}: libsbsms libraries are available in the local tree" >&5
 | 
			
		||||
$as_echo "$as_me: libsbsms libraries are available in the local tree" >&6;}
 | 
			
		||||
@@ -7477,7 +7485,6 @@ fi
 | 
			
		||||
      LIBSOUNDTOUCH_LOCAL_LIBS="libSoundTouch.a"
 | 
			
		||||
      LIBSOUNDTOUCH_LOCAL_CXXFLAGS='-I$(top_srcdir)/lib-src/soundtouch/include'
 | 
			
		||||
      LIBSOUNDTOUCH_LOCAL_CPPSYMBOLS="USE_SOUNDTOUCH"
 | 
			
		||||
      LIBSOUNDTOUCH_LOCAL_CONFIG_SUBDIRS="lib-src/soundtouch"
 | 
			
		||||
      LIBSOUNDTOUCH_LOCAL_CONFIGURE_ARGS="--enable-static=yes --enable-shared=no"
 | 
			
		||||
      { $as_echo "$as_me:${as_lineno-$LINENO}: libsoundtouch libraries are available in the local tree" >&5
 | 
			
		||||
$as_echo "$as_me: libsoundtouch libraries are available in the local tree" >&6;}
 | 
			
		||||
@@ -7538,8 +7545,6 @@ fi
 | 
			
		||||
      LIBNYQUIST_LOCAL_OPTOBJS="effects/nyquist/Nyquist.o"
 | 
			
		||||
      LIBNYQUIST_LOCAL_OPTOBJS="$LIBNYQUIST_LOCAL_OPTOBJS effects/nyquist/LoadNyquist.o"
 | 
			
		||||
 | 
			
		||||
      LIBNYQUIST_LOCAL_CONFIG_SUBDIRS="lib-src/libnyquist"
 | 
			
		||||
 | 
			
		||||
      { $as_echo "$as_me:${as_lineno-$LINENO}: nyquist libraries are available in the local tree" >&5
 | 
			
		||||
$as_echo "$as_me: nyquist libraries are available in the local tree" >&6;}
 | 
			
		||||
   else
 | 
			
		||||
@@ -7637,7 +7642,7 @@ fi
 | 
			
		||||
      LIBVAMP_SYSTEM_AVAILABLE="yes"
 | 
			
		||||
      LIBVAMP_SYSTEM_LIBS=$VAMP_LIBS
 | 
			
		||||
      LIBVAMP_SYSTEM_CXXFLAGS=$VAMP_CFLAGS
 | 
			
		||||
	        LIBVAMP_SYSTEM_OPTOBJS="effects/vamp/VampEffect.o effects/vamp/LoadVamp.o"
 | 
			
		||||
            LIBVAMP_SYSTEM_OPTOBJS="effects/vamp/VampEffect.o effects/vamp/LoadVamp.o"
 | 
			
		||||
      LIBVAMP_SYSTEM_CPPSYMBOLS="USE_VAMP"
 | 
			
		||||
      { $as_echo "$as_me:${as_lineno-$LINENO}: Vamp libraries are available as system libraries" >&5
 | 
			
		||||
$as_echo "$as_me: Vamp libraries are available as system libraries" >&6;}
 | 
			
		||||
@@ -7674,13 +7679,12 @@ fi
 | 
			
		||||
 | 
			
		||||
   if test "x$vamp_h_found" = "xyes" ; then
 | 
			
		||||
      LIBVAMP_LOCAL_AVAILABLE="yes"
 | 
			
		||||
	        LIBVAMP_LOCAL_BUILD="vamp-sdk"
 | 
			
		||||
	        LIBVAMP_LOCAL_CXXFLAGS='-I$(top_srcdir)/lib-src/libvamp'
 | 
			
		||||
            LIBVAMP_LOCAL_BUILD="vamp-sdk"
 | 
			
		||||
            LIBVAMP_LOCAL_CXXFLAGS='-I$(top_srcdir)/lib-src/libvamp'
 | 
			
		||||
      LIBVAMP_LOCAL_LDFLAGS='-L$(top_builddir)/lib-src/libvamp/src -lvamp-hostsdk'
 | 
			
		||||
	        LIBVAMP_LOCAL_OPTOBJS="effects/vamp/VampEffect.o effects/vamp/LoadVamp.o"
 | 
			
		||||
	  	        LIBVAMP_LOCAL_CPPSYMBOLS="USE_VAMP"
 | 
			
		||||
	        LIBVAMP_LOCAL_CONFIG_SUBDIRS="lib-src/libvamp"
 | 
			
		||||
	  	   LIBVAMP_LOCAL_CONFIGURE_ARGS="--disable-programs"
 | 
			
		||||
            LIBVAMP_LOCAL_OPTOBJS="effects/vamp/VampEffect.o effects/vamp/LoadVamp.o"
 | 
			
		||||
                  LIBVAMP_LOCAL_CPPSYMBOLS="USE_VAMP"
 | 
			
		||||
            LIBVAMP_LOCAL_CONFIGURE_ARGS="--disable-programs"
 | 
			
		||||
 | 
			
		||||
      { $as_echo "$as_me:${as_lineno-$LINENO}: Vamp libraries are available in the local tree" >&5
 | 
			
		||||
$as_echo "$as_me: Vamp libraries are available in the local tree" >&6;}
 | 
			
		||||
@@ -7819,8 +7823,7 @@ fi
 | 
			
		||||
      LIBTWOLAME_LOCAL_CXXFLAGS='-I$(top_srcdir)/lib-src/twolame/libtwolame'
 | 
			
		||||
      LIBTWOLAME_LOCAL_CPPSYMBOLS="USE_LIBTWOLAME"
 | 
			
		||||
 | 
			
		||||
	        LIBTWOLAME_LOCAL_CONFIG_SUBDIRS="lib-src/twolame"
 | 
			
		||||
	  	   LIBTWOLAME_LOCAL_CONFIGURE_ARGS="--disable-programs"
 | 
			
		||||
            LIBTWOLAME_LOCAL_CONFIGURE_ARGS="--disable-programs"
 | 
			
		||||
 | 
			
		||||
      { $as_echo "$as_me:${as_lineno-$LINENO}: libtwolame library is available in the local tree" >&5
 | 
			
		||||
$as_echo "$as_me: libtwolame library is available in the local tree" >&6;}
 | 
			
		||||
@@ -8267,7 +8270,6 @@ fi
 | 
			
		||||
      PORTSMF_LOCAL_LIBS="libportSMF.a"
 | 
			
		||||
      PORTSMF_LOCAL_CXXFLAGS='-I$(top_srcdir)/lib-src/portsmf'
 | 
			
		||||
      PORTSMF_LOCAL_CPPSYMBOLS="USE_MIDI"
 | 
			
		||||
      PORTSMF_LOCAL_CONFIG_SUBDIRS="lib-src/portsmf"
 | 
			
		||||
            PORTSMF_LOCAL_OPTOBJS="NoteTrack.o import/ImportMIDI.o"
 | 
			
		||||
   else
 | 
			
		||||
      PORTSMF_LOCAL_AVAILABLE="no"
 | 
			
		||||
@@ -8414,8 +8416,7 @@ fi
 | 
			
		||||
      PORTAUDIO_LOCAL_LIBS="libportaudio.a"
 | 
			
		||||
      PORTAUDIO_LOCAL_CXXFLAGS='-I$(top_srcdir)/lib-src/portaudio-v19/include'
 | 
			
		||||
 | 
			
		||||
            PORTAUDIO_LOCAL_CONFIG_SUBDIRS="lib-src/portaudio-v19"
 | 
			
		||||
      PORTAUDIO_LOCAL_CONFIGURE_ARGS="--with-pa-include=../portaudio-v19/include"
 | 
			
		||||
            PORTAUDIO_LOCAL_CONFIGURE_ARGS="--with-pa-include=../portaudio-v19/include"
 | 
			
		||||
 | 
			
		||||
      { $as_echo "$as_me:${as_lineno-$LINENO}: portaudio19 library is available in the local tree" >&5
 | 
			
		||||
$as_echo "$as_me: portaudio19 library is available in the local tree" >&6;}
 | 
			
		||||
@@ -8514,6 +8515,148 @@ $as_echo "$as_me: LAME library is NOT available as system library." >&6;}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Check whether --with-LV2 was given.
 | 
			
		||||
if test "${with_LV2+set}" = set; then :
 | 
			
		||||
  withval=$with_LV2; LV2_ARGUMENT=$withval
 | 
			
		||||
else
 | 
			
		||||
  LV2_ARGUMENT="unspecified"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
   if false ; then
 | 
			
		||||
 | 
			
		||||
$as_echo "#define USE_LV2 1" >>confdefs.h
 | 
			
		||||
 | 
			
		||||
   fi
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
pkg_failed=no
 | 
			
		||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LV2" >&5
 | 
			
		||||
$as_echo_n "checking for LV2... " >&6; }
 | 
			
		||||
 | 
			
		||||
if test -n "$LV2_CFLAGS"; then
 | 
			
		||||
    pkg_cv_LV2_CFLAGS="$LV2_CFLAGS"
 | 
			
		||||
 elif test -n "$PKG_CONFIG"; then
 | 
			
		||||
    if test -n "$PKG_CONFIG" && \
 | 
			
		||||
    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"lv2 lilv serd sord sratom\""; } >&5
 | 
			
		||||
  ($PKG_CONFIG --exists --print-errors "lv2 lilv serd sord sratom") 2>&5
 | 
			
		||||
  ac_status=$?
 | 
			
		||||
  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
 | 
			
		||||
  test $ac_status = 0; }; then
 | 
			
		||||
  pkg_cv_LV2_CFLAGS=`$PKG_CONFIG --cflags "lv2 lilv serd sord sratom" 2>/dev/null`
 | 
			
		||||
else
 | 
			
		||||
  pkg_failed=yes
 | 
			
		||||
fi
 | 
			
		||||
 else
 | 
			
		||||
    pkg_failed=untried
 | 
			
		||||
fi
 | 
			
		||||
if test -n "$LV2_LIBS"; then
 | 
			
		||||
    pkg_cv_LV2_LIBS="$LV2_LIBS"
 | 
			
		||||
 elif test -n "$PKG_CONFIG"; then
 | 
			
		||||
    if test -n "$PKG_CONFIG" && \
 | 
			
		||||
    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"lv2 lilv serd sord sratom\""; } >&5
 | 
			
		||||
  ($PKG_CONFIG --exists --print-errors "lv2 lilv serd sord sratom") 2>&5
 | 
			
		||||
  ac_status=$?
 | 
			
		||||
  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
 | 
			
		||||
  test $ac_status = 0; }; then
 | 
			
		||||
  pkg_cv_LV2_LIBS=`$PKG_CONFIG --libs "lv2 lilv serd sord sratom" 2>/dev/null`
 | 
			
		||||
else
 | 
			
		||||
  pkg_failed=yes
 | 
			
		||||
fi
 | 
			
		||||
 else
 | 
			
		||||
    pkg_failed=untried
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
if test $pkg_failed = yes; then
 | 
			
		||||
 | 
			
		||||
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
 | 
			
		||||
        _pkg_short_errors_supported=yes
 | 
			
		||||
else
 | 
			
		||||
        _pkg_short_errors_supported=no
 | 
			
		||||
fi
 | 
			
		||||
        if test $_pkg_short_errors_supported = yes; then
 | 
			
		||||
	        LV2_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "lv2 lilv serd sord sratom" 2>&1`
 | 
			
		||||
        else
 | 
			
		||||
	        LV2_PKG_ERRORS=`$PKG_CONFIG --print-errors "lv2 lilv serd sord sratom" 2>&1`
 | 
			
		||||
        fi
 | 
			
		||||
	# Put the nasty error message in config.log where it belongs
 | 
			
		||||
	echo "$LV2_PKG_ERRORS" >&5
 | 
			
		||||
 | 
			
		||||
	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 | 
			
		||||
$as_echo "no" >&6; }
 | 
			
		||||
                lv2_available_system="no"
 | 
			
		||||
elif test $pkg_failed = untried; then
 | 
			
		||||
	lv2_available_system="no"
 | 
			
		||||
else
 | 
			
		||||
	LV2_CFLAGS=$pkg_cv_LV2_CFLAGS
 | 
			
		||||
	LV2_LIBS=$pkg_cv_LV2_LIBS
 | 
			
		||||
        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 | 
			
		||||
$as_echo "yes" >&6; }
 | 
			
		||||
	lv2_available_system="yes"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
   if test "x$lv2_available_system" = "xyes" ; then
 | 
			
		||||
      LV2_SYSTEM_AVAILABLE="yes"
 | 
			
		||||
      LV2_SYSTEM_LIBS=$LV2_LIBS
 | 
			
		||||
      LV2_SYSTEM_CXXFLAGS=$LV2_CFLAGS
 | 
			
		||||
      LV2_SYSTEM_CPPSYMBOLS="USE_LV2"
 | 
			
		||||
      LV2_SYSTEM_OPTOBJS="effects/lv2/LoadLV2.o effects/lv2/LV2Effect.o effects/lv2/LV2PortGroup.o"
 | 
			
		||||
 | 
			
		||||
      { $as_echo "$as_me:${as_lineno-$LINENO}: LV2 libraries are available as system libraries" >&5
 | 
			
		||||
$as_echo "$as_me: LV2 libraries are available as system libraries" >&6;}
 | 
			
		||||
   else
 | 
			
		||||
      LV2_SYSTEM_AVAILABLE="no"
 | 
			
		||||
      { $as_echo "$as_me:${as_lineno-$LINENO}: LV2 libraries are NOT available as system libraries" >&5
 | 
			
		||||
$as_echo "$as_me: LV2 libraries are NOT available as system libraries" >&6;}
 | 
			
		||||
   fi
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
   as_ac_File=`$as_echo "ac_cv_file_${srcdir}/lib-src/lv2/configure" | $as_tr_sh`
 | 
			
		||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${srcdir}/lib-src/lv2/configure" >&5
 | 
			
		||||
$as_echo_n "checking for ${srcdir}/lib-src/lv2/configure... " >&6; }
 | 
			
		||||
if eval \${$as_ac_File+:} false; then :
 | 
			
		||||
  $as_echo_n "(cached) " >&6
 | 
			
		||||
else
 | 
			
		||||
  test "$cross_compiling" = yes &&
 | 
			
		||||
  as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5
 | 
			
		||||
if test -r "${srcdir}/lib-src/lv2/configure"; then
 | 
			
		||||
  eval "$as_ac_File=yes"
 | 
			
		||||
else
 | 
			
		||||
  eval "$as_ac_File=no"
 | 
			
		||||
fi
 | 
			
		||||
fi
 | 
			
		||||
eval ac_res=\$$as_ac_File
 | 
			
		||||
	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
 | 
			
		||||
$as_echo "$ac_res" >&6; }
 | 
			
		||||
if eval test \"x\$"$as_ac_File"\" = x"yes"; then :
 | 
			
		||||
  lv2_configure_found="yes"
 | 
			
		||||
else
 | 
			
		||||
  lv2_configure_found="no"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
   if test "x$lv2_configure_found" = "xyes" ; then
 | 
			
		||||
      LV2_LOCAL_AVAILABLE="yes"
 | 
			
		||||
      LV2_LOCAL_LIBS="liblv2.a"
 | 
			
		||||
      LV2_LOCAL_CXXFLAGS='-I$(top_srcdir)/lib-src/lv2/include'
 | 
			
		||||
      LV2_LOCAL_CPPSYMBOLS="USE_LV2"
 | 
			
		||||
      LV2_LOCAL_OPTOBJS="effects/lv2/LoadLV2.o effects/lv2/LV2Effect.o effects/lv2/LV2PortGroup.o"
 | 
			
		||||
 | 
			
		||||
      { $as_echo "$as_me:${as_lineno-$LINENO}: LV2 libraries are available in the local tree" >&5
 | 
			
		||||
$as_echo "$as_me: LV2 libraries are available in the local tree" >&6;}
 | 
			
		||||
   else
 | 
			
		||||
      LV2_LOCAL_AVAILABLE="no"
 | 
			
		||||
      { $as_echo "$as_me:${as_lineno-$LINENO}: LV2 libraries are NOT available in the local tree" >&5
 | 
			
		||||
$as_echo "$as_me: LV2 libraries are NOT available in the local tree" >&6;}
 | 
			
		||||
   fi
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: Figuring out what libraries to enable" >&5
 | 
			
		||||
$as_echo "$as_me: Figuring out what libraries to enable" >&6;}
 | 
			
		||||
 | 
			
		||||
@@ -8634,10 +8777,7 @@ for lib in $LIBRARIES ; do
 | 
			
		||||
      eval BUILD_LDFLAGS=\"\$BUILD_LDFLAGS \$${lib}_LOCAL_LDFLAGS\"
 | 
			
		||||
      eval OPTOBJS=\"$OPTOBJS \$${lib}_LOCAL_OPTOBJS\"
 | 
			
		||||
      eval CXXFLAGS=\"\$CXXFLAGS \$${lib}_LOCAL_CXXFLAGS\"
 | 
			
		||||
      eval CONFIG_SUBDIRS=\"\$${lib}_LOCAL_CONFIG_SUBDIRS\"
 | 
			
		||||
      eval ac_configure_args=\"\$ac_configure_args \$${lib}_LOCAL_CONFIGURE_ARGS\"
 | 
			
		||||
      subdirs="$subdirs $CONFIG_SUBDIRS"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
      eval CPPSYMBOLS=\"\$${lib}_LOCAL_CPPSYMBOLS\"
 | 
			
		||||
      for symbol in $CPPSYMBOLS ; do
 | 
			
		||||
@@ -8663,6 +8803,103 @@ _ACEOF
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
   if test "$LIBFLAC_USE_LOCAL" = yes; then
 | 
			
		||||
      subdirs="$subdirs lib-src/libflac"
 | 
			
		||||
 | 
			
		||||
   fi
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
   if test "$LIBID3TAG_USE_LOCAL" = yes; then
 | 
			
		||||
      subdirs="$subdirs lib-src/libid3tag"
 | 
			
		||||
 | 
			
		||||
   fi
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
   if test "$LIBMAD_USE_LOCAL" = yes; then
 | 
			
		||||
      subdirs="$subdirs lib-src/libmad"
 | 
			
		||||
 | 
			
		||||
   fi
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
   if test "$LIBNYQUIST_USE_LOCAL" = yes; then
 | 
			
		||||
      subdirs="$subdirs lib-src/libnyquist"
 | 
			
		||||
 | 
			
		||||
   fi
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
   if test "$LIBRESAMPLE_USE_LOCAL" = yes; then
 | 
			
		||||
      subdirs="$subdirs lib-src/libresample"
 | 
			
		||||
 | 
			
		||||
   fi
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
   if test "$LIBSAMPLERATE_USE_LOCAL" = yes; then
 | 
			
		||||
      subdirs="$subdirs lib-src/libsamplerate"
 | 
			
		||||
 | 
			
		||||
   fi
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
   if test "$LIBSBSMS_USE_LOCAL" = yes; then
 | 
			
		||||
      subdirs="$subdirs lib-src/sbsms"
 | 
			
		||||
 | 
			
		||||
   fi
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
   if test "$LIBSNDFILE_USE_LOCAL" = yes; then
 | 
			
		||||
      subdirs="$subdirs lib-src/libsndfile"
 | 
			
		||||
 | 
			
		||||
   fi
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
   if test "$LIBSOUNDTOUCH_USE_LOCAL" = yes; then
 | 
			
		||||
      subdirs="$subdirs lib-src/soundtouch"
 | 
			
		||||
 | 
			
		||||
   fi
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
   if test "$LIBSOXR_USE_LOCAL" = yes; then
 | 
			
		||||
      subdirs="$subdirs lib-src/libsoxr"
 | 
			
		||||
 | 
			
		||||
   fi
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
   if test "$LIBTWOLAME_USE_LOCAL" = yes; then
 | 
			
		||||
      subdirs="$subdirs lib-src/twolame"
 | 
			
		||||
 | 
			
		||||
   fi
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
   if test "$LIBVAMP_USE_LOCAL" = yes; then
 | 
			
		||||
      subdirs="$subdirs lib-src/libvamp"
 | 
			
		||||
 | 
			
		||||
   fi
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
   if test "$LIBVORBIS_USE_LOCAL" = yes; then
 | 
			
		||||
      subdirs="$subdirs lib-src/libogg lib-src/libvorbis"
 | 
			
		||||
 | 
			
		||||
   fi
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
   if test "$LV2_USE_LOCAL" = yes; then
 | 
			
		||||
      subdirs="$subdirs lib-src/lv2"
 | 
			
		||||
 | 
			
		||||
   fi
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
   if test "$PORTAUDIO_USE_LOCAL" = yes; then
 | 
			
		||||
      subdirs="$subdirs lib-src/portaudio-v19"
 | 
			
		||||
 | 
			
		||||
   fi
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
   if test "$PORTSMF_USE_LOCAL" = yes; then
 | 
			
		||||
      subdirs="$subdirs lib-src/portsmf"
 | 
			
		||||
 | 
			
		||||
   fi
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Check whether --enable-audiounits was given.
 | 
			
		||||
 
 | 
			
		||||
@@ -335,7 +335,7 @@ dnl-------------------------------------------------------------
 | 
			
		||||
dnl Optional library support. Lots of things we could use, but
 | 
			
		||||
dnl can do without if they aren't available.
 | 
			
		||||
dnl-------------------------------------------------------------
 | 
			
		||||
LIBRARIES="LIBVORBIS LIBMAD LIBSNDFILE LIBFLAC LIBID3TAG LIBSOXR LIBRESAMPLE LIBSAMPLERATE LIBSBSMS LIBSOUNDTOUCH LIBNYQUIST LIBVAMP LIBEXPAT LIBTWOLAME FFMPEG PORTSMF PORTAUDIO LAME"
 | 
			
		||||
LIBRARIES="LIBVORBIS LIBMAD LIBSNDFILE LIBFLAC LIBID3TAG LIBSOXR LIBRESAMPLE LIBSAMPLERATE LIBSBSMS LIBSOUNDTOUCH LIBNYQUIST LIBVAMP LIBEXPAT LIBTWOLAME FFMPEG PORTSMF PORTAUDIO LAME LV2"
 | 
			
		||||
 | 
			
		||||
AC_MSG_NOTICE([Determining what libraries are available in this tree and on the system])
 | 
			
		||||
 | 
			
		||||
@@ -357,6 +357,7 @@ AUDACITY_CHECKLIB_FFMPEG
 | 
			
		||||
AUDACITY_CHECKLIB_PORTSMF
 | 
			
		||||
AUDACITY_CHECKLIB_PORTAUDIO
 | 
			
		||||
AUDACITY_CHECKLIB_LAME
 | 
			
		||||
AUDACITY_CHECKLIB_LV2
 | 
			
		||||
 | 
			
		||||
dnl Decide what libraries to build with, and whether to use system or local libraries
 | 
			
		||||
dnl Set variables based on choices.
 | 
			
		||||
@@ -522,6 +523,7 @@ AUDACITY_CONFIG_SUBDIRS_LIBSOXR
 | 
			
		||||
AUDACITY_CONFIG_SUBDIRS_LIBTWOLAME
 | 
			
		||||
AUDACITY_CONFIG_SUBDIRS_LIBVAMP
 | 
			
		||||
AUDACITY_CONFIG_SUBDIRS_LIBVORBIS
 | 
			
		||||
AUDACITY_CONFIG_SUBDIRS_LV2
 | 
			
		||||
AUDACITY_CONFIG_SUBDIRS_PORTAUDIO
 | 
			
		||||
AUDACITY_CONFIG_SUBDIRS_PORTSMF
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -96,6 +96,12 @@ libsndfile-recursive:
 | 
			
		||||
libsndfile.a: libsndfile-recursive
 | 
			
		||||
	ln -sf libsndfile/src/.libs/libsndfile.a libsndfile.a
 | 
			
		||||
 | 
			
		||||
# lv2
 | 
			
		||||
lv2-recursive:
 | 
			
		||||
	cd lv2 && bash build && cd ..
 | 
			
		||||
liblv2.a: lv2-recursive
 | 
			
		||||
	ln -sf lv2/liblv2.a liblv2.a
 | 
			
		||||
 | 
			
		||||
# SBSMS
 | 
			
		||||
sbsms-recursive:
 | 
			
		||||
	$(MAKE) -C sbsms
 | 
			
		||||
@@ -143,6 +149,7 @@ clean:
 | 
			
		||||
	test ! -f libvorbis/Makefile || $(MAKE) -C libvorbis clean
 | 
			
		||||
	test ! -f lib-widget-extra/Makefile || $(MAKE) -C lib-widget-extra clean
 | 
			
		||||
	test ! -f libflac/Makefile || $(MAKE) -C libflac clean
 | 
			
		||||
	cd lv2 && bash clean && cd ..
 | 
			
		||||
	test ! -f portaudio-v19/Makefile || $(MAKE) -C portaudio-v19 clean
 | 
			
		||||
	test ! -f portmixer/Makefile || $(MAKE) -C portmixer clean
 | 
			
		||||
	test ! -f sbsms/Makefile || $(MAKE) -C sbsms clean
 | 
			
		||||
@@ -166,6 +173,7 @@ distclean:
 | 
			
		||||
	test ! -f libvorbis/Makefile || $(MAKE) -C libvorbis distclean
 | 
			
		||||
	test ! -f lib-widget-extra/Makefile || $(MAKE) -C lib-widget-extra distclean
 | 
			
		||||
	test ! -f libflac/Makefile || $(MAKE) -C libflac distclean
 | 
			
		||||
	cd lv2 && bash clean && cd ..
 | 
			
		||||
	test ! -f portaudio-v19/Makefile || $(MAKE) -C portaudio-v19 distclean
 | 
			
		||||
	test ! -f portmixer/Makefile || $(MAKE) -C portmixer distclean
 | 
			
		||||
	test ! -f sbsms/Makefile || $(MAKE) -C sbsms distclean
 | 
			
		||||
@@ -180,5 +188,5 @@ distclean:
 | 
			
		||||
	libvorbis-recursive libnyquist-recursive libmad-recursive \
 | 
			
		||||
	libid3tag-recursive sbsms-recursive soundtouch-recursive libsndfile-recursive \
 | 
			
		||||
	libresample-recursive libsoxr-recursive libsamplerate-recursive vamp-sdk \
 | 
			
		||||
	portaudio-v19-recursive portmixer-recursive libtwolame-recursive
 | 
			
		||||
 | 
			
		||||
	portaudio-v19-recursive portmixer-recursive libtwolame-recursive \
 | 
			
		||||
	lv2-recursive
 | 
			
		||||
 
 | 
			
		||||
@@ -143,6 +143,31 @@ Upstream Version: 1.3.3
 | 
			
		||||
lib-widget-extra
 | 
			
		||||
----------------
 | 
			
		||||
 | 
			
		||||
lv2
 | 
			
		||||
---------
 | 
			
		||||
A merging of the lilv, lv2, msinttypes, serd, sord, and sratom libraries to support
 | 
			
		||||
LV2 plug-ins.
 | 
			
		||||
Versions in Audacity SVN:
 | 
			
		||||
    lilv-0.16.0
 | 
			
		||||
    lv2-1.6.0
 | 
			
		||||
    msinttypes-r29
 | 
			
		||||
    serd-0.18.2
 | 
			
		||||
    sord-0.12.0
 | 
			
		||||
    sratom-0.4.2 
 | 
			
		||||
Patches:
 | 
			
		||||
    usegetprocaddress.patch - ticket #923 opened upstream on 10/23/2013
 | 
			
		||||
    serdnode.patch - Both lilv and serd have a node.c which causes problems during build.
 | 
			
		||||
                     This is just a copy of serd/node.c and is a way to work around the
 | 
			
		||||
                     problem.
 | 
			
		||||
Upstream Versions:
 | 
			
		||||
    lilv-0.16.0
 | 
			
		||||
    lv2-1.6.0
 | 
			
		||||
    msinttypes-r29
 | 
			
		||||
    serd-0.18.2
 | 
			
		||||
    sord-0.12.0
 | 
			
		||||
    sratom-0.4.2 
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
mod-script-pipe
 | 
			
		||||
---------------
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										34
									
								
								lib-src/lv2/build
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										34
									
								
								lib-src/lv2/build
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,34 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
function waf
 | 
			
		||||
{
 | 
			
		||||
   pkg=$1
 | 
			
		||||
   pushd >/dev/null ${pkg}
 | 
			
		||||
   shift
 | 
			
		||||
   python waf --prefix="." --include="." $@ build || exit 1
 | 
			
		||||
   popd >/dev/null 
 | 
			
		||||
 | 
			
		||||
   export PKG_CONFIG_PATH="$(pwd)/${pkg}/build:${PKG_CONFIG_PATH}"
 | 
			
		||||
   export CFLAGS="-I$(pwd)/${pkg} ${CFLAGS}"
 | 
			
		||||
   export LDFLAGS="-L$(pwd)/${pkg} -l${pkg}-0 ${LDFLAGS}"
 | 
			
		||||
 | 
			
		||||
   if [ -e ${pkg}/build/*.a ]
 | 
			
		||||
   then
 | 
			
		||||
      mkdir -p obj
 | 
			
		||||
      pushd obj
 | 
			
		||||
      ar vx ../${pkg}/build/*.a
 | 
			
		||||
      ar vq ../liblv2.a *
 | 
			
		||||
      popd
 | 
			
		||||
      rm -rf obj
 | 
			
		||||
   fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
[ -e liblv2.a ] && exit 0
 | 
			
		||||
 | 
			
		||||
waf lv2 --no-plugins
 | 
			
		||||
waf serd --no-utils --static --no-shared
 | 
			
		||||
waf sord --no-utils --static --no-shared
 | 
			
		||||
waf sratom --static --no-shared
 | 
			
		||||
waf lilv --no-utils --static --no-shared
 | 
			
		||||
 | 
			
		||||
exit 0
 | 
			
		||||
							
								
								
									
										6
									
								
								lib-src/lv2/clean
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										6
									
								
								lib-src/lv2/clean
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
rm -rf {lv2,serd,sord,sratom,lilv}/{build,.waf*,.lock*}
 | 
			
		||||
rm -rf {liblv2.a,include}
 | 
			
		||||
 | 
			
		||||
exit 0
 | 
			
		||||
							
								
								
									
										49
									
								
								lib-src/lv2/configure
									
									
									
									
										vendored
									
									
										Executable file
									
								
							
							
						
						
									
										49
									
								
								lib-src/lv2/configure
									
									
									
									
										vendored
									
									
										Executable file
									
								
							@@ -0,0 +1,49 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
function waf
 | 
			
		||||
{
 | 
			
		||||
   pkg="$1"
 | 
			
		||||
   shift
 | 
			
		||||
   pushd >/dev/null ${pkg}
 | 
			
		||||
   python waf --prefix="." --include="." $@ configure || exit 1
 | 
			
		||||
   popd >/dev/null
 | 
			
		||||
 | 
			
		||||
   if [ "${pkg}" == "lv2" ]
 | 
			
		||||
   then
 | 
			
		||||
      eval $(sed -e "/^VERSION/!d;s/ //g;s/.*VERSION/version/" ${pkg}/wscript)
 | 
			
		||||
      major=""
 | 
			
		||||
   else
 | 
			
		||||
      eval $(sed -e "/^[A-Z]*_VERSION/!d;s/ //g;s/.*VERSION/version/" ${pkg}/wscript)
 | 
			
		||||
      major="-${version%%.*}"
 | 
			
		||||
   fi
 | 
			
		||||
 | 
			
		||||
   cat <<EOF >${pkg}/build/${pkg}${major}.pc
 | 
			
		||||
prefix=$(pwd)/${pkg}
 | 
			
		||||
exec_prefix=\${prefix}
 | 
			
		||||
libdir=\${exec_prefix}/lib
 | 
			
		||||
includedir=.
 | 
			
		||||
 | 
			
		||||
Name: ${pkg}
 | 
			
		||||
Version: ${version}
 | 
			
		||||
Description: Temporary fake config file
 | 
			
		||||
Libs: -L\${libdir} -l${pkg}${major} -ldl
 | 
			
		||||
Cflags: -I\${includedir}/${pkg}${major}
 | 
			
		||||
EOF
 | 
			
		||||
 | 
			
		||||
   export PKG_CONFIG_PATH="$(pwd)/${pkg}/build:${PKG_CONFIG_PATH}"
 | 
			
		||||
   export CFLAGS="-I$(pwd)/${pkg} ${CFLAGS}"
 | 
			
		||||
   export LDFLAGS="-L$(pwd)/${pkg} -l${pkg}-${major} ${LDFLAGS}"
 | 
			
		||||
 | 
			
		||||
   ln -s ../${pkg}/${pkg} include
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
rm -rf include
 | 
			
		||||
mkdir -p include
 | 
			
		||||
 | 
			
		||||
waf lv2 --no-plugins
 | 
			
		||||
waf serd --no-utils --static --no-shared
 | 
			
		||||
waf sord --no-utils --static --no-shared
 | 
			
		||||
waf sratom --static --no-shared
 | 
			
		||||
waf lilv --no-utils --static --no-shared
 | 
			
		||||
 | 
			
		||||
exit 0
 | 
			
		||||
@@ -30,7 +30,6 @@ extern "C" {
 | 
			
		||||
#    include <windows.h>
 | 
			
		||||
#    define dlopen(path, flags) LoadLibrary(path)
 | 
			
		||||
#    define dlclose(lib) FreeLibrary((HMODULE)lib)
 | 
			
		||||
#    define dlsym GetProcAddress
 | 
			
		||||
#    ifdef _MSC_VER
 | 
			
		||||
#        define __func__ __FUNCTION__
 | 
			
		||||
#        define INFINITY DBL_MAX + DBL_MAX
 | 
			
		||||
@@ -363,9 +362,13 @@ typedef void (*VoidFunc)(void);
 | 
			
		||||
static inline VoidFunc
 | 
			
		||||
lilv_dlfunc(void* handle, const char* symbol)
 | 
			
		||||
{
 | 
			
		||||
#ifdef _WIN32
 | 
			
		||||
   return (VoidFunc)GetProcAddress((HMODULE)handle, symbol);
 | 
			
		||||
#else
 | 
			
		||||
	typedef VoidFunc (*VoidFuncGetter)(void*, const char*);
 | 
			
		||||
	VoidFuncGetter dlfunc = (VoidFuncGetter)dlsym;
 | 
			
		||||
	return dlfunc(handle, symbol);
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifdef LILV_DYN_MANIFEST
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										347
									
								
								lib-src/lv2/serd/src/serdnode.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										347
									
								
								lib-src/lv2/serd/src/serdnode.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,347 @@
 | 
			
		||||
/*
 | 
			
		||||
  Copyright 2011-2012 David Robillard <http://drobilla.net>
 | 
			
		||||
 | 
			
		||||
  Permission to use, copy, modify, and/or distribute this software for any
 | 
			
		||||
  purpose with or without fee is hereby granted, provided that the above
 | 
			
		||||
  copyright notice and this permission notice appear in all copies.
 | 
			
		||||
 | 
			
		||||
  THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 | 
			
		||||
  WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 | 
			
		||||
  MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 | 
			
		||||
  ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 | 
			
		||||
  WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 | 
			
		||||
  ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 | 
			
		||||
  OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#include "serd_internal.h"
 | 
			
		||||
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <string.h>
 | 
			
		||||
 | 
			
		||||
#include <math.h>
 | 
			
		||||
#include <float.h>
 | 
			
		||||
 | 
			
		||||
#ifdef _WIN32
 | 
			
		||||
#    define isnan(x) _isnan(x)
 | 
			
		||||
#    define isinf(x) (!_finite(x))
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
SERD_API
 | 
			
		||||
SerdNode
 | 
			
		||||
serd_node_from_string(SerdType type, const uint8_t* buf)
 | 
			
		||||
{
 | 
			
		||||
	if (!buf) {
 | 
			
		||||
		return SERD_NODE_NULL;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	uint32_t     flags       = 0;
 | 
			
		||||
	size_t       buf_n_bytes = 0;
 | 
			
		||||
	const size_t buf_n_chars = serd_strlen(buf, &buf_n_bytes, &flags);
 | 
			
		||||
	SerdNode ret = { buf, buf_n_bytes, buf_n_chars, flags, type };
 | 
			
		||||
	return ret;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
SERD_API
 | 
			
		||||
SerdNode
 | 
			
		||||
serd_node_copy(const SerdNode* node)
 | 
			
		||||
{
 | 
			
		||||
	if (!node || !node->buf) {
 | 
			
		||||
		return SERD_NODE_NULL;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	SerdNode copy = *node;
 | 
			
		||||
	uint8_t* buf  = (uint8_t*)malloc(copy.n_bytes + 1);
 | 
			
		||||
	memcpy(buf, node->buf, copy.n_bytes + 1);
 | 
			
		||||
	copy.buf = buf;
 | 
			
		||||
	return copy;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
SERD_API
 | 
			
		||||
bool
 | 
			
		||||
serd_node_equals(const SerdNode* a, const SerdNode* b)
 | 
			
		||||
{
 | 
			
		||||
	return (a == b)
 | 
			
		||||
		|| (a->type == b->type
 | 
			
		||||
		    && a->n_bytes == b->n_bytes
 | 
			
		||||
		    && a->n_chars == b->n_chars
 | 
			
		||||
		    && ((a->buf == b->buf) || !memcmp((const char*)a->buf,
 | 
			
		||||
		                                      (const char*)b->buf,
 | 
			
		||||
		                                      a->n_bytes + 1)));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static size_t
 | 
			
		||||
serd_uri_string_length(const SerdURI* uri)
 | 
			
		||||
{
 | 
			
		||||
	size_t len = uri->path_base.len;
 | 
			
		||||
 | 
			
		||||
#define ADD_LEN(field, n_delims) \
 | 
			
		||||
	if ((field).len) { len += (field).len + (n_delims); }
 | 
			
		||||
 | 
			
		||||
	ADD_LEN(uri->path,      1);  // + possible leading `/'
 | 
			
		||||
	ADD_LEN(uri->scheme,    1);  // + trailing `:'
 | 
			
		||||
	ADD_LEN(uri->authority, 2);  // + leading `//'
 | 
			
		||||
	ADD_LEN(uri->query,     1);  // + leading `?'
 | 
			
		||||
	ADD_LEN(uri->fragment,  1);  // + leading `#'
 | 
			
		||||
 | 
			
		||||
	return len + 2;  // + 2 for authority `//'
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static size_t
 | 
			
		||||
string_sink(const void* buf, size_t len, void* stream)
 | 
			
		||||
{
 | 
			
		||||
	uint8_t** ptr = (uint8_t**)stream;
 | 
			
		||||
	memcpy(*ptr, buf, len);
 | 
			
		||||
	*ptr += len;
 | 
			
		||||
	return len;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
SERD_API
 | 
			
		||||
SerdNode
 | 
			
		||||
serd_node_new_uri_from_node(const SerdNode* uri_node,
 | 
			
		||||
                            const SerdURI*  base,
 | 
			
		||||
                            SerdURI*        out)
 | 
			
		||||
{
 | 
			
		||||
	return (uri_node->type == SERD_URI)
 | 
			
		||||
		? serd_node_new_uri_from_string(uri_node->buf, base, out)
 | 
			
		||||
		: SERD_NODE_NULL;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
SERD_API
 | 
			
		||||
SerdNode
 | 
			
		||||
serd_node_new_uri_from_string(const uint8_t* str,
 | 
			
		||||
                              const SerdURI* base,
 | 
			
		||||
                              SerdURI*       out)
 | 
			
		||||
{
 | 
			
		||||
	if (!str || str[0] == '\0') {
 | 
			
		||||
		return serd_node_new_uri(base, NULL, out);  // Empty URI => Base URI
 | 
			
		||||
	}
 | 
			
		||||
	SerdURI uri;
 | 
			
		||||
	serd_uri_parse(str, &uri);
 | 
			
		||||
	return serd_node_new_uri(&uri, base, out);  // Resolve/Serialise
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static inline bool
 | 
			
		||||
is_uri_path_char(const uint8_t c)
 | 
			
		||||
{
 | 
			
		||||
	if (is_alpha(c) || is_digit(c)) {
 | 
			
		||||
		return true;
 | 
			
		||||
	}
 | 
			
		||||
	switch (c) {
 | 
			
		||||
	case '-': case '.': case '_': case '~':	 // unreserved
 | 
			
		||||
	case ':': case '@':	 // pchar
 | 
			
		||||
	case '/':  // separator
 | 
			
		||||
	// sub-delims
 | 
			
		||||
	case '!': case '$': case '&': case '\'': case '(': case ')':
 | 
			
		||||
	case '*': case '+': case ',': case ';': case '=':
 | 
			
		||||
		return true;
 | 
			
		||||
	default:
 | 
			
		||||
		return false;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
SERD_API
 | 
			
		||||
SerdNode
 | 
			
		||||
serd_node_new_file_uri(const uint8_t* path,
 | 
			
		||||
                       const uint8_t* hostname,
 | 
			
		||||
                       SerdURI*       out,
 | 
			
		||||
                       bool           escape)
 | 
			
		||||
{
 | 
			
		||||
	const size_t path_len     = strlen((const char*)path);
 | 
			
		||||
	const size_t hostname_len = hostname ? strlen((const char*)hostname) : 0;
 | 
			
		||||
	const bool   evil         = is_windows_path(path);
 | 
			
		||||
	size_t       uri_len      = 0;
 | 
			
		||||
	uint8_t*     uri          = NULL;
 | 
			
		||||
 | 
			
		||||
	if (path[0] == '/' || is_windows_path(path)) {
 | 
			
		||||
		uri_len = strlen("file://") + hostname_len + evil;
 | 
			
		||||
		uri = (uint8_t*)malloc(uri_len + 1);
 | 
			
		||||
		snprintf((char*)uri, uri_len + 1, "file://%s%s",
 | 
			
		||||
		         hostname ? (const char*)hostname : "",
 | 
			
		||||
		         evil ? "/" : "");
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	SerdChunk chunk = { uri, uri_len };
 | 
			
		||||
	for (size_t i = 0; i < path_len; ++i) {
 | 
			
		||||
		if (evil && path[i] == '\\') {
 | 
			
		||||
			serd_chunk_sink("/", 1, &chunk);
 | 
			
		||||
		} else if (path[i] == '%') {
 | 
			
		||||
			serd_chunk_sink("%%", 2, &chunk);
 | 
			
		||||
		} else if (!escape || is_uri_path_char(path[i])) {
 | 
			
		||||
			serd_chunk_sink(path + i, 1, &chunk);
 | 
			
		||||
		} else {
 | 
			
		||||
			char escape_str[4] = { '%', 0, 0, 0 };
 | 
			
		||||
			snprintf(escape_str + 1, sizeof(escape_str) - 1, "%X", path[i]);
 | 
			
		||||
			serd_chunk_sink(escape_str, 3, &chunk);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	serd_chunk_sink_finish(&chunk);
 | 
			
		||||
 | 
			
		||||
	if (out) {
 | 
			
		||||
		serd_uri_parse(chunk.buf, out);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return serd_node_from_string(SERD_URI, chunk.buf);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
SERD_API
 | 
			
		||||
SerdNode
 | 
			
		||||
serd_node_new_uri(const SerdURI* uri, const SerdURI* base, SerdURI* out)
 | 
			
		||||
{
 | 
			
		||||
	SerdURI abs_uri = *uri;
 | 
			
		||||
	if (base) {
 | 
			
		||||
		serd_uri_resolve(uri, base, &abs_uri);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	const size_t len = serd_uri_string_length(&abs_uri);
 | 
			
		||||
	uint8_t*     buf = (uint8_t*)malloc(len + 1);
 | 
			
		||||
 | 
			
		||||
	SerdNode node = { buf, len, len, 0, SERD_URI };  // FIXME: UTF-8
 | 
			
		||||
 | 
			
		||||
	uint8_t*     ptr        = buf;
 | 
			
		||||
	const size_t actual_len = serd_uri_serialise(&abs_uri, string_sink, &ptr);
 | 
			
		||||
 | 
			
		||||
	buf[actual_len] = '\0';
 | 
			
		||||
	node.n_bytes    = actual_len;
 | 
			
		||||
	node.n_chars    = actual_len;
 | 
			
		||||
 | 
			
		||||
	if (out) {
 | 
			
		||||
		serd_uri_parse(buf, out);  // TODO: cleverly avoid double parse
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return node;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
SERD_API
 | 
			
		||||
SerdNode
 | 
			
		||||
serd_node_new_decimal(double d, unsigned frac_digits)
 | 
			
		||||
{
 | 
			
		||||
	if (isnan(d) || isinf(d)) {
 | 
			
		||||
		return SERD_NODE_NULL;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	const double   abs_d      = fabs(d);
 | 
			
		||||
	const unsigned int_digits = (unsigned)fmax(1.0, ceil(log10(abs_d + 1)));
 | 
			
		||||
	char*          buf        = (char*)calloc(int_digits + frac_digits + 3, 1);
 | 
			
		||||
	SerdNode       node       = { (const uint8_t*)buf, 0, 0, 0, SERD_LITERAL };
 | 
			
		||||
	const double   int_part   = floor(abs_d);
 | 
			
		||||
 | 
			
		||||
	// Point s to decimal point location
 | 
			
		||||
	char* s = buf + int_digits;
 | 
			
		||||
	if (d < 0.0) {
 | 
			
		||||
		*buf = '-';
 | 
			
		||||
		++s;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Write integer part (right to left)
 | 
			
		||||
	char*    t   = s - 1;
 | 
			
		||||
	uint64_t dec = (uint64_t)int_part;
 | 
			
		||||
	do {
 | 
			
		||||
		*t-- = '0' + (dec % 10);
 | 
			
		||||
	} while ((dec /= 10) > 0);
 | 
			
		||||
 | 
			
		||||
	*s++ = '.';
 | 
			
		||||
 | 
			
		||||
	// Write fractional part (right to left)
 | 
			
		||||
	double frac_part = fabs(d - int_part);
 | 
			
		||||
	if (frac_part < DBL_EPSILON) {
 | 
			
		||||
		*s++ = '0';
 | 
			
		||||
		node.n_bytes = node.n_chars = (s - buf);
 | 
			
		||||
	} else {
 | 
			
		||||
		uint64_t frac = frac_part * pow(10.0, (int)frac_digits) + 0.5;
 | 
			
		||||
		s += frac_digits - 1;
 | 
			
		||||
		unsigned i = 0;
 | 
			
		||||
 | 
			
		||||
		// Skip trailing zeros
 | 
			
		||||
		for (; i < frac_digits - 1 && !(frac % 10); ++i, --s, frac /= 10) {}
 | 
			
		||||
 | 
			
		||||
		node.n_bytes = node.n_chars = (s - buf) + 1;
 | 
			
		||||
 | 
			
		||||
		// Write digits from last trailing zero to decimal point
 | 
			
		||||
		for (; i < frac_digits; ++i) {
 | 
			
		||||
			*s-- = '0' + (frac % 10);
 | 
			
		||||
			frac /= 10;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return node;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
SERD_API
 | 
			
		||||
SerdNode
 | 
			
		||||
serd_node_new_integer(int64_t i)
 | 
			
		||||
{
 | 
			
		||||
	int64_t        abs_i  = (i < 0) ? -i : i;
 | 
			
		||||
	const unsigned digits = fmax(1.0, ceil(log10((double)abs_i + 1)));
 | 
			
		||||
	char*          buf    = (char*)calloc(digits + 2, 1);
 | 
			
		||||
	SerdNode       node   = { (const uint8_t*)buf, 0, 0, 0, SERD_LITERAL };
 | 
			
		||||
 | 
			
		||||
	// Point s to the end
 | 
			
		||||
	char* s = buf + digits - 1;
 | 
			
		||||
	if (i < 0) {
 | 
			
		||||
		*buf = '-';
 | 
			
		||||
		++s;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	node.n_bytes = node.n_chars = (s - buf) + 1;
 | 
			
		||||
 | 
			
		||||
	// Write integer part (right to left)
 | 
			
		||||
	do {
 | 
			
		||||
		*s-- = '0' + (abs_i % 10);
 | 
			
		||||
	} while ((abs_i /= 10) > 0);
 | 
			
		||||
 | 
			
		||||
	return node;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
   Base64 encoding table.
 | 
			
		||||
   @see <a href="http://tools.ietf.org/html/rfc3548#section-3">RFC3986 S3</a>.
 | 
			
		||||
*/
 | 
			
		||||
static const uint8_t b64_map[] =
 | 
			
		||||
	"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
   Encode 3 raw bytes to 4 base64 characters.
 | 
			
		||||
*/
 | 
			
		||||
static inline void
 | 
			
		||||
encode_chunk(uint8_t out[4], const uint8_t in[3], size_t n_in)
 | 
			
		||||
{
 | 
			
		||||
	out[0] = b64_map[in[0] >> 2];
 | 
			
		||||
	out[1] = b64_map[((in[0] & 0x03) << 4) | ((in[1] & 0xF0) >> 4)];
 | 
			
		||||
	out[2] = ((n_in > 1)
 | 
			
		||||
	          ? (b64_map[((in[1] & 0x0F) << 2) | ((in[2] & 0xC0) >> 6)])
 | 
			
		||||
	          : (uint8_t)'=');
 | 
			
		||||
	out[3] = ((n_in > 2) ? b64_map[in[2] & 0x3F] : (uint8_t)'=');
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
SERD_API
 | 
			
		||||
SerdNode
 | 
			
		||||
serd_node_new_blob(const void* buf, size_t size, bool wrap_lines)
 | 
			
		||||
{
 | 
			
		||||
	const size_t len  = ((size + 2) / 3) * 4 + (wrap_lines ? (size / 57) : 0);
 | 
			
		||||
	uint8_t*     str  = (uint8_t*)calloc(1, len + 2);
 | 
			
		||||
	SerdNode     node = { str, len, len, 0, SERD_LITERAL };
 | 
			
		||||
	for (size_t i = 0, j = 0; i < size; i += 3, j += 4) {
 | 
			
		||||
		uint8_t in[4] = { 0, 0, 0, 0 };
 | 
			
		||||
		size_t  n_in  = MIN(3, size - i);
 | 
			
		||||
		memcpy(in, (const uint8_t*)buf + i, n_in);
 | 
			
		||||
 | 
			
		||||
		if (wrap_lines && i > 0 && (i % 57) == 0) {
 | 
			
		||||
			str[j++] = '\n';
 | 
			
		||||
			node.flags |= SERD_HAS_NEWLINE;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		encode_chunk(str + j, in, n_in);
 | 
			
		||||
	}
 | 
			
		||||
	return node;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
SERD_API
 | 
			
		||||
void
 | 
			
		||||
serd_node_free(SerdNode* node)
 | 
			
		||||
{
 | 
			
		||||
	if (node->buf) {
 | 
			
		||||
		free((uint8_t*)node->buf);
 | 
			
		||||
		node->buf = NULL;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										351
									
								
								lib-src/lv2/serdnode.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										351
									
								
								lib-src/lv2/serdnode.patch
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,351 @@
 | 
			
		||||
diff -ruN src.orig/serdnode.c src/serdnode.c
 | 
			
		||||
--- src.orig/serdnode.c	1969-12-31 18:00:00.000000000 -0600
 | 
			
		||||
+++ src/serdnode.c	2013-10-27 06:02:53.825178800 -0500
 | 
			
		||||
@@ -0,0 +1,347 @@
 | 
			
		||||
+/*
 | 
			
		||||
+  Copyright 2011-2012 David Robillard <http://drobilla.net>
 | 
			
		||||
+
 | 
			
		||||
+  Permission to use, copy, modify, and/or distribute this software for any
 | 
			
		||||
+  purpose with or without fee is hereby granted, provided that the above
 | 
			
		||||
+  copyright notice and this permission notice appear in all copies.
 | 
			
		||||
+
 | 
			
		||||
+  THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 | 
			
		||||
+  WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 | 
			
		||||
+  MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 | 
			
		||||
+  ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 | 
			
		||||
+  WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 | 
			
		||||
+  ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 | 
			
		||||
+  OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 | 
			
		||||
+*/
 | 
			
		||||
+
 | 
			
		||||
+#include "serd_internal.h"
 | 
			
		||||
+
 | 
			
		||||
+#include <stdlib.h>
 | 
			
		||||
+#include <string.h>
 | 
			
		||||
+
 | 
			
		||||
+#include <math.h>
 | 
			
		||||
+#include <float.h>
 | 
			
		||||
+
 | 
			
		||||
+#ifdef _WIN32
 | 
			
		||||
+#    define isnan(x) _isnan(x)
 | 
			
		||||
+#    define isinf(x) (!_finite(x))
 | 
			
		||||
+#endif
 | 
			
		||||
+
 | 
			
		||||
+SERD_API
 | 
			
		||||
+SerdNode
 | 
			
		||||
+serd_node_from_string(SerdType type, const uint8_t* buf)
 | 
			
		||||
+{
 | 
			
		||||
+	if (!buf) {
 | 
			
		||||
+		return SERD_NODE_NULL;
 | 
			
		||||
+	}
 | 
			
		||||
+
 | 
			
		||||
+	uint32_t     flags       = 0;
 | 
			
		||||
+	size_t       buf_n_bytes = 0;
 | 
			
		||||
+	const size_t buf_n_chars = serd_strlen(buf, &buf_n_bytes, &flags);
 | 
			
		||||
+	SerdNode ret = { buf, buf_n_bytes, buf_n_chars, flags, type };
 | 
			
		||||
+	return ret;
 | 
			
		||||
+}
 | 
			
		||||
+
 | 
			
		||||
+SERD_API
 | 
			
		||||
+SerdNode
 | 
			
		||||
+serd_node_copy(const SerdNode* node)
 | 
			
		||||
+{
 | 
			
		||||
+	if (!node || !node->buf) {
 | 
			
		||||
+		return SERD_NODE_NULL;
 | 
			
		||||
+	}
 | 
			
		||||
+
 | 
			
		||||
+	SerdNode copy = *node;
 | 
			
		||||
+	uint8_t* buf  = (uint8_t*)malloc(copy.n_bytes + 1);
 | 
			
		||||
+	memcpy(buf, node->buf, copy.n_bytes + 1);
 | 
			
		||||
+	copy.buf = buf;
 | 
			
		||||
+	return copy;
 | 
			
		||||
+}
 | 
			
		||||
+
 | 
			
		||||
+SERD_API
 | 
			
		||||
+bool
 | 
			
		||||
+serd_node_equals(const SerdNode* a, const SerdNode* b)
 | 
			
		||||
+{
 | 
			
		||||
+	return (a == b)
 | 
			
		||||
+		|| (a->type == b->type
 | 
			
		||||
+		    && a->n_bytes == b->n_bytes
 | 
			
		||||
+		    && a->n_chars == b->n_chars
 | 
			
		||||
+		    && ((a->buf == b->buf) || !memcmp((const char*)a->buf,
 | 
			
		||||
+		                                      (const char*)b->buf,
 | 
			
		||||
+		                                      a->n_bytes + 1)));
 | 
			
		||||
+}
 | 
			
		||||
+
 | 
			
		||||
+static size_t
 | 
			
		||||
+serd_uri_string_length(const SerdURI* uri)
 | 
			
		||||
+{
 | 
			
		||||
+	size_t len = uri->path_base.len;
 | 
			
		||||
+
 | 
			
		||||
+#define ADD_LEN(field, n_delims) \
 | 
			
		||||
+	if ((field).len) { len += (field).len + (n_delims); }
 | 
			
		||||
+
 | 
			
		||||
+	ADD_LEN(uri->path,      1);  // + possible leading `/'
 | 
			
		||||
+	ADD_LEN(uri->scheme,    1);  // + trailing `:'
 | 
			
		||||
+	ADD_LEN(uri->authority, 2);  // + leading `//'
 | 
			
		||||
+	ADD_LEN(uri->query,     1);  // + leading `?'
 | 
			
		||||
+	ADD_LEN(uri->fragment,  1);  // + leading `#'
 | 
			
		||||
+
 | 
			
		||||
+	return len + 2;  // + 2 for authority `//'
 | 
			
		||||
+}
 | 
			
		||||
+
 | 
			
		||||
+static size_t
 | 
			
		||||
+string_sink(const void* buf, size_t len, void* stream)
 | 
			
		||||
+{
 | 
			
		||||
+	uint8_t** ptr = (uint8_t**)stream;
 | 
			
		||||
+	memcpy(*ptr, buf, len);
 | 
			
		||||
+	*ptr += len;
 | 
			
		||||
+	return len;
 | 
			
		||||
+}
 | 
			
		||||
+
 | 
			
		||||
+SERD_API
 | 
			
		||||
+SerdNode
 | 
			
		||||
+serd_node_new_uri_from_node(const SerdNode* uri_node,
 | 
			
		||||
+                            const SerdURI*  base,
 | 
			
		||||
+                            SerdURI*        out)
 | 
			
		||||
+{
 | 
			
		||||
+	return (uri_node->type == SERD_URI)
 | 
			
		||||
+		? serd_node_new_uri_from_string(uri_node->buf, base, out)
 | 
			
		||||
+		: SERD_NODE_NULL;
 | 
			
		||||
+}
 | 
			
		||||
+
 | 
			
		||||
+SERD_API
 | 
			
		||||
+SerdNode
 | 
			
		||||
+serd_node_new_uri_from_string(const uint8_t* str,
 | 
			
		||||
+                              const SerdURI* base,
 | 
			
		||||
+                              SerdURI*       out)
 | 
			
		||||
+{
 | 
			
		||||
+	if (!str || str[0] == '\0') {
 | 
			
		||||
+		return serd_node_new_uri(base, NULL, out);  // Empty URI => Base URI
 | 
			
		||||
+	}
 | 
			
		||||
+	SerdURI uri;
 | 
			
		||||
+	serd_uri_parse(str, &uri);
 | 
			
		||||
+	return serd_node_new_uri(&uri, base, out);  // Resolve/Serialise
 | 
			
		||||
+}
 | 
			
		||||
+
 | 
			
		||||
+static inline bool
 | 
			
		||||
+is_uri_path_char(const uint8_t c)
 | 
			
		||||
+{
 | 
			
		||||
+	if (is_alpha(c) || is_digit(c)) {
 | 
			
		||||
+		return true;
 | 
			
		||||
+	}
 | 
			
		||||
+	switch (c) {
 | 
			
		||||
+	case '-': case '.': case '_': case '~':	 // unreserved
 | 
			
		||||
+	case ':': case '@':	 // pchar
 | 
			
		||||
+	case '/':  // separator
 | 
			
		||||
+	// sub-delims
 | 
			
		||||
+	case '!': case '$': case '&': case '\'': case '(': case ')':
 | 
			
		||||
+	case '*': case '+': case ',': case ';': case '=':
 | 
			
		||||
+		return true;
 | 
			
		||||
+	default:
 | 
			
		||||
+		return false;
 | 
			
		||||
+	}
 | 
			
		||||
+}
 | 
			
		||||
+
 | 
			
		||||
+SERD_API
 | 
			
		||||
+SerdNode
 | 
			
		||||
+serd_node_new_file_uri(const uint8_t* path,
 | 
			
		||||
+                       const uint8_t* hostname,
 | 
			
		||||
+                       SerdURI*       out,
 | 
			
		||||
+                       bool           escape)
 | 
			
		||||
+{
 | 
			
		||||
+	const size_t path_len     = strlen((const char*)path);
 | 
			
		||||
+	const size_t hostname_len = hostname ? strlen((const char*)hostname) : 0;
 | 
			
		||||
+	const bool   evil         = is_windows_path(path);
 | 
			
		||||
+	size_t       uri_len      = 0;
 | 
			
		||||
+	uint8_t*     uri          = NULL;
 | 
			
		||||
+
 | 
			
		||||
+	if (path[0] == '/' || is_windows_path(path)) {
 | 
			
		||||
+		uri_len = strlen("file://") + hostname_len + evil;
 | 
			
		||||
+		uri = (uint8_t*)malloc(uri_len + 1);
 | 
			
		||||
+		snprintf((char*)uri, uri_len + 1, "file://%s%s",
 | 
			
		||||
+		         hostname ? (const char*)hostname : "",
 | 
			
		||||
+		         evil ? "/" : "");
 | 
			
		||||
+	}
 | 
			
		||||
+
 | 
			
		||||
+	SerdChunk chunk = { uri, uri_len };
 | 
			
		||||
+	for (size_t i = 0; i < path_len; ++i) {
 | 
			
		||||
+		if (evil && path[i] == '\\') {
 | 
			
		||||
+			serd_chunk_sink("/", 1, &chunk);
 | 
			
		||||
+		} else if (path[i] == '%') {
 | 
			
		||||
+			serd_chunk_sink("%%", 2, &chunk);
 | 
			
		||||
+		} else if (!escape || is_uri_path_char(path[i])) {
 | 
			
		||||
+			serd_chunk_sink(path + i, 1, &chunk);
 | 
			
		||||
+		} else {
 | 
			
		||||
+			char escape_str[4] = { '%', 0, 0, 0 };
 | 
			
		||||
+			snprintf(escape_str + 1, sizeof(escape_str) - 1, "%X", path[i]);
 | 
			
		||||
+			serd_chunk_sink(escape_str, 3, &chunk);
 | 
			
		||||
+		}
 | 
			
		||||
+	}
 | 
			
		||||
+	serd_chunk_sink_finish(&chunk);
 | 
			
		||||
+
 | 
			
		||||
+	if (out) {
 | 
			
		||||
+		serd_uri_parse(chunk.buf, out);
 | 
			
		||||
+	}
 | 
			
		||||
+
 | 
			
		||||
+	return serd_node_from_string(SERD_URI, chunk.buf);
 | 
			
		||||
+}
 | 
			
		||||
+
 | 
			
		||||
+SERD_API
 | 
			
		||||
+SerdNode
 | 
			
		||||
+serd_node_new_uri(const SerdURI* uri, const SerdURI* base, SerdURI* out)
 | 
			
		||||
+{
 | 
			
		||||
+	SerdURI abs_uri = *uri;
 | 
			
		||||
+	if (base) {
 | 
			
		||||
+		serd_uri_resolve(uri, base, &abs_uri);
 | 
			
		||||
+	}
 | 
			
		||||
+
 | 
			
		||||
+	const size_t len = serd_uri_string_length(&abs_uri);
 | 
			
		||||
+	uint8_t*     buf = (uint8_t*)malloc(len + 1);
 | 
			
		||||
+
 | 
			
		||||
+	SerdNode node = { buf, len, len, 0, SERD_URI };  // FIXME: UTF-8
 | 
			
		||||
+
 | 
			
		||||
+	uint8_t*     ptr        = buf;
 | 
			
		||||
+	const size_t actual_len = serd_uri_serialise(&abs_uri, string_sink, &ptr);
 | 
			
		||||
+
 | 
			
		||||
+	buf[actual_len] = '\0';
 | 
			
		||||
+	node.n_bytes    = actual_len;
 | 
			
		||||
+	node.n_chars    = actual_len;
 | 
			
		||||
+
 | 
			
		||||
+	if (out) {
 | 
			
		||||
+		serd_uri_parse(buf, out);  // TODO: cleverly avoid double parse
 | 
			
		||||
+	}
 | 
			
		||||
+
 | 
			
		||||
+	return node;
 | 
			
		||||
+}
 | 
			
		||||
+
 | 
			
		||||
+SERD_API
 | 
			
		||||
+SerdNode
 | 
			
		||||
+serd_node_new_decimal(double d, unsigned frac_digits)
 | 
			
		||||
+{
 | 
			
		||||
+	if (isnan(d) || isinf(d)) {
 | 
			
		||||
+		return SERD_NODE_NULL;
 | 
			
		||||
+	}
 | 
			
		||||
+
 | 
			
		||||
+	const double   abs_d      = fabs(d);
 | 
			
		||||
+	const unsigned int_digits = (unsigned)fmax(1.0, ceil(log10(abs_d + 1)));
 | 
			
		||||
+	char*          buf        = (char*)calloc(int_digits + frac_digits + 3, 1);
 | 
			
		||||
+	SerdNode       node       = { (const uint8_t*)buf, 0, 0, 0, SERD_LITERAL };
 | 
			
		||||
+	const double   int_part   = floor(abs_d);
 | 
			
		||||
+
 | 
			
		||||
+	// Point s to decimal point location
 | 
			
		||||
+	char* s = buf + int_digits;
 | 
			
		||||
+	if (d < 0.0) {
 | 
			
		||||
+		*buf = '-';
 | 
			
		||||
+		++s;
 | 
			
		||||
+	}
 | 
			
		||||
+
 | 
			
		||||
+	// Write integer part (right to left)
 | 
			
		||||
+	char*    t   = s - 1;
 | 
			
		||||
+	uint64_t dec = (uint64_t)int_part;
 | 
			
		||||
+	do {
 | 
			
		||||
+		*t-- = '0' + (dec % 10);
 | 
			
		||||
+	} while ((dec /= 10) > 0);
 | 
			
		||||
+
 | 
			
		||||
+	*s++ = '.';
 | 
			
		||||
+
 | 
			
		||||
+	// Write fractional part (right to left)
 | 
			
		||||
+	double frac_part = fabs(d - int_part);
 | 
			
		||||
+	if (frac_part < DBL_EPSILON) {
 | 
			
		||||
+		*s++ = '0';
 | 
			
		||||
+		node.n_bytes = node.n_chars = (s - buf);
 | 
			
		||||
+	} else {
 | 
			
		||||
+		uint64_t frac = frac_part * pow(10.0, (int)frac_digits) + 0.5;
 | 
			
		||||
+		s += frac_digits - 1;
 | 
			
		||||
+		unsigned i = 0;
 | 
			
		||||
+
 | 
			
		||||
+		// Skip trailing zeros
 | 
			
		||||
+		for (; i < frac_digits - 1 && !(frac % 10); ++i, --s, frac /= 10) {}
 | 
			
		||||
+
 | 
			
		||||
+		node.n_bytes = node.n_chars = (s - buf) + 1;
 | 
			
		||||
+
 | 
			
		||||
+		// Write digits from last trailing zero to decimal point
 | 
			
		||||
+		for (; i < frac_digits; ++i) {
 | 
			
		||||
+			*s-- = '0' + (frac % 10);
 | 
			
		||||
+			frac /= 10;
 | 
			
		||||
+		}
 | 
			
		||||
+	}
 | 
			
		||||
+
 | 
			
		||||
+	return node;
 | 
			
		||||
+}
 | 
			
		||||
+
 | 
			
		||||
+SERD_API
 | 
			
		||||
+SerdNode
 | 
			
		||||
+serd_node_new_integer(int64_t i)
 | 
			
		||||
+{
 | 
			
		||||
+	int64_t        abs_i  = (i < 0) ? -i : i;
 | 
			
		||||
+	const unsigned digits = fmax(1.0, ceil(log10((double)abs_i + 1)));
 | 
			
		||||
+	char*          buf    = (char*)calloc(digits + 2, 1);
 | 
			
		||||
+	SerdNode       node   = { (const uint8_t*)buf, 0, 0, 0, SERD_LITERAL };
 | 
			
		||||
+
 | 
			
		||||
+	// Point s to the end
 | 
			
		||||
+	char* s = buf + digits - 1;
 | 
			
		||||
+	if (i < 0) {
 | 
			
		||||
+		*buf = '-';
 | 
			
		||||
+		++s;
 | 
			
		||||
+	}
 | 
			
		||||
+
 | 
			
		||||
+	node.n_bytes = node.n_chars = (s - buf) + 1;
 | 
			
		||||
+
 | 
			
		||||
+	// Write integer part (right to left)
 | 
			
		||||
+	do {
 | 
			
		||||
+		*s-- = '0' + (abs_i % 10);
 | 
			
		||||
+	} while ((abs_i /= 10) > 0);
 | 
			
		||||
+
 | 
			
		||||
+	return node;
 | 
			
		||||
+}
 | 
			
		||||
+
 | 
			
		||||
+/**
 | 
			
		||||
+   Base64 encoding table.
 | 
			
		||||
+   @see <a href="http://tools.ietf.org/html/rfc3548#section-3">RFC3986 S3</a>.
 | 
			
		||||
+*/
 | 
			
		||||
+static const uint8_t b64_map[] =
 | 
			
		||||
+	"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
 | 
			
		||||
+
 | 
			
		||||
+/**
 | 
			
		||||
+   Encode 3 raw bytes to 4 base64 characters.
 | 
			
		||||
+*/
 | 
			
		||||
+static inline void
 | 
			
		||||
+encode_chunk(uint8_t out[4], const uint8_t in[3], size_t n_in)
 | 
			
		||||
+{
 | 
			
		||||
+	out[0] = b64_map[in[0] >> 2];
 | 
			
		||||
+	out[1] = b64_map[((in[0] & 0x03) << 4) | ((in[1] & 0xF0) >> 4)];
 | 
			
		||||
+	out[2] = ((n_in > 1)
 | 
			
		||||
+	          ? (b64_map[((in[1] & 0x0F) << 2) | ((in[2] & 0xC0) >> 6)])
 | 
			
		||||
+	          : (uint8_t)'=');
 | 
			
		||||
+	out[3] = ((n_in > 2) ? b64_map[in[2] & 0x3F] : (uint8_t)'=');
 | 
			
		||||
+}
 | 
			
		||||
+
 | 
			
		||||
+SERD_API
 | 
			
		||||
+SerdNode
 | 
			
		||||
+serd_node_new_blob(const void* buf, size_t size, bool wrap_lines)
 | 
			
		||||
+{
 | 
			
		||||
+	const size_t len  = ((size + 2) / 3) * 4 + (wrap_lines ? (size / 57) : 0);
 | 
			
		||||
+	uint8_t*     str  = (uint8_t*)calloc(1, len + 2);
 | 
			
		||||
+	SerdNode     node = { str, len, len, 0, SERD_LITERAL };
 | 
			
		||||
+	for (size_t i = 0, j = 0; i < size; i += 3, j += 4) {
 | 
			
		||||
+		uint8_t in[4] = { 0, 0, 0, 0 };
 | 
			
		||||
+		size_t  n_in  = MIN(3, size - i);
 | 
			
		||||
+		memcpy(in, (const uint8_t*)buf + i, n_in);
 | 
			
		||||
+
 | 
			
		||||
+		if (wrap_lines && i > 0 && (i % 57) == 0) {
 | 
			
		||||
+			str[j++] = '\n';
 | 
			
		||||
+			node.flags |= SERD_HAS_NEWLINE;
 | 
			
		||||
+		}
 | 
			
		||||
+
 | 
			
		||||
+		encode_chunk(str + j, in, n_in);
 | 
			
		||||
+	}
 | 
			
		||||
+	return node;
 | 
			
		||||
+}
 | 
			
		||||
+
 | 
			
		||||
+SERD_API
 | 
			
		||||
+void
 | 
			
		||||
+serd_node_free(SerdNode* node)
 | 
			
		||||
+{
 | 
			
		||||
+	if (node->buf) {
 | 
			
		||||
+		free((uint8_t*)node->buf);
 | 
			
		||||
+		node->buf = NULL;
 | 
			
		||||
+	}
 | 
			
		||||
+}
 | 
			
		||||
							
								
								
									
										24
									
								
								lib-src/lv2/usegetprocaddress.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								lib-src/lv2/usegetprocaddress.patch
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,24 @@
 | 
			
		||||
--- lilv/src/orig_lilv_internal.h	2012-11-23 00:00:15.000000000 -0600
 | 
			
		||||
+++ lilv/src/lilv_internal.h	2013-10-27 05:18:03.970327900 -0500
 | 
			
		||||
@@ -30,7 +30,6 @@
 | 
			
		||||
 #    include <windows.h>
 | 
			
		||||
 #    define dlopen(path, flags) LoadLibrary(path)
 | 
			
		||||
 #    define dlclose(lib) FreeLibrary((HMODULE)lib)
 | 
			
		||||
-#    define dlsym GetProcAddress
 | 
			
		||||
 #    ifdef _MSC_VER
 | 
			
		||||
 #        define __func__ __FUNCTION__
 | 
			
		||||
 #        define INFINITY DBL_MAX + DBL_MAX
 | 
			
		||||
@@ -363,9 +362,13 @@
 | 
			
		||||
 static inline VoidFunc
 | 
			
		||||
 lilv_dlfunc(void* handle, const char* symbol)
 | 
			
		||||
 {
 | 
			
		||||
+#ifdef _WIN32
 | 
			
		||||
+   return (VoidFunc)GetProcAddress((HMODULE)handle, symbol);
 | 
			
		||||
+#else
 | 
			
		||||
 	typedef VoidFunc (*VoidFuncGetter)(void*, const char*);
 | 
			
		||||
 	VoidFuncGetter dlfunc = (VoidFuncGetter)dlsym;
 | 
			
		||||
 	return dlfunc(handle, symbol);
 | 
			
		||||
+#endif
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
 #ifdef LILV_DYN_MANIFEST
 | 
			
		||||
							
								
								
									
										15
									
								
								lib-src/lv2/windows/lilv_config.h
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										15
									
								
								lib-src/lv2/windows/lilv_config.h
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,15 @@
 | 
			
		||||
/* WARNING! All changes made to this file will be lost! */
 | 
			
		||||
 | 
			
		||||
#ifndef W_LILV_CONFIG_H_WAF
 | 
			
		||||
#define W_LILV_CONFIG_H_WAF
 | 
			
		||||
 | 
			
		||||
#define LILV_NEW_LV2 1
 | 
			
		||||
/* #undef HAVE_FLOCK */
 | 
			
		||||
/* #undef HAVE_FILENO */
 | 
			
		||||
/* #undef HAVE_CLOCK_GETTIME */
 | 
			
		||||
#define LILV_VERSION "0.16.0"
 | 
			
		||||
#define LILV_PATH_SEP ";"
 | 
			
		||||
#define LILV_DIR_SEP "\\"
 | 
			
		||||
#define LILV_DEFAULT_LV2_PATH "%APPDATA%\\LV2;%COMMONPROGRAMFILES%\\LV2"
 | 
			
		||||
 | 
			
		||||
#endif /* W_LILV_CONFIG_H_WAF */
 | 
			
		||||
							
								
								
									
										12
									
								
								lib-src/lv2/windows/serd_config.h
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										12
									
								
								lib-src/lv2/windows/serd_config.h
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,12 @@
 | 
			
		||||
/* WARNING! All changes made to this file will be lost! */
 | 
			
		||||
 | 
			
		||||
#ifndef W_SERD_CONFIG_H_WAF
 | 
			
		||||
#define W_SERD_CONFIG_H_WAF
 | 
			
		||||
 | 
			
		||||
/* #undef HAVE_FMAX */
 | 
			
		||||
/* #undef HAVE_POSIX_MEMALIGN */
 | 
			
		||||
/* #undef HAVE_POSIX_FADVISE */
 | 
			
		||||
/* #undef HAVE_FILENO */
 | 
			
		||||
#define SERD_VERSION "0.18.2"
 | 
			
		||||
 | 
			
		||||
#endif /* W_SERD_CONFIG_H_WAF */
 | 
			
		||||
							
								
								
									
										8
									
								
								lib-src/lv2/windows/sord_config.h
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										8
									
								
								lib-src/lv2/windows/sord_config.h
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,8 @@
 | 
			
		||||
/* WARNING! All changes made to this file will be lost! */
 | 
			
		||||
 | 
			
		||||
#ifndef W_SORD_CONFIG_H_WAF
 | 
			
		||||
#define W_SORD_CONFIG_H_WAF
 | 
			
		||||
 | 
			
		||||
#define SORD_VERSION "0.12.0"
 | 
			
		||||
 | 
			
		||||
#endif /* W_SORD_CONFIG_H_WAF */
 | 
			
		||||
							
								
								
									
										8
									
								
								lib-src/lv2/windows/sratom_config.h
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										8
									
								
								lib-src/lv2/windows/sratom_config.h
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,8 @@
 | 
			
		||||
/* WARNING! All changes made to this file will be lost! */
 | 
			
		||||
 | 
			
		||||
#ifndef W_SRATOM_CONFIG_H_WAF
 | 
			
		||||
#define W_SRATOM_CONFIG_H_WAF
 | 
			
		||||
 | 
			
		||||
#define SRATOM_VERSION "0.4.2"
 | 
			
		||||
 | 
			
		||||
#endif /* W_SRATOM_CONFIG_H_WAF */
 | 
			
		||||
							
								
								
									
										63
									
								
								m4/audacity_checklib_lv2.m4
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										63
									
								
								m4/audacity_checklib_lv2.m4
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,63 @@
 | 
			
		||||
dnl Please increment the serial number below whenever you alter this macro
 | 
			
		||||
dnl for the benefit of automatic macro update systems
 | 
			
		||||
# audacity_checklib_lv2.m4 serial 1
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
AC_DEFUN([AUDACITY_CHECKLIB_LV2], [
 | 
			
		||||
   AC_ARG_WITH(LV2,
 | 
			
		||||
               [AS_HELP_STRING([--with-lv2],
 | 
			
		||||
                      [use for adding LV2 plug-in support])],
 | 
			
		||||
               LV2_ARGUMENT=$withval,
 | 
			
		||||
               LV2_ARGUMENT="unspecified")
 | 
			
		||||
 | 
			
		||||
   if false ; then
 | 
			
		||||
      AC_DEFINE(USE_LV2, 1,
 | 
			
		||||
                [Define if LV2 support should be enabled])
 | 
			
		||||
   fi
 | 
			
		||||
 | 
			
		||||
   dnl see if lv2 is installed on the system
 | 
			
		||||
 | 
			
		||||
   PKG_CHECK_MODULES(LV2, [lv2 lilv serd sord sratom],
 | 
			
		||||
                     lv2_available_system="yes",
 | 
			
		||||
                     lv2_available_system="no")
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
   if test "x$lv2_available_system" = "xyes" ; then
 | 
			
		||||
      LV2_SYSTEM_AVAILABLE="yes"
 | 
			
		||||
      LV2_SYSTEM_LIBS=$LV2_LIBS
 | 
			
		||||
      LV2_SYSTEM_CXXFLAGS=$LV2_CFLAGS
 | 
			
		||||
      LV2_SYSTEM_CPPSYMBOLS="USE_LV2"
 | 
			
		||||
      LV2_SYSTEM_OPTOBJS="effects/lv2/LoadLV2.o effects/lv2/LV2Effect.o effects/lv2/LV2PortGroup.o"
 | 
			
		||||
 | 
			
		||||
      AC_MSG_NOTICE([LV2 libraries are available as system libraries])
 | 
			
		||||
   else
 | 
			
		||||
      LV2_SYSTEM_AVAILABLE="no"
 | 
			
		||||
      AC_MSG_NOTICE([LV2 libraries are NOT available as system libraries])
 | 
			
		||||
   fi
 | 
			
		||||
 | 
			
		||||
   dnl see if LV2 is available locally
 | 
			
		||||
 | 
			
		||||
   AC_CHECK_FILE(${srcdir}/lib-src/lv2/configure,
 | 
			
		||||
                 lv2_configure_found="yes",
 | 
			
		||||
                 lv2_configure_found="no")
 | 
			
		||||
 | 
			
		||||
   if test "x$lv2_configure_found" = "xyes" ; then
 | 
			
		||||
      LV2_LOCAL_AVAILABLE="yes"
 | 
			
		||||
      LV2_LOCAL_LIBS="liblv2.a"
 | 
			
		||||
      LV2_LOCAL_CXXFLAGS='-I$(top_srcdir)/lib-src/lv2/include'
 | 
			
		||||
      LV2_LOCAL_CPPSYMBOLS="USE_LV2"
 | 
			
		||||
      LV2_LOCAL_OPTOBJS="effects/lv2/LoadLV2.o effects/lv2/LV2Effect.o effects/lv2/LV2PortGroup.o"
 | 
			
		||||
 | 
			
		||||
      AC_MSG_NOTICE([LV2 libraries are available in the local tree])
 | 
			
		||||
   else
 | 
			
		||||
      LV2_LOCAL_AVAILABLE="no"
 | 
			
		||||
      AC_MSG_NOTICE([LV2 libraries are NOT available in the local tree])
 | 
			
		||||
   fi
 | 
			
		||||
 | 
			
		||||
])
 | 
			
		||||
 | 
			
		||||
AC_DEFUN([AUDACITY_CONFIG_SUBDIRS_LV2], [
 | 
			
		||||
   if test "$LV2_USE_LOCAL" = yes; then
 | 
			
		||||
      AC_CONFIG_SUBDIRS([lib-src/lv2])
 | 
			
		||||
   fi
 | 
			
		||||
])
 | 
			
		||||
@@ -3,7 +3,7 @@
 | 
			
		||||
	archiveVersion = 1;
 | 
			
		||||
	classes = {
 | 
			
		||||
	};
 | 
			
		||||
	objectVersion = 45;
 | 
			
		||||
	objectVersion = 42;
 | 
			
		||||
	objects = {
 | 
			
		||||
 | 
			
		||||
/* Begin PBXAggregateTarget section */
 | 
			
		||||
@@ -763,6 +763,9 @@
 | 
			
		||||
		284B279F0FC66864005EAC96 /* RecordingPrefs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 284B27980FC66863005EAC96 /* RecordingPrefs.cpp */; };
 | 
			
		||||
		284B27E40FC66CCD005EAC96 /* TracksPrefs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 284B27E00FC66CCD005EAC96 /* TracksPrefs.cpp */; };
 | 
			
		||||
		284B27E50FC66CCD005EAC96 /* WarningsPrefs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 284B27E20FC66CCD005EAC96 /* WarningsPrefs.cpp */; };
 | 
			
		||||
		284B8E27181CFB1000304E49 /* liblv2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 286229B0181CE4B600E1AD1A /* liblv2.a */; };
 | 
			
		||||
		284B8E29181CFB1100304E49 /* liblv2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 286229B0181CE4B600E1AD1A /* liblv2.a */; };
 | 
			
		||||
		284B8E2A181CFB1200304E49 /* liblv2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 286229B0181CE4B600E1AD1A /* liblv2.a */; };
 | 
			
		||||
		284FD04217FC72A50009A025 /* ScienFilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 284FD04017FC72A50009A025 /* ScienFilter.cpp */; };
 | 
			
		||||
		284FD04517FC72EE0009A025 /* Biquad.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 284FD04317FC72EE0009A025 /* Biquad.cpp */; };
 | 
			
		||||
		28501EA10CEECEF80029ABAA /* HelpText.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 28501E9D0CEECEF80029ABAA /* HelpText.cpp */; };
 | 
			
		||||
@@ -787,6 +790,42 @@
 | 
			
		||||
		2860BA240E0F0D8600A13878 /* SoundActivatedRecord.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2860BA200E0F0D8600A13878 /* SoundActivatedRecord.cpp */; };
 | 
			
		||||
		2860BA250E0F0D8600A13878 /* TimerRecordDialog.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2860BA220E0F0D8600A13878 /* TimerRecordDialog.cpp */; };
 | 
			
		||||
		2860BA280E0F0DD800A13878 /* ExportFFmpeg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2860BA260E0F0DD800A13878 /* ExportFFmpeg.cpp */; };
 | 
			
		||||
		286229C3181CE51800E1AD1A /* lilv.h in Headers */ = {isa = PBXBuildFile; fileRef = 286229B1181CE51800E1AD1A /* lilv.h */; };
 | 
			
		||||
		286229C4181CE51800E1AD1A /* collections.c in Sources */ = {isa = PBXBuildFile; fileRef = 286229B2181CE51800E1AD1A /* collections.c */; };
 | 
			
		||||
		286229C5181CE51800E1AD1A /* instance.c in Sources */ = {isa = PBXBuildFile; fileRef = 286229B3181CE51800E1AD1A /* instance.c */; };
 | 
			
		||||
		286229C6181CE51800E1AD1A /* lib.c in Sources */ = {isa = PBXBuildFile; fileRef = 286229B4181CE51800E1AD1A /* lib.c */; };
 | 
			
		||||
		286229C7181CE51800E1AD1A /* lilv_internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 286229B5181CE51800E1AD1A /* lilv_internal.h */; };
 | 
			
		||||
		286229C8181CE51800E1AD1A /* node.c in Sources */ = {isa = PBXBuildFile; fileRef = 286229B6181CE51800E1AD1A /* node.c */; };
 | 
			
		||||
		286229C9181CE51800E1AD1A /* plugin.c in Sources */ = {isa = PBXBuildFile; fileRef = 286229B7181CE51800E1AD1A /* plugin.c */; };
 | 
			
		||||
		286229CA181CE51800E1AD1A /* pluginclass.c in Sources */ = {isa = PBXBuildFile; fileRef = 286229B8181CE51800E1AD1A /* pluginclass.c */; };
 | 
			
		||||
		286229CB181CE51800E1AD1A /* port.c in Sources */ = {isa = PBXBuildFile; fileRef = 286229B9181CE51800E1AD1A /* port.c */; };
 | 
			
		||||
		286229CC181CE51800E1AD1A /* query.c in Sources */ = {isa = PBXBuildFile; fileRef = 286229BA181CE51800E1AD1A /* query.c */; };
 | 
			
		||||
		286229CD181CE51800E1AD1A /* scalepoint.c in Sources */ = {isa = PBXBuildFile; fileRef = 286229BB181CE51800E1AD1A /* scalepoint.c */; };
 | 
			
		||||
		286229CE181CE51800E1AD1A /* state.c in Sources */ = {isa = PBXBuildFile; fileRef = 286229BC181CE51800E1AD1A /* state.c */; };
 | 
			
		||||
		286229CF181CE51800E1AD1A /* ui.c in Sources */ = {isa = PBXBuildFile; fileRef = 286229BD181CE51800E1AD1A /* ui.c */; };
 | 
			
		||||
		286229D0181CE51800E1AD1A /* util.c in Sources */ = {isa = PBXBuildFile; fileRef = 286229BE181CE51800E1AD1A /* util.c */; };
 | 
			
		||||
		286229D1181CE51800E1AD1A /* world.c in Sources */ = {isa = PBXBuildFile; fileRef = 286229BF181CE51800E1AD1A /* world.c */; };
 | 
			
		||||
		286229D2181CE51800E1AD1A /* common.h in Headers */ = {isa = PBXBuildFile; fileRef = 286229C0181CE51800E1AD1A /* common.h */; };
 | 
			
		||||
		286229D3181CE51800E1AD1A /* tree.c in Sources */ = {isa = PBXBuildFile; fileRef = 286229C1181CE51800E1AD1A /* tree.c */; };
 | 
			
		||||
		286229D4181CE51800E1AD1A /* tree.h in Headers */ = {isa = PBXBuildFile; fileRef = 286229C2181CE51800E1AD1A /* tree.h */; };
 | 
			
		||||
		286229DD181CE5EC00E1AD1A /* serd.h in Headers */ = {isa = PBXBuildFile; fileRef = 286229D5181CE5EC00E1AD1A /* serd.h */; };
 | 
			
		||||
		286229DE181CE5EC00E1AD1A /* env.c in Sources */ = {isa = PBXBuildFile; fileRef = 286229D6181CE5EC00E1AD1A /* env.c */; };
 | 
			
		||||
		286229DF181CE5EC00E1AD1A /* node.c in Sources */ = {isa = PBXBuildFile; fileRef = 286229D7181CE5EC00E1AD1A /* node.c */; };
 | 
			
		||||
		286229E0181CE5EC00E1AD1A /* reader.c in Sources */ = {isa = PBXBuildFile; fileRef = 286229D8181CE5EC00E1AD1A /* reader.c */; };
 | 
			
		||||
		286229E1181CE5EC00E1AD1A /* serd_internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 286229D9181CE5EC00E1AD1A /* serd_internal.h */; };
 | 
			
		||||
		286229E2181CE5EC00E1AD1A /* string.c in Sources */ = {isa = PBXBuildFile; fileRef = 286229DA181CE5EC00E1AD1A /* string.c */; };
 | 
			
		||||
		286229E3181CE5EC00E1AD1A /* uri.c in Sources */ = {isa = PBXBuildFile; fileRef = 286229DB181CE5EC00E1AD1A /* uri.c */; };
 | 
			
		||||
		286229E4181CE5EC00E1AD1A /* writer.c in Sources */ = {isa = PBXBuildFile; fileRef = 286229DC181CE5EC00E1AD1A /* writer.c */; };
 | 
			
		||||
		286229E9181CE62A00E1AD1A /* sord.h in Headers */ = {isa = PBXBuildFile; fileRef = 286229E5181CE62A00E1AD1A /* sord.h */; };
 | 
			
		||||
		286229EA181CE62A00E1AD1A /* sord_internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 286229E6181CE62A00E1AD1A /* sord_internal.h */; };
 | 
			
		||||
		286229EB181CE62A00E1AD1A /* sord.c in Sources */ = {isa = PBXBuildFile; fileRef = 286229E7181CE62A00E1AD1A /* sord.c */; };
 | 
			
		||||
		286229EC181CE62A00E1AD1A /* syntax.c in Sources */ = {isa = PBXBuildFile; fileRef = 286229E8181CE62A00E1AD1A /* syntax.c */; };
 | 
			
		||||
		28624C0E181CE65700E1AD1A /* sratom_config.h in Headers */ = {isa = PBXBuildFile; fileRef = 2862439F181CE65500E1AD1A /* sratom_config.h */; };
 | 
			
		||||
		28624C0F181CE65700E1AD1A /* sratom.h in Headers */ = {isa = PBXBuildFile; fileRef = 286243A0181CE65500E1AD1A /* sratom.h */; };
 | 
			
		||||
		28624C10181CE65700E1AD1A /* sratom.c in Sources */ = {isa = PBXBuildFile; fileRef = 286243A1181CE65500E1AD1A /* sratom.c */; };
 | 
			
		||||
		28640874181CE74100CC4E2C /* sord_config.h in Headers */ = {isa = PBXBuildFile; fileRef = 28640873181CE74100CC4E2C /* sord_config.h */; };
 | 
			
		||||
		28640876181CE75800CC4E2C /* serd_config.h in Headers */ = {isa = PBXBuildFile; fileRef = 28640875181CE75800CC4E2C /* serd_config.h */; };
 | 
			
		||||
		28640878181CE77200CC4E2C /* lilv_config.h in Headers */ = {isa = PBXBuildFile; fileRef = 28640877181CE77200CC4E2C /* lilv_config.h */; };
 | 
			
		||||
		287DBE890F3F6B2700C5BBED /* audio_detect.c in Sources */ = {isa = PBXBuildFile; fileRef = 287DBE830F3F6B2700C5BBED /* audio_detect.c */; };
 | 
			
		||||
		287DBE8A0F3F6B2700C5BBED /* chunk.c in Sources */ = {isa = PBXBuildFile; fileRef = 287DBE840F3F6B2700C5BBED /* chunk.c */; };
 | 
			
		||||
		287DBE8B0F3F6B2700C5BBED /* ima_oki_adpcm.c in Sources */ = {isa = PBXBuildFile; fileRef = 287DBE850F3F6B2700C5BBED /* ima_oki_adpcm.c */; };
 | 
			
		||||
@@ -2057,6 +2096,13 @@
 | 
			
		||||
			remoteGlobalIDString = 28501EAF0CEED1F00029ABAA;
 | 
			
		||||
			remoteInfo = libvamp;
 | 
			
		||||
		};
 | 
			
		||||
		28640879181CE78E00CC4E2C /* PBXContainerItemProxy */ = {
 | 
			
		||||
			isa = PBXContainerItemProxy;
 | 
			
		||||
			containerPortal = 1790ABE309883346008A330A /* Project object */;
 | 
			
		||||
			proxyType = 1;
 | 
			
		||||
			remoteGlobalIDString = 2862299E181CE4B600E1AD1A;
 | 
			
		||||
			remoteInfo = lv2;
 | 
			
		||||
		};
 | 
			
		||||
		28E237260E515E1300281398 /* PBXContainerItemProxy */ = {
 | 
			
		||||
			isa = PBXContainerItemProxy;
 | 
			
		||||
			containerPortal = 1790ABE309883346008A330A /* Project object */;
 | 
			
		||||
@@ -3458,6 +3504,43 @@
 | 
			
		||||
		2860BA230E0F0D8600A13878 /* TimerRecordDialog.h */ = {isa = PBXFileReference; fileEncoding = 5; indentWidth = 3; lastKnownFileType = sourcecode.c.h; path = TimerRecordDialog.h; sourceTree = "<group>"; tabWidth = 3; };
 | 
			
		||||
		2860BA260E0F0DD800A13878 /* ExportFFmpeg.cpp */ = {isa = PBXFileReference; fileEncoding = 5; indentWidth = 3; lastKnownFileType = sourcecode.cpp.cpp; path = ExportFFmpeg.cpp; sourceTree = "<group>"; tabWidth = 3; };
 | 
			
		||||
		2860BA270E0F0DD800A13878 /* ExportFFmpeg.h */ = {isa = PBXFileReference; fileEncoding = 5; indentWidth = 3; lastKnownFileType = sourcecode.c.h; path = ExportFFmpeg.h; sourceTree = "<group>"; tabWidth = 3; };
 | 
			
		||||
		286229B0181CE4B600E1AD1A /* liblv2.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = liblv2.a; sourceTree = BUILT_PRODUCTS_DIR; };
 | 
			
		||||
		286229B1181CE51800E1AD1A /* lilv.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = lilv.h; path = lv2/lilv/lilv/lilv.h; sourceTree = "<group>"; };
 | 
			
		||||
		286229B2181CE51800E1AD1A /* collections.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = collections.c; path = lv2/lilv/src/collections.c; sourceTree = "<group>"; };
 | 
			
		||||
		286229B3181CE51800E1AD1A /* instance.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = instance.c; path = lv2/lilv/src/instance.c; sourceTree = "<group>"; };
 | 
			
		||||
		286229B4181CE51800E1AD1A /* lib.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = lib.c; path = lv2/lilv/src/lib.c; sourceTree = "<group>"; };
 | 
			
		||||
		286229B5181CE51800E1AD1A /* lilv_internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = lilv_internal.h; path = lv2/lilv/src/lilv_internal.h; sourceTree = "<group>"; };
 | 
			
		||||
		286229B6181CE51800E1AD1A /* node.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = node.c; path = lv2/lilv/src/node.c; sourceTree = "<group>"; };
 | 
			
		||||
		286229B7181CE51800E1AD1A /* plugin.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = plugin.c; path = lv2/lilv/src/plugin.c; sourceTree = "<group>"; };
 | 
			
		||||
		286229B8181CE51800E1AD1A /* pluginclass.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pluginclass.c; path = lv2/lilv/src/pluginclass.c; sourceTree = "<group>"; };
 | 
			
		||||
		286229B9181CE51800E1AD1A /* port.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = port.c; path = lv2/lilv/src/port.c; sourceTree = "<group>"; };
 | 
			
		||||
		286229BA181CE51800E1AD1A /* query.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = query.c; path = lv2/lilv/src/query.c; sourceTree = "<group>"; };
 | 
			
		||||
		286229BB181CE51800E1AD1A /* scalepoint.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = scalepoint.c; path = lv2/lilv/src/scalepoint.c; sourceTree = "<group>"; };
 | 
			
		||||
		286229BC181CE51800E1AD1A /* state.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = state.c; path = lv2/lilv/src/state.c; sourceTree = "<group>"; };
 | 
			
		||||
		286229BD181CE51800E1AD1A /* ui.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = ui.c; path = lv2/lilv/src/ui.c; sourceTree = "<group>"; };
 | 
			
		||||
		286229BE181CE51800E1AD1A /* util.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = util.c; path = lv2/lilv/src/util.c; sourceTree = "<group>"; };
 | 
			
		||||
		286229BF181CE51800E1AD1A /* world.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = world.c; path = lv2/lilv/src/world.c; sourceTree = "<group>"; };
 | 
			
		||||
		286229C0181CE51800E1AD1A /* common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = common.h; path = lv2/lilv/src/zix/common.h; sourceTree = "<group>"; };
 | 
			
		||||
		286229C1181CE51800E1AD1A /* tree.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = tree.c; path = lv2/lilv/src/zix/tree.c; sourceTree = "<group>"; };
 | 
			
		||||
		286229C2181CE51800E1AD1A /* tree.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = tree.h; path = lv2/lilv/src/zix/tree.h; sourceTree = "<group>"; };
 | 
			
		||||
		286229D5181CE5EC00E1AD1A /* serd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = serd.h; path = lv2/serd/serd/serd.h; sourceTree = "<group>"; };
 | 
			
		||||
		286229D6181CE5EC00E1AD1A /* env.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = env.c; path = lv2/serd/src/env.c; sourceTree = "<group>"; };
 | 
			
		||||
		286229D7181CE5EC00E1AD1A /* node.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = node.c; path = lv2/serd/src/node.c; sourceTree = "<group>"; };
 | 
			
		||||
		286229D8181CE5EC00E1AD1A /* reader.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = reader.c; path = lv2/serd/src/reader.c; sourceTree = "<group>"; };
 | 
			
		||||
		286229D9181CE5EC00E1AD1A /* serd_internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = serd_internal.h; path = lv2/serd/src/serd_internal.h; sourceTree = "<group>"; };
 | 
			
		||||
		286229DA181CE5EC00E1AD1A /* string.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = string.c; path = lv2/serd/src/string.c; sourceTree = "<group>"; };
 | 
			
		||||
		286229DB181CE5EC00E1AD1A /* uri.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = uri.c; path = lv2/serd/src/uri.c; sourceTree = "<group>"; };
 | 
			
		||||
		286229DC181CE5EC00E1AD1A /* writer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = writer.c; path = lv2/serd/src/writer.c; sourceTree = "<group>"; };
 | 
			
		||||
		286229E5181CE62A00E1AD1A /* sord.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = sord.h; path = lv2/sord/sord/sord.h; sourceTree = "<group>"; };
 | 
			
		||||
		286229E6181CE62A00E1AD1A /* sord_internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = sord_internal.h; path = lv2/sord/src/sord_internal.h; sourceTree = "<group>"; };
 | 
			
		||||
		286229E7181CE62A00E1AD1A /* sord.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = sord.c; path = lv2/sord/src/sord.c; sourceTree = "<group>"; };
 | 
			
		||||
		286229E8181CE62A00E1AD1A /* syntax.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = syntax.c; path = lv2/sord/src/syntax.c; sourceTree = "<group>"; };
 | 
			
		||||
		2862439F181CE65500E1AD1A /* sratom_config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = sratom_config.h; path = lv2/sratom/build/sratom_config.h; sourceTree = "<group>"; };
 | 
			
		||||
		286243A0181CE65500E1AD1A /* sratom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = sratom.h; path = lv2/sratom/sratom/sratom.h; sourceTree = "<group>"; };
 | 
			
		||||
		286243A1181CE65500E1AD1A /* sratom.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = sratom.c; path = lv2/sratom/src/sratom.c; sourceTree = "<group>"; };
 | 
			
		||||
		28640873181CE74100CC4E2C /* sord_config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = sord_config.h; path = lv2/sord/build/sord_config.h; sourceTree = "<group>"; };
 | 
			
		||||
		28640875181CE75800CC4E2C /* serd_config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = serd_config.h; path = lv2/serd/build/serd_config.h; sourceTree = "<group>"; };
 | 
			
		||||
		28640877181CE77200CC4E2C /* lilv_config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = lilv_config.h; path = lv2/lilv/build/lilv_config.h; sourceTree = "<group>"; };
 | 
			
		||||
		287DBE830F3F6B2700C5BBED /* audio_detect.c */ = {isa = PBXFileReference; fileEncoding = 5; indentWidth = 3; lastKnownFileType = sourcecode.c.c; path = audio_detect.c; sourceTree = "<group>"; tabWidth = 3; };
 | 
			
		||||
		287DBE840F3F6B2700C5BBED /* chunk.c */ = {isa = PBXFileReference; fileEncoding = 5; indentWidth = 3; lastKnownFileType = sourcecode.c.c; path = chunk.c; sourceTree = "<group>"; tabWidth = 3; };
 | 
			
		||||
		287DBE850F3F6B2700C5BBED /* ima_oki_adpcm.c */ = {isa = PBXFileReference; fileEncoding = 5; indentWidth = 3; lastKnownFileType = sourcecode.c.c; path = ima_oki_adpcm.c; sourceTree = "<group>"; tabWidth = 3; };
 | 
			
		||||
@@ -4046,6 +4129,7 @@
 | 
			
		||||
				28E2373A0E5163A200281398 /* libscorealign.a in Frameworks */,
 | 
			
		||||
				ED2707460EF9C550007D4FFD /* libsbsms.a in Frameworks */,
 | 
			
		||||
				2800FE230FF32381005CA9E5 /* libportmidi.a in Frameworks */,
 | 
			
		||||
				284B8E27181CFB1000304E49 /* liblv2.a in Frameworks */,
 | 
			
		||||
			);
 | 
			
		||||
			runOnlyForDeploymentPostprocessing = 0;
 | 
			
		||||
		};
 | 
			
		||||
@@ -4092,6 +4176,7 @@
 | 
			
		||||
				ED663CC916543647007F53A5 /* libscorealign.a in Frameworks */,
 | 
			
		||||
				ED663CCA16543647007F53A5 /* libsbsms.a in Frameworks */,
 | 
			
		||||
				ED663CCB16543647007F53A5 /* libportmidi.a in Frameworks */,
 | 
			
		||||
				284B8E2A181CFB1200304E49 /* liblv2.a in Frameworks */,
 | 
			
		||||
			);
 | 
			
		||||
			runOnlyForDeploymentPostprocessing = 0;
 | 
			
		||||
		};
 | 
			
		||||
@@ -4117,6 +4202,7 @@
 | 
			
		||||
				ED85B5A316A47353006DA21D /* libscorealign.a in Frameworks */,
 | 
			
		||||
				ED85B5A416A47353006DA21D /* libsbsms.a in Frameworks */,
 | 
			
		||||
				ED85B5A516A47353006DA21D /* libportmidi.a in Frameworks */,
 | 
			
		||||
				284B8E29181CFB1100304E49 /* liblv2.a in Frameworks */,
 | 
			
		||||
			);
 | 
			
		||||
			runOnlyForDeploymentPostprocessing = 0;
 | 
			
		||||
		};
 | 
			
		||||
@@ -4148,6 +4234,7 @@
 | 
			
		||||
				ED151F3F163BFD0400451B5F /* libsoxr */,
 | 
			
		||||
				28501EAC0CEED0740029ABAA /* libvamp */,
 | 
			
		||||
				1707357C0988D6AD008541CC /* libvorbis */,
 | 
			
		||||
				28622998181CE35900E1AD1A /* lv2 */,
 | 
			
		||||
				EDBFAD18177E5424004CC1C1 /* mod-nyq-bench */,
 | 
			
		||||
				2844B48E0DEA66900087C656 /* mod-script-pipe */,
 | 
			
		||||
				28E821F50A39FC1300DCE280 /* portaudio-v19 */,
 | 
			
		||||
@@ -4851,6 +4938,7 @@
 | 
			
		||||
				ED663CDE16543647007F53A5 /* Audacity.app */,
 | 
			
		||||
				ED85B5B816A47353006DA21D /* Audacity.app */,
 | 
			
		||||
				EDBFAD13177E5399004CC1C1 /* mod-nyq-bench.so */,
 | 
			
		||||
				286229B0181CE4B600E1AD1A /* liblv2.a */,
 | 
			
		||||
			);
 | 
			
		||||
			name = Products;
 | 
			
		||||
			sourceTree = "<group>";
 | 
			
		||||
@@ -6015,6 +6103,81 @@
 | 
			
		||||
			name = "vamp-hostsdk";
 | 
			
		||||
			sourceTree = "<group>";
 | 
			
		||||
		};
 | 
			
		||||
		28622998181CE35900E1AD1A /* lv2 */ = {
 | 
			
		||||
			isa = PBXGroup;
 | 
			
		||||
			children = (
 | 
			
		||||
				28622999181CE37800E1AD1A /* lilv */,
 | 
			
		||||
				2862299A181CE3AE00E1AD1A /* serd */,
 | 
			
		||||
				2862299B181CE3B400E1AD1A /* sord */,
 | 
			
		||||
				2862299C181CE3BA00E1AD1A /* sratom */,
 | 
			
		||||
			);
 | 
			
		||||
			name = lv2;
 | 
			
		||||
			sourceTree = "<group>";
 | 
			
		||||
		};
 | 
			
		||||
		28622999181CE37800E1AD1A /* lilv */ = {
 | 
			
		||||
			isa = PBXGroup;
 | 
			
		||||
			children = (
 | 
			
		||||
				28640877181CE77200CC4E2C /* lilv_config.h */,
 | 
			
		||||
				286229B1181CE51800E1AD1A /* lilv.h */,
 | 
			
		||||
				286229B2181CE51800E1AD1A /* collections.c */,
 | 
			
		||||
				286229B3181CE51800E1AD1A /* instance.c */,
 | 
			
		||||
				286229B4181CE51800E1AD1A /* lib.c */,
 | 
			
		||||
				286229B5181CE51800E1AD1A /* lilv_internal.h */,
 | 
			
		||||
				286229B6181CE51800E1AD1A /* node.c */,
 | 
			
		||||
				286229B7181CE51800E1AD1A /* plugin.c */,
 | 
			
		||||
				286229B8181CE51800E1AD1A /* pluginclass.c */,
 | 
			
		||||
				286229B9181CE51800E1AD1A /* port.c */,
 | 
			
		||||
				286229BA181CE51800E1AD1A /* query.c */,
 | 
			
		||||
				286229BB181CE51800E1AD1A /* scalepoint.c */,
 | 
			
		||||
				286229BC181CE51800E1AD1A /* state.c */,
 | 
			
		||||
				286229BD181CE51800E1AD1A /* ui.c */,
 | 
			
		||||
				286229BE181CE51800E1AD1A /* util.c */,
 | 
			
		||||
				286229BF181CE51800E1AD1A /* world.c */,
 | 
			
		||||
				286229C0181CE51800E1AD1A /* common.h */,
 | 
			
		||||
				286229C1181CE51800E1AD1A /* tree.c */,
 | 
			
		||||
				286229C2181CE51800E1AD1A /* tree.h */,
 | 
			
		||||
			);
 | 
			
		||||
			name = lilv;
 | 
			
		||||
			sourceTree = "<group>";
 | 
			
		||||
		};
 | 
			
		||||
		2862299A181CE3AE00E1AD1A /* serd */ = {
 | 
			
		||||
			isa = PBXGroup;
 | 
			
		||||
			children = (
 | 
			
		||||
				28640875181CE75800CC4E2C /* serd_config.h */,
 | 
			
		||||
				286229D5181CE5EC00E1AD1A /* serd.h */,
 | 
			
		||||
				286229D6181CE5EC00E1AD1A /* env.c */,
 | 
			
		||||
				286229D7181CE5EC00E1AD1A /* node.c */,
 | 
			
		||||
				286229D8181CE5EC00E1AD1A /* reader.c */,
 | 
			
		||||
				286229D9181CE5EC00E1AD1A /* serd_internal.h */,
 | 
			
		||||
				286229DA181CE5EC00E1AD1A /* string.c */,
 | 
			
		||||
				286229DB181CE5EC00E1AD1A /* uri.c */,
 | 
			
		||||
				286229DC181CE5EC00E1AD1A /* writer.c */,
 | 
			
		||||
			);
 | 
			
		||||
			name = serd;
 | 
			
		||||
			sourceTree = "<group>";
 | 
			
		||||
		};
 | 
			
		||||
		2862299B181CE3B400E1AD1A /* sord */ = {
 | 
			
		||||
			isa = PBXGroup;
 | 
			
		||||
			children = (
 | 
			
		||||
				28640873181CE74100CC4E2C /* sord_config.h */,
 | 
			
		||||
				286229E5181CE62A00E1AD1A /* sord.h */,
 | 
			
		||||
				286229E6181CE62A00E1AD1A /* sord_internal.h */,
 | 
			
		||||
				286229E7181CE62A00E1AD1A /* sord.c */,
 | 
			
		||||
				286229E8181CE62A00E1AD1A /* syntax.c */,
 | 
			
		||||
			);
 | 
			
		||||
			name = sord;
 | 
			
		||||
			sourceTree = "<group>";
 | 
			
		||||
		};
 | 
			
		||||
		2862299C181CE3BA00E1AD1A /* sratom */ = {
 | 
			
		||||
			isa = PBXGroup;
 | 
			
		||||
			children = (
 | 
			
		||||
				2862439F181CE65500E1AD1A /* sratom_config.h */,
 | 
			
		||||
				286243A0181CE65500E1AD1A /* sratom.h */,
 | 
			
		||||
				286243A1181CE65500E1AD1A /* sratom.c */,
 | 
			
		||||
			);
 | 
			
		||||
			name = sratom;
 | 
			
		||||
			sourceTree = "<group>";
 | 
			
		||||
		};
 | 
			
		||||
		286D30AC0F264B58004E6E4A /* locale */ = {
 | 
			
		||||
			isa = PBXGroup;
 | 
			
		||||
			children = (
 | 
			
		||||
@@ -6997,6 +7160,26 @@
 | 
			
		||||
			);
 | 
			
		||||
			runOnlyForDeploymentPostprocessing = 0;
 | 
			
		||||
		};
 | 
			
		||||
		2862299F181CE4B600E1AD1A /* Headers */ = {
 | 
			
		||||
			isa = PBXHeadersBuildPhase;
 | 
			
		||||
			buildActionMask = 2147483647;
 | 
			
		||||
			files = (
 | 
			
		||||
				286229C3181CE51800E1AD1A /* lilv.h in Headers */,
 | 
			
		||||
				286229C7181CE51800E1AD1A /* lilv_internal.h in Headers */,
 | 
			
		||||
				286229D2181CE51800E1AD1A /* common.h in Headers */,
 | 
			
		||||
				286229D4181CE51800E1AD1A /* tree.h in Headers */,
 | 
			
		||||
				286229DD181CE5EC00E1AD1A /* serd.h in Headers */,
 | 
			
		||||
				286229E1181CE5EC00E1AD1A /* serd_internal.h in Headers */,
 | 
			
		||||
				286229E9181CE62A00E1AD1A /* sord.h in Headers */,
 | 
			
		||||
				286229EA181CE62A00E1AD1A /* sord_internal.h in Headers */,
 | 
			
		||||
				28624C0E181CE65700E1AD1A /* sratom_config.h in Headers */,
 | 
			
		||||
				28624C0F181CE65700E1AD1A /* sratom.h in Headers */,
 | 
			
		||||
				28640874181CE74100CC4E2C /* sord_config.h in Headers */,
 | 
			
		||||
				28640876181CE75800CC4E2C /* serd_config.h in Headers */,
 | 
			
		||||
				28640878181CE77200CC4E2C /* lilv_config.h in Headers */,
 | 
			
		||||
			);
 | 
			
		||||
			runOnlyForDeploymentPostprocessing = 0;
 | 
			
		||||
		};
 | 
			
		||||
		2880527A0DEA694100671EA4 /* Headers */ = {
 | 
			
		||||
			isa = PBXHeadersBuildPhase;
 | 
			
		||||
			buildActionMask = 2147483647;
 | 
			
		||||
@@ -7439,12 +7622,29 @@
 | 
			
		||||
			buildRules = (
 | 
			
		||||
			);
 | 
			
		||||
			dependencies = (
 | 
			
		||||
				2864087A181CE78E00CC4E2C /* PBXTargetDependency */,
 | 
			
		||||
			);
 | 
			
		||||
			name = libvamp;
 | 
			
		||||
			productName = libsndfile;
 | 
			
		||||
			productReference = 28501F060CEED1F00029ABAA /* libvamp.a */;
 | 
			
		||||
			productType = "com.apple.product-type.library.static";
 | 
			
		||||
		};
 | 
			
		||||
		2862299E181CE4B600E1AD1A /* lv2 */ = {
 | 
			
		||||
			isa = PBXNativeTarget;
 | 
			
		||||
			buildConfigurationList = 286229AB181CE4B600E1AD1A /* Build configuration list for PBXNativeTarget "lv2" */;
 | 
			
		||||
			buildPhases = (
 | 
			
		||||
				2862299F181CE4B600E1AD1A /* Headers */,
 | 
			
		||||
				286229A0181CE4B600E1AD1A /* Sources */,
 | 
			
		||||
			);
 | 
			
		||||
			buildRules = (
 | 
			
		||||
			);
 | 
			
		||||
			dependencies = (
 | 
			
		||||
			);
 | 
			
		||||
			name = lv2;
 | 
			
		||||
			productName = libsndfile;
 | 
			
		||||
			productReference = 286229B0181CE4B600E1AD1A /* liblv2.a */;
 | 
			
		||||
			productType = "com.apple.product-type.library.static";
 | 
			
		||||
		};
 | 
			
		||||
		2880527D0DEA694100671EA4 /* mod-script-pipe */ = {
 | 
			
		||||
			isa = PBXNativeTarget;
 | 
			
		||||
			buildConfigurationList = 288052830DEA698A00671EA4 /* Build configuration list for PBXNativeTarget "mod-script-pipe" */;
 | 
			
		||||
@@ -7693,6 +7893,7 @@
 | 
			
		||||
				1707401D0988EEAA008541CC /* libsndfile */,
 | 
			
		||||
				ED15212F163C227C00451B5F /* libsoxr */,
 | 
			
		||||
				28501EAF0CEED1F00029ABAA /* libvamp */,
 | 
			
		||||
				2862299E181CE4B600E1AD1A /* lv2 */,
 | 
			
		||||
				EDBFAD07177E5399004CC1C1 /* mod-nyq-bench */,
 | 
			
		||||
				2880527D0DEA694100671EA4 /* mod-script-pipe */,
 | 
			
		||||
				28E67F510A3A160D0021D89F /* portaudio-v19 */,
 | 
			
		||||
@@ -8900,6 +9101,36 @@
 | 
			
		||||
			);
 | 
			
		||||
			runOnlyForDeploymentPostprocessing = 0;
 | 
			
		||||
		};
 | 
			
		||||
		286229A0181CE4B600E1AD1A /* Sources */ = {
 | 
			
		||||
			isa = PBXSourcesBuildPhase;
 | 
			
		||||
			buildActionMask = 2147483647;
 | 
			
		||||
			files = (
 | 
			
		||||
				286229C4181CE51800E1AD1A /* collections.c in Sources */,
 | 
			
		||||
				286229C5181CE51800E1AD1A /* instance.c in Sources */,
 | 
			
		||||
				286229C6181CE51800E1AD1A /* lib.c in Sources */,
 | 
			
		||||
				286229C8181CE51800E1AD1A /* node.c in Sources */,
 | 
			
		||||
				286229C9181CE51800E1AD1A /* plugin.c in Sources */,
 | 
			
		||||
				286229CA181CE51800E1AD1A /* pluginclass.c in Sources */,
 | 
			
		||||
				286229CB181CE51800E1AD1A /* port.c in Sources */,
 | 
			
		||||
				286229CC181CE51800E1AD1A /* query.c in Sources */,
 | 
			
		||||
				286229CD181CE51800E1AD1A /* scalepoint.c in Sources */,
 | 
			
		||||
				286229CE181CE51800E1AD1A /* state.c in Sources */,
 | 
			
		||||
				286229CF181CE51800E1AD1A /* ui.c in Sources */,
 | 
			
		||||
				286229D0181CE51800E1AD1A /* util.c in Sources */,
 | 
			
		||||
				286229D1181CE51800E1AD1A /* world.c in Sources */,
 | 
			
		||||
				286229D3181CE51800E1AD1A /* tree.c in Sources */,
 | 
			
		||||
				286229DE181CE5EC00E1AD1A /* env.c in Sources */,
 | 
			
		||||
				286229DF181CE5EC00E1AD1A /* node.c in Sources */,
 | 
			
		||||
				286229E0181CE5EC00E1AD1A /* reader.c in Sources */,
 | 
			
		||||
				286229E2181CE5EC00E1AD1A /* string.c in Sources */,
 | 
			
		||||
				286229E3181CE5EC00E1AD1A /* uri.c in Sources */,
 | 
			
		||||
				286229E4181CE5EC00E1AD1A /* writer.c in Sources */,
 | 
			
		||||
				286229EB181CE62A00E1AD1A /* sord.c in Sources */,
 | 
			
		||||
				286229EC181CE62A00E1AD1A /* syntax.c in Sources */,
 | 
			
		||||
				28624C10181CE65700E1AD1A /* sratom.c in Sources */,
 | 
			
		||||
			);
 | 
			
		||||
			runOnlyForDeploymentPostprocessing = 0;
 | 
			
		||||
		};
 | 
			
		||||
		2880527B0DEA694100671EA4 /* Sources */ = {
 | 
			
		||||
			isa = PBXSourcesBuildPhase;
 | 
			
		||||
			buildActionMask = 2147483647;
 | 
			
		||||
@@ -9698,6 +9929,11 @@
 | 
			
		||||
			target = 28501EAF0CEED1F00029ABAA /* libvamp */;
 | 
			
		||||
			targetProxy = 28501F520CEED9A80029ABAA /* PBXContainerItemProxy */;
 | 
			
		||||
		};
 | 
			
		||||
		2864087A181CE78E00CC4E2C /* PBXTargetDependency */ = {
 | 
			
		||||
			isa = PBXTargetDependency;
 | 
			
		||||
			target = 2862299E181CE4B600E1AD1A /* lv2 */;
 | 
			
		||||
			targetProxy = 28640879181CE78E00CC4E2C /* PBXContainerItemProxy */;
 | 
			
		||||
		};
 | 
			
		||||
		28E237270E515E1300281398 /* PBXTargetDependency */ = {
 | 
			
		||||
			isa = PBXTargetDependency;
 | 
			
		||||
			target = 28E236F40E515D1D00281398 /* libscorealign */;
 | 
			
		||||
@@ -10129,7 +10365,7 @@
 | 
			
		||||
				);
 | 
			
		||||
				PRODUCT_NAME = Audacity;
 | 
			
		||||
				SKIP_INSTALL = NO;
 | 
			
		||||
				USER_HEADER_SEARCH_PATHS = "$(TOPLEVEL)/mac $(TOPLEVEL)/src/** $(TOPLEVEL)/lib-src/expat $(TOPLEVEL)/lib-src/FileDialog $(TOPLEVEL)/lib-src/libflac/include $(TOPLEVEL)/lib-src/libid3tag $(TOPLEVEL)/lib-src/libmad $(TOPLEVEL)/lib-src/libogg/include $(TOPLEVEL)/lib-src/libnyquist/nyq $(TOPLEVEL)/lib-src/libresample/include $(TOPLEVEL)/lib-src/libsndfile/src $(TOPLEVEL)/lib-src/libvamp $(TOPLEVEL)/lib-src/libvorbis/include $(TOPLEVEL)/lib-src/liblrdf/src $(TOPLEVEL)/lib-src/portaudio-v19/include $(TOPLEVEL)/lib-src/portmixer/px_common $(TOPLEVEL)/lib-src/portsmf $(TOPLEVEL)/lib-src/redland/librdf $(TOPLEVEL)/lib-src/slv2 $(TOPLEVEL)/lib-src/soundtouch/include $(TOPLEVEL)/lib-src/twolame/libtwolame";
 | 
			
		||||
				USER_HEADER_SEARCH_PATHS = "$(TOPLEVEL)/mac $(TOPLEVEL)/src/** $(TOPLEVEL)/lib-src/expat $(TOPLEVEL)/lib-src/FileDialog $(TOPLEVEL)/lib-src/libflac/include $(TOPLEVEL)/lib-src/libid3tag $(TOPLEVEL)/lib-src/libmad $(TOPLEVEL)/lib-src/libogg/include $(TOPLEVEL)/lib-src/libnyquist/nyq $(TOPLEVEL)/lib-src/libresample/include $(TOPLEVEL)/lib-src/libsndfile/src $(TOPLEVEL)/lib-src/libvamp $(TOPLEVEL)/lib-src/libvorbis/include $(TOPLEVEL)/lib-src/portaudio-v19/include $(TOPLEVEL)/lib-src/portmixer/px_common $(TOPLEVEL)/lib-src/portsmf $(TOPLEVEL)/lib-src/soundtouch/include $(TOPLEVEL)/lib-src/lv2/include $(TOPLEVEL)/lib-src/twolame/libtwolame";
 | 
			
		||||
			};
 | 
			
		||||
			name = "Debug Static";
 | 
			
		||||
		};
 | 
			
		||||
@@ -10260,6 +10496,74 @@
 | 
			
		||||
			};
 | 
			
		||||
			name = "Release Static";
 | 
			
		||||
		};
 | 
			
		||||
		286229AC181CE4B600E1AD1A /* Debug Static */ = {
 | 
			
		||||
			isa = XCBuildConfiguration;
 | 
			
		||||
			baseConfigurationReference = 2812A5B90DF63FF000576305 /* Debug_Static.xcconfig */;
 | 
			
		||||
			buildSettings = {
 | 
			
		||||
				GCC_C_LANGUAGE_STANDARD = gnu99;
 | 
			
		||||
				GCC_PREPROCESSOR_DEFINITIONS = HAVE_CONFIG_H;
 | 
			
		||||
				HEADER_SEARCH_PATHS = (
 | 
			
		||||
					"$(TOPLEVEL)/lib-src/lv2/include",
 | 
			
		||||
					"$(TOPLEVEL)/lib-src/lv2/lilv/src/**",
 | 
			
		||||
					"$(TOPLEVEL)/lib-src/lv2/serd/src/**",
 | 
			
		||||
					"$(TOPLEVEL)/lib-src/lv2/sord/src/**",
 | 
			
		||||
					"$(TOPLEVEL)/lib-src/lv2/sratom/src/**",
 | 
			
		||||
				);
 | 
			
		||||
				PRODUCT_NAME = lv2;
 | 
			
		||||
			};
 | 
			
		||||
			name = "Debug Static";
 | 
			
		||||
		};
 | 
			
		||||
		286229AD181CE4B600E1AD1A /* Debug Shared */ = {
 | 
			
		||||
			isa = XCBuildConfiguration;
 | 
			
		||||
			baseConfigurationReference = 2812A5B70DF63FE500576305 /* Debug_Shared.xcconfig */;
 | 
			
		||||
			buildSettings = {
 | 
			
		||||
				GCC_C_LANGUAGE_STANDARD = gnu99;
 | 
			
		||||
				GCC_PREPROCESSOR_DEFINITIONS = HAVE_CONFIG_H;
 | 
			
		||||
				HEADER_SEARCH_PATHS = (
 | 
			
		||||
					"$(TOPLEVEL)/lib-src/lv2/include",
 | 
			
		||||
					"$(TOPLEVEL)/lib-src/lv2/lilv/src/**",
 | 
			
		||||
					"$(TOPLEVEL)/lib-src/lv2/serd/src/**",
 | 
			
		||||
					"$(TOPLEVEL)/lib-src/lv2/sord/src/**",
 | 
			
		||||
					"$(TOPLEVEL)/lib-src/lv2/sratom/src/**",
 | 
			
		||||
				);
 | 
			
		||||
				PRODUCT_NAME = lv2;
 | 
			
		||||
			};
 | 
			
		||||
			name = "Debug Shared";
 | 
			
		||||
		};
 | 
			
		||||
		286229AE181CE4B600E1AD1A /* Release Static */ = {
 | 
			
		||||
			isa = XCBuildConfiguration;
 | 
			
		||||
			baseConfigurationReference = 2812A5BD0DF6400E00576305 /* Release_Static.xcconfig */;
 | 
			
		||||
			buildSettings = {
 | 
			
		||||
				GCC_C_LANGUAGE_STANDARD = gnu99;
 | 
			
		||||
				GCC_PREPROCESSOR_DEFINITIONS = HAVE_CONFIG_H;
 | 
			
		||||
				HEADER_SEARCH_PATHS = (
 | 
			
		||||
					"$(TOPLEVEL)/lib-src/lv2/include",
 | 
			
		||||
					"$(TOPLEVEL)/lib-src/lv2/lilv/src/**",
 | 
			
		||||
					"$(TOPLEVEL)/lib-src/lv2/serd/src/**",
 | 
			
		||||
					"$(TOPLEVEL)/lib-src/lv2/sord/src/**",
 | 
			
		||||
					"$(TOPLEVEL)/lib-src/lv2/sratom/src/**",
 | 
			
		||||
				);
 | 
			
		||||
				PRODUCT_NAME = lv2;
 | 
			
		||||
			};
 | 
			
		||||
			name = "Release Static";
 | 
			
		||||
		};
 | 
			
		||||
		286229AF181CE4B600E1AD1A /* Release Shared */ = {
 | 
			
		||||
			isa = XCBuildConfiguration;
 | 
			
		||||
			baseConfigurationReference = 2812A5BB0DF63FFD00576305 /* Release_Shared.xcconfig */;
 | 
			
		||||
			buildSettings = {
 | 
			
		||||
				GCC_C_LANGUAGE_STANDARD = gnu99;
 | 
			
		||||
				GCC_PREPROCESSOR_DEFINITIONS = HAVE_CONFIG_H;
 | 
			
		||||
				HEADER_SEARCH_PATHS = (
 | 
			
		||||
					"$(TOPLEVEL)/lib-src/lv2/include",
 | 
			
		||||
					"$(TOPLEVEL)/lib-src/lv2/lilv/src/**",
 | 
			
		||||
					"$(TOPLEVEL)/lib-src/lv2/serd/src/**",
 | 
			
		||||
					"$(TOPLEVEL)/lib-src/lv2/sord/src/**",
 | 
			
		||||
					"$(TOPLEVEL)/lib-src/lv2/sratom/src/**",
 | 
			
		||||
				);
 | 
			
		||||
				PRODUCT_NAME = lv2;
 | 
			
		||||
			};
 | 
			
		||||
			name = "Release Shared";
 | 
			
		||||
		};
 | 
			
		||||
		288052800DEA694100671EA4 /* Debug Static */ = {
 | 
			
		||||
			isa = XCBuildConfiguration;
 | 
			
		||||
			baseConfigurationReference = 2812A5B90DF63FF000576305 /* Debug_Static.xcconfig */;
 | 
			
		||||
@@ -10337,7 +10641,6 @@
 | 
			
		||||
				GCC_OPTIMIZATION_LEVEL = 0;
 | 
			
		||||
				GCC_SYMBOLS_PRIVATE_EXTERN = YES;
 | 
			
		||||
				GCC_VERSION = 4.0;
 | 
			
		||||
				"GCC_VERSION[sdk=macosx10.5][arch=x86_64]" = 4.2;
 | 
			
		||||
				INFOPLIST_OTHER_PREPROCESSOR_FLAGS = "-traditional";
 | 
			
		||||
				INFOPLIST_PREFIX_HEADER = Info.plist.h;
 | 
			
		||||
				INFOPLIST_PREPROCESS = YES;
 | 
			
		||||
@@ -10413,7 +10716,7 @@
 | 
			
		||||
				);
 | 
			
		||||
				PRODUCT_NAME = Audacity;
 | 
			
		||||
				SKIP_INSTALL = NO;
 | 
			
		||||
				USER_HEADER_SEARCH_PATHS = "$(TOPLEVEL)/mac $(TOPLEVEL)/src/** $(TOPLEVEL)/lib-src/expat $(TOPLEVEL)/lib-src/FileDialog $(TOPLEVEL)/lib-src/libflac/include $(TOPLEVEL)/lib-src/libid3tag $(TOPLEVEL)/lib-src/libmad $(TOPLEVEL)/lib-src/libogg/include $(TOPLEVEL)/lib-src/libnyquist/nyq $(TOPLEVEL)/lib-src/libresample/include $(TOPLEVEL)/lib-src/libsndfile/src $(TOPLEVEL)/lib-src/libvamp $(TOPLEVEL)/lib-src/libvorbis/include $(TOPLEVEL)/lib-src/liblrdf/src $(TOPLEVEL)/lib-src/portaudio-v19/include $(TOPLEVEL)/lib-src/portmixer/px_common $(TOPLEVEL)/lib-src/portsmf $(TOPLEVEL)/lib-src/redland/librdf $(TOPLEVEL)/lib-src/slv2 $(TOPLEVEL)/lib-src/soundtouch/include $(TOPLEVEL)/lib-src/twolame/libtwolame";
 | 
			
		||||
				USER_HEADER_SEARCH_PATHS = "$(TOPLEVEL)/mac $(TOPLEVEL)/src/** $(TOPLEVEL)/lib-src/expat $(TOPLEVEL)/lib-src/FileDialog $(TOPLEVEL)/lib-src/libflac/include $(TOPLEVEL)/lib-src/libid3tag $(TOPLEVEL)/lib-src/libmad $(TOPLEVEL)/lib-src/libogg/include $(TOPLEVEL)/lib-src/libnyquist/nyq $(TOPLEVEL)/lib-src/libresample/include $(TOPLEVEL)/lib-src/libsndfile/src $(TOPLEVEL)/lib-src/libvamp $(TOPLEVEL)/lib-src/libvorbis/include $(TOPLEVEL)/lib-src/portaudio-v19/include $(TOPLEVEL)/lib-src/portmixer/px_common $(TOPLEVEL)/lib-src/portsmf $(TOPLEVEL)/lib-src/soundtouch/include $(TOPLEVEL)/lib-src/lv2/include $(TOPLEVEL)/lib-src/twolame/libtwolame";
 | 
			
		||||
			};
 | 
			
		||||
			name = "Debug Shared";
 | 
			
		||||
		};
 | 
			
		||||
@@ -10738,7 +11041,7 @@
 | 
			
		||||
				);
 | 
			
		||||
				PRODUCT_NAME = Audacity;
 | 
			
		||||
				SKIP_INSTALL = NO;
 | 
			
		||||
				USER_HEADER_SEARCH_PATHS = "$(TOPLEVEL)/mac $(TOPLEVEL)/src/** $(TOPLEVEL)/lib-src/expat $(TOPLEVEL)/lib-src/FileDialog $(TOPLEVEL)/lib-src/libflac/include $(TOPLEVEL)/lib-src/libid3tag $(TOPLEVEL)/lib-src/libmad $(TOPLEVEL)/lib-src/libogg/include $(TOPLEVEL)/lib-src/libnyquist/nyq $(TOPLEVEL)/lib-src/libresample/include $(TOPLEVEL)/lib-src/libsndfile/src $(TOPLEVEL)/lib-src/libvamp $(TOPLEVEL)/lib-src/libvorbis/include $(TOPLEVEL)/lib-src/liblrdf/src $(TOPLEVEL)/lib-src/portaudio-v19/include $(TOPLEVEL)/lib-src/portmixer/px_common $(TOPLEVEL)/lib-src/portsmf $(TOPLEVEL)/lib-src/redland/librdf $(TOPLEVEL)/lib-src/slv2 $(TOPLEVEL)/lib-src/soundtouch/include $(TOPLEVEL)/lib-src/twolame/libtwolame";
 | 
			
		||||
				USER_HEADER_SEARCH_PATHS = "$(TOPLEVEL)/mac $(TOPLEVEL)/src/** $(TOPLEVEL)/lib-src/expat $(TOPLEVEL)/lib-src/FileDialog $(TOPLEVEL)/lib-src/libflac/include $(TOPLEVEL)/lib-src/libid3tag $(TOPLEVEL)/lib-src/libmad $(TOPLEVEL)/lib-src/libogg/include $(TOPLEVEL)/lib-src/libnyquist/nyq $(TOPLEVEL)/lib-src/libresample/include $(TOPLEVEL)/lib-src/libsndfile/src $(TOPLEVEL)/lib-src/libvamp $(TOPLEVEL)/lib-src/libvorbis/include $(TOPLEVEL)/lib-src/portaudio-v19/include $(TOPLEVEL)/lib-src/portmixer/px_common $(TOPLEVEL)/lib-src/portsmf $(TOPLEVEL)/lib-src/soundtouch/include $(TOPLEVEL)/lib-src/lv2/include $(TOPLEVEL)/lib-src/twolame/libtwolame";
 | 
			
		||||
			};
 | 
			
		||||
			name = "Release Shared";
 | 
			
		||||
		};
 | 
			
		||||
@@ -11262,7 +11565,7 @@
 | 
			
		||||
				);
 | 
			
		||||
				PRODUCT_NAME = Audacity;
 | 
			
		||||
				SKIP_INSTALL = NO;
 | 
			
		||||
				USER_HEADER_SEARCH_PATHS = "$(TOPLEVEL)/mac $(TOPLEVEL)/src/** $(TOPLEVEL)/lib-src/expat $(TOPLEVEL)/lib-src/FileDialog $(TOPLEVEL)/lib-src/libflac/include $(TOPLEVEL)/lib-src/libid3tag $(TOPLEVEL)/lib-src/libmad $(TOPLEVEL)/lib-src/libogg/include $(TOPLEVEL)/lib-src/libnyquist/nyq $(TOPLEVEL)/lib-src/libresample/include $(TOPLEVEL)/lib-src/libsndfile/src $(TOPLEVEL)/lib-src/libvamp $(TOPLEVEL)/lib-src/libvorbis/include $(TOPLEVEL)/lib-src/liblrdf/src $(TOPLEVEL)/lib-src/portaudio-v19/include $(TOPLEVEL)/lib-src/portmixer/px_common $(TOPLEVEL)/lib-src/portsmf $(TOPLEVEL)/lib-src/redland/librdf $(TOPLEVEL)/lib-src/slv2 $(TOPLEVEL)/lib-src/soundtouch/include $(TOPLEVEL)/lib-src/twolame/libtwolame";
 | 
			
		||||
				USER_HEADER_SEARCH_PATHS = "$(TOPLEVEL)/mac $(TOPLEVEL)/src/** $(TOPLEVEL)/lib-src/expat $(TOPLEVEL)/lib-src/FileDialog $(TOPLEVEL)/lib-src/libflac/include $(TOPLEVEL)/lib-src/libid3tag $(TOPLEVEL)/lib-src/libmad $(TOPLEVEL)/lib-src/libogg/include $(TOPLEVEL)/lib-src/libnyquist/nyq $(TOPLEVEL)/lib-src/libresample/include $(TOPLEVEL)/lib-src/libsndfile/src $(TOPLEVEL)/lib-src/libvamp $(TOPLEVEL)/lib-src/libvorbis/include $(TOPLEVEL)/lib-src/portaudio-v19/include $(TOPLEVEL)/lib-src/portmixer/px_common $(TOPLEVEL)/lib-src/portsmf $(TOPLEVEL)/lib-src/soundtouch/include $(TOPLEVEL)/lib-src/lv2/include $(TOPLEVEL)/lib-src/twolame/libtwolame";
 | 
			
		||||
			};
 | 
			
		||||
			name = "Release Static";
 | 
			
		||||
		};
 | 
			
		||||
@@ -12455,6 +12758,17 @@
 | 
			
		||||
			defaultConfigurationIsVisible = 0;
 | 
			
		||||
			defaultConfigurationName = "Debug Static";
 | 
			
		||||
		};
 | 
			
		||||
		286229AB181CE4B600E1AD1A /* Build configuration list for PBXNativeTarget "lv2" */ = {
 | 
			
		||||
			isa = XCConfigurationList;
 | 
			
		||||
			buildConfigurations = (
 | 
			
		||||
				286229AC181CE4B600E1AD1A /* Debug Static */,
 | 
			
		||||
				286229AD181CE4B600E1AD1A /* Debug Shared */,
 | 
			
		||||
				286229AE181CE4B600E1AD1A /* Release Static */,
 | 
			
		||||
				286229AF181CE4B600E1AD1A /* Release Shared */,
 | 
			
		||||
			);
 | 
			
		||||
			defaultConfigurationIsVisible = 0;
 | 
			
		||||
			defaultConfigurationName = "Debug Static";
 | 
			
		||||
		};
 | 
			
		||||
		288052830DEA698A00671EA4 /* Build configuration list for PBXNativeTarget "mod-script-pipe" */ = {
 | 
			
		||||
			isa = XCConfigurationList;
 | 
			
		||||
			buildConfigurations = (
 | 
			
		||||
 
 | 
			
		||||
@@ -135,6 +135,10 @@ void AboutDialog::CreateCreditsList()
 | 
			
		||||
   #if USE_LIBSOXR
 | 
			
		||||
      AddCredit(wxT("libsoxr, by Rob Sykes"), roleLibrary);
 | 
			
		||||
   #endif
 | 
			
		||||
   #if USE_LV2
 | 
			
		||||
      AddCredit(wxT("lilv, serd, sord, and sratom, by David Robillard"), roleLibrary);
 | 
			
		||||
      AddCredit(wxT("msinttypes, by Alexander Chemeris"), roleLibrary);
 | 
			
		||||
   #endif
 | 
			
		||||
   AddCredit(wxT("libsndfile"), roleLibrary);
 | 
			
		||||
   AddCredit(wxT("Nyquist"), roleLibrary);
 | 
			
		||||
   AddCredit(wxT("Ogg Vorbis"), roleLibrary);
 | 
			
		||||
 
 | 
			
		||||
@@ -161,6 +161,10 @@ It handles initialization and termination by subclassing wxApp.
 | 
			
		||||
#     pragma comment(lib, "libvorbis")
 | 
			
		||||
#  endif
 | 
			
		||||
 | 
			
		||||
#  if defined(USE_LV2)
 | 
			
		||||
#     pragma comment(lib, "lv2")
 | 
			
		||||
#  endif
 | 
			
		||||
 | 
			
		||||
#  if defined(USE_MIDI)
 | 
			
		||||
#     pragma comment(lib, "portsmf")
 | 
			
		||||
#     endif
 | 
			
		||||
 
 | 
			
		||||
@@ -123,6 +123,9 @@
 | 
			
		||||
/* Define if the ogg vorbis decoding library is present */
 | 
			
		||||
#undef USE_LIBVORBIS
 | 
			
		||||
 | 
			
		||||
/* Define if the LV2 support is present */
 | 
			
		||||
#undef USE_LV2
 | 
			
		||||
 | 
			
		||||
/* Define if midi support should be enabled */
 | 
			
		||||
#undef USE_MIDI
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -70,7 +70,7 @@
 | 
			
		||||
#include "ladspa/LoadLadspa.h"
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef USE_SLV2
 | 
			
		||||
#ifdef USE_LV2
 | 
			
		||||
#include "lv2/LoadLV2.h"
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
@@ -295,8 +295,8 @@ void LoadEffects()
 | 
			
		||||
   }
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef USE_SLV2
 | 
			
		||||
   if (gPrefs->Read(wxT("/SLV2/Enable"), true)) {
 | 
			
		||||
#ifdef USE_LV2
 | 
			
		||||
   if (gPrefs->Read(wxT("/LV2/Enable"), true)) {
 | 
			
		||||
      LoadLV2Plugins();
 | 
			
		||||
   }
 | 
			
		||||
#endif
 | 
			
		||||
@@ -323,7 +323,7 @@ void UnloadEffects()
 | 
			
		||||
   UnloadLadspaPlugins();
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef USE_SLV2
 | 
			
		||||
#ifdef USE_LV2
 | 
			
		||||
   UnloadLV2Plugins();
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -17,19 +17,23 @@ class wxCheckBox;
 | 
			
		||||
#include <map>
 | 
			
		||||
#include <vector>
 | 
			
		||||
#include <wx/dialog.h>
 | 
			
		||||
#include <wx/dynarray.h>
 | 
			
		||||
 | 
			
		||||
#include <slv2/slv2.h>
 | 
			
		||||
#include <lilv/lilv.h>
 | 
			
		||||
 | 
			
		||||
#include "../Effect.h"
 | 
			
		||||
#include "LV2PortGroup.h"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/** A structure that contains information about a single LV2 plugin port. */
 | 
			
		||||
struct LV2Port {
 | 
			
		||||
struct LV2Port
 | 
			
		||||
{
 | 
			
		||||
   LV2Port()
 | 
			
		||||
      : mToggle(false),
 | 
			
		||||
        mInteger(false),
 | 
			
		||||
        mSampleRate(false) {
 | 
			
		||||
        mSampleRate(false),
 | 
			
		||||
        mEnumeration(false)
 | 
			
		||||
   {
 | 
			
		||||
   }
 | 
			
		||||
   
 | 
			
		||||
   uint32_t mIndex;
 | 
			
		||||
@@ -41,24 +45,27 @@ struct LV2Port {
 | 
			
		||||
   bool mToggle;
 | 
			
		||||
   bool mInteger;
 | 
			
		||||
   bool mSampleRate;
 | 
			
		||||
   bool mEnumeration;
 | 
			
		||||
   LilvPort *mPort;
 | 
			
		||||
 | 
			
		||||
   // ScalePoints
 | 
			
		||||
   wxArrayDouble mScaleValues;
 | 
			
		||||
   wxArrayString mScaleLabels;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/** This is used in LV2Effect and LV2EffectDialog. */
 | 
			
		||||
typedef std::map<uint32_t, std::map<float, wxString> > ScalePointMap;
 | 
			
		||||
 | 
			
		||||
WX_DECLARE_OBJARRAY(LV2Port, LV2PortArray);
 | 
			
		||||
 | 
			
		||||
/** The main LV2 plugin class. It handles loading and applying a 
 | 
			
		||||
    single plugin. */
 | 
			
		||||
class LV2Effect:public Effect {
 | 
			
		||||
 | 
			
		||||
 public:
 | 
			
		||||
class LV2Effect:public Effect
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
   
 | 
			
		||||
   /** Create an LV2Effect from a SLV2 data handle and a category set. */
 | 
			
		||||
   LV2Effect(SLV2Plugin plug,
 | 
			
		||||
             const std::set<wxString>& categories = std::set<wxString>());
 | 
			
		||||
   /** Create an LV2Effect from an LV2 data handle and a category set. */
 | 
			
		||||
   LV2Effect(const LilvPlugin *plug,
 | 
			
		||||
             const std::set<wxString> & categories = std::set<wxString>());
 | 
			
		||||
   virtual ~LV2Effect();
 | 
			
		||||
   
 | 
			
		||||
 | 
			
		||||
   /** Get the name of the effect. */
 | 
			
		||||
   virtual wxString GetEffectName();
 | 
			
		||||
   
 | 
			
		||||
@@ -80,31 +87,31 @@ class LV2Effect:public Effect {
 | 
			
		||||
   virtual void End();
 | 
			
		||||
   
 | 
			
		||||
   bool IsValid();
 | 
			
		||||
   
 | 
			
		||||
 | 
			
		||||
   /** Return a list of LV2Ports for the input parameters. */
 | 
			
		||||
   std::vector<LV2Port>& GetControls();
 | 
			
		||||
   LV2PortArray & GetControls();
 | 
			
		||||
   
 | 
			
		||||
   /** Return true if the plugin is a synth (MIDI input), false if not. */
 | 
			
		||||
   bool IsSynth();
 | 
			
		||||
   
 | 
			
		||||
 | 
			
		||||
   /** Modify the note settings for the plugin (only for synths). */
 | 
			
		||||
   bool SetNote(sampleCount len, unsigned char velocity, unsigned char key);
 | 
			
		||||
   
 | 
			
		||||
   /** Get a map containing all scale points for the plugin. */
 | 
			
		||||
   const ScalePointMap& GetScalePoints();
 | 
			
		||||
   
 | 
			
		||||
   /** Get the port group tree for the plugin. */
 | 
			
		||||
   const LV2PortGroup& GetPortGroups();
 | 
			
		||||
   
 | 
			
		||||
 private:
 | 
			
		||||
   bool ProcessStereo(int count, WaveTrack * left, WaveTrack *right,
 | 
			
		||||
   const LV2PortGroup & GetRootGroup();
 | 
			
		||||
 | 
			
		||||
   wxString GetString(const LilvNode *node);
 | 
			
		||||
   wxString GetString(LilvNode *node, bool free);
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
   bool ProcessStereo(int count, WaveTrack *left, WaveTrack *right,
 | 
			
		||||
                      sampleCount lstart, sampleCount rstart,
 | 
			
		||||
                      sampleCount len);
 | 
			
		||||
 | 
			
		||||
   bool mValid;
 | 
			
		||||
   wxString pluginName;
 | 
			
		||||
 | 
			
		||||
   SLV2Plugin mData;
 | 
			
		||||
   const LilvPlugin *mData;
 | 
			
		||||
   sampleCount mBlockSize;
 | 
			
		||||
   float **fInBuffer;
 | 
			
		||||
   float **fOutBuffer;
 | 
			
		||||
@@ -112,32 +119,30 @@ class LV2Effect:public Effect {
 | 
			
		||||
 | 
			
		||||
   std::set<wxString> mCategories;
 | 
			
		||||
   
 | 
			
		||||
   std::vector<LV2Port> mControlInputs;
 | 
			
		||||
   std::vector<LV2Port> mControlOutputs;
 | 
			
		||||
   std::vector<LV2Port> mAudioInputs;
 | 
			
		||||
   std::vector<LV2Port> mAudioOutputs;
 | 
			
		||||
   LV2Port* mMidiInput;
 | 
			
		||||
   LV2PortArray mControlInputs;
 | 
			
		||||
   LV2PortArray mControlOutputs;
 | 
			
		||||
   LV2PortArray mAudioInputs;
 | 
			
		||||
   LV2PortArray mAudioOutputs;
 | 
			
		||||
   LV2Port *mMidiInput;
 | 
			
		||||
   
 | 
			
		||||
   sampleCount mNoteLength;
 | 
			
		||||
   unsigned char mNoteVelocity;
 | 
			
		||||
   unsigned char mNoteKey;
 | 
			
		||||
   
 | 
			
		||||
   ScalePointMap mScalePoints;
 | 
			
		||||
   bool mScalePointsRetrieved;
 | 
			
		||||
   
 | 
			
		||||
   LV2PortGroup mRootGroup;
 | 
			
		||||
   bool mPortGroupsRetrieved;
 | 
			
		||||
   std::map<wxString, LV2PortGroup> mPortGroups;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/** The control dialog for an LV2 plugin. */
 | 
			
		||||
class LV2EffectDialog:public wxDialog {
 | 
			
		||||
class LV2EffectDialog:public wxDialog
 | 
			
		||||
{
 | 
			
		||||
   DECLARE_DYNAMIC_CLASS(LV2EffectDialog)
 | 
			
		||||
 | 
			
		||||
 public:
 | 
			
		||||
public:
 | 
			
		||||
   LV2EffectDialog(LV2Effect *effect,
 | 
			
		||||
                   wxWindow * parent,
 | 
			
		||||
                   SLV2Plugin data,
 | 
			
		||||
                   wxWindow *parent,
 | 
			
		||||
                   const LilvPlugin *data,
 | 
			
		||||
                   int sampleRate,
 | 
			
		||||
                   double length,
 | 
			
		||||
                   double noteLength,
 | 
			
		||||
@@ -149,6 +154,7 @@ class LV2EffectDialog:public wxDialog {
 | 
			
		||||
   void OnCheckBox(wxCommandEvent & event);
 | 
			
		||||
   void OnSlider(wxCommandEvent & event);
 | 
			
		||||
   void OnTextCtrl(wxCommandEvent & event);
 | 
			
		||||
   void OnChoiceCtrl(wxCommandEvent & event);
 | 
			
		||||
   void OnOK(wxCommandEvent & event);
 | 
			
		||||
   void OnCancel(wxCommandEvent & event);
 | 
			
		||||
   void OnPreview(wxCommandEvent & event);
 | 
			
		||||
@@ -161,24 +167,28 @@ class LV2EffectDialog:public wxDialog {
 | 
			
		||||
 | 
			
		||||
   DECLARE_EVENT_TABLE()
 | 
			
		||||
 | 
			
		||||
 private:
 | 
			
		||||
private:
 | 
			
		||||
   void HandleText();
 | 
			
		||||
   void ConnectFocus(wxControl *c);
 | 
			
		||||
   void DisconnectFocus(wxControl *c);
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
   LV2Effect *mEffect;
 | 
			
		||||
   const LilvPlugin *mData;
 | 
			
		||||
   LV2PortArray & mControls;
 | 
			
		||||
   int mSampleRate;
 | 
			
		||||
   double mLength;
 | 
			
		||||
 | 
			
		||||
   bool inSlider;
 | 
			
		||||
   bool inText;
 | 
			
		||||
 | 
			
		||||
   double mLength;
 | 
			
		||||
   int sampleRate;
 | 
			
		||||
   SLV2Plugin mData;
 | 
			
		||||
   wxSlider **sliders;
 | 
			
		||||
   wxTextCtrl **fields;
 | 
			
		||||
   wxStaticText **labels;
 | 
			
		||||
   wxCheckBox **toggles;
 | 
			
		||||
   LV2Effect *effect;
 | 
			
		||||
   std::vector<LV2Port>& mControls;
 | 
			
		||||
   wxSlider **mSliders;
 | 
			
		||||
   wxTextCtrl **mFields;
 | 
			
		||||
   wxStaticText **mLabels;
 | 
			
		||||
   wxCheckBox **mToggles;
 | 
			
		||||
   wxChoice **mEnums;
 | 
			
		||||
   wxTextCtrl *mSeconds;
 | 
			
		||||
   wxTextCtrl *mNoteSeconds;
 | 
			
		||||
   wxTextCtrl* mNoteVelocity;
 | 
			
		||||
   wxTextCtrl* mNoteKey;
 | 
			
		||||
   wxTextCtrl *mNoteVelocity;
 | 
			
		||||
   wxTextCtrl *mNoteKey;
 | 
			
		||||
};
 | 
			
		||||
 
 | 
			
		||||
@@ -9,33 +9,53 @@
 | 
			
		||||
 | 
			
		||||
*********************************************************************/
 | 
			
		||||
 | 
			
		||||
#include "../../Audacity.h"
 | 
			
		||||
 | 
			
		||||
#if defined(USE_LV2)
 | 
			
		||||
 | 
			
		||||
#include <wx/dynarray.h>
 | 
			
		||||
 | 
			
		||||
#include "LV2PortGroup.h"
 | 
			
		||||
 | 
			
		||||
#if defined(USE_SLV2)
 | 
			
		||||
 | 
			
		||||
LV2PortGroup::LV2PortGroup(const wxString& name)
 | 
			
		||||
  : mName(name) {
 | 
			
		||||
  
 | 
			
		||||
}
 | 
			
		||||
   
 | 
			
		||||
void LV2PortGroup::AddSubGroup(const LV2PortGroup& subgroup) {
 | 
			
		||||
  mSubgroups.push_back(subgroup);
 | 
			
		||||
}
 | 
			
		||||
   
 | 
			
		||||
const std::vector<LV2PortGroup>& LV2PortGroup::GetSubGroups() const {
 | 
			
		||||
  return mSubgroups;
 | 
			
		||||
LV2PortGroup::LV2PortGroup(const wxString & name)
 | 
			
		||||
:  mName(name)
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void LV2PortGroup::AddParameter(uint32_t parameter) {
 | 
			
		||||
  mParameters.push_back(parameter);
 | 
			
		||||
}
 | 
			
		||||
   
 | 
			
		||||
const std::vector<uint32_t>& LV2PortGroup::GetParameters() const {
 | 
			
		||||
  return mParameters;
 | 
			
		||||
void LV2PortGroup::AddSubGroup(const LV2PortGroup & subgroup)
 | 
			
		||||
{
 | 
			
		||||
   wxString name = subgroup.GetName();
 | 
			
		||||
 | 
			
		||||
   LV2PortGroupArray::iterator i;
 | 
			
		||||
   for (i = mSubGroups.begin(); i != mSubGroups.end(); i++)
 | 
			
		||||
   {
 | 
			
		||||
      if ((*i)->GetName() == name)
 | 
			
		||||
      {
 | 
			
		||||
         return;
 | 
			
		||||
      }
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
   mSubGroups.push_back(&subgroup);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const wxString& LV2PortGroup::GetName() const {
 | 
			
		||||
  return mName;
 | 
			
		||||
const LV2PortGroupArray & LV2PortGroup::GetSubGroups() const
 | 
			
		||||
{
 | 
			
		||||
   return mSubGroups;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void LV2PortGroup::AddParameter(int parameter)
 | 
			
		||||
{
 | 
			
		||||
   mParameters.Add(parameter);
 | 
			
		||||
}
 | 
			
		||||
   
 | 
			
		||||
const wxArrayInt & LV2PortGroup::GetParameters() const
 | 
			
		||||
{
 | 
			
		||||
   return mParameters;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const wxString & LV2PortGroup::GetName() const
 | 
			
		||||
{
 | 
			
		||||
   return mName;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 
 | 
			
		||||
@@ -12,38 +12,40 @@
 | 
			
		||||
#ifndef LV2PORTGROUP_H
 | 
			
		||||
#define LV2PORTGROUP_H
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include <vector>
 | 
			
		||||
 | 
			
		||||
#include <wx/string.h>
 | 
			
		||||
 | 
			
		||||
class LV2PortGroup;
 | 
			
		||||
typedef std::vector<const LV2PortGroup *> LV2PortGroupArray;
 | 
			
		||||
 | 
			
		||||
/** A class that contains information about a single LV2 plugin port group,
 | 
			
		||||
    such as its children and its name. */
 | 
			
		||||
class LV2PortGroup {
 | 
			
		||||
 public:
 | 
			
		||||
   
 | 
			
		||||
   LV2PortGroup(const wxString& name = wxT(""));
 | 
			
		||||
class LV2PortGroup
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
   LV2PortGroup(const wxString & name = wxEmptyString);
 | 
			
		||||
   
 | 
			
		||||
   /** Add a subgroup of this group. */
 | 
			
		||||
   void AddSubGroup(const LV2PortGroup& subgroup);
 | 
			
		||||
   void AddSubGroup(const LV2PortGroup & subgroup);
 | 
			
		||||
   
 | 
			
		||||
   /** Return a list of all subgroups. */
 | 
			
		||||
   const std::vector<LV2PortGroup>& GetSubGroups() const;
 | 
			
		||||
   const LV2PortGroupArray & GetSubGroups() const;
 | 
			
		||||
   
 | 
			
		||||
   /** Add a parameter number (not port number). */
 | 
			
		||||
   void AddParameter(uint32_t parameter);
 | 
			
		||||
   void AddParameter(int parameter);
 | 
			
		||||
   
 | 
			
		||||
   /** Return a list of all parameters in this group. */
 | 
			
		||||
   const std::vector<uint32_t>& GetParameters() const;
 | 
			
		||||
   
 | 
			
		||||
   const wxString& GetName() const;
 | 
			
		||||
   const wxArrayInt & GetParameters() const;
 | 
			
		||||
   
 | 
			
		||||
   const wxString & GetName() const;
 | 
			
		||||
 | 
			
		||||
 private:
 | 
			
		||||
   
 | 
			
		||||
   wxString mName;
 | 
			
		||||
   std::vector<LV2PortGroup> mSubgroups;
 | 
			
		||||
   std::vector<uint32_t> mParameters;
 | 
			
		||||
   LV2PortGroupArray mSubGroups;
 | 
			
		||||
   wxArrayInt mParameters;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 
 | 
			
		||||
@@ -14,6 +14,9 @@ Functions that find and load all LV2 plugins on the system.
 | 
			
		||||
 | 
			
		||||
*//*******************************************************************/
 | 
			
		||||
 | 
			
		||||
#include "../../Audacity.h"
 | 
			
		||||
 | 
			
		||||
#if defined(USE_LV2)
 | 
			
		||||
 | 
			
		||||
#include <cstdio>
 | 
			
		||||
#include <cstdlib>
 | 
			
		||||
@@ -26,32 +29,37 @@ Functions that find and load all LV2 plugins on the system.
 | 
			
		||||
#include <wx/log.h>
 | 
			
		||||
#include <wx/string.h>
 | 
			
		||||
 | 
			
		||||
#include "../../Audacity.h"
 | 
			
		||||
#include "../../AudacityApp.h"
 | 
			
		||||
#include "../../Experimental.h"
 | 
			
		||||
#include "../../Internat.h"
 | 
			
		||||
#include "../EffectManager.h"
 | 
			
		||||
 | 
			
		||||
#if defined(USE_SLV2)
 | 
			
		||||
 | 
			
		||||
#include "LV2Effect.h"
 | 
			
		||||
#include "lv2_uri_map.h"
 | 
			
		||||
#include "lv2_event.h"
 | 
			
		||||
#include "lv2/lv2plug.in/ns/ext/event/event.h"
 | 
			
		||||
#include "lv2/lv2plug.in/ns/ext/midi/midi.h"
 | 
			
		||||
#include "lv2/lv2plug.in/ns/ext/port-groups/port-groups.h"
 | 
			
		||||
#include "lv2/lv2plug.in/ns/ext/uri-map/uri-map.h"
 | 
			
		||||
 | 
			
		||||
#include "LoadLV2.h"
 | 
			
		||||
 | 
			
		||||
SLV2World gWorld = 0;
 | 
			
		||||
LilvWorld *gWorld = NULL;
 | 
			
		||||
 | 
			
		||||
// This is the URI Map Feature object. It is required for loading synth
 | 
			
		||||
// plugins.
 | 
			
		||||
static uint32_t uri_to_id(LV2_URI_Map_Callback_Data cbd,
 | 
			
		||||
                          const char* map, const char* uri) {
 | 
			
		||||
   if (!std::strcmp(map, "http://lv2plug.in/ns/ext/event")) {
 | 
			
		||||
      if (!std::strcmp(uri, "http://lv2plug.in/ns/ext/midi#MidiEvent"))
 | 
			
		||||
static uint32_t uri_to_id(LV2_URI_Map_Callback_Data WXUNUSED(cbd),
 | 
			
		||||
                          const char *map, const char *uri)
 | 
			
		||||
{
 | 
			
		||||
   if (!std::strcmp(map, LV2_EVENT_URI))
 | 
			
		||||
   {
 | 
			
		||||
      if (!std::strcmp(uri, LV2_MIDI__MidiEvent))
 | 
			
		||||
      {
 | 
			
		||||
         return 1;
 | 
			
		||||
      else if (!std::strcmp(uri, "http://lv2plug.in/ns/ext/event#TimeStamp"))
 | 
			
		||||
      }
 | 
			
		||||
      else if (!std::strcmp(uri, LV2_EVENT__TimeStamp))
 | 
			
		||||
      {
 | 
			
		||||
         return 2;
 | 
			
		||||
      }
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
   return 0;
 | 
			
		||||
}
 | 
			
		||||
static LV2_URI_Map_Feature gURIMap = { 0, &uri_to_id };
 | 
			
		||||
@@ -61,7 +69,9 @@ static LV2_Feature gURIMapFeature = { "http://lv2plug.in/ns/ext/uri-map",
 | 
			
		||||
// This is the event refcounter object. We don't actually implement it
 | 
			
		||||
// since we only ever send flat MIDI events to the plugins, but it is 
 | 
			
		||||
// still required.
 | 
			
		||||
uint32_t event_ref(LV2_Event_Callback_Data callback_data, LV2_Event* event) {
 | 
			
		||||
uint32_t event_ref(LV2_Event_Callback_Data WXUNUSED(callback_data),
 | 
			
		||||
                   LV2_Event *WXUNUSED(event))
 | 
			
		||||
{
 | 
			
		||||
   return 0;
 | 
			
		||||
}
 | 
			
		||||
static LV2_Event_Feature gEventRef = { 0, &event_ref, &event_ref };
 | 
			
		||||
@@ -71,59 +81,69 @@ static LV2_Feature gEventRefFeature = { "http://lv2plug.in/ns/ext/event",
 | 
			
		||||
// These are the LV2 Features we support.
 | 
			
		||||
LV2_Feature*const gLV2Features[] = { &gURIMapFeature, &gEventRefFeature, 0 };
 | 
			
		||||
 | 
			
		||||
LilvNode *gAudioPortClass;
 | 
			
		||||
LilvNode *gControlPortClass;
 | 
			
		||||
LilvNode *gMidiPortClass;
 | 
			
		||||
LilvNode *gInputPortClass;
 | 
			
		||||
LilvNode *gOutputPortClass;
 | 
			
		||||
LilvNode *gPortToggled;
 | 
			
		||||
LilvNode *gPortIsInteger;
 | 
			
		||||
LilvNode *gPortIsSampleRate;
 | 
			
		||||
LilvNode *gPortIsEnumeration;
 | 
			
		||||
LilvNode *gName;
 | 
			
		||||
LilvNode *gPortGroup;
 | 
			
		||||
LilvNode *gSubGroupOf;
 | 
			
		||||
 | 
			
		||||
SLV2Value gAudioPortClass;
 | 
			
		||||
SLV2Value gControlPortClass;
 | 
			
		||||
SLV2Value gMidiPortClass;
 | 
			
		||||
SLV2Value gInputPortClass;
 | 
			
		||||
SLV2Value gOutputPortClass;
 | 
			
		||||
SLV2Value gPortToggled;
 | 
			
		||||
SLV2Value gPortIsInteger;
 | 
			
		||||
SLV2Value gPortIsSampleRate;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void LoadLV2Plugins() {
 | 
			
		||||
void LoadLV2Plugins()
 | 
			
		||||
{
 | 
			
		||||
   
 | 
			
		||||
   EffectManager& em = EffectManager::Get();
 | 
			
		||||
   
 | 
			
		||||
   // If gWorld isn't 0 we have already initialised SLV2 - unload all plugins
 | 
			
		||||
   // If gWorld isn't 0 we have already initialised Lilv - unload all plugins
 | 
			
		||||
   // and initialise again.
 | 
			
		||||
   if (gWorld)
 | 
			
		||||
   {
 | 
			
		||||
      UnloadLV2Plugins();
 | 
			
		||||
   }
 | 
			
		||||
   
 | 
			
		||||
   // Try to initialise SLV2, or return.
 | 
			
		||||
   gWorld = slv2_world_new();
 | 
			
		||||
   if (!gWorld) {
 | 
			
		||||
      std::cerr<<"Could not initialise SLV2!"<<std::endl;
 | 
			
		||||
   // Try to initialise Lilv, or return.
 | 
			
		||||
   gWorld = lilv_world_new();
 | 
			
		||||
   if (!gWorld)
 | 
			
		||||
   {
 | 
			
		||||
      wxLogMessage(wxT("Could not initialise lilv!"));
 | 
			
		||||
      return;
 | 
			
		||||
   }
 | 
			
		||||
   
 | 
			
		||||
   gAudioPortClass = slv2_value_new_uri(gWorld, SLV2_PORT_CLASS_AUDIO);
 | 
			
		||||
   gControlPortClass = slv2_value_new_uri(gWorld, SLV2_PORT_CLASS_CONTROL);
 | 
			
		||||
   gMidiPortClass = slv2_value_new_uri(gWorld, "http://lv2plug.in/ns/ext/event#EventPort");
 | 
			
		||||
   gInputPortClass = slv2_value_new_uri(gWorld, SLV2_PORT_CLASS_INPUT);
 | 
			
		||||
   gOutputPortClass = slv2_value_new_uri(gWorld, SLV2_PORT_CLASS_OUTPUT);
 | 
			
		||||
   gPortToggled = slv2_value_new_uri(gWorld, "http://lv2plug.in/ns/lv2core#toggled");
 | 
			
		||||
   gPortIsInteger = slv2_value_new_uri(gWorld, "http://lv2plug.in/ns/lv2core#integer");
 | 
			
		||||
   gPortIsSampleRate = slv2_value_new_uri(gWorld, "http://lv2plug.in/ns/lv2core#sampleRate");
 | 
			
		||||
   gAudioPortClass = lilv_new_uri(gWorld, LV2_CORE__AudioPort);
 | 
			
		||||
   gControlPortClass = lilv_new_uri(gWorld, LV2_CORE__ControlPort);
 | 
			
		||||
   gMidiPortClass = lilv_new_uri(gWorld, LV2_EVENT__EventPort);
 | 
			
		||||
   gInputPortClass = lilv_new_uri(gWorld, LV2_CORE__InputPort);
 | 
			
		||||
   gOutputPortClass = lilv_new_uri(gWorld, LV2_CORE__OutputPort);
 | 
			
		||||
   gPortToggled = lilv_new_uri(gWorld, LV2_CORE__toggled);
 | 
			
		||||
   gPortIsInteger = lilv_new_uri(gWorld, LV2_CORE__integer);
 | 
			
		||||
   gPortIsSampleRate = lilv_new_uri(gWorld, LV2_CORE__sampleRate);
 | 
			
		||||
   gPortIsEnumeration = lilv_new_uri(gWorld, LV2_CORE__enumeration);
 | 
			
		||||
   gName = lilv_new_uri(gWorld, LV2_CORE__name);
 | 
			
		||||
   gPortGroup = lilv_new_uri(gWorld, LV2_PORT_GROUPS__group);
 | 
			
		||||
   gSubGroupOf = lilv_new_uri(gWorld, LV2_PORT_GROUPS__subGroupOf);
 | 
			
		||||
 | 
			
		||||
   slv2_world_load_all(gWorld);
 | 
			
		||||
   lilv_world_load_all(gWorld);
 | 
			
		||||
   
 | 
			
		||||
#ifdef EFFECT_CATEGORIES
 | 
			
		||||
   
 | 
			
		||||
   // Add all LV2 categories and their relationships
 | 
			
		||||
   SLV2PluginClasses classes = slv2_world_get_plugin_classes(gWorld);
 | 
			
		||||
   for (unsigned index = 0; index < slv2_plugin_classes_size(classes);++index){
 | 
			
		||||
      SLV2PluginClass c = slv2_plugin_classes_get_at(classes, index);
 | 
			
		||||
      em.AddCategory(wxString::FromUTF8(slv2_value_as_uri(slv2_plugin_class_get_uri(c))), 
 | 
			
		||||
                     wxString::FromUTF8(slv2_value_as_string(slv2_plugin_class_get_label(c))));
 | 
			
		||||
   LilvPluginClasses classes = Lilv_world_get_plugin_classes(gWorld);
 | 
			
		||||
   for (unsigned index = 0; index < Lilv_plugin_classes_size(classes);++index){
 | 
			
		||||
      LilvPluginClass c = Lilv_plugin_classes_get_at(classes, index);
 | 
			
		||||
      em.AddCategory(wxString::FromUTF8(lilv_node_as_uri(Lilv_plugin_class_get_uri(c))), 
 | 
			
		||||
                     wxString::FromUTF8(lilv_node_as_string(Lilv_plugin_class_get_label(c))));
 | 
			
		||||
   }
 | 
			
		||||
   for (unsigned index = 0; index < slv2_plugin_classes_size(classes);++index){
 | 
			
		||||
      SLV2PluginClass c = slv2_plugin_classes_get_at(classes, index);
 | 
			
		||||
      SLV2PluginClasses ch = slv2_plugin_class_get_children(c);
 | 
			
		||||
      EffectCategory* pCat = em.LookupCategory(wxString::FromUTF8(slv2_value_as_uri(slv2_plugin_class_get_uri(c))));
 | 
			
		||||
      for (unsigned j = 0; j < slv2_plugin_classes_size(ch); ++j) {
 | 
			
		||||
         EffectCategory* chCat = em.LookupCategory(wxString::FromUTF8(slv2_value_as_uri(slv2_plugin_class_get_uri(slv2_plugin_classes_get_at(ch, j)))));
 | 
			
		||||
   for (unsigned index = 0; index < Lilv_plugin_classes_size(classes);++index){
 | 
			
		||||
      LilvPluginClass c = Lilv_plugin_classes_get_at(classes, index);
 | 
			
		||||
      LilvPluginClasses ch = Lilv_plugin_class_get_children(c);
 | 
			
		||||
      EffectCategory* pCat = em.LookupCategory(wxString::FromUTF8(lilv_node_as_uri(Lilv_plugin_class_get_uri(c))));
 | 
			
		||||
      for (unsigned j = 0; j < Lilv_plugin_classes_size(ch); ++j) {
 | 
			
		||||
         EffectCategory* chCat = em.LookupCategory(wxString::FromUTF8(lilv_node_as_uri(Lilv_plugin_class_get_uri(Lilv_plugin_classes_get_at(ch, j)))));
 | 
			
		||||
         if (chCat && pCat) {
 | 
			
		||||
            em.AddCategoryParent(chCat, pCat);
 | 
			
		||||
         }
 | 
			
		||||
@@ -133,27 +153,64 @@ void LoadLV2Plugins() {
 | 
			
		||||
#endif
 | 
			
		||||
   
 | 
			
		||||
   // Retrieve data about all plugins
 | 
			
		||||
   SLV2Plugins plugs = slv2_world_get_all_plugins(gWorld);
 | 
			
		||||
   
 | 
			
		||||
   const LilvPlugins *plugs = lilv_world_get_all_plugins(gWorld);
 | 
			
		||||
 | 
			
		||||
   // Iterate over all plugins and register them with the EffectManager
 | 
			
		||||
   for (unsigned index = 0; index < slv2_plugins_size(plugs); ++index) {
 | 
			
		||||
      SLV2Plugin plug = slv2_plugins_get_at(plugs, index);
 | 
			
		||||
   LILV_FOREACH(plugins, i, plugs)
 | 
			
		||||
   {
 | 
			
		||||
      const LilvPlugin *plug = lilv_plugins_get(plugs, i);
 | 
			
		||||
      std::set<wxString> cats;
 | 
			
		||||
      cats.insert(wxString::FromUTF8(slv2_value_as_uri(slv2_plugin_class_get_uri(slv2_plugin_get_class(plug)))));
 | 
			
		||||
      cats.insert(wxString::FromUTF8(lilv_node_as_uri(lilv_plugin_class_get_uri(lilv_plugin_get_class(plug)))));
 | 
			
		||||
      LV2Effect *effect = new LV2Effect(plug, cats);
 | 
			
		||||
      if (effect->IsValid())
 | 
			
		||||
         em.RegisterEffect(effect);
 | 
			
		||||
      else
 | 
			
		||||
         delete effect;
 | 
			
		||||
      //std::cerr<<"Loaded LV2 \""<<slv2_value_as_string(slv2_plugin_get_name(plug))<<"\""<<std::endl;
 | 
			
		||||
      //std::cerr<<"Loaded LV2 \""<<lilv_node_as_string(Lilv_plugin_get_name(plug))<<"\""<<std::endl;
 | 
			
		||||
   }
 | 
			
		||||
   
 | 
			
		||||
   // Deallocate the plugin list (but not the plugins)
 | 
			
		||||
   slv2_plugins_free(gWorld, plugs);
 | 
			
		||||
  
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void UnloadLV2Plugins()
 | 
			
		||||
{
 | 
			
		||||
   lilv_node_free(gAudioPortClass);
 | 
			
		||||
   gAudioPortClass = NULL;
 | 
			
		||||
 | 
			
		||||
   lilv_node_free(gControlPortClass);
 | 
			
		||||
   gControlPortClass = NULL;
 | 
			
		||||
 | 
			
		||||
   lilv_node_free(gMidiPortClass);
 | 
			
		||||
   gMidiPortClass = NULL;
 | 
			
		||||
 | 
			
		||||
   lilv_node_free(gInputPortClass);
 | 
			
		||||
   gInputPortClass = NULL;
 | 
			
		||||
 | 
			
		||||
   lilv_node_free(gOutputPortClass);
 | 
			
		||||
   gOutputPortClass = NULL;
 | 
			
		||||
 | 
			
		||||
   lilv_node_free(gPortToggled);
 | 
			
		||||
   gPortToggled = NULL;
 | 
			
		||||
 | 
			
		||||
   lilv_node_free(gPortIsInteger);
 | 
			
		||||
   gPortIsInteger = NULL;
 | 
			
		||||
 | 
			
		||||
   lilv_node_free(gPortIsSampleRate);
 | 
			
		||||
   gPortIsSampleRate = NULL;
 | 
			
		||||
 | 
			
		||||
   lilv_node_free(gPortIsEnumeration);
 | 
			
		||||
   gPortIsEnumeration = NULL;
 | 
			
		||||
 | 
			
		||||
   lilv_node_free(gName);
 | 
			
		||||
   gName = NULL;
 | 
			
		||||
 | 
			
		||||
   lilv_node_free(gPortGroup);
 | 
			
		||||
   gPortGroup = NULL;
 | 
			
		||||
 | 
			
		||||
   lilv_node_free(gSubGroupOf);
 | 
			
		||||
   gSubGroupOf = NULL;
 | 
			
		||||
 | 
			
		||||
   lilv_world_free(gWorld);
 | 
			
		||||
   gWorld = NULL;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 
 | 
			
		||||
@@ -9,24 +9,28 @@
 | 
			
		||||
 | 
			
		||||
*********************************************************************/
 | 
			
		||||
 | 
			
		||||
#include <slv2/slv2.h>
 | 
			
		||||
#include <lilv/lilv.h>
 | 
			
		||||
 | 
			
		||||
extern SLV2World gWorld;
 | 
			
		||||
extern LilvWorld *gWorld;
 | 
			
		||||
 | 
			
		||||
// This is the LV2 Feature array. It is passed to every LV2 plugin on 
 | 
			
		||||
// instantiation. So far it only contains the URI Map Feature, which is
 | 
			
		||||
// needed to load synths.
 | 
			
		||||
extern LV2_Feature*const gLV2Features[];
 | 
			
		||||
extern LV2_Feature * const gLV2Features[];
 | 
			
		||||
 | 
			
		||||
// These are needed for comparisons
 | 
			
		||||
extern SLV2Value gAudioPortClass;
 | 
			
		||||
extern SLV2Value gControlPortClass;
 | 
			
		||||
extern SLV2Value gMidiPortClass;
 | 
			
		||||
extern SLV2Value gInputPortClass;
 | 
			
		||||
extern SLV2Value gOutputPortClass;
 | 
			
		||||
extern SLV2Value gPortToggled;
 | 
			
		||||
extern SLV2Value gPortIsInteger;
 | 
			
		||||
extern SLV2Value gPortIsSampleRate;
 | 
			
		||||
extern LilvNode *gAudioPortClass;
 | 
			
		||||
extern LilvNode *gControlPortClass;
 | 
			
		||||
extern LilvNode *gMidiPortClass;
 | 
			
		||||
extern LilvNode *gInputPortClass;
 | 
			
		||||
extern LilvNode *gOutputPortClass;
 | 
			
		||||
extern LilvNode *gPortToggled;
 | 
			
		||||
extern LilvNode *gPortIsInteger;
 | 
			
		||||
extern LilvNode *gPortIsSampleRate;
 | 
			
		||||
extern LilvNode *gPortIsEnumeration;
 | 
			
		||||
extern LilvNode *gName;
 | 
			
		||||
extern LilvNode *gPortGroup;
 | 
			
		||||
extern LilvNode *gSubGroupOf;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void LoadLV2Plugins();
 | 
			
		||||
 
 | 
			
		||||
@@ -21,7 +21,7 @@
 | 
			
		||||
#define LV2_EVENT_HELPERS_H
 | 
			
		||||
 | 
			
		||||
#include <assert.h>
 | 
			
		||||
#include <stdbool.h>
 | 
			
		||||
//#include <stdbool.h>
 | 
			
		||||
#include <stdint.h>
 | 
			
		||||
#include <string.h>
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -47,7 +47,7 @@
 | 
			
		||||
			<Tool
 | 
			
		||||
				Name="VCCLCompilerTool"
 | 
			
		||||
				Optimization="2"
 | 
			
		||||
				AdditionalIncludeDirectories=""$(WXWIN)\lib\vc_dll\mswu";"$(WXWIN)\include";..\..;..\..\..\src\include\win32;..\..\..\src\include;"..\..\..\lib-src\FileDialog";"..\..\..\lib-src\expat";"..\..\..\lib-src\ffmpeg\win32";"..\..\..\lib-src\ffmpeg";"..\..\..\lib-src\lib-widget-extra";"..\..\..\lib-src\libflac\include";"..\..\..\lib-src\libid3tag";"..\..\..\lib-src\liblrdf";"..\..\..\lib-src\libmad";"..\..\..\lib-src\libnyquist";"..\..\..\lib-src\libogg\include";"..\..\..\lib-src\libresample\include";"..\..\..\lib-src\libsamplerate\src";"..\..\..\lib-src\libscorealign";..\libsndfile;"..\..\..\lib-src\libsoxr\src";"..\..\..\lib-src\libvamp";"..\..\..\lib-src\libvorbis\include";"..\..\..\lib-src\portaudio-v19\include";"..\..\..\lib-src\portmixer\include";"..\..\..\lib-src\portsmf";"..\..\..\lib-src\redland\raptor\src";"..\..\..\lib-src\slv2";"..\..\..\lib-src\sbsms\include";"..\..\..\lib-src\soundtouch\include";"..\..\..\lib-src\twolame\libtwolame";"..\..\..\lib-src\portmidi\pm_common";"..\..\..\lib-src\portmidi\pm_win";"..\..\..\lib-src\portmidi\porttime""
 | 
			
		||||
				AdditionalIncludeDirectories=""$(WXWIN)\lib\vc_dll\mswu";"$(WXWIN)\include";..\..;..\..\..\src\include\win32;..\..\..\src\include;"..\..\..\lib-src\FileDialog";"..\..\..\lib-src\expat";"..\..\..\lib-src\ffmpeg\win32";"..\..\..\lib-src\ffmpeg";"..\..\..\lib-src\lib-widget-extra";"..\..\..\lib-src\libflac\include";"..\..\..\lib-src\libid3tag";"..\..\..\lib-src\libmad";"..\..\..\lib-src\libnyquist";"..\..\..\lib-src\libogg\include";"..\..\..\lib-src\libresample\include";"..\..\..\lib-src\libsamplerate\src";"..\..\..\lib-src\libscorealign";..\libsndfile;"..\..\..\lib-src\libsoxr\src";"..\..\..\lib-src\libvamp";"..\..\..\lib-src\libvorbis\include";"..\..\..\lib-src\portaudio-v19\include";"..\..\..\lib-src\portmixer\include";"..\..\..\lib-src\portsmf";"..\..\..\lib-src\sbsms\include";"..\..\..\lib-src\soundtouch\include";"..\..\..\lib-src\twolame\libtwolame";"..\..\..\lib-src\portmidi\pm_common";"..\..\..\lib-src\portmidi\pm_win";"..\..\..\lib-src\portmidi\porttime";"..\..\..\lib-src\lv2\lilv";"..\..\..\lib-src\lv2\lv2""
 | 
			
		||||
				PreprocessorDefinitions="BUILDING_AUDACITY;FLAC__NO_DLL;__STDC_CONSTANT_MACROS;WXUSINGDLL;__WXMSW__;NDEBUG;WIN32;STRICT"
 | 
			
		||||
				StringPooling="true"
 | 
			
		||||
				RuntimeLibrary="2"
 | 
			
		||||
@@ -133,7 +133,7 @@
 | 
			
		||||
			<Tool
 | 
			
		||||
				Name="VCCLCompilerTool"
 | 
			
		||||
				Optimization="0"
 | 
			
		||||
				AdditionalIncludeDirectories=""$(WXWIN)\lib\vc_dll\mswud";"$(WXWIN)\include";..\..;..\..\..\src\include\win32;..\..\..\src\include;"..\..\..\lib-src\FileDialog";"..\..\..\lib-src\expat";"..\..\..\lib-src\lib-widget-extra";"..\..\..\lib-src\libflac\include";"..\..\..\lib-src\libid3tag";"..\..\..\lib-src\liblrdf";"..\..\..\lib-src\libmad";"..\..\..\lib-src\libnyquist";"..\..\..\lib-src\libogg\include";"..\..\..\lib-src\libresample\include";"..\..\..\lib-src\libsamplerate\src";"..\..\..\lib-src\libscorealign";..\libsndfile;"..\..\..\lib-src\libsoxr\src";"..\..\..\lib-src\libvamp";"..\..\..\lib-src\libvorbis\include";"..\..\..\lib-src\portaudio-v19\include";"..\..\..\lib-src\portmixer\include";"..\..\..\lib-src\portsmf";"..\..\..\lib-src\redland\raptor\src";"..\..\..\lib-src\slv2";"..\..\..\lib-src\sbsms\include";"..\..\..\lib-src\soundtouch\include";"..\..\..\lib-src\twolame\libtwolame";"..\..\..\lib-src\portmidi\pm_common";"..\..\..\lib-src\portmidi\pm_win";"..\..\..\lib-src\portmidi\porttime";"..\..\..\lib-src\ffmpeg\win32";"..\..\..\lib-src\ffmpeg""
 | 
			
		||||
				AdditionalIncludeDirectories=""$(WXWIN)\lib\vc_dll\mswud";"$(WXWIN)\include";..\..;..\..\..\src\include\win32;..\..\..\src\include;"..\..\..\lib-src\FileDialog";"..\..\..\lib-src\expat";"..\..\..\lib-src\lib-widget-extra";"..\..\..\lib-src\libflac\include";"..\..\..\lib-src\libid3tag";"..\..\..\lib-src\libmad";"..\..\..\lib-src\libnyquist";"..\..\..\lib-src\libogg\include";"..\..\..\lib-src\libresample\include";"..\..\..\lib-src\libsamplerate\src";"..\..\..\lib-src\libscorealign";..\libsndfile;"..\..\..\lib-src\libsoxr\src";"..\..\..\lib-src\libvamp";"..\..\..\lib-src\libvorbis\include";"..\..\..\lib-src\portaudio-v19\include";"..\..\..\lib-src\portmixer\include";"..\..\..\lib-src\portsmf";"..\..\..\lib-src\sbsms\include";"..\..\..\lib-src\soundtouch\include";"..\..\..\lib-src\twolame\libtwolame";"..\..\..\lib-src\portmidi\pm_common";"..\..\..\lib-src\portmidi\pm_win";"..\..\..\lib-src\portmidi\porttime";"..\..\..\lib-src\ffmpeg\win32";"..\..\..\lib-src\ffmpeg";"..\..\..\lib-src\lv2\lilv";"..\..\..\lib-src\lv2\lv2""
 | 
			
		||||
				PreprocessorDefinitions="BUILDING_AUDACITY;FLAC__NO_DLL;__STDC_CONSTANT_MACROS;WXUSINGDLL;__WXMSW__;__WXDEBUG__;_DEBUG;WIN32;STRICT"
 | 
			
		||||
				StringPooling="true"
 | 
			
		||||
				BasicRuntimeChecks="3"
 | 
			
		||||
@@ -224,7 +224,7 @@
 | 
			
		||||
			<Tool
 | 
			
		||||
				Name="VCCLCompilerTool"
 | 
			
		||||
				Optimization="0"
 | 
			
		||||
				AdditionalIncludeDirectories=""$(WXWIN)\lib\vc_dll\mswd";"$(WXWIN)\include";..\..;..\..\..\src\include\win32;..\..\..\src\include;"..\..\..\lib-src\FileDialog";"..\..\..\lib-src\expat";"..\..\..\lib-src\ffmpeg\win32";"..\..\..\lib-src\ffmpeg";"..\..\..\lib-src\lib-widget-extra";"..\..\..\lib-src\libflac\include";"..\..\..\lib-src\libid3tag";"..\..\..\lib-src\liblrdf";"..\..\..\lib-src\libmad";"..\..\..\lib-src\libnyquist";"..\..\..\lib-src\libogg\include";"..\..\..\lib-src\libresample\include";"..\..\..\lib-src\libsamplerate\src";"..\..\..\lib-src\libscorealign";..\\libsndfile;"..\..\..\lib-src\libvamp";"..\..\..\lib-src\libvorbis\include";"..\..\..\lib-src\portaudio-v19\include";"..\..\..\lib-src\portmixer\include";"..\..\..\lib-src\portsmf";"..\..\..\lib-src\redland\raptor\src";"..\..\..\lib-src\slv2";"..\..\..\lib-src\sbsms\include";"..\..\..\lib-src\soundtouch\include";"..\..\..\lib-src\twolame\libtwolame";"..\..\..\lib-src\portmidi\pm_common";"..\..\..\lib-src\portmidi\pm_win";"..\..\..\lib-src\portmidi\porttime";"..\..\..\lib-src\portmidi\pm_common";"..\..\..\lib-src\portmidi\pm_win";"..\..\..\lib-src\portmidi\porttime""
 | 
			
		||||
				AdditionalIncludeDirectories=""$(WXWIN)\lib\vc_dll\mswd";"$(WXWIN)\include";..\..;..\..\..\src\include\win32;..\..\..\src\include;"..\..\..\lib-src\FileDialog";"..\..\..\lib-src\expat";"..\..\..\lib-src\ffmpeg\win32";"..\..\..\lib-src\ffmpeg";"..\..\..\lib-src\lib-widget-extra";"..\..\..\lib-src\libflac\include";"..\..\..\lib-src\libid3tag";"..\..\..\lib-src\libmad";"..\..\..\lib-src\libnyquist";"..\..\..\lib-src\libogg\include";"..\..\..\lib-src\libresample\include";"..\..\..\lib-src\libsamplerate\src";"..\..\..\lib-src\libscorealign";..\\libsndfile;"..\..\..\lib-src\libvamp";"..\..\..\lib-src\libvorbis\include";"..\..\..\lib-src\portaudio-v19\include";"..\..\..\lib-src\portmixer\include";"..\..\..\lib-src\portsmf";"..\..\..\lib-src\sbsms\include";"..\..\..\lib-src\soundtouch\include";"..\..\..\lib-src\twolame\libtwolame";"..\..\..\lib-src\portmidi\pm_common";"..\..\..\lib-src\portmidi\pm_win";"..\..\..\lib-src\portmidi\porttime";"..\..\..\lib-src\lv2\lilv";"..\..\..\lib-src\lv2\lv2""
 | 
			
		||||
				PreprocessorDefinitions="BUILDING_AUDACITY;FLAC__NO_DLL;__STDC_CONSTANT_MACROS;WXUSINGDLL;__WXMSW__;__WXDEBUG__;_DEBUG;WIN32;STRICT"
 | 
			
		||||
				StringPooling="true"
 | 
			
		||||
				BasicRuntimeChecks="3"
 | 
			
		||||
@@ -315,7 +315,7 @@
 | 
			
		||||
			<Tool
 | 
			
		||||
				Name="VCCLCompilerTool"
 | 
			
		||||
				Optimization="2"
 | 
			
		||||
				AdditionalIncludeDirectories=""$(WXWIN)\lib\vc_dll\msw";"$(WXWIN)\include";..\..;..\..\..\src\include\win32;..\..\..\src\include;"..\..\..\lib-src\FileDialog";"..\..\..\lib-src\expat";"..\..\..\lib-src\ffmpeg\win32";"..\..\..\lib-src\ffmpeg";"..\..\..\lib-src\lib-widget-extra";"..\..\..\lib-src\libflac\include";"..\..\..\lib-src\libid3tag";"..\..\..\lib-src\liblrdf";"..\..\..\lib-src\libmad";"..\..\..\lib-src\libnyquist";"..\..\..\lib-src\libogg\include";"..\..\..\lib-src\libresample\include";"..\..\..\lib-src\libsamplerate\src";"..\..\..\lib-src\libscorealign";..\libsndfile;"..\..\..\lib-src\libvamp";"..\..\..\lib-src\libvorbis\include";"..\..\..\lib-src\portaudio-v19\include";"..\..\..\lib-src\portmixer\include";"..\..\..\lib-src\portsmf";"..\..\..\lib-src\redland\raptor\src";"..\..\..\lib-src\slv2";"..\..\..\lib-src\sbsms\include";"..\..\..\lib-src\soundtouch\include";"..\..\..\lib-src\twolame\libtwolame";"..\..\..\lib-src\portmidi\pm_common";"..\..\..\lib-src\portmidi\pm_win";"..\..\..\lib-src\portmidi\porttime""
 | 
			
		||||
				AdditionalIncludeDirectories=""$(WXWIN)\lib\vc_dll\msw";"$(WXWIN)\include";..\..;..\..\..\src\include\win32;..\..\..\src\include;"..\..\..\lib-src\FileDialog";"..\..\..\lib-src\expat";"..\..\..\lib-src\ffmpeg\win32";"..\..\..\lib-src\ffmpeg";"..\..\..\lib-src\lib-widget-extra";"..\..\..\lib-src\libflac\include";"..\..\..\lib-src\libid3tag";"..\..\..\lib-src\libmad";"..\..\..\lib-src\libnyquist";"..\..\..\lib-src\libogg\include";"..\..\..\lib-src\libresample\include";"..\..\..\lib-src\libsamplerate\src";"..\..\..\lib-src\libscorealign";..\libsndfile;"..\..\..\lib-src\libvamp";"..\..\..\lib-src\libvorbis\include";"..\..\..\lib-src\portaudio-v19\include";"..\..\..\lib-src\portmixer\include";"..\..\..\lib-src\portsmf";"..\..\..\lib-src\sbsms\include";"..\..\..\lib-src\soundtouch\include";"..\..\..\lib-src\twolame\libtwolame";"..\..\..\lib-src\portmidi\pm_common";"..\..\..\lib-src\portmidi\pm_win";"..\..\..\lib-src\portmidi\porttime";"..\..\..\lib-src\lv2\lilv";"..\..\..\lib-src\lv2\lv2""
 | 
			
		||||
				PreprocessorDefinitions="BUILDING_AUDACITY;FLAC__NO_DLL;__STDC_CONSTANT_MACROS;WXUSINGDLL;__WXMSW__;NDEBUG;WIN32;STRICT"
 | 
			
		||||
				StringPooling="true"
 | 
			
		||||
				RuntimeLibrary="2"
 | 
			
		||||
@@ -3272,6 +3272,34 @@
 | 
			
		||||
				</File>
 | 
			
		||||
			</Filter>
 | 
			
		||||
		</Filter>
 | 
			
		||||
		<Filter
 | 
			
		||||
			Name="src/effects/lv2"
 | 
			
		||||
			>
 | 
			
		||||
			<File
 | 
			
		||||
				RelativePath="..\..\..\src\effects\lv2\LoadLV2.cpp"
 | 
			
		||||
				>
 | 
			
		||||
			</File>
 | 
			
		||||
			<File
 | 
			
		||||
				RelativePath="..\..\..\src\effects\lv2\LoadLV2.h"
 | 
			
		||||
				>
 | 
			
		||||
			</File>
 | 
			
		||||
			<File
 | 
			
		||||
				RelativePath="..\..\..\src\effects\lv2\LV2Effect.cpp"
 | 
			
		||||
				>
 | 
			
		||||
			</File>
 | 
			
		||||
			<File
 | 
			
		||||
				RelativePath="..\..\..\src\effects\lv2\LV2Effect.h"
 | 
			
		||||
				>
 | 
			
		||||
			</File>
 | 
			
		||||
			<File
 | 
			
		||||
				RelativePath="..\..\..\src\effects\lv2\LV2PortGroup.cpp"
 | 
			
		||||
				>
 | 
			
		||||
			</File>
 | 
			
		||||
			<File
 | 
			
		||||
				RelativePath="..\..\..\src\effects\lv2\LV2PortGroup.h"
 | 
			
		||||
				>
 | 
			
		||||
			</File>
 | 
			
		||||
		</Filter>
 | 
			
		||||
		<File
 | 
			
		||||
			RelativePath="..\..\ny.rules"
 | 
			
		||||
			>
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										113
									
								
								win/audacity.sln
									
									
									
									
									
								
							
							
						
						
									
										113
									
								
								win/audacity.sln
									
									
									
									
									
								
							@@ -7,6 +7,7 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Audacity", "Projects\Audaci
 | 
			
		||||
		{6C7DC635-26FB-419A-B69A-7ECBBB068245} = {6C7DC635-26FB-419A-B69A-7ECBBB068245}
 | 
			
		||||
		{C0FE933B-4AF7-4ACD-95E8-ACD3A73F1400} = {C0FE933B-4AF7-4ACD-95E8-ACD3A73F1400}
 | 
			
		||||
		{B28C9F3F-FF0E-4FEC-844C-685390B8AC06} = {B28C9F3F-FF0E-4FEC-844C-685390B8AC06}
 | 
			
		||||
		{0FEC8848-E24E-4FA5-9ACD-E4582DC4CBBE} = {0FEC8848-E24E-4FA5-9ACD-E4582DC4CBBE}
 | 
			
		||||
		{AF9AD75C-4785-4432-BAC3-ADAB1E7F1192} = {AF9AD75C-4785-4432-BAC3-ADAB1E7F1192}
 | 
			
		||||
		{A64FFB5D-0CF0-43EE-9DE3-C72260864BFF} = {A64FFB5D-0CF0-43EE-9DE3-C72260864BFF}
 | 
			
		||||
		{5284D863-3813-479F-BBF0-AC234E216BC6} = {5284D863-3813-479F-BBF0-AC234E216BC6}
 | 
			
		||||
@@ -73,104 +74,216 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "help", "Projects\help\help.
 | 
			
		||||
EndProject
 | 
			
		||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libsoxr", "Projects\libsoxr\libsoxr.vcproj", "{AF9AD75C-4785-4432-BAC3-ADAB1E7F1192}"
 | 
			
		||||
EndProject
 | 
			
		||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lv2", "Projects\lv2\lv2.vcproj", "{0FEC8848-E24E-4FA5-9ACD-E4582DC4CBBE}"
 | 
			
		||||
EndProject
 | 
			
		||||
Global
 | 
			
		||||
	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 | 
			
		||||
		Debug|Win32 = Debug|Win32
 | 
			
		||||
		Release|Win32 = Release|Win32
 | 
			
		||||
		Unicode Debug|Win32 = Unicode Debug|Win32
 | 
			
		||||
		Unicode Release|Win32 = Unicode Release|Win32
 | 
			
		||||
	EndGlobalSection
 | 
			
		||||
	GlobalSection(ProjectConfigurationPlatforms) = postSolution
 | 
			
		||||
		{1D64095C-F936-4FCF-B609-56E9DDF941FA}.Debug|Win32.ActiveCfg = Debug|Win32
 | 
			
		||||
		{1D64095C-F936-4FCF-B609-56E9DDF941FA}.Debug|Win32.Build.0 = Debug|Win32
 | 
			
		||||
		{1D64095C-F936-4FCF-B609-56E9DDF941FA}.Release|Win32.ActiveCfg = Release|Win32
 | 
			
		||||
		{1D64095C-F936-4FCF-B609-56E9DDF941FA}.Release|Win32.Build.0 = Release|Win32
 | 
			
		||||
		{1D64095C-F936-4FCF-B609-56E9DDF941FA}.Unicode Debug|Win32.ActiveCfg = Unicode Debug|Win32
 | 
			
		||||
		{1D64095C-F936-4FCF-B609-56E9DDF941FA}.Unicode Debug|Win32.Build.0 = Unicode Debug|Win32
 | 
			
		||||
		{1D64095C-F936-4FCF-B609-56E9DDF941FA}.Unicode Release|Win32.ActiveCfg = Unicode Release|Win32
 | 
			
		||||
		{1D64095C-F936-4FCF-B609-56E9DDF941FA}.Unicode Release|Win32.Build.0 = Unicode Release|Win32
 | 
			
		||||
		{EC3F5835-C486-4970-8A6B-A0700F4B3637}.Debug|Win32.ActiveCfg = Debug|Win32
 | 
			
		||||
		{EC3F5835-C486-4970-8A6B-A0700F4B3637}.Debug|Win32.Build.0 = Debug|Win32
 | 
			
		||||
		{EC3F5835-C486-4970-8A6B-A0700F4B3637}.Release|Win32.ActiveCfg = Release|Win32
 | 
			
		||||
		{EC3F5835-C486-4970-8A6B-A0700F4B3637}.Release|Win32.Build.0 = Release|Win32
 | 
			
		||||
		{EC3F5835-C486-4970-8A6B-A0700F4B3637}.Unicode Debug|Win32.ActiveCfg = Unicode Debug|Win32
 | 
			
		||||
		{EC3F5835-C486-4970-8A6B-A0700F4B3637}.Unicode Debug|Win32.Build.0 = Unicode Debug|Win32
 | 
			
		||||
		{EC3F5835-C486-4970-8A6B-A0700F4B3637}.Unicode Release|Win32.ActiveCfg = Unicode Release|Win32
 | 
			
		||||
		{EC3F5835-C486-4970-8A6B-A0700F4B3637}.Unicode Release|Win32.Build.0 = Unicode Release|Win32
 | 
			
		||||
		{38C2C6B1-FBF8-4C5C-BB90-63F996083F56}.Debug|Win32.ActiveCfg = Debug|Win32
 | 
			
		||||
		{38C2C6B1-FBF8-4C5C-BB90-63F996083F56}.Debug|Win32.Build.0 = Debug|Win32
 | 
			
		||||
		{38C2C6B1-FBF8-4C5C-BB90-63F996083F56}.Release|Win32.ActiveCfg = Release|Win32
 | 
			
		||||
		{38C2C6B1-FBF8-4C5C-BB90-63F996083F56}.Release|Win32.Build.0 = Release|Win32
 | 
			
		||||
		{38C2C6B1-FBF8-4C5C-BB90-63F996083F56}.Unicode Debug|Win32.ActiveCfg = Unicode Debug|Win32
 | 
			
		||||
		{38C2C6B1-FBF8-4C5C-BB90-63F996083F56}.Unicode Release|Win32.ActiveCfg = Unicode Release|Win32
 | 
			
		||||
		{6C7DC635-26FB-419A-B69A-7ECBBB068245}.Debug|Win32.ActiveCfg = Debug|Win32
 | 
			
		||||
		{6C7DC635-26FB-419A-B69A-7ECBBB068245}.Debug|Win32.Build.0 = Debug|Win32
 | 
			
		||||
		{6C7DC635-26FB-419A-B69A-7ECBBB068245}.Release|Win32.ActiveCfg = Release|Win32
 | 
			
		||||
		{6C7DC635-26FB-419A-B69A-7ECBBB068245}.Release|Win32.Build.0 = Release|Win32
 | 
			
		||||
		{6C7DC635-26FB-419A-B69A-7ECBBB068245}.Unicode Debug|Win32.ActiveCfg = Unicode Debug|Win32
 | 
			
		||||
		{6C7DC635-26FB-419A-B69A-7ECBBB068245}.Unicode Debug|Win32.Build.0 = Unicode Debug|Win32
 | 
			
		||||
		{6C7DC635-26FB-419A-B69A-7ECBBB068245}.Unicode Release|Win32.ActiveCfg = Unicode Release|Win32
 | 
			
		||||
		{6C7DC635-26FB-419A-B69A-7ECBBB068245}.Unicode Release|Win32.Build.0 = Unicode Release|Win32
 | 
			
		||||
		{B28C9F3F-FF0E-4FEC-844C-685390B8AC06}.Debug|Win32.ActiveCfg = Debug|Win32
 | 
			
		||||
		{B28C9F3F-FF0E-4FEC-844C-685390B8AC06}.Debug|Win32.Build.0 = Debug|Win32
 | 
			
		||||
		{B28C9F3F-FF0E-4FEC-844C-685390B8AC06}.Release|Win32.ActiveCfg = Release|Win32
 | 
			
		||||
		{B28C9F3F-FF0E-4FEC-844C-685390B8AC06}.Release|Win32.Build.0 = Release|Win32
 | 
			
		||||
		{B28C9F3F-FF0E-4FEC-844C-685390B8AC06}.Unicode Debug|Win32.ActiveCfg = Unicode Debug|Win32
 | 
			
		||||
		{B28C9F3F-FF0E-4FEC-844C-685390B8AC06}.Unicode Debug|Win32.Build.0 = Unicode Debug|Win32
 | 
			
		||||
		{B28C9F3F-FF0E-4FEC-844C-685390B8AC06}.Unicode Release|Win32.ActiveCfg = Unicode Release|Win32
 | 
			
		||||
		{B28C9F3F-FF0E-4FEC-844C-685390B8AC06}.Unicode Release|Win32.Build.0 = Unicode Release|Win32
 | 
			
		||||
		{D96C7BE1-E3F1-4767-BBBB-320E082CE425}.Debug|Win32.ActiveCfg = Debug|Win32
 | 
			
		||||
		{D96C7BE1-E3F1-4767-BBBB-320E082CE425}.Debug|Win32.Build.0 = Debug|Win32
 | 
			
		||||
		{D96C7BE1-E3F1-4767-BBBB-320E082CE425}.Release|Win32.ActiveCfg = Release|Win32
 | 
			
		||||
		{D96C7BE1-E3F1-4767-BBBB-320E082CE425}.Release|Win32.Build.0 = Release|Win32
 | 
			
		||||
		{D96C7BE1-E3F1-4767-BBBB-320E082CE425}.Unicode Debug|Win32.ActiveCfg = Unicode Debug|Win32
 | 
			
		||||
		{D96C7BE1-E3F1-4767-BBBB-320E082CE425}.Unicode Debug|Win32.Build.0 = Unicode Debug|Win32
 | 
			
		||||
		{D96C7BE1-E3F1-4767-BBBB-320E082CE425}.Unicode Release|Win32.ActiveCfg = Unicode Release|Win32
 | 
			
		||||
		{D96C7BE1-E3F1-4767-BBBB-320E082CE425}.Unicode Release|Win32.Build.0 = Unicode Release|Win32
 | 
			
		||||
		{A52BBEA5-8B02-4147-8734-5D9BBF4D1177}.Debug|Win32.ActiveCfg = Debug|Win32
 | 
			
		||||
		{A52BBEA5-8B02-4147-8734-5D9BBF4D1177}.Debug|Win32.Build.0 = Debug|Win32
 | 
			
		||||
		{A52BBEA5-8B02-4147-8734-5D9BBF4D1177}.Release|Win32.ActiveCfg = Release|Win32
 | 
			
		||||
		{A52BBEA5-8B02-4147-8734-5D9BBF4D1177}.Release|Win32.Build.0 = Release|Win32
 | 
			
		||||
		{A52BBEA5-8B02-4147-8734-5D9BBF4D1177}.Unicode Debug|Win32.ActiveCfg = Unicode Debug|Win32
 | 
			
		||||
		{A52BBEA5-8B02-4147-8734-5D9BBF4D1177}.Unicode Debug|Win32.Build.0 = Unicode Debug|Win32
 | 
			
		||||
		{A52BBEA5-8B02-4147-8734-5D9BBF4D1177}.Unicode Release|Win32.ActiveCfg = Unicode Release|Win32
 | 
			
		||||
		{A52BBEA5-8B02-4147-8734-5D9BBF4D1177}.Unicode Release|Win32.Build.0 = Unicode Release|Win32
 | 
			
		||||
		{7AA41BED-41B0-427A-9148-DEA40549D158}.Debug|Win32.ActiveCfg = Debug|Win32
 | 
			
		||||
		{7AA41BED-41B0-427A-9148-DEA40549D158}.Debug|Win32.Build.0 = Debug|Win32
 | 
			
		||||
		{7AA41BED-41B0-427A-9148-DEA40549D158}.Release|Win32.ActiveCfg = Release|Win32
 | 
			
		||||
		{7AA41BED-41B0-427A-9148-DEA40549D158}.Release|Win32.Build.0 = Release|Win32
 | 
			
		||||
		{7AA41BED-41B0-427A-9148-DEA40549D158}.Unicode Debug|Win32.ActiveCfg = Unicode Debug|Win32
 | 
			
		||||
		{7AA41BED-41B0-427A-9148-DEA40549D158}.Unicode Debug|Win32.Build.0 = Unicode Debug|Win32
 | 
			
		||||
		{7AA41BED-41B0-427A-9148-DEA40549D158}.Unicode Release|Win32.ActiveCfg = Unicode Release|Win32
 | 
			
		||||
		{7AA41BED-41B0-427A-9148-DEA40549D158}.Unicode Release|Win32.Build.0 = Unicode Release|Win32
 | 
			
		||||
		{F00717F2-67C8-44E1-AF00-541DFA9CB7F2}.Debug|Win32.ActiveCfg = Debug|Win32
 | 
			
		||||
		{F00717F2-67C8-44E1-AF00-541DFA9CB7F2}.Debug|Win32.Build.0 = Debug|Win32
 | 
			
		||||
		{F00717F2-67C8-44E1-AF00-541DFA9CB7F2}.Release|Win32.ActiveCfg = Release|Win32
 | 
			
		||||
		{F00717F2-67C8-44E1-AF00-541DFA9CB7F2}.Release|Win32.Build.0 = Release|Win32
 | 
			
		||||
		{F00717F2-67C8-44E1-AF00-541DFA9CB7F2}.Unicode Debug|Win32.ActiveCfg = Unicode Debug|Win32
 | 
			
		||||
		{F00717F2-67C8-44E1-AF00-541DFA9CB7F2}.Unicode Debug|Win32.Build.0 = Unicode Debug|Win32
 | 
			
		||||
		{F00717F2-67C8-44E1-AF00-541DFA9CB7F2}.Unicode Release|Win32.ActiveCfg = Unicode Release|Win32
 | 
			
		||||
		{F00717F2-67C8-44E1-AF00-541DFA9CB7F2}.Unicode Release|Win32.Build.0 = Unicode Release|Win32
 | 
			
		||||
		{3DDDCAA9-276D-4FC3-A15C-485F7B9B24CC}.Debug|Win32.ActiveCfg = Debug|Win32
 | 
			
		||||
		{3DDDCAA9-276D-4FC3-A15C-485F7B9B24CC}.Debug|Win32.Build.0 = Debug|Win32
 | 
			
		||||
		{3DDDCAA9-276D-4FC3-A15C-485F7B9B24CC}.Release|Win32.ActiveCfg = Release|Win32
 | 
			
		||||
		{3DDDCAA9-276D-4FC3-A15C-485F7B9B24CC}.Release|Win32.Build.0 = Release|Win32
 | 
			
		||||
		{3DDDCAA9-276D-4FC3-A15C-485F7B9B24CC}.Unicode Debug|Win32.ActiveCfg = Unicode Debug|Win32
 | 
			
		||||
		{3DDDCAA9-276D-4FC3-A15C-485F7B9B24CC}.Unicode Release|Win32.ActiveCfg = Unicode Release|Win32
 | 
			
		||||
		{F4B4A272-4ED3-4951-A6EE-B7BAAC1C4952}.Debug|Win32.ActiveCfg = Debug|Win32
 | 
			
		||||
		{F4B4A272-4ED3-4951-A6EE-B7BAAC1C4952}.Debug|Win32.Build.0 = Debug|Win32
 | 
			
		||||
		{F4B4A272-4ED3-4951-A6EE-B7BAAC1C4952}.Release|Win32.ActiveCfg = Release|Win32
 | 
			
		||||
		{F4B4A272-4ED3-4951-A6EE-B7BAAC1C4952}.Release|Win32.Build.0 = Release|Win32
 | 
			
		||||
		{F4B4A272-4ED3-4951-A6EE-B7BAAC1C4952}.Unicode Debug|Win32.ActiveCfg = Unicode Debug|Win32
 | 
			
		||||
		{F4B4A272-4ED3-4951-A6EE-B7BAAC1C4952}.Unicode Debug|Win32.Build.0 = Unicode Debug|Win32
 | 
			
		||||
		{F4B4A272-4ED3-4951-A6EE-B7BAAC1C4952}.Unicode Release|Win32.ActiveCfg = Unicode Release|Win32
 | 
			
		||||
		{F4B4A272-4ED3-4951-A6EE-B7BAAC1C4952}.Unicode Release|Win32.Build.0 = Unicode Release|Win32
 | 
			
		||||
		{A939AAF8-44F1-4CE7-9DD0-7A6E99814857}.Debug|Win32.ActiveCfg = Debug|Win32
 | 
			
		||||
		{A939AAF8-44F1-4CE7-9DD0-7A6E99814857}.Debug|Win32.Build.0 = Debug|Win32
 | 
			
		||||
		{A939AAF8-44F1-4CE7-9DD0-7A6E99814857}.Release|Win32.ActiveCfg = Release|Win32
 | 
			
		||||
		{A939AAF8-44F1-4CE7-9DD0-7A6E99814857}.Release|Win32.Build.0 = Release|Win32
 | 
			
		||||
		{A939AAF8-44F1-4CE7-9DD0-7A6E99814857}.Unicode Debug|Win32.ActiveCfg = Unicode Debug|Win32
 | 
			
		||||
		{A939AAF8-44F1-4CE7-9DD0-7A6E99814857}.Unicode Debug|Win32.Build.0 = Unicode Debug|Win32
 | 
			
		||||
		{A939AAF8-44F1-4CE7-9DD0-7A6E99814857}.Unicode Release|Win32.ActiveCfg = Unicode Release|Win32
 | 
			
		||||
		{A939AAF8-44F1-4CE7-9DD0-7A6E99814857}.Unicode Release|Win32.Build.0 = Unicode Release|Win32
 | 
			
		||||
		{3A76129B-55AB-4D54-BAA7-08F63ED52569}.Debug|Win32.ActiveCfg = Debug|Win32
 | 
			
		||||
		{3A76129B-55AB-4D54-BAA7-08F63ED52569}.Debug|Win32.Build.0 = Debug|Win32
 | 
			
		||||
		{3A76129B-55AB-4D54-BAA7-08F63ED52569}.Release|Win32.ActiveCfg = Release|Win32
 | 
			
		||||
		{3A76129B-55AB-4D54-BAA7-08F63ED52569}.Release|Win32.Build.0 = Release|Win32
 | 
			
		||||
		{3A76129B-55AB-4D54-BAA7-08F63ED52569}.Unicode Debug|Win32.ActiveCfg = Unicode Debug|Win32
 | 
			
		||||
		{3A76129B-55AB-4D54-BAA7-08F63ED52569}.Unicode Debug|Win32.Build.0 = Unicode Debug|Win32
 | 
			
		||||
		{3A76129B-55AB-4D54-BAA7-08F63ED52569}.Unicode Release|Win32.ActiveCfg = Unicode Release|Win32
 | 
			
		||||
		{3A76129B-55AB-4D54-BAA7-08F63ED52569}.Unicode Release|Win32.Build.0 = Unicode Release|Win32
 | 
			
		||||
		{727D6675-67EE-4D0B-9DC1-177A0AF741F0}.Debug|Win32.ActiveCfg = Debug|Win32
 | 
			
		||||
		{727D6675-67EE-4D0B-9DC1-177A0AF741F0}.Debug|Win32.Build.0 = Debug|Win32
 | 
			
		||||
		{727D6675-67EE-4D0B-9DC1-177A0AF741F0}.Release|Win32.ActiveCfg = Release|Win32
 | 
			
		||||
		{727D6675-67EE-4D0B-9DC1-177A0AF741F0}.Release|Win32.Build.0 = Release|Win32
 | 
			
		||||
		{727D6675-67EE-4D0B-9DC1-177A0AF741F0}.Unicode Debug|Win32.ActiveCfg = Unicode Debug|Win32
 | 
			
		||||
		{727D6675-67EE-4D0B-9DC1-177A0AF741F0}.Unicode Debug|Win32.Build.0 = Unicode Debug|Win32
 | 
			
		||||
		{727D6675-67EE-4D0B-9DC1-177A0AF741F0}.Unicode Release|Win32.ActiveCfg = Unicode Release|Win32
 | 
			
		||||
		{727D6675-67EE-4D0B-9DC1-177A0AF741F0}.Unicode Release|Win32.Build.0 = Unicode Release|Win32
 | 
			
		||||
		{7ABA0F80-94AE-4E82-AB89-2E1258212D59}.Debug|Win32.ActiveCfg = Debug|Win32
 | 
			
		||||
		{7ABA0F80-94AE-4E82-AB89-2E1258212D59}.Debug|Win32.Build.0 = Debug|Win32
 | 
			
		||||
		{7ABA0F80-94AE-4E82-AB89-2E1258212D59}.Release|Win32.ActiveCfg = Release|Win32
 | 
			
		||||
		{7ABA0F80-94AE-4E82-AB89-2E1258212D59}.Release|Win32.Build.0 = Release|Win32
 | 
			
		||||
		{7ABA0F80-94AE-4E82-AB89-2E1258212D59}.Unicode Debug|Win32.ActiveCfg = Unicode Debug|Win32
 | 
			
		||||
		{7ABA0F80-94AE-4E82-AB89-2E1258212D59}.Unicode Debug|Win32.Build.0 = Unicode Debug|Win32
 | 
			
		||||
		{7ABA0F80-94AE-4E82-AB89-2E1258212D59}.Unicode Release|Win32.ActiveCfg = Unicode Release|Win32
 | 
			
		||||
		{7ABA0F80-94AE-4E82-AB89-2E1258212D59}.Unicode Release|Win32.Build.0 = Unicode Release|Win32
 | 
			
		||||
		{BE9F28C5-058A-45F5-B2C1-D077BC058AAE}.Debug|Win32.ActiveCfg = Debug|Win32
 | 
			
		||||
		{BE9F28C5-058A-45F5-B2C1-D077BC058AAE}.Debug|Win32.Build.0 = Debug|Win32
 | 
			
		||||
		{BE9F28C5-058A-45F5-B2C1-D077BC058AAE}.Release|Win32.ActiveCfg = Release|Win32
 | 
			
		||||
		{BE9F28C5-058A-45F5-B2C1-D077BC058AAE}.Release|Win32.Build.0 = Release|Win32
 | 
			
		||||
		{BE9F28C5-058A-45F5-B2C1-D077BC058AAE}.Unicode Debug|Win32.ActiveCfg = Unicode Debug|Win32
 | 
			
		||||
		{BE9F28C5-058A-45F5-B2C1-D077BC058AAE}.Unicode Release|Win32.ActiveCfg = Unicode Release|Win32
 | 
			
		||||
		{5284D863-3813-479F-BBF0-AC234E216BC6}.Debug|Win32.ActiveCfg = Debug|Win32
 | 
			
		||||
		{5284D863-3813-479F-BBF0-AC234E216BC6}.Debug|Win32.Build.0 = Debug|Win32
 | 
			
		||||
		{5284D863-3813-479F-BBF0-AC234E216BC6}.Release|Win32.ActiveCfg = Release|Win32
 | 
			
		||||
		{5284D863-3813-479F-BBF0-AC234E216BC6}.Release|Win32.Build.0 = Release|Win32
 | 
			
		||||
		{5284D863-3813-479F-BBF0-AC234E216BC6}.Unicode Debug|Win32.ActiveCfg = Unicode Debug|Win32
 | 
			
		||||
		{5284D863-3813-479F-BBF0-AC234E216BC6}.Unicode Debug|Win32.Build.0 = Unicode Debug|Win32
 | 
			
		||||
		{5284D863-3813-479F-BBF0-AC234E216BC6}.Unicode Release|Win32.ActiveCfg = Unicode Release|Win32
 | 
			
		||||
		{5284D863-3813-479F-BBF0-AC234E216BC6}.Unicode Release|Win32.Build.0 = Unicode Release|Win32
 | 
			
		||||
		{A61E2BF1-21AA-4118-B0D8-FD3D53DB892E}.Debug|Win32.ActiveCfg = Debug|Win32
 | 
			
		||||
		{A61E2BF1-21AA-4118-B0D8-FD3D53DB892E}.Debug|Win32.Build.0 = Debug|Win32
 | 
			
		||||
		{A61E2BF1-21AA-4118-B0D8-FD3D53DB892E}.Release|Win32.ActiveCfg = Release|Win32
 | 
			
		||||
		{A61E2BF1-21AA-4118-B0D8-FD3D53DB892E}.Release|Win32.Build.0 = Release|Win32
 | 
			
		||||
		{A61E2BF1-21AA-4118-B0D8-FD3D53DB892E}.Unicode Debug|Win32.ActiveCfg = Unicode Debug|Win32
 | 
			
		||||
		{A61E2BF1-21AA-4118-B0D8-FD3D53DB892E}.Unicode Debug|Win32.Build.0 = Unicode Debug|Win32
 | 
			
		||||
		{A61E2BF1-21AA-4118-B0D8-FD3D53DB892E}.Unicode Release|Win32.ActiveCfg = Unicode Release|Win32
 | 
			
		||||
		{A61E2BF1-21AA-4118-B0D8-FD3D53DB892E}.Unicode Release|Win32.Build.0 = Unicode Release|Win32
 | 
			
		||||
		{8C69F7B6-684F-48D9-9057-8912CA3DAA8B}.Debug|Win32.ActiveCfg = Debug|Win32
 | 
			
		||||
		{8C69F7B6-684F-48D9-9057-8912CA3DAA8B}.Debug|Win32.Build.0 = Debug|Win32
 | 
			
		||||
		{8C69F7B6-684F-48D9-9057-8912CA3DAA8B}.Release|Win32.ActiveCfg = Release|Win32
 | 
			
		||||
		{8C69F7B6-684F-48D9-9057-8912CA3DAA8B}.Release|Win32.Build.0 = Release|Win32
 | 
			
		||||
		{8C69F7B6-684F-48D9-9057-8912CA3DAA8B}.Unicode Debug|Win32.ActiveCfg = Unicode Debug|Win32
 | 
			
		||||
		{8C69F7B6-684F-48D9-9057-8912CA3DAA8B}.Unicode Debug|Win32.Build.0 = Unicode Debug|Win32
 | 
			
		||||
		{8C69F7B6-684F-48D9-9057-8912CA3DAA8B}.Unicode Release|Win32.ActiveCfg = Unicode Release|Win32
 | 
			
		||||
		{8C69F7B6-684F-48D9-9057-8912CA3DAA8B}.Unicode Release|Win32.Build.0 = Unicode Release|Win32
 | 
			
		||||
		{8A1C2514-85DD-4AE2-9CF3-3183B66C537D}.Debug|Win32.ActiveCfg = Debug|Win32
 | 
			
		||||
		{8A1C2514-85DD-4AE2-9CF3-3183B66C537D}.Debug|Win32.Build.0 = Debug|Win32
 | 
			
		||||
		{8A1C2514-85DD-4AE2-9CF3-3183B66C537D}.Release|Win32.ActiveCfg = Release|Win32
 | 
			
		||||
		{8A1C2514-85DD-4AE2-9CF3-3183B66C537D}.Release|Win32.Build.0 = Release|Win32
 | 
			
		||||
		{8A1C2514-85DD-4AE2-9CF3-3183B66C537D}.Unicode Debug|Win32.ActiveCfg = Unicode Debug|Win32
 | 
			
		||||
		{8A1C2514-85DD-4AE2-9CF3-3183B66C537D}.Unicode Debug|Win32.Build.0 = Unicode Debug|Win32
 | 
			
		||||
		{8A1C2514-85DD-4AE2-9CF3-3183B66C537D}.Unicode Release|Win32.ActiveCfg = Unicode Release|Win32
 | 
			
		||||
		{8A1C2514-85DD-4AE2-9CF3-3183B66C537D}.Unicode Release|Win32.Build.0 = Unicode Release|Win32
 | 
			
		||||
		{A64FFB5D-0CF0-43EE-9DE3-C72260864BFF}.Debug|Win32.ActiveCfg = Debug|Win32
 | 
			
		||||
		{A64FFB5D-0CF0-43EE-9DE3-C72260864BFF}.Debug|Win32.Build.0 = Debug|Win32
 | 
			
		||||
		{A64FFB5D-0CF0-43EE-9DE3-C72260864BFF}.Release|Win32.ActiveCfg = Release|Win32
 | 
			
		||||
		{A64FFB5D-0CF0-43EE-9DE3-C72260864BFF}.Release|Win32.Build.0 = Release|Win32
 | 
			
		||||
		{A64FFB5D-0CF0-43EE-9DE3-C72260864BFF}.Unicode Debug|Win32.ActiveCfg = Unicode Debug|Win32
 | 
			
		||||
		{A64FFB5D-0CF0-43EE-9DE3-C72260864BFF}.Unicode Debug|Win32.Build.0 = Unicode Debug|Win32
 | 
			
		||||
		{A64FFB5D-0CF0-43EE-9DE3-C72260864BFF}.Unicode Release|Win32.ActiveCfg = Unicode Release|Win32
 | 
			
		||||
		{A64FFB5D-0CF0-43EE-9DE3-C72260864BFF}.Unicode Release|Win32.Build.0 = Unicode Release|Win32
 | 
			
		||||
		{C0FE933B-4AF7-4ACD-95E8-ACD3A73F1400}.Debug|Win32.ActiveCfg = Debug|Win32
 | 
			
		||||
		{C0FE933B-4AF7-4ACD-95E8-ACD3A73F1400}.Debug|Win32.Build.0 = Debug|Win32
 | 
			
		||||
		{C0FE933B-4AF7-4ACD-95E8-ACD3A73F1400}.Release|Win32.ActiveCfg = Release|Win32
 | 
			
		||||
		{C0FE933B-4AF7-4ACD-95E8-ACD3A73F1400}.Release|Win32.Build.0 = Release|Win32
 | 
			
		||||
		{C0FE933B-4AF7-4ACD-95E8-ACD3A73F1400}.Unicode Debug|Win32.ActiveCfg = Unicode Debug|Win32
 | 
			
		||||
		{C0FE933B-4AF7-4ACD-95E8-ACD3A73F1400}.Unicode Debug|Win32.Build.0 = Unicode Debug|Win32
 | 
			
		||||
		{C0FE933B-4AF7-4ACD-95E8-ACD3A73F1400}.Unicode Release|Win32.ActiveCfg = Unicode Release|Win32
 | 
			
		||||
		{C0FE933B-4AF7-4ACD-95E8-ACD3A73F1400}.Unicode Release|Win32.Build.0 = Unicode Release|Win32
 | 
			
		||||
		{D5AB2D87-51DC-4277-A9AB-2A6018D0E947}.Debug|Win32.ActiveCfg = Debug|Win32
 | 
			
		||||
		{D5AB2D87-51DC-4277-A9AB-2A6018D0E947}.Debug|Win32.Build.0 = Debug|Win32
 | 
			
		||||
		{D5AB2D87-51DC-4277-A9AB-2A6018D0E947}.Release|Win32.ActiveCfg = Release|Win32
 | 
			
		||||
		{D5AB2D87-51DC-4277-A9AB-2A6018D0E947}.Release|Win32.Build.0 = Release|Win32
 | 
			
		||||
		{D5AB2D87-51DC-4277-A9AB-2A6018D0E947}.Unicode Debug|Win32.ActiveCfg = Unicode Debug|Win32
 | 
			
		||||
		{D5AB2D87-51DC-4277-A9AB-2A6018D0E947}.Unicode Debug|Win32.Build.0 = Unicode Debug|Win32
 | 
			
		||||
		{D5AB2D87-51DC-4277-A9AB-2A6018D0E947}.Unicode Release|Win32.ActiveCfg = Unicode Release|Win32
 | 
			
		||||
		{D5AB2D87-51DC-4277-A9AB-2A6018D0E947}.Unicode Release|Win32.Build.0 = Unicode Release|Win32
 | 
			
		||||
		{02F94A40-586A-4403-8464-13B50801FFEC}.Debug|Win32.ActiveCfg = Debug|Win32
 | 
			
		||||
		{02F94A40-586A-4403-8464-13B50801FFEC}.Debug|Win32.Build.0 = Debug|Win32
 | 
			
		||||
		{02F94A40-586A-4403-8464-13B50801FFEC}.Release|Win32.ActiveCfg = Release|Win32
 | 
			
		||||
		{02F94A40-586A-4403-8464-13B50801FFEC}.Release|Win32.Build.0 = Release|Win32
 | 
			
		||||
		{02F94A40-586A-4403-8464-13B50801FFEC}.Unicode Debug|Win32.ActiveCfg = Unicode Debug|Win32
 | 
			
		||||
		{02F94A40-586A-4403-8464-13B50801FFEC}.Unicode Release|Win32.ActiveCfg = Unicode Release|Win32
 | 
			
		||||
		{AF9AD75C-4785-4432-BAC3-ADAB1E7F1192}.Debug|Win32.ActiveCfg = Unicode Debug|Win32
 | 
			
		||||
		{AF9AD75C-4785-4432-BAC3-ADAB1E7F1192}.Debug|Win32.Build.0 = Unicode Debug|Win32
 | 
			
		||||
		{AF9AD75C-4785-4432-BAC3-ADAB1E7F1192}.Release|Win32.ActiveCfg = Unicode Release|Win32
 | 
			
		||||
		{AF9AD75C-4785-4432-BAC3-ADAB1E7F1192}.Release|Win32.Build.0 = Unicode Release|Win32
 | 
			
		||||
		{AF9AD75C-4785-4432-BAC3-ADAB1E7F1192}.Unicode Debug|Win32.ActiveCfg = Unicode Debug|Win32
 | 
			
		||||
		{AF9AD75C-4785-4432-BAC3-ADAB1E7F1192}.Unicode Debug|Win32.Build.0 = Unicode Debug|Win32
 | 
			
		||||
		{AF9AD75C-4785-4432-BAC3-ADAB1E7F1192}.Unicode Release|Win32.ActiveCfg = Unicode Release|Win32
 | 
			
		||||
		{AF9AD75C-4785-4432-BAC3-ADAB1E7F1192}.Unicode Release|Win32.Build.0 = Unicode Release|Win32
 | 
			
		||||
		{0FEC8848-E24E-4FA5-9ACD-E4582DC4CBBE}.Debug|Win32.ActiveCfg = Debug|Win32
 | 
			
		||||
		{0FEC8848-E24E-4FA5-9ACD-E4582DC4CBBE}.Debug|Win32.Build.0 = Debug|Win32
 | 
			
		||||
		{0FEC8848-E24E-4FA5-9ACD-E4582DC4CBBE}.Release|Win32.ActiveCfg = Release|Win32
 | 
			
		||||
		{0FEC8848-E24E-4FA5-9ACD-E4582DC4CBBE}.Release|Win32.Build.0 = Release|Win32
 | 
			
		||||
		{0FEC8848-E24E-4FA5-9ACD-E4582DC4CBBE}.Unicode Debug|Win32.ActiveCfg = Unicode Debug|Win32
 | 
			
		||||
		{0FEC8848-E24E-4FA5-9ACD-E4582DC4CBBE}.Unicode Debug|Win32.Build.0 = Unicode Debug|Win32
 | 
			
		||||
		{0FEC8848-E24E-4FA5-9ACD-E4582DC4CBBE}.Unicode Release|Win32.ActiveCfg = Unicode Release|Win32
 | 
			
		||||
		{0FEC8848-E24E-4FA5-9ACD-E4582DC4CBBE}.Unicode Release|Win32.Build.0 = Unicode Release|Win32
 | 
			
		||||
	EndGlobalSection
 | 
			
		||||
	GlobalSection(SolutionProperties) = preSolution
 | 
			
		||||
		HideSolutionNode = FALSE
 | 
			
		||||
 
 | 
			
		||||
@@ -19,7 +19,7 @@
 | 
			
		||||
#define USE_LADSPA 1
 | 
			
		||||
#define USE_LIBFLAC 1
 | 
			
		||||
#define USE_LIBID3TAG 1
 | 
			
		||||
// #define USE_LIBLRDF 1
 | 
			
		||||
#define USE_LV2 1
 | 
			
		||||
#define USE_LIBMAD 1
 | 
			
		||||
 | 
			
		||||
// Resamplers:
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user