From 28edc79c87b2465d54ad37021cd2dcaa4e8e208f Mon Sep 17 00:00:00 2001 From: Anthony Truskinger Date: Wed, 20 Jun 2018 14:12:14 +1000 Subject: [PATCH] Adds static binaries for MacOSX Also - Shifts all app.config settings to a central config file - Modified app.config to read from shared settings file - adjusts .gitattributes to better handle binaries in lib - [BREAKING] AbstractAudioUtility now throws if exit code is not 0 - [BREAKING] mp3splt is now an optional dependency --- .gitattributes | 5 +- AudioAnalysis.sln | 1 + docs/installing.md | 12 +- docs/supported_platforms.md | 6 +- lib/audio-utils/README.txt | 15 + lib/audio-utils/ffmpeg/README.txt | 101 - lib/audio-utils/ffmpeg/avcodec-57.dll | 3 - lib/audio-utils/ffmpeg/avdevice-57.dll | 3 - lib/audio-utils/ffmpeg/avfilter-6.dll | 3 - lib/audio-utils/ffmpeg/avformat-57.dll | 3 - lib/audio-utils/ffmpeg/avutil-55.dll | 3 - lib/audio-utils/ffmpeg/ffmpeg.exe | 3 - lib/audio-utils/ffmpeg/ffplay.exe | 3 - lib/audio-utils/ffmpeg/ffprobe.exe | 3 - lib/audio-utils/ffmpeg/postproc-54.dll | 3 - lib/audio-utils/ffmpeg/swresample-2.dll | 3 - lib/audio-utils/ffmpeg/swscale-4.dll | 3 - lib/audio-utils/macosx/README.txt | 3 + lib/audio-utils/macosx/ffmpeg/LICENSE.txt | 3 + lib/audio-utils/macosx/ffmpeg/README.txt | 3 + lib/audio-utils/macosx/ffmpeg/ffmpeg | 3 + lib/audio-utils/macosx/ffmpeg/ffplay | 3 + lib/audio-utils/macosx/ffmpeg/ffprobe | 3 + .../macosx/ffmpeg/libavcodec.58.dylib | 3 + .../macosx/ffmpeg/libavdevice.58.dylib | 3 + .../macosx/ffmpeg/libavfilter.7.dylib | 3 + .../macosx/ffmpeg/libavformat.58.dylib | 3 + .../macosx/ffmpeg/libavutil.56.dylib | 3 + .../macosx/ffmpeg/libpostproc.55.dylib | 3 + .../macosx/ffmpeg/libswresample.3.dylib | 3 + .../macosx/ffmpeg/libswscale.5.dylib | 3 + lib/audio-utils/macosx/sox/ChangeLog | 3 + lib/audio-utils/macosx/sox/LICENSE.GPL.txt | 3 + lib/audio-utils/macosx/sox/README | 3 + lib/audio-utils/macosx/sox/README.osx.txt | 3 + lib/audio-utils/macosx/sox/libsox.txt | 3 + lib/audio-utils/macosx/sox/play | 3 + lib/audio-utils/macosx/sox/rec | 3 + lib/audio-utils/macosx/sox/sox | 3 + lib/audio-utils/macosx/sox/sox.txt | 3 + lib/audio-utils/macosx/sox/soxformat.txt | 3 + lib/audio-utils/macosx/sox/soxi | 3 + lib/audio-utils/macosx/sox/soxi.txt | 3 + lib/audio-utils/macosx/wavpack/changelog.txt | 3 + lib/audio-utils/macosx/wavpack/license.txt | 3 + lib/audio-utils/macosx/wavpack/wavpack | 3 + .../macosx/wavpack/wavpack_doc.html | 3 + lib/audio-utils/macosx/wavpack/wvgain | 3 + lib/audio-utils/macosx/wavpack/wvunpack | 3 + lib/audio-utils/mp3splt/libmp3splt-0.dll | 3 - lib/audio-utils/mp3splt/libsplt_flac-0.dll | 3 - lib/audio-utils/mp3splt/libsplt_mp3-0.dll | 3 - lib/audio-utils/mp3splt/libsplt_ogg-0.dll | 3 - lib/audio-utils/mp3splt/mp3splt.exe | 3 - lib/audio-utils/mp3splt/mp3splt.ico | Bin 143978 -> 0 bytes lib/audio-utils/sox/libgomp-1.dll | 3 - lib/audio-utils/sox/sox.exe | 3 - lib/audio-utils/sox/zlib1.dll | 3 - lib/audio-utils/windows/README.txt | 5 + .../{ => windows}/ffmpeg/LICENSE.txt | 0 lib/audio-utils/windows/ffmpeg/README.txt | 107 + lib/audio-utils/windows/ffmpeg/avcodec-58.dll | 3 + .../windows/ffmpeg/avdevice-58.dll | 3 + lib/audio-utils/windows/ffmpeg/avfilter-7.dll | 3 + .../windows/ffmpeg/avformat-58.dll | 3 + lib/audio-utils/windows/ffmpeg/avutil-56.dll | 3 + lib/audio-utils/windows/ffmpeg/ffmpeg.exe | 3 + lib/audio-utils/windows/ffmpeg/ffplay.exe | 3 + lib/audio-utils/windows/ffmpeg/ffprobe.exe | 3 + .../windows/ffmpeg/postproc-55.dll | 3 + .../windows/ffmpeg/swresample-3.dll | 3 + lib/audio-utils/windows/ffmpeg/swscale-5.dll | 3 + ...IBMP3SPLT_LIBS_README_LICENSES_SOURCES.txt | 8 + .../{ => windows}/mp3splt/iconv.dll | 0 .../{ => windows}/mp3splt/libFLAC.dll | 0 .../{ => windows}/mp3splt/libid3tag.dll | 0 .../{ => windows}/mp3splt/libintl-8.dll | 0 .../{ => windows}/mp3splt/libltdl-7.dll | 0 .../{ => windows}/mp3splt/libmad-0.dll | 0 .../windows/mp3splt/libmp3splt-0.dll | 3 + .../{ => windows}/mp3splt/libogg-0.dll | 0 .../windows/mp3splt/libsplt_flac-0.dll | 3 + .../windows/mp3splt/libsplt_mp3-0.dll | 3 + .../windows/mp3splt/libsplt_ogg-0.dll | 3 + .../{ => windows}/mp3splt/libvorbis-0.dll | 0 .../{ => windows}/mp3splt/libvorbisenc-2.dll | 0 .../{ => windows}/mp3splt/libvorbisfile-3.dll | 0 lib/audio-utils/windows/mp3splt/mp3splt.exe | 3 + .../{ => windows}/mp3splt/pcre3.dll | 0 .../{ => windows}/mp3splt/zlib1.dll | 0 .../{ => windows}/shntool/shntool.exe | 0 lib/audio-utils/windows/sox/ChangeLog.txt | 1759 +++++++++++++++++ lib/audio-utils/windows/sox/LICENSE.GPL.txt | 339 ++++ lib/audio-utils/windows/sox/README.txt | 196 ++ lib/audio-utils/windows/sox/README.win32.txt | 167 ++ .../{ => windows}/sox/lame_enc.dll | 0 .../{ => windows}/sox/lame_enc.ini | 0 lib/audio-utils/windows/sox/libflac-8.dll | 3 + .../windows/sox/libgcc_s_sjlj-1.dll | 3 + lib/audio-utils/windows/sox/libgomp-1.dll | 3 + lib/audio-utils/windows/sox/libid3tag-0.dll | 3 + lib/audio-utils/{ => windows}/sox/libmad.dll | 0 .../{ => windows}/sox/libmp3lame.dll | 0 lib/audio-utils/windows/sox/libogg-0.dll | 3 + lib/audio-utils/windows/sox/libpng16-16.dll | 3 + lib/audio-utils/windows/sox/libsox-3.dll | 3 + lib/audio-utils/windows/sox/libssp-0.dll | 3 + lib/audio-utils/windows/sox/libvorbis-0.dll | 3 + .../windows/sox/libvorbisenc-2.dll | 3 + .../windows/sox/libvorbisfile-3.dll | 3 + lib/audio-utils/windows/sox/libwavpack-1.dll | 3 + .../windows/sox/libwinpthread-1.dll | 3 + .../{ => windows}/sox/pthreadgc2.dll | 0 lib/audio-utils/windows/sox/sox.exe | 3 + lib/audio-utils/windows/sox/zlib1.dll | 3 + .../{ => windows}/wavpack/changelog.txt | 0 .../{ => windows}/wavpack/license.txt | 0 .../{ => windows}/wavpack/wavpack.exe | 0 .../{ => windows}/wavpack/wavpack_doc.html | 0 .../{ => windows}/wavpack/wvgain.exe | 0 .../{ => windows}/wavpack/wvtag.exe | 0 .../{ => windows}/wavpack/wvunpack.exe | 0 src/AP.Settings.config | 37 + src/Acoustics.Shared/AppConfigHelper.cs | 60 +- src/Acoustics.Tools/Acoustics.Tools.csproj | 5 + src/Acoustics.Tools/Audio/AbstractUtility.cs | 11 +- .../Audio/AudioUtilityException.cs | 15 + .../Audio/MasterAudioUtility.cs | 34 +- .../{App.config => app.config} | 15 - src/AnalysisPrograms/AnalysisPrograms.csproj | 4 + src/AnalysisPrograms/App.config | 24 - tests/Acoustics.Test/App.config | 25 - .../Acoustics.Test/TestHelpers/TestHelper.cs | 2 +- .../Tools/MasterAudioUtilityTests.cs | 22 + 134 files changed, 2979 insertions(+), 242 deletions(-) create mode 100644 lib/audio-utils/README.txt delete mode 100644 lib/audio-utils/ffmpeg/README.txt delete mode 100644 lib/audio-utils/ffmpeg/avcodec-57.dll delete mode 100644 lib/audio-utils/ffmpeg/avdevice-57.dll delete mode 100644 lib/audio-utils/ffmpeg/avfilter-6.dll delete mode 100644 lib/audio-utils/ffmpeg/avformat-57.dll delete mode 100644 lib/audio-utils/ffmpeg/avutil-55.dll delete mode 100644 lib/audio-utils/ffmpeg/ffmpeg.exe delete mode 100644 lib/audio-utils/ffmpeg/ffplay.exe delete mode 100644 lib/audio-utils/ffmpeg/ffprobe.exe delete mode 100644 lib/audio-utils/ffmpeg/postproc-54.dll delete mode 100644 lib/audio-utils/ffmpeg/swresample-2.dll delete mode 100644 lib/audio-utils/ffmpeg/swscale-4.dll create mode 100644 lib/audio-utils/macosx/README.txt create mode 100644 lib/audio-utils/macosx/ffmpeg/LICENSE.txt create mode 100644 lib/audio-utils/macosx/ffmpeg/README.txt create mode 100644 lib/audio-utils/macosx/ffmpeg/ffmpeg create mode 100644 lib/audio-utils/macosx/ffmpeg/ffplay create mode 100644 lib/audio-utils/macosx/ffmpeg/ffprobe create mode 100644 lib/audio-utils/macosx/ffmpeg/libavcodec.58.dylib create mode 100644 lib/audio-utils/macosx/ffmpeg/libavdevice.58.dylib create mode 100644 lib/audio-utils/macosx/ffmpeg/libavfilter.7.dylib create mode 100644 lib/audio-utils/macosx/ffmpeg/libavformat.58.dylib create mode 100644 lib/audio-utils/macosx/ffmpeg/libavutil.56.dylib create mode 100644 lib/audio-utils/macosx/ffmpeg/libpostproc.55.dylib create mode 100644 lib/audio-utils/macosx/ffmpeg/libswresample.3.dylib create mode 100644 lib/audio-utils/macosx/ffmpeg/libswscale.5.dylib create mode 100644 lib/audio-utils/macosx/sox/ChangeLog create mode 100644 lib/audio-utils/macosx/sox/LICENSE.GPL.txt create mode 100644 lib/audio-utils/macosx/sox/README create mode 100644 lib/audio-utils/macosx/sox/README.osx.txt create mode 100644 lib/audio-utils/macosx/sox/libsox.txt create mode 100644 lib/audio-utils/macosx/sox/play create mode 100644 lib/audio-utils/macosx/sox/rec create mode 100644 lib/audio-utils/macosx/sox/sox create mode 100644 lib/audio-utils/macosx/sox/sox.txt create mode 100644 lib/audio-utils/macosx/sox/soxformat.txt create mode 100644 lib/audio-utils/macosx/sox/soxi create mode 100644 lib/audio-utils/macosx/sox/soxi.txt create mode 100644 lib/audio-utils/macosx/wavpack/changelog.txt create mode 100644 lib/audio-utils/macosx/wavpack/license.txt create mode 100644 lib/audio-utils/macosx/wavpack/wavpack create mode 100644 lib/audio-utils/macosx/wavpack/wavpack_doc.html create mode 100644 lib/audio-utils/macosx/wavpack/wvgain create mode 100644 lib/audio-utils/macosx/wavpack/wvunpack delete mode 100644 lib/audio-utils/mp3splt/libmp3splt-0.dll delete mode 100644 lib/audio-utils/mp3splt/libsplt_flac-0.dll delete mode 100644 lib/audio-utils/mp3splt/libsplt_mp3-0.dll delete mode 100644 lib/audio-utils/mp3splt/libsplt_ogg-0.dll delete mode 100644 lib/audio-utils/mp3splt/mp3splt.exe delete mode 100644 lib/audio-utils/mp3splt/mp3splt.ico delete mode 100644 lib/audio-utils/sox/libgomp-1.dll delete mode 100644 lib/audio-utils/sox/sox.exe delete mode 100644 lib/audio-utils/sox/zlib1.dll create mode 100644 lib/audio-utils/windows/README.txt rename lib/audio-utils/{ => windows}/ffmpeg/LICENSE.txt (100%) create mode 100644 lib/audio-utils/windows/ffmpeg/README.txt create mode 100644 lib/audio-utils/windows/ffmpeg/avcodec-58.dll create mode 100644 lib/audio-utils/windows/ffmpeg/avdevice-58.dll create mode 100644 lib/audio-utils/windows/ffmpeg/avfilter-7.dll create mode 100644 lib/audio-utils/windows/ffmpeg/avformat-58.dll create mode 100644 lib/audio-utils/windows/ffmpeg/avutil-56.dll create mode 100644 lib/audio-utils/windows/ffmpeg/ffmpeg.exe create mode 100644 lib/audio-utils/windows/ffmpeg/ffplay.exe create mode 100644 lib/audio-utils/windows/ffmpeg/ffprobe.exe create mode 100644 lib/audio-utils/windows/ffmpeg/postproc-55.dll create mode 100644 lib/audio-utils/windows/ffmpeg/swresample-3.dll create mode 100644 lib/audio-utils/windows/ffmpeg/swscale-5.dll create mode 100644 lib/audio-utils/windows/mp3splt/LIBMP3SPLT_LIBS_README_LICENSES_SOURCES.txt rename lib/audio-utils/{ => windows}/mp3splt/iconv.dll (100%) rename lib/audio-utils/{ => windows}/mp3splt/libFLAC.dll (100%) rename lib/audio-utils/{ => windows}/mp3splt/libid3tag.dll (100%) rename lib/audio-utils/{ => windows}/mp3splt/libintl-8.dll (100%) rename lib/audio-utils/{ => windows}/mp3splt/libltdl-7.dll (100%) rename lib/audio-utils/{ => windows}/mp3splt/libmad-0.dll (100%) create mode 100644 lib/audio-utils/windows/mp3splt/libmp3splt-0.dll rename lib/audio-utils/{ => windows}/mp3splt/libogg-0.dll (100%) create mode 100644 lib/audio-utils/windows/mp3splt/libsplt_flac-0.dll create mode 100644 lib/audio-utils/windows/mp3splt/libsplt_mp3-0.dll create mode 100644 lib/audio-utils/windows/mp3splt/libsplt_ogg-0.dll rename lib/audio-utils/{ => windows}/mp3splt/libvorbis-0.dll (100%) rename lib/audio-utils/{ => windows}/mp3splt/libvorbisenc-2.dll (100%) rename lib/audio-utils/{ => windows}/mp3splt/libvorbisfile-3.dll (100%) create mode 100644 lib/audio-utils/windows/mp3splt/mp3splt.exe rename lib/audio-utils/{ => windows}/mp3splt/pcre3.dll (100%) rename lib/audio-utils/{ => windows}/mp3splt/zlib1.dll (100%) rename lib/audio-utils/{ => windows}/shntool/shntool.exe (100%) create mode 100644 lib/audio-utils/windows/sox/ChangeLog.txt create mode 100644 lib/audio-utils/windows/sox/LICENSE.GPL.txt create mode 100644 lib/audio-utils/windows/sox/README.txt create mode 100644 lib/audio-utils/windows/sox/README.win32.txt rename lib/audio-utils/{ => windows}/sox/lame_enc.dll (100%) rename lib/audio-utils/{ => windows}/sox/lame_enc.ini (100%) create mode 100644 lib/audio-utils/windows/sox/libflac-8.dll create mode 100644 lib/audio-utils/windows/sox/libgcc_s_sjlj-1.dll create mode 100644 lib/audio-utils/windows/sox/libgomp-1.dll create mode 100644 lib/audio-utils/windows/sox/libid3tag-0.dll rename lib/audio-utils/{ => windows}/sox/libmad.dll (100%) rename lib/audio-utils/{ => windows}/sox/libmp3lame.dll (100%) create mode 100644 lib/audio-utils/windows/sox/libogg-0.dll create mode 100644 lib/audio-utils/windows/sox/libpng16-16.dll create mode 100644 lib/audio-utils/windows/sox/libsox-3.dll create mode 100644 lib/audio-utils/windows/sox/libssp-0.dll create mode 100644 lib/audio-utils/windows/sox/libvorbis-0.dll create mode 100644 lib/audio-utils/windows/sox/libvorbisenc-2.dll create mode 100644 lib/audio-utils/windows/sox/libvorbisfile-3.dll create mode 100644 lib/audio-utils/windows/sox/libwavpack-1.dll create mode 100644 lib/audio-utils/windows/sox/libwinpthread-1.dll rename lib/audio-utils/{ => windows}/sox/pthreadgc2.dll (100%) create mode 100644 lib/audio-utils/windows/sox/sox.exe create mode 100644 lib/audio-utils/windows/sox/zlib1.dll rename lib/audio-utils/{ => windows}/wavpack/changelog.txt (100%) rename lib/audio-utils/{ => windows}/wavpack/license.txt (100%) rename lib/audio-utils/{ => windows}/wavpack/wavpack.exe (100%) rename lib/audio-utils/{ => windows}/wavpack/wavpack_doc.html (100%) rename lib/audio-utils/{ => windows}/wavpack/wvgain.exe (100%) rename lib/audio-utils/{ => windows}/wavpack/wvtag.exe (100%) rename lib/audio-utils/{ => windows}/wavpack/wvunpack.exe (100%) create mode 100644 src/AP.Settings.config create mode 100644 src/Acoustics.Tools/Audio/AudioUtilityException.cs rename src/Acoustics.Tools/{App.config => app.config} (65%) diff --git a/.gitattributes b/.gitattributes index 0f8745617..620b06939 100644 --- a/.gitattributes +++ b/.gitattributes @@ -46,8 +46,9 @@ docs/**/*.jpg filter=lfs diff=lfs merge=lfs -text *.mp3 filter=lfs diff=lfs merge=lfs -text # all binaries in lib should be tracked by git-lfs -lib/**/*.exe filter=lfs diff=lfs merge=lfs -text -lib/**/*.dll filter=lfs diff=lfs merge=lfs -text +lib/**/*.exe filter=lfs diff=lfs merge=lfs -text +lib/**/*.dll filter=lfs diff=lfs merge=lfs -text +lib/audio-utils/macosx/**/* filter=lfs diff=lfs merge=lfs -text # assets in tests/Fixtures should generally be in lfs tests/Fixtures/**/*.zip filter=lfs diff=lfs merge=lfs -text diff --git a/AudioAnalysis.sln b/AudioAnalysis.sln index 8b16b77a2..8ba804f3d 100644 --- a/AudioAnalysis.sln +++ b/AudioAnalysis.sln @@ -5,6 +5,7 @@ MinimumVisualStudioVersion = 10.0.40219.1 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{A050BD53-DEE0-40F3-BEAB-1F7474533C40}" ProjectSection(SolutionItems) = preProject src\AP.CopyFiles.targets = src\AP.CopyFiles.targets + src\AP.Settings.config = src\AP.Settings.config src\AP.VersionBuild.targets = src\AP.VersionBuild.targets src\AssemblyMetadata.cs.template = src\AssemblyMetadata.cs.template README.md = README.md diff --git a/docs/installing.md b/docs/installing.md index 7d1593b77..945bd4e84 100644 --- a/docs/installing.md +++ b/docs/installing.md @@ -32,7 +32,13 @@ running: AnalysisPrograms.exe CheckEnvironment ``` -## Unix && MacOSX +## MacOSX + +The following additional dependencies are required for MaxOSX machines: + +- mono (version 5.5 or greater) + +## Unix The following additional dependencies are required for Unix machines: @@ -48,5 +54,5 @@ The following additional dependencies are required for Unix machines: ## Coming soon: Docker -We're working on a `Dockerfile` that will greatly simplify installation. -Let us know if you're keen for it. +We have a `Dockerfile` that theoretically works (BETA warning). See the +`build` directory to find it. \ No newline at end of file diff --git a/docs/supported_platforms.md b/docs/supported_platforms.md index 513948a63..3365bb7c4 100644 --- a/docs/supported_platforms.md +++ b/docs/supported_platforms.md @@ -51,7 +51,9 @@ $ mono AnalysisPrograms.exe list ### MacOSX -Should the same as the Unix requirements, however, we have never run or tested -the code on MacOS systems. +We support Mac OS X 10.9 and later. + +Should the same as the Unix requirements, however, we have limited exeprience +running on MacOSX systems. We'd like to hear from you if you do try! \ No newline at end of file diff --git a/lib/audio-utils/README.txt b/lib/audio-utils/README.txt new file mode 100644 index 000000000..4c719f8aa --- /dev/null +++ b/lib/audio-utils/README.txt @@ -0,0 +1,15 @@ +The binaries you download here should work on as many systems as possible. + +We can utilise so called static builds. + +When adding a new binary check that our supported platforms documentation matches +what the binary is capable of running on. + +# FFMPEG notes + +Download from here: +https://ffmpeg.zeranoe.com/builds/ + +Choose a stable version, 64-bit builds only, and choose "Shared" linking. +The shared linking option saves on space, otherwise all resources are embedded into all +executables. \ No newline at end of file diff --git a/lib/audio-utils/ffmpeg/README.txt b/lib/audio-utils/ffmpeg/README.txt deleted file mode 100644 index 00a5d0654..000000000 --- a/lib/audio-utils/ffmpeg/README.txt +++ /dev/null @@ -1,101 +0,0 @@ -Zeranoe FFmpeg Builds - -Build: ffmpeg-3.4.2-win64-shared - -Configuration: - --disable-static - --enable-shared - --enable-gpl - --enable-version3 - --enable-sdl2 - --enable-bzlib - --enable-fontconfig - --enable-gnutls - --enable-iconv - --enable-libass - --enable-libbluray - --enable-libfreetype - --enable-libmp3lame - --enable-libopencore-amrnb - --enable-libopencore-amrwb - --enable-libopenjpeg - --enable-libopus - --enable-libshine - --enable-libsnappy - --enable-libsoxr - --enable-libtheora - --enable-libtwolame - --enable-libvpx - --enable-libwavpack - --enable-libwebp - --enable-libx264 - --enable-libx265 - --enable-libxml2 - --enable-libzimg - --enable-lzma - --enable-zlib - --enable-gmp - --enable-libvidstab - --enable-libvorbis - --enable-libvo-amrwbenc - --enable-libmysofa - --enable-libspeex - --enable-libxvid - --enable-libmfx - --enable-cuda - --enable-cuvid - --enable-d3d11va - --enable-nvenc - --enable-dxva2 - --enable-avisynth - -Libraries: - SDL 2.0.7 - bzip2 1.0.6 - Fontconfig 2.12.6 - GnuTLS 3.5.18 - libiconv 1.15 - libass 0.14.0 - libbluray 20180123-6021ff9 - FreeType 2.9 - LAME 3.100 - OpenCORE AMR 20170731-07a5be4 - OpenJPEG 2.3.0 - Opus 1.2.1 - shine 3.1.1 - Snappy 1.1.7 - libsoxr 20160605-5fa7eeb - Theora 1.1.1 - TwoLAME 0.3.13 - vpx 1.7.0 - WavPack 5.1.0 - WebP 0.6.1 - x264 20180118-7d0ff22 - x265 20180215-7219376 - libxml2 2.9.7 - z.lib 20180119-5f24b48 - XZ Utils 5.2.3 - zlib 1.2.11 - GMP 6.1.2 - vid.stab 20170830-afc8ea9 - Vorbis 1.3.5 - VisualOn AMR-WB 20141107-3b3fcd0 - libmysofa 20171120-cec6eea - Speex 1.2.0 - Xvid 1.3.5 - libmfx 1.23 - -Copyright (C) 2018 Kyle Schwarz - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . diff --git a/lib/audio-utils/ffmpeg/avcodec-57.dll b/lib/audio-utils/ffmpeg/avcodec-57.dll deleted file mode 100644 index c43eb487d..000000000 --- a/lib/audio-utils/ffmpeg/avcodec-57.dll +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e5fde9a0acac780a418df9c3427bac33b38f3fb2345c77722d108fe0d095dcd0 -size 33008128 diff --git a/lib/audio-utils/ffmpeg/avdevice-57.dll b/lib/audio-utils/ffmpeg/avdevice-57.dll deleted file mode 100644 index 1acd379b1..000000000 --- a/lib/audio-utils/ffmpeg/avdevice-57.dll +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a2642d8a47b50318df119f343c69ebb7a5e68b2d5768c9f8fa045362781d2156 -size 1461248 diff --git a/lib/audio-utils/ffmpeg/avfilter-6.dll b/lib/audio-utils/ffmpeg/avfilter-6.dll deleted file mode 100644 index 3fbbb2627..000000000 --- a/lib/audio-utils/ffmpeg/avfilter-6.dll +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d7ca7d441d8f8a397a8a950a2ca80f541600c23950956c2708dd5d089592aeb3 -size 6854656 diff --git a/lib/audio-utils/ffmpeg/avformat-57.dll b/lib/audio-utils/ffmpeg/avformat-57.dll deleted file mode 100644 index 76cc3b7b1..000000000 --- a/lib/audio-utils/ffmpeg/avformat-57.dll +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:22c0b81b35fddea3a7623ab1d9aad6d59412807a07ae58372c6e434060809c12 -size 3972608 diff --git a/lib/audio-utils/ffmpeg/avutil-55.dll b/lib/audio-utils/ffmpeg/avutil-55.dll deleted file mode 100644 index a90f0fda9..000000000 --- a/lib/audio-utils/ffmpeg/avutil-55.dll +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:de7662629ecef2231eb790c90588723af12a8a9ddca5281f0f054ced0eef1ef8 -size 678912 diff --git a/lib/audio-utils/ffmpeg/ffmpeg.exe b/lib/audio-utils/ffmpeg/ffmpeg.exe deleted file mode 100644 index 727cc61fb..000000000 --- a/lib/audio-utils/ffmpeg/ffmpeg.exe +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e7a5e3c781be1ba9139a52c9b688e1097316b5ebeef6b7a875582a2af508ef92 -size 297472 diff --git a/lib/audio-utils/ffmpeg/ffplay.exe b/lib/audio-utils/ffmpeg/ffplay.exe deleted file mode 100644 index 91ad1a6e2..000000000 --- a/lib/audio-utils/ffmpeg/ffplay.exe +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:fa99119ccf4db757c9e053609e70a0b69d97844ce863bb3129af667a6fb3861e -size 153088 diff --git a/lib/audio-utils/ffmpeg/ffprobe.exe b/lib/audio-utils/ffmpeg/ffprobe.exe deleted file mode 100644 index 9aa69c309..000000000 --- a/lib/audio-utils/ffmpeg/ffprobe.exe +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9d0f92566c344bced4135295e77a8f24b42212d6407103189126ed865956e4dd -size 168960 diff --git a/lib/audio-utils/ffmpeg/postproc-54.dll b/lib/audio-utils/ffmpeg/postproc-54.dll deleted file mode 100644 index 9d1313412..000000000 --- a/lib/audio-utils/ffmpeg/postproc-54.dll +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f323e9409202e9a1f9055827951d263771ce67582ae8391ce8a3914e2a9a5c19 -size 126976 diff --git a/lib/audio-utils/ffmpeg/swresample-2.dll b/lib/audio-utils/ffmpeg/swresample-2.dll deleted file mode 100644 index f3ad7af57..000000000 --- a/lib/audio-utils/ffmpeg/swresample-2.dll +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a65b8c09abc013379bb2ea91ae0781900e9d026bd7d1d639f662e7f9e623258b -size 377344 diff --git a/lib/audio-utils/ffmpeg/swscale-4.dll b/lib/audio-utils/ffmpeg/swscale-4.dll deleted file mode 100644 index 3bf856de1..000000000 --- a/lib/audio-utils/ffmpeg/swscale-4.dll +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5ac9afb864de2441cf59ba80424745cdfff3984ceb5b1de1133e9fee3c3f647b -size 529920 diff --git a/lib/audio-utils/macosx/README.txt b/lib/audio-utils/macosx/README.txt new file mode 100644 index 000000000..0f7f816dc --- /dev/null +++ b/lib/audio-utils/macosx/README.txt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c9b071cf9ddd395eac75c74def6a4654574167b48269d13de87c0e76c28d8a8b +size 134 diff --git a/lib/audio-utils/macosx/ffmpeg/LICENSE.txt b/lib/audio-utils/macosx/ffmpeg/LICENSE.txt new file mode 100644 index 000000000..1477940c7 --- /dev/null +++ b/lib/audio-utils/macosx/ffmpeg/LICENSE.txt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:230184f60bae2feaf244f10a8bac053c8ff33a183bcc365b4d8b876d2b7f4809 +size 35823 diff --git a/lib/audio-utils/macosx/ffmpeg/README.txt b/lib/audio-utils/macosx/ffmpeg/README.txt new file mode 100644 index 000000000..1802465de --- /dev/null +++ b/lib/audio-utils/macosx/ffmpeg/README.txt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:871d247bcb1a037c4f33f99aa66126fa23ec4aba8e4b4f398b8f32e1991f0f36 +size 4119 diff --git a/lib/audio-utils/macosx/ffmpeg/ffmpeg b/lib/audio-utils/macosx/ffmpeg/ffmpeg new file mode 100644 index 000000000..e9f12c549 --- /dev/null +++ b/lib/audio-utils/macosx/ffmpeg/ffmpeg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e3a34e77f68d7c70dcef0c74d4fc0e133985513705ca44efaaa7d3564b87777b +size 239612 diff --git a/lib/audio-utils/macosx/ffmpeg/ffplay b/lib/audio-utils/macosx/ffmpeg/ffplay new file mode 100644 index 000000000..022f96f6b --- /dev/null +++ b/lib/audio-utils/macosx/ffmpeg/ffplay @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b3f1abcd309ed8b89554ec6b8f0779063d8ef5571c8790b04224d98973a6abf2 +size 2013272 diff --git a/lib/audio-utils/macosx/ffmpeg/ffprobe b/lib/audio-utils/macosx/ffmpeg/ffprobe new file mode 100644 index 000000000..29fffcb5c --- /dev/null +++ b/lib/audio-utils/macosx/ffmpeg/ffprobe @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bc417b00882ec887980125130a0902e763b6474ab8870c5e7cf836839eedc0e7 +size 153968 diff --git a/lib/audio-utils/macosx/ffmpeg/libavcodec.58.dylib b/lib/audio-utils/macosx/ffmpeg/libavcodec.58.dylib new file mode 100644 index 000000000..a49c8cdb6 --- /dev/null +++ b/lib/audio-utils/macosx/ffmpeg/libavcodec.58.dylib @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:02ae49dc1f8e88e0681be1ce109bcb7a7d6b6bb67529ab429b44e2417ef3aec7 +size 44969012 diff --git a/lib/audio-utils/macosx/ffmpeg/libavdevice.58.dylib b/lib/audio-utils/macosx/ffmpeg/libavdevice.58.dylib new file mode 100644 index 000000000..2bb832c31 --- /dev/null +++ b/lib/audio-utils/macosx/ffmpeg/libavdevice.58.dylib @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0e8b9275126252167e538b03327ee3fb4c7e75f04af057caa36a9044f301b8f8 +size 1921628 diff --git a/lib/audio-utils/macosx/ffmpeg/libavfilter.7.dylib b/lib/audio-utils/macosx/ffmpeg/libavfilter.7.dylib new file mode 100644 index 000000000..c09a68d16 --- /dev/null +++ b/lib/audio-utils/macosx/ffmpeg/libavfilter.7.dylib @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:63ea6a40f2f15d4bc35abba422b9617bdaaf5995b6f218860a341e397a59dabb +size 7125276 diff --git a/lib/audio-utils/macosx/ffmpeg/libavformat.58.dylib b/lib/audio-utils/macosx/ffmpeg/libavformat.58.dylib new file mode 100644 index 000000000..c2eccbf8c --- /dev/null +++ b/lib/audio-utils/macosx/ffmpeg/libavformat.58.dylib @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cec2c73c2e33b671341f9c6cfc041124bd30cfef91346ab335702cc374b656de +size 6167912 diff --git a/lib/audio-utils/macosx/ffmpeg/libavutil.56.dylib b/lib/audio-utils/macosx/ffmpeg/libavutil.56.dylib new file mode 100644 index 000000000..ac2fba0fe --- /dev/null +++ b/lib/audio-utils/macosx/ffmpeg/libavutil.56.dylib @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b7e6f20d279d376b16d67d0d2662c3731458ae954d322932d73c7651b6b6c40e +size 384864 diff --git a/lib/audio-utils/macosx/ffmpeg/libpostproc.55.dylib b/lib/audio-utils/macosx/ffmpeg/libpostproc.55.dylib new file mode 100644 index 000000000..1f3591ee3 --- /dev/null +++ b/lib/audio-utils/macosx/ffmpeg/libpostproc.55.dylib @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e1fb9f8f747568d2eb2df1d84200a302dbee037c658bcc7a0d612250cd368e5d +size 140948 diff --git a/lib/audio-utils/macosx/ffmpeg/libswresample.3.dylib b/lib/audio-utils/macosx/ffmpeg/libswresample.3.dylib new file mode 100644 index 000000000..c49372623 --- /dev/null +++ b/lib/audio-utils/macosx/ffmpeg/libswresample.3.dylib @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9aa06e0fe5a6dc18f4957096965f420504fda4e67779492dfbb6a9624bd27509 +size 363548 diff --git a/lib/audio-utils/macosx/ffmpeg/libswscale.5.dylib b/lib/audio-utils/macosx/ffmpeg/libswscale.5.dylib new file mode 100644 index 000000000..4facf85b0 --- /dev/null +++ b/lib/audio-utils/macosx/ffmpeg/libswscale.5.dylib @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:54829a8e4f61a6808dc87a1e16fd4c98836d0a7f5efd671ad6d614c213f6fec1 +size 801036 diff --git a/lib/audio-utils/macosx/sox/ChangeLog b/lib/audio-utils/macosx/sox/ChangeLog new file mode 100644 index 000000000..9df3c0a2e --- /dev/null +++ b/lib/audio-utils/macosx/sox/ChangeLog @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7395b1b6c31edf49e5d6ad8351325a212dcbc39cd49383e3600f75b0957ce81c +size 82037 diff --git a/lib/audio-utils/macosx/sox/LICENSE.GPL.txt b/lib/audio-utils/macosx/sox/LICENSE.GPL.txt new file mode 100644 index 000000000..969df9154 --- /dev/null +++ b/lib/audio-utils/macosx/sox/LICENSE.GPL.txt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 +size 17987 diff --git a/lib/audio-utils/macosx/sox/README b/lib/audio-utils/macosx/sox/README new file mode 100644 index 000000000..8ab56734f --- /dev/null +++ b/lib/audio-utils/macosx/sox/README @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8d100a3b179861cda5e31ecd1290985d0068be2acd0af807b9325b16ec7575d5 +size 7877 diff --git a/lib/audio-utils/macosx/sox/README.osx.txt b/lib/audio-utils/macosx/sox/README.osx.txt new file mode 100644 index 000000000..100a4d31f --- /dev/null +++ b/lib/audio-utils/macosx/sox/README.osx.txt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6ecf0462b15e88ea3c69ff1a9bbf86c7258c8e24f3c976558b2111fb77f1704b +size 4013 diff --git a/lib/audio-utils/macosx/sox/libsox.txt b/lib/audio-utils/macosx/sox/libsox.txt new file mode 100644 index 000000000..31cf5acce --- /dev/null +++ b/lib/audio-utils/macosx/sox/libsox.txt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8f6fe26144820edc6695f358fc9cd7d0d02925e699d742970d7b30e04fa77f3b +size 16873 diff --git a/lib/audio-utils/macosx/sox/play b/lib/audio-utils/macosx/sox/play new file mode 100644 index 000000000..9b9df2c1a --- /dev/null +++ b/lib/audio-utils/macosx/sox/play @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8638f57f5a8478b712ac64a7612634419b08ffa4fe2e9ec269c01ae1ee83493e +size 3 diff --git a/lib/audio-utils/macosx/sox/rec b/lib/audio-utils/macosx/sox/rec new file mode 100644 index 000000000..9b9df2c1a --- /dev/null +++ b/lib/audio-utils/macosx/sox/rec @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8638f57f5a8478b712ac64a7612634419b08ffa4fe2e9ec269c01ae1ee83493e +size 3 diff --git a/lib/audio-utils/macosx/sox/sox b/lib/audio-utils/macosx/sox/sox new file mode 100644 index 000000000..954b011ee --- /dev/null +++ b/lib/audio-utils/macosx/sox/sox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f0a747b929bea1f01a0140d2e82b367f987f66e6dace759e3a972a6583ec8fa9 +size 3190788 diff --git a/lib/audio-utils/macosx/sox/sox.txt b/lib/audio-utils/macosx/sox/sox.txt new file mode 100644 index 000000000..17d5f5cd9 --- /dev/null +++ b/lib/audio-utils/macosx/sox/sox.txt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cd072055f75c58987d6f2d2a63f3280be1ca9c8fd1f394b0be5415715f2e782c +size 183372 diff --git a/lib/audio-utils/macosx/sox/soxformat.txt b/lib/audio-utils/macosx/sox/soxformat.txt new file mode 100644 index 000000000..61753cc49 --- /dev/null +++ b/lib/audio-utils/macosx/sox/soxformat.txt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:960d8b8b6fd8bfae51ec83259cfc3335bdd4a1e8bed3c5687e2ee3226b428d19 +size 32611 diff --git a/lib/audio-utils/macosx/sox/soxi b/lib/audio-utils/macosx/sox/soxi new file mode 100644 index 000000000..9b9df2c1a --- /dev/null +++ b/lib/audio-utils/macosx/sox/soxi @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8638f57f5a8478b712ac64a7612634419b08ffa4fe2e9ec269c01ae1ee83493e +size 3 diff --git a/lib/audio-utils/macosx/sox/soxi.txt b/lib/audio-utils/macosx/sox/soxi.txt new file mode 100644 index 000000000..da53b0056 --- /dev/null +++ b/lib/audio-utils/macosx/sox/soxi.txt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fd7a619a02d34b23a7240a71499f57a45445c14eb4046ed12094323afadd5c24 +size 2981 diff --git a/lib/audio-utils/macosx/wavpack/changelog.txt b/lib/audio-utils/macosx/wavpack/changelog.txt new file mode 100644 index 000000000..53000debf --- /dev/null +++ b/lib/audio-utils/macosx/wavpack/changelog.txt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2a643375f073aeea8fd2fb35d2816381d315d55c5d0c90c0e6803833673b74da +size 29476 diff --git a/lib/audio-utils/macosx/wavpack/license.txt b/lib/audio-utils/macosx/wavpack/license.txt new file mode 100644 index 000000000..b64139074 --- /dev/null +++ b/lib/audio-utils/macosx/wavpack/license.txt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9b6642f5f650764fac0357d5cf6620af905becd5e144603e3aaf22d671e117bb +size 1582 diff --git a/lib/audio-utils/macosx/wavpack/wavpack b/lib/audio-utils/macosx/wavpack/wavpack new file mode 100644 index 000000000..3976d1384 --- /dev/null +++ b/lib/audio-utils/macosx/wavpack/wavpack @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3198975d4663e85c9fea8547ee231dc23bd1f46434e879b52bf35f0676fda772 +size 437284 diff --git a/lib/audio-utils/macosx/wavpack/wavpack_doc.html b/lib/audio-utils/macosx/wavpack/wavpack_doc.html new file mode 100644 index 000000000..b43fcd169 --- /dev/null +++ b/lib/audio-utils/macosx/wavpack/wavpack_doc.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ec59bdd3628f68f0387a5192eec8172f8d4ab893f6a6e2755963bc2b3670d767 +size 61704 diff --git a/lib/audio-utils/macosx/wavpack/wvgain b/lib/audio-utils/macosx/wavpack/wvgain new file mode 100644 index 000000000..a0917c7fb --- /dev/null +++ b/lib/audio-utils/macosx/wavpack/wvgain @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:86835bc69e75d5d8e23d65a425f8896d92e78e7b4a7ecb5c2330fca703e4700c +size 205840 diff --git a/lib/audio-utils/macosx/wavpack/wvunpack b/lib/audio-utils/macosx/wavpack/wvunpack new file mode 100644 index 000000000..b1fe33478 --- /dev/null +++ b/lib/audio-utils/macosx/wavpack/wvunpack @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6b370f1972e82d9fce0157ed966d7560e7dd6ef581fe4782e38190fac02b6c89 +size 235196 diff --git a/lib/audio-utils/mp3splt/libmp3splt-0.dll b/lib/audio-utils/mp3splt/libmp3splt-0.dll deleted file mode 100644 index 2dca82923..000000000 --- a/lib/audio-utils/mp3splt/libmp3splt-0.dll +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1a75923bbf7514bd892eb1cdd453eebba07c7a0ced24dec24834c81938b5b0ab -size 194002 diff --git a/lib/audio-utils/mp3splt/libsplt_flac-0.dll b/lib/audio-utils/mp3splt/libsplt_flac-0.dll deleted file mode 100644 index ce96b809f..000000000 --- a/lib/audio-utils/mp3splt/libsplt_flac-0.dll +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ee721a79d12e9ed6f49ee6cfcac4bcc5d21429d4319d6e002f15e5d6c1d384bd -size 57567 diff --git a/lib/audio-utils/mp3splt/libsplt_mp3-0.dll b/lib/audio-utils/mp3splt/libsplt_mp3-0.dll deleted file mode 100644 index 12f7f2347..000000000 --- a/lib/audio-utils/mp3splt/libsplt_mp3-0.dll +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:83e1301c99e8e8e3f1ec385e2ddd89196e1fe900113784204b9ed74a1609c138 -size 244809 diff --git a/lib/audio-utils/mp3splt/libsplt_ogg-0.dll b/lib/audio-utils/mp3splt/libsplt_ogg-0.dll deleted file mode 100644 index 288ee94c2..000000000 --- a/lib/audio-utils/mp3splt/libsplt_ogg-0.dll +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ce2723b2d3ee2f8ef88e626bb86cf842c0844ea34c09f48f94284b8b6a66aeed -size 64810 diff --git a/lib/audio-utils/mp3splt/mp3splt.exe b/lib/audio-utils/mp3splt/mp3splt.exe deleted file mode 100644 index f0b607b40..000000000 --- a/lib/audio-utils/mp3splt/mp3splt.exe +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:bba237a91ede921d20fa73729af242e97592472399184195217ba11229042790 -size 94208 diff --git a/lib/audio-utils/mp3splt/mp3splt.ico b/lib/audio-utils/mp3splt/mp3splt.ico deleted file mode 100644 index 010fd484e7e9e8921acc16ccafa41adeddddc08e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 143978 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 diff --git a/lib/audio-utils/sox/libgomp-1.dll b/lib/audio-utils/sox/libgomp-1.dll deleted file mode 100644 index b76c2faa7..000000000 --- a/lib/audio-utils/sox/libgomp-1.dll +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f2750499b0949946476de8f23ba4aaa9bc119e1a24c91e3ec9c6f68da885c22f -size 280297 diff --git a/lib/audio-utils/sox/sox.exe b/lib/audio-utils/sox/sox.exe deleted file mode 100644 index 8192399da..000000000 --- a/lib/audio-utils/sox/sox.exe +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5c7d3950eec9f2bd2164d8b8ae991cc8f6cfb3d8bf928b62837c06e739a602e2 -size 5800379 diff --git a/lib/audio-utils/sox/zlib1.dll b/lib/audio-utils/sox/zlib1.dll deleted file mode 100644 index ac24a09a8..000000000 --- a/lib/audio-utils/sox/zlib1.dll +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:63e5446b545cd76f9c9d2186dc498d25607e2078631465fd81c73a5852e0d82b -size 105562 diff --git a/lib/audio-utils/windows/README.txt b/lib/audio-utils/windows/README.txt new file mode 100644 index 000000000..4409651ec --- /dev/null +++ b/lib/audio-utils/windows/README.txt @@ -0,0 +1,5 @@ +Don't include the `presets` or `docs` folder for ffmpeg + +Don't include the `wget` or docs for SoX +SoX no longer includes an mp3 encoder by default. Make sure to include copies +of the MAD (libmad and libmad-0) libraries. \ No newline at end of file diff --git a/lib/audio-utils/ffmpeg/LICENSE.txt b/lib/audio-utils/windows/ffmpeg/LICENSE.txt similarity index 100% rename from lib/audio-utils/ffmpeg/LICENSE.txt rename to lib/audio-utils/windows/ffmpeg/LICENSE.txt diff --git a/lib/audio-utils/windows/ffmpeg/README.txt b/lib/audio-utils/windows/ffmpeg/README.txt new file mode 100644 index 000000000..f1d18c3ec --- /dev/null +++ b/lib/audio-utils/windows/ffmpeg/README.txt @@ -0,0 +1,107 @@ +Zeranoe FFmpeg Builds + +Build: ffmpeg-4.0-win64-shared + +Configuration: + --disable-static + --enable-shared + --enable-gpl + --enable-version3 + --enable-sdl2 + --enable-bzlib + --enable-fontconfig + --enable-gnutls + --enable-iconv + --enable-libass + --enable-libbluray + --enable-libfreetype + --enable-libmp3lame + --enable-libopencore-amrnb + --enable-libopencore-amrwb + --enable-libopenjpeg + --enable-libopus + --enable-libshine + --enable-libsnappy + --enable-libsoxr + --enable-libtheora + --enable-libtwolame + --enable-libvpx + --enable-libwavpack + --enable-libwebp + --enable-libx264 + --enable-libx265 + --enable-libxml2 + --enable-libzimg + --enable-lzma + --enable-zlib + --enable-gmp + --enable-libvidstab + --enable-libvorbis + --enable-libvo-amrwbenc + --enable-libmysofa + --enable-libspeex + --enable-libxvid + --enable-libaom + --enable-libmfx + --enable-amf + --enable-ffnvcodec + --enable-cuvid + --enable-d3d11va + --enable-nvenc + --enable-nvdec + --enable-dxva2 + --enable-avisynth + +Libraries: + SDL 2.0.8 + bzip2 1.0.6 + Fontconfig 2.13.0 + GnuTLS 3.5.18 + libiconv 1.15 + libass 0.14.0 + libbluray 20180309-8c15fda + FreeType 2.9 + LAME 3.100 + OpenCORE AMR 20170731-07a5be4 + OpenJPEG 2.3.0 + Opus 1.2.1 + shine 3.1.1 + Snappy 1.1.7 + libsoxr 20160605-5fa7eeb + Theora 1.1.1 + TwoLAME 0.3.13 + vpx 1.7.0 + WavPack 5.1.0 + WebP 1.0.0 + x264 20180118-7d0ff22 + x265 20180412-07defe2 + libxml2 2.9.8 + z.lib 20180424-b0e451f + XZ Utils 5.2.3 + zlib 1.2.11 + GMP 6.1.2 + vid.stab 20170830-afc8ea9 + Vorbis 1.3.5 + VisualOn AMR-WB 20141107-3b3fcd0 + libmysofa 20171120-cec6eea + Speex 1.2.0 + Xvid 1.3.5 + aom 20180427-37912de + libmfx 1.23 + AMF 20171219-801247d + nv-codec-headers 20180427-cb5f276 + +Copyright (C) 2018 Kyle Schwarz + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . diff --git a/lib/audio-utils/windows/ffmpeg/avcodec-58.dll b/lib/audio-utils/windows/ffmpeg/avcodec-58.dll new file mode 100644 index 000000000..054e8b1eb --- /dev/null +++ b/lib/audio-utils/windows/ffmpeg/avcodec-58.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2626742de38f258443e5836f6d9bc64c80f9b7558641158d2097373e3f29bde6 +size 46567424 diff --git a/lib/audio-utils/windows/ffmpeg/avdevice-58.dll b/lib/audio-utils/windows/ffmpeg/avdevice-58.dll new file mode 100644 index 000000000..c75961da3 --- /dev/null +++ b/lib/audio-utils/windows/ffmpeg/avdevice-58.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7b835a9b7ff9f7915a7f8d7b170406126a1ddd3578ec2583a0d6fb5dc0eaf2c9 +size 2429440 diff --git a/lib/audio-utils/windows/ffmpeg/avfilter-7.dll b/lib/audio-utils/windows/ffmpeg/avfilter-7.dll new file mode 100644 index 000000000..dc025eeb1 --- /dev/null +++ b/lib/audio-utils/windows/ffmpeg/avfilter-7.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:521322d89aa30a9fe3eccd91dc9a15a914ff6da75eef1918b33a9e31f950ed57 +size 6990336 diff --git a/lib/audio-utils/windows/ffmpeg/avformat-58.dll b/lib/audio-utils/windows/ffmpeg/avformat-58.dll new file mode 100644 index 000000000..a7298f16f --- /dev/null +++ b/lib/audio-utils/windows/ffmpeg/avformat-58.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4b0d284d64c2f6d0d754a47508288e244eae32587663effd0d8ba317436bae32 +size 6109696 diff --git a/lib/audio-utils/windows/ffmpeg/avutil-56.dll b/lib/audio-utils/windows/ffmpeg/avutil-56.dll new file mode 100644 index 000000000..d5f0bf945 --- /dev/null +++ b/lib/audio-utils/windows/ffmpeg/avutil-56.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4778606f2d1042b2eb63c9c32bcbbefe5b33fe86200b3902a2a51712d925715c +size 653312 diff --git a/lib/audio-utils/windows/ffmpeg/ffmpeg.exe b/lib/audio-utils/windows/ffmpeg/ffmpeg.exe new file mode 100644 index 000000000..8419b6e66 --- /dev/null +++ b/lib/audio-utils/windows/ffmpeg/ffmpeg.exe @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eab6e43e36a265829ecd9538fe649ca43c6b2119255c934bdfd4ecf6f08286a1 +size 297472 diff --git a/lib/audio-utils/windows/ffmpeg/ffplay.exe b/lib/audio-utils/windows/ffmpeg/ffplay.exe new file mode 100644 index 000000000..49fbe36be --- /dev/null +++ b/lib/audio-utils/windows/ffmpeg/ffplay.exe @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:caa60b19151b270c464cd2f25de4f34168bd0a535c68cb0e5fac56d5695379da +size 152576 diff --git a/lib/audio-utils/windows/ffmpeg/ffprobe.exe b/lib/audio-utils/windows/ffmpeg/ffprobe.exe new file mode 100644 index 000000000..a92c52e5c --- /dev/null +++ b/lib/audio-utils/windows/ffmpeg/ffprobe.exe @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:07e4ac24282226a192e95ce11220ec041b73223fd0369547ece9b5c1fef355bc +size 169984 diff --git a/lib/audio-utils/windows/ffmpeg/postproc-55.dll b/lib/audio-utils/windows/ffmpeg/postproc-55.dll new file mode 100644 index 000000000..6b867db25 --- /dev/null +++ b/lib/audio-utils/windows/ffmpeg/postproc-55.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:46281cddc030e234b20ad776b5099fd7fae72c1c0e660498c27ed95edef18c0c +size 126976 diff --git a/lib/audio-utils/windows/ffmpeg/swresample-3.dll b/lib/audio-utils/windows/ffmpeg/swresample-3.dll new file mode 100644 index 000000000..cc4171ec6 --- /dev/null +++ b/lib/audio-utils/windows/ffmpeg/swresample-3.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:862176c27092682169d20b57a2d565f6f21b223e094c696ca3652ec14c00fcb3 +size 376320 diff --git a/lib/audio-utils/windows/ffmpeg/swscale-5.dll b/lib/audio-utils/windows/ffmpeg/swscale-5.dll new file mode 100644 index 000000000..88f860ef7 --- /dev/null +++ b/lib/audio-utils/windows/ffmpeg/swscale-5.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e7b1b28c6c6eca3613a61b585e95919f7681cbbd1bddf261a6d91a57fd38cfd5 +size 538112 diff --git a/lib/audio-utils/windows/mp3splt/LIBMP3SPLT_LIBS_README_LICENSES_SOURCES.txt b/lib/audio-utils/windows/mp3splt/LIBMP3SPLT_LIBS_README_LICENSES_SOURCES.txt new file mode 100644 index 000000000..102c6a133 --- /dev/null +++ b/lib/audio-utils/windows/mp3splt/LIBMP3SPLT_LIBS_README_LICENSES_SOURCES.txt @@ -0,0 +1,8 @@ +Source code can be found here: + http://mp3splt.sourceforge.net/mp3splt_page/windows_build.php +as a link to here: + http://prdownloads.sourceforge.net/mp3splt/libmp3splt_mingw_required_libs_sources.tar.bz2 +and here for libmp3splt: + http://mp3splt.sourceforge.net/mp3splt_page/downloads.php + +See licenses in the libmp3splt_libs_licenses directory. \ No newline at end of file diff --git a/lib/audio-utils/mp3splt/iconv.dll b/lib/audio-utils/windows/mp3splt/iconv.dll similarity index 100% rename from lib/audio-utils/mp3splt/iconv.dll rename to lib/audio-utils/windows/mp3splt/iconv.dll diff --git a/lib/audio-utils/mp3splt/libFLAC.dll b/lib/audio-utils/windows/mp3splt/libFLAC.dll similarity index 100% rename from lib/audio-utils/mp3splt/libFLAC.dll rename to lib/audio-utils/windows/mp3splt/libFLAC.dll diff --git a/lib/audio-utils/mp3splt/libid3tag.dll b/lib/audio-utils/windows/mp3splt/libid3tag.dll similarity index 100% rename from lib/audio-utils/mp3splt/libid3tag.dll rename to lib/audio-utils/windows/mp3splt/libid3tag.dll diff --git a/lib/audio-utils/mp3splt/libintl-8.dll b/lib/audio-utils/windows/mp3splt/libintl-8.dll similarity index 100% rename from lib/audio-utils/mp3splt/libintl-8.dll rename to lib/audio-utils/windows/mp3splt/libintl-8.dll diff --git a/lib/audio-utils/mp3splt/libltdl-7.dll b/lib/audio-utils/windows/mp3splt/libltdl-7.dll similarity index 100% rename from lib/audio-utils/mp3splt/libltdl-7.dll rename to lib/audio-utils/windows/mp3splt/libltdl-7.dll diff --git a/lib/audio-utils/mp3splt/libmad-0.dll b/lib/audio-utils/windows/mp3splt/libmad-0.dll similarity index 100% rename from lib/audio-utils/mp3splt/libmad-0.dll rename to lib/audio-utils/windows/mp3splt/libmad-0.dll diff --git a/lib/audio-utils/windows/mp3splt/libmp3splt-0.dll b/lib/audio-utils/windows/mp3splt/libmp3splt-0.dll new file mode 100644 index 000000000..fa5755cfd --- /dev/null +++ b/lib/audio-utils/windows/mp3splt/libmp3splt-0.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2cb51534dbf7b9f36edfbee953ecdfddf40f442ed6ff2a9afaa250f14ed6278f +size 198442 diff --git a/lib/audio-utils/mp3splt/libogg-0.dll b/lib/audio-utils/windows/mp3splt/libogg-0.dll similarity index 100% rename from lib/audio-utils/mp3splt/libogg-0.dll rename to lib/audio-utils/windows/mp3splt/libogg-0.dll diff --git a/lib/audio-utils/windows/mp3splt/libsplt_flac-0.dll b/lib/audio-utils/windows/mp3splt/libsplt_flac-0.dll new file mode 100644 index 000000000..1efb3c7f2 --- /dev/null +++ b/lib/audio-utils/windows/mp3splt/libsplt_flac-0.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5234f0ba71c430a2d7e214e64dad47ec6156627af44f44e0743dca5967330f38 +size 66006 diff --git a/lib/audio-utils/windows/mp3splt/libsplt_mp3-0.dll b/lib/audio-utils/windows/mp3splt/libsplt_mp3-0.dll new file mode 100644 index 000000000..deb53a35c --- /dev/null +++ b/lib/audio-utils/windows/mp3splt/libsplt_mp3-0.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:22e2b54ab4b89c9d62b996c6080162606c5d502f8cfe1ff39ac015cbdc7b5b47 +size 254449 diff --git a/lib/audio-utils/windows/mp3splt/libsplt_ogg-0.dll b/lib/audio-utils/windows/mp3splt/libsplt_ogg-0.dll new file mode 100644 index 000000000..3ec63e01e --- /dev/null +++ b/lib/audio-utils/windows/mp3splt/libsplt_ogg-0.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:12d6e68f971a54419a000eecd3eb44f5d9d9f4aeffbc4a67a21aab36d1cb785b +size 65016 diff --git a/lib/audio-utils/mp3splt/libvorbis-0.dll b/lib/audio-utils/windows/mp3splt/libvorbis-0.dll similarity index 100% rename from lib/audio-utils/mp3splt/libvorbis-0.dll rename to lib/audio-utils/windows/mp3splt/libvorbis-0.dll diff --git a/lib/audio-utils/mp3splt/libvorbisenc-2.dll b/lib/audio-utils/windows/mp3splt/libvorbisenc-2.dll similarity index 100% rename from lib/audio-utils/mp3splt/libvorbisenc-2.dll rename to lib/audio-utils/windows/mp3splt/libvorbisenc-2.dll diff --git a/lib/audio-utils/mp3splt/libvorbisfile-3.dll b/lib/audio-utils/windows/mp3splt/libvorbisfile-3.dll similarity index 100% rename from lib/audio-utils/mp3splt/libvorbisfile-3.dll rename to lib/audio-utils/windows/mp3splt/libvorbisfile-3.dll diff --git a/lib/audio-utils/windows/mp3splt/mp3splt.exe b/lib/audio-utils/windows/mp3splt/mp3splt.exe new file mode 100644 index 000000000..71294bf77 --- /dev/null +++ b/lib/audio-utils/windows/mp3splt/mp3splt.exe @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d14bc8d9f00f80a6468b3764214c5c112e8a20c6eda6efd8db7c8a9deac84b73 +size 94720 diff --git a/lib/audio-utils/mp3splt/pcre3.dll b/lib/audio-utils/windows/mp3splt/pcre3.dll similarity index 100% rename from lib/audio-utils/mp3splt/pcre3.dll rename to lib/audio-utils/windows/mp3splt/pcre3.dll diff --git a/lib/audio-utils/mp3splt/zlib1.dll b/lib/audio-utils/windows/mp3splt/zlib1.dll similarity index 100% rename from lib/audio-utils/mp3splt/zlib1.dll rename to lib/audio-utils/windows/mp3splt/zlib1.dll diff --git a/lib/audio-utils/shntool/shntool.exe b/lib/audio-utils/windows/shntool/shntool.exe similarity index 100% rename from lib/audio-utils/shntool/shntool.exe rename to lib/audio-utils/windows/shntool/shntool.exe diff --git a/lib/audio-utils/windows/sox/ChangeLog.txt b/lib/audio-utils/windows/sox/ChangeLog.txt new file mode 100644 index 000000000..809b43f10 --- /dev/null +++ b/lib/audio-utils/windows/sox/ChangeLog.txt @@ -0,0 +1,1759 @@ +Change History +-------------- + +This file contains a list of all changes starting after the release of +sox-11gamma, followed by a list of prior authors and features. + +$ox-14.4.2 2015-02-22 +---------- + +Previously deprecated features that have been removed in this release: + + Deprec- Feature [O(ption)] + ated in [F(ormat)] [E(ffect)] Replacement + ------- ---------------------- ---------------------- + 14.3.0 O -1/-2/-3/-4/-8 -b + 14.3.0 O -s/-u/-f -e + 14.3.0 O -A/-U/-o/-i/-a/-g -e + 14.4.0 E swap with parameters remix + 14.4.0 E mixer remix + 14.4.1 OpenMP < 3.0 OpenMP >= 3.0 + 14.4.1 F ffmpeg ffmpeg/avconv via pipe + +File formats: + + o Add optional support for reading Ogg Opus files. (John Stumpo) + o Fix for max size text chunks in aiff files. (cbagwell) + o Add reading support for RF64 WAV files. (Dave Lambley) + o Work around for libsndfile created RF64 files with invalid + sizes. (Dave Lambley) + o Detect MS ADPCM WAV files with invalid blocks. (cbagwell) + o Detect Sphere files with invalid header sizes. (cbagwell) + +Effects: + + o 'Deemph' can now also be used at 48kHz sample rate. (robs) + o 'Rate' now much faster in many cases. (robs) + o Allow sending spectrograms to stdout. (Ulrich Klauer) + o Allow use of Dolph window with spectrograms. (robs) + o Allow mixing time and sample-count arguments for the delay + effect, and for spectrogram -S and -d. (Ulrich Klauer) + o Support multi-channel LADSPA plugins. (Eric Wong) + o Support infinite repetition with repeat. (Ulrich Klauer) + o Improved pink noise frequency response in synth. (robs) + o Extended syntax for specifying audio positions to several + effects. (Ulrich Klauer) + o Fix integer overflow in mcompand. [3590093] (Guido Aulisi) + o Add optional latency compenstation for LADSPA plugins. (Eric Wong) + +Other new features: + + o New -p option for soxi to display sample precision. (Ulrich Klauer) + o New libsox example6: give explicit output attributes. (robs) + +Internal improvements: + + o Speed optimization for effects that operate on channels + independently. (Ulrich Klauer) + o Fix memory leaks. (Ulrich Klauer) + o Most internal symbols (lsx_*) are no longer exported. (Ulrich Klauer) + + +sox-14.4.1 2013-02-01 +---------- + +Newly deprecated features (to be removed in future): + + Deprec- Feature [O(ption)] Removal + ated in [F(ormat)] [E(ffect)] Replacement due after + ------- ---------------------- ---------------------- ------- + 14.4.1 OpenMP < 3.0 OpenMP >= 3.0 14.4.1 + 14.4.1 F ffmpeg ffmpeg/avconf via pipe 14.4.1 + +File formats: + + o Fix pipe file-type detection regression. (robs) + o MAUD write fixes. [3507927] (Carl Eric Codere and Ulrich Klauer) + o Fix crash when seeking within a FLAC file. [3476843] (Eric Wong) + o Fix Ogg Vorbis files with certain numbers of channels being + truncated. (Ulrich Klauer) + o Fix reading 64-bit float WAVs. [3481510] (nu774 and Ulrich Klauer) + o Fix potential buffer overrun when writing FLAC files directly via + sox_write(). [3474924] (Eric Wong) + +Audio device drivers: + + o Check whether pulseaudio is available before choosing it as + default. (robs) + +Effects: + + o Restore 8 seconds default for spectrogram, if the input length is + not known. (Ulrich Klauer) + o Set output length for splice to unknown instead of 0. (Ulrich Klauer) + o Increase maximum width for spectrograms. (Ulrich Klauer) + o Fix memory leaks in LADSPA effect. (Eric Wong) + o Fix hang in several effects (rate, tempo, and those based on + dft_filter) when processing long files. [3592482, 3594822] (MrMod) + o Prevent (m)compand from tampering with their arguments. (Ulrich Klauer) + +Other bug fixes: + + o Fix input length calculation for combine methods other than + concatenate. (Ulrich Klauer) + o Fix to configure.ac to work with Autoconf 2.69. [3600293] (cbagwell) + o Use binary mode for pipes on all Windows compilers, rather than + MSVC only. [3602130] (Ulrich Klauer) + + +sox-14.4.0 2012-03-04 +---------- + +Previously deprecated features that have been removed in this release: + + Deprec- Feature [O(ption)] + ated in [F(ormat)] [E(ffect)] Replacement + ------- ---------------------- ---------------------- + 14.3.0 O --interactive --no-clobber + 14.3.0 E filter ~= sinc + 14.3.0 E norm -b, norm -i gain -B, gain -en + 14.3.0 PLAY_RATE_ARG SOX_OPTS + 14.2.0 E key alias pitch + 14.2.0 E pan ~= remix + 14.1.0 E resample alias rate + 14.1.0 E polyphase alias rate + 14.1.0 E rabbit alias rate + 14.3.1 F sndfile: sndfile 1.0.11 sndfile > 1.0.11 + 14.3.0 F flac: libFLAC < 1.1.3 libFLAC >= 1.1.3 + 14.3.1 F mp3: lame 3.97 lame > 3.97 + +Newly deprecated features (to be removed in future): + + Deprec- Feature [O(ption)] Removal + ated in [F(ormat)] [E(ffect)] Replacement due after + ------- ---------------------- ---------------------- ------- + 14.4.0 E mixer remix 14.4.0 + 1 year + 14.4.0 E swap with parameters remix 14.4.0 + +Previously deprecated features (to be removed in future): + + Deprec- Feature [O(ption)] Removal + ated in [F(ormat)] [E(ffect)] Replacement due after + ------- ---------------------- ---------------------- ------- + 14.3.0 O -1/-2/-3/-4/-8 -b 14.4.0 + 14.3.0 O -s/-u/-f -e 14.4.0 + 14.3.0 O -A/-U/-o/-i/-a/-g -e 14.4.0 + +File formats: + + o Mention in man pages that WAV files support floating point encodings. + o Add support for floating point encodings in AIFF-C files. (Ulrich Klauer) + o Pad WAV data chunk to an even number of bytes (as required by the + specification). [3203418] (Ulrich Klauer) + o Add optional MP2 write support with twolame library. (Paul Kelly) + +Audio device drivers: + + o Give pulseaudio driver higher priority than alsa or oss now that + its proven stable and gives user more features; such as per app + volume control. (cbagwell) + o Fix bug when specifying OSX coreaudio device name. Would only + search for first 3 devices. (cbagwell) + o Fix sox hangups are exit when using coreaudio. (cbagwell) + o Improve buffering in coreaudio driver (Michael Chen) + o Support enabling play/rec mode when user invokes sox as either + play or play.exe on windows. (cbagwell) + o Fix compile of sunaudio driver on OpenBSD (cbagwell) + +Effects: + + o Improvements to man pages for tempo effect. Really made in 14.3.2. + (Jim Harkins). + o New upsample effect. (robs) + o Fix to effects pipeline to let fade effect specify time from end of + file again. (cbagwell and Thor Andreassen) + o Fix man page default error for splice effect. (Ulrich Klauer) + o Enable support for --plot option on biquad and fir effects. (Ulrich Klauer) + o Effects chain can now be unlimited in length. (Ulrich Klauer) + o Fix newfile/restart effects when merging or mixing files. (Ulrich Klauer) + o Fix crashes in compand and mcompand effects. [3420893] (Ulrich Klauer) + o Let the delay effect gracefully handle the special case that a delay can + be more than the input length. [3055399] (Ulrich Klauer) + o New hilbert and downsample effects. (Ulrich Klauer) + o Fix problem where fade would sometimes fail if specifying a fade-out + immediately after a fade-in. (robs) + o Stricter syntax checking for several effects (might reveal bugs hidden + in existing scripts). (Ulrich Klauer) + o Calculate output audio length for most effects. (Ulrich Klauer) + o Fix problems with several effects when the buffer size was not evenly + divisible by the number of channels. [3420899] (Ulrich Klauer) + o Complete rewrite of the trim effect with extended syntax (backwards + compatible) and capabilities. [FR 2941349] (Ulrich Klauer) + o Fix trim optimization unexpectedly seeking backwards. (Ulrich Klauer) + o Prevent samples from getting lost at effects chain transitions in + multiple effects chain/multiple output modes. (Ulrich Klauer) + +Misc: + + o Minor improvements to the man page. (Ulrich Klauer) + o When using pipes (-p) on Windows, set file mode to binary. (cbagwell) + o Updated .dat format description in soxformat. (Jan Stary) + o Doxygen documentation for libSoX. (Doug Cook) + +Other bug fixes: + + o Fix several memory leaks. [3309913] (Jin-Myung Won and Ulrich Klauer) + o Fixed crashes in apps that call sox_format_init/quit() multiple times. + (cbagwell) + +Internal improvements: + + o Added use_threads variable to sox_globals. This should be used to enable + or disable use of parallel effects processing instead of directly calling + omp_set_num_threads. (Doug Cook) + o Fix compiler warnings. (Cristian Morales Vega [P. 3072301], Doug Cook) + o Improve large file support by using 64-bit numbers to count + samples. (Doug Cook, Thor Andreassen, Ulrich Klauer) + + +sox-14.3.2 2011-02-27 +---------- + +File formats: + + o Add seek support to mp3 handler for speed improvements. (Pavel Karneliuk) + o Fix bug were WavPack header was not updated correctly when closing + file. Fixed libsox memory leak when closing WavPack files. + (David Bryant) + o Fix RIFF chunk length error when writing 24-bit files. (David Bryant) + o 24-bit WAV files were leaving channel maps unassigned. Change to use + common channel mappings based on channel count. This allows to + work more seemlessly with other apps such as WavPack and Foobar2000. + (David Bryant) + o Fix ffmpeg playback bug caused by alignment requirements on some platforms. + Closes bug #3017690. (Reuben Thomas). + o Fix memory leak in ffmpeg. (Doug Cook) + o Handle 0 length chunks in WAV files gracefully. (Beat Jorg) + o When skipping over chunks, account for word alignment. Helps + with some Logic Pro generated files. (D Lambley) + o Fix incorrect MP3 file length determination with VBR & .5s initial + silence. (robs) + +Audio device drivers: + + o Fix immediate segfault on OSX while attempting to record. (Adam Fritzler) + o Fix segfault on OSX playback for some HW that gives smaller then + requested buffers. (cbagwell) + o Clean up system resource in coreaudio on close. Allows running + back-to-back open()/close()'s without exiting app first. (cbagwell) + o Add support for 32-bit samples to OSS driver. (Eric Lammerts) + o Add support for 24 and 32-bit samples to waveaudio (Win32) driver. + (Doug Cook) + o Support specifying audio device other than default on OSX (cbagwell) + +Effects: + + o F.R. [3051700] spectrogram -r for `raw' spectrogram, no legend. (robs) + o Fix -w option on stats effect. (Ronald Sprouse) + o Fix segfault with some ladspa plugins (Thor Andreassen) + o Optionally look for png.h in libpng directory to support OpenBSD + packaging. Helps enable spectrograph effect. (cbagwell) + o libpng15 requires application to include zlib.h header file. (cbagwell) + Add this to spectrograph effect. [3184238] + o Enable LADSPA effects on all platforms without any external + dependencies. Mainly useful for Linux, Windows and OS X which have + binaries readily available. (cbagwell) + o Support specifying an absolute end location for trim effect instead + only an offset from trim begin location. (Ulrich Klauer) + o Fix regression where MP3 handler required libmad headers to be installed. + (Samuli Suominen) + o Allow dynamic loading of lame to be enabled even if lame header files + are not installed. (Doug Cook) + +Other new features: + + o Soxi now reports duration of AMR files. (robs) + o Document the "multiple" combine option in man pages and in + usage output (Ulrich Klauer). + +Internal improvements: + + o Distribute msvc9 project files that had been in CVS only. (cbagwell) + o Add msvc10 project files (also compatible with the Windows SDK 7.1). + (Doug Cook) + o cmake now compiles waveaudio driver under windows environment. (cbagwell) + [3072672] + +sox-14.3.1 2010-04-11 +---------- + +Newly deprecated features (to be removed in future): + + Deprec- Feature [O(ption)] Removal + ated in [F(ormat)] [E(ffect)] Replacement due after + ------- ---------------------- ---------------------- ------- + 14.3.1 F mp3: lame 3.97 lame > 3.97 2011-04-11 + 14.3.1 F sndfile: sndfile 1.0.11 sndfile > 1.0.11 14.3.1 + +Previously deprecated features (to be removed in future): + + Deprec- Feature [O(ption)] Removal + ated in [F(ormat)] [E(ffect)] Replacement due after + ------- ---------------------- ---------------------- ------- + 14.2.0 E key alias pitch 14.3.1 + 14.2.0 E pan ~= mixer/remix 14.3.1 + 14.3.0 F flac: libFLAC 1.1.2,3 libFLAC > 1.1.3 14.3.1 + 14.3.0 PLAY_RATE_ARG SOX_OPTS 14.3.1 + 14.3.0 E norm -b, norm -i gain -B, gain -en 2010-06-14 + 14.3.0 E filter ~=sinc 2010-06-14 + 14.1.0 E resample alias rate 2010-06-14 + 14.1.0 E polyphase alias rate 2010-06-14 + 14.1.0 E rabbit alias rate 2010-06-14 + +LibSoX interface changes: + + o Added new variants of sox_open to allow read/write from/to memory + buffers (in POSIX 2008 environment); see example5.c. (robs) + +File formats: + + o New Grandstream ring-tone (gsrt) format. (robs) + o CVSD encode/decode speed-ups. (Kimberly Rockwell, P. Chaintreuil) + o Add ability to select MP3 compression parameters. (Jim Harkins) + o Now writes out ID3-tags in MP3 files with lame supports it. (Doug Cook) + o Also can write VBR Tag ("XING Header") in MP3 files. (Jim Hark / + Doug Cook) + o Increase percision of MP3 encoders to use 24-bits instead of + 16-bits. (Doug Cook) + o Fix failed writing 24-bit PAF files (and possibly other libsndfile + based formats). (cbagwell) + o Allow libsndfile to be dlopen()'ed at runtime if --enable-dl-sndfile + is used. (Doug Cook) + o Allow amr-nb/amr-wb to be dlopen()'ed at runtime if + --enable-dl-amrwb or --enable-dl-amrnb is used. (Doug Cook) + o amrnb and amrwb formats can optionally use opencore-amr libraries. + (cbagwell) + +Audio device drivers: + + o Add native windows audio driver. (Pavel Karneliuk, Doug Cook) + o Add 32-bit support to ALSA driver. (Pavel Hofman) + o Make OpenBSD sndio audio driver default over older sunau driver. + (cbagwell) + +Effects: + + o Fix [2254919] silence doesn't trim digital silence correctly. (robs) + o Fix [2859842] stats effect crashes on 64-bit arch. (Ulrich Klauer) + +Other new features: + + o Added libSoX example #4: concatenating audio files. (robs) + o Show soxi version & usage information when no args given. (robs) + +Other bug fixes: + + o Fix build so that grouped files (e.g. play -r 6k "*.vox" plays all + at 6k) works. (robs) + o Fix build to support auto file type detection with pipes on FreeBSD + and elsewhere. (Dan Nelson) + o Fix simultaneous play & rec not working. (robs) + o Fix multi-threading problems on multi-core Windows OS; also, change + default to single-threaded. + o Fix mistaken file size with pipe input on Windows. (Doug Cook) + o Fix missing documentation for -R (repeatable), and pulseaudio driver. + o Fix memory leak of format private data. (Slawomir Testowy) + +Internal improvements: + + o Move bit-rot detection support files to sub-directory (could + previously cause build problems). (robs) + o [2859244] Fixes to improve compatibility with MSVC. (Doug Cook) + o Added utilities to help any format handler dlopen() external + libraries at run time instead of link time. (Doug Cook) + o Compiling with mingw now has feature parity with cygwin. (Doug Cook + and cbagwell) + + + +sox-14.3.0 2009-06-14 +---------- + +Previously deprecated features that have been removed in this release: + + Deprec- Feature [O(ption)] + ated in [F(ormat)] [E(ffect)] Replacement + ------- ---------------------- ---------------------- + 14.1.0 E resample * ~= rate + 14.1.0 E polyphase * ~= rate + 14.1.0 E rabbit * ~= rate + 14.2.0 E dither: RPDF,scaled dither (TPDF only) + 14.1.0 F flac: libFLAC 1.1.1 libFLAC > 1.1.1 + + * But interface retained as an alias for `rate'. + +LibSoX interface changes: + + o sox_format_init() has been supeseded by sox_init(). + o Removed obsolete error codes (SOX_E...); new sox_strerror() + function to convert error codes to text. + o Use of sox_effect_options() is now mandatory when initialising an + effect (see example0.c for an example of this). + o sox_flow_effects() has a new (3rd) parameter: a void pointer + `client_data' that is passed as a new (2nd) parameter to the flow + callback function. client_data may be NULL. + +File formats: + + o Slight improvement to A-law/u-law conversion accuracy: round LSB + instead of truncating. (robs) + o Fix length in wav header with multi-channel output to pipe. (robs) + o Fix [2028181] w64 float format incompatibility. (Tim Munro) + o Fix reading AIFF files with pad bytes in COMT chunks. (Joe Holt) + o Fix AIFF file length bug to stop reading trash data on files that + have extra chunks at end of file. (Joe Holt) + o Fix file length being 4 bytes short for AIFF sowt CD tracks. (Joe Holt) + o Fix [2404566] segfault when converting from MS ADPCM wav file. (robs) + o Fix slight FLAC seek inaccuracy e.g. when using `trim' effect. (robs) + o Fix mp3 decode sometimes being up to a block short. (robs) + o Fix not outputing GSM-in-wav when input is GSM-in-wav. (robs) + +Audio device drivers: + + o New native OpenBSD audio handler for play/recording. (Alexandre Ratchov) + o 24-bit support for ALSA handler. (robs) + o Warn if ALSA under/overrun. (robs) + +Effects: + + o New `stats' effect; multichannel audio statistics. (robs) + o New `sinc' FFT filter effect; replacement for `filter'. (robs) + o New `fir' filter effect using external coefficients/file. (robs) + o New `biquad' filter effect using external coefficients. (robs) + o New `overdrive' effect. (robs) + o New `vad' Voice Activity Detector effect. (robs) + o `synth' enhancements: can now set common parameters for multiple + channels, new `pluck' and `tpdf' types, `scientific' note + notation, [2778142] just intonation. (robs) + o New multi-channel support and revised sizing options for `spectrogram'. + N.B. revised options are not directly backwards compatible -- see the + man page for details of the new syntax. (robs) + o Richer gain/normalise options. (robs) + o [2704442] Slight change to `riaa' gain: now norm'd to 0dB @ 1k + (previously 19.9dB @ DC). (Glenn Davis) + o Fix [2487589] `dither' clipping detection & handling. (robs) + o Fix `repeat' sometimes stopping repeating too soon. (robs) + o Fix `repeat' sometimes repeating wrong audio segments. (robs) + o Fix [2332343] 'silence' segfault with certain lengths. (cbagwell) + o Fix `silence' empty output file with A-law input. (robs) + o Fix temporary file problems in Windows (cygwin) with normalise and + other effects. (robs) + o Fix [2779041] spectrogram PNG file is invalid on Windows. (robs) + o Fix [2787587] `trim x 0' should produce zero length audio. (robs) + o Parallel effects channel processing on some hyper-threading/mult-core + architectures. New `--single-threaded' option to disable this. (robs) + +Other new features: + + o Added ability to create shared DLL's on cygwin (cbagwell) + o New `--guard' & `--norm' options; use temporary files to guard against + clipping for many, but not currently all, effects. (robs) + o New `--ignore-length' option to ignore length in input file header (for + simple encodings & for mp3); instead, read to end of file. (robs) + o New `--temp DIRECTORY' option. (robs) + o New `--play-rate-arg ARG' option. (robs) + o New SOX_OPTS environment variable; can be used to provide default + values for above and other options. (robs) + o Grouped files, e.g. play -r 6k "*.vox" plays all at 6k. (robs) + o Automatically `dither'; new `--no-dither' option to disable this. (robs) + o Can now use `v' & `V' keys to adjust volume whilst playing audio (on some + systems). (robs) + o New bitrate, time in seconds, & total options for soxi; bitrate + and file-size display for sox. (robs) + o `Magic' (libmagic) file type detection now selected using `--magic' + option (where supported). + o [2003121] In many cases, no longer need to specify -t when inputing + audio from a `pipe'. (robs) + o Support more Shoutcast URL variants. (robs) + o Added libSoX example #3: playing audio. (robs) + +Other bug fixes: + + o Fix [2262177] SoX build could fail with parse /etc/issue error. (robs) + o Fix "no handler for detected file type `application/octet-stream; + charset=binary'" with raw files when using libmagic. (robs) + +Internal improvements: + + o Rationalise use of and make repeatable across different platforms + pseudo random number generators. (robs) + o Rationalise effects' options interface (getopt compatible). (robs) + o Added stub headers to allow test compilation of all sources on + linux. (robs) + + +sox-14.2.0 2008-11-09 +---------- + +Previously deprecated features that have been removed in this release: + + Deprec- Feature [O(ption)] + ated in [F(ormat)] [E(ffect)] Replacement + ------- ---------------------- ---------------------- + 14.0.0 E pitch new pitch = old key + +File formats: + + o New `.cvu' unfiltered CVSD; supports any bit-rate. (robs) + o New `.sox' native format intended for intermediate files. (robs) + o Fix WAV write on 64-bit arch. (robs) + o Fix writing PRC ADPCM files. (Silas Brown) + o Fix problems reading short mp3 files. (robs) + +Effects: + + o N.B. Reduced default bandwidth setting for `rate' effect from 99% + to 95%; use `rate -s' to be compatible with SoX v14.1.0. (robs) + o New options for `rate' effect to configure phase response, + band-width and aliasing. (robs) + o New options for 'dither' effect: RPDF, TPDF, noise-shaping. (robs) + o New `riaa' effect: RIAA vinyl playback EQ. (robs) + o New `loudness' effect: gain control with ISO 226 loudness + compensation. (robs) + o New `bend' effect; pitch bending. (robs) + o New -b option for the norm effect; can be used to fix stereo + imbalance. (robs) + o Wider tempo range for `tempo' effect. (robs) + o New --effects-file option to read effects and arguments from + a file instead of command line. (cbagwell) + o `filter' effect now supports --plot. (robs) + o Improved documentation for the `stat' effect. (robs) + o Fix broken audio pass-through with noiseprof effect. (robs) + o Fix graph legend display when using --plot octave. (robs) + o Fix rare crash with `rate' effect. (robs) + o Fix [2190767] `norm' under-amplifying in some cases. (George Yohng) + o Fix [2007062] Earwax effect can overflow; should clip. (robs) + o Fix [2223251] mcompand should use linkwitz-riley. (robs) + o Fix `phaser' clicks and overflows. (robs) + o Trim will now skip past 2G point correctly. (cbagwell) + o Improved handling of speed changes in the effects chain. (robs) + +Other new features: + + o New psuedo-effects "newfile" and ":" to allow running + multiple effect chains on a single file. newfile will + create a new output file when an effect chain terminates. + Of most use with trim and silence effects. (cbagwell) + o Can now use multiple pipes as inputs to the combiner; + see `Special Filenames' in sox(1). (robs) + o Display SoX build/run environment information with -V -V. (robs) + o Display (with -V) the detected file-type if it differs from the + file extension. (robs) + o New -t option for soxi; to display the detected file type. (robs) + o New -b/--bits, -e/--encoding alternative options for specifying + audio encoding parameters. (robs) + o [FR 1958680] Support more than 32 input files. (robs) + o New native Mac OSX audio handler for playing/recording. (cbagwell) + +Other bug fixes: + + o Bump library version because it was not binary compatible with + SoX 14.0.1 (Pascal Giard) + o Turn off versioning of special libsox_fmt* libraries since thats + not really needed. (kwizart) + o Fixed crash when running play with no arguments. (Dan Nelson) + o Allow libpng to be found with -static option. (cbagwell) + o Allow libsamplerate to be found if pkg-config is installed but + no samplerate.pc exists. (cbagwell) + o [2038855] external lpc10 lib patch. (Oden Eriksson, Mandriva) + o Fix memory leaks in effects chain when restarting effects. (cbagwell) + o Fixed pkg-config CFLAGS. (evilynux) + o Fix sndfile inclusion in build in some circumstances. (robs) + o Fix [2026912] Fails on URL-like filenames. (robs) + o Always add _LARGEFILE_SUPPORT when off_t is 64bits to work around + buggy platforms. Fixes not able to read WAV files. (cbagwell) + +Internal improvements: + + o Fixed all compiler warnings (with gcc 4.3.1, 64-bit arch.). (robs) + o Updates to internal effects chain API. (cbagwell) + o Retire old FFT routines (speeds up `noisered' effect). (robs) + o Allow effects to use getopt. (robs) + o Use libmagic for mp3. (robs) + o Change sox_seek() offset to 64-bit to work with > 2G files (cbagwell) + o Merged libsfx back into libsox to align with sox.h API. (cbagwell) + + +sox-14.1.0 2008-7-29 +---------- + +Previously deprecated features that have been removed in this release: + + Deprec- Feature [O(ption)] + ated in [F(ormat)] [E(ffect)] Replacement + ------- ---------------------- ---------------------- + 13.0.0 O -e -n + 13.0.0 O -b/-w/-l/-d -1/-2/-4/-8 + 13.0.0 E avg, pick mixer + 13.0.0 E highp, lowp highpass -1, lowpass -1 + 13.0.0 E mask dither + 13.0.0 E vibro ~= tremolo + 13.0.0 F auto Becomes internal only + +File formats: + + o New option --help-format shows info about supported format(s). (robs) + o New WavPack format (includes lossless audio compression, but not + guaranteed lossless file compression). (robs) + o New htk format. (robs) + o Add .f4 & .f8 raw file extensions. (robs) + o Writing aiff, aifc & dvms now repeatable with -R. (robs) + o Writing hcom no longer fails with unsupported rate--chooses + best match. (robs) + o Au/snd: added support for 32-bit integer and 64-bit float PCM + encoding/decoding; display name of unsupported encoding. (robs) + o Can now write .amb (.wav variant) files [FR 1902232]. (robs) + o Can now read 2,3(2.6),4 bit ADPCM .voc files [FR 1714991]. (robs) + o Can now read some MP3 ID3 tags. (robs) + o Can now write Sounder files. (robs) + o Can now write DEC-variant au files (with -x). (robs) + o Comments support for SoundTool files. (robs) + o Fix [1864216] comments mangled when writing ogg-vorbis. (robs) + o Fix short noise at end of alsa playback. (Morita Sho/Tim Munro/robs) + o Fix wve seek accuracy. (robs) + o Fix lpc10 not working. (robs) + o Fix [1187257] wav MS-ADPCM block-align size incorrect. (robs) + o For wav & au, fix [548256] size in header wrong when piping out. (robs) + o Fix IRCAM SF header processing; support all (modern) variants. (robs) + o Fix 24-bit read/write on big-endian systems. (robs) + o Fix crash trying to open non-existent play-list. (robs) + o Fix FLAC read from stdin with libFLAC >= 8. (Patrick Taylor Ramsey/robs) + o Fix [1997637] Trim effect loses samples (with wav). (robs) + +Effects: + + o New `splice' effect; splice together audio sections. (robs) + o New `remix' effect; mixes any number of channels. (robs) + o New `norm' (normalise) effect. (robs) + o New `delay' effect; delay one or more channels. (robs) + o New `contrast' enhancement effect [FR 708923]. (robs) + o Improved `rate' resampling effect; resample, polyphase, & rabbit + now deprecated. (robs) + o New `spectrogram' effect; creates a PNG (if built with PNG lib). (robs) + o `synth' can now sweep linearly and squarely (as well as + exponentially). (robs) + o Can now `fade' out to EOF without giving file-length (if it can + be determined from the input file header). (robs) + o Fix synth max. level setting for some output encodings. (robs) + o Fix crash on 64-bit arch. with tempo & key effects. (Sami Liedes) + o `gain' alias for the vol effect. (robs) + +Other new features: + + o Now possible to control play-back resampling quality (and hence + cpu-load) via the PLAY_RATE_ARG environment variable. (robs) + o Command line support for multiple file comments. (robs) + o New --combine=mix-power option to mix combine using 1/sqrt(n) scaling + instead of 1/n [FR 2012856]. (robs) + o New --input-buffer option to specify (only) input buffer size. (robs) + o New `soxi' utility to extract/display file header fields. (robs) + o Pkg-config support. (Pascal Giard) + o Simple VU meter. (robs) + o Heuristic to detect when playing an album and set + the default replay-gain mode to `album'. (robs) + o Better auto-choice of output file format parameters when + type is different to that of input file. (robs) + o SoX now treats (and displays) encoding size & signal precision + separately. (robs) + o Default audio devices (sox), and allow environment variables to + be used to override the default audio device driver (rec/play) + and default audio device (all). (robs) + o Simpler file info display for `play'. (robs) + o For some file-types, warn if file size seems too short. (robs) + o Added auto-detect for caf, sndr, txw & sf files. (robs) + o Added example0: simpler example of how to develop applications that + use the libSoX effects chain. (robs) + o Added example2: simple example of how to develop applications that + use libSoX to read an audio file. (robs) + o Moved contents of soxexam man page into soxeffect man page. (robs) + +Other bug fixes: + + o Fix [1890983] rec shortcut should apply bit depth (8-bit, + 16-bit, etc.) to input handler. (robs) + o Fix ungraceful handling of out of disc space and other write + errors (bug was introduced in 14.0.0). (robs) + o Fix endian selection (-B, -L, -x) in some circumstances. (robs) + o Fix auto-detect of hcom files. (robs) + +Internal improvements: + + o Use FORTIFY_SOURCE with gcc. (robs) + o Fixed all compiler warnings (with gcc 4.2.3, 32-bit arch). (robs) + o Reimplement (separately) SoundTool & Sounder format handlers. (robs) + o Allow formats & effects to have any size of private data. (robs) + + +sox-14.0.1 2008-01-29 +---------- + + File formats: + + o Added support for non-standard, non-WAVE_FORMAT_EXTENSIBLE + (esp. 24-bit) PCM wav (see wavpcm in soxformat.7 for details). (robs) + + Effects: + + o Reimplemented reverb to be similar to freeverb. (robs) + + Bug fixes: + + o Fix Sndtool read error causing noise at start. (Reynir Stefánsson) + o Fix mixer with >4 numbers, and mixer -3 behaving as mixer -4. (robs) + o Fix [1748909] sox does not report remaining playtime of mp3s. (robs) + o Fix failure to read AIFF files with empty MARK chunk. (robs) + o Fix spurious 'Premature EOF' message in some circumstances. (robs) + o Switched to 16-bit for libao driver since not all its plugins + support it (such as oss, nas, and pulse audio) (Morita Sho) + o Stop crash when "rec" is run with no arguments (Morita Sho). + o Fix -V (without argument) on non-gnu systems. (robs) + o Fix reported (with -V) output audio length in some cases. (robs) + o Fix actual FLAC output file audio length in some cases. (robs) + o Fix poor 24-bit FLAC compression & support newer versions of + libFLAC (1.2.x). (robs) + o Fix loss of 1 decoded FLAC block when using "trim 0 ...". (robs) + o Fix trim when first effect with IMA-ADPCM input wav file. (robs) + + Internal improvements: + + o Let "make distcheck" run some automated test scripts. + o Distribute missing cmake files. + o Fix ogg vorbis compile error on some platforms. + o Remove unused libltdl that could cause header mismatch with + installed libltdl. + o Fix AMR detection with --disable-shared. (robs) + o Updated configure to support linking to static libraries + on mingw for flac, ogg, and libsamplerate libraries. + o Added example1: simple example of how to develop applications that + use the libSoX effects chain. (robs) + + +sox-14.0.0 2007-09-11 +---------- + + File formats: + + o Added ffmpeg support. (Reuben Thomas) + o FLAC: added seekable decoding; added seek-table generation. (robs) + o Added M3U & PLS playlist formats [FR# 1667341] (Note: SHOUTcast PLS + is only partially supported). (robs) + o Made format readers and writers into individual modules for easier + distribution of differently-licensed code. (Reuben Thomas) + o Added libao support. (Reuben Thomas) + o Added support for ADPCM-encoded PRC files, based on Danny Smith's + rec2wav and sndcmp. (Reuben Thomas) + o Added AMR-NB [FR# 728875] & AMR-WB formats (with external libs). (robs) + o Added LPC-10 support. (Reuben Thomas) + + Effects: + + o Use LADSPA effects (one input, one output). (Reuben Thomas) + o --octave option changed to --plot; can now also use gnuplot to + plot effect transfer function. (robs) + o Added soft-knee companding. (robs) + o Show (with --plot) compand transfer function. (robs) + o Allow e.g. "vol 6dB" (as well as "vol 6 dB"). (robs) + o Changed deemph filter from 1st order to 2nd order for + slightly better accuracy. (robs) + o Add option to silence effect to leave periods of silence + in and only strip out extra silence. (Mark Schreiber) + o synth can now generate any number of channels. (robs) + o mixer can now mixdown to mono any number of channels. (robs) + o Added oops effect (mixer special case). (robs) + o All effects that could only work on mono or stereo audio, now + work with any number of channels. (robs) + o Added WSOLA-based key and tempo effects. (robs) + + Other new features: + + o Show (with -S) if clipping is occurring. (robs) + o Added internet input file support (needs wget). (robs) + o Made it possible to build without sound drivers. (Reuben Thomas) + + Bug fixes: + + o Fix (m)compand transfer function non-linearities; fix compand + drain volume. (robs) + o Fix crash with pan effect. (robs) + o Add missing RM define to Makefiles so installs work. + (Bug# 1666599) (cbagwell) + o Fix I/O performance regression in 13.0.0. (Reuben Thomas) + o Fix .lu, .la read regression in 13.0.0 [Bug# 1715076]. (robs) + o Fix uncompressed NIST/Sphere read regression in v13 [Bug #1736016]. + o Fix displayed times when playing a file and using trim. (robs) + o Fix CDDA sector duration display for non-CDDA sample rates. (robs) + o synth fixes: brown noise; inverted square wave; offset < 0. (robs) + o Fix crash when encoding Vorbis or FLAC: with no comment. (robs) + o Fix effect drain problems: chorus, echo(s), phaser. (robs) + o Fix rabbit responsiveness and memory problems. (Peter Samuelson) + o Fix broken stereo audio when recording using ALSA. (robs) + o Fix OSS driver on big endian machines that was introduced in + last release. + + Internal improvements: + + o Renamed libst to libsox for name recongition and to avoid + duplications with other existing libst libraries. (Reuben Thomas) + o Moved effects to libsfx. (Reuben Thomas) + o Got rid of several hundred compiler warnings. (robs, Reuben Thomas) + o Added basic performance testing of I/O. (Reuben Thomas) + o Effects chain processing now available in libSoX. (robs) + o Added effects-chain buffering for effects that use a window [FR# + 1621695]. (robs) + o Added cmake build files for Win32. (robs) + + +sox-13.0.0 2007-02-11 +---------- + + File formats: + + o Support for .caf, .paf, .fap, .nist, .w64, .nist, Matlab 4.2/5.0 + (Octave 2.0/2.1), .pvf, .sds, .sd2 and .xi file formats via libsndfile. + If available, libsndfile can also be used to handle all the other file + formats it understands. (Reuben Thomas) + o Add FLAC support (robs) + o Support Maxis's XA format. (Dwayne C. Litzenberger) + o Add support for 24-bit PCM raw, wav (WAVE_FORMAT_EXTENSIBLE) [FR# 801015], + au, aiff, & flac files. (robs) + o Add AIFF-C output support. (shashimoto) + o New .ima file format for raw IMA ADPCM. (robs) + o Allow the rate and number of channels of .au files to be overridden + by command-line arguments. (robs) + o Add seek support for GSM data in WAV files. Rafal Maszkowski + o Allow encoding quality to be specified (FLAC & Ogg, but not + MP3 yet). (robs) + o Rename -b to -1, -w to -2, -l to -4, -d to -8, and mask to dither. + (robs) + o New options for specifying endianness (and separate options for + nibble & bit reversal) [FR# 1621702]. (robs) + o Improved multi-channel file reading; fixes [1599990]. (robs) + + Effects: + + o Equalizer effect (Pascal Giard) + o bass and treble altering effects. (robs) + o New optional rabbit resample routine, using libsamplerate + (aka Secret Rabbit Code). (Reuben Thomas) + o Added allpass filter effect. (robs) + o Documented the butterworth filter effects; added variable Q. (robs) + o "rate" effect made an alias for "resample". + o Visualisation of various filters' frequency response via Octave. (robs) + o Can now specify width of many 2nd-order filters as: Hz, octaves, + or Q. (robs) + o Dither/mask amount now specifiable. (robs) + o Consistent (and hopefully complete) clipping detection and + reporting. (robs) + o Allow command-line time parameters of < 1 sec to omit the + leading 0. (robs) + o Improved synth usage and improved the synth entry in the man- + page. (robs) + o Higher quality audio speed adjustment; also fixes [1155364]. (robs) + o Replacement flanger effect; also fixes [1393245]. (robs) + o Added silence padding effect. (robs) + o Added ability for noiseprof to use stdout and noisered to use stdin + [FR# 1621694]. (Reuben Thomas) + o vibro effect name deprecated in favour of tremolo; this effect + reimplemented as a special case of synth. (robs) + + Other new features: + + o Remove soxmix. (Reuben Thomas) + o Preview mode now removed, as all it did was use rate rather than + resample, and rate has been removed. + o -V now gives only user-relevant messages, use -V -V to get + developer-relevant messages. (robs) + o -V output much improved and expanded; now includes display of + (auto-)selected effects. (robs) + o sox man-page overhaul, new soxexam man-page entries. (robs) + o Added command line options for specifying the output file + comment. (robs) + o Added ability to merge e.g. 2 mono files to 1 stereo file + [FR# 1297076]. (robs) + o Removed the restrictions whereby multiple input files had to have + the same data encoding & size, and in most situations where they + had to have the same # of channels, and for play where they had + to have the same sampling-rate. (robs) + o Options to apply replay-gain on input; enabled by default + with `play'. (robs) + o Can now use Ctrl-C to skip to next track when playing multiple + files (e.g. play *.mp3); Ctrl-C twice to exit. (robs) + o Added --interactive option to prompt to overwrite pre-existing + output file. (robs) + o Added large file support. (Reuben Thomas) + + Bug fixes: + + o Fix writing MP3 files on AMD64 processors. + o More fixes to MP3 tag reading. Sometimes tags were + detected as valid MP3 frames. + o Fix to stop, avoiding a crash, when starting of effects fails. + (Reuben Thomas) + o Fixed a bug introduced in 12.18.2 that stopped the draining + of effects from occuring. This had stopped the reverse effect, + among others, from working. (Reuben Thomas) + o Several effects are now optimised out in situations where they need + do nothing, e.g. changing rate from 8000 to 8000, or changing volume + by 0dB [Bug# 1395781]. (robs) + o Fix rounding error when reading command-line time + parameters. (robs) + o Fix nul file hander ignoring other format options if rate + option has not been given. (robs) + o Fix synth length accuracy. (robs) + o Fix broken audio when downmixing with any of the following + effects: synth, deemph, vibro. (robs) + o Fixed deemph & earwax effects to work with MP3, vorbis, + & FLAC. (robs) + o Fix wav file handler discarding the last PCM sample in certain + circumstances. (robs) + o Fix [1627972] AIFF read bug when MARK chunk present. (Richard Fuller) + o Fix [1160154] VOX to WAV conversion problem. (robs) + o Removed (for output file only) the potentially + problematic -v option. Use the vol effect instead. (robs) + o Improved the accuracy of integer and floating point PCM + conversions. (robs) + o Don't go into a loop on zero-padded WAVs. (Jorge Serna) + o Fix to AIFF writing to avoid writing invalid files in some situations. + (Reuben Thomas) + o Fix compander effect bugs: [1613030] Compand fails to compress + clipping, [1181423] compand with 0 sec attack/release. (robs) + + Internal improvements: + + o More and better self-tests. (robs) + o Build system overhaul to use the full set of GNU autotools. + (Reuben Thomas) + o Add new getopt1.c to win32 project file. + o Remove old, optional rate change and alaw/ulaw conversion code. + (Reuben Thomas) + o Removed the old internally invoked (but mentioned in the man page) + copy effect. (robs) + + +sox-12.18.2 2006-09-03 +----------- + + o Adding in Debian's disk full fix (#313206). + o Finally got rid of reference to cleanup() function in + library. Applications are now required to detect + all failures from return codes and cleanup as they + want. + o Changed how list of formats and effects are stored internally. + Effects libst users only. Dirk + o Store effects usage so that its accessable by applications. + Dirk + o Modify the synth effect to not use SIGINT to stop processing + and instead return ST_EOF. This allows exact acount of + samples to be written out instead of an approximate amount. + o Fix hangup when attempting to write stereo MP3 files. + (1512218) Kendrick Shaw + o Fix deemph effect would lose stereo separation. (1479249) robs + o Adding cross-platform support for getopt_long + o Make help screens print much more information and add + new --help-effect option. (Originally from Dirk). + o Add support for using an external gsm library instead of + just the internal one. Vladimir Nadvornik + o Updates to nul file handler to prevent crashes during output. + Martin Panter (1482869) + + +sox-12.18.1 2006-05-07 +------------ + + o The "filter" effect could go into infinite drain mode. Now + only drain 1 buffer. noisered as well. + o SoX was ignoring user aborts (ctrl-c) if it occured during + effect drain operations. This was bad if effects had + bugs and stuck in infinite loop. + o Stop SoX from crashing when file type could not be auto + determined (1417776). + o Output filenames with multiple '.' confused SoX. (1417776) + Christian Hammer + o Moved to a common set of CLIP routines. This fixed clipping + bugs in noisered and mcompand. + o Stop SoX from crashing on sphere files that contain large text + strings. (1430025) Ulf Hamhammar + o Fix some overflow crashes in aiff handler. (1430024) Ulf Hamhammar. + o Under windows, set piped input/output to binary mode (1417794). Martin + Panter + o Fixed broken internal version of strdup(). (1417790) Marty + o Stop infinite loop when reading MP3's with a tag size of + exactly 8192 bytes. (1417511) Hans Fugal + o Fix typo in stlib.dsp for loading in Visual Studio 6. + o Fixed problems in silence effect related to removing multiple + periods of silence from the middle of the sound file. + o Reduced the window size greatly on the silence effect to + prevent leaving in silence that looked like noise still based + on RMS values. + o Prevent infinite loop in pitch effect from uninitialize variable. + Frank Heckenbach + o Prevent crashes when printing error mesages (1447239) + o Added makefile and support files to compile using Open Watcom + compiler. (1417798) Marty + o Stop calling flow() on effects that returned EOF during drain(). Allows + two back-to-back reverse effects to work. + o Added support for multiple channels in .dat files. + (1366634) tomchristie + + +sox-12.17.9 2005-12-05 +----------- + + o Updates to compile under VC6. Jimen Ching + o Declare st_signalinfo_t to specifically be signed in case + platform does not default ot signed chars. This + is required for NetBSD/powerpc. + o When seek()ing in AIFF, SMP, and WAV handlers, remaining samples were + incorrectly computed based on bytes and not samples. Jukka + o Changed noisered effect to just warn during clipping instead + of aborting. Ian Turner + o Fixed bug were pieces of audio were lost every buffer read + when running both -c and -r options together on mono audio. + Users probably percieved it as shorter audio files that + played with a sped up tempo. + Bugfix will also apply to other times when multiple effects + are ran on the command line. + o Added support for -V option to play/rec scripts. + o Fix to silence effect to allow negative periods to be specified + (to remove silence from middle of sound file). + o Fix swap option handling so that special case of "swap 1 1" will + work. + o Track length of Ogg Vorbis files on read. + o Add support for displaying a status line that tracks progress + of read/write routines. Part of information requires read + file handlers to be able to determine file length. + o Converted alsa driver to use asoundlib instead of directly + talking to kernel driver. This also means that device names + are now the ALSA logical names instead of /dev type names. + o Added ALSA support to play/rec scripts. + o Added st_open*, st_read, st_write, st_seek, st_close routines + to help simplify developer interface to libst. See libst.3.. + o Removed st_initformat(), st_copyformat(), and + st_checkformat() from library. If your app used those + functions then copy them from 12.17.8 source code + directly into your application or update to use new + routines. + o Force word-alignment on AIFF SSND and APPL chunks on input. + Matthew Hodgson. + o Add fix to WAV handler to only return data in multiples + of sample_size*channels to better handle corrupt files. + o Fixed bug where "-4" option didn't work with avg + effect (Tom Christie). + o Fixed fade's fade-out-length to match man page + description as noted by Geoff Kuenning. This required + updates to the sample crossfade scripts. Also modified fade + effect to report when no more samples will be produced to + prevent unneeded reading of whole file. + o Allow aborting SoX with SIGTERM, along with previous SIGINT. + Norman Ramsey. + + +sox-12.17.8 2005-08-22 +----------- + + o noisered effect had compile problems with some compilers. + o "-x" option was being ignored since 12.17.7. + o Stuart Brady added support for reading and writing RIFX files (big + endian RIFF/WAV files). Also added support for auto detecting + DEC-style ".sd\0" files. + o Gene Mar found typo in polyphase nuttall calculation. + o SMP buffer overflow (detected by gcc 4.0). Reported by Marcus Meissner + and Matthias Saou. + o Fixed URL in manpage to resample overviews. + o Fixed WAV handler so that it didn't think WAV chunks with max size + were invalid chunks. This allows WAV's to be used in pipes since + they have to default to max size. + o WAV files with alaw or ulaw data don't need extended format chunks. + (Lars Immisch) + o In AIFF files, fixed problem were short comments should cause + AIFF handler to get confused and become misaligned. + + +sox-12.17.7 2004-12-20 +----------- + + o Christian Weisgerber sent patches to man page fixes + and patches for sunaudio driver on openbsd. + o Default volume for soxmix wrongly set to 0 instead + of 1/#_input_files (float rounding error). + o Update to ALSA driver to do a better job of detecting + unsupported sample rate/size/encoding and change to + a supported one. + o Fix bug in alsa writing were last last partial buffer + wasn't being flushed. + o Guentcho Skordev pointed out ogg vorbis files were using + the same value for serial numbers each time. + o Changed sox to only read the exact size of a WAV data chunk + if cooledit IFF LIST chunk is found at the end of the file. + Normally, this isn't done to allow reading > 2gig WAV files. + o Modified configure to detect cygwin compiler after detecting + gcc compiler (fixes some default CFLAGS options). + o Added explicit rule for compile *.o from *.c so that + CPPFLAGS is always referenced. Not all platform's default + rule includes CPPFLAGS (FreeBSD). + o Under linux, add include path to /lib/modules/* so that ALSA + include files can be auto detected. + o Ian Turner added an effect to remove noise from an audio + file by first profiling silent periods of the audio + to determine what the noise is (like background hiss on + cassette tapes). + + +sox-12.17.6 2004-10-13 +----------- + + o Changed comment code to always use copies of strings to + fix bug in WAV handlering freeing argv[] memory. + o Use calloc() to create ft_t structures so that all + memory is initialized before being referenced. + o Fixed VOC EOF bug were it thought there was an extra + block when there wasn't. + o Restructured directory layout so that source code is in + a seperate directory. + o Modified SoX to accept multiple input files. Concatenates + files together in this case. + o Removed map effect so that loops and instr could be removed + from effects structures. This makes effects engine stand + alone from the rest of the sox package. + o Benedikt Zeyen found a bug in synth effect when generating + brown noise that could cause clipping. + o David Leverton sent another patch to prevent crashes on + amd64's when resampling. + o Fixed a bug were MP3 files with large ID3v2 tags could + cause SoX to stick in a loop forever. Now, it will + abort on IDv3 tags larger then 100k. Could still be + improved to handle any size. + o Changed volume option (-v) so that it tracks the file + it was specified. This means that when specified with + the input file, it changes volume before effects engine + and when specified with output file, its done after effects + engine. + o Added crossfade_cat.sh script that will concatenate to + audio files and do a crossfade between them. + o Fixed bug in fade effect were it was impossible to do a + fadeout starting from the beginning of the audio file. + o Removed rounding error when changing volume of audio with + "-v" option. This error caused doing a "-v -1.0" twice + to not result in the original file. + o Fixed a possible overflow in lots of effects were MIN + value was treated as -MAX instead of -MAX-1. + o Modifed sox so its OK for effects to not process any + input or output bytes as long as they return ST_EOF. + o When effects output data and reported ST_EOF at the + same time, that buffer was discarded as well as + data from any chained effect. + o Added patch from Eric Benson that attempts to do a seek() + if the first effect is trim. This greatly speeds up + processing large files. + o Daniel Pouzzner implemented a multi-band compander (using + the butterworth filters to split the audio into bands). + o Donnie Smith updated the silence effect so that its possible + to remove silence from the middle of a sound file by + using a negative value for stop_periods. + o Changed float routines to only work with normalized values + from -1:1. + o Modifed .au handler to be able to read and write 32-bit + and 64-bit float data. Only tested reading so far. + o WAV with GSM data now always pads data to even number of bytes. + o Added support for writing 32-bit audio to AIFF. + + +sox-12.17.5 2004-08-15 +----------- + + o Thomas Klausner sent in patches to compile audio drivers under + NetBSD. + o Rahul Powar pointed out a memory leak in the WAV file handler. + It wasn't calling the correct close() function when closing + input files. + o Modified play.1 man page to not use multiple name lines. This + appears to confuse some conversion programs. Updated sox.1 + man page for typo in reverb option. + o Andrew Church fixed problem with header of stereo 8SVX files. + o Jimen Ching added support to scan over garbage data at the + beginning of MP3 files to find valid frames. This is useful + to play WAV and AIFF files that have MP3 data in them until + those handlers support it directly. To play those, force + sox to use the mp3 handler with the "-t mp3" option. + o Added patch from Ulf Harnhammar to wav handler to prevent + buffer overflows. + o Added patch from Redhat to allow resample to work on certain 64-bit + machines (Sam Varshavchik) + o Tony Seebregts added a file handler for headerless Dialogic/OKI ADPCM + files (VOX files). + o Jan Paul Schmidt added a repeat effect to do loops the brute force way. + This is also good for file format that don't support loops as well. + o Fix for OSS driver in rate tolerance calcs that were off because + of type conversion problems. Guenter Geiger. + o Allow reading sphere files with headers greater then 256 bytes. Jimen + Ching. + o Fix for vorbis were comments are displayed in KEY=value format always. + Stop printing some info to stdout in case output is a pipe. Guenter + Geiger. + o J Robert Ray submitted fix for AIFF handler to ignore lowercase + chunks that are unknown. + o Bugfix for 8-bit voc files. Jimen Ching + o General warning cleanups (cbagwell) + o Memory leaks in reading WAV files (Ufuk Kayserilioglu) + o Rearrange link order of ogg vorbis libraries so that they + can be compiled as static. (Christian Weisgerbr) + + +sox-12.17.4 2003-03-22 +----------- + + o Peter Nyhlen fixed a problem with reading Comments in Ogg Vorbis files. + o Added install target to allow installing libgsm from main Makefile. + Leigh Smith. + o Minor updates to sox.c to free unused memory and close all input + files during failures. + o Pieter Krul added a patch that makes play script look at AUDIODEV + environment variable if it exists to find which device to use. + This allows scripts to work with Solaris SunRays and is a good idea + in general. + o Updated config.sub to detect latest supported OS's. + o Fabrizio Gennari added support for reading and writing + MP3 files using the external libraries libmad and libmp3lame. + o Jens Henrik Goebbert sent in several bugfixes for integer overflows + in the compand effect. + o Dan Dickerman sent in patches for integer overflows in the resample + effect. + o Jimen Ching sent in a fix for multi-channel sound file processing + using the avg effect. + o Richards Bannister added patches to clean up prototypes and filter + private sizes being to small. + o Jimen Ching adds -d option to specify 64bit data size and changed + Ulaw/Alaw encoding to default to 8bit data size if not specified. + o David Singer pointed out that a MS program creates AIFF files + with an invalid length of 0 in its header. Changed SoX to warn the + user but continue instead of aborting since SoX can still read + the file just fine. + o Bert van Leeuwen added a file handler for Psion record.app used + for System/Alarms in some Psion devices. + o Richard Bannister sent in a patch to make writing vorbis files + work with Vorbis 1.0 libraries. + o Fixed configure scripts so that they can be ran with the + --with-oss-dsp, --with-alsa, and --with-sun-audio options. + Was causing compile time problems. Reported by Raul Coronado. + o Change Ogg Vorbis support to use VBR encoding to match defaults + of oggenc based on suggestion from Christian Weisgerber. + o Prints error message now when a channel value of -1 is given. + Reported by Pierre Fortin. + o Fixed bug were memory could be trashed if a input WAV file contained + a comment. Found by Rhys Chard. + o Change command line to compile soxmix.o slightly to try and make + Forte compiler happy. + o Added support for ALSA 0.9 driver. Jimen Ching + + +sox-12.17.3 2001-12-15 +----------- + + o Removed check that prevented pan from being invoked when the + input and output channels were the same. + o Ciaran Anscomb added a flush to sunaudio driver after changing + settings. This is because it can start buffering data as soon + as the device is open and the buffered data can be in a + wrong format. + o trim wasn't accounting for # of channels and was generally broken. + o Jeff Bonggren fixed trim bugs were it was failing when triming + data that equaled to BUFSIZ. Also, trim now immediately returns + ST_EOF when its done instead of requiring an extra call that + returns no data. + o auto effect wasn't rewinding the file if the file was less then + 132 bytes. Changed auto parsing of header to be incremental + instead of reading in a large buffer. + o William Plant pointed out a bad pointer access in fade effect's + parsing of options. + o Ken pointed out a problem were private data was not 8-byte aligned + and causing crashes on most RISC CPU's. Fixed by going back to + old style of declaring private data as type "double" which usually + forces strictest alignment. + o ima_rw was miscompiling on alpha's because of a header ordering + problem. + o Erik de Castro Lopo pointed out that when writing 16-bit VOC files + the headers did not contain the correct length or encoding type. + o Seperated st.h into 2 files. st.h for libst users and st_i.h for + internal use. + o Added new types used extensively by libst: st_sample_t & st_size_t. + This allows for more deterministic behavior on 64-bit machines and + also allows sox to possibly work with much larger file sizes. + o SoX was some times getting confused and thinking an EOF was an + error case when reading audio files. Removed unneeded aborts + when EOF was OK. + o Silence effect was broken on stereo files. Also, made thresholds + relative to original bit percision of audio data. When 16-bit audio + is scaled up to 32-bits, a little bit of noise starts to look like a + large amplitude of noise. Also, now using RMS values to smooth out + clicks. RMS rolling window size is 1/10 of sample rate. + o Changed Floats into a type of encoding instead of a size of audio data. + o Put a flush at the end of OSS driver so that no old data would be + left in internal buffers after changing audio format parameters. + o Fixed problem where play script wasn't installed correctly if you + build from another directory (pointed out by Mike Castle). + o Made GSM support internal to libst (no external library required). + o Change configure script to enable ulaw/alaw lookup tables and GSM + support by default. Also have Makefile's make use of more configure + prefix options to allow for customized installs. + o Reverted ulaw/alaw conversion routines back to Sun's versions. + o Modified raw file handler to write files in the same generic buffered + fashion that was added for reading in 12.17.2. Seems to have + speed up some types of writing. + o Reading Ogg Vorbis files could get confused of when EOF was reached. + o Added uninstall rules to Makefile. Added new ststdint.h to define + *int*_t typedefs. + o Added internal strcasecmp for OS/2. + o Added support for swapping "bit" order (MSB becomes LSB) for raw u-law + and A-law data. Some ISDN equipment prefers it this way. Use -x flag + or new .la or .lu file extensions. + o Annonymous patch submitted to fix types and spelling problems in + various files. Also, updated VOC files to have u-law and A-law + support as well as able to read in VOC files using a pipe. More + examples added to soxexam file. + + +sox-12.17.2 2001-09-15 +----------- + + o Daniel Culbert found and fixed a bug in the polyphase effect + that occurs on platforms that rand() can return large values. + The bug resulted in polyphase resampling an audio file to a + different rate then it said it was. + o Stan Seibert contributed a handler for Ogg Vorbis files. It + handles all input formats but can only save using default + settings. + o Darrick Servis has made major cleanups in the code in regards + to error conditions. Helps people using libst. + o Darrick Servis has added added optional seek functionality sox. + Several formats have been modified to make use of this. + o Geoff Kuenning rewrote the average effect into a general-purpose + parametric mapping from N channels to M channels. + o Geoff Kuenning added an optional delay-time parameter to the compander + effect to allow companding to effectively operate based on future + knowledge. + o Geoff Kuenning Added support to fade and trim effect for specifying time + in hh:mm:ss.frac format. + Fixed a bug that caused integer overflow when large start/stop times + were used. + o Geoff Kuenning updated play/rec/soxeffect scripts to handle all effects + added since 12.17. Spell-checked soxexam.1 file. + o Jimen Ching updated ALSA configure support to auto-detect 4.x or 5.x API + and compile correctly under those two. All other versions are unsupported. + o Merged in the NetBSD package changes into CVS finally. + o Removed broken support for non-ANSI compilers. + o Makefile now places the correct path to SoX in the play/rec scripts + based on configuration script values. + o Alexander Pevzner provided a fix for OSS driver for sound being + dropped under heavy CPU loads. Moved GETBLKSIZE operation + until after setting up the format (SBLive! was modify the block size + after changing formats). + o With help from David Blythe, updated OSS drivers to use newer format + interface. OSS driver will now attempt to detect a valid endian type + to use with sound card. + o Carsten Borchardt pointed out a bug in lowp filter. Added new + nul file handler that reads and writes from/to nothing. + Also added new synth effect that creates sounds using a simple + synthesizer. Created a testcd.sh that uses two new features + to create a test sound CD for testing audio equipment. + o Ben Last added a new program that uses libst and will merge two + seperate audio files into a single file with multiple channels. + This was merged into the standard sox.c file by cbagwell. + o Andreas Menke fixed some problems with the speed effect and + how effects were drained. Also improved the usage of printf()'s + to use stderr. + o Corrected AU header length value when comments were less than + 4 bytes. + o Added support for reading non-standard bit size data from AIFF files. + o Ignore unmatched MARK/INSTR chunks in AIFF files now instead of quiting. + o Fixed ALAW encoding bug in .au files as pointed out by Bruce Forsberg. + o Unified the raw reading functions. Probably slightly faster for + most datatypes but was done to fix recording from the OSS driver. + Control-C stopped working somewhere during the 12.17 series. + o Ford Prefect added a dcshift which can shift the midline amplitude + towards the true center. This will allow for a greater range + of volume adjustments without clipping audio data. + o Heikki Leinonen submitted a silence effect that will trim off + silence from the beginning of a file. cbagwell made some modifications + to trim off front and back as well as some other tweaks. + o Made the "auto" effect the default file handler for input files. + Also have auto handler now use file extensions if it can't figure + it out. + + +sox-12.17.1 2000-11-19 +----------- + + o Andreas Kies fixed a bug were we were not detecting correctly + if an output file was seekable. + o Fixed a bug in the mask effect introduced in 12.17. If the libc + version of rand() returned more then 15-bit values then it would + trash your data. Reported by Friedhel Mehnert. + o Added a new fade in/out effect from Ari Moisio. + o AIFF files now ignore a MARK chunk if the loop type is NoLoop (0). + o Fixed bug were it was impossible to output ADPCM data in wav files. + o Fixed bug were rate had to be specified for sphere files (fix from + Antti Honkela). + o Added small work around to let compile with cygwin's gcc 95.2 + which also now allows to compile with GSM support under windows. + o Removed accessing of sound devices in tests for sound support and + instead just look for needed header files. This allows the sound + support to be detected even if the device is currently busy or when + compiled on a box that doesn't have a sound card but the OS supports + it (which is the enviornment of most distributions creating new + binaries). + o Added support to partially handle AIFC files but only uncompressed + versions. This should allow people to work with raw CD audio data + on Mac OSX and also gives a basis for adding future support for + things like ADPCM processing. + o Added new "earwax" effect from Edward Beingessner. It is meant to + be used for CD audio played through headphones. It will move the + sound stage from left/right to in front of you. + o Trim effect did not compute locations as was documented in the + man pages. Changed effect so that it computed the time the + same way that the fade effect does. + + +sox-12.17 2000-09-08 +--------- + + o Sox can now read and write w98 compatible gsm .wav files, + if compiled properly with libgsm. Thanks go to Stuart + Daines for the gsm-wav patches. + This is new, and relatively untested. See -g format option. + o Sox can now write IMA_ADPCM and ADPCM compressed .wav, + this is new, and relatively untested. See -i and -a format + options in manpage. + o General changes to wav.c for writing additional wav formats. + Reading wave headers: more consistency checks. + Writing wave headers: fixes for w98. + o Speedups to adpcm read routines, new codex versions are + now in ima_rw.c and adpcm.c. + o Speedups for raw.c, especially for gcc with glibc. + o Fixed a segfault problem with ulaw/alaw conversion, where + an out-of-range index into the tables could occur. + o More detailed output from the stat effect. + o Continued rewrite of resample.c, now it is almost as + fast with floating arithmetic as the old (buggy) version + was with 16-bit integer arithmetic. The older version + in sox-12.16 shifted frequencies slightly and was less + accurate. (Stan Brooks) + o Extensive rewrite of polyphas.c, should be faster and use less memory + now. The sox-12.16 polyphase code had some bugs. (Stan Brooks) + o New effect 'filter' which is a high-quality DSP lowpass/ + highpass/bandpass filter using windowed sinc function + methods, like polyphase and resample. (Stan Brooks) + o Jan Paul Schmidt added new low/high/bandpass and bandlimit + filters to sox. They have much better results then the old + versions of low/high/bandpass. The new effects are all + Butterworth filters. + o New data file type supported, -sl or extension .sl for + signed 32-bit integers. Some simplification of the raw.c + source. + o Some test programs and scripts in the test directory, for + making gnuplot plots of frequency response, error-levels + of rate-conversion and filter effects. + o Removed sbdsp code. All modern unixes are support via OSS, + ALSA, or sun audio device interfaces. + o Added AVR handler from Jan Paul Schmidt. + o SoX now waits until the last possible moment before opening + the output file. This will allow all input and effect options + to be parsed for errors and abort before overwriting any file. + o SoX will no longer write to files that exists. This will keep + it from deleting files when a user mistakenly types "sox *.wav". + o Added new compander effect from Nick Bailey. Nice general purpose + filter. + o Under Solaris, SoX now checks hardware ability to play stereo/PCM + and forces output data to match. Sorry, no SunOS support. I don't + have access to one any more. + o Fixed array overrun bug in rate effect as pointed out by Ian + Donaldson. + o Fixed clip24() range as pointed out by Ted Powell. + o Fixed possible segfault in echos effect, as pointed out by Zinx + Verituse. + o Moved most documentation to new "soxexam.1" manual page so that + all users on a unix system will have access to important information. + This means no more TIPS, CHEATS, or CHEATS.eft files. + o Richard Kent fixed a byte alignment problem in aiff comment code. + o Loring Holden added support to create missing directories on install + and support for installs from outside the source directory. + o Fabien COELHO added a pan and volume effect. + o Fabien COELHO added a speed effect to sox (like speeding up a tape + machine). Also added pitch which changes pitch without effecting + duration and stretch which stretch time without effecting pitch. + o Leigh Smith updated aiff support to use the COMT check when writing + comments instead of the ANNO. It is the prefered method from Apple + and newer programs are starting to require it. Also fixed some bugs + in how we compute the length of various chunks in output files. + o Changed the default block alignement for IMA ADPCM WAV files to use + 256 which is what windows programs use. Badly written readers expect + 256. + o Matthias Nutt helped add support for specifying multiple effects + to SoX on the command line. + o Curt Zirzow added a trim effect to trim off audio data. + o Updated ALSA driver to support new interface. Jimen Ching + + +sox-12.16 1999-07-13 +--------- + + o Changed raw data functions to perform I/O operations using block reads. + Should improve speeds greatly, especially when filesize is in megs. + Got code ready to tweak speed more which also forced me to clean up + Endian test code. + o Fixed a bug in .au's handling of G.723. It wasn't using the correct + number of bits. Added A-law support to .au. + o Quoted $filename in play/rec scripts so that files with spaces in + their names can be given. + o Old OS/2 support didn't work. Replaced with known working EMX + GCC compatible code. + o ADPCM WAV files were defaulting to 8-bit outputs and thus losing + some persision. Now defaults to 16-bit signed uncompressed data. + o Fixed a couple cross-platform compiler issues. + o Jimen Ching has added support for "configure" in to SOX. Finally, + a good solution to cross-platform compiling! + o Jimen Ching has added native support for the ALSA driver to play + and record audio from. (jching@flex.com) + o Minor correction for -r example in manual page. + o Renamed sox.sh to soxeffect and rewrote. Symbolic links can be made + from this file to the name of a sox effect. It will then run that + effect on STDIN and output the results to STDOUT. + o Fixed up some makefiles and 16-bit support from patches sent by + Mark Morgan Lloyd (markMLl.in@telemetry.co.uk). Also added some + nice DOS test bat files from him as well. + o Cleaned up some more cross-platform compile problems. In the process + got it working with Turbo C again, kinda. It still locks DOS up at times. + o Made AIFF handler work with invalid headers that some programs generate. + Also fix an Endian bug thats been there for quite a long time (when + ran on Intel machines). Made comment lengths even length to make + most MacOS programs happy. cbagwell + o Resample function was updated by Andreas Wilde + (andreas@eakaw2.et.tu-dresden.de) to fix problem were freqs. were + off by a factor of 2. + o Added an effect that swaps stereo channels. cbagwell + o Combined play and rec scripts to a single program to ease mantaince. + Also added GNU style long-options (--help). Careful, some options have + change (but more logical). + o Fixed a very old silly bug were low/high/bandpass filters would + add some trash data to the end of the sound file. + o "avg" effect wouldn't give error message when you tried to average + x number of channels in to the same number of channels. + o Fixed core dump when writting AIFF files with no comments. + (Olaf Pueschel) + + +sox-12.15 1998-10-01 +--------- + + o Juergen Mueller moved Sox forward quite a bit by adding all the + most commonly known "Guitar Effects". He enhanced echo support, + added chorus, flanger, and reverb effects. He also wrote a very + handy CHEAT.eft file for using various effects. + o Incorporated Yamaha TX-16W sampler file support provided by + Rob Talley (rob@aii.com) and Mark Lakata (lakata@physics.berkeley.edu). + o Fixed a small bug in hcom compression, dependent on sign + extension. Leigh Smith (leigh@psychokiller.dialix.oz.au). + o sox -h now prints out the file formats and effects supported. + Leigh Smith and Chris Bagwell. + o smp transfers comments more completely. Leigh Smith. + o aiff manages markers and loops correctly and produces more + verbose output. Leigh Smith. + o Added polyphase resampler (kb@ece.cmu.edu). This adds a slightly + different resampling algorithm to the mix. + o Michael Brown (mjb@pootle.demon.co.uk) sent a patch to stop crashes + from happening when reading mono MS ADPCM files. + o Fabrice Bellard has added a less buggy 'rate' conversion. I've left + the old rate code included but if all goes well this will become + the new 'rate'. Please test and let me know how it works. Resample + effect needs to be reworked now. + o Heiko Eissfeldt: Implemented a simple deemphasis effect for + certain audio cd samples. + o Matija Nalis (mnalis@public.srce.hr) sent a patch to fix volume adjustment + (-v) option of sox. + o Fixed typo in optimazation flag in unix makefile, as pointed out by + Manoj Kasichainula (manojk@io.com). + o Fixed missing ';;' in play script. cbagwell + o Fixed bug in determining length of IMA and MS ADPCM WAVE files. cbagwell + o Fixed bug in how stereo effects were drained which fixed the + "reverse" effect from only saving half of stereo files. cbagwell + o Can use "-e" without an effect again. + o Added -g and -a options for new style support of GSM and ADPCM. Added + error checking to various formats to avoid allowing these types. + + +sox-12.14 1998-05-15 +--------- + + o Bumped major version number up and shortened name. The shorter name + should help the various distributions using this package. + o Added support for MS ADPCM and IMA (or DVI) ADPCM for .wav files. + Thanks to Mark Podlipec's xanim for this code (podlipec@ici.net). + o Change Lance Norskog's email address to thinman@meer.net. The old + one was bouncing. + o Added path string to play and rec strings so that it could be run by + users without complete paths setup (i.e. Ran by "rc" files during bootup + or shutdown) + o Fixed -e option from Richard Guenther + (richard.guenther@student.uni-tuebingen.de) and fixed a small bug + in stat. + o Fixed a bug in the mask effect for ULAW/ALAW files. + o Fixed a bug in cdr output files that appended trash to end of file. + o Guenter Geiger (geiger@iem.mhsg.ac.at) made a rather large patch to + allow sox to work on 64-bit alphas. It was done the easiest meathod + by changing all long declarations to use a macro that knows to + make it 32-bits. Want to port to another 64-bit-but-not-alpha + machine? Grep for "alpha" to see changes. There are most likely + several bugs left for alphas. Guenter is also supporting this + package for the Debian distribution. + o Did some major code cleanups to clear out some warning messages + during compile. This is to clear up problems I'm finding under + both alpha and dos. Some warning messages are actually useful + now (pointing out possible data loss). Hopefully, I didn't + break anything. + o Code clean up allows me to finally compile code under Turbo C + again. Too bad the EXE gets a currupted stack somewhere and locks + up the system. Anyone want to try it with Borland C for me? + If you get a working EXE I would like to start distributing a DOS + package like there used to be. + o Speaking of cleanups, anyone want to help cleanup the makefiles for + various platforms? They are quite outdated right now and it is + very obvious that Sox hasn't been able to compile under all the + platforms it once did for several releases. Please send in + the cleaned-up makefile versions along with what programs you + used to compile it with. + o There is a known bug in hcom's compress() function. It is allocating + memory that can't be free'd under some OS's. It causes a core dump. + + +sox-11gamma-cb3 1997-03-28 +--------------- + +This release of sox is mainly a bugfix release. The following things +have changed: + + o Documentation has been updated when it was obviously wrong. + Much more work could be done. Man pages were updated to + work correctly on Solaris and add some missing info. + o Several people sent me patches to fix compiling on Solaris + as well as fix a few bugs. + o Change USS driver's name to OSS. Man, does that driver + like to change names! This could cause problems if you + have made your own custom play and rec scripts. + o Updated my email address. Sorry if I haven't responded to + any emails as I no longer have access to my old address. + Please use cbagwell@sprynet.com. + o Fixed unix test scripts so that they worked again. + o Fixed endian bug in psion .wve code. + o Replaced outdated voc info file with detailed format info + inside voc code. + o Added new sound format, cvsd (Continuously Variable Slope Delta) + from Thomas Sailer (sailer@ife.ee.ethz.ch). + + +sox-11gamma-cb2 1996-10-04 +--------------- + +This release of sox is based on the latest gamma version released +plus some patches I've made to support the following new features: + +I would like to thank everyone that wrote me about the long +standing bug in Sox that could DELETE your /dev/* file if the +program was aborted for reason such as invalid audio file. Special +thanks for Bryan Franklin for sending in a patch when I was +to busy to even look for it. + + o Better play support for 8-bit stereo voc files. New support + for outputing both 8-bit and 16-bit stereo voc files. + o Built-in support for playing and recording from Linux /dev/dsp. + This is a re-write and seperate module from the previous + support included inside the sbdsp module. Also fixes a buffer + size bug that showed up when using newer versions of OSS. + This driver will work with OSS (and older versions called USS, TASD + and Voxware). + o Support for audio playing and recording with SunOS /dev/audio. + o Fixes a bug were /dev/audio or /dev/dsp could be deleted + when playing an invalid format audio file. + o Expanded options for play and rec scripts. You can now specify + sox effects after the filename and hear them in real time. + Please be sure that an older version of sox is not in your path + because these script will possibly find it first and + incorrectly use it. + o Setting play/record volume still requires an external program. + If you have one a command line program to do this (such as + "mixer" for Linux) then you will want to edit the play and rec + to use this. The current support for it is only in example + form of how it can be done. + + +List of earlier SoX Contributors +-------------------------------- +Covering the time from its creation (Jul '91) until sox-11gamma (Feb '95): + + o Lance Norskog thinman at netcom.com + Creator & maintenance + o Guido Van Rossum guido at cwi.nl + AU, AIFF, AUTO, HCOM, reverse, many bug fixes + o Jef Poskanzer jef at well.sf.ca.us + original code for u-law and delay line + o Bill Neisius bill%solaria at hac2arpa.hac.com + DOS port, 8SVX, Sounder, Soundtool formats + Apollo fixes, stat with auto-picker + o Rick Richardson rick at digibd.com + WAV and SB driver handlers, fixes + o David Champion dgc3 at midway.uchicago.edu + Amiga port + o Pace Willisson pace at blitz.com + Fixes for ESIX + o Leigh Smith leigh at psychok.dialix.oz.au + SMP and comment movement support. + o David Sanderson dws at ssec.wisc.edu + AIX3.1 fixes + o Glenn Lewis glewis at pcocd2.intel.com + AIFF chunking fixes + o Brian Campbell brianc at quantum.qnx.com + QNX port and 16-bit fixes + o Chris Adams gt8741 at prism.gatech.edu + DOS port fixes + o John Kohl jtkohl at kolvir.elcr.ca.us + BSD386 port, VOC stereo support + o Ken Kubo ken at hmcvax.claremont.edu + VMS port, VOC stereo support + o Frank Gadegast phade at cs.tu-berlin.de + Microsoft C 7.0 & C Borland 3.0 ports + o David Elliot dce at scmc.sony.com + CD-R format support + o David Sears dns at essnj3.essnjay.com + Linux support + o Tom Littlejohn tlit at seq1.loc.gov + Raw textual data + o Boisy G. Pitre boisy at microware.com + OS9 port + o Sun Microsystems, Guido Van Rossum + CCITT G.711, G.721, G.723 implementation + o Graeme Gill graeme at labtam.labtam.oz.au + A-LAW format, Good .WAV handling, avg channel expansion + o Allen Grider grider at hfsi.hfsi.com + VOC stereo mode, WAV file handling + o Michel Fingerhut Michel.Fingerhut at ircam.fr + Upgrade 'sf' format to current IRCAM format. Float file support. + o Chris Knight + Achimedes Acorn support + o Richard Caley R.Caley at ed.ac.uk + Psion WVE handler + o Lutz Vieweg lkv at mania.RoBIN.de + MAUD (Amiga) file handler + o Tim Gardner timg at tpi.com + Windows NT port for V7 + o Jimen Ching jiching at wiliki.eng.hawaii.edu + Libst porting bugs + o Lauren Weinstein lauren at vortex.com + DOS porting, scripts, professional use diff --git a/lib/audio-utils/windows/sox/LICENSE.GPL.txt b/lib/audio-utils/windows/sox/LICENSE.GPL.txt new file mode 100644 index 000000000..d511905c1 --- /dev/null +++ b/lib/audio-utils/windows/sox/LICENSE.GPL.txt @@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/lib/audio-utils/windows/sox/README.txt b/lib/audio-utils/windows/sox/README.txt new file mode 100644 index 000000000..d50f332b7 --- /dev/null +++ b/lib/audio-utils/windows/sox/README.txt @@ -0,0 +1,196 @@ + SoX: Sound eXchange + =================== + +SoX (Sound eXchange) is the Swiss Army knife of sound processing tools: it +can convert sound files between many different file formats & audio devices, +and can apply many sound effects & transformations, as well as doing basic +analysis and providing input to more capable analysis and plotting tools. + +SoX is licensed under the GNU GPL and GNU LGPL. To be precise, the 'sox' +and 'soxi' programs are distributed under the GPL, while the library +'libsox' (in which most of SoX's functionality resides) is dual-licensed. +Note that some optional components of libsox are GPL only: if you use these, +you must use libsox under the GPL. See INSTALL for the list of optional +components and their licences. + +If this distribution is of source code (as opposed to pre-built binaries), +then you will need to compile and install SoX as described in the 'INSTALL' +file. + +Changes between this release and previous releases of SoX can be found in +the 'ChangeLog' file; a summary of the file formats and effects supported in +this release can be found below. Detailed documentation for using SoX can +be found in the distributed 'man' pages: + + o sox(1) + o soxi(1) + o soxformat(7) + o libsox(3) + +or in plain text or PDF files for those systems without man. + +The majority of SoX features and fixes are contributed by SoX users - thank +you very much for making SoX a success! There are several new features +wanted for SoX, listed on the feature request tracker at the SoX project +home-page: + + http://sourceforge.net/projects/sox + +users are encouraged to implement them! + +Please submit bug reports, new feature requests, and patches to the relevant +tracker at the above address, or by email: + + mailto:sox-devel@lists.sourceforge.net + +Also accessible via the project home-page is the SoX users' discussion +mailing list which you can join to discuss all matters SoX with other SoX +users; the mail address for this list is: + + mailto:sox-users@lists.sourceforge.net + +The current release handles the following audio file formats: + + + o Raw files in various binary formats + o Raw textual data + o Amiga 8svx files + o Apple/SGI AIFF files + o SUN .au files + o PCM, u-law, A-law + o G7xx ADPCM files (read only) + o mutant DEC .au files + o NeXT .snd files + o AVR files + o CDDA (Compact Disc Digital Audio format) + o CVS and VMS files (continuous variable slope) + o Grandstream ring-tone files + o GSM files + o HTK files + o LPC-10 files + o Macintosh HCOM files + o Amiga MAUD files + o AMR-WB & AMR-NB (with optional libamrwb & libamrnb libraries) + o MP2/MP3 (with optional libmad, libtwolame and libmp3lame libraries) + o Opus files (read only; with optional Opus libraries) + + o Ogg Vorbis files (with optional Ogg Vorbis libraries) + o FLAC files (with optional libFLAC) + o IRCAM SoundFile files + o NIST SPHERE files + o Turtle beach SampleVision files + o Sounder & Soundtool (DOS) files + o Yamaha TX-16W sampler files + o SoundBlaster .VOC files + o Dialogic/OKI ADPCM files (.VOX) + o Microsoft .WAV files + o PCM, floating point + o u-law, A-law, MS ADPCM, IMA (DMI) ADPCM + o GSM + o RIFX (big endian) + o WavPack files (with optional libwavpack library) + o Psion (palmtop) A-law WVE files and Record voice notes + o Maxis XA Audio files + o EA ADPCM (read support only, for now) + o Pseudo formats that allow direct playing/recording from most audio devices + o The "null" pseudo-file that reads and writes from/to nowhere + + +The audio effects/tools included in this release are as follows: + + o Tone/filter effects + o allpass: RBJ all-pass biquad IIR filter + o bandpass: RBJ band-pass biquad IIR filter + o bandreject: RBJ band-reject biquad IIR filter + o band: SPKit resonator band-pass IIR filter + o bass: Tone control: RBJ shelving biquad IIR filter + o equalizer: RBJ peaking equalisation biquad IIR filter + o firfit+: FFT convolution FIR filter using given freq. response (W.I.P.) + o highpass: High-pass filter: Single pole or RBJ biquad IIR + o hilbert: Hilbert transform filter (90 degrees phase shift) + o lowpass: Low-pass filter: single pole or RBJ biquad IIR + o sinc: Sinc-windowed low/high-pass/band-pass/reject FIR + o treble: Tone control: RBJ shelving biquad IIR filter + + o Production effects + o chorus: Make a single instrument sound like many + o delay: Delay one or more channels + o echo: Add an echo + o echos: Add a sequence of echos + o flanger: Stereo flanger + o overdrive: Non-linear distortion + o phaser: Phase shifter + o repeat: Loop the audio a number of times + o reverb: Add reverberation + o reverse: Reverse the audio (to search for Satanic messages ;-) + o tremolo: Sinusoidal volume modulation + + o Volume/level effects + o compand: Signal level compression/expansion/limiting + o contrast: Phase contrast volume enhancement + o dcshift: Apply or remove DC offset + o fade: Apply a fade-in and/or fade-out to the audio + o gain: Apply gain or attenuation; normalise/equalise/balance/headroom + o loudness: Gain control with ISO 226 loudness compensation + o mcompand: Multi-band compression/expansion/limiting + o norm: Normalise to 0dB (or other) + o vol: Adjust audio volume + + o Editing effects + o pad: Pad (usually) the ends of the audio with silence + o silence: Remove portions of silence from the audio + o splice: Perform the equivalent of a cross-faded tape splice + o trim: Cuts portions out of the audio + o vad: Voice activity detector + + o Mixing effects + o channels: Auto mix or duplicate to change number of channels + o divide+: Divide sample values by those in the 1st channel (W.I.P.) + o remix: Produce arbitrarily mixed output channels + o swap: Swap pairs of channels + + o Pitch/tempo effects + o bend: Bend pitch at given times without changing tempo + o pitch: Adjust pitch (= key) without changing tempo + o speed: Adjust pitch & tempo together + o stretch: Adjust tempo without changing pitch (simple alg.) + o tempo: Adjust tempo without changing pitch (WSOLA alg.) + + o Mastering effects + o dither: Add dither noise to increase quantisation SNR + o rate: Change audio sampling rate + + o Specialised filters/mixers + o deemph: ISO 908 CD de-emphasis (shelving) IIR filter + o earwax: Process CD audio to best effect for headphone use + o noisered: Filter out noise from the audio + o oops: Out Of Phase Stereo (or `Karaoke') effect + o riaa: RIAA vinyl playback equalisation + + o Analysis `effects' + o noiseprof: Produce a DFT profile of the audio (use with noisered) + o spectrogram: graph signal level vs. frequency & time (needs `libpng') + o stat: Enumerate audio peak & RMS levels, approx. freq., etc. + o stats: Multichannel aware `stat' + + o Miscellaneous effects + o ladspa: Apply LADSPA plug-in effects e.g. CMT (Computer Music Toolkit) + o synth: Synthesise/modulate audio tones or noise signals + o newfile: Create a new output file when an effects chain ends. + o restart: Restart 1st effects chain when multiple chains exist. + + o Low-level signal processing effects + o biquad: 2nd-order IIR filter using externally provided coefficients + o downsample: Reduce sample rate by discarding samples + o fir: FFT convolution FIR filter using externally provided coefficients + o upsample: Increase sample rate by zero stuffing + + + Experimental or incomplete effect; may change in future. + +Multiple audio files can be combined (and then further processed with +effects) using any one of the following combiner methods: + + o concatenate + o mix + o merge: E.g. two mono files to one stereo file + o sequence: For playing multiple audio files/streams diff --git a/lib/audio-utils/windows/sox/README.win32.txt b/lib/audio-utils/windows/sox/README.win32.txt new file mode 100644 index 000000000..0ed7815ab --- /dev/null +++ b/lib/audio-utils/windows/sox/README.win32.txt @@ -0,0 +1,167 @@ +SoX +--- + +This file contains information specific to the Win32 version of SoX. +Please refer to the README file for general information. + +The binary SOX.EXE can be installed anywhere you desire. The only +restriction is that the included ZLIB1..DLL and LIBGOMP-1.DLL must be +located in the same directory as SOX.EXE or somewhere within your PATH. + +SoX Helper Applications +----------------------- + +SoX also includes support for SOXI.EXE, PLAY.EXE and REC.EXE and their +behaviors are documented in included PDF's. They have the same +install restrictions as SOX.EXE. + +SOXI.EXE, PLAY.EXE, and REC.EXE are not distributed with this package to +reduce size requirements. They are, in fact, only copies of the original +SOX.EXE binary which changes SOX.EXE's behavior based on the +executable's filename. + +If you wish to make use of these utils then you can create them +yourself. + +copy sox.exe soxi.exe +copy sox.exe play.exe +copy sox.exe rec.exe + +If you are concerned with disk space, the play and record +functionality can be equated using the "-d" option with SOX.EXE. soxi +functionality can be equated using the "--info" option with SOX.EXE. The +rough syntax is: + +play: sox [input files and options] -d [effects] +rec: sox -d [output file and options] [effects] +soxi: sox --info [input files and options] + +Acknowledgements +---------------- + +SOX.EXE included in this package makes use of the following projects. +See the cygbuild script included with the source code package for +further information on how it was compiled and packaged. + + SoX - http://sox.sourceforge.net + + FLAC - http://flac.sourceforge.net + + LADSPA - http://www.ladspa.org + + libid3tag - http://www.underbit.com/products/mad + + libsndfile - http://www.mega-nerd.com/libsndfile + + Ogg Vorbis - http://www.vorbis.com + + PNG - http://www.libpng.org/pub/png + + WavPack - http://www.wavpack.com + + wget - http://www.gnu.org/software/wget + +Enjoy, +The SoX Development Team + +Appendix - wget Support +----------------------- + +SoX can make use of the wget command line utility to load files over +the internet. A binary copy of wget has been included with this +package of SoX for your convience. + +For SoX to make use of wget, it must be located either in your PATH or +within the same directory that SoX is ran from. + +Custom configuration of wget can be made by editing the file wget.ini +contained in the same directory as wget.exe. + +Please consult wget's homepage for access to source code as well as +further instructions on configuring. + +http://www.gnu.org/software/wget + +Appendix - MP3 Support +---------------------- + +SoX contains support for reading and writing MP3 files but does not ship +with the DLL's that perform decoding and encoding of MP3 data because +of patent restrictions. For further details, refer to: + +http://en.wikipedia.org/wiki/MP3#Licensing_and_patent_issues + +MP3 support can be enabled by placing Lame encoding DLL and/or +MAD decoding DLL into the same directory as SOX.EXE. These +can be compiled yourself, they may turn up on searches of the internet +or may be included with other MP3 applications already installed +on your system. For encoding/writing, try searching for lame-enc.dll, +libmp3lame-0.dll, libmp3lame.dll, or cygmp3lame-0.dll. For +decoding/reading, try searching for libmad-0.dll, libmad.dll or cygmad-0.dll. + +Instructions are included here for using MSYS to create the DLL's. +It is assumed you already have MSYS installed on your system +with a working gcc compiler. The commands are ran from MSYS +bash shell. + +Obtain the latest Lame and MAD source code from approprate locations. + +Lame MP3 encoder http://lame.sourceforge.net +MAD MP3 decoder http://www.underbit.com/products/mad + +cd lame-398-2 +./configure --disabled-static --enable-shared +make +cp libmp3lame/.libs/libmp3lame-0.dll /path/to/sox + +MAD libraries up to 0.15.1b have a bug in configure that will not allow +building DLL under mingw. This can be resolved by adding LDFLAGS +to configure and editing the generated Makefile to remove an invalid +option. + +cd libmad-0.15.1b +./configure --enable-shared --disable-static LDFLAGS="-no-undefined" +[edit Makefile, search for "-fforce-mem" and delete it.] +make +cp libmad-0.dll /path/to/sox/ + +Appendix - AMR-NB/AMR-WB Support +-------------------------------- + +SoX contains support for reading and writing AMR-NB and AMR-WB files but +does not ship with the DLL's that perform decoding and encoding of AMR +data because of patent restrictions. + +AMR-NB/AMR-WB support can be enabled by placing required DLL's +into the same directory as SOX.EXE. These can be compiled yourself, +they may turn up on searches of the internet or may be included with other +MP3 applications already installed on your system. For AMR-NB support, +try searching for libamrnb-3.dll, libopencore-amrnb-0.dll, or +libopencore-amrnb.dll. For AMR-WB support, try searching for libamrwb-3.dll, +libopencore-amrwb-0.dll, or libopencore-amrwb.dll. + +Instructions are included here for using MSYS to create the DLL's. +It is assumed you already have MSYS installed on your system with +working gcc compiler. These commands are ran from MSYS bash shell. + +Obtain the latest amrnb and amrwb source code from +http://sourceforge.net/projects/opencore-amr . + +cd opencore-amr-0.1.2 +./configure --enable-shared --disable-static LDFLAGS="-no-undefined" +make +cp amrnb/.libs/libopencore-amrnb-0.dll /path/to/sox +cp amrwb/.libs/libopencore-amrwb-0.dll /path/to/sox + +Appendix - LADSPA Plugins +------------------------- + +SoX has built in support for LADSPA Plugins. These plugins are +mostly built for Linux but some are available for Windows. +The Audacity GUI application has a page that points to a collection +of Windows LADSPA plugins. + +http://audacity.sourceforge.net/download/plugins + +SoX will search for these plugins based on LADSPA_PATH +enviornment variable. See sox.txt for further information. diff --git a/lib/audio-utils/sox/lame_enc.dll b/lib/audio-utils/windows/sox/lame_enc.dll similarity index 100% rename from lib/audio-utils/sox/lame_enc.dll rename to lib/audio-utils/windows/sox/lame_enc.dll diff --git a/lib/audio-utils/sox/lame_enc.ini b/lib/audio-utils/windows/sox/lame_enc.ini similarity index 100% rename from lib/audio-utils/sox/lame_enc.ini rename to lib/audio-utils/windows/sox/lame_enc.ini diff --git a/lib/audio-utils/windows/sox/libflac-8.dll b/lib/audio-utils/windows/sox/libflac-8.dll new file mode 100644 index 000000000..200c16812 --- /dev/null +++ b/lib/audio-utils/windows/sox/libflac-8.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2c154aeaad085e01361b967adfec84b63db76a82a45681b3e6cdfacb6088e369 +size 284258 diff --git a/lib/audio-utils/windows/sox/libgcc_s_sjlj-1.dll b/lib/audio-utils/windows/sox/libgcc_s_sjlj-1.dll new file mode 100644 index 000000000..6b43c891c --- /dev/null +++ b/lib/audio-utils/windows/sox/libgcc_s_sjlj-1.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2af381dbd5ea1a9a150307b1cba3a150321a3c3ff09fb6ead9bba1e880e03a64 +size 474449 diff --git a/lib/audio-utils/windows/sox/libgomp-1.dll b/lib/audio-utils/windows/sox/libgomp-1.dll new file mode 100644 index 000000000..348ba353c --- /dev/null +++ b/lib/audio-utils/windows/sox/libgomp-1.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9dbbb0cb3f31ded7fbf51141a39578c0bc5cc85b83e9b6908657a6083948b9ba +size 424566 diff --git a/lib/audio-utils/windows/sox/libid3tag-0.dll b/lib/audio-utils/windows/sox/libid3tag-0.dll new file mode 100644 index 000000000..d724aa982 --- /dev/null +++ b/lib/audio-utils/windows/sox/libid3tag-0.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4ec8e74cdd48a388a41f7f3ab2cea810a1661f47e79b6338192f000341f20af0 +size 73559 diff --git a/lib/audio-utils/sox/libmad.dll b/lib/audio-utils/windows/sox/libmad.dll similarity index 100% rename from lib/audio-utils/sox/libmad.dll rename to lib/audio-utils/windows/sox/libmad.dll diff --git a/lib/audio-utils/sox/libmp3lame.dll b/lib/audio-utils/windows/sox/libmp3lame.dll similarity index 100% rename from lib/audio-utils/sox/libmp3lame.dll rename to lib/audio-utils/windows/sox/libmp3lame.dll diff --git a/lib/audio-utils/windows/sox/libogg-0.dll b/lib/audio-utils/windows/sox/libogg-0.dll new file mode 100644 index 000000000..c6929c056 --- /dev/null +++ b/lib/audio-utils/windows/sox/libogg-0.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3262325b43b6f249831cc15428372a6daa34cf2459e66ed047dbbd9f00f49378 +size 27423 diff --git a/lib/audio-utils/windows/sox/libpng16-16.dll b/lib/audio-utils/windows/sox/libpng16-16.dll new file mode 100644 index 000000000..4096b061d --- /dev/null +++ b/lib/audio-utils/windows/sox/libpng16-16.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:22d46adb7927690eeeb1a27f9544108f7a1c66bf1daec90f3c41aa36e176920d +size 211237 diff --git a/lib/audio-utils/windows/sox/libsox-3.dll b/lib/audio-utils/windows/sox/libsox-3.dll new file mode 100644 index 000000000..3358b77d1 --- /dev/null +++ b/lib/audio-utils/windows/sox/libsox-3.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:240a7e47a4274908786220f1b92372ed1b5f2a1c29874292fad5e64f120d84b4 +size 2349388 diff --git a/lib/audio-utils/windows/sox/libssp-0.dll b/lib/audio-utils/windows/sox/libssp-0.dll new file mode 100644 index 000000000..01667944a --- /dev/null +++ b/lib/audio-utils/windows/sox/libssp-0.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:113da78ba0514b3947e0988376002c4d5f783d62d5058f99259771648f2e9138 +size 73555 diff --git a/lib/audio-utils/windows/sox/libvorbis-0.dll b/lib/audio-utils/windows/sox/libvorbis-0.dll new file mode 100644 index 000000000..7cff550d9 --- /dev/null +++ b/lib/audio-utils/windows/sox/libvorbis-0.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:03ae1625a47c1255d70e7d63ee42ef2483c7e2adc9a33d21f45799f323a530b4 +size 171087 diff --git a/lib/audio-utils/windows/sox/libvorbisenc-2.dll b/lib/audio-utils/windows/sox/libvorbisenc-2.dll new file mode 100644 index 000000000..ef547aab5 --- /dev/null +++ b/lib/audio-utils/windows/sox/libvorbisenc-2.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3b809daf958b6dedeedbe05e91a0ac016b18c871b33dc98c728f8b3440874385 +size 567578 diff --git a/lib/audio-utils/windows/sox/libvorbisfile-3.dll b/lib/audio-utils/windows/sox/libvorbisfile-3.dll new file mode 100644 index 000000000..6526a765f --- /dev/null +++ b/lib/audio-utils/windows/sox/libvorbisfile-3.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1a14d8b0749f66811dacb23b093d54d4ff88036d49fd017b0d98b21de7f9ef1d +size 38203 diff --git a/lib/audio-utils/windows/sox/libwavpack-1.dll b/lib/audio-utils/windows/sox/libwavpack-1.dll new file mode 100644 index 000000000..0b77e29ae --- /dev/null +++ b/lib/audio-utils/windows/sox/libwavpack-1.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9123e73f801629a8791c80d9dc5041ee23f7f1d9ed8510f2f758269159aa26b8 +size 157861 diff --git a/lib/audio-utils/windows/sox/libwinpthread-1.dll b/lib/audio-utils/windows/sox/libwinpthread-1.dll new file mode 100644 index 000000000..03d0f7aa0 --- /dev/null +++ b/lib/audio-utils/windows/sox/libwinpthread-1.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:036af4b9aed20a6bd8b1993f2e0a4789c2ba555c00c0b2d72a6d6a6b8c13ef68 +size 54131 diff --git a/lib/audio-utils/sox/pthreadgc2.dll b/lib/audio-utils/windows/sox/pthreadgc2.dll similarity index 100% rename from lib/audio-utils/sox/pthreadgc2.dll rename to lib/audio-utils/windows/sox/pthreadgc2.dll diff --git a/lib/audio-utils/windows/sox/sox.exe b/lib/audio-utils/windows/sox/sox.exe new file mode 100644 index 000000000..f7c37d7f8 --- /dev/null +++ b/lib/audio-utils/windows/sox/sox.exe @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e0e3cdc4bcdfbb5b91ac8f53b024964d092f89ba90130ba74b223a1df11b5439 +size 213624 diff --git a/lib/audio-utils/windows/sox/zlib1.dll b/lib/audio-utils/windows/sox/zlib1.dll new file mode 100644 index 000000000..967aef279 --- /dev/null +++ b/lib/audio-utils/windows/sox/zlib1.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:189336a0cf1131d6a681e81b43385ade7252f7211df50774772d8c8ec40d5f8f +size 85026 diff --git a/lib/audio-utils/wavpack/changelog.txt b/lib/audio-utils/windows/wavpack/changelog.txt similarity index 100% rename from lib/audio-utils/wavpack/changelog.txt rename to lib/audio-utils/windows/wavpack/changelog.txt diff --git a/lib/audio-utils/wavpack/license.txt b/lib/audio-utils/windows/wavpack/license.txt similarity index 100% rename from lib/audio-utils/wavpack/license.txt rename to lib/audio-utils/windows/wavpack/license.txt diff --git a/lib/audio-utils/wavpack/wavpack.exe b/lib/audio-utils/windows/wavpack/wavpack.exe similarity index 100% rename from lib/audio-utils/wavpack/wavpack.exe rename to lib/audio-utils/windows/wavpack/wavpack.exe diff --git a/lib/audio-utils/wavpack/wavpack_doc.html b/lib/audio-utils/windows/wavpack/wavpack_doc.html similarity index 100% rename from lib/audio-utils/wavpack/wavpack_doc.html rename to lib/audio-utils/windows/wavpack/wavpack_doc.html diff --git a/lib/audio-utils/wavpack/wvgain.exe b/lib/audio-utils/windows/wavpack/wvgain.exe similarity index 100% rename from lib/audio-utils/wavpack/wvgain.exe rename to lib/audio-utils/windows/wavpack/wvgain.exe diff --git a/lib/audio-utils/wavpack/wvtag.exe b/lib/audio-utils/windows/wavpack/wvtag.exe similarity index 100% rename from lib/audio-utils/wavpack/wvtag.exe rename to lib/audio-utils/windows/wavpack/wvtag.exe diff --git a/lib/audio-utils/wavpack/wvunpack.exe b/lib/audio-utils/windows/wavpack/wvunpack.exe similarity index 100% rename from lib/audio-utils/wavpack/wvunpack.exe rename to lib/audio-utils/windows/wavpack/wvunpack.exe diff --git a/src/AP.Settings.config b/src/AP.Settings.config new file mode 100644 index 000000000..e3f42f93b --- /dev/null +++ b/src/AP.Settings.config @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/Acoustics.Shared/AppConfigHelper.cs b/src/Acoustics.Shared/AppConfigHelper.cs index b90955aab..ebab31cdb 100644 --- a/src/Acoustics.Shared/AppConfigHelper.cs +++ b/src/Acoustics.Shared/AppConfigHelper.cs @@ -11,14 +11,20 @@ namespace Acoustics.Shared { using System; using System.Collections.Generic; + using System.Collections.Specialized; using System.Configuration; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; + using log4net; public static class AppConfigHelper { + private static readonly KeyValueConfigurationCollection SharedSettings; + + private static readonly ILog Log = LogManager.GetLogger(nameof(AppConfigHelper)); + private static readonly string ExecutingAssemblyPath = (Assembly.GetEntryAssembly() ?? Assembly.GetExecutingAssembly()).Location; @@ -39,6 +45,14 @@ public static class AppConfigHelper public const string StandardDateFormatUtcWithFractionalSeconds = "yyyyMMdd-HHmmss.FFFZ"; + static AppConfigHelper() + { + ExeConfigurationFileMap exeConfigurationFileMap = new ExeConfigurationFileMap(); + exeConfigurationFileMap.ExeConfigFilename = Path.Combine(ExecutingAssemblyDirectory, "AP.Settings.Config"); + var sharedConfig = ConfigurationManager.OpenMappedExeConfiguration(exeConfigurationFileMap, ConfigurationUserLevel.None); + SharedSettings = sharedConfig.AppSettings.Settings; + } + public static string FileDateFormatUtc { get @@ -283,15 +297,23 @@ public static bool IsLinux } } + public static bool IsMacOsX + { + get + { + return Environment.OSVersion.Platform == PlatformID.MacOSX; + } + } + public static string GetString(string key) { - if (ConfigurationManager.AppSettings.AllKeys.All(k => k != key)) + if (!Contains(key)) { //throw new ConfigurationErrorsException("Could not find key: " + key); - return string.Empty; + return null; } - var value = ConfigurationManager.AppSettings[key]; + var value = SharedSettings[key].Value; if (string.IsNullOrEmpty(value)) { @@ -303,7 +325,7 @@ public static string GetString(string key) public static bool Contains(string key) { - return ConfigurationManager.AppSettings.AllKeys.Any(k => k == key); + return SharedSettings.AllKeys.Contains(key); } // public static IEnumerable GetStrings(string key, params char[] separators) @@ -315,7 +337,7 @@ public static string[] GetStrings(string key, params char[] separators) .Select(s => s.Trim()) .Where(v => !string.IsNullOrEmpty(v)); - if (!values.Any() || values.All(s => string.IsNullOrEmpty(s))) + if (!values.Any() || values.All(string.IsNullOrEmpty)) { throw new ConfigurationErrorsException("Key " + key + " exists but does not have a value"); } @@ -493,13 +515,37 @@ public static IEnumerable GetDirs(string key, bool checkAnyExist, private static string GetExeFile(string appConfigKey) { + string path = null; + string key = null; if (IsLinux) { - return GetString(appConfigKey + "Linux"); + key = appConfigKey + "Linux"; + path = GetString(key); + } + else if (IsMacOsX) + { + key = appConfigKey + "MacOsX"; + path = GetString(key); + } + else + { + key = appConfigKey; + path = GetString(appConfigKey); + } + + if (path.IsNullOrEmpty()) + { + Log.Warn($"No key found for `{key}` in the App.Config. This program may fail if this binary is needed."); + return null; + } + + if (Path.IsPathRooted(path)) + { + return path; } else { - return Path.Combine(AssemblyDir.FullName, GetString(appConfigKey)); + return Path.Combine(AssemblyDir.FullName, path); } } } diff --git a/src/Acoustics.Tools/Acoustics.Tools.csproj b/src/Acoustics.Tools/Acoustics.Tools.csproj index aadb8b5f7..45f8dab84 100644 --- a/src/Acoustics.Tools/Acoustics.Tools.csproj +++ b/src/Acoustics.Tools/Acoustics.Tools.csproj @@ -106,6 +106,7 @@ + @@ -147,6 +148,10 @@ stylecop.json + + AP.Settings.config + Always + Designer diff --git a/src/Acoustics.Tools/Audio/AbstractUtility.cs b/src/Acoustics.Tools/Audio/AbstractUtility.cs index cc17a1083..c2b9d9e67 100644 --- a/src/Acoustics.Tools/Audio/AbstractUtility.cs +++ b/src/Acoustics.Tools/Audio/AbstractUtility.cs @@ -266,12 +266,12 @@ protected void CheckExe(FileInfo file, string expectedFileName) { if (string.IsNullOrEmpty(expectedFileName)) { - throw new ArgumentNullException("expectedFileName"); + throw new ArgumentNullException(nameof(expectedFileName)); } if (file == null) { - throw new ArgumentNullException("file"); + throw new ArgumentNullException(nameof(file)); } if (!File.Exists(file.FullName)) @@ -281,7 +281,7 @@ protected void CheckExe(FileInfo file, string expectedFileName) if (!file.Name.Contains(expectedFileName)) { - throw new ArgumentException("Expected file name to contain " + expectedFileName + ", but was: " + file.Name, "file"); + throw new ArgumentException("Expected file name to contain " + expectedFileName + ", but was: " + file.Name, nameof(file)); } } @@ -391,6 +391,11 @@ protected void RunExe(ProcessRunner processRunner, string arguments, string work processRunner.Run(arguments, workingDirectory); } + if (processRunner.ExitCode != 0) + { + throw new AudioUtilityException($"Failed to execute process: exit code was `{processRunner.ExitCode}`. `{processRunner.ExecutableFile}` `{arguments}`"); + } + if (this.Log.IsWarnEnabled) { var failedRunOutput = processRunner.FailedRunOutput; diff --git a/src/Acoustics.Tools/Audio/AudioUtilityException.cs b/src/Acoustics.Tools/Audio/AudioUtilityException.cs new file mode 100644 index 000000000..1047a1da9 --- /dev/null +++ b/src/Acoustics.Tools/Audio/AudioUtilityException.cs @@ -0,0 +1,15 @@ +// +// All code in this file and all associated files are the copyright and property of the QUT Ecoacoustics Research Group (formerly MQUTeR, and formerly QUT Bioacoustics Research Group). +// + +namespace Acoustics.Tools.Audio +{ + using System; + + public class AudioUtilityException : Exception + { + public AudioUtilityException(string message): base(message) + { + } + } +} \ No newline at end of file diff --git a/src/Acoustics.Tools/Audio/MasterAudioUtility.cs b/src/Acoustics.Tools/Audio/MasterAudioUtility.cs index 96107abe8..7b6364baa 100644 --- a/src/Acoustics.Tools/Audio/MasterAudioUtility.cs +++ b/src/Acoustics.Tools/Audio/MasterAudioUtility.cs @@ -15,6 +15,7 @@ namespace Acoustics.Tools.Audio using System.IO; using Shared; + using Shared.Contracts; /// /// Combined audio utility that makes use of the most appropriate audio utility for the task. @@ -25,6 +26,7 @@ public class MasterAudioUtility : AbstractAudioUtility, IAudioUtility private readonly FfmpegAudioUtility ffmpegUtility; + // we allow only mp3splt utility to be null private readonly Mp3SpltAudioUtility mp3SpltUtility; private readonly SoxAudioUtility soxUtility; @@ -38,12 +40,20 @@ public class MasterAudioUtility : AbstractAudioUtility, IAudioUtility public MasterAudioUtility() { this.wvunpackUtility = new WavPackAudioUtility(new FileInfo(AppConfigHelper.WvunpackExe)); - this.mp3SpltUtility = new Mp3SpltAudioUtility(new FileInfo(AppConfigHelper.Mp3SpltExe)); + + var mp3SpltExe = AppConfigHelper.Mp3SpltExe; + if (mp3SpltExe != null) + { + this.mp3SpltUtility = new Mp3SpltAudioUtility(new FileInfo(mp3SpltExe)); + } + this.ffmpegUtility = new FfmpegAudioUtility(new FileInfo(AppConfigHelper.FfmpegExe), new FileInfo(AppConfigHelper.FfprobeExe)); this.ffmpegRawPcmUtility = new FfmpegRawPcmAudioUtility(new FileInfo(AppConfigHelper.FfmpegExe)); this.soxUtility = new SoxAudioUtility(new FileInfo(AppConfigHelper.SoxExe)); - this.TemporaryFilesDirectory = TempFileHelper.TempDir(); + this.TemporaryFilesDirectory = this.TemporaryFilesDirectory ?? TempFileHelper.TempDir(); + + this.Validate(); } /// @@ -87,6 +97,21 @@ public MasterAudioUtility( this.soxUtility = soxUtility; this.TemporaryFilesDirectory = temporaryFilesDirectory ?? TempFileHelper.TempDir(); + + this.Validate(); + } + + private void Validate() + { + Contract.RequiresNotNull(this.ffmpegUtility, nameof(this.ffmpegUtility)); + Contract.RequiresNotNull(this.wvunpackUtility, nameof(this.wvunpackUtility)); + Contract.RequiresNotNull(this.soxUtility, nameof(this.soxUtility)); + Contract.RequiresNotNull(this.TemporaryFilesDirectory, nameof(this.TemporaryFilesDirectory)); + + if (this.mp3SpltUtility == null) + { + this.Log.Warn("No Mp3Splt utility provided. If you try to segment MP3 the program will fail."); + } } /// @@ -446,6 +471,11 @@ private FileInfo SegmentRawPcmToWav(FileInfo source, AudioUtilityRequest request private FileInfo SegmentMp3(FileInfo source, string sourceMimeType, AudioUtilityRequest request) { + if (this.mp3SpltUtility == null) + { + throw new NotSupportedException($"MP3 conversion not supported because mp3splt utility has not been configured for this { nameof(MasterAudioUtility)}."); + } + // use a temp file to segment. var mp3SpltTempFile = TempFileHelper.NewTempFile(this.TemporaryFilesDirectory, MediaTypes.GetExtension(MediaTypes.MediaTypeMp3)); diff --git a/src/Acoustics.Tools/App.config b/src/Acoustics.Tools/app.config similarity index 65% rename from src/Acoustics.Tools/App.config rename to src/Acoustics.Tools/app.config index 0e705c3e3..a5e2aa19a 100644 --- a/src/Acoustics.Tools/App.config +++ b/src/Acoustics.Tools/app.config @@ -5,21 +5,6 @@ --> - - - - - - - - - - - - - - - diff --git a/src/AnalysisPrograms/AnalysisPrograms.csproj b/src/AnalysisPrograms/AnalysisPrograms.csproj index dcc591e39..aab181440 100644 --- a/src/AnalysisPrograms/AnalysisPrograms.csproj +++ b/src/AnalysisPrograms/AnalysisPrograms.csproj @@ -411,6 +411,10 @@ stylecop.json + + AP.Settings.config + Always + Designer diff --git a/src/AnalysisPrograms/App.config b/src/AnalysisPrograms/App.config index 58a22a421..fb9a1b63d 100644 --- a/src/AnalysisPrograms/App.config +++ b/src/AnalysisPrograms/App.config @@ -1,30 +1,6 @@  - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tests/Acoustics.Test/App.config b/tests/Acoustics.Test/App.config index cecc33b2a..49dc54c02 100644 --- a/tests/Acoustics.Test/App.config +++ b/tests/Acoustics.Test/App.config @@ -6,31 +6,6 @@ --> - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tests/Acoustics.Test/TestHelpers/TestHelper.cs b/tests/Acoustics.Test/TestHelpers/TestHelper.cs index d12e5f440..2fefc3491 100644 --- a/tests/Acoustics.Test/TestHelpers/TestHelper.cs +++ b/tests/Acoustics.Test/TestHelpers/TestHelper.cs @@ -552,7 +552,7 @@ public static IAudioUtility GetAudioUtility() var wvunpack = new WavPackAudioUtility(new FileInfo(AppConfigHelper.WvunpackExe)); var sox = new SoxAudioUtility(new FileInfo(AppConfigHelper.SoxExe)); - return new MasterAudioUtility(ffmpeg, mp3Splt, wvunpack, sox, ffmpegRawPcm); + return new MasterAudioUtility(ffmpeg, mp3Splt, wvunpack, sox, ffmpegRawPcm, PathHelper.GetTempDir()); } public static IAudioUtility GetAudioUtilitySox() diff --git a/tests/Acoustics.Test/Tools/MasterAudioUtilityTests.cs b/tests/Acoustics.Test/Tools/MasterAudioUtilityTests.cs index 27f2c0ef9..a9d987297 100644 --- a/tests/Acoustics.Test/Tools/MasterAudioUtilityTests.cs +++ b/tests/Acoustics.Test/Tools/MasterAudioUtilityTests.cs @@ -365,6 +365,28 @@ public void ValidatesNullExePaths() TestHelper.ExceptionMatches(() => new SoxAudioUtility(null), "Value cannot be null"); } + [TestMethod] + public void MasterAudioUtilityAllowsOptionalSupportForMp3splt() + { + // creation should normally fail but MasterAudioUtility was changed so that Mp3Splt was optional + var utility = new MasterAudioUtility( + (FfmpegAudioUtility)TestHelper.GetAudioUtilityFfmpeg(), + null, //(Mp3SpltAudioUtility)TestHelper.GetAudioUtilityMp3Splt(), + (WavPackAudioUtility)TestHelper.GetAudioUtilityWavunpack(), + (SoxAudioUtility)TestHelper.GetAudioUtilitySox(), + (FfmpegRawPcmAudioUtility)TestHelper.GetAudioUtilityFfmpegRawPcm()); + + // but it throws an exception if we try and segment a mp3 + TestHelper.ExceptionMatches( + () => utility.Modify( + PathHelper.GetTestAudioFile("Currawongs_curlew_West_Knoll_Bees_20091102-183000.mp3"), + MediaTypes.MediaTypeMp3, + TempFileHelper.NewTempFile(), + MediaTypes.MediaTypeWav, + new AudioUtilityRequest()), + "MP3 conversion not supported because mp3splt utility has not been configured"); + } + private static FileInfo GetAudioUtilityExe(string name) { var baseResourceDir = PathHelper.GetResourcesBaseDir();