From 322bf38547be12be367076da8bfc6d8a10d66514 Mon Sep 17 00:00:00 2001 From: derselbst Date: Tue, 26 Jun 2018 09:13:10 +0200 Subject: [PATCH] remove fluidmax and fluidsynth_jni plugins --- bindings/README | 11 - bindings/fluidmax/README.TXT | 77 - .../fluidmax.xcodeproj/project.pbxproj | 339 --- .../fluidmax/build/osx-macho/maxternal.plist | 10 - .../fluidmax/build/winxp-vs8/fluidsynth.def | 6 - .../fluidmax/build/winxp-vs8/fluidsynth.sln | 19 - .../fluidmax/build/winxp-vs8/fluidsynth.suo | Bin 42496 -> 0 bytes .../build/winxp-vs8/fluidsynth.vcproj | 324 --- bindings/fluidmax/config_maxmsp.h | 12 - bindings/fluidmax/fluidmax.c | 1853 ----------------- bindings/fluidmax/fluidmax.mcp | Bin 144300 -> 0 bytes bindings/fluidmax/fluidmax_fakefuns.c | 260 --- bindings/fluidmax/fluidsynth.jpg | Bin 20567 -> 0 bytes bindings/fluidmax/fluidsynth/version.h | 44 - bindings/fluidmax/fluidsynth~.help | Bin 19599 -> 0 bytes bindings/fluidmax/ftmax.h | 76 - bindings/fluidsynth_jni/README | 10 - bindings/fluidsynth_jni/fluidsynth_jni.dsp | 115 - bindings/fluidsynth_jni/fluidsynth_jni.dsw | 29 - bindings/fluidsynth_jni/include/sndfile.h | 436 ---- .../java/fluidsynth/FluidException.java | 8 - .../java/fluidsynth/Sample.java | 39 - .../fluidsynth_jni/java/fluidsynth/Synth.java | 49 - .../fluidsynth_jni/java/fluidsynth/Test.java | 36 - bindings/fluidsynth_jni/lib/libsndfile.lib | Bin 7832 -> 0 bytes .../fluidsynth_jni/src/fluidsynth_Sample.cpp | 17 - .../fluidsynth_jni/src/fluidsynth_Sample.h | 29 - .../fluidsynth_jni/src/fluidsynth_Synth.cpp | 38 - .../fluidsynth_jni/src/fluidsynth_Synth.h | 48 - .../fluidsynth_jni/src/fluidsynth_jni.cpp | 334 --- bindings/fluidsynth_jni/src/fluidsynth_jni.h | 18 - 31 files changed, 4237 deletions(-) delete mode 100644 bindings/README delete mode 100644 bindings/fluidmax/README.TXT delete mode 100644 bindings/fluidmax/build/osx-macho/fluidmax.xcodeproj/project.pbxproj delete mode 100644 bindings/fluidmax/build/osx-macho/maxternal.plist delete mode 100644 bindings/fluidmax/build/winxp-vs8/fluidsynth.def delete mode 100644 bindings/fluidmax/build/winxp-vs8/fluidsynth.sln delete mode 100644 bindings/fluidmax/build/winxp-vs8/fluidsynth.suo delete mode 100644 bindings/fluidmax/build/winxp-vs8/fluidsynth.vcproj delete mode 100644 bindings/fluidmax/config_maxmsp.h delete mode 100644 bindings/fluidmax/fluidmax.c delete mode 100644 bindings/fluidmax/fluidmax.mcp delete mode 100644 bindings/fluidmax/fluidmax_fakefuns.c delete mode 100644 bindings/fluidmax/fluidsynth.jpg delete mode 100644 bindings/fluidmax/fluidsynth/version.h delete mode 100644 bindings/fluidmax/fluidsynth~.help delete mode 100644 bindings/fluidmax/ftmax.h delete mode 100644 bindings/fluidsynth_jni/README delete mode 100644 bindings/fluidsynth_jni/fluidsynth_jni.dsp delete mode 100644 bindings/fluidsynth_jni/fluidsynth_jni.dsw delete mode 100644 bindings/fluidsynth_jni/include/sndfile.h delete mode 100644 bindings/fluidsynth_jni/java/fluidsynth/FluidException.java delete mode 100644 bindings/fluidsynth_jni/java/fluidsynth/Sample.java delete mode 100644 bindings/fluidsynth_jni/java/fluidsynth/Synth.java delete mode 100644 bindings/fluidsynth_jni/java/fluidsynth/Test.java delete mode 100644 bindings/fluidsynth_jni/lib/libsndfile.lib delete mode 100644 bindings/fluidsynth_jni/src/fluidsynth_Sample.cpp delete mode 100644 bindings/fluidsynth_jni/src/fluidsynth_Sample.h delete mode 100644 bindings/fluidsynth_jni/src/fluidsynth_Synth.cpp delete mode 100644 bindings/fluidsynth_jni/src/fluidsynth_Synth.h delete mode 100644 bindings/fluidsynth_jni/src/fluidsynth_jni.cpp delete mode 100644 bindings/fluidsynth_jni/src/fluidsynth_jni.h diff --git a/bindings/README b/bindings/README deleted file mode 100644 index 7a56177a..00000000 --- a/bindings/README +++ /dev/null @@ -1,11 +0,0 @@ - -This directory contains the projects that bind FluidSynth to a -language or host application. The following projects are currently -available: - -fluidmax: Provides the fluidsynth~ external object for - Max/MSP. Written by Norbert Schnell. - -fluidsynth_jni: Provides a native interface for the Java - language. Written by Peter Hanappe. - diff --git a/bindings/fluidmax/README.TXT b/bindings/fluidmax/README.TXT deleted file mode 100644 index 04ed422c..00000000 --- a/bindings/fluidmax/README.TXT +++ /dev/null @@ -1,77 +0,0 @@ -****************************************************************** -* -* This is fluidsynth~, -* a derivative for Max/MSP of the Fluid Synth soundfont synthesizer. -* -* Fluid Synth is written by Peter Hanappe et al. -* See http://www.fluidsynth.org/. -* -* Max/MSP integration by Norbert Schnell, IRCAM - Centre Pompidou -* Norbert.Schnell@ircam.fr -* -* Take a look here: -* http://www.ircam.fr/equipes/temps-reel/maxmsp/fluidsynth.html -* -_____________________________________________________________________ -LICENSE - -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.1 of the License, or (at your option) any later version. - -See file COPYING.LIB in the CVS root directory for further information on licensing terms. - -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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -_____________________________________________________________________ -SYSTEM REQUIREMENTS - -This version of fluidsynth~ was initially created and tested using Max/MSP 4.3 on Mac 10.3 and should work on all following versions of Max/MSP and Mac OS. - -_____________________________________________________________________ -RELASE NOTES for version 01/2009 (release 13) - - - adapted to current FluidSynth code base (after years without activity) - - no new features or relevant changes! - -_____________________________________________________________________ -RELASE NOTES up to version 10/2005 (release 10, 11 and 12) - - - added micro-tuning methods (to be added to help patch) - - fixed bug restricting argument of tuning-octave message to int (11) - - fixed voice stealing (12) - -_____________________________________________________________________ -RELASE NOTES up to version 09/2004 (release 7 to 9) - - - bug fix: now polyphony and # of midi channel arguments take effect (release 9) - - added message resample permitting to chose resampling interpolation method (release 8) - - added names (= file name without path and postfix) for soundfonts (7) - - fixed bug of crash for "info channels" in case of channel(s) without defined preset - - dropped Mac OS 9 version - - extended help patch - -_____________________________________________________________________ -RELASE NOTES of version 04/2004 (release 6) - - - fixed several bugs of the initial release (especially related to the translation of paths - - introduced names for soundfonts (without path and .sf2 postfix) - - introduced a message "info" in order to query the current state of tuning-octave - -_____________________________________________________________________ -SVN DIRECTORY - -svn repository: https://resonance.org/svn/fluidsynth/trunk/fluidsynth -Max/MSP implementation directory: bindings/fluidmax - -The fluidsynth directory in the fluidmax directory contains only a version.h which is just added for the case that the version.h file in the fluidsynth checkout is not (auto-)"maked" or generated otherwise. - -For now the file fluid_sys.c is not included to the CW project. Instead there is a file called fluidmax_fakefuns.c implementing some necessary functions. - -_____________________________________________________________________ -KNOWN BUGS: - -_____________________________________________________________________ -TODO - - implement log function properly diff --git a/bindings/fluidmax/build/osx-macho/fluidmax.xcodeproj/project.pbxproj b/bindings/fluidmax/build/osx-macho/fluidmax.xcodeproj/project.pbxproj deleted file mode 100644 index c6f9ca6a..00000000 --- a/bindings/fluidmax/build/osx-macho/fluidmax.xcodeproj/project.pbxproj +++ /dev/null @@ -1,339 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 42; - objects = { - -/* Begin PBXBuildFile section */ - 3B1863D00B2DACF200083EB3 /* fluidmax_fakefuns.c in Sources */ = {isa = PBXBuildFile; fileRef = 3B1863CE0B2DACF200083EB3 /* fluidmax_fakefuns.c */; }; - 3B1863D10B2DACF200083EB3 /* fluidmax.c in Sources */ = {isa = PBXBuildFile; fileRef = 3B1863CF0B2DACF200083EB3 /* fluidmax.c */; }; - 3B1863E20B2DAD7800083EB3 /* fluid_chan.c in Sources */ = {isa = PBXBuildFile; fileRef = 3B1863D30B2DAD7800083EB3 /* fluid_chan.c */; }; - 3B1863E30B2DAD7800083EB3 /* fluid_chorus.c in Sources */ = {isa = PBXBuildFile; fileRef = 3B1863D40B2DAD7800083EB3 /* fluid_chorus.c */; }; - 3B1863E40B2DAD7800083EB3 /* fluid_conv.c in Sources */ = {isa = PBXBuildFile; fileRef = 3B1863D50B2DAD7800083EB3 /* fluid_conv.c */; }; - 3B1863E50B2DAD7800083EB3 /* fluid_defsfont.c in Sources */ = {isa = PBXBuildFile; fileRef = 3B1863D60B2DAD7800083EB3 /* fluid_defsfont.c */; }; - 3B1863E60B2DAD7800083EB3 /* fluid_gen.c in Sources */ = {isa = PBXBuildFile; fileRef = 3B1863D70B2DAD7800083EB3 /* fluid_gen.c */; }; - 3B1863E70B2DAD7800083EB3 /* fluid_hash.c in Sources */ = {isa = PBXBuildFile; fileRef = 3B1863D80B2DAD7800083EB3 /* fluid_hash.c */; }; - 3B1863E80B2DAD7800083EB3 /* fluid_list.c in Sources */ = {isa = PBXBuildFile; fileRef = 3B1863D90B2DAD7800083EB3 /* fluid_list.c */; }; - 3B1863E90B2DAD7800083EB3 /* fluid_mod.c in Sources */ = {isa = PBXBuildFile; fileRef = 3B1863DA0B2DAD7800083EB3 /* fluid_mod.c */; }; - 3B1863EA0B2DAD7800083EB3 /* fluid_ramsfont.c in Sources */ = {isa = PBXBuildFile; fileRef = 3B1863DB0B2DAD7800083EB3 /* fluid_ramsfont.c */; }; - 3B1863EB0B2DAD7800083EB3 /* fluid_rev.c in Sources */ = {isa = PBXBuildFile; fileRef = 3B1863DC0B2DAD7800083EB3 /* fluid_rev.c */; }; - 3B1863EC0B2DAD7800083EB3 /* fluid_settings.c in Sources */ = {isa = PBXBuildFile; fileRef = 3B1863DD0B2DAD7800083EB3 /* fluid_settings.c */; }; - 3B1863EE0B2DAD7800083EB3 /* fluid_synth.c in Sources */ = {isa = PBXBuildFile; fileRef = 3B1863DF0B2DAD7800083EB3 /* fluid_synth.c */; }; - 3B1863EF0B2DAD7800083EB3 /* fluid_tuning.c in Sources */ = {isa = PBXBuildFile; fileRef = 3B1863E00B2DAD7800083EB3 /* fluid_tuning.c */; }; - 3B1863F00B2DAD7800083EB3 /* fluid_voice.c in Sources */ = {isa = PBXBuildFile; fileRef = 3B1863E10B2DAD7800083EB3 /* fluid_voice.c */; }; - 3BC6778E0ADB9F2E0064088F /* MaxAPI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3BC6778C0ADB9F2E0064088F /* MaxAPI.framework */; }; - 3BC6778F0ADB9F2E0064088F /* MaxAudioAPI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3BC6778D0ADB9F2E0064088F /* MaxAudioAPI.framework */; }; - 5CA4036E0F1F689D0054E6B0 /* fluid_dsp_float.c in Sources */ = {isa = PBXBuildFile; fileRef = 5CA4036D0F1F689D0054E6B0 /* fluid_dsp_float.c */; }; - 8D01CCCE0486CAD60068D4B7 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08EA7FFBFE8413EDC02AAC07 /* Carbon.framework */; }; -/* End PBXBuildFile section */ - -/* Begin PBXFileReference section */ - 08EA7FFBFE8413EDC02AAC07 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = /System/Library/Frameworks/Carbon.framework; sourceTree = ""; }; - 3B1863CE0B2DACF200083EB3 /* fluidmax_fakefuns.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = fluidmax_fakefuns.c; path = bindings/fluidmax/fluidmax_fakefuns.c; sourceTree = ""; }; - 3B1863CF0B2DACF200083EB3 /* fluidmax.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = fluidmax.c; path = bindings/fluidmax/fluidmax.c; sourceTree = ""; }; - 3B1863D30B2DAD7800083EB3 /* fluid_chan.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = fluid_chan.c; path = ../../../../src/fluid_chan.c; sourceTree = SOURCE_ROOT; }; - 3B1863D40B2DAD7800083EB3 /* fluid_chorus.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = fluid_chorus.c; path = ../../../../src/fluid_chorus.c; sourceTree = SOURCE_ROOT; }; - 3B1863D50B2DAD7800083EB3 /* fluid_conv.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = fluid_conv.c; path = ../../../../src/fluid_conv.c; sourceTree = SOURCE_ROOT; }; - 3B1863D60B2DAD7800083EB3 /* fluid_defsfont.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = fluid_defsfont.c; path = ../../../../src/fluid_defsfont.c; sourceTree = SOURCE_ROOT; }; - 3B1863D70B2DAD7800083EB3 /* fluid_gen.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = fluid_gen.c; path = ../../../../src/fluid_gen.c; sourceTree = SOURCE_ROOT; }; - 3B1863D80B2DAD7800083EB3 /* fluid_hash.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = fluid_hash.c; path = ../../../../src/fluid_hash.c; sourceTree = SOURCE_ROOT; }; - 3B1863D90B2DAD7800083EB3 /* fluid_list.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = fluid_list.c; path = ../../../../src/fluid_list.c; sourceTree = SOURCE_ROOT; }; - 3B1863DA0B2DAD7800083EB3 /* fluid_mod.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = fluid_mod.c; path = ../../../../src/fluid_mod.c; sourceTree = SOURCE_ROOT; }; - 3B1863DB0B2DAD7800083EB3 /* fluid_ramsfont.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = fluid_ramsfont.c; path = ../../../../src/fluid_ramsfont.c; sourceTree = SOURCE_ROOT; }; - 3B1863DC0B2DAD7800083EB3 /* fluid_rev.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = fluid_rev.c; path = ../../../../src/fluid_rev.c; sourceTree = SOURCE_ROOT; }; - 3B1863DD0B2DAD7800083EB3 /* fluid_settings.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = fluid_settings.c; path = ../../../../src/fluid_settings.c; sourceTree = SOURCE_ROOT; }; - 3B1863DF0B2DAD7800083EB3 /* fluid_synth.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = fluid_synth.c; path = ../../../../src/fluid_synth.c; sourceTree = SOURCE_ROOT; }; - 3B1863E00B2DAD7800083EB3 /* fluid_tuning.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = fluid_tuning.c; path = ../../../../src/fluid_tuning.c; sourceTree = SOURCE_ROOT; }; - 3B1863E10B2DAD7800083EB3 /* fluid_voice.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = fluid_voice.c; path = ../../../../src/fluid_voice.c; sourceTree = SOURCE_ROOT; }; - 3BC6778C0ADB9F2E0064088F /* MaxAPI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MaxAPI.framework; path = /Library/Frameworks/MaxAPI.framework; sourceTree = ""; }; - 3BC6778D0ADB9F2E0064088F /* MaxAudioAPI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MaxAudioAPI.framework; path = /Library/Frameworks/MaxAudioAPI.framework; sourceTree = ""; }; - 5CA4036D0F1F689D0054E6B0 /* fluid_dsp_float.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fluid_dsp_float.c; sourceTree = ""; }; - 8D01CCD20486CAD60068D4B7 /* fluidsynth~.mxo */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "fluidsynth~.mxo"; sourceTree = BUILT_PRODUCTS_DIR; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 8D01CCCD0486CAD60068D4B7 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 8D01CCCE0486CAD60068D4B7 /* Carbon.framework in Frameworks */, - 3BC6778E0ADB9F2E0064088F /* MaxAPI.framework in Frameworks */, - 3BC6778F0ADB9F2E0064088F /* MaxAudioAPI.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 089C166AFE841209C02AAC07 /* yin */ = { - isa = PBXGroup; - children = ( - 08FB77ADFE841716C02AAC07 /* Sources */, - 089C1671FE841209C02AAC07 /* Frameworks */, - 19C28FB4FE9D528D11CA2CBB /* Products */, - ); - name = yin; - sourceTree = ""; - }; - 089C1671FE841209C02AAC07 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 3BC6778C0ADB9F2E0064088F /* MaxAPI.framework */, - 3BC6778D0ADB9F2E0064088F /* MaxAudioAPI.framework */, - 08EA7FFBFE8413EDC02AAC07 /* Carbon.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; - 08FB77ADFE841716C02AAC07 /* Sources */ = { - isa = PBXGroup; - children = ( - 3B1863D20B2DACFC00083EB3 /* fluidsynth */, - 3B1863CE0B2DACF200083EB3 /* fluidmax_fakefuns.c */, - 3B1863CF0B2DACF200083EB3 /* fluidmax.c */, - ); - name = Sources; - path = ../../../..; - sourceTree = SOURCE_ROOT; - }; - 19C28FB4FE9D528D11CA2CBB /* Products */ = { - isa = PBXGroup; - children = ( - 8D01CCD20486CAD60068D4B7 /* fluidsynth~.mxo */, - ); - name = Products; - sourceTree = ""; - }; - 3B1863D20B2DACFC00083EB3 /* fluidsynth */ = { - isa = PBXGroup; - children = ( - 3B1863D30B2DAD7800083EB3 /* fluid_chan.c */, - 3B1863D40B2DAD7800083EB3 /* fluid_chorus.c */, - 3B1863D50B2DAD7800083EB3 /* fluid_conv.c */, - 3B1863D60B2DAD7800083EB3 /* fluid_defsfont.c */, - 3B1863D70B2DAD7800083EB3 /* fluid_gen.c */, - 3B1863D80B2DAD7800083EB3 /* fluid_hash.c */, - 3B1863D90B2DAD7800083EB3 /* fluid_list.c */, - 3B1863DA0B2DAD7800083EB3 /* fluid_mod.c */, - 3B1863DB0B2DAD7800083EB3 /* fluid_ramsfont.c */, - 3B1863DC0B2DAD7800083EB3 /* fluid_rev.c */, - 3B1863DD0B2DAD7800083EB3 /* fluid_settings.c */, - 3B1863DF0B2DAD7800083EB3 /* fluid_synth.c */, - 3B1863E00B2DAD7800083EB3 /* fluid_tuning.c */, - 3B1863E10B2DAD7800083EB3 /* fluid_voice.c */, - 5CA4036D0F1F689D0054E6B0 /* fluid_dsp_float.c */, - ); - name = fluidsynth; - path = src; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 8D01CCC60486CAD60068D4B7 /* fluidsynth~ */ = { - isa = PBXNativeTarget; - buildConfigurationList = 4FADC23308B4156C00ABE55E /* Build configuration list for PBXNativeTarget "fluidsynth~" */; - buildPhases = ( - 8D01CCCB0486CAD60068D4B7 /* Sources */, - 8D01CCCD0486CAD60068D4B7 /* Frameworks */, - 3BC677940ADB9F6C0064088F /* ShellScript */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "fluidsynth~"; - productInstallPath = "$(HOME)/Library/Bundles"; - productName = yin; - productReference = 8D01CCD20486CAD60068D4B7 /* fluidsynth~.mxo */; - productType = "com.apple.product-type.bundle"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 089C1669FE841209C02AAC07 /* Project object */ = { - isa = PBXProject; - buildConfigurationList = 4FADC23708B4156C00ABE55E /* Build configuration list for PBXProject "fluidmax" */; - compatibilityVersion = "Xcode 2.4"; - hasScannedForEncodings = 1; - mainGroup = 089C166AFE841209C02AAC07 /* yin */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 8D01CCC60486CAD60068D4B7 /* fluidsynth~ */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXShellScriptBuildPhase section */ - 3BC677940ADB9F6C0064088F /* ShellScript */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "NAME=$WRAPPER_NAME\nDEST=$PROJECT_DIR/$EXTERNALS_DIR\nORIG=$TARGET_BUILD_DIR/$NAME\nPROD=$DEST/$NAME\n\n# set bundle bit for mxo's (on some installations, they show up as directories)\n/Developer/Tools/SetFile -a B $ORIG\n\nif test -d \"$PROD\"; then\n\trm -f -r \"$PROD\"\nfi\ncp -R $ORIG $DEST\n\n"; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 8D01CCCB0486CAD60068D4B7 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 3B1863D00B2DACF200083EB3 /* fluidmax_fakefuns.c in Sources */, - 3B1863D10B2DACF200083EB3 /* fluidmax.c in Sources */, - 3B1863E20B2DAD7800083EB3 /* fluid_chan.c in Sources */, - 3B1863E30B2DAD7800083EB3 /* fluid_chorus.c in Sources */, - 3B1863E40B2DAD7800083EB3 /* fluid_conv.c in Sources */, - 3B1863E50B2DAD7800083EB3 /* fluid_defsfont.c in Sources */, - 3B1863E60B2DAD7800083EB3 /* fluid_gen.c in Sources */, - 3B1863E70B2DAD7800083EB3 /* fluid_hash.c in Sources */, - 3B1863E80B2DAD7800083EB3 /* fluid_list.c in Sources */, - 3B1863E90B2DAD7800083EB3 /* fluid_mod.c in Sources */, - 3B1863EA0B2DAD7800083EB3 /* fluid_ramsfont.c in Sources */, - 3B1863EB0B2DAD7800083EB3 /* fluid_rev.c in Sources */, - 3B1863EC0B2DAD7800083EB3 /* fluid_settings.c in Sources */, - 3B1863EE0B2DAD7800083EB3 /* fluid_synth.c in Sources */, - 3B1863EF0B2DAD7800083EB3 /* fluid_tuning.c in Sources */, - 3B1863F00B2DAD7800083EB3 /* fluid_voice.c in Sources */, - 5CA4036E0F1F689D0054E6B0 /* fluid_dsp_float.c in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin XCBuildConfiguration section */ - 4FADC23408B4156C00ABE55E /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - COPY_PHASE_STRIP = NO; - FRAMEWORK_SEARCH_PATHS = ( - /System/Library/Frameworks, - /Library/Frameworks, - ); - GCC_DYNAMIC_NO_PIC = NO; - GCC_ENABLE_FIX_AND_CONTINUE = YES; - GCC_MODEL_TUNING = G5; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "/Library/Frameworks/MaxAPI.framework/Versions/A/Headers/macho-prefix.h"; - GCC_PREPROCESSOR_DEFINITIONS = FLUIDMAX; - HEADER_SEARCH_PATHS = ( - ../.., - ../../../../src, - ../../../../include/, - /Library/Frameworks/MaxAPI.framework/Versions/A/Headers, - /Library/Frameworks/MaxAudioAPI.framework/Versions/A/Headers, - ); - INFOPLIST_FILE = maxternal.plist; - INSTALL_PATH = "$(HOME)/Library/Bundles"; - PRODUCT_NAME = "fluidsynth~"; - WRAPPER_EXTENSION = mxo; - }; - name = Debug; - }; - 4FADC23508B4156C00ABE55E /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = ( - ppc, - i386, - ); - FRAMEWORK_SEARCH_PATHS = ( - /System/Library/Frameworks, - /Library/Frameworks, - ); - GCC_GENERATE_DEBUGGING_SYMBOLS = NO; - GCC_MODEL_TUNING = G5; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "/Library/Frameworks/MaxAPI.framework/Versions/A/Headers/macho-prefix.h"; - GCC_PREPROCESSOR_DEFINITIONS = FLUIDMAX; - HEADER_SEARCH_PATHS = ( - ../.., - ../../../../src, - ../../../../include/, - /Library/Frameworks/MaxAPI.framework/Versions/A/Headers, - /Library/Frameworks/MaxAudioAPI.framework/Versions/A/Headers, - ); - INFOPLIST_FILE = maxternal.plist; - INSTALL_PATH = "$(HOME)/Library/Bundles"; - PRODUCT_NAME = "fluidsynth~"; - WRAPPER_EXTENSION = mxo; - }; - name = Release; - }; - 4FADC23808B4156C00ABE55E /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - EXTERNALS_DIR = ../..; - FRAMEWORK_SEARCH_PATHS = ( - /System/Library/Frameworks, - /Library/Frameworks, - ); - GCC_PREPROCESSOR_DEFINITIONS = ( - HAVE_STRING_H, - HAVE_STDLIB_H, - HAVE_STDIO_H, - HAVE_MATH_H, - HAVE_STDARG_H, - WORDS_BIGENDIAN, - ); - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - PREBINDING = NO; - SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; - }; - name = Debug; - }; - 4FADC23908B4156C00ABE55E /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = ( - ppc, - i386, - ); - EXTERNALS_DIR = ../..; - FRAMEWORK_SEARCH_PATHS = ( - /System/Library/Frameworks, - /Library/Frameworks, - ); - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - PREBINDING = NO; - SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 4FADC23308B4156C00ABE55E /* Build configuration list for PBXNativeTarget "fluidsynth~" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 4FADC23408B4156C00ABE55E /* Debug */, - 4FADC23508B4156C00ABE55E /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 4FADC23708B4156C00ABE55E /* Build configuration list for PBXProject "fluidmax" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 4FADC23808B4156C00ABE55E /* Debug */, - 4FADC23908B4156C00ABE55E /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 089C1669FE841209C02AAC07 /* Project object */; -} diff --git a/bindings/fluidmax/build/osx-macho/maxternal.plist b/bindings/fluidmax/build/osx-macho/maxternal.plist deleted file mode 100644 index 704e31f3..00000000 --- a/bindings/fluidmax/build/osx-macho/maxternal.plist +++ /dev/null @@ -1,10 +0,0 @@ - - - - - CFBundleExecutable - $(PRODUCT_NAME) - CFBundlePackageType - iLaX - - diff --git a/bindings/fluidmax/build/winxp-vs8/fluidsynth.def b/bindings/fluidmax/build/winxp-vs8/fluidsynth.def deleted file mode 100644 index fdd689b2..00000000 --- a/bindings/fluidmax/build/winxp-vs8/fluidsynth.def +++ /dev/null @@ -1,6 +0,0 @@ -;fluidsynth.def - -LIBRARY fluidsynth~.mxe -EXPORTS - - main diff --git a/bindings/fluidmax/build/winxp-vs8/fluidsynth.sln b/bindings/fluidmax/build/winxp-vs8/fluidsynth.sln deleted file mode 100644 index 825c983f..00000000 --- a/bindings/fluidmax/build/winxp-vs8/fluidsynth.sln +++ /dev/null @@ -1,19 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 9.00 -# Visual Studio 2005 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fluidsynth", "fluidsynth.vcproj", "{73069FC3-D989-47DB-B15F-625703EED4DA}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Win32 = Debug|Win32 - Release|Win32 = Release|Win32 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {73069FC3-D989-47DB-B15F-625703EED4DA}.Debug|Win32.ActiveCfg = Debug|Win32 - {73069FC3-D989-47DB-B15F-625703EED4DA}.Debug|Win32.Build.0 = Debug|Win32 - {73069FC3-D989-47DB-B15F-625703EED4DA}.Release|Win32.ActiveCfg = Release|Win32 - {73069FC3-D989-47DB-B15F-625703EED4DA}.Release|Win32.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/bindings/fluidmax/build/winxp-vs8/fluidsynth.suo b/bindings/fluidmax/build/winxp-vs8/fluidsynth.suo deleted file mode 100644 index f4f4b4d8c5ddfbba093cc4fa06dea01841a44cde..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42496 zcmeI534m5r*~ec%P!JK&a6=ss1Qd{6LB$z1QBhD3w^4*)z|moe0Ynp*G_|taa>+!q z#d2$L&(hLtF-@(nFSF85P1DLRQ&T@J_51zqeJ*nuhId|uMNA&}zvp@X?{m*N_bks@ z?lO-**6Eq+zPtUig$6RR(5mp>`)vzta(oMPkx0ivp(RQy@ZS6Hzn_wY0_sNj5S75Y z_~6E zzJw#eexM9gfKgyH7y~{AJZ?PUf#3iz02~A+fP=vyU?P|V4h1^_kNGglVTF18TS!@q zEzBicP&kFNDP6kIYO?dT{S=cQwR~{s`8)rtg+Aj)7A7)@6z3IAq@3p#W}%HOEJ=ST z@v{qFC`;e4#KV&ItL?Z_9yks z2iTYVp80@={onp$d1zz*H`E6l4J;#lf&E4QPzJhzeE&a=?;g{OP#=)>e|?QU!2a*= zdl1?$t)t_CTn799o;GfYnqK-q-#-sMV53 z$@vJ*EbYg$$;))|SVkGvkl$+ZRhj5joJ~#Avg`P@iu}*v-y+UMi}~RNs`+JM!p!36 zMI14cZ>M0jkmD;UDf{Tm8>1ef2^yM za-aO#r>&xr`|>|Vw_UCBS{KIl+s!8&FlzL{Q^xeKt+6>3+UzrTQElzWB)M5tBPu5? zm^XXD^f_hYYHF+ND#z7SolsM~psuWHDy1@o+L%YF%;0kgEm{Awn3AhPYf8F@|J4uB z%uDjWZLl@Z%8|5!T3XL^Qag#y*`zs<`dUc(^ODw)+O6tS|EE9M6qK62w&&63l`*6@ zgO)ZsNqGVNR^M-Hwe2=7`2Xd;x774)G0v5ghUt%@?5oMcNtD67r1jb#RxQ0bf8*01 zmzsV%Y;TVWm^Ww6qPcaI^B2rJvASwuUFEFWMKv?)PMN##gvuE;b7$7fogLhq=}RhS zEUKxUS$T5J+$Hn-Ew0;3<0!^eXRwK1JpNWN`a|YL($!Cgbzl~)wTuzR*~22*O)cM?!7NI= zw3e1ulX$-AiI-c12g}x$&iY#!0lNl6`1}N`gTbsGhOs&rM=l04I~;?)7wCt@o_rgH zHj3O0#iAdUgV6Tmn8B=2$MX9SP{C~4nd8X~(oN?t`BWX9({-gDIG?w4#;fgS$==A? z%-i0{E=Tbg_4lrI7tl5xJ?iJ}S?Q%Y9F0$M7G9lv)_bE7&G0{?D2?}8^MQ;Z-YQCD zPQ;w|d6W39j#@1?7aV~9*YDddO7;JPvE5%Mh!jgdTZ@lL=7iJJ0~&nxkMnm-D>eP? zu&uSDAdYi-gzOyCa-PLm&xUn1mHm?1H~hr^w{UIlm{w}~J7D{KIEdA4?T1lMuIt>j zsAm3<*4JSAM}NHhs3gD6o=0IdlXU8Po-6O-ZE8^25_YR^c-s{hn5uzzagd%Y7IS+InIfAP*?5^ z`}ovk2c`HKvi?i@AE!}r`|F8qHa?A}o!FM@k~wTOzO-R3il^`T&vx&=Q>pDgKmW?S zoPKaVd2!~YH>}?UY&!j|FmZe-HT_+&{bTh1!||u4Iz5>a%v?TZWji6oQ+MyIWeekT z{ZMN9`SW-8rG7_b&Gt|h(vjWv+?odac0u?=5j{0w8nACh~x})0ll&*vHdxobp*|6f5rCS$B;MoHj4@U zKS|fLm14HpZ~akz6x(*AINN#bw%GC)5SH5Sv$(o){&r=iz9pakAZ&X_1lc}+w*Nnw zu~Q%99+b0!rfQ%$=kKVMt-tfVzka86TGEee*ahrQep2gM(K=HfF^8PZ2Qw)%cNQEw z-GP|Tzcl}qNtrHT>|Al(W529UW}VYGq6g#diZ$T=@YH0y9Z2c}7=Me&k&n6ZZ@$>~ z_H2865<#i$C!bnumi3=mJxe;j?OHW@)!VLXwCz@8t9N#ht=>k{EY|-9Qm0KxHva3! zN-aNQ)m|x<{?OE<=qLNH$@uRzrc%>C2it7^TP*!Oi>93ZX!_1)dVo^X-yhqKP8yJ6 z>FXz&lI;AuV_0hX7h(HTCk)7HZ1qM{KfV8)CCQ##zOAQ`HS1IF8Iz$Ej?Z{AdOfK6 zz~;z}&mgmj|jJqP{ zaYfYK-uj(N*}8Gv%bOWezw7bNBWfRbywmNY3SaJV z;Eun}cta(cP5PyY&xUbp?mS06`)z%$e6sz=DoVk-4P0YSi))1G3ibr95zk`;bC+Wz z_q()P2V-73L$)RyTi1PhD~`&mPBUEzt?MheSsm23^=Zr@YWZjXX}mN(xSUlp14?(i zR-6%SX!)$4xiwb5spm}FU48x9{P@Xw())C>b!p@C#`b-pi8g)?A9Nm9?jiNHyWzCLQtrg?+GM&~Xsk>f4Q8^lp5AM-En&m`{w{FtRW{_I z5?K@eb{0Sn#Udyl&)we*88V&EE&{Z!~bDbx?BKkvECnw#n-)IhFU{Z_%>QqH=CF z3n+Z&n7J)}&i5de^W;5|Q(LUft>e>jQ?2^W)t?fm-@rNz{e#++Ep5U%jkEAZ5pP^d zZ=`YvP3vv1q@MPo6=E$;4(|)XJLF$$07{xdf8mvC&JXJ9(F{*T&yi0lNPScf-iu}z~$fya3%O6xC(p;Tn(0iYrwVO%iucDi{bvOgkJ++ z2k!QK0~r4egg1hlz|FyZi}2gvJK($ER&X28{tm)Bf%lR4{dfbWAJfO~=b4+(z+ z?gtNm9|QTH5dJjupA$X=egPf^kAPo-M}fAF6aEUgN%CLdH{id)Z^0Abci>6zd+-PF zNAMJQ8vGA<1{lwCgnt6hgBQS`!HeJ}@E4%X-w0n0-8t$j;2+>s@EUj>{1dzZoWH&W z{tvtj-U0st{|4`Z_rUwWO_+7L?rS&*rn^TMt=B%&R8MxqYYVO~skf}H(rS+PPDj9& zZM^|=pFTKVT!ujy(o8-+HMy_EF2;|1%r>>BG)^*ea!owze1 zM{Dz1VOr+dzG-^LyJO9oEz>@{v$iiTyVQYT`A)jJQU>f%-gDR;D7yl=PM|kX`hph8 zy_+rhsTJ4+v<7X!reHJB7PJGKgZ5wx&;e`-I)YB1GuR4j4L%0CfNj9GU^}oq*a36} zJA$3S&Y%o*1Kq(cpa8WHyQosVfS#(?vb#2EV%L5Jsx)d2+p0h z*Mi%!eVV_$;X0x#J%TGo-!-^BgF6UrcyI>?w;$ZZ;HCyQ3hv0@rW0CrP=$e|oaP+e!kc)y-zZhNmvfxIbUm<~fEjZLQzXftBdrtds3!#soRI!7UT~-(g zzdi@`Y+x$3RA2kMn(mGb9hSc(bVDhRl9r3d(*$hgL&0>Q)BrhK)`>uw3*?Rk^MP^! zkh6EWE>tcCa)$%gg~~FJ#pl{jajhq}FL2GL+yLZ80@r-Xw}70j*EOHwT2HPF+yNBV zcXG=RtS;A{tb1UERi!Ei%^8y*}~VFbEq>=WD`=p(~!bk1%}*o_Nr6YP#g??`w|aOS%f zy%XV_;Eem@=sOZF2(C5yndqL+Il*m;{yFq^gckyAHh#+}DCLz8lc> z0XOHkU!dC;9}dnmeviI8;Zwm8B==Go$De~U-Ivi#_kVNTTj>4a-VP46&;eu5cS}Og z-($Do!~As(t_poT$0)smQ}2z=|H5v;>2vx@Adcc$I~as6JtVj?^t~jI%HY(GMVFoy zoPBV*1X3HEx}&o6yx?pbAD2KD1*g6kU3y7y`mj?akkf-xKLcGl8_|s~8`00p*_|JD zp9#()aU`Egcztl)&@Vt&ZVFEQW_0P>f-{XfB#@s5r~Wf^>4$=|9=g+5%L#WOv`pnD z1~(}_=_a(1VM-RZ&Uo6Zco z^Ky3Qhuww2+0QNxyJb1MYr^i!!S%%MD`9t6&hGB8yC=B)vHL;T-Ji32AnYCtZVGnU zy>|b|*}WQeuLoC--5cnM(3!Hf+XCHkX%$>A^w#J~+nimyuxlTj{j5XSb@%C2No32MUB|HN9Gq=q>#*A)XV*3Cb_uRCc0I#xNX~9(*zFmd{&slS zjm+8Y7j_jnyU}5{f6i`v*d3VTrlY5epRaR@p5={vc;>boy@hgraOw}BOY0%B5_%Nf zbevdBwOpbdI-D6)0&ROJh8X>Rc>|RHgej~@dgYKH@-QYa-Esc=& z(WBJ2K$qS!xC!W;Y!*n@oZXILw{vh~`Mq1%4bIsO32yJ;^gjCrcTmo50=nrQ5}YmP z(6Fn@+06{QS;1NMHDPyZaQ4Qf!Ce*{RN-=T)3`FnU59R&>cOldg2H!$yEQml=T-iI zJRG4tRIx{U+zG(hh2mOV&erM(rZ{Vt+X7hj$`~Nm1B?TT-cN1-aFkMx0&>nij{(Xw zAm?msI#8-X#?4BYbTuMZ4o(Vg9-*A8mHELf3~n^xqTo&m&XMKR;7$+D8R;3pogJL# zdQNcX2UkJ(>EK-PWa)lBxJ!a7C%iPcD}wWUuMF<$;GA783+}q$JddvgcYSc92)_~B zO~D!8&B1*qxN^ep26q=>wxQ9EY1!tUstouiKN>G_S%zI%JSh2YPG;Xr+RQ#wWEMl^=$1eY@~0F>mOXU)*j98*;@PXurm)wgx%cW9C_vk=i1ja#sb&B z%Cg{$@7myQ53U^U&fp#o&hz+naK04J_~cqxP{=UCjLX)KuKVQn1$AMUt?k@vIWxFy z$JMssT1|15<*{<#3hu7pEUWJYm#xpb!u>qB$HNY)@T=f{8{8q=drB~33)3x_5VXRi>2MA zvbL_fXIsSi`;Jz=OW~7$+45-fX#VrEEnnoy!FE8=+sfI$hXBP`BS|R5|*w5=b@B&bYGKQ7w8p;@eVgkJ5HdcPF~?!{F3^gx;#? z^Jm%lXuT@&`LiAPacfY@Y{PiI0x};`?D;p}zS5NN{9%%=X)8_H`@4SKYm7?q^sTMp z;`5KVisW6lrKW!i_U_dx#nX30D=y7B|J#Z3<%o8DT&Z8ybMdYw7pEL4r{Co|1IKUs zS4SYX6&M5hf^i_Ty92!^xHHGyjot%%FUK9m0p0kX?XjDN&*T|Tw#V+Cg6%fXeT?tc zr*aHGq;;x=?842`9=DiKZj%l64#4NTzIr(sOmb>4H2j{VUKo_uEaF(JIIfo8?UKZcX(5oY~Znkg0nTGYH z%m!)Qj7Hn3Z5op)?u6?+1BVvui(^sqqiz-`1c*Xc4LQA&95cpEUgS!1J;UM zC!hyb91Z01GJ!9dXL7{7C08!rYFpg@IFl?c`oC_N*oLxHiXV}_-^=-_QapV})#B0| z|92lzI{#IQrQfvow>DOP{CSXc^=T@M*#uqLJvjBg=%&#>IFCI5U9UMI zIFqbG#|0GTCftYd8FKDu=0q)rcU$=mk?j4@=^e6X{Ojf)^3(G6tgg%emg!JX1(ef3 z*6x?0TYhH*H;nL1pqvXbyYtYs`*d*D`DcJ~A;|15Lf7sKIqp_;o2q+r+L^}vU@CY3 z$W?&1!JgpXKu&*uIZ*b3kaJ}^Tm{)TIQ5a}raLw`+rgL69VeCr=Q#3JbXV2>zLd7$ z%;1cqO{C+@H_`P2Hw9$Id0|oBW;Y|T`8UwcEEP7=2i-KD4Q_w*=fdu9IlGs`?(e~w#;d`-8=U>;74$@C zAT;SjTA-UotKdAgExP$@m*aLs9}U<1`6FXW#J3;u?2fL?2u{5U-Mmx>XP=oBc6B+s zg<-cixC5{|8C^LiIQ37V8{hfC^+Ep(y7Kwp)GtKW?vmj4MgKzBUAf$@O`(N_HWRGL z^Mpr!1fTJ2>=DIv@tmjk7g{$EwyvErkUP8HT= zT{ZVP_pa2{+Ilr<)AymS&BrrVe$C9fxYu?~eAKod+Ol2o(U)~mu9=T%Zo8eZUdwj< zJo;VI{nOkku`cQ(_4hB7;P02ud6xV8sjF2Ng)hcD;Y%?maNc%x%oA>0K2KmB5Oyo> zAEl}OAZK@P*!?g#=eGBwD-Y%Dei3$$1m`7}N5k&foZWNi?nC`4xP8!{54)Fgc7F-G zzvk@z7Iv@X?EZo78t~QNoEN_qc5epf&dXcD{VO=r{daKQj^;QkXB{c6gEQ_n!L=t3yDLB_-orCKVoX2bv+zvUeYj9=3VOHpd?woJ89JdF0Z@2-$O+nus zUD>DIhWy1LZ*dfC$}fHEqQ`>{9nVlLH!jY*^23-u={@_nJY^HZQK9n1y#DBK9+&Osx-OTS4y+|*6p-5mSR+a$kn0AH4gL5C+Y@FjL9ThV zupz!pZJU>8=X0&DWOdaE-S%Re%G#1W)LuI%V4d3= z_01w{FI%G9gO#kkcx={QyobwU?V(=xQ6>X9WeR8orUE(JuuI?FK{b#wU-N;s9|v-_ zttT#Y4nCQ4b_OO z={v)VU4L*iYD&2Nki36)7Ys|wF?SVW>$3t%vGj+fCPhD+bN%C4VjSSM9a1d)fyw@C zYPYISuYWlP^#Y}y|6j4aCL%1Jel}`_aU(%pO- z^cT(yjKh6vIqe*WwA1Hg@#$ks!|^EN>;ZDagY#JZkH_vCoWGX?`)&pB*sVb}lNcME zcH@C|*-S#t>$7t1wR)`jB%ohA6l9$KNbd09^cVUX%kZe+Ot%vF+p)oU?#BbunhuQ5 z{Ok9$&-|YL>;zz$)qu>d7G1kJ!P#&=4wR)pJC8jJn3r>aoO!(n=!-7~a;?E7z&gGZ z$T^N*5&BgTn!jbhal)RG9eXXhZR5J&%-1)7ax2iz^1BTv_koQ2VZzk=VDs`wa8HDt zU-ifO<)?wiDlY;#d#;?*=f8tJz$+lLdktN?H-fWVd}_2mp-+rzXS%*o!8-P>3UZ2X zQ1DpamLO-n?SNw2+c7wg-3h%rp>I&&e^P$kQF@~L1_e3odZG*_^zBM=ma}hAFfYDE zLC!lYEH7mQM5!JuJ;Kio?~N#*o%8dgsy)BF*jD6hm$oZqSCHB1do2IVci5J91Ij?4 zT{mEvDp~(m9|=6R9B5}BsR&&^Ag7E2+UW=6x&h}byMPHG(f4N-m`uv zcM7nddxMB}wu>`CUvL)4;=2XicJ%EWXCLVSZVyh|yMXQJ?%-@2`YPo~pp9ZX*H2{a zT+a4wd&=5$em-NHZM>nxE4=q*bLkmu0;~lkd#2lx%|x#8+-4T_;hK)0 zzWutfHyxh2bfM-m2+6 zkpJ|cBe z|8lOh7B-}J1CRTN)It3+$(QV|{ob%9{os&~L><)Ez={ji4XZ8=qb}CoAE({$-gDmA zm{DId>+Y)jn)HwL<)hLU8K&2I*WaJ%SUw}%mql%|h9Pv8I0aO=&_xajPJLq79qMoC zd*>_JFm3*y2id^t-*wdr@*iFQCvbbEwS63z;H{R(+~Cyb1$Sm}uIkQ0cQ@hO;4HE8 zg1aDRcSUf^a(3Q5?Xlh^ZMw#HeQ-DD>~0AzyNh}|>|TOX{uy><=x+wM+ooxJL*cv= zTA3Z3yZbf4EeOt?n}xysGPurgzd<)ozs=b_7IxloYM$L0cqOjcyT+{BKdyqHYzn%EuQt#jXI?crvV{Q8OHCxdW!P)YCN?gg_Jf^-s z#`^jLS{_MT@Q7ogP1sI`>)DZ6Ij$zScAKZE+0V8>R|W@XzZe$W)EswIaEpVp%btyX zDB(H5nTJcz4`kLPqCXm3+xBUmz1r9wUFj8^ z=et{QgM%9jH!QflgX;@7GPvxmqFcdD3hwBzbC>bh;ARI0RX73t5W*9Kb9b*c?3M)A z7w**H&dqV>2X_%+wl8I+n*P5jIQ8AZdln*69{$l?_EF&<4++j{oD|$eglT-uAHF~6 z^gZ89EC=EK-t}P3-VD8ZJA0*VP_29uD$hX0R-|E1a_w%NXQ5t@DrK`@6FKvGM&)AI0}K>G61bOw0n*H$K1nQF?xN zA-Fe!bA9<{a4lk|$$P$9#;#JE;M~R9G`QV^>jT#>xc!1Fhbs?mOmL&&#s+slaIT3D p4DOH|H!--$!HvakN^nO8R{@vpwjCSXD7fRoZboni!Ocv#{|9a9JJbLG diff --git a/bindings/fluidmax/build/winxp-vs8/fluidsynth.vcproj b/bindings/fluidmax/build/winxp-vs8/fluidsynth.vcproj deleted file mode 100644 index 8a592ae9..00000000 --- a/bindings/fluidmax/build/winxp-vs8/fluidsynth.vcproj +++ /dev/null @@ -1,324 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/bindings/fluidmax/config_maxmsp.h b/bindings/fluidmax/config_maxmsp.h deleted file mode 100644 index 106dac7e..00000000 --- a/bindings/fluidmax/config_maxmsp.h +++ /dev/null @@ -1,12 +0,0 @@ -#define HAVE_STRING_H 1 -#define HAVE_STDLIB_H 1 -#define HAVE_STDIO_H 1 -#define HAVE_MATH_H 1 -#define HAVE_STDARG_H 1 - -#if defined(__POWERPC__) -#define WORDS_BIGENDIAN 1 -#endif - -#define STDIN_FILENO 0 -#define STDOUT_FILENO 1 diff --git a/bindings/fluidmax/fluidmax.c b/bindings/fluidmax/fluidmax.c deleted file mode 100644 index 5980c45d..00000000 --- a/bindings/fluidmax/fluidmax.c +++ /dev/null @@ -1,1853 +0,0 @@ -/*************************************************************************************** - * - * fluidsynth~ - * - * Fluid Synth soundfont synthesizer for Max/MSP. - * - * Fluid Synth is written by Peter Hanappe et al. - * see http://www.fluidsynth.org/ - * - * Max/MSP integration by Norbert Schnell ATR IRCAM - Centre Pompidou - * - * 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.1 - * of the License, or (at your option) any later version. - * - * See file COPYING.LIB for further informations on licensing terms. - * - * 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., 59 Temple Place - Suite 330, Boston, MA 02110-1301, USA. - * - */ - -/************************************************************************ - * - * versions: - * (14): adapted to latest code base - * (13): ??? - * (12): fixed voice stealing - * (11): fixed arguments of fluidmax_tuning_octave() (third has to be float) - * (10): added micro-tuning methods - * (9): bug fix: now polyphony and # of midi channel arguments take effect - * (8): added message resample permitting to chose resampling interpolation method - * (7): added names for soundfonts (== file name without path and postfix) - * (6): added message 'info' - * (5): fixed bogus path translation at file loading - * - */ -#define FLUIDMAX_VERSION "01/2009 (14)" - -#include "ftmax.h" -#include "fluidsynth.h" -#include "fluid_synth.h" -#include "fluid_sfont.h" -#include "fluid_chan.h" -#include "fluidsynth/version.h" - -typedef struct -{ - ftmax_dsp_object_t obj; - - fluid_synth_t *synth; - fluid_settings_t *settings; - int reverb; - int chorus; - int mute; - void *outlet; -} fluidmax_t; - -static t_messlist *fluidmax_class; - -static ftmax_symbol_t sym_on = NULL; -static ftmax_symbol_t sym_off = NULL; -static ftmax_symbol_t sym_undefined = NULL; -static ftmax_symbol_t sym_gain = NULL; -static ftmax_symbol_t sym_channels = NULL; -static ftmax_symbol_t sym_channel = NULL; -static ftmax_symbol_t sym_soundfonts = NULL; -static ftmax_symbol_t sym_soundfont = NULL; -static ftmax_symbol_t sym_presets = NULL; -static ftmax_symbol_t sym_preset = NULL; -static ftmax_symbol_t sym_reverb = NULL; -static ftmax_symbol_t sym_chorus = NULL; -static ftmax_symbol_t sym_polyphony = NULL; -static ftmax_symbol_t sym_nearest = NULL; -static ftmax_symbol_t sym_linear = NULL; -static ftmax_symbol_t sym_cubic = NULL; -static ftmax_symbol_t sym_sinc = NULL; - -/*************************************************************** - * - * generators - * - */ -typedef struct -{ - int index; - const char *name; - const char *unit; -} fluidmax_gen_descr_t; - -static fluidmax_gen_descr_t fluidmax_gen_info[] = -{ - {0, "startAddrsOffset", "samples"}, - {1, "endAddrsOffset", "samples"}, - {2, "startloopAddrsOffset", "samples"}, - {3, "endloopAddrsOffset", "samples"}, - {4, "startAddrsCoarseOffset", "32k samples"}, - {5, "modLfoToPitch", "cent fs"}, - {6, "vibLfoToPitch", "cent fs"}, - {7, "modEnvToPitch", "cent fs"}, - {8, "initialFilterFc", "cent 8.176 Hz"}, - {9, "initialFilterQ", "cB"}, - {10, "modLfoToFilterFc", "cent fs"}, - {11, "modEnvToFilterFc", "cent fs "}, - {12, "endAddrsCoarseOffset", "32k samples"}, - {13, "modLfoToVolume", "cB fs"}, - {14, "unused1", ""}, - {15, "chorusEffectsSend", "0.1%"}, - {16, "reverbEffectsSend", "0.1% "}, - {17, "pan", "0.1%"}, - {18, "unused2", ""}, - {19, "unused3", ""}, - {20, "unused4", ""}, - {21, "delayModLFO", "timecent"}, - {22, "freqModLFO", "cent 8.176 "}, - {23, "delayVibLFO", "timecent "}, - {24, "freqVibLFO", "cent 8.176"}, - {25, "delayModEnv", "timecent"}, - {26, "attackModEnv", "timecent "}, - {27, "holdModEnv", "timecent"}, - {28, "decayModEnv", "timecent"}, - {29, "sustainModEnv", "-0.1%"}, - {30, "releaseModEnv", "timecent"}, - {31, "keynumToModEnvHold", "tcent/key"}, - {32, "keynumToModEnvDecay", "tcent/key"}, - {33, "delayVolEnv", "timecent"}, - {34, "attackVolEnv", "timecent"}, - {35, "holdVolEnv", "timecent"}, - {36, "decayVolEnv", "timecent"}, - {37, "sustainVolEnv", "cB"}, - {38, "releaseVolEnv", "timecent "}, - {39, "keynumToVolEnvHold", "tcent/key"}, - {40, "keynumToVolEnvDecay", "tcent/key "}, - {41, "instrument", ""}, - {42, "reserved1", ""}, - {43, "keyRange MIDI", ""}, - {44, "velRange MIDI", ""}, - {45, "startloopAddrsCoarseOffset", "samples"}, - {46, "keynum MIDI", ""}, - {47, "velocity MIDI", ""}, - {48, "initialAttenuation", "cB"}, - {49, "reserved2", ""}, - {50, "endloopAddrsCoarseOffset", "samples"}, - {51, "coarseTune", "semitone"}, - {52, "fineTune", "cent"}, - {53, "sampleId", ""}, - {54, "sampleModes", "Bit Flags"}, - {55, "reserved3", ""}, - {56, "scaleTuning", "cent/key"}, - {57, "exclusiveClass", "arbitrary#"}, - {58, "unused5", ""}, - {59, "unused6", ""}, - {60, "unused7", ""}, - {61, "unused8", ""}, - {62, "unused9", ""}, - {63, "unused10", ""} -}; - -/*************************************************************** - * - * dsp - * - */ -static t_int * -fluidmax_perform(t_int *w) -{ - fluidmax_t *self = (fluidmax_t *)(w[1]); - t_float *left = (t_float *)(w[2]); - t_float *right = (t_float *)(w[3]); - int n_tick = (int)(w[4]); - - if(self->mute == 0) - { - fluid_synth_write_float(self->synth, n_tick, left, 0, 1, right, 0, 1); - } - else - { - int i; - - for(i = 0; i < n_tick; i++) - { - left[i] = right[i] = 0.0; - } - } - - return (w + 5); -} - -static void -fluidmax_dsp(fluidmax_t *self, t_signal **sp, short *count) -{ - int n_tick = sp[0]->s_n; - - dsp_add(fluidmax_perform, 4, self, sp[0]->s_vec, sp[1]->s_vec, n_tick); -} - -/*************************************************************** - * - * load utlilities - * - */ -static char * -fluidmax_translate_fullpath(char *maxpath, char *fullpath) -{ - int i; - - strcpy(fullpath, "/Volumes/"); - - for(i = 0; maxpath[i] != ':'; i++) - { - fullpath[i + 9] = maxpath[i]; - } - - /* skip ':' */ - i++; - - strcpy(fullpath + i + 8, maxpath + i); - - return fullpath; -} - -static ftmax_symbol_t -fluidmax_get_stripped_name(const char *fullpath) -{ - char stripped[1024]; - int i; - - for(i = strlen(fullpath) - 1; i >= 0; i--) - { - if(fullpath[i] == '/') - { - break; - } - } - - if(i != 0) - { - i++; - } - - strcpy(stripped, fullpath + i); - - for(i = 0; stripped[i] != '\0'; i++) - { - if((stripped[i] == '.') && - (stripped[i + 1] == 's' || stripped[i + 1] == 'S') && - (stripped[i + 2] == 'f' || stripped[i + 2] == 'F') && - (stripped[i + 3] == '2')) - { - stripped[i] = '\0'; - break; - } - } - - return ftmax_new_symbol(stripped); -} - -static ftmax_symbol_t -fluidmax_sfont_get_name(fluid_sfont_t *sfont) -{ - return fluidmax_get_stripped_name(fluid_sfont_get_name(sfont)); -} - -static fluid_sfont_t * -fluidmax_sfont_get_by_name(fluidmax_t *self, ftmax_symbol_t name) -{ - int n = fluid_synth_sfcount(self->synth); - int i; - - for(i = 0; i < n; i++) - { - fluid_sfont_t *sfont = fluid_synth_get_sfont(self->synth, i); - - if(fluidmax_sfont_get_name(sfont) == name) - { - return sfont; - } - } - - return NULL; -} - -static void -fluidmax_do_load(t_object *o, Symbol *s, short ac, Atom *at) -{ - fluidmax_t *self = (fluidmax_t *)o; - - if(ac > 0 && ftmax_is_symbol(at)) - { - const char *filename = ftmax_symbol_name(ftmax_get_symbol(at)); - ftmax_symbol_t name = fluidmax_get_stripped_name(filename); - fluid_sfont_t *sf = fluidmax_sfont_get_by_name(self, name); - - if(sf == NULL) - { - int id = fluid_synth_sfload(self->synth, filename, 0); - - if(id >= 0) - { - post("fluidsynth~: loaded soundfont '%s' (id %d)", ftmax_symbol_name(name), id); - - fluid_synth_program_reset(self->synth); - - outlet_bang(self->outlet); - } - else - { - error("fluidsynth~: cannot load soundfont from file '%s'", filename); - } - } - else - { - error("fluidsynth~: soundfont named '%s' is already loaded", ftmax_symbol_name(name)); - return; - } - } -} - -static void -fluidmax_load_with_dialog(t_object *o, t_symbol *s, short argc, t_atom *argv) -{ - char filename[256]; - char maxpath[1024]; - char fullpath[1024]; - long type; - short path; - - open_promptset("open SoundFont 2 file"); - - if(open_dialog(filename, &path, &type, 0, 0)) - { - return; - } - - if(path_topotentialname(path, filename, maxpath, 0) == 0) - { - ftmax_atom_t a; - - ftmax_set_symbol(&a, ftmax_new_symbol(fluidmax_translate_fullpath(maxpath, fullpath))); - fluidmax_do_load(o, NULL, 1, &a); - } -} - -/*************************************************************** - * - * user methods - * - */ -static void -fluidmax_load(t_object *o, Symbol *s, short ac, Atom *at) -{ - if(ac == 0) - { - defer(o, (method)fluidmax_load_with_dialog, NULL, 0, 0); - } - else - { - if(ftmax_is_symbol(at)) - { - ftmax_symbol_t name = ftmax_get_symbol(at); - char *string = (char *)ftmax_symbol_name(name); - - if(string[0] == '/') - { - defer(o, (method)fluidmax_do_load, NULL, ac, at); - } - else - { - char maxpath[1024]; - char fullpath[1024]; - short path; - long type; - ftmax_atom_t a; - - if(locatefile_extended(string, &path, &type, 0, 0) || path_topotentialname(path, string, maxpath, 0) != 0) - { - error("fluidsynth~: cannot find file '%s'", string); - return; - } - - ftmax_set_symbol(&a, ftmax_new_symbol(fluidmax_translate_fullpath(maxpath, fullpath))); - defer(o, (method)fluidmax_do_load, NULL, 1, &a); - } - } - } -} - -static void -fluidmax_unload(t_object *o, Symbol *s, short ac, Atom *at) -{ - fluidmax_t *self = (fluidmax_t *)o; - - if(ac > 0) - { - if(ftmax_is_number(at)) - { - int id = ftmax_get_number_int(at); - fluid_sfont_t *sf = fluid_synth_get_sfont_by_id(self->synth, id); - - if(sf != NULL) - { - ftmax_symbol_t name = fluidmax_sfont_get_name(sf); - - if(fluid_synth_sfunload(self->synth, id, 0) >= 0) - { - post("fluidsynth~: unloaded soundfont '%s' (id %d)", ftmax_symbol_name(name), id); - return; - } - } - - error("fluidsynth~: cannot unload soundfont %d", id); - } - else if(ftmax_is_symbol(at)) - { - ftmax_symbol_t sym = ftmax_get_symbol(at); - - if(sym == ftmax_new_symbol("all")) - { - fluid_sfont_t *sf = fluid_synth_get_sfont(self->synth, 0); - - fluid_synth_system_reset(self->synth); - - while(sf != NULL) - { - ftmax_symbol_t name = fluidmax_sfont_get_name(sf); - unsigned int id = fluid_sfont_get_id(sf); - - if(fluid_synth_sfunload(self->synth, id, 0) >= 0) - { - post("fluidsynth~: unloaded soundfont '%s' (id %d)", ftmax_symbol_name(name), id); - } - else - { - error("fluidsynth~: cannot unload soundfont '%s' (id %d)", ftmax_symbol_name(name), id); - } - - sf = fluid_synth_get_sfont(self->synth, 0); - } - } - else - { - fluid_sfont_t *sf = fluidmax_sfont_get_by_name(self, sym); - - if(sf != NULL) - { - unsigned int id = fluid_sfont_get_id(sf); - - if(fluid_synth_sfunload(self->synth, id, 0) >= 0) - { - post("fluidsynth~: unloaded soundfont '%s' (id %d)", ftmax_symbol_name(sym), id); - return; - } - } - - error("fluidsynth~: cannot unload soundfont '%s'", ftmax_symbol_name(sym)); - } - } - } -} - -static void -fluidmax_reload(t_object *o, Symbol *s, short ac, Atom *at) -{ - fluidmax_t *self = (fluidmax_t *)o; - - if(ac > 0) - { - if(ftmax_is_number(at)) - { - int id = ftmax_get_number_int(at); - fluid_sfont_t *sf = fluid_synth_get_sfont_by_id(self->synth, id); - - if(sf != NULL) - { - if(fluid_synth_sfreload(self->synth, id) >= 0) - { - post("fluidsynth~: reloaded soundfont '%s' (id %d)", id); - return; - } - - error("fluidsynth~: cannot reload soundfont %d", id); - } - } - else if(ftmax_is_symbol(at)) - { - ftmax_symbol_t sym = ftmax_get_symbol(at); - - if(sym == ftmax_new_symbol("all")) - { - int n = fluid_synth_sfcount(self->synth); - int i; - - fluid_synth_system_reset(self->synth); - - for(i = 0; i < n; i++) - { - fluid_sfont_t *sf = fluid_synth_get_sfont(self->synth, i); - ftmax_symbol_t name = fluidmax_sfont_get_name(sf); - unsigned int id = fluid_sfont_get_id(sf); - - - if(fluid_synth_sfreload(self->synth, id) >= 0) - { - post("fluidsynth~: reloaded soundfont '%s' (id %d)", ftmax_symbol_name(name), id); - } - else - { - error("fluidsynth~: cannot reload soundfont '%s' (id %d)", ftmax_symbol_name(name), id); - } - } - } - else - { - fluid_sfont_t *sf = fluidmax_sfont_get_by_name(self, sym); - - if(sf != NULL) - { - unsigned int id = fluid_sfont_get_id(sf); - - if(fluid_synth_sfreload(self->synth, id) >= 0) - { - post("fluidsynth~: reloaded soundfont '%s' (id %d)", ftmax_symbol_name(sym), id); - return; - } - } - - error("fluidsynth~: cannot reload soundfont '%s'", ftmax_symbol_name(sym)); - } - } - } -} - -static void -fluidmax_note(t_object *o, Symbol *s, short ac, Atom *at) -{ - fluidmax_t *self = (fluidmax_t *)o; - - if(ac > 0 && ftmax_is_number(at)) - { - int velocity = 64; - int channel = 1; - - switch(ac) - { - default: - case 3: - if(ftmax_is_number(at + 2)) - { - channel = ftmax_get_number_int(at + 2); - - if(channel < 1) - { - channel = 1; - } - else if(channel > fluid_synth_count_midi_channels(self->synth)) - { - channel = fluid_synth_count_midi_channels(self->synth); - } - } - - case 2: - if(ftmax_is_number(at + 1)) - { - velocity = ftmax_get_number_int(at + 1); - } - - case 1: - fluid_synth_noteon(self->synth, channel - 1, ftmax_get_number_int(at), velocity); - - case 0: - break; - } - } -} - -static void -fluidmax_list(t_object *o, Symbol *s, short ac, Atom *at) -{ - fluidmax_note(o, NULL, ac, at); -} - - -static void -fluidmax_control_change(t_object *o, Symbol *s, short ac, Atom *at) -{ - fluidmax_t *self = (fluidmax_t *)o; - - if(ac > 0 && ftmax_is_number(at)) - { - int value = 64; - int channel = 1; - - switch(ac) - { - default: - case 3: - if(ftmax_is_number(at + 2)) - { - channel = ftmax_get_number_int(at + 2); - - if(channel < 1) - { - channel = 1; - } - else if(channel > fluid_synth_count_midi_channels(self->synth)) - { - channel = fluid_synth_count_midi_channels(self->synth); - } - } - - case 2: - if(ftmax_is_number(at + 1)) - { - value = ftmax_get_number_int(at + 1); - } - - case 1: - fluid_synth_cc(self->synth, channel - 1, ftmax_get_number_int(at), value); - - case 0: - break; - } - } -} - -static void -fluidmax_mod(t_object *o, Symbol *s, short ac, Atom *at) -{ - fluidmax_t *self = (fluidmax_t *)o; - - if(ac > 1 && ftmax_is_number(at) && ftmax_is_number(at + 1)) - { - int param = ftmax_get_number_int(at); - float value = ftmax_get_number_float(at + 1); - int channel = 1; - - if(ac > 2 && ftmax_is_number(at + 2)) - { - channel = ftmax_get_number_int(at + 2); - - if(channel < 1) - { - channel = 1; - } - else if(channel > fluid_synth_count_midi_channels(self->synth)) - { - channel = fluid_synth_count_midi_channels(self->synth); - } - } - - fluid_synth_set_gen(self->synth, channel - 1, param, value); - } -} - -static void -fluidmax_pitch_bend(t_object *o, Symbol *s, short ac, Atom *at) -{ - fluidmax_t *self = (fluidmax_t *)o; - - if(ac > 0 && ftmax_is_number(at)) - { - int channel = 1; - double bend = 0.0; - - if(ac > 1 && ftmax_is_number(at + 1)) - { - channel = ftmax_get_number_int(at + 1); - - if(channel < 1) - { - channel = 1; - } - else if(channel > fluid_synth_count_midi_channels(self->synth)) - { - channel = fluid_synth_count_midi_channels(self->synth); - } - } - - bend = ftmax_get_number_float(at); - - if(bend < 0.0) - { - bend = 0.0; - } - else if(bend > 127.0) - { - bend = 127.0; - } - - fluid_synth_pitch_bend(self->synth, channel - 1, (int)(bend * 128.0)); - } -} - -static void -fluidmax_pitch_bend_wheel(t_object *o, Symbol *s, short ac, Atom *at) -{ - fluidmax_t *self = (fluidmax_t *)o; - - if(ac > 0 && ftmax_is_number(at)) - { - int channel = 1; - - if(ac > 1 && ftmax_is_number(at + 1)) - { - channel = ftmax_get_number_int(at + 1); - } - - fluid_synth_pitch_wheel_sens(self->synth, channel - 1, ftmax_get_number_int(at)); - } -} - -static void -fluidmax_program_change(t_object *o, Symbol *s, short ac, Atom *at) -{ - fluidmax_t *self = (fluidmax_t *)o; - - if(ac > 0 && ftmax_is_number(at)) - { - int channel = 1; - - if(ac > 1 && ftmax_is_number(at + 1)) - { - channel = ftmax_get_number_int(at + 1); - - if(channel < 1) - { - channel = 1; - } - else if(channel > fluid_synth_count_midi_channels(self->synth)) - { - channel = fluid_synth_count_midi_channels(self->synth); - } - } - - fluid_synth_program_change(self->synth, channel - 1, ftmax_get_number_int(at)); - } -} - -static void -fluidmax_bank_select(t_object *o, Symbol *s, short ac, Atom *at) -{ - fluidmax_t *self = (fluidmax_t *)o; - - if(ac > 0 && ftmax_is_number(at)) - { - int channel = 1; - unsigned int sf_id; - unsigned int bank_num; - unsigned int prog_num; - - if(ac > 1 && ftmax_is_number(at + 1)) - { - channel = ftmax_get_number_int(at + 1); - - if(channel < 1) - { - channel = 1; - } - else if(channel > fluid_synth_count_midi_channels(self->synth)) - { - channel = fluid_synth_count_midi_channels(self->synth); - } - } - - fluid_synth_bank_select(self->synth, channel - 1, ftmax_get_number_int(at)); - fluid_synth_get_program(self->synth, channel - 1, &sf_id, &bank_num, &prog_num); - fluid_synth_program_change(self->synth, channel - 1, prog_num); - } -} - -static void -fluidmax_select(t_object *o, Symbol *s, short ac, Atom *at) -{ - fluidmax_t *self = (fluidmax_t *)o; - unsigned int bank = 0; - unsigned int preset = 0; - int channel = 1; - - switch(ac) - { - default: - case 4: - if(ftmax_is_number(at + 3)) - { - channel = ftmax_get_number_int(at + 3); - } - - if(channel < 1) - { - channel = 1; - } - else if(channel > fluid_synth_count_midi_channels(self->synth)) - { - channel = fluid_synth_count_midi_channels(self->synth); - } - - case 3: - if(ftmax_is_number(at + 2)) - { - preset = ftmax_get_number_int(at + 2); - } - - case 2: - if(ftmax_is_number(at + 1)) - { - bank = ftmax_get_number_int(at + 1); - } - - case 1: - if(ftmax_is_number(at)) - { - fluid_synth_program_select(self->synth, channel - 1, ftmax_get_number_int(at), bank, preset); - } - else if(ftmax_is_symbol(at)) - { - ftmax_symbol_t name = ftmax_get_symbol(at); - fluid_sfont_t *sf = fluidmax_sfont_get_by_name(self, name); - - if(sf != NULL) - { - fluid_synth_program_select(self->synth, channel - 1, fluid_sfont_get_id(sf), bank, preset); - } - else - { - error("fluidsynth~ select: cannot find soundfont named '%s'", ftmax_symbol_name(name)); - } - } - - case 0: - break; - } -} - -static void -fluidmax_reverb(t_object *o, Symbol *s, short ac, Atom *at) -{ - fluidmax_t *self = (fluidmax_t *)o; - - if(ac == 0) - { - fluid_synth_set_reverb_on(self->synth, 1); - fluid_synth_reset_reverb(self->synth); - self->reverb = 1; - } - else if(ftmax_is_number(at)) - { - double room = fluid_synth_get_reverb_roomsize(self->synth); - double damping = fluid_synth_get_reverb_damp(self->synth); - double width = fluid_synth_get_reverb_width(self->synth); - - fluid_synth_set_reverb_on(self->synth, 1); - self->reverb = 1; - - switch(ac) - { - default: - case 4: - if(ftmax_is_number(at + 3)) - { - width = ftmax_get_number_float(at + 3); - } - - case 3: - if(ftmax_is_number(at + 2)) - { - damping = ftmax_get_number_float(at + 2); - } - - case 2: - if(ftmax_is_number(at + 1)) - { - room = ftmax_get_number_float(at + 1); - } - - case 1: - fluid_synth_set_reverb(self->synth, room, damping, width, ftmax_get_number_float(at)); - - case 0: - break; - } - } - else if(ftmax_is_symbol(at)) - { - ftmax_symbol_t sym = ftmax_get_symbol(at); - - if(sym == sym_on) - { - fluid_synth_set_reverb_on(self->synth, 1); - self->reverb = 1; - } - else if(sym == sym_off) - { - fluid_synth_set_reverb_on(self->synth, 0); - self->reverb = 0; - } - } -} - -static void -fluidmax_chorus(t_object *o, Symbol *s, short ac, Atom *at) -{ - fluidmax_t *self = (fluidmax_t *)o; - - if(ac == 0) - { - fluid_synth_set_chorus_on(self->synth, 1); - fluid_synth_reset_chorus(self->synth); - self->chorus = 1; - } - else if(ftmax_is_number(at)) - { - double speed = fluid_synth_get_chorus_speed(self->synth); - double depth = fluid_synth_get_chorus_depth(self->synth); - int type = fluid_synth_get_chorus_type(self->synth); - int nr = fluid_synth_get_chorus_nr(self->synth); - - fluid_synth_set_chorus_on(self->synth, 1); - self->chorus = 1; - - switch(ac) - { - default: - case 5: - if(ftmax_is_number(at + 4)) - { - nr = ftmax_get_number_int(at + 4); - } - - case 4: - if(ftmax_is_number(at + 3)) - { - type = ftmax_get_number_int(at + 3); - } - - case 3: - if(ftmax_is_number(at + 2)) - { - depth = ftmax_get_number_float(at + 2); - } - - case 2: - if(ftmax_is_number(at + 1)) - { - speed = ftmax_get_number_float(at + 1); - } - - case 1: - fluid_synth_set_chorus(self->synth, nr, ftmax_get_number_float(at), speed, depth, type); - - case 0: - break; - } - } - else if(ftmax_is_symbol(at)) - { - ftmax_symbol_t sym = ftmax_get_symbol(at); - - if(sym == sym_on) - { - fluid_synth_set_chorus_on(self->synth, 1); - self->chorus = 1; - } - else if(sym == sym_off) - { - fluid_synth_set_chorus_on(self->synth, 0); - self->chorus = 0; - } - } -} - -static void -fluidmax_set_gain(t_object *o, Symbol *s, short ac, Atom *at) -{ - fluidmax_t *self = (fluidmax_t *)o; - - if(ac > 0 && ftmax_is_number(at)) - { - float gain = ftmax_get_number_float(at); - - fluid_synth_set_gain(self->synth, gain); - } -} - -static void -fluidmax_set_resampling_method(t_object *o, Symbol *s, short ac, Atom *at) -{ - fluidmax_t *self = (fluidmax_t *)o; - - if(ac > 0) - { - if(ftmax_is_number(at)) - { - int ip = ftmax_get_int(at); - - if(ip == 0) - { - fluid_synth_set_interp_method(self->synth, -1, FLUID_INTERP_NONE); - } - else if(ip < 3) - { - fluid_synth_set_interp_method(self->synth, -1, FLUID_INTERP_LINEAR); - } - else if(ip < 6) - { - fluid_synth_set_interp_method(self->synth, -1, FLUID_INTERP_4THORDER); - } - else - { - fluid_synth_set_interp_method(self->synth, -1, FLUID_INTERP_7THORDER); - } - } - else if(ftmax_is_symbol(at)) - { - ftmax_symbol_t sym = ftmax_get_symbol(at); - - if(sym == sym_nearest) - { - fluid_synth_set_interp_method(self->synth, -1, FLUID_INTERP_NONE); - } - else if(sym == sym_linear) - { - fluid_synth_set_interp_method(self->synth, -1, FLUID_INTERP_LINEAR); - } - else if(sym == sym_cubic) - { - fluid_synth_set_interp_method(self->synth, -1, FLUID_INTERP_4THORDER); - } - else if(sym == sym_sinc) - { - fluid_synth_set_interp_method(self->synth, -1, FLUID_INTERP_7THORDER); - } - else - { - error("fluidsynth~: undefined resampling method: %s", ftmax_symbol_name(sym)); - } - } - } -} - -static void -fluidmax_panic(t_object *o, Symbol *s, short ac, Atom *at) -{ - fluidmax_t *self = (fluidmax_t *)o; - - fluid_synth_system_reset(self->synth); -} - -static void -fluidmax_reset(t_object *o, Symbol *s, short ac, Atom *at) -{ - fluidmax_t *self = (fluidmax_t *)o; - int n = fluid_synth_count_midi_channels(self->synth); - int i; - - for(i = 0; i < n; i++) - { - fluid_channel_reset(self->synth->channel[i]); - } -} - -static void -fluidmax_mute(t_object *o, Symbol *s, short ac, Atom *at) -{ - fluidmax_t *self = (fluidmax_t *)o; - int mute = 1; - - if(ac > 0 && ftmax_is_number(at)) - { - mute = (ftmax_get_number_int(at) != 0); - } - - fluid_synth_system_reset(self->synth); - - self->mute = mute; -} - -static void -fluidmax_unmute(t_object *o) -{ - ftmax_atom_t a; - - ftmax_set_int(&a, 0); - fluidmax_mute(o, NULL, 1, &a); -} - -/* -int fluid_synth_count_audio_channels (fluid_synth_t *synth) -int fluid_synth_count_audio_groups (fluid_synth_t *synth) -int fluid_synth_count_effects_channels (fluid_synth_t *synth) -*/ - -static void -fluidmax_tuning_octave(t_object *o, Symbol *s, short ac, Atom *at) -{ - fluidmax_t *self = (fluidmax_t *)o; - ftmax_symbol_t name; - int tuning_bank = 0; - int tuning_prog = 0; - double pitch[12]; - int i, n; - - if(ac > 0 && ftmax_is_symbol(at)) - { - name = ftmax_get_symbol(at); - at++; - ac--; - } - - n = ac - 2; - - if(n > 12) - { - n = 12; - } - - if(ac > 0 && ftmax_is_number(at)) - { - tuning_bank = ftmax_get_number_int(at) % 128; - } - - if(ac > 1 && ftmax_is_number(at + 1)) - { - tuning_prog = ftmax_get_number_int(at) % 128; - } - - for(i = 0; i < n; i++) - { - if(ftmax_is_number(at + i + 2)) - { - pitch[i] = ftmax_get_number_float(at + i + 2); - } - else - { - pitch[i] = 0.0; - } - } - - for(; i < 12; n++) - { - pitch[i] = 0.0; - } - - fluid_synth_create_octave_tuning(self->synth, tuning_bank, tuning_prog, ftmax_symbol_name(name), pitch); -} - -static void -fluidmax_tuning_select(t_object *o, Symbol *s, short ac, Atom *at) -{ - fluidmax_t *self = (fluidmax_t *)o; - int tuning_bank = 0; - int tuning_prog = 0; - int channel = 1; - - if(ac > 0 && ftmax_is_number(at)) - { - tuning_bank = ftmax_get_number_int(at) % 128; - } - - if(ac > 1 && ftmax_is_number(at + 1)) - { - tuning_prog = ftmax_get_number_int(at + 1) % 128; - } - - if(ac > 2 && ftmax_is_number(at + 2)) - { - channel = ftmax_get_number_int(at + 2); - } - - if(channel < 1) - { - channel = 1; - } - else if(channel > fluid_synth_count_midi_channels(self->synth)) - { - channel = fluid_synth_count_midi_channels(self->synth); - } - - fluid_synth_select_tuning(self->synth, channel - 1, tuning_bank, tuning_prog); -} - -static void -fluidmax_tuning_reset(t_object *o, Symbol *s, short ac, Atom *at) -{ - fluidmax_t *self = (fluidmax_t *)o; - int channel = 0; - - if(ac > 0 && ftmax_is_number(at)) - { - channel = ftmax_get_number_int(at); - } - - if(channel < 1) - { - channel = 1; - } - else if(channel > fluid_synth_count_midi_channels(self->synth)) - { - channel = fluid_synth_count_midi_channels(self->synth); - } - - fluid_synth_reset_tuning(self->synth, channel - 1); -} - -/* more tuning ?? -fluid_synth_create_key_tuning (fluid_synth_t *synth, int tuning_bank, int tuning_prog, char *name, double *pitch) -fluid_synth_tune_notes (fluid_synth_t *synth, int tuning_bank, int tuning_prog, int len, int *keys, double *pitch, int apply) -fluid_synth_tuning_iteration_start (fluid_synth_t *synth) -fluid_synth_tuning_iteration_next (fluid_synth_t *synth, int *bank, int *prog) -fluid_synth_tuning_dump (fluid_synth_t *synth, int bank, int prog, char *name, int len, double *pitch) -*/ - -static void -fluidmax_version(t_object *o) -{ - post("fluidsynth~, version %s (based on FluidSynth %s)", FLUIDMAX_VERSION, FLUIDSYNTH_VERSION); - post(" FluidSynth is written by Peter Hanappe et al. (see fluidsynth.org)"); - post(" Max/MSP integration by Norbert Schnell IMTR IRCAM - Centre Pompidou"); -} - -extern const fluid_gen_info_t fluid_gen_info[]; - -static void -fluidmax_print(t_object *o, Symbol *s, short ac, Atom *at) -{ - fluidmax_t *self = (fluidmax_t *)o; - - if(ac > 0) - { - if(ftmax_is_symbol(at)) - { - ftmax_symbol_t sym = ftmax_get_symbol(at); - - if(sym == sym_soundfonts) - { - int n = fluid_synth_sfcount(self->synth); - int i; - - if(n > 0) - { - post("fluidsynth~ soundfonts:"); - } - else - { - post("fluidsynth~: no soundfonts loaded"); - } - - for(i = 0; i < n; i++) - { - fluid_sfont_t *sf = fluid_synth_get_sfont(self->synth, i); - ftmax_symbol_t name = fluidmax_sfont_get_name(sf); - unsigned int id = fluid_sfont_get_id(sf); - - post(" %d: '%s' (id %d)", i, ftmax_symbol_name(name), id); - } - } - else if(sym == sym_presets) - { - int n = fluid_synth_sfcount(self->synth); - - if(n > 0) - { - if(ac > 1) - { - fluid_sfont_t *sf = NULL; - ftmax_symbol_t name; - - if(ftmax_is_symbol(at + 1)) - { - name = ftmax_get_symbol(at + 1); - sf = fluidmax_sfont_get_by_name(self, name); - } - else if(ftmax_is_int(at + 1)) - { - int id = ftmax_get_int(at + 1); - - sf = fluid_synth_get_sfont_by_id(self->synth, id); - name = fluidmax_sfont_get_name(sf); - } - - if(sf != NULL) - { - fluid_preset_t *preset; - - fluid_sfont_iteration_start(sf); - - post("fluidsynth~ presets of soundfont '%s':", ftmax_symbol_name(name)); - - while((preset = fluid_sfont_iteration_next(sf)) != NULL) - { - char *preset_str = fluid_preset_get_name(preset); - ftmax_symbol_t preset_name = ftmax_new_symbol(preset_str); - int bank_num = fluid_preset_get_banknum(preset); - int prog_num = fluid_preset_get_num(preset); - - post(" '%s': bank %d, program %d", ftmax_symbol_name(preset_name), bank_num, prog_num); - } - } - } - else - { - int i; - - post("fluidsynth~ presets:"); - - for(i = 0; i < 128; i++) - { - int j; - - for(j = 0; j < 128; j++) - { - fluid_preset_t *preset = NULL; - fluid_sfont_t *sf = NULL; - int k; - - for(k = 0; k < n; k++) - { - sf = fluid_synth_get_sfont(self->synth, k); - preset = fluid_sfont_get_preset(sf, i, j); - - if(preset != NULL) - { - break; - } - } - - if(preset != NULL) - { - ftmax_symbol_t sf_name = fluidmax_sfont_get_name(sf); - char *preset_str = fluid_preset_get_name(preset); - ftmax_symbol_t preset_name = ftmax_new_symbol(preset_str); - - post(" '%s': soundfont '%s', bank %d, program %d", - ftmax_symbol_name(preset_name), ftmax_symbol_name(sf_name), i, j); - } - } - } - } - } - else - { - error("fluidsynth~: no soundfonts loaded"); - } - } - else if(sym == sym_channels) - { - int n = fluid_synth_count_midi_channels(self->synth); - int i; - - post("fluidsynth~ channels:"); - - for(i = 0; i < n; i++) - { - fluid_preset_t *preset = fluid_synth_get_channel_preset(self->synth, i); - - if(preset != NULL) - { - char *preset_str = fluid_preset_get_name(preset); - ftmax_symbol_t preset_name = ftmax_new_symbol(preset_str); - unsigned int sf_id; - unsigned int bank_num; - unsigned int prog_num; - fluid_sfont_t *sf; - - fluid_synth_get_program(self->synth, i, &sf_id, &bank_num, &prog_num); - sf = fluid_synth_get_sfont_by_id(self->synth, sf_id); - - post(" %d: soundfont '%s', bank %d, program %d: '%s'", - i + 1, ftmax_symbol_name(fluidmax_sfont_get_name(sf)), bank_num, prog_num, ftmax_symbol_name(preset_name)); - } - else - { - post(" channel %d: no preset", i + 1); - } - } - } - else if(sym == ftmax_new_symbol("generators")) - { - int channel = 1; - int n = GEN_LAST; - int i; - - if(ac > 1 && ftmax_is_number(at + 1)) - { - channel = ftmax_get_number_int(at + 1); - } - - if(channel < 1) - { - channel = 1; - } - else if(channel > fluid_synth_count_midi_channels(self->synth)) - { - channel = fluid_synth_count_midi_channels(self->synth); - } - - post("fluidsynth~ generators of channel %d:", channel); - - for(i = 0; i < n; i++) - { - const char *name = fluidmax_gen_info[i].name; - const char *unit = fluidmax_gen_info[i].unit; - double incr = fluid_synth_get_gen(self->synth, channel - 1, i); - double min = fluid_gen_info[i].min; - double max = fluid_gen_info[i].max; - - post(" %d '%s': %s %g [%g ... %g] (%s)", i, name, (incr >= 0) ? "" : "-", fabs(incr), min, max, unit); - } - } - else if(sym == sym_gain) - { - double gain = fluid_synth_get_gain(self->synth); - - post("gain: %g", gain); - } - else if(sym == sym_reverb) - { - double level = fluid_synth_get_reverb_level(self->synth); - double room = fluid_synth_get_reverb_roomsize(self->synth); - double damping = fluid_synth_get_reverb_damp(self->synth); - double width = fluid_synth_get_reverb_width(self->synth); - - if(self->reverb != 0) - { - post("fluidsynth~ current reverb parameters:"); - post(" level: %f", level); - post(" room size: %f", room); - post(" damping: %f", damping); - post(" width: %f", width); - } - else - { - post("fluidsynth~: reverb off"); - } - } - else if(sym == sym_chorus) - { - if(self->chorus != 0) - { - double level = fluid_synth_get_chorus_level(self->synth); - double speed = fluid_synth_get_chorus_speed(self->synth); - double depth = fluid_synth_get_chorus_depth(self->synth); - int type = fluid_synth_get_chorus_type(self->synth); - int nr = fluid_synth_get_chorus_nr(self->synth); - - post("fluidsynth~ current chorus parameters:"); - post(" level: %f", level); - post(" speed: %f Hz", speed); - post(" depth: %f msec", depth); - post(" type: %d (%s)", type, type ? "triangle" : "sine"); - post(" %d units", nr); - } - else - { - post("fluidsynth~: chorus off"); - } - } - } - } -} - -static void -fluidmax_info(t_object *o, Symbol *s, short ac, Atom *at) -{ - fluidmax_t *self = (fluidmax_t *)o; - - if(ac > 0) - { - if(ftmax_is_symbol(at)) - { - ftmax_symbol_t sym = ftmax_get_symbol(at); - - if(sym == sym_soundfonts) - { - int n = fluid_synth_sfcount(self->synth); - int i; - - for(i = 0; i < n; i++) - { - fluid_sfont_t *sf = fluid_synth_get_sfont(self->synth, i); - unsigned int id = fluid_sfont_get_id(sf); - ftmax_atom_t a[2]; - - ftmax_set_int(a, i); - ftmax_set_symbol(a + 1, fluidmax_sfont_get_name(sf)); - ftmax_set_int(a + 2, id); - outlet_anything(self->outlet, sym_soundfont, 3, a); - } - } - else if(sym == sym_presets) - { - int n = fluid_synth_sfcount(self->synth); - - if(n > 0) - { - if(ac > 1) - { - fluid_sfont_t *sf = NULL; - ftmax_symbol_t sf_name; - - if(ftmax_is_symbol(at + 1)) - { - sf_name = ftmax_get_symbol(at + 1); - sf = fluidmax_sfont_get_by_name(self, sf_name); - } - else if(ftmax_is_int(at + 1)) - { - int id = ftmax_get_int(at + 1); - - sf = fluid_synth_get_sfont_by_id(self->synth, id); - sf_name = fluidmax_sfont_get_name(sf); - } - - if(sf != NULL) - { - fluid_preset_t *preset; - - fluid_sfont_iteration_start(sf); - - while((preset = fluid_sfont_iteration_next(sf)) != NULL) - { - char *preset_str = fluid_preset_get_name(preset); - ftmax_symbol_t preset_name = ftmax_new_symbol(preset_str); - int bank_num = fluid_preset_get_banknum(preset); - int prog_num = fluid_preset_get_num(preset); - ftmax_atom_t a[4]; - - ftmax_set_symbol(a, preset_name); - ftmax_set_symbol(a + 1, sf_name); - ftmax_set_int(a + 2, bank_num); - ftmax_set_int(a + 3, prog_num); - outlet_anything(self->outlet, sym_preset, 4, a); - } - } - } - else - { - int i; - - for(i = 0; i < 128; i++) - { - int j; - - for(j = 0; j < 128; j++) - { - fluid_preset_t *preset = NULL; - fluid_sfont_t *sf = NULL; - int k; - - for(k = 0; k < n; k++) - { - sf = fluid_synth_get_sfont(self->synth, k); - preset = fluid_sfont_get_preset(sf, i, j); - - if(preset != NULL) - { - break; - } - } - - if(preset != NULL) - { - ftmax_symbol_t sf_name = fluidmax_sfont_get_name(sf); - char *preset_str = fluid_preset_get_name(preset); - ftmax_symbol_t preset_name = ftmax_new_symbol(preset_str); - ftmax_atom_t a[4]; - - ftmax_set_symbol(a, preset_name); - ftmax_set_symbol(a + 1, sf_name); - ftmax_set_int(a + 2, i); - ftmax_set_int(a + 3, j); - outlet_anything(self->outlet, sym_preset, 4, a); - } - } - } - } - } - else - { - error("fluidsynth~ info: no soundfonts loaded"); - } - } - else if(sym == sym_channels) - { - int n = fluid_synth_count_midi_channels(self->synth); - int i; - - for(i = 0; i < n; i++) - { - fluid_preset_t *preset = fluid_synth_get_channel_preset(self->synth, i); - - if(preset != NULL) - { - char *preset_str = fluid_preset_get_name(preset); - ftmax_symbol_t preset_name = ftmax_new_symbol(preset_str); - unsigned int sf_id, bank_num, prog_num; - fluid_sfont_t *sf; - ftmax_atom_t a[5]; - - fluid_synth_get_program(self->synth, i, &sf_id, &bank_num, &prog_num); - sf = fluid_synth_get_sfont_by_id(self->synth, sf_id); - - ftmax_set_int(a, i + 1); - ftmax_set_symbol(a + 1, fluidmax_sfont_get_name(sf)); - ftmax_set_int(a + 2, bank_num); - ftmax_set_int(a + 3, prog_num); - ftmax_set_symbol(a + 4, preset_name); - outlet_anything(self->outlet, sym_channel, 5, a); - } - else - { - ftmax_atom_t a[2]; - - ftmax_set_int(a, i + 1); - ftmax_set_symbol(a + 1, sym_undefined); - outlet_anything(self->outlet, sym_channel, 2, a); - } - } - } - else if(sym == sym_gain) - { - ftmax_atom_t a; - double gain = fluid_synth_get_gain(self->synth); - - ftmax_set_float(&a, gain); - outlet_anything(self->outlet, sym_channel, 1, &a); - } - else if(sym == sym_reverb) - { - if(self->reverb != 0) - { - double level = fluid_synth_get_reverb_level(self->synth); - double room = fluid_synth_get_reverb_roomsize(self->synth); - double damping = fluid_synth_get_reverb_damp(self->synth); - double width = fluid_synth_get_reverb_width(self->synth); - ftmax_atom_t a[4]; - - ftmax_set_float(a, level); - ftmax_set_float(a + 1, room); - ftmax_set_float(a + 2, damping); - ftmax_set_float(a + 3, width); - outlet_anything(self->outlet, sym_reverb, 4, a); - } - else - { - ftmax_atom_t a; - - ftmax_set_symbol(&a, sym_off); - outlet_anything(self->outlet, sym_reverb, 1, &a); - } - } - else if(sym == sym_chorus) - { - if(self->chorus != 0) - { - double level = fluid_synth_get_chorus_level(self->synth); - double speed = fluid_synth_get_chorus_speed(self->synth); - double depth = fluid_synth_get_chorus_depth(self->synth); - int type = fluid_synth_get_chorus_type(self->synth); - int nr = fluid_synth_get_chorus_nr(self->synth); - ftmax_atom_t a[5]; - - ftmax_set_float(a, level); - ftmax_set_float(a + 1, speed); - ftmax_set_float(a + 2, depth); - ftmax_set_int(a + 3, type); - ftmax_set_int(a + 4, nr); - outlet_anything(self->outlet, sym_chorus, 5, a); - } - else - { - ftmax_atom_t a; - - ftmax_set_symbol(&a, sym_off); - outlet_anything(self->outlet, sym_chorus, 1, &a); - } - } - else if(sym == sym_polyphony) - { - int polyphony = fluid_synth_get_polyphony(self->synth); - ftmax_atom_t a; - - ftmax_set_int(&a, polyphony); - outlet_anything(self->outlet, sym_polyphony, 1, &a); - } - } - } -} - -/*************************************************************** - * - * class - * - */ -static void * -fluidmax_new(Symbol *s, short ac, Atom *at) -{ - fluidmax_t *self = (fluidmax_t *)newobject(fluidmax_class); - int polyphony = 256; - int midi_channels = 16; - - self->outlet = outlet_new(self, "anything"); - - dsp_setup((t_pxobject *)self, 0); - outlet_new(self, "signal"); - outlet_new(self, "signal"); - - self->synth = NULL; - self->settings = new_fluid_settings(); - self->reverb = 0; - self->chorus = 0; - self->mute = 0; - - if(ac > 0 && ftmax_is_number(at)) - { - polyphony = ftmax_get_number_int(at); - ac--; - at++; - } - - if(ac > 0 && ftmax_is_number(at)) - { - midi_channels = ftmax_get_number_int(at); - ac--; - at++; - } - - if(ac > 0 && ftmax_is_symbol(at)) - { - fluidmax_load((t_object *)self, NULL, 1, at); - } - - if(self->settings != NULL) - { - fluid_settings_setint(self->settings, "synth.midi-channels", midi_channels); - fluid_settings_setint(self->settings, "synth.polyphony", polyphony); - fluid_settings_setnum(self->settings, "synth.gain", 0.600000); - fluid_settings_setnum(self->settings, "synth.sample-rate", sys_getsr()); - - self->synth = new_fluid_synth(self->settings); - - if(self->synth != NULL) - { - fluid_synth_set_reverb_on(self->synth, 0); - fluid_synth_set_chorus_on(self->synth, 0); - - if(ac > 0 && ftmax_is_symbol(at)) - { - fluidmax_load((t_object *)self, NULL, ac, at); - } - - return self; - } - - delete_fluid_settings(self->settings); - } - - error("fluidsynth~: cannot create FluidSynth core"); - - return NULL; -} - -static void -fluidmax_free(t_pxobject *o) -{ - fluidmax_t *self = (fluidmax_t *)o; - - if(self->settings != NULL) - { - delete_fluid_settings(self->settings); - } - - if(self->synth != NULL) - { - delete_fluid_synth(self->synth); - } - - dsp_free(o); -} - -int -main(void) -{ - setup(&fluidmax_class, (method)fluidmax_new, (method)fluidmax_free, (short)sizeof(fluidmax_t), 0, A_GIMME, 0); - dsp_initclass(); - - addmess((method)fluidmax_dsp, "dsp", A_CANT, 0); - - addmess((method)fluidmax_version, "version", 0); - addmess((method)fluidmax_print, "print", A_GIMME, 0); - - addmess((method)fluidmax_load, "load", A_GIMME, 0); - addmess((method)fluidmax_unload, "unload", A_GIMME, 0); - addmess((method)fluidmax_reload, "reload", A_GIMME, 0); - addmess((method)fluidmax_info, "info", A_GIMME, 0); - - addmess((method)fluidmax_panic, "panic", A_GIMME, 0); - addmess((method)fluidmax_reset, "reset", A_GIMME, 0); - addmess((method)fluidmax_mute, "mute", A_GIMME, 0); - addmess((method)fluidmax_unmute, "unmute", 0); - - /*addmess((method)fluidmax_tuning_keys, "tuning-keys", A_GIMME, 0);*/ - addmess((method)fluidmax_tuning_octave, "tuning-octave", A_GIMME, 0); - addmess((method)fluidmax_tuning_select, "tuning-select", A_GIMME, 0); - addmess((method)fluidmax_tuning_reset, "tuning-reset", A_GIMME, 0); - - addmess((method)fluidmax_reverb, "reverb", A_GIMME, 0); - addmess((method)fluidmax_chorus, "chorus", A_GIMME, 0); - addmess((method)fluidmax_set_gain, "gain", A_GIMME, 0); - addmess((method)fluidmax_set_resampling_method, "resample", A_GIMME, 0); - - addmess((method)fluidmax_note, "note", A_GIMME, 0); - addmess((method)fluidmax_list, "list", A_GIMME, 0); - - addmess((method)fluidmax_control_change, "control", A_GIMME, 0); - addmess((method)fluidmax_mod, "mod", A_GIMME, 0); - - addmess((method)fluidmax_pitch_bend, "bend", A_GIMME, 0); - addmess((method)fluidmax_pitch_bend_wheel, "wheel", A_GIMME, 0); - - addmess((method)fluidmax_program_change, "program", A_GIMME, 0); - addmess((method)fluidmax_bank_select, "bank", A_GIMME, 0); - addmess((method)fluidmax_select, "select", A_GIMME, 0); - - sym_on = ftmax_new_symbol("on"); - sym_off = ftmax_new_symbol("off"); - sym_undefined = ftmax_new_symbol("undefined"); - sym_gain = ftmax_new_symbol("gain"); - sym_channels = ftmax_new_symbol("channels"); - sym_channel = ftmax_new_symbol("channel"); - sym_soundfonts = ftmax_new_symbol("soundfonts"); - sym_soundfont = ftmax_new_symbol("soundfont"); - sym_presets = ftmax_new_symbol("presets"); - sym_preset = ftmax_new_symbol("preset"); - sym_reverb = ftmax_new_symbol("reverb"); - sym_chorus = ftmax_new_symbol("chorus"); - sym_polyphony = ftmax_new_symbol("polyphony"); - sym_nearest = ftmax_new_symbol("nearest"); - sym_linear = ftmax_new_symbol("linear"); - sym_cubic = ftmax_new_symbol("cubic"); - sym_sinc = ftmax_new_symbol("sinc"); - - - fluidmax_version(NULL); - - return 0; -} diff --git a/bindings/fluidmax/fluidmax.mcp b/bindings/fluidmax/fluidmax.mcp deleted file mode 100644 index 712146c0cc11f358aa6020f8f8d6230bbb6a3b85..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 144300 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 0) && (level < LAST_LOG_LEVEL)) - { - post("fluidsynth~ core (level %d): %s", level, buf); - } - - return -1; -} - -void -fluid_shell_settings(fluid_settings_t *settings) -{ -} - -void -fluid_audio_driver_settings(fluid_settings_t *settings) -{ - fluid_settings_register_str(settings, "audio.driver", "", 0, NULL, NULL); -} - -void -fluid_midi_driver_settings(fluid_settings_t *settings) -{ - fluid_settings_register_str(settings, "midi.driver", "", 0, NULL, NULL); -} - -int fluid_midi_event_get_type(fluid_midi_event_t *evt) -{ - return 0; -} - -int fluid_midi_event_set_type(fluid_midi_event_t *evt, int type) -{ - return FLUID_OK; -} - -int fluid_midi_event_get_channel(fluid_midi_event_t *evt) -{ - return 0; -} - -int fluid_midi_event_set_channel(fluid_midi_event_t *evt, int chan) -{ - return FLUID_OK; -} - -int fluid_midi_event_get_key(fluid_midi_event_t *evt) -{ - return 0; -} - -int fluid_midi_event_set_key(fluid_midi_event_t *evt, int v) -{ - return FLUID_OK; -} - -int fluid_midi_event_get_velocity(fluid_midi_event_t *evt) -{ - return 0; -} - -int fluid_midi_event_set_velocity(fluid_midi_event_t *evt, int v) -{ - return FLUID_OK; -} - -int fluid_midi_event_get_control(fluid_midi_event_t *evt) -{ - return 0; -} - -int fluid_midi_event_set_control(fluid_midi_event_t *evt, int v) -{ - return FLUID_OK; -} - -int fluid_midi_event_get_value(fluid_midi_event_t *evt) -{ - return 0; -} - -int fluid_midi_event_set_value(fluid_midi_event_t *evt, int v) -{ - return FLUID_OK; -} - -int fluid_midi_event_get_program(fluid_midi_event_t *evt) -{ - return 0; -} - -int fluid_midi_event_set_program(fluid_midi_event_t *evt, int val) -{ - return FLUID_OK; -} - -int fluid_midi_event_get_pitch(fluid_midi_event_t *evt) -{ - return 0; -} - -int fluid_midi_event_set_pitch(fluid_midi_event_t *evt, int val) -{ - return FLUID_OK; -} - - diff --git a/bindings/fluidmax/fluidsynth.jpg b/bindings/fluidmax/fluidsynth.jpg deleted file mode 100644 index e00cd8759108a4e7d71fe490093d243d5e53ed20..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20567 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 E15U-;Z2$lO diff --git a/bindings/fluidmax/fluidsynth/version.h b/bindings/fluidmax/fluidsynth/version.h deleted file mode 100644 index 7521515d..00000000 --- a/bindings/fluidmax/fluidsynth/version.h +++ /dev/null @@ -1,44 +0,0 @@ -/* FluidSynth - A Software Synthesizer - * - * Copyright (C) 2003 Peter Hanappe and others. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free - * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - * 02110-1301, USA - */ - -#ifndef _FLUIDSYNTH_VERSION_H -#define _FLUIDSYNTH_VERSION_H - - -#ifdef __cplusplus -extern "C" { -#endif - -#define FLUIDSYNTH_VERSION "1.0.3" -#define FLUIDSYNTH_VERSION_MAJOR 1 -#define FLUIDSYNTH_VERSION_MINOR 0 -#define FLUIDSYNTH_VERSION_MICRO 3 - - -FLUIDSYNTH_API void fluid_version(int *major, int *minor, int *micro); - -FLUIDSYNTH_API char *fluid_version_str(void); - - -#ifdef __cplusplus -} -#endif - -#endif /* _FLUIDSYNTH_VERSION_H */ diff --git a/bindings/fluidmax/fluidsynth~.help b/bindings/fluidmax/fluidsynth~.help deleted file mode 100644 index fb666672d2c1742776bfa984f97a1381e973ada4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19599 zcmd6P3w#tswtmk*Lcm1n=0i|e9svx9AdMg_WCMyQsNjUCsGu@QCJ@MrWCBD~K=iKS z1J^~bf&wD=Kok{a!370HF+M<0K#->p0|_J{$t0O)-|uwKF#hlUcJHn(|9gLErlzXS z*I%7Fb?ThzO6-cF6y!Q*Dbr{4SC$uc8>}aVpQ|{|IHs9@1X1k|2-OBw*?&7@cyvcp0xk`$Xln0!7naYEa zy8H~cbA~HPnZt)DdTXbmt5$DC*9r>rCl@+%mDzfmDb6BAhdW=<+orn|{bJXwf}HG( zYu|8GV_tD?I$O0VQmJ;k)8TNW@qhJ@`R}mGfBY&a`tPO{DSDSY*G$(eMZHeD&#qo+ zs!s2klkd#TbrlsU>MTxz-YJz5iBjR5>{8SRwNLG82dithB6og)j4n|fBGuPe)!mES z&O_So7*ZLfV|S36s+Ju;mc51J~`FDr27xpEY>r}kI7TB3Gdt|xW7L(zMt7fw!B z)Q{EOs=+F~SC)KtsJE#nD~hH##bg}vrB7ylo{JAE z(VE*d*tIT}ZOqa8(yp>+WM>vTa}@o`Ojl&W`}HhzO?DP$(pD5*ce`>6T!k{P{jCnY z6#Xiir#>J<3{D@ImCp&i+U3mPoDa$qd(*Gd2fL^6^Y@ln4N>$V$?49#X(@_6G&yWe zEGJJ$b{Eo?S^PuazI_!vcd{8XB^q zU)!@EO;R7B_aD?t9;6S|ubYr;N(io=qL1uplDR&|Swy}!xM$LQM@`P2Au~UEhBK$w zMWeoPW_AwM&{n_6HH)MQ@^hSSS0-(?ut+_FxtO--@7j4dd16}Y$<=TQ8X{9?D@ z3re2Nd_n}*VbgvgWOmkAXZ6x=R;w&VG_yf!wt9~R?#OjcbD57{- zTljNa_;aEoRh-COj&as!n&Vcp->r_@EF6cbngxESt*ugPhfJw{*F?vy<}=b#txrd) zs+twIJI0$G#yjpXKW`s*kNN2cf2O5c-|unU9j>=NZ%-X>$&VXvlA7o+KPMDej;XUg zkuEMjeX633uxYt=^;T;p?k-UDdt^rHx&!u)1W2yI2m3!&LkK_y2@@5g)9Unj&-bseGO@mm8q?$!WPR_mq5k$(){< zt}JJ94qZ)dHXTb|Msa#}hPCTu0tOBGLD;LIez^e`;_ zXJMYp$!~7OY}Kdh-1MaC+;_JLe(q~=5%*P7$-UGx^+#)HGp^4m&dy9L$&*ca=9K(g z7j-&oirZZ<EWuBNwQ}Hg&8vJp!fA)#vGtgk=du+xm}lLV~3~91(oP zrar7adrt6=N%>h>Ns9ic>{gFu6c-knyVrt@DfxxPoTkSMoQ!c~Si!)TW@pMX1nOCvdb#SeCSi^_^8Y+H zRw4O(G6M{HUi}4b(Ly%$b2Z%(U20j83HcYB`k8uNq@FxWw2SQO59$|@D%0RN$Af8VtIj>q zdLV`OskcRXKBBKMA(z{=jW%_VRsD?qD(%kdzRj+Eb*^E7{;Kp=XG&dx)p@~Pj3ty| zYEQ>qCel-;z<_Y0{#w3lr6uYq?Q5I1(wf;h`T`o&>!!6T`Wsg$`fAf&S=Qe)?Nv%^ z#9pP)kt2D_v{tSJ{p}(~>JnHj(AVbYT^S)t??g^_haWqx`{EZ~NV&t2X40K6W6KVY zjcn%*>;BExHxDy;cfabYtA>dNeKxI&O1Coo(vyNFPpmiRQO4 zefg!_Gx|HGBK~625^RyFU8-BwkZtODV3>>kny98q`_QJ{XEW>O=+B61IO=z;1^1pT zIMKqo@Pd=_`{sf(wV{7d=wklCWxCcJYy1CatXWxE=2%l4=3s?yN1LqCdW*q&u{UN0 z`YQb|iIZJPyfG^$pP7zi8?V{aet$p9ksXRXF1PSMoa|&E zqg&I^sJ;|gn}03NlT1a?H!=MZ-EK}VcDrdRT%v!pOSn;@y45Gt(H6`{R_9gb2=8E| zbZNL=`dzGMXl*R*=^u}A&bo3;nnTgIaP7O80lKq^s^6z?9h+ZBJ<%V0l9n-r+d2cq zf%>Q87&0@c)3=RqPT@`=3W~R@0j+fy&{}q%<>qG=Gqx5tJlYBl^c?+j-P|A(H7+T? zI?kfBRNsD1kFtvOjp_t#kxlLM_f>YO{>7AVVyG@)-+NVNgQ;d%Dca<0U1MRFl7^yQ zrKd4kC{dr#?zgD{t7W)8Odqd*Idh7O@rwQx^AnlWtMspnT)ElQt0W8Ub(zRS^%iY5 z{hTHD<-|zf!MdyBkm-9lRjME6HXFxxMQ+%uPZBy(X}~G``r1HC+9FpzCr74 z<}hYF)|)D@#`i<6xm{SMJb``GuHgn#tMjC$msPXBIM3{CHnb<{$Oe+CP6)FMXm{AS z6eFrj)z@==4hXw^o=4EkI&ztBFx63_U0_$=kGNaQAYTy!aH#L7X%@ndg|1&Nk@o6Z z_3Cho<=}bH@KU7euToW_{+W&^Hq0P{4&V(v^8x)u)4GS7)6h}PSI_*T6AfA?JB0U= z41I+oJh(^HgX;U%<1@mMv4tq++~S<#CWZBLiB0Wd^*+cmg=~ohxfyd&t&1)y4%n(Y zrH-=tF4b3tLM-8u6-Py z@gw?C9ysLZloU+K&tr6aOfmq*XFv5Hcy%vEWydF2Vd8LorG895p|kStyA{1`LNwl0 z^q;e`b6jR1Y@LBD(yq6wS6D+Rm*CtvYY0g&1yR3LS6KBKdS=wd#E6%wtE`rjg|6KE z8T1^hxXo|U#l|J0t5B=0_N5Ucm1OH`G0_rrg?7D7EwkE(>x1;QTt>ra%BL6z=ktuO z#BwPm>Kg5eb0NzQ59s^#3Nv{y*$vSym17DEg+Ak)w;)jEIoEGGjELs9Q1d0~=<(_k zXm6@L(lFd=P|ajJ!+4{k}vBu&MY&b`AC{p(;0+wr?ch(D(A8`Es~nh{nuqUxe?Yg z(8|cp%9fD&KHVd8Ct*ZGwwxMK-^*;;YP))EM4{=+3-!i=>Cs%z z6byia3?gK3Y=IC<0k$B>7U67Y!4SNxXH5)8#(Gdahgo7>=}>+ZAT1;?-T)Qji$ze{ z41o!R0_TPv^1;g%DuF8kgVth!{BRV1zpT-9(Vl|54527yQ^GmPbzpIx~Ix`64LTaME zk(1>MHPv&7q7z}^4;mM+WP~)MiI3%YeZe~6bs<*(1*nox6BWU(7f=8p3Ru()qlqPo zh}P=FaxO#@MMSaeCzEPWgkL!-YEmYF�pajM6DV_!G!!&8{lWf@k+e&Cejzpb-QO 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 MAX/MSP utilities - * - */ - -/* - * 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.1 - * of the License, or (at your option) any later version. - * - * See file COPYING.LIB for further informations on licensing terms. - * - * 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., 59 Temple Place - Suite 330, Boston, MA 02110-1301, USA. - * - */ -#ifndef _FTMAX_H_ -#define _FTMAX_H_ - -#include - -#ifndef MAGIC -#include "ext.h" -#include "z_dsp.h" -#endif - -#define ftm_malloc(s) NewPtr(s) -#define ftmax_realloc NO_realloc -#define ftmax_free(p) DisposePtr((char *)(p)) - -#define restrict - -#define M_TWOPI 6.283185308 -//#define M_PI 3.141592654 - -#define ftmax_object_t t_object -#define ftmax_dsp_object_t t_pxobject - -typedef t_atom ftmax_atom_t; -typedef t_symbol *ftmax_symbol_t; -typedef t_messlist ftmax_class_t; -typedef method ftmax_method_t; - -#define ftmax_is_int(a) ((a)->a_type == A_LONG) -#define ftmax_is_float(a) ((a)->a_type == A_FLOAT) -#define ftmax_is_number(a) ((a)->a_type == A_LONG || (a)->a_type == A_FLOAT) -#define ftmax_is_symbol(a) ((a)->a_type == A_SYM) - -#define ftmax_get_int(a) ((a)->a_w.w_long) -#define ftmax_get_float(a) ((a)->a_w.w_float) -#define ftmax_get_number_int(a) (((a)->a_type == A_LONG)? ((a)->a_w.w_long): (int)((a)->a_w.w_float)) -#define ftmax_get_number_float(a) (((a)->a_type == A_FLOAT)? (double)((a)->a_w.w_float): (double)((a)->a_w.w_long)) -#define ftmax_get_symbol(a) ((a)->a_w.w_sym) - -#define ftmax_set_int(a, v) ((a)->a_type = A_LONG, (a)->a_w.w_long = (v)) -#define ftmax_set_float(a, v) ((a)->a_type = A_FLOAT, (a)->a_w.w_float = (v)) -#define ftmax_set_symbol(a, v) ((a)->a_type = A_SYM, (a)->a_w.w_sym = (v)) - -#define ftmax_symbol_name(s) ((s)->s_name) - -#define ftmax_new_symbol(s) gensym(s) - -extern void ftmax_class_message_varargs(ftmax_class_t *cl, ftmax_symbol_t sym, void *method); - -#endif diff --git a/bindings/fluidsynth_jni/README b/bindings/fluidsynth_jni/README deleted file mode 100644 index d0f103e9..00000000 --- a/bindings/fluidsynth_jni/README +++ /dev/null @@ -1,10 +0,0 @@ - -FluidSynth_JNI --------------- - -This directory contains a VC++ project, Java classes, and some C++ -files to use FluidSynth from within Java. This project was written -rather quickly and for a specific use. Is not intended to be complete -but may be useful as a starting point for complete Java interface. - -[Peter Hanappe] diff --git a/bindings/fluidsynth_jni/fluidsynth_jni.dsp b/bindings/fluidsynth_jni/fluidsynth_jni.dsp deleted file mode 100644 index a0c1d8e3..00000000 --- a/bindings/fluidsynth_jni/fluidsynth_jni.dsp +++ /dev/null @@ -1,115 +0,0 @@ -# Microsoft Developer Studio Project File - Name="fluidsynth_jni" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 - -CFG=fluidsynth_jni - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "fluidsynth_jni.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "fluidsynth_jni.mak" CFG="fluidsynth_jni - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "fluidsynth_jni - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "fluidsynth_jni - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "fluidsynth_jni - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "FLUIDSYNTH_JNI_EXPORTS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /I "include" /I "C:\Program Files\Java\j2re1.4.0_03\include" /I "C:\Program Files\Java\j2re1.4.0_03\include\win32" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "FLUIDSYNTH_JNI_EXPORTS" /YX /FD /c -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x40c /d "NDEBUG" -# ADD RSC /l 0x40c /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 -# ADD LINK32 fluidsynth.lib libsndfile.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 /libpath:"lib" - -!ELSEIF "$(CFG)" == "fluidsynth_jni - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "FLUIDSYNTH_JNI_EXPORTS" /YX /FD /GZ /c -# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "include" /I "C:\Program Files\WebGain\VCafe\Java2\include" /I "C:\Program Files\WebGain\VCafe\Java2\include\win32" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "FLUIDSYNTH_JNI_EXPORTS" /YX /FD /GZ /c -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x40c /d "_DEBUG" -# ADD RSC /l 0x40c /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept -# ADD LINK32 fluidsynth_debug.lib libsndfile.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /out:"fluidsynth_jni.dll" /pdbtype:sept /libpath:"lib" - -!ENDIF - -# Begin Target - -# Name "fluidsynth_jni - Win32 Release" -# Name "fluidsynth_jni - Win32 Debug" -# Begin Source File - -SOURCE=.\src\fluidsynth_jni.cpp -# End Source File -# Begin Source File - -SOURCE=.\src\fluidsynth_jni.h -# End Source File -# Begin Source File - -SOURCE=.\src\fluidsynth_Sample.cpp -# End Source File -# Begin Source File - -SOURCE=.\src\fluidsynth_Sample.h -# End Source File -# Begin Source File - -SOURCE=.\src\fluidsynth_Synth.cpp -# End Source File -# Begin Source File - -SOURCE=.\src\fluidsynth_Synth.h -# End Source File -# End Target -# End Project diff --git a/bindings/fluidsynth_jni/fluidsynth_jni.dsw b/bindings/fluidsynth_jni/fluidsynth_jni.dsw deleted file mode 100644 index 85193379..00000000 --- a/bindings/fluidsynth_jni/fluidsynth_jni.dsw +++ /dev/null @@ -1,29 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "fluidsynth_jni"=".\fluidsynth_jni.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### - diff --git a/bindings/fluidsynth_jni/include/sndfile.h b/bindings/fluidsynth_jni/include/sndfile.h deleted file mode 100644 index 4c3d9af0..00000000 --- a/bindings/fluidsynth_jni/include/sndfile.h +++ /dev/null @@ -1,436 +0,0 @@ -/* -** Copyright (C) 1999-2003 Erik de Castro Lopo -** -** This program is free software; you can redistribute it and/or modify -** it under the terms of the GNU Lesser General Public License as published by -** the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. -** -** You should have received a copy of the GNU Lesser General Public License -** along with this program; if not, write to the Free Software -** Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02110-1301, USA. -*/ - -/* -** sndfile.h -- system-wide definitions -** -** API documentation is in the doc/ directory of the source code tarball -** and at http://www.zip.com.au/~erikd/libsndfile/api.html. -*/ - -#ifndef SNDFILE_H -#define SNDFILE_H - -/* This is the version 1.0.X header file. */ -#define SNDFILE_1 - -#include -#include - -/* For the Metrowerks CodeWarrior Pro Compiler (mainly MacOS) */ - -#if (defined (__MWERKS__)) -#include -#else -#include -#endif - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -/* The following file types can be read and written. -** A file type would consist of a major type (ie SF_FORMAT_WAV) bitwise -** ORed with a minor type (ie SF_FORMAT_PCM). SF_FORMAT_TYPEMASK and -** SF_FORMAT_SUBMASK can be used to separate the major and minor file -** types. -*/ - -enum -{ - /* Major formats. */ - SF_FORMAT_WAV = 0x010000, /* Microsoft WAV format (little endian). */ - SF_FORMAT_AIFF = 0x020000, /* Apple/SGI AIFF format (big endian). */ - SF_FORMAT_AU = 0x030000, /* Sun/NeXT AU format (big endian). */ - SF_FORMAT_RAW = 0x040000, /* RAW PCM data. */ - SF_FORMAT_PAF = 0x050000, /* Ensoniq PARIS file format. */ - SF_FORMAT_SVX = 0x060000, /* Amiga IFF / SVX8 / SV16 format. */ - SF_FORMAT_NIST = 0x070000, /* Sphere NIST format. */ - SF_FORMAT_VOC = 0x080000, /* VOC files. */ - SF_FORMAT_IRCAM = 0x0A0000, /* Berkeley/IRCAM/CARL */ - SF_FORMAT_W64 = 0x0B0000, /* Sonic Foundry's 64 bit RIFF/WAV */ - SF_FORMAT_MAT4 = 0x0C0000, /* Matlab (tm) V4.2 / GNU Octave 2.0 */ - SF_FORMAT_MAT5 = 0x0D0000, /* Matlab (tm) V5.0 / GNU Octave 2.1 */ - SF_FORMAT_PVF = 0x0E0000, /* Portable Voice Format */ - SF_FORMAT_XI = 0x0F0000, /* Fasttracker 2 Extended Instrument */ - SF_FORMAT_HTK = 0x100000, /* HMM Tool Kit format */ - - /* Subtypes from here on. */ - - SF_FORMAT_PCM_S8 = 0x0001, /* Signed 8 bit data */ - SF_FORMAT_PCM_16 = 0x0002, /* Signed 16 bit data */ - SF_FORMAT_PCM_24 = 0x0003, /* Signed 24 bit data */ - SF_FORMAT_PCM_32 = 0x0004, /* Signed 32 bit data */ - - SF_FORMAT_PCM_U8 = 0x0005, /* Unsigned 8 bit data (WAV and RAW only) */ - - SF_FORMAT_FLOAT = 0x0006, /* 32 bit float data */ - SF_FORMAT_DOUBLE = 0x0007, /* 64 bit float data */ - - SF_FORMAT_ULAW = 0x0010, /* U-Law encoded. */ - SF_FORMAT_ALAW = 0x0011, /* A-Law encoded. */ - SF_FORMAT_IMA_ADPCM = 0x0012, /* IMA ADPCM. */ - SF_FORMAT_MS_ADPCM = 0x0013, /* Microsoft ADPCM. */ - - SF_FORMAT_GSM610 = 0x0020, /* GSM 6.10 encoding. */ - SF_FORMAT_VOX_ADPCM = 0x0021, /* OKI / Dialogix ADPCM */ - - SF_FORMAT_G721_32 = 0x0030, /* 32kbs G721 ADPCM encoding. */ - SF_FORMAT_G723_24 = 0x0031, /* 24kbs G723 ADPCM encoding. */ - SF_FORMAT_G723_40 = 0x0032, /* 40kbs G723 ADPCM encoding. */ - - SF_FORMAT_DWVW_12 = 0x0040, /* 12 bit Delta Width Variable Word encoding. */ - SF_FORMAT_DWVW_16 = 0x0041, /* 16 bit Delta Width Variable Word encoding. */ - SF_FORMAT_DWVW_24 = 0x0042, /* 24 bit Delta Width Variable Word encoding. */ - SF_FORMAT_DWVW_N = 0x0043, /* N bit Delta Width Variable Word encoding. */ - - SF_FORMAT_DPCM_8 = 0x0050, /* 8 bit differential PCM (XI only) */ - SF_FORMAT_DPCM_16 = 0x0051, /* 16 bit differential PCM (XI only) */ - - - /* Endian-ness options. */ - - SF_ENDIAN_FILE = 0x00000000, /* Default file endian-ness. */ - SF_ENDIAN_LITTLE = 0x10000000, /* Force little endian-ness. */ - SF_ENDIAN_BIG = 0x20000000, /* Force big endian-ness. */ - SF_ENDIAN_CPU = 0x30000000, /* Force CPU endian-ness. */ - - SF_FORMAT_SUBMASK = 0x0000FFFF, - SF_FORMAT_TYPEMASK = 0x0FFF0000, - SF_FORMAT_ENDMASK = 0x30000000 -} ; - -/* -** The following are the valid command numbers for the sf_command() -** interface. The use of these commands is documented in the file -** command.html in the doc directory of the source code distribution. -*/ - -enum -{ - SFC_GET_LIB_VERSION = 0x1000, - SFC_GET_LOG_INFO = 0x1001, - - SFC_GET_NORM_DOUBLE = 0x1010, - SFC_GET_NORM_FLOAT = 0x1011, - SFC_SET_NORM_DOUBLE = 0x1012, - SFC_SET_NORM_FLOAT = 0x1013, - - SFC_GET_SIMPLE_FORMAT_COUNT = 0x1020, - SFC_GET_SIMPLE_FORMAT = 0x1021, - - SFC_GET_FORMAT_INFO = 0x1028, - - SFC_GET_FORMAT_MAJOR_COUNT = 0x1030, - SFC_GET_FORMAT_MAJOR = 0x1031, - SFC_GET_FORMAT_SUBTYPE_COUNT = 0x1032, - SFC_GET_FORMAT_SUBTYPE = 0x1033, - - SFC_CALC_SIGNAL_MAX = 0x1040, - SFC_CALC_NORM_SIGNAL_MAX = 0x1041, - SFC_CALC_MAX_ALL_CHANNELS = 0x1042, - SFC_CALC_NORM_MAX_ALL_CHANNELS = 0x1043, - - SFC_SET_ADD_PEAK_CHUNK = 0x1050, - - SFC_UPDATE_HEADER_NOW = 0x1060, - SFC_SET_UPDATE_HEADER_AUTO = 0x1061, - - SFC_FILE_TRUNCATE = 0x1080, - - SFC_SET_RAW_START_OFFSET = 0x1090, - - SFC_SET_DITHER_ON_WRITE = 0x10A0, - SFC_SET_DITHER_ON_READ = 0x10A1, - - SFC_GET_DITHER_INFO_COUNT = 0x10A2, - SFC_GET_DITHER_INFO = 0x10A3, - - SFC_GET_EMBED_FILE_INFO = 0x10B0, - - /* Following commands for testing only. */ - SFC_TEST_IEEE_FLOAT_REPLACE = 0x6001, - - /* - ** SFC_SET_ADD_* values are deprecated and will disappear at some - ** time in the future. They are guaranteed to be here up to and - ** including version 1.0.8 to avoid breakage of existng software. - ** They currently do nothing and will continue to do nothing. - */ - SFC_SET_ADD_DITHER_ON_WRITE = 0x1070, - SFC_SET_ADD_DITHER_ON_READ = 0x1071 -} ; - - -/* -** String types that can be set and read from files. Not all file types -** support this and even the file types which support one, may not support -** all string types. -*/ - -enum -{ - SF_STR_TITLE = 0x01, - SF_STR_COPYRIGHT = 0x02, - SF_STR_SOFTWARE = 0x03, - SF_STR_ARTIST = 0x04, - SF_STR_COMMENT = 0x05, - SF_STR_DATE = 0x06 -} ; - -enum -{ - /* True and false */ - SF_FALSE = 0, - SF_TRUE = 1, - - /* Modes for opening files. */ - SFM_READ = 0x10, - SFM_WRITE = 0x20, - SFM_RDWR = 0x30 -} ; - -/* Pubic error values. These are guaranteed to remain unchanged for the duration -** of the library major version number. -** There are also a large number of private error numbers which are internal to -** the library which can change at any time. -*/ - -enum -{ - SF_ERR_NO_ERROR = 0, - SF_ERR_UNRECOGNISED_FORMAT = 1, - SF_ERR_SYSTEM = 2 -} ; - -/* A SNDFILE* pointer can be passed around much like stdio.h's FILE* pointer. */ - -typedef void SNDFILE ; - -typedef __int64 sf_count_t ; - -/* A pointer to a SF_INFO structure is passed to sf_open_read () and filled in. -** On write, the SF_INFO structure is filled in by the user and passed into -** sf_open_write (). -*/ - -struct SF_INFO -{ - sf_count_t frames ; /* Used to be called samples. Changed to avoid confusion. */ - int samplerate ; - int channels ; - int format ; - int sections ; - int seekable ; -} ; - -typedef struct SF_INFO SF_INFO ; - -/* The SF_FORMAT_INFO struct is used to retrieve information about the sound -** file formats libsndfile supports using the sf_command () interface. -** -** Using this interface will allow applications to support new file formats -** and encoding types when libsndfile is upgraded, without requiring -** re-compilation of the application. -** -** Please consult the libsndfile documentation (particularly the information -** on the sf_command () interface) for examples of its use. -*/ - -typedef struct -{ - int format ; - const char *name ; - const char *extension ; -} SF_FORMAT_INFO ; - -/* -** Enums and typedefs for adding dither on read and write. -** See the html documentation for sf_command(), SFC_SET_DITHER_ON_WRITE -** and SFC_SET_DITHER_ON_READ. -*/ - -enum -{ - SFD_DEFAULT_LEVEL = 0, - SFD_CUSTOM_LEVEL = 0x40000000, - - SFD_NO_DITHER = 500, - SFD_WHITE = 501, - SFD_TRIANGULAR_PDF = 502 -} ; - -typedef struct -{ - int type ; - double level ; - const char *name ; -} SF_DITHER_INFO ; - -/* Struct used to retrieve information about a file embedded within a -** larger file. See SF_GET_EMBED_FILE_INFO. -*/ - -typedef struct -{ - sf_count_t offset ; - sf_count_t length ; -} SF_EMBED_FILE_INFO ; - - -/* Open the specified file for read, write or both. On error, this will -** return a NULL pointer. To find the error number, pass a NULL SNDFILE -** to sf_perror () or sf_error_str (). -** All calls to sf_open() should be matched with a call to sf_close(). -*/ - -SNDFILE *sf_open(const char *path, int mode, SF_INFO *sfinfo) ; - -/* Use the existing file descriptor to create a SNDFILE object. If close_desc -** is TRUE, the file descriptor will be closed when sf_close() is called. If -** it is FALSE, the descritor will not be closed. -** When passed a descriptor like this, the library will assume that the start -** of file header is at the current file offset. This allows sound files within -** larger container files to be read and/or written. -** On error, this will return a NULL pointer. To find the error number, pass a -** NULL SNDFILE to sf_perror () or sf_error_str (). -** All calls to sf_open_fd() should be matched with a call to sf_close(). - -*/ - -SNDFILE *sf_open_fd(int fd, int mode, SF_INFO *sfinfo, int close_desc) ; - -/* sf_error () returns a error number which can be translated to a text -** string using sf_error_number(). -*/ - -int sf_error(SNDFILE *sndfile) ; - -/* sf_strerror () returns to the caller a pointer to the current error message for -** the given SNDFILE. -*/ - -const char *sf_strerror(SNDFILE *sndfile) ; - -/* sf_error_number () allows the retrieval of the error string for each internal -** error number. -** -*/ - -const char *sf_error_number(int errnum) ; - -/* The following three error functions are deprecated but they will remain in the -** library for the forseeable future. The function sf_strerror() should be used -** in their place. -*/ - -int sf_perror(SNDFILE *sndfile) ; -int sf_error_str(SNDFILE *sndfile, char *str, size_t len) ; - - -/* Return TRUE if fields of the SF_INFO struct are a valid combination of values. */ - -int sf_command(SNDFILE *sndfile, int command, void *data, int datasize) ; - -/* Return TRUE if fields of the SF_INFO struct are a valid combination of values. */ - -int sf_format_check(const SF_INFO *info) ; - -/* Seek within the waveform data chunk of the SNDFILE. sf_seek () uses -** the same values for whence (SEEK_SET, SEEK_CUR and SEEK_END) as -** stdio.h function fseek (). -** An offset of zero with whence set to SEEK_SET will position the -** read / write pointer to the first data sample. -** On success sf_seek returns the current position in (multi-channel) -** samples from the start of the file. -** Please see the libsndfile documentation for moving the read pointer -** separately from the write pointer on files open in mode SFM_RDWR. -** On error all of these functions return -1. -*/ - -sf_count_t sf_seek(SNDFILE *sndfile, sf_count_t frames, int whence) ; - -/* Functions for retrieving and setting string data within sound files. -** Not all file types support this features; AIFF and WAV do. For both -** functions, the str_type parameter must be one of the SF_STR_* values -** defined above. -** On error, sf_set_string() returns non-zero while sf_get_string() -** returns NULL. -*/ - -int sf_set_string(SNDFILE *sndfile, int str_type, const char *str) ; - -const char *sf_get_string(SNDFILE *sndfile, int str_type) ; - -/* Functions for reading/writing the waveform data of a sound file. -*/ - -sf_count_t sf_read_raw(SNDFILE *sndfile, void *ptr, sf_count_t bytes) ; -sf_count_t sf_write_raw(SNDFILE *sndfile, void *ptr, sf_count_t bytes) ; - -/* Functions for reading and writing the data chunk in terms of frames. -** The number of items actually read/written = frames * number of channels. -** sf_xxxx_raw read/writes the raw data bytes from/to the file -** sf_xxxx_short passes data in the native short format -** sf_xxxx_int passes data in the native int format -** sf_xxxx_float passes data in the native float format -** sf_xxxx_double passes data in the native double format -** All of these read/write function return number of frames read/written. -*/ - -sf_count_t sf_readf_short(SNDFILE *sndfile, short *ptr, sf_count_t frames) ; -sf_count_t sf_writef_short(SNDFILE *sndfile, short *ptr, sf_count_t frames) ; - -sf_count_t sf_readf_int(SNDFILE *sndfile, int *ptr, sf_count_t frames) ; -sf_count_t sf_writef_int(SNDFILE *sndfile, int *ptr, sf_count_t frames) ; - -sf_count_t sf_readf_float(SNDFILE *sndfile, float *ptr, sf_count_t frames) ; -sf_count_t sf_writef_float(SNDFILE *sndfile, float *ptr, sf_count_t frames) ; - -sf_count_t sf_readf_double(SNDFILE *sndfile, double *ptr, sf_count_t frames) ; -sf_count_t sf_writef_double(SNDFILE *sndfile, double *ptr, sf_count_t frames) ; - -/* Functions for reading and writing the data chunk in terms of items. -** Otherwise similar to above. -** All of these read/write function return number of items read/written. -*/ - -sf_count_t sf_read_short(SNDFILE *sndfile, short *ptr, sf_count_t items) ; -sf_count_t sf_write_short(SNDFILE *sndfile, short *ptr, sf_count_t items) ; - -sf_count_t sf_read_int(SNDFILE *sndfile, int *ptr, sf_count_t items) ; -sf_count_t sf_write_int(SNDFILE *sndfile, int *ptr, sf_count_t items) ; - -sf_count_t sf_read_float(SNDFILE *sndfile, float *ptr, sf_count_t items) ; -sf_count_t sf_write_float(SNDFILE *sndfile, float *ptr, sf_count_t items) ; - -sf_count_t sf_read_double(SNDFILE *sndfile, double *ptr, sf_count_t items) ; -sf_count_t sf_write_double(SNDFILE *sndfile, double *ptr, sf_count_t items) ; - -/* Close the SNDFILE and clean up all memory allocations associated with this -** file. -** Returns 0 on success, or an error number. -*/ - -int sf_close(SNDFILE *sndfile) ; - -#ifdef __cplusplus -} /* extern "C" */ -#endif /* __cplusplus */ - -#endif /* SNDFILE_H */ diff --git a/bindings/fluidsynth_jni/java/fluidsynth/FluidException.java b/bindings/fluidsynth_jni/java/fluidsynth/FluidException.java deleted file mode 100644 index 6a7bf518..00000000 --- a/bindings/fluidsynth_jni/java/fluidsynth/FluidException.java +++ /dev/null @@ -1,8 +0,0 @@ -package fluidsynth; - -public class FluidException extends Exception -{ - public FluidException(String what) { - super(what); - } -} diff --git a/bindings/fluidsynth_jni/java/fluidsynth/Sample.java b/bindings/fluidsynth_jni/java/fluidsynth/Sample.java deleted file mode 100644 index d0e5bca7..00000000 --- a/bindings/fluidsynth_jni/java/fluidsynth/Sample.java +++ /dev/null @@ -1,39 +0,0 @@ -package fluidsynth; - -public class Sample -{ - protected int sampleNum = -1; - protected int rootkey; - protected String filename; - - public Sample(String filename, int rootkey) throws FluidException { - sampleNum = newSample(filename, rootkey); - if (sampleNum < 0) { - throw new FluidException("Failed to load the sample (err=" + sampleNum + ")"); - } - this.filename = filename; - this.rootkey = rootkey; - } - - protected void finalize() { - if (sampleNum >= 0) { - deleteSample(sampleNum); - sampleNum = -1; - } - } - - public int getRootKey() { - return rootkey; - } - - public String getFileName() { - return filename; - } - - int getSampleNum() { - return sampleNum; - } - - protected native int newSample(String filename, int rootkey); - protected native void deleteSample(int sampleNum); -} diff --git a/bindings/fluidsynth_jni/java/fluidsynth/Synth.java b/bindings/fluidsynth_jni/java/fluidsynth/Synth.java deleted file mode 100644 index 50a87370..00000000 --- a/bindings/fluidsynth_jni/java/fluidsynth/Synth.java +++ /dev/null @@ -1,49 +0,0 @@ -package fluidsynth; - -public class Synth -{ - protected int synth = -1; - - static { - System.loadLibrary("fluidsynth_jni"); - } - - public Synth() throws FluidException { - synth = newSynth(); - if (synth < 0) { - throw new FluidException("Low-level initialization of the synthesizer failed"); - } - } - - protected void finalize() { - if (synth >= 0) { - deleteSynth(synth); - synth = -1; - } - } - - public void add(Sample sample, int bank, int preset, int lokey, int hikey) throws FluidException { - if (add(synth, sample.getSampleNum(), bank, preset, lokey, hikey) != 0) { - throw new FluidException("Failed to add the sample"); - } - } - - public void remove(Sample sample, int bank, int preset) throws FluidException { - if (remove(synth, sample.getSampleNum(), bank, preset) != 0) { - throw new FluidException("Failed to remove the sample"); - } - } - - public void loadSoundFont(String filename) throws FluidException { - if (loadSoundFont(synth, filename) != 0) { - throw new FluidException("Failed to load the SoundFont"); - } - } - - protected native int newSynth(); - protected native void deleteSynth(int synth); - protected native int add(int synth, int sample, int bank, - int preset, int lokey, int hikey); - protected native int remove(int synth, int sample, int bank, int preset); - protected native int loadSoundFont(int synth, String filename); -} diff --git a/bindings/fluidsynth_jni/java/fluidsynth/Test.java b/bindings/fluidsynth_jni/java/fluidsynth/Test.java deleted file mode 100644 index e1a8a517..00000000 --- a/bindings/fluidsynth_jni/java/fluidsynth/Test.java +++ /dev/null @@ -1,36 +0,0 @@ -package fluidsynth; -import java.io.*; - -public class Test -{ - static public void main(String[] argv) throws Exception { - try{ - Synth synth = new Synth(); - synth.add(new Sample("[accord guitar].wav", 55), 0, 0, 50,58); - - synth.add(new Sample("cabrel.wav_14.wav", 60), 0, 0, 59,59); - synth.add(new Sample("cabrel.wav_16.wav", 60), 0, 0, 60,60); - synth.add(new Sample("cabrel.wav_15.wav", 62), 0, 0, 61, 61); - synth.add(new Sample("cabrel.wav_17.wav", 62), 0, 0, 62, 62); - synth.add(new Sample("[TIR].wav", 64), 0, 0, 63,63); - synth.add(new Sample("cabrel.wav_18.wav", 64), 0, 0, 64,64); - synth.add(new Sample("cabrel.wav_5.wav", 64), 0, 0, 65,65); - synth.add(new Sample("cabrel.wav_7.wav", 64), 0, 0, 66,66); - synth.add(new Sample("cabrel.wav_8.wav", 64), 0, 0, 67,67); - synth.add(new Sample("cabrel.wav_19.wav", 64), 0, 0, 68,68); - synth.add(new Sample("cabrel.wav_9.wav", 65), 0, 0, 69,69); - synth.add(new Sample("cabrel.wav_10.wav", 67), 0, 0, 70, 70); - synth.add(new Sample("cabrel.wav_11.wav", 69), 0, 0, 71, 71); - - - waitCR(); - }catch(Exception e){System.out.println(e);waitCR();} - } - - public static void waitCR() { - System.out.println ("Appuyez sur CR ..."); - try {System.in.read();} - catch (IOException e) {System.out.println(e);} - } -} - diff --git a/bindings/fluidsynth_jni/lib/libsndfile.lib b/bindings/fluidsynth_jni/lib/libsndfile.lib deleted file mode 100644 index d627f8a396b9250eec969b505a690ae1dad44170..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7832 zcmcgx&2Ljj5dS3sQW6^S4f!I5rfqr&`LGF#?NXD*#j1qNIU4 z08{svq`ngXQ}jmvaj(h&7$ zIx#M3gzOYVwv7-CKU1_$Pog2h5JWgbM1zDQXr7)#J zCYpkB#p)?JPh<1$#!A*!(gLHGE0#9Wm0)!}yDIH-1xBxwO=p5q`kpW~WSsU~P+l*V zDn`Zdo>qR-))Abikt-C_wvOUGtxWOm3hy*6H(Qhow7}8xjMA*DW1AFITNJnkY1SP> zqbqZ&t+`jqSF&aiEzXQ1WMEp3ER(*lD>Q4mH-$e8xEY=vVZzquwn#b%98+10UGqr;&dL8I#9PQ6hiX4(xUSuZ{wbyMQabz#={G3;<)@ls)@^xAc5KROkVo_5*K@1KUKy zL_5cTIieiNUz6^AqBldpIA!_W5gL!^8D-RUqHU576YUHF^F+^iJi>WIm~^0^3C%c! z1Na2(Xu}aCa1f_(7=7qP4?aaVy3mQE=s+t@ViYGZf?@Py2!j~FaU5%~cME0T56kFQ z*7mZl$>L@g{VXdpX;oUZ60GUEM`nz4DDPa*{t{YRmC{8{t#WQ5^&>+F-C!3Yk)DmY zLZlM1BitiT=5$1Q%GE$7K^aZ&P>YP8h|qLH+>GYr2T$r+BQ@Q5OPN1$A&r>1lKV@n z#1Uv_@|2OR}Qia6JyNMO4XvC@gui%vb-aY!t7Si6ko!+amQiEeYw zZ~v_J1~TrTI_G2(H(c1=Ds7xh8*VstlDlGINI__=0^O;#$- zczWyND!{NfoX8XkrxUd*^VyjxRioc-TWD&*-`g*~{kI8}MS&NTRNI>l(Ob-~liHd= zd3Wz$i)bQ6*5yCqX&!rb{2y8-GTD{8YhyPx)J1wJ(ERP+JUYLd$Y;`(^w_kP)1iZ3 zN$+>1%X6H^UV@B+>=L;+tMo5`=F4yNMs6~Fk58v%h3aP_fBK#&155+ zp{G6%2(#Cum8=rI}>7H#gtYsbZO zDrv<on~&xX@3X^HW$k_6tb66o>W=_n zM)`{XS+(qWoze<zS40+P^`pxCo;UB_Wo)Su~0klO4Hg(K9pmmPYYne3Cxx zSa^|6Qh&6?WMld~W#L7*N!@615l0`$EVRhYs~ayaKXOIHyC*KXjqX}ZWPf9D%ssk6 zw7AITtC*OT{(jmZR^0hX{|FLT@*=Ok0yK&jGetStringUTFChars(filename, 0); - int err = fluid_jni_new_sample(cfilename, rootkey); - env->ReleaseStringUTFChars(filename, cfilename); - return err; -} - -JNIEXPORT void JNICALL -Java_fluidsynth_Sample_deleteSample(JNIEnv *env, jobject obj, jint samplenum) -{ - fluid_jni_delete_sample(samplenum); -} diff --git a/bindings/fluidsynth_jni/src/fluidsynth_Sample.h b/bindings/fluidsynth_jni/src/fluidsynth_Sample.h deleted file mode 100644 index fab30005..00000000 --- a/bindings/fluidsynth_jni/src/fluidsynth_Sample.h +++ /dev/null @@ -1,29 +0,0 @@ -/* DO NOT EDIT THIS FILE - it is machine generated */ -#include -/* Header for class fluidsynth_Sample */ - -#ifndef _Included_fluidsynth_Sample -#define _Included_fluidsynth_Sample -#ifdef __cplusplus -extern "C" { -#endif -/* - * Class: fluidsynth_Sample - * Method: newSample - * Signature: (Ljava/lang/String;I)I - */ -JNIEXPORT jint JNICALL Java_fluidsynth_Sample_newSample -(JNIEnv *, jobject, jstring, jint); - -/* - * Class: fluidsynth_Sample - * Method: deleteSample - * Signature: (I)V - */ -JNIEXPORT void JNICALL Java_fluidsynth_Sample_deleteSample -(JNIEnv *, jobject, jint); - -#ifdef __cplusplus -} -#endif -#endif diff --git a/bindings/fluidsynth_jni/src/fluidsynth_Synth.cpp b/bindings/fluidsynth_jni/src/fluidsynth_Synth.cpp deleted file mode 100644 index a1e70ef0..00000000 --- a/bindings/fluidsynth_jni/src/fluidsynth_Synth.cpp +++ /dev/null @@ -1,38 +0,0 @@ -#include "fluidsynth_Synth.h" -#include "fluidsynth_jni.h" - -JNIEXPORT jint JNICALL -Java_fluidsynth_Synth_newSynth(JNIEnv *env, jobject obj) -{ - return fluid_jni_new_synth(); -} - -JNIEXPORT void JNICALL -Java_fluidsynth_Synth_deleteSynth(JNIEnv *env, jobject obj, jint synth) -{ - fluid_jni_delete_synth(synth); -} - -JNIEXPORT jint JNICALL -Java_fluidsynth_Synth_add(JNIEnv *env, jobject obj, jint synth, jint samplenum, - jint bank, jint preset, jint lokey, jint hikey) -{ - return fluid_jni_add(samplenum, bank, preset, lokey, hikey); -} - -JNIEXPORT jint JNICALL -Java_fluidsynth_Synth_remove(JNIEnv *env, jobject obj, jint synth, - jint samplenum, jint bank, jint preset) -{ - return fluid_jni_remove(samplenum, bank, preset); -} - -JNIEXPORT jint JNICALL -Java_fluidsynth_Synth_loadSoundFont(JNIEnv *env, jobject obj, jint synth, jstring filename) -{ - const char *cfilename = env->GetStringUTFChars(filename, 0); - int err = fluid_jni_sfload(cfilename); - env->ReleaseStringUTFChars(filename, cfilename); - return err; -} - diff --git a/bindings/fluidsynth_jni/src/fluidsynth_Synth.h b/bindings/fluidsynth_jni/src/fluidsynth_Synth.h deleted file mode 100644 index a586cc27..00000000 --- a/bindings/fluidsynth_jni/src/fluidsynth_Synth.h +++ /dev/null @@ -1,48 +0,0 @@ -/* DO NOT EDIT THIS FILE - it is machine generated */ -#include -/* Header for class fluidsynth_Synth */ - -#ifndef _Included_fluidsynth_Synth -#define _Included_fluidsynth_Synth -#ifdef __cplusplus -extern "C" { -#endif -/* - * Class: fluidsynth_Synth - * Method: newSynth - * Signature: ()I - */ -JNIEXPORT jint JNICALL Java_fluidsynth_Synth_newSynth -(JNIEnv *, jobject); - -/* - * Class: fluidsynth_Synth - * Method: deleteSynth - * Signature: (I)V - */ -JNIEXPORT void JNICALL Java_fluidsynth_Synth_deleteSynth -(JNIEnv *, jobject, jint); - -/* - * Class: fluidsynth_Synth - * Method: add - * Signature: (IIIIII)I - */ -JNIEXPORT jint JNICALL Java_fluidsynth_Synth_add -(JNIEnv *, jobject, jint, jint, jint, jint, jint, jint); - -/* - * Class: fluidsynth_Synth - * Method: remove - * Signature: (IIII)I - */ -JNIEXPORT jint JNICALL Java_fluidsynth_Synth_remove -(JNIEnv *, jobject, jint, jint, jint, jint); - -JNIEXPORT jint JNICALL Java_fluidsynth_Synth_loadSoundFont -(JNIEnv *env, jobject obj, jint synth, jstring filename); - -#ifdef __cplusplus -} -#endif -#endif diff --git a/bindings/fluidsynth_jni/src/fluidsynth_jni.cpp b/bindings/fluidsynth_jni/src/fluidsynth_jni.cpp deleted file mode 100644 index 9789426a..00000000 --- a/bindings/fluidsynth_jni/src/fluidsynth_jni.cpp +++ /dev/null @@ -1,334 +0,0 @@ -#include -#include "fluidsynth_jni.h" - -const int fluid_jni_maxsamples = 1024; - -static int _initialized = 0; -static fluid_settings_t *_settings = 0; -static fluid_synth_t *_synth = 0; -static fluid_audio_driver_t *_adriver = 0; -static fluid_midi_driver_t *_mdriver = 0; -static fluid_sfont_t *_sfloader = 0; -static fluid_sample_t *_sample[fluid_jni_maxsamples]; - - - -void fluid_jni_init() -{ - if(_initialized == 0) - { - _initialized++; - - for(int i = 0; i < fluid_jni_maxsamples; i++) - { - _sample[i] = 0; - } - } -} - -int fluid_jni_new_synth() -{ - if(_synth != 0) - { - return -1; - } - - fluid_jni_init(); - - _settings = new_fluid_settings(); - - if(_settings == 0) - { - goto error_recovery; - } - - fluid_settings_setstr(_settings, "midi.driver", "midishare"); - - _synth = new_fluid_synth(_settings); - - if(_synth == 0) - { - goto error_recovery; - } - - _adriver = new_fluid_audio_driver(_settings, _synth); - - if(_adriver == 0) - { - goto error_recovery; - } - - _mdriver = new_fluid_midi_driver(_settings, fluid_synth_handle_midi_event, _synth); - - if(_mdriver == 0) - { - goto error_recovery; - } - - - _sfloader = fluid_ramsfont_create_sfont(); - - if(_sfloader == 0) - { - goto error_recovery; - } - - fluid_ramsfont_set_name((fluid_ramsfont_t *) _sfloader->data, "Tada"); - - fluid_synth_add_sfont(_synth, _sfloader); - - return 0; - -error_recovery: - fluid_jni_delete_synth(0); - return -1; -} - - -int fluid_jni_delete_synth(int num) -{ - if(_mdriver) - { - - delete_fluid_midi_driver(_mdriver); - - _mdriver = 0; - } - - if(_adriver) - { - - delete_fluid_audio_driver(_adriver); - - _adriver = 0; - } - - if(_synth) - { - - delete_fluid_synth(_synth); - - _synth = 0; - } - - if(_settings) - { - delete_fluid_settings(_settings); - _settings = 0; - } - - return 0; -} - -int fluid_jni_sfload(const char *filename) -{ - if(_synth == 0) - { - return -1; - } - - fluid_synth_sfload(_synth, filename, 1); - return 0; -} - -int fluid_jni_add(int samplenum, int bank, int preset, int lokey, int hikey) -{ - if(_synth == 0) - { - return -1; - } - - if(_sfloader == 0) - { - return -1; - } - - fluid_sample_t *sample = fluid_jni_get_sample(samplenum); - - if(sample == 0) - { - return -2; - } - - - - if(fluid_ramsfont_add_izone((fluid_ramsfont_t *) _sfloader->data, bank, - preset, sample, lokey, hikey) != 0) - { - - - return -3; - } - - - - fluid_synth_program_select(_synth, 0, _sfloader->id, bank, preset); - return 0; -} - -int fluid_jni_remove(int samplenum, int bank, int preset) -{ - if(_synth == 0) - { - return -1; - } - - fluid_sample_t *sample = fluid_jni_get_sample(samplenum); - - if(sample == 0) - { - return -2; - } - - if(fluid_ramsfont_remove_izone((fluid_ramsfont_t *) _sfloader->data, - bank, preset, sample) != 0) - { - return -3; - } - - - return 0; -} - -int fluid_jni_get_sample_num() -{ - for(int i = 0; i < fluid_jni_maxsamples; i++) - { - if(_sample[i] == 0) - { - return i; - } - } - - return -1; -} - -int fluid_jni_new_sample(const char *filename, int rootkey) -{ - SF_INFO sfinfo; - SNDFILE *sndfile = 0; - fluid_sample_t *sample = 0; - short *data = 0; - sf_count_t count; - int err; - - int num = fluid_jni_get_sample_num(); - - if(num < 0) - { - return -1; - } - - - - - sndfile = sf_open(filename, SFM_READ, &sfinfo) ; - - if(sndfile == 0) - { - return -2; - } - - //printf("fluid_jni_new_sample: channels=%i, srate=%i, frames=%i\n", -// sfinfo.channels, sfinfo.samplerate, sfinfo.frames); - - - if(sfinfo.channels != 1) - { - err = -3; - goto error_recovery; - } - - if(sfinfo.samplerate != 44100) - { - err = -4; - goto error_recovery; - } - - sample = new_fluid_ramsample(); - - if(sample == 0) - { - err = -5; - goto error_recovery; - } - - data = new short[sfinfo.frames]; - - if(data == 0) - { - err = -6; - goto error_recovery; - } - -// printf("fluid_jni_new_sample 2\n"); - - count = sf_readf_short(sndfile, data, sfinfo.frames); - - if(count != sfinfo.frames) - { - err = -7; - goto error_recovery; - } - - //printf("fluid_jni_new_sample 3\n"); - - if(fluid_sample_set_sound_data(sample, data, sfinfo.frames, 1, rootkey) != 0) - { - err = -8; - goto error_recovery; - } - - //printf("fluid_jni_new_sample 4: sample=%p\n", sample); - - _sample[num] = sample; - - sf_close(sndfile); - delete data; - - return num; - -error_recovery: - - if(sndfile) - { - sf_close(sndfile); - } - - if(sample) - { - delete_fluid_ramsample(sample); - } - - if(data) - { - delete data; - } - - return err; -} - -fluid_sample_t *fluid_jni_get_sample(int num) -{ - if((num >= 0) - && (num < fluid_jni_maxsamples) - && (_sample[num] != 0)) - { - return _sample[num]; - } - - return 0; -} - -int fluid_jni_delete_sample(int num) -{ - if((num >= 0) - && (num < fluid_jni_maxsamples) - && (_sample[num] != 0)) - { - delete_fluid_ramsample(_sample[num]); - _sample[num] = 0; - } - - return 0; -} diff --git a/bindings/fluidsynth_jni/src/fluidsynth_jni.h b/bindings/fluidsynth_jni/src/fluidsynth_jni.h deleted file mode 100644 index 28b94e01..00000000 --- a/bindings/fluidsynth_jni/src/fluidsynth_jni.h +++ /dev/null @@ -1,18 +0,0 @@ - -#ifndef _FLUID_JNI_H -#define _FLUID_JNI_H - -#include - -int fluid_jni_new_synth(void); -int fluid_jni_delete_synth(int num); -int fluid_jni_add(int samplenum, int bank, int preset, int lokey, int hikey); -int fluid_jni_remove(int samplenum, int bank, int preset); -int fluid_jni_sfload(const char *filename); - -int fluid_jni_new_sample(const char *filename, int rootkey); -int fluid_jni_delete_sample(int num); -int fluid_jni_get_sample_num(void); -fluid_sample_t *fluid_jni_get_sample(int num); - -#endif /* _FLUID_JNI_H */