From a68e114c1e583e99a858c13e63a194abd68b3757 Mon Sep 17 00:00:00 2001 From: Scott Duensing Date: Fri, 29 Nov 2019 19:05:27 -0600 Subject: [PATCH] Libraries mostly correct on Linux now. --- .gitignore | 1 + singe/main.c | 8 +- singe/preBuild.sh | 164 +- singe/singe.pro | 3 +- .../external/flac-1.3.3/doc/html/Makefile.in | 2 +- .../external/opusfile-0.11/Makefile.in | 2 +- .../thirdparty/fluidsynth/.appveyor-vcpkg.yml | 50 - .../fluidsynth/.azure-pipelines-mac.yml | 24 - .../fluidsynth/.azure-pipelines.yml | 203 - .../fluidsynth/.circleci/config.yml | 55 - singe/thirdparty/fluidsynth/.cirrus.yml | 14 - singe/thirdparty/fluidsynth/.clang-format | 61 - singe/thirdparty/fluidsynth/.clang-tidy | 54 - .../.github/ISSUE_TEMPLATE/bug_report.md | 43 - .../.github/ISSUE_TEMPLATE/feature_request.md | 38 - .../fluidsynth/.github/issue_template.md | 40 - singe/thirdparty/fluidsynth/.gitignore | 40 - singe/thirdparty/fluidsynth/.travis.yml | 70 - singe/thirdparty/fluidsynth/AUTHORS | 153 - singe/thirdparty/fluidsynth/CMakeLists.txt | 810 -- singe/thirdparty/fluidsynth/CONTRIBUTING.md | 40 - singe/thirdparty/fluidsynth/ChangeLog | 1693 ---- singe/thirdparty/fluidsynth/LICENSE | 504 -- singe/thirdparty/fluidsynth/README.cmake.md | 115 - singe/thirdparty/fluidsynth/README.md | 99 - singe/thirdparty/fluidsynth/THANKS | 42 - singe/thirdparty/fluidsynth/TODO | 70 - .../cmake_admin/CheckDIRSymbolExists.cmake | 75 - .../cmake_admin/CheckPrototypeExists.cmake | 41 - .../fluidsynth/cmake_admin/CheckSTDC.cmake | 36 - .../fluidsynth/cmake_admin/DefaultDirs.cmake | 92 - .../cmake_admin/FindMidiShare.cmake | 18 - .../fluidsynth/cmake_admin/FindOSS.cmake | 51 - .../fluidsynth/cmake_admin/FindReadline.cmake | 22 - .../cmake_admin/FluidUnitTest.cmake | 28 - .../fluidsynth/cmake_admin/TestInline.cmake | 15 - .../fluidsynth/cmake_admin/TestVLA.cmake | 9 - .../cmake_admin/UnsetPkgConfig.cmake | 14 - .../fluidsynth/cmake_admin/VersionInfo.in | 79 - .../fluidsynth/cmake_admin/VersionResource.rc | 37 - .../cmake_admin/cmake_uninstall.cmake.in | 22 - .../generate_product_version.cmake | 107 - .../fluidsynth/cmake_admin/report.cmake | 239 - .../thirdparty/fluidsynth/doc/CMakeLists.txt | 35 - singe/thirdparty/fluidsynth/doc/Doxyfile | 246 - .../thirdparty/fluidsynth/doc/Doxyfile.cmake | 246 - .../fluidsynth/doc/FluidProfile_0004.pdf | Bin 314112 -> 0 bytes .../fluidsynth/doc/FluidSostenuto-005.pdf | Bin 21440 -> 0 bytes ...Synth Thread safety paper for LAC 2011.odt | Bin 73414 -> 0 bytes singe/thirdparty/fluidsynth/doc/README | 13 - .../fluidsynth/doc/android/.gitignore | 2 - .../fluidsynth/doc/android/Makefile.android | 140 - .../fluidsynth/doc/android/README.Android.md | 38 - .../fluidsynth-assetloader/CMakeLists.txt | 18 - .../fluidsynth-assetloader/ext-build.sh | 16 - .../fluid_androidasset.c | 110 - .../fluid_androidasset.h | 45 - .../fluidsynth/doc/android/jni/Android.mk | 44 - .../fluidsynth/doc/android/jni/Application.mk | 2 - .../fluidsynth/doc/android/oboe-1.0.pc | 10 - .../fluidsynth/doc/doxy_formula.css | 12 - singe/thirdparty/fluidsynth/doc/example.c | 75 - .../fluidsynth/doc/fluidsettings.xml | 726 -- .../fluidsynth/doc/fluidsettings.xsl | 216 - .../fluidsynth/doc/fluidsynth-v20-devdoc.txt | 786 -- singe/thirdparty/fluidsynth/doc/fluidsynth.1 | 303 - .../fluidsynth/doc/fluidsynth_arpeggio.c | 175 - .../thirdparty/fluidsynth/doc/fluidsynth_fx.c | 157 - .../fluidsynth/doc/fluidsynth_metronome.c | 163 - .../fluidsynth/doc/fluidsynth_process.c | 117 - .../doc/fluidsynth_register_adriver.c | 71 - .../fluidsynth/doc/fluidsynth_sfload_mem.c | 92 - .../fluidsynth/doc/fluidsynth_simple.c | 97 - singe/thirdparty/fluidsynth/doc/ladspa.md | 483 -- .../doc/polymono/FluidPolyMono-0004.pdf | Bin 253493 -> 0 bytes .../fluidsynth/doc/polymono/leg_00.txt | 103 - .../fluidsynth/doc/polymono/leg_01.txt | 103 - .../fluidsynth/doc/polymono/leg_por_00.txt | 107 - .../fluidsynth/doc/polymono/leg_por_01.txt | 107 - .../fluidsynth/doc/polymono/poly_mono_0.txt | 8 - .../fluidsynth/doc/polymono/poly_mono_1.txt | 25 - .../fluidsynth/doc/polymono/poly_mono_2.txt | 22 - .../fluidsynth/doc/polymono/poly_mono_3.txt | 26 - .../fluidsynth/doc/polymono/poly_mono_4.txt | 25 - .../fluidsynth/doc/polymono/poly_mono_5.txt | 9 - .../fluidsynth/doc/polymono/readme.txt | 22 - .../thirdparty/fluidsynth/fluidsynth.conf.in | 5 - singe/thirdparty/fluidsynth/fluidsynth.pc.in | 10 - .../fluidsynth/fluidsynth.service.in | 15 - .../thirdparty/fluidsynth/fluidsynth.spec.in | 76 - .../fluidsynth/include/fluidsynth.cmake | 118 - .../fluidsynth/include/fluidsynth/audio.h | 79 - .../fluidsynth/include/fluidsynth/event.h | 138 - .../fluidsynth/include/fluidsynth/gen.h | 130 - .../fluidsynth/include/fluidsynth/ladspa.h | 65 - .../fluidsynth/include/fluidsynth/log.h | 91 - .../fluidsynth/include/fluidsynth/midi.h | 159 - .../fluidsynth/include/fluidsynth/misc.h | 72 - .../fluidsynth/include/fluidsynth/mod.h | 98 - .../fluidsynth/include/fluidsynth/seq.h | 79 - .../fluidsynth/include/fluidsynth/seqbind.h | 45 - .../fluidsynth/include/fluidsynth/settings.h | 188 - .../fluidsynth/include/fluidsynth/sfont.h | 314 - .../fluidsynth/include/fluidsynth/shell.h | 97 - .../fluidsynth/include/fluidsynth/synth.h | 397 - .../fluidsynth/include/fluidsynth/types.h | 71 - .../include/fluidsynth/version.h.in | 47 - .../fluidsynth/include/fluidsynth/voice.h | 72 - singe/thirdparty/fluidsynth/sf2/COPYRIGHT.txt | 20 - .../fluidsynth/sf2/VintageDreamsWaves-v2.sf2 | Bin 314640 -> 0 bytes .../thirdparty/fluidsynth/src/CMakeLists.txt | 411 - .../fluidsynth/src/bindings/fluid_cmd.c | 4487 ----------- .../fluidsynth/src/bindings/fluid_cmd.h | 162 - .../src/bindings/fluid_filerenderer.c | 584 -- .../fluidsynth/src/bindings/fluid_ladspa.c | 1853 ----- .../fluidsynth/src/bindings/fluid_ladspa.h | 36 - .../fluidsynth/src/bindings/fluid_lash.c | 170 - .../fluidsynth/src/bindings/fluid_lash.h | 41 - .../fluidsynth/src/bindings/fluid_rtkit.c | 470 -- .../fluidsynth/src/bindings/fluid_rtkit.h | 60 - singe/thirdparty/fluidsynth/src/config.cmake | 254 - .../fluidsynth/src/drivers/fluid_adriver.c | 452 -- .../fluidsynth/src/drivers/fluid_adriver.h | 155 - .../fluidsynth/src/drivers/fluid_alsa.c | 1361 ---- .../fluidsynth/src/drivers/fluid_aufile.c | 135 - .../fluidsynth/src/drivers/fluid_coreaudio.c | 427 - .../fluidsynth/src/drivers/fluid_coremidi.c | 281 - .../fluidsynth/src/drivers/fluid_dart.c | 263 - .../fluidsynth/src/drivers/fluid_dsound.c | 493 -- .../fluidsynth/src/drivers/fluid_jack.c | 890 --- .../fluidsynth/src/drivers/fluid_mdriver.c | 193 - .../fluidsynth/src/drivers/fluid_mdriver.h | 100 - .../fluidsynth/src/drivers/fluid_midishare.c | 445 -- .../fluidsynth/src/drivers/fluid_oboe.cpp | 225 - .../fluidsynth/src/drivers/fluid_opensles.c | 335 - .../fluidsynth/src/drivers/fluid_oss.c | 786 -- .../fluidsynth/src/drivers/fluid_portaudio.c | 398 - .../fluidsynth/src/drivers/fluid_pulse.c | 309 - .../fluidsynth/src/drivers/fluid_sdl2.c | 251 - .../fluidsynth/src/drivers/fluid_sndmgr.c | 368 - .../fluidsynth/src/drivers/fluid_waveout.c | 384 - .../fluidsynth/src/drivers/fluid_winmidi.c | 394 - singe/thirdparty/fluidsynth/src/fluidsynth.c | 1179 --- .../fluidsynth/src/gentables/CMakeLists.txt | 36 - .../fluidsynth/src/gentables/gen_conv.c | 84 - .../fluidsynth/src/gentables/gen_rvoice_dsp.c | 81 - .../fluidsynth/src/gentables/make_tables.c | 84 - .../fluidsynth/src/gentables/make_tables.h | 26 - .../fluidsynth/src/midi/fluid_midi.c | 2506 ------ .../fluidsynth/src/midi/fluid_midi.h | 350 - .../fluidsynth/src/midi/fluid_midi_router.c | 916 --- .../fluidsynth/src/midi/fluid_midi_router.h | 32 - .../fluidsynth/src/midi/fluid_seq.c | 1407 ---- .../fluidsynth/src/midi/fluid_seqbind.c | 361 - .../fluidsynth/src/rvoice/fluid_adsr_env.c | 39 - .../fluidsynth/src/rvoice/fluid_adsr_env.h | 168 - .../fluidsynth/src/rvoice/fluid_chorus.c | 1004 --- .../fluidsynth/src/rvoice/fluid_chorus.h | 64 - .../fluidsynth/src/rvoice/fluid_iir_filter.c | 419 - .../fluidsynth/src/rvoice/fluid_iir_filter.h | 75 - .../fluidsynth/src/rvoice/fluid_lfo.c | 17 - .../fluidsynth/src/rvoice/fluid_lfo.h | 75 - .../fluidsynth/src/rvoice/fluid_phase.h | 113 - .../fluidsynth/src/rvoice/fluid_rev.c | 1479 ---- .../fluidsynth/src/rvoice/fluid_rev.h | 77 - .../fluidsynth/src/rvoice/fluid_rvoice.c | 936 --- .../fluidsynth/src/rvoice/fluid_rvoice.h | 225 - .../fluidsynth/src/rvoice/fluid_rvoice_dsp.c | 636 -- .../src/rvoice/fluid_rvoice_dsp_tables.h | 8 - .../src/rvoice/fluid_rvoice_event.c | 199 - .../src/rvoice/fluid_rvoice_event.h | 114 - .../src/rvoice/fluid_rvoice_mixer.c | 1396 ---- .../src/rvoice/fluid_rvoice_mixer.h | 66 - .../fluidsynth/src/sfloader/fluid_defsfont.c | 2175 ----- .../fluidsynth/src/sfloader/fluid_defsfont.h | 231 - .../fluidsynth/src/sfloader/fluid_instpatch.c | 683 -- .../fluidsynth/src/sfloader/fluid_instpatch.h | 11 - .../src/sfloader/fluid_samplecache.c | 292 - .../src/sfloader/fluid_samplecache.h | 34 - .../fluidsynth/src/sfloader/fluid_sffile.c | 2670 ------- .../fluidsynth/src/sfloader/fluid_sffile.h | 230 - .../fluidsynth/src/sfloader/fluid_sfont.c | 800 -- .../fluidsynth/src/sfloader/fluid_sfont.h | 189 - .../fluidsynth/src/synth/fluid_chan.c | 711 -- .../fluidsynth/src/synth/fluid_chan.h | 275 - .../fluidsynth/src/synth/fluid_event.c | 913 --- .../fluidsynth/src/synth/fluid_event.h | 87 - .../fluidsynth/src/synth/fluid_gen.c | 124 - .../fluidsynth/src/synth/fluid_gen.h | 65 - .../fluidsynth/src/synth/fluid_mod.c | 864 -- .../fluidsynth/src/synth/fluid_mod.h | 54 - .../fluidsynth/src/synth/fluid_synth.c | 7087 ----------------- .../fluidsynth/src/synth/fluid_synth.h | 242 - .../src/synth/fluid_synth_monopoly.c | 722 -- .../fluidsynth/src/synth/fluid_tuning.c | 190 - .../fluidsynth/src/synth/fluid_tuning.h | 69 - .../fluidsynth/src/synth/fluid_voice.c | 1992 ----- .../fluidsynth/src/synth/fluid_voice.h | 197 - .../fluidsynth/src/utils/fluid_conv.c | 330 - .../fluidsynth/src/utils/fluid_conv.h | 40 - .../fluidsynth/src/utils/fluid_conv_tables.h | 41 - .../fluidsynth/src/utils/fluid_hash.c | 1407 ---- .../fluidsynth/src/utils/fluid_hash.h | 131 - .../fluidsynth/src/utils/fluid_list.c | 321 - .../fluidsynth/src/utils/fluid_list.h | 62 - .../fluidsynth/src/utils/fluid_ringbuffer.c | 90 - .../fluidsynth/src/utils/fluid_ringbuffer.h | 133 - .../fluidsynth/src/utils/fluid_settings.c | 1947 ----- .../fluidsynth/src/utils/fluid_settings.h | 55 - .../fluidsynth/src/utils/fluid_sys.c | 1670 ---- .../fluidsynth/src/utils/fluid_sys.h | 753 -- .../fluidsynth/src/utils/fluidsynth_priv.h | 313 - .../thirdparty/fluidsynth/test/CMakeLists.txt | 23 - singe/thirdparty/fluidsynth/test/README.md | 20 - singe/thirdparty/fluidsynth/test/test.h | 29 - singe/thirdparty/fluidsynth/test/test_ct2hz.c | 40 - .../fluidsynth/test/test_pointer_alignment.c | 31 - .../test/test_preset_sample_loading.c | 95 - .../fluidsynth/test/test_sample_cache.c | 42 - .../fluidsynth/test/test_sample_rate_change.c | 66 - .../fluidsynth/test/test_seqbind_unregister.c | 30 - .../fluidsynth/test/test_sf3_sfont_loading.c | 70 - .../fluidsynth/test/test_sfont_loading.c | 67 - .../fluidsynth/test/test_snprintf.c | 23 - .../test/test_synth_chorus_reverb.c | 62 - .../fluidsynth/test/test_synth_process.c | 133 - 226 files changed, 49 insertions(+), 72891 deletions(-) delete mode 100644 singe/thirdparty/fluidsynth/.appveyor-vcpkg.yml delete mode 100644 singe/thirdparty/fluidsynth/.azure-pipelines-mac.yml delete mode 100644 singe/thirdparty/fluidsynth/.azure-pipelines.yml delete mode 100644 singe/thirdparty/fluidsynth/.circleci/config.yml delete mode 100644 singe/thirdparty/fluidsynth/.cirrus.yml delete mode 100644 singe/thirdparty/fluidsynth/.clang-format delete mode 100644 singe/thirdparty/fluidsynth/.clang-tidy delete mode 100644 singe/thirdparty/fluidsynth/.github/ISSUE_TEMPLATE/bug_report.md delete mode 100644 singe/thirdparty/fluidsynth/.github/ISSUE_TEMPLATE/feature_request.md delete mode 100644 singe/thirdparty/fluidsynth/.github/issue_template.md delete mode 100644 singe/thirdparty/fluidsynth/.gitignore delete mode 100644 singe/thirdparty/fluidsynth/.travis.yml delete mode 100644 singe/thirdparty/fluidsynth/AUTHORS delete mode 100644 singe/thirdparty/fluidsynth/CMakeLists.txt delete mode 100644 singe/thirdparty/fluidsynth/CONTRIBUTING.md delete mode 100644 singe/thirdparty/fluidsynth/ChangeLog delete mode 100644 singe/thirdparty/fluidsynth/LICENSE delete mode 100644 singe/thirdparty/fluidsynth/README.cmake.md delete mode 100644 singe/thirdparty/fluidsynth/README.md delete mode 100644 singe/thirdparty/fluidsynth/THANKS delete mode 100644 singe/thirdparty/fluidsynth/TODO delete mode 100644 singe/thirdparty/fluidsynth/cmake_admin/CheckDIRSymbolExists.cmake delete mode 100644 singe/thirdparty/fluidsynth/cmake_admin/CheckPrototypeExists.cmake delete mode 100644 singe/thirdparty/fluidsynth/cmake_admin/CheckSTDC.cmake delete mode 100644 singe/thirdparty/fluidsynth/cmake_admin/DefaultDirs.cmake delete mode 100644 singe/thirdparty/fluidsynth/cmake_admin/FindMidiShare.cmake delete mode 100644 singe/thirdparty/fluidsynth/cmake_admin/FindOSS.cmake delete mode 100644 singe/thirdparty/fluidsynth/cmake_admin/FindReadline.cmake delete mode 100644 singe/thirdparty/fluidsynth/cmake_admin/FluidUnitTest.cmake delete mode 100644 singe/thirdparty/fluidsynth/cmake_admin/TestInline.cmake delete mode 100644 singe/thirdparty/fluidsynth/cmake_admin/TestVLA.cmake delete mode 100644 singe/thirdparty/fluidsynth/cmake_admin/UnsetPkgConfig.cmake delete mode 100644 singe/thirdparty/fluidsynth/cmake_admin/VersionInfo.in delete mode 100644 singe/thirdparty/fluidsynth/cmake_admin/VersionResource.rc delete mode 100644 singe/thirdparty/fluidsynth/cmake_admin/cmake_uninstall.cmake.in delete mode 100644 singe/thirdparty/fluidsynth/cmake_admin/generate_product_version.cmake delete mode 100644 singe/thirdparty/fluidsynth/cmake_admin/report.cmake delete mode 100644 singe/thirdparty/fluidsynth/doc/CMakeLists.txt delete mode 100644 singe/thirdparty/fluidsynth/doc/Doxyfile delete mode 100644 singe/thirdparty/fluidsynth/doc/Doxyfile.cmake delete mode 100644 singe/thirdparty/fluidsynth/doc/FluidProfile_0004.pdf delete mode 100644 singe/thirdparty/fluidsynth/doc/FluidSostenuto-005.pdf delete mode 100644 singe/thirdparty/fluidsynth/doc/FluidSynth Thread safety paper for LAC 2011.odt delete mode 100644 singe/thirdparty/fluidsynth/doc/README delete mode 100644 singe/thirdparty/fluidsynth/doc/android/.gitignore delete mode 100644 singe/thirdparty/fluidsynth/doc/android/Makefile.android delete mode 100644 singe/thirdparty/fluidsynth/doc/android/README.Android.md delete mode 100644 singe/thirdparty/fluidsynth/doc/android/fluidsynth-assetloader/CMakeLists.txt delete mode 100755 singe/thirdparty/fluidsynth/doc/android/fluidsynth-assetloader/ext-build.sh delete mode 100644 singe/thirdparty/fluidsynth/doc/android/fluidsynth-assetloader/fluid_androidasset.c delete mode 100644 singe/thirdparty/fluidsynth/doc/android/fluidsynth-assetloader/fluid_androidasset.h delete mode 100644 singe/thirdparty/fluidsynth/doc/android/jni/Android.mk delete mode 100644 singe/thirdparty/fluidsynth/doc/android/jni/Application.mk delete mode 100644 singe/thirdparty/fluidsynth/doc/android/oboe-1.0.pc delete mode 100644 singe/thirdparty/fluidsynth/doc/doxy_formula.css delete mode 100644 singe/thirdparty/fluidsynth/doc/example.c delete mode 100644 singe/thirdparty/fluidsynth/doc/fluidsettings.xml delete mode 100644 singe/thirdparty/fluidsynth/doc/fluidsettings.xsl delete mode 100644 singe/thirdparty/fluidsynth/doc/fluidsynth-v20-devdoc.txt delete mode 100644 singe/thirdparty/fluidsynth/doc/fluidsynth.1 delete mode 100644 singe/thirdparty/fluidsynth/doc/fluidsynth_arpeggio.c delete mode 100644 singe/thirdparty/fluidsynth/doc/fluidsynth_fx.c delete mode 100644 singe/thirdparty/fluidsynth/doc/fluidsynth_metronome.c delete mode 100644 singe/thirdparty/fluidsynth/doc/fluidsynth_process.c delete mode 100644 singe/thirdparty/fluidsynth/doc/fluidsynth_register_adriver.c delete mode 100644 singe/thirdparty/fluidsynth/doc/fluidsynth_sfload_mem.c delete mode 100644 singe/thirdparty/fluidsynth/doc/fluidsynth_simple.c delete mode 100644 singe/thirdparty/fluidsynth/doc/ladspa.md delete mode 100644 singe/thirdparty/fluidsynth/doc/polymono/FluidPolyMono-0004.pdf delete mode 100644 singe/thirdparty/fluidsynth/doc/polymono/leg_00.txt delete mode 100644 singe/thirdparty/fluidsynth/doc/polymono/leg_01.txt delete mode 100644 singe/thirdparty/fluidsynth/doc/polymono/leg_por_00.txt delete mode 100644 singe/thirdparty/fluidsynth/doc/polymono/leg_por_01.txt delete mode 100644 singe/thirdparty/fluidsynth/doc/polymono/poly_mono_0.txt delete mode 100644 singe/thirdparty/fluidsynth/doc/polymono/poly_mono_1.txt delete mode 100644 singe/thirdparty/fluidsynth/doc/polymono/poly_mono_2.txt delete mode 100644 singe/thirdparty/fluidsynth/doc/polymono/poly_mono_3.txt delete mode 100644 singe/thirdparty/fluidsynth/doc/polymono/poly_mono_4.txt delete mode 100644 singe/thirdparty/fluidsynth/doc/polymono/poly_mono_5.txt delete mode 100644 singe/thirdparty/fluidsynth/doc/polymono/readme.txt delete mode 100644 singe/thirdparty/fluidsynth/fluidsynth.conf.in delete mode 100644 singe/thirdparty/fluidsynth/fluidsynth.pc.in delete mode 100644 singe/thirdparty/fluidsynth/fluidsynth.service.in delete mode 100644 singe/thirdparty/fluidsynth/fluidsynth.spec.in delete mode 100644 singe/thirdparty/fluidsynth/include/fluidsynth.cmake delete mode 100644 singe/thirdparty/fluidsynth/include/fluidsynth/audio.h delete mode 100644 singe/thirdparty/fluidsynth/include/fluidsynth/event.h delete mode 100644 singe/thirdparty/fluidsynth/include/fluidsynth/gen.h delete mode 100644 singe/thirdparty/fluidsynth/include/fluidsynth/ladspa.h delete mode 100644 singe/thirdparty/fluidsynth/include/fluidsynth/log.h delete mode 100644 singe/thirdparty/fluidsynth/include/fluidsynth/midi.h delete mode 100644 singe/thirdparty/fluidsynth/include/fluidsynth/misc.h delete mode 100644 singe/thirdparty/fluidsynth/include/fluidsynth/mod.h delete mode 100644 singe/thirdparty/fluidsynth/include/fluidsynth/seq.h delete mode 100644 singe/thirdparty/fluidsynth/include/fluidsynth/seqbind.h delete mode 100644 singe/thirdparty/fluidsynth/include/fluidsynth/settings.h delete mode 100644 singe/thirdparty/fluidsynth/include/fluidsynth/sfont.h delete mode 100644 singe/thirdparty/fluidsynth/include/fluidsynth/shell.h delete mode 100644 singe/thirdparty/fluidsynth/include/fluidsynth/synth.h delete mode 100644 singe/thirdparty/fluidsynth/include/fluidsynth/types.h delete mode 100644 singe/thirdparty/fluidsynth/include/fluidsynth/version.h.in delete mode 100644 singe/thirdparty/fluidsynth/include/fluidsynth/voice.h delete mode 100644 singe/thirdparty/fluidsynth/sf2/COPYRIGHT.txt delete mode 100644 singe/thirdparty/fluidsynth/sf2/VintageDreamsWaves-v2.sf2 delete mode 100644 singe/thirdparty/fluidsynth/src/CMakeLists.txt delete mode 100644 singe/thirdparty/fluidsynth/src/bindings/fluid_cmd.c delete mode 100644 singe/thirdparty/fluidsynth/src/bindings/fluid_cmd.h delete mode 100644 singe/thirdparty/fluidsynth/src/bindings/fluid_filerenderer.c delete mode 100644 singe/thirdparty/fluidsynth/src/bindings/fluid_ladspa.c delete mode 100644 singe/thirdparty/fluidsynth/src/bindings/fluid_ladspa.h delete mode 100644 singe/thirdparty/fluidsynth/src/bindings/fluid_lash.c delete mode 100644 singe/thirdparty/fluidsynth/src/bindings/fluid_lash.h delete mode 100644 singe/thirdparty/fluidsynth/src/bindings/fluid_rtkit.c delete mode 100644 singe/thirdparty/fluidsynth/src/bindings/fluid_rtkit.h delete mode 100644 singe/thirdparty/fluidsynth/src/config.cmake delete mode 100644 singe/thirdparty/fluidsynth/src/drivers/fluid_adriver.c delete mode 100644 singe/thirdparty/fluidsynth/src/drivers/fluid_adriver.h delete mode 100644 singe/thirdparty/fluidsynth/src/drivers/fluid_alsa.c delete mode 100644 singe/thirdparty/fluidsynth/src/drivers/fluid_aufile.c delete mode 100644 singe/thirdparty/fluidsynth/src/drivers/fluid_coreaudio.c delete mode 100644 singe/thirdparty/fluidsynth/src/drivers/fluid_coremidi.c delete mode 100644 singe/thirdparty/fluidsynth/src/drivers/fluid_dart.c delete mode 100644 singe/thirdparty/fluidsynth/src/drivers/fluid_dsound.c delete mode 100644 singe/thirdparty/fluidsynth/src/drivers/fluid_jack.c delete mode 100644 singe/thirdparty/fluidsynth/src/drivers/fluid_mdriver.c delete mode 100644 singe/thirdparty/fluidsynth/src/drivers/fluid_mdriver.h delete mode 100644 singe/thirdparty/fluidsynth/src/drivers/fluid_midishare.c delete mode 100644 singe/thirdparty/fluidsynth/src/drivers/fluid_oboe.cpp delete mode 100644 singe/thirdparty/fluidsynth/src/drivers/fluid_opensles.c delete mode 100644 singe/thirdparty/fluidsynth/src/drivers/fluid_oss.c delete mode 100644 singe/thirdparty/fluidsynth/src/drivers/fluid_portaudio.c delete mode 100644 singe/thirdparty/fluidsynth/src/drivers/fluid_pulse.c delete mode 100644 singe/thirdparty/fluidsynth/src/drivers/fluid_sdl2.c delete mode 100644 singe/thirdparty/fluidsynth/src/drivers/fluid_sndmgr.c delete mode 100644 singe/thirdparty/fluidsynth/src/drivers/fluid_waveout.c delete mode 100644 singe/thirdparty/fluidsynth/src/drivers/fluid_winmidi.c delete mode 100644 singe/thirdparty/fluidsynth/src/fluidsynth.c delete mode 100644 singe/thirdparty/fluidsynth/src/gentables/CMakeLists.txt delete mode 100644 singe/thirdparty/fluidsynth/src/gentables/gen_conv.c delete mode 100644 singe/thirdparty/fluidsynth/src/gentables/gen_rvoice_dsp.c delete mode 100644 singe/thirdparty/fluidsynth/src/gentables/make_tables.c delete mode 100644 singe/thirdparty/fluidsynth/src/gentables/make_tables.h delete mode 100644 singe/thirdparty/fluidsynth/src/midi/fluid_midi.c delete mode 100644 singe/thirdparty/fluidsynth/src/midi/fluid_midi.h delete mode 100644 singe/thirdparty/fluidsynth/src/midi/fluid_midi_router.c delete mode 100644 singe/thirdparty/fluidsynth/src/midi/fluid_midi_router.h delete mode 100644 singe/thirdparty/fluidsynth/src/midi/fluid_seq.c delete mode 100644 singe/thirdparty/fluidsynth/src/midi/fluid_seqbind.c delete mode 100644 singe/thirdparty/fluidsynth/src/rvoice/fluid_adsr_env.c delete mode 100644 singe/thirdparty/fluidsynth/src/rvoice/fluid_adsr_env.h delete mode 100644 singe/thirdparty/fluidsynth/src/rvoice/fluid_chorus.c delete mode 100644 singe/thirdparty/fluidsynth/src/rvoice/fluid_chorus.h delete mode 100644 singe/thirdparty/fluidsynth/src/rvoice/fluid_iir_filter.c delete mode 100644 singe/thirdparty/fluidsynth/src/rvoice/fluid_iir_filter.h delete mode 100644 singe/thirdparty/fluidsynth/src/rvoice/fluid_lfo.c delete mode 100644 singe/thirdparty/fluidsynth/src/rvoice/fluid_lfo.h delete mode 100644 singe/thirdparty/fluidsynth/src/rvoice/fluid_phase.h delete mode 100644 singe/thirdparty/fluidsynth/src/rvoice/fluid_rev.c delete mode 100644 singe/thirdparty/fluidsynth/src/rvoice/fluid_rev.h delete mode 100644 singe/thirdparty/fluidsynth/src/rvoice/fluid_rvoice.c delete mode 100644 singe/thirdparty/fluidsynth/src/rvoice/fluid_rvoice.h delete mode 100644 singe/thirdparty/fluidsynth/src/rvoice/fluid_rvoice_dsp.c delete mode 100644 singe/thirdparty/fluidsynth/src/rvoice/fluid_rvoice_dsp_tables.h delete mode 100644 singe/thirdparty/fluidsynth/src/rvoice/fluid_rvoice_event.c delete mode 100644 singe/thirdparty/fluidsynth/src/rvoice/fluid_rvoice_event.h delete mode 100644 singe/thirdparty/fluidsynth/src/rvoice/fluid_rvoice_mixer.c delete mode 100644 singe/thirdparty/fluidsynth/src/rvoice/fluid_rvoice_mixer.h delete mode 100644 singe/thirdparty/fluidsynth/src/sfloader/fluid_defsfont.c delete mode 100644 singe/thirdparty/fluidsynth/src/sfloader/fluid_defsfont.h delete mode 100644 singe/thirdparty/fluidsynth/src/sfloader/fluid_instpatch.c delete mode 100644 singe/thirdparty/fluidsynth/src/sfloader/fluid_instpatch.h delete mode 100644 singe/thirdparty/fluidsynth/src/sfloader/fluid_samplecache.c delete mode 100644 singe/thirdparty/fluidsynth/src/sfloader/fluid_samplecache.h delete mode 100644 singe/thirdparty/fluidsynth/src/sfloader/fluid_sffile.c delete mode 100644 singe/thirdparty/fluidsynth/src/sfloader/fluid_sffile.h delete mode 100644 singe/thirdparty/fluidsynth/src/sfloader/fluid_sfont.c delete mode 100644 singe/thirdparty/fluidsynth/src/sfloader/fluid_sfont.h delete mode 100644 singe/thirdparty/fluidsynth/src/synth/fluid_chan.c delete mode 100644 singe/thirdparty/fluidsynth/src/synth/fluid_chan.h delete mode 100644 singe/thirdparty/fluidsynth/src/synth/fluid_event.c delete mode 100644 singe/thirdparty/fluidsynth/src/synth/fluid_event.h delete mode 100644 singe/thirdparty/fluidsynth/src/synth/fluid_gen.c delete mode 100644 singe/thirdparty/fluidsynth/src/synth/fluid_gen.h delete mode 100644 singe/thirdparty/fluidsynth/src/synth/fluid_mod.c delete mode 100644 singe/thirdparty/fluidsynth/src/synth/fluid_mod.h delete mode 100644 singe/thirdparty/fluidsynth/src/synth/fluid_synth.c delete mode 100644 singe/thirdparty/fluidsynth/src/synth/fluid_synth.h delete mode 100644 singe/thirdparty/fluidsynth/src/synth/fluid_synth_monopoly.c delete mode 100644 singe/thirdparty/fluidsynth/src/synth/fluid_tuning.c delete mode 100644 singe/thirdparty/fluidsynth/src/synth/fluid_tuning.h delete mode 100644 singe/thirdparty/fluidsynth/src/synth/fluid_voice.c delete mode 100644 singe/thirdparty/fluidsynth/src/synth/fluid_voice.h delete mode 100644 singe/thirdparty/fluidsynth/src/utils/fluid_conv.c delete mode 100644 singe/thirdparty/fluidsynth/src/utils/fluid_conv.h delete mode 100644 singe/thirdparty/fluidsynth/src/utils/fluid_conv_tables.h delete mode 100644 singe/thirdparty/fluidsynth/src/utils/fluid_hash.c delete mode 100644 singe/thirdparty/fluidsynth/src/utils/fluid_hash.h delete mode 100644 singe/thirdparty/fluidsynth/src/utils/fluid_list.c delete mode 100644 singe/thirdparty/fluidsynth/src/utils/fluid_list.h delete mode 100644 singe/thirdparty/fluidsynth/src/utils/fluid_ringbuffer.c delete mode 100644 singe/thirdparty/fluidsynth/src/utils/fluid_ringbuffer.h delete mode 100644 singe/thirdparty/fluidsynth/src/utils/fluid_settings.c delete mode 100644 singe/thirdparty/fluidsynth/src/utils/fluid_settings.h delete mode 100644 singe/thirdparty/fluidsynth/src/utils/fluid_sys.c delete mode 100644 singe/thirdparty/fluidsynth/src/utils/fluid_sys.h delete mode 100644 singe/thirdparty/fluidsynth/src/utils/fluidsynth_priv.h delete mode 100644 singe/thirdparty/fluidsynth/test/CMakeLists.txt delete mode 100644 singe/thirdparty/fluidsynth/test/README.md delete mode 100644 singe/thirdparty/fluidsynth/test/test.h delete mode 100644 singe/thirdparty/fluidsynth/test/test_ct2hz.c delete mode 100644 singe/thirdparty/fluidsynth/test/test_pointer_alignment.c delete mode 100644 singe/thirdparty/fluidsynth/test/test_preset_sample_loading.c delete mode 100644 singe/thirdparty/fluidsynth/test/test_sample_cache.c delete mode 100644 singe/thirdparty/fluidsynth/test/test_sample_rate_change.c delete mode 100644 singe/thirdparty/fluidsynth/test/test_seqbind_unregister.c delete mode 100644 singe/thirdparty/fluidsynth/test/test_sf3_sfont_loading.c delete mode 100644 singe/thirdparty/fluidsynth/test/test_sfont_loading.c delete mode 100644 singe/thirdparty/fluidsynth/test/test_snprintf.c delete mode 100644 singe/thirdparty/fluidsynth/test/test_synth_chorus_reverb.c delete mode 100644 singe/thirdparty/fluidsynth/test/test_synth_process.c diff --git a/.gitignore b/.gitignore index 520d790c4..a97aa9198 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ *~ +*.log *.user *.ISO *.iso diff --git a/singe/main.c b/singe/main.c index 7bad1f619..b4832ecbc 100644 --- a/singe/main.c +++ b/singe/main.c @@ -57,13 +57,13 @@ int main(int argc, char *argv[]) { err = SDL_Init(SDL_INIT_EVERYTHING); if (err != 0) utilDie("%s", SDL_GetError()); - // Init SDL_mixer - flags = MIX_INIT_FLAC | MIX_INIT_MOD | MIX_INIT_MP3 | MIX_INIT_OGG | MIX_INIT_MID | MIX_INIT_OPUS; + // Init SDL_mixer ***FIX*** + flags = /* MIX_INIT_FLAC | */ MIX_INIT_MOD | MIX_INIT_MP3 | MIX_INIT_OGG | MIX_INIT_MID | MIX_INIT_OPUS; err = Mix_Init(flags); if (err != flags) utilDie("%s", Mix_GetError()); - // Init SDL_image - flags = IMG_INIT_JPG | IMG_INIT_PNG /* | IMG_INIT_TIF */ | IMG_INIT_WEBP; //***FIX*** + // Init SDL_image ***FIX*** + flags = IMG_INIT_JPG | IMG_INIT_PNG | /* IMG_INIT_TIF | */ IMG_INIT_WEBP; err = IMG_Init(flags); if (err != flags) utilDie("%s", IMG_GetError()); diff --git a/singe/preBuild.sh b/singe/preBuild.sh index 58567b150..37566dc32 100755 --- a/singe/preBuild.sh +++ b/singe/preBuild.sh @@ -31,6 +31,7 @@ else fi G_INSTALLED="${G_DEST}/installed" +G_L="-------------------------------------------------------------------------------" function autoBuild() { @@ -39,6 +40,9 @@ function autoBuild() { local OPTIONS=$3 # Additional configure options if [[ ! -e "${G_INSTALLED}/lib/${LOOKFOR}" ]]; then + echo ${G_L} + echo "Building ${LOOKFOR} from ${LOCATION}" + echo ${G_L} pushd "${G_THIRDPARTY}/${LOCATION}" if [[ -e autogen.sh ]]; then ./autogen.sh || true @@ -49,13 +53,20 @@ function autoBuild() { popd mkdir -p "${G_DEST}/${LOCATION}" pushd "${G_DEST}/${LOCATION}" - CFLAGS="-I${G_INSTALLED}/include" \ - CXXFLAGS="-I${G_INSTALLED}/include" \ - LDFLAGS="-L${G_INSTALLED}/lib -L${G_INSTALLED}/lib64" \ - "${G_THIRDPARTY}/${LOCATION}/configure" --enable-static --disable-shared --prefix="${G_INSTALLED}" ${OPTIONS} - if [[ "${OPTIONS}x" != "--helpx" ]]; then + PKG_CONFIG_LIBDIR="${G_INSTALLED}/lib/pkgconfig" \ + CFLAGS="-I${G_INSTALLED}/include ${MORE_CFLAGS}" \ + CXXFLAGS="-I${G_INSTALLED}/include ${MORE_CFLAGS}" \ + LDFLAGS="-L${G_INSTALLED}/lib ${MORE_LIBS}" \ + "${G_THIRDPARTY}/${LOCATION}/configure" \ + --enable-static \ + --disable-shared \ + --prefix="${G_INSTALLED}" ${OPTIONS} + if [[ ${OPTIONS} != --help* && ${OPTIONS} != *--help ]]; then make make install + else + popd + exit 1 fi popd fi @@ -64,6 +75,9 @@ function autoBuild() { # === zlib === if [[ ! -e "${G_INSTALLED}/lib/libz.a" ]]; then + echo ${G_L} + echo "Building libz.a from zlib" + echo ${G_L} mkdir -p "${G_DEST}/zlib" pushd "${G_DEST}/zlib" "${G_THIRDPARTY}/zlib/configure" --static --prefix="${G_INSTALLED}" @@ -74,6 +88,9 @@ fi # === BZip2 === if [[ ! -e "${G_INSTALLED}/lib/libbz2.a" ]]; then + echo ${G_L} + echo "Building libbz2.a from bzip2" + echo ${G_L} mkdir -p "${G_DEST}/bzip2" pushd "${G_DEST}/bzip2" cp -fr "${G_THIRDPARTY}/bzip2/." . @@ -83,6 +100,9 @@ fi # === Lua === if [[ ! -e "${G_INSTALLED}/lib/liblua.a" ]]; then + echo ${G_L} + echo "Building liblua.a from lua" + echo ${G_L} mkdir -p "${G_DEST}/lua" pushd "${G_DEST}/lua" cp -fr "${G_THIRDPARTY}/lua/." . @@ -91,11 +111,11 @@ if [[ ! -e "${G_INSTALLED}/lib/liblua.a" ]]; then popd fi -# === XZ Utils === -autoBuild liblzma.a xz - # === JBIG === if [[ ! -e "${G_INSTALLED}/lib/libjbig.a" ]]; then + echo ${G_L} + echo "Building libjbig.a from jbig" + echo ${G_L} mkdir -p "${G_DEST}/SDL2_image/jbig" pushd "${G_DEST}/SDL2_image/jbig" cp -fr "${G_THIRDPARTY}/jbigkit/." . @@ -105,6 +125,9 @@ if [[ ! -e "${G_INSTALLED}/lib/libjbig.a" ]]; then popd fi +# === XZ Utils === +autoBuild liblzma.a xz + # === TIFF === autoBuild libtiff.a SDL2_image/external/tiff-4.1.0 @@ -138,17 +161,7 @@ autoBuild libopus.a SDL2_mixer/external/opus-1.3.1 # === OpusFile === DEPS_CFLAGS="-I${G_INSTALLED}/include -I${G_INSTALLED}/include/opus" \ DEPS_LIBS="-L${G_INSTALLED}/lib -logg -lopus" \ - autoBuild libopusfile.a SDL2_mixer/external/opusfile-0.11 - -# === FluidSynth === *** Not finding the ENABLE-SDL2 option *** -if [[ ! -e "${G_INSTALLED}/lib64/libfluidsynth.a" ]]; then - mkdir -p "${G_DEST}/fluidsynth" - pushd "${G_DEST}/fluidsynth" - cmake "${G_THIRDPARTY}/fluidsynth/." -DBUILD_SHARED_LIBS=OFF -DCMAKE_INSTALL_PREFIX="${G_INSTALLED}" -DENABLE-SDL2=ON - make - make install - popd -fi + autoBuild libopusfile.a SDL2_mixer/external/opusfile-0.11 --disable-http # === FFMPEG === autoBuild libavcodec.a ffmpeg "--disable-debug --disable-muxers --disable-encoders --disable-filters --disable-hwaccels --disable-network --disable-devices --disable-programs --enable-gpl" @@ -157,12 +170,12 @@ autoBuild libavcodec.a ffmpeg "--disable-debug --disable-muxers --disable-encode FFMPEG_LIBS="-L${G_INSTALLED}/lib -l:libavformat.a -l:libavcodec.a -l:libswscale.a -l:libavutil.a -l:libswresample.a -l:libz.a -l:liblzma.a -l:libbz2.a -lpthread -lXv -lX11 -lXext -lm" \ autoBuild libffms2.a ffms2 +# === FreeType 2 === +autoBuild libfreetype.a freetype2 --without-harfbuzz + # === Harfbuzz === autoBuild libharfbuzz.a harfbuzz "--with-glib=no --with-icu=builtin --with-cairo=no --with-fontconfig=no --with-freetype=yes" -# === FreeType 2 === -autoBuild libfreetype.a freetype2 - # === SDL2 === autoBuild libSDL2.a SDL2 @@ -170,107 +183,10 @@ autoBuild libSDL2.a SDL2 autoBuild libSDL2_image.a SDL2_image "--disable-jpg-shared --disable-png-shared --disable-tif-shared --disable-webp-shared" # === SDL2_mixer === -autoBuild libSDL2_mixer.a SDL2_mixer "--disable-music-ogg-shared --disable-music-flac-shared --disable-music-mod-modplug-shared --disable-music-mp3-mpg123-shared --disable-music-opus-shared" +LIBS="-lm" \ + MORE_LIBS="-lstdc++" \ + autoBuild libSDL2_mixer.a SDL2_mixer "--disable-music-midi-fluidsynth --disable-music-ogg-shared --disable-music-flac-shared --disable-music-mod-modplug-shared --disable-music-mp3-mpg123-shared --disable-music-opus-shared" # === SDL2_ttf === -autoBuild libSDL2_ttf.a SDL2_ttf "--with-ft-prefix=\"${G_INSTALLED}\" --with-sdl-prefix=\"${G_INSTALLED}\"" - - -:< NUL || exit -1 - 7z x -aos -- libsndfile-dev.zip > NUL || exit -1 - REM need to fix the naming of libsndfile otherwise the linker won't find it - mv lib\libsndfile-1.lib lib\sndfile.lib || exit -1 - mv lib\libsndfile-1.def lib\sndfile.def || exit -1 - cd $(Build.ArtifactStagingDirectory)\libinstpatch-$(platform) - cp -rf * d:\deps\ - mv -f * .. - cd .. - rmdir $(Build.ArtifactStagingDirectory)\libinstpatch-$(platform)\ - displayName: 'Prerequisites' - - script: | - @ECHO ON - SET "PATH=d:\deps\bin;%PATH%" - pkg-config --list-all - mkdir build && cd build || exit -1 - cmake -A $(platform) -T $(toolset) -DCMAKE_INSTALL_PREFIX=$(Build.ArtifactStagingDirectory) -Denable-readline=0 -Denable-floats=1 -DCMAKE_BUILD_TYPE=Release -DCMAKE_VERBOSE_MAKEFILE=1 -DNO_GUI=1 .. || exit -1 - cmake --build . --config Release || exit -1 - displayName: 'Compile fluidsynth' - - script: | - @ECHO ON - SET "PATH=d:\deps\bin;%PATH%" - cd build || exit -1 - cmake --build . --config Release --target check || exit -1 - displayName: 'Execute Unittests' - - script: | - @ECHO ON - cd build - cmake --build . --config Release --target install || exit -1 - del $(Build.ArtifactStagingDirectory)\bin\concrt*.dll - del $(Build.ArtifactStagingDirectory)\bin\vcruntime*.dll - del $(Build.ArtifactStagingDirectory)\bin\msvcp*.dll - del $(Build.ArtifactStagingDirectory)\lib\libinstpatch*.lib - del $(Build.ArtifactStagingDirectory)\lib\pkgconfig\libinstpatch*.pc - rd $(Build.ArtifactStagingDirectory)\include\libinstpatch-1 /s /q - displayName: 'Copy Artifacts' - - task: PublishBuildArtifacts@1 - inputs: - pathtoPublish: $(Build.ArtifactStagingDirectory) - artifactName: $(artifact-prefix)-$(platform) - -- job: WindowsCI - strategy: - matrix: - default: - CMAKE_FLAGS: - CMAKE_CONFIG: Release - gtk-bundle: $(gtk-bundle-x64) - libsndfile-url: $(libsndfile-url-x64) - debug_prof: - CMAKE_FLAGS: -Denable-profiling=1 -Denable-trap-on-fpe=1 -Denable-fpe-check=1 - CMAKE_CONFIG: Debug - gtk-bundle: $(gtk-bundle-x64) - libsndfile-url: $(libsndfile-url-x64) - no_network: - CMAKE_FLAGS: -Denable-network=0 - CMAKE_CONFIG: Release - gtk-bundle: $(gtk-bundle-x64) - libsndfile-url: $(libsndfile-url-x64) - static_lib: - CMAKE_FLAGS: -DBUILD_SHARED_LIBS=0 - CMAKE_CONFIG: Release - gtk-bundle: $(gtk-bundle-x64) - libsndfile-url: $(libsndfile-url-x64) - minimal: - CMAKE_FLAGS: -Denable-ipv6=0 -Denable-network=0 -Denable-aufile=0 -Denable-dbus=0 -Denable-threads=0 -Denable-winmidi=0 -Denable-waveout=0 -Denable-dsound=0 -Denable-libsndfile=0 -Denable-floats=1 - CMAKE_CONFIG: Release - gtk-bundle: $(gtk-bundle-x64) - libsndfile-url: $(libsndfile-url-x64) - pool: - vmImage: 'windows-2019' - steps: - - script: | - @ECHO ON - mkdir d:\deps || exit -1 - cd d:\deps || exit -1 - curl -LfsS -o gtk-bundle-dev.zip $(gtk-bundle) || exit -1 - curl -LfsS -o libsndfile-dev.zip $(libsndfile-url) || exit -1 - 7z x -aos -- gtk-bundle-dev.zip > NUL || exit -1 - 7z x -aos -- libsndfile-dev.zip > NUL || exit -1 - REM need to fix the naming of libsndfile otherwise the linker won't find it - mv lib\libsndfile-1.lib lib\sndfile.lib || exit -1 - mv lib\libsndfile-1.def lib\sndfile.def || exit -1 - displayName: 'Prerequisites' - - script: | - @ECHO ON - SET "PATH=d:\deps\bin;%PATH%" - mkdir build && cd build || exit -1 - cmake -A x64 -DCMAKE_BUILD_TYPE=$(CMAKE_CONFIG) -DCMAKE_VERBOSE_MAKEFILE=1 $(CMAKE_FLAGS) -DNO_GUI=1 .. || exit -1 - cmake --build . --config $(CMAKE_CONFIG) || exit -1 - displayName: 'Compile fluidsynth' - - script: | - @ECHO ON - SET "PATH=d:\deps\bin;%PATH%" - cd build || exit -1 - cmake --build . --config $(CMAKE_CONFIG) --target check || exit -1 - displayName: 'Execute Unittests' - -- job: WindowsMinGW - strategy: - matrix: - x86: - CMAKE_FLAGS: -DCMAKE_C_FLAGS="-m32" - platform: Win32 - gtk-bundle: $(gtk-bundle-x86) - libsndfile-url: $(libsndfile-url-x86) - mingw-url: $(mingw-url-x86) - x64: - CMAKE_FLAGS: - platform: x64 - gtk-bundle: $(gtk-bundle-x64) - libsndfile-url: $(libsndfile-url-x64) - mingw-url: $(mingw-url-x64) - pool: - vmImage: 'vs2017-win2016' - steps: - - task: DownloadBuildArtifacts@0 - inputs: - buildType: specific - # https://dev.azure.com/tommbrt/_apis/projects?api-version=5.0 - project: 'd3638885-de4a-4ce7-afe7-f237ae461c07' - pipeline: 1 - artifactName: libinstpatch-$(platform) - downloadPath: '$(Build.ArtifactStagingDirectory)' - displayName: 'Get libinstpatch' - - script: | - @ECHO ON - mkdir d:\deps || exit -1 - cd d:\deps || exit -1 - curl -LfsS -o gtk-bundle-dev.zip $(gtk-bundle) || exit -1 - curl -LfsS -o libsndfile-dev.zip $(libsndfile-url) || exit -1 - curl -LfsS -o mingw.zip $(mingw-url) || exit -1 - 7z x -aos -- gtk-bundle-dev.zip > NUL || exit -1 - 7z x -aos -- libsndfile-dev.zip > NUL || exit -1 - 7z x -aos -- mingw.zip > NUL || exit -1 - rm *.zip - REM need to fix the naming of libsndfile otherwise the linker won't find it - mv lib\libsndfile-1.lib lib\sndfile.lib || exit -1 - mv lib\libsndfile-1.def lib\sndfile.def || exit -1 - cd mingw*\ && cp -rf * .. && cd .. && rm -rf mingw* || exit -1 - cd $(Build.ArtifactStagingDirectory)\libinstpatch-$(platform) && cp -rf * d:\deps\ && mv -f * .. && cd .. && rmdir $(Build.ArtifactStagingDirectory)\libinstpatch-$(platform)\ || exit -1 - displayName: 'Prerequisites' - - script: | - @ECHO ON - SET "PATH=d:\deps\bin;%PATH%" - REM remove that path from PATH to make sure sh.exe is not found (cmake will complain otherwise) - set PATH=%PATH:C:\Program Files\Git\bin;=% - set PATH=%PATH:C:\Program Files\Git\usr\bin;=% - pkg-config --list-all - mkdir build && cd build || exit -1 - cmake -G "MinGW Makefiles" -DCMAKE_INSTALL_PREFIX=$(Build.ArtifactStagingDirectory) $(CMAKE_FLAGS) -Denable-readline=0 -DCMAKE_BUILD_TYPE=Release -DCMAKE_VERBOSE_MAKEFILE=1 -DNO_GUI=1 .. || exit -1 - mingw32-make.exe all || exit -1 - displayName: 'Compile fluidsynth' - - script: | - @ECHO ON - SET "PATH=d:\deps\bin;%PATH%" - REM remove that path from PATH to make sure sh.exe is not found (cmake will complain otherwise) - set PATH=%PATH:C:\Program Files\Git\bin;=% - set PATH=%PATH:C:\Program Files\Git\usr\bin;=% - cd build || exit -1 - mingw32-make.exe check || exit -1 - displayName: 'Execute Unittests' diff --git a/singe/thirdparty/fluidsynth/.circleci/config.yml b/singe/thirdparty/fluidsynth/.circleci/config.yml deleted file mode 100644 index 5ae6adeaa..000000000 --- a/singe/thirdparty/fluidsynth/.circleci/config.yml +++ /dev/null @@ -1,55 +0,0 @@ -version: 2.1 -orbs: - android: circleci/android@0.2.0 -jobs: - build: - working_directory: ~/code - docker: - - image: circleci/android:api-29 - environment: - JVM_OPTS: -Xmx3200m - steps: - - run: - name: Setup Git email and user for Cerbero - command: git config --global user.email "ci@beatscratch.io" && git config --global user.name "CI testing" - - android/install-ndk: - ndk-version: android-ndk-r18b - ndk-sha: 500679655da3a86aecf67007e8ab230ea9b4dd7b - - run: - name: Link NDK for Cerbero - command: | - mkdir -p /home/circleci/android-sdk-linux - ln -s /opt/android/android-ndk-r18b /home/circleci/android-sdk-linux/ndk-bundle - - run: - name: Install FluidSynth build dependencies - command: sudo apt-get update && sudo apt-get install autotools-dev automake autoconf libtool g++ autopoint make cmake - bison flex yasm pkg-config gtk-doc-tools libxv-dev libx11-dev libpulse-dev - python3-dev texinfo gettext build-essential pkg-config doxygen curl libxext-dev - libxi-dev x11proto-record-dev libxrender-dev libgl1-mesa-dev libxfixes-dev - libxdamage-dev libxcomposite-dev libasound2-dev libxml-simple-perl dpkg-dev - debhelper build-essential devscripts fakeroot transfig gperf libdbus-glib-1-dev - wget glib-networking libxtst-dev libxrandr-dev libglu1-mesa-dev libegl1-mesa-dev - git subversion xutils-dev intltool ccache python3-setuptools autogen maven make - - checkout - - run: - name: Prepare FluidSynth Android - working_directory: doc/android - command: | - make -f Makefile.android prepare - - run: - name: Build FluidSynth Android - working_directory: doc/android - command: | - make -f Makefile.android - - run: - name: Show directory contents - working_directory: doc/android - command: | - ls -R - - run: - name: Zip FluidSnyth Android Distribution - working_directory: doc/android - command: zip -r android-dist.zip dist - - store_artifacts: - path: doc/android/android-dist.zip - destination: android-dist.zip \ No newline at end of file diff --git a/singe/thirdparty/fluidsynth/.cirrus.yml b/singe/thirdparty/fluidsynth/.cirrus.yml deleted file mode 100644 index 2fcb1edf9..000000000 --- a/singe/thirdparty/fluidsynth/.cirrus.yml +++ /dev/null @@ -1,14 +0,0 @@ - -task: - name: FreeBSD - freebsd_instance: - matrix: - # There isn't a stable 13.0 image yet (2019-09) - image_family: freebsd-13-0-snap - image_family: freebsd-12-0 - image_family: freebsd-10-4 - - install_script: pwd && ls -la && pkg install -y cmake glib alsa-lib ladspa portaudio pulseaudio pkgconf sdl2 - - compile_script: pwd && ls -la && mkdir $HOME/fluidsynth_install/ && mkdir build && cd build && cmake -DCMAKE_INSTALL_PREFIX=$HOME/fluidsynth_install -Denable-portaudio=1 -Denable-ladspa=1 -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_VERBOSE_MAKEFILE=0 -DNO_GUI=1 .. && make -j4 && make check && make install - diff --git a/singe/thirdparty/fluidsynth/.clang-format b/singe/thirdparty/fluidsynth/.clang-format deleted file mode 100644 index 072567c77..000000000 --- a/singe/thirdparty/fluidsynth/.clang-format +++ /dev/null @@ -1,61 +0,0 @@ -AccessModifierOffset: 0 -AlignEscapedNewlinesLeft: true -AlignTrailingComments: true -AllowAllParametersOfDeclarationOnNextLine: false -AllowShortFunctionsOnASingleLine: false -AllowShortIfStatementsOnASingleLine: false -AllowShortLoopsOnASingleLine: false -AlwaysBreakBeforeMultilineStrings: false -AlwaysBreakTemplateDeclarations: false -BinPackArguments: false -BinPackParameters: false -BreakBeforeBinaryOperators: false -BreakBeforeTernaryOperators: false -BreakConstructorInitializersBeforeComma: false - -BreakBeforeBraces: Custom -BraceWrapping: - AfterClass: true - AfterControlStatement: true - AfterEnum: true - AfterFunction: true - AfterNamespace: true - AfterStruct: true - AfterUnion: true - BeforeCatch: true - BeforeElse: true - IndentBraces: false - -ColumnLimit: 100 -CommentPragmas: '' -ConstructorInitializerAllOnOneLineOrOnePerLine: false -ConstructorInitializerIndentWidth: 0 -ContinuationIndentWidth: 0 -Cpp11BracedListStyle: false -DerivePointerAlignment: false -IndentCaseLabels: true -IndentWidth: 4 -Language: Cpp -MaxEmptyLinesToKeep: 2 -NamespaceIndentation: All -PenaltyBreakBeforeFirstCallParameter: 100 -PenaltyBreakComment: 100 -PenaltyBreakFirstLessLess: 0 -PenaltyBreakString: 100 -PenaltyExcessCharacter: 1 -PenaltyReturnTypeOnItsOwnLine: 20 -SpaceAfterCStyleCast: false -SpaceAfterTemplateKeyword: false -SpaceBeforeAssignmentOperators: true -SpaceBeforeParens: ControlStatements -SpaceInEmptyParentheses: false -SpacesBeforeTrailingComments: 1 -SpacesInAngles: false -SpacesInCStyleCastParentheses: false -SpacesInContainerLiterals: false -SpacesInParentheses: false -SpacesInSquareBrackets: false -SortIncludes: false -Standard: Cpp11 -TabWidth: 4 -UseTab: Never diff --git a/singe/thirdparty/fluidsynth/.clang-tidy b/singe/thirdparty/fluidsynth/.clang-tidy deleted file mode 100644 index e58306201..000000000 --- a/singe/thirdparty/fluidsynth/.clang-tidy +++ /dev/null @@ -1,54 +0,0 @@ ---- -Checks: '-*,clang-diagnostic-*,clang-analyzer-*,-clang-analyzer-security.insecureAPI.strcpy,performance-*,readability-avoid-const-params-in-decls,readability-braces-around-statements,readability-delete-null-pointer,readability-implicit-bool-conversion,readability-misleading-indentation,readability-misplaced-array-index,readability-non-const-parameter,readability-redundant-control-flow,readability-redundant-declaration,readability-redundant-function-ptr-dereference,readability-simplify-boolean-expr' -WarningsAsErrors: '' -HeaderFilterRegex: '' -AnalyzeTemporaryDtors: false -FormatStyle: file -User: tom -CheckOptions: - - key: cert-dcl59-cpp.HeaderFileExtensions - value: h,hh,hpp,hxx - - key: cert-err09-cpp.CheckThrowTemporaries - value: '1' - - key: cert-err61-cpp.CheckThrowTemporaries - value: '1' - - key: cert-oop11-cpp.IncludeStyle - value: llvm - - key: google-readability-braces-around-statements.ShortStatementLines - value: '1' - - key: google-readability-function-size.StatementThreshold - value: '800' - - key: google-readability-namespace-comments.ShortNamespaceLines - value: '10' - - key: google-readability-namespace-comments.SpacesBeforeComments - value: '2' - - key: modernize-loop-convert.MaxCopySize - value: '16' - - key: modernize-loop-convert.MinConfidence - value: reasonable - - key: modernize-loop-convert.NamingStyle - value: CamelCase - - key: modernize-pass-by-value.IncludeStyle - value: llvm - - key: modernize-replace-auto-ptr.IncludeStyle - value: llvm - - key: modernize-use-nullptr.NullMacros - value: 'NULL' - - key: performance-faster-string-find.StringLikeClasses - value: 'std::basic_string' - - key: performance-for-range-copy.WarnOnAllAutoCopies - value: '0' - - key: performance-inefficient-string-concatenation.StrictMode - value: '0' - - key: performance-type-promotion-in-math-fn.IncludeStyle - value: llvm - - key: performance-unnecessary-value-param.IncludeStyle - value: llvm - - key: readability-braces-around-statements.ShortStatementLines - value: '0' - - key: readability-simplify-boolean-expr.ChainedConditionalAssignment - value: '0' - - key: readability-simplify-boolean-expr.ChainedConditionalReturn - value: '0' -... - diff --git a/singe/thirdparty/fluidsynth/.github/ISSUE_TEMPLATE/bug_report.md b/singe/thirdparty/fluidsynth/.github/ISSUE_TEMPLATE/bug_report.md deleted file mode 100644 index 0ccedce9e..000000000 --- a/singe/thirdparty/fluidsynth/.github/ISSUE_TEMPLATE/bug_report.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -name: Bug report -about: Create a report to help us improve -title: '' -labels: bug -assignees: '' - ---- - - - -### FluidSynth version -_Execute `fluidsynth --version` and provide the output._ - -### Describe the bug -_Provide a clear and concise description of the current situation, e.g. how the bug manifests._ - -### Expected behavior -_Provide a clear and concise description of what you expected to happen._ - -### Steps to reproduce -_Please explain the steps required to duplicate the issue, esp. if you are able to provide a sample application. E.g. how to start fluidsynth, what shell commands to enter, what midi events to send, etc._ - -### Additional context -_If you are able to illustrate the bug with an example, please provide simple -source code below or as attached file. List any other information that is relevant to your issue, e.g. stack traces, related issues, build logs, suggestions on how to fix, links to related discussions at fluid-dev, etc._ - -``` -insert code snippets, soundfonts or anything relevant here, or attach it as extra file(s) if it's too much -``` diff --git a/singe/thirdparty/fluidsynth/.github/ISSUE_TEMPLATE/feature_request.md b/singe/thirdparty/fluidsynth/.github/ISSUE_TEMPLATE/feature_request.md deleted file mode 100644 index c0174451d..000000000 --- a/singe/thirdparty/fluidsynth/.github/ISSUE_TEMPLATE/feature_request.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -name: Feature request -about: Suggest a concrete feature -title: '' -labels: enhancement -assignees: '' - ---- - - - -### Related discussion on the mailing list -_Features should be discussed by the community. Historically, our community lives at the mailing list. Bring up your ideas there, before opening tickets. In case you already did that, provide a link to the thread._ - -### Is your feature request related to a problem? -_A clear and concise description of what the problem is._ - -### Describe the solution you'd like -_A clear and concise description of what you want to happen._ - -### Describe alternatives you've considered -_A clear and concise description of any alternative solutions or features you've considered._ - -### Additional context -_Add any other context or screenshots about the feature request here._ diff --git a/singe/thirdparty/fluidsynth/.github/issue_template.md b/singe/thirdparty/fluidsynth/.github/issue_template.md deleted file mode 100644 index d290d0573..000000000 --- a/singe/thirdparty/fluidsynth/.github/issue_template.md +++ /dev/null @@ -1,40 +0,0 @@ -_This issue tracker is only for bug reports and concrete feature requests. -DO NOT SUBMIT SUPPORT REQUESTS OR "HOW TO" QUESTIONS HERE! -Else it might be closed without further notice._ - -_If you have a question look into our wiki -( https://github.com/FluidSynth/fluidsynth/wiki ) -or the developer resources -( http://www.fluidsynth.org/api/ )_ - -_If you still have a question, need support or want to discuss ideas, contact our mailing list: -https://lists.nongnu.org/mailman/listinfo/fluid-dev_ - -_Below is a form that shall help getting relevant information for bugs and feature requests together. -We strongly recommend to use it! Feel free to edit or remove inapplicable/unneeded parts._ - -### FluidSynth version -2.0.x - -### Current behavior - - -### Expected behavior - - -### Steps to reproduce - - -### Other information - diff --git a/singe/thirdparty/fluidsynth/.gitignore b/singe/thirdparty/fluidsynth/.gitignore deleted file mode 100644 index a49f5549f..000000000 --- a/singe/thirdparty/fluidsynth/.gitignore +++ /dev/null @@ -1,40 +0,0 @@ -build/ - -CMakeCache.txt -CMakeFiles -Makefile -cmake_install.cmake -install_manifest.txt - -# Object files -*.o -*.ko -*.obj -*.elf - -# Precompiled Headers -*.gch -*.pch - -# Libraries -*.lib -*.a -*.la -*.lo - -# Shared objects (inc. Windows DLLs) -*.dll -*.so -*.so.* -*.dylib - -# Executables -*.exe -*.out -*.app -*.i*86 -*.x86_64 -*.hex - -# ProjectFiles -*.pro.user* diff --git a/singe/thirdparty/fluidsynth/.travis.yml b/singe/thirdparty/fluidsynth/.travis.yml deleted file mode 100644 index 4652f99b9..000000000 --- a/singe/thirdparty/fluidsynth/.travis.yml +++ /dev/null @@ -1,70 +0,0 @@ -language: c -sudo: false -os: linux -dist: bionic -addons: - apt: - update: true - sources: - - ubuntu-toolchain-r-test - - llvm-toolchain-bionic-7 - - llvm-toolchain-bionic-8 - packages: - - cmake-data - - cmake - - libglib2.0-0 - - libsndfile-dev - - libasound2-dev - - libjack-dev - - portaudio19-dev - - libpulse-dev - - libdbus-glib-1-dev - - ladspa-sdk - - libsdl2-dev -env: - - CMAKE_FLAGS="-Denable-profiling=1" - - CMAKE_FLAGS="-Denable-floats=1 -Denable-profiling=1" - - CMAKE_FLAGS="-Denable-floats=0" - - CMAKE_FLAGS="-Denable-trap-on-fpe=1" - - CMAKE_FLAGS="-Denable-fpe-check=1" - - CMAKE_FLAGS="-Denable-ipv6=0" - - CMAKE_FLAGS="-Denable-network=0" - - CMAKE_FLAGS="-Denable-aufile=0" - - CMAKE_FLAGS="-DBUILD_SHARED_LIBS=0" - -matrix: - include: - - arch: arm64 - env: - - MATRIX_EVAL="CC=gcc-7 && CXX=g++-7 && sudo apt-get install gcc-7" - - - env: - - MATRIX_EVAL="CC=gcc-8 && CXX=g++-8 && sudo apt-get install gcc-8" - - CMAKE_FLAGS="-Denable-debug=1 -DCMAKE_C_FLAGS_DEBUG=-fuse-ld=gold" - - - env: - - MATRIX_EVAL="CC=clang-7 && CXX=clang++-7 && sudo apt-get install clang-7" - - - env: - - MATRIX_EVAL="CC=clang-8 && CXX=clang++-8 && sudo rm -f /usr/local/clang-7.0.0/bin/clang-tidy && sudo ln -s /usr/bin/clang-tidy-8 /usr/bin/clang-tidy && sudo apt-get install clang-8 clang-tidy-8" - - CMAKE_FLAGS="-Denable-profiling=1 -DCMAKE_C_FLAGS_DEBUG=-fuse-ld=gold" - - - os: linux-ppc64le - env: - - CMAKE_FLAGS="" - -before_install: - - eval "${MATRIX_EVAL}" - - which clang-tidy || true - - ls -la `which clang-tidy` || true - - echo $PATH - -before_script: - - mkdir $HOME/fluidsynth_install/ - - mkdir build && cd build - -script: - - cmake -DCMAKE_INSTALL_PREFIX=$HOME/fluidsynth_install ${CMAKE_FLAGS} -Denable-portaudio=1 -Denable-ladspa=1 -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_VERBOSE_MAKEFILE=1 -DNO_GUI=1 .. - - make -j4 - - make check - - make install # install only on linux, as CMAKE_INSTALL_PREFIX is ignored for frameworks on macosx and I cant tell whether that's correct or a bug. diff --git a/singe/thirdparty/fluidsynth/AUTHORS b/singe/thirdparty/fluidsynth/AUTHORS deleted file mode 100644 index 5843e6fc3..000000000 --- a/singe/thirdparty/fluidsynth/AUTHORS +++ /dev/null @@ -1,153 +0,0 @@ -[:Team:] -Current development team - -Tom Moebert - - -Former development team - -Josh Green -Pedro Lopez-Cabanillas -David Henningsson - - -[:Idea:] - -* Samuel Bianchini, Peter Hanappe and Johnathan Lee - - -[:Development:] - -Many people contributed to FluidSynth, sent suggestions or bug -fixes. The project was started by Peter Hanappe who is the main -author. Josh Green is the current maintainer. Below you'll find a -summary of contributions. - - -* Peter Hanappe. Initiated the project. files: stuck his nose in all - files. - -* Josh Green is the former maintainer and contributed a lot of code - directly or indirectly through the Swami and Smurf code base. - The SoundFont loader is completely based on his code. He also wrote - the alsa sequencer driver. He made many changes and bug fixes, - but above all, he's one of the driving forces behind the synthesizer. - He also created the current FluidSynth graphic logo with Blender - (the blue waves with FluidSynth letters partially submerged). - -* Markus Nentwig (re-)designed the resonant filter, the chorus, the - LADSPA subsystem, the MIDI router, optimized for SSE, made many - changes and bug fixes and got the synthesizer to actually work. Most - importantly, he used it on stage to make music. - -* S. Christian Collins did much testing of FluidSynth in regards to - EMU10K1 compatibility and provided many synthesis fixes in that regard. - -* Stephane Letz from Grame wrote most of the MidiShare driver, all of - the PortAudio driver, ported iiwusynth to MacOS X, and sent in many - fixes. files: iiwu_midishare.c, iiwu_portaudio.c - -* Antoine Schmitt added the sequencer support, support for sample - loading (RAM Sfont), developed the - MacroMedia Director Xtra, and send in many many bug reports. Thanks - to Antoine, the synthesizer finds its way to multi-media - developers. files: in bindings/director/ and iiwu_seq.{c,h}, - iiwu_event.{c,h}, iiwu_event_priv.h, iiwu_seqbind.{c,h}, - iiwu_ramsfont.{c,h} - -* Bob Ham added the code for "bank select" MIDI messages and send code - to define the synth's ALSA sequencer client name. files: - iiwu_midi.c, iiwu_alsa.c, iiwusynth.c, iiwusynth.h. - -* Tim Goetze sent many patches and implemented the all_notes_off. He - also sent his code for the new ALSA driver. files: iiwu_synth.c, - iiwu_chan.c, iiwu_voice.c, iiwu_alsa.c - -* Norbert Schnell from Ircam's jMax Team wrote most of the jMax/FTS - interface in a record time. He also pointed me to the technique of - using a lookup table for the interpolation coefficients. file: - iiwu_fts.c, iiwu_synth.c - -* The initial alsa driver was based on the jMax alsa driver by - Francois Dechelle and his Real-time Team at Ircam - (http://www.ircam.fr/jmax). The jMax code was based upon Ardour's - alsa_device.cc by Paul Barton-Davis. file: iiwu_alsa.c - -* Code was borrowed from the glib library to the smurf files. The goal was - to make iiwusynth independent from any library for maximum - portability. - -* David Henningsson added code for fast rendering of MIDI files, - rewrote the thread safety for 1.1.2, and fixed many bugs. - -* The midi device uses code from jMax's alsarawmidi.c file and from - Smurf's midi_alsaraw.c by Josh Green. file: iiwu_alsa.c - -* The reverb algorithm was written by Jezar - (http://www.dreampoint.co.uk). His code is public domain. The code - was translated to C by Peter Hanappe. file: iiwu_synth.c - -* The original code for the chorus effect was written by Juergen - Mueller and sundry contributors. - -* Bob Ham added LADCCA support. - -* Ebrahim Mayat made big efforts for compiling and running FluidSynth - on MacOS X. He also wrote the README-OSX file. - -* Martin Uddén's midi package was used. His files are integrated into - the iiwu_midi file. Martin Uddén file: - iiwu_midi.c - -* Ken Ellinwood send in a patch to add bank offsets to SoundFonts. An - adapted version was integrated in the source code. files: - fluid_cmd.c, fluidsynth/synth.h, fluid_synth.c. - -* Some interpolation algorihms were used that were found in - the music-dsp archives (http://www.smartelectronix.com/musicdsp). - They were written by Joshua Scholar and others. file: iiwu_synth.c - -* Macros to {increment,decrement} the 64-bit fixed point phase were - borrowed from Mozilla's macros to handle the Long-long type (64-bit - signed integer type). Mozilla NSPR library, www.mozilla.org. file: - iiwu_phase.h - -* KO Myung-Hun for OS/2 support with Dart audio driver. - -* Pedro Lopez-Cabanillas wrote the CoreMIDI driver for MacOSX, the CMake based - build system, revised the doxygen documentation, sequencer examples, fixes. - -* Matt Giuca improved the midi player by letting it load midi files from RAM, - and by making it handle EOT events. - -* Tom Moebert (fluidsynth's maintainer since Jun 2017) cleaned up and refactored - fluidsynth's API and revised its documentation, added support for 24 bit sample - soundfonts, added support for DLS soundfonts, fixed various bugs, implemented - unit tests and CI builds for Windows, Linux, MacOSX and BSD. - -* Growing list of individuals who contributed bug fixes, corrections and minor features: -Nicolas Boulicault for ALSA sequencer midi.portname setting. -Werner Schweer -Dave Philips -Anthony Green -Jake Commander -Fernando Pablo Lopez-Lezcano -Raoul Bonisch -Sergey Pavlishin -Eric Van Buggenhaut -Ken Ellinwood -Takashi Iwai -Bob Ham -Gerald Pye -Rui Nuno Capela -Frieder Bürzele -Henri Manson -Mihail Zenkov -Paul Millar -Nick Daly -David Hilvert -Bernat Arlandis i Mañó -Sven Meier -Marcus Weseloh -Jean-jacques Ceresa - diff --git a/singe/thirdparty/fluidsynth/CMakeLists.txt b/singe/thirdparty/fluidsynth/CMakeLists.txt deleted file mode 100644 index d4956b199..000000000 --- a/singe/thirdparty/fluidsynth/CMakeLists.txt +++ /dev/null @@ -1,810 +0,0 @@ -# FluidSynth - A Software Synthesizer -# -# Copyright (C) 2003-2011 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 -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -# 02111-1307, USA - -# CMake based build system. Pedro Lopez-Cabanillas - -cmake_minimum_required ( VERSION 3.1.0 ) # because of CMAKE_C_STANDARD -project ( FluidSynth C ) -set ( CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake_admin ) - -# FluidSynth package name -set ( PACKAGE "fluidsynth" ) - -# FluidSynth package version -set ( FLUIDSYNTH_VERSION_MAJOR 2 ) -set ( FLUIDSYNTH_VERSION_MINOR 1 ) -set ( FLUIDSYNTH_VERSION_MICRO 0 ) -set ( VERSION "${FLUIDSYNTH_VERSION_MAJOR}.${FLUIDSYNTH_VERSION_MINOR}.${FLUIDSYNTH_VERSION_MICRO}" ) -set ( FLUIDSYNTH_VERSION "\"${VERSION}\"" ) - -# libfluidsynth - Library version -# *** NOTICE *** -# Update library version upon each release (follow these steps in order) -# if any source code changes: REVISION++ -# if any interfaces added/removed/changed: REVISION=0 -# if any interfaces removed/changed (compatibility broken): CURRENT++ -# if any interfaces have been added: AGE++ -# if any interfaces have been removed/changed (compatibility broken): AGE=0 -# This is not exactly the same algorithm as the libtool one, but the results are the same. -set ( LIB_VERSION_CURRENT 2 ) -set ( LIB_VERSION_AGE 3 ) -set ( LIB_VERSION_REVISION 0 ) -set ( LIB_VERSION_INFO - "${LIB_VERSION_CURRENT}.${LIB_VERSION_AGE}.${LIB_VERSION_REVISION}" ) - -# Options disabled by default -option ( enable-debug "enable debugging (default=no)" off ) -option ( enable-floats "enable type float instead of double for DSP samples" off ) -option ( enable-fpe-check "enable Floating Point Exception checks and debug messages" off ) -option ( enable-portaudio "compile PortAudio support" off ) -option ( enable-profiling "profile the dsp code" off ) -option ( enable-trap-on-fpe "enable SIGFPE trap on Floating Point Exceptions" off ) -option ( enable-ubsan "compile and link against UBSan (for debugging fluidsynth internals)" off ) - -# Options enabled by default -option ( enable-aufile "compile support for sound file output" on ) -option ( BUILD_SHARED_LIBS "Build a shared object or DLL" on ) -option ( enable-dbus "compile DBUS support (if it is available)" on ) -option ( enable-ipv6 "enable ipv6 support" on ) -option ( enable-jack "compile JACK support (if it is available)" on ) -option ( enable-ladspa "enable LADSPA effect units" on ) -option ( enable-libinstpatch "use libinstpatch (if available) to load DLS and GIG files" on ) -option ( enable-libsndfile "compile libsndfile support (if it is available)" on ) -option ( enable-midishare "compile MidiShare support (if it is available)" on ) -option ( enable-opensles "compile OpenSLES support (if it is available)" off ) -option ( enable-oboe "compile Oboe support (requires OpenSLES and/or AAudio)" off ) -option ( enable-network "enable network support (requires BSD sockets)" on ) -option ( enable-oss "compile OSS support (if it is available)" on ) -option ( enable-dsound "compile DirectSound support (if it is available)" on ) -option ( enable-waveout "compile Windows WaveOut support (if it is available)" on ) -option ( enable-winmidi "compile Windows MIDI support (if it is available)" on ) -option ( enable-sdl2 "compile SDL2 audio support (if it is available)" on ) -option ( enable-pkgconfig "use pkg-config to locate fluidsynth's (mostly optional) dependencies" on ) -option ( enable-pulseaudio "compile PulseAudio support (if it is available)" on ) -option ( enable-readline "compile readline lib line editing (if it is available)" on ) -option ( enable-threads "enable multi-threading support (such as parallel voice synthesis)" on ) - -# Platform specific options -if ( CMAKE_SYSTEM MATCHES "Linux|FreeBSD|DragonFly" ) - option ( enable-lash "compile LASH support (if it is available)" on ) - option ( enable-alsa "compile ALSA support (if it is available)" on ) -endif ( CMAKE_SYSTEM MATCHES "Linux|FreeBSD|DragonFly" ) - -if ( CMAKE_SYSTEM MATCHES "Linux" ) - option ( enable-systemd "compile systemd support (if it is available)" on ) -endif ( CMAKE_SYSTEM MATCHES "Linux" ) - -if ( CMAKE_SYSTEM MATCHES "Darwin" ) - option ( enable-coreaudio "compile CoreAudio support (if it is available)" on ) - option ( enable-coremidi "compile CoreMIDI support (if it is available)" on ) - option ( enable-framework "create a Mac OSX style FluidSynth.framework" on ) -endif ( CMAKE_SYSTEM MATCHES "Darwin" ) - -if ( CMAKE_SYSTEM MATCHES "OS2" ) - option ( enable-dart "compile DART support (if it is available)" on ) - set ( enable-ipv6 off ) -endif ( CMAKE_SYSTEM MATCHES "OS2" ) - -# Initialize the library directory name suffix. -if (NOT MINGW AND NOT MSVC AND NOT CMAKE_SYSTEM_NAME MATCHES "FreeBSD|DragonFly") -if ( CMAKE_SIZEOF_VOID_P EQUAL 8 ) - set ( _init_lib_suffix "64" ) -else ( CMAKE_SIZEOF_VOID_P EQUAL 8 ) - set ( _init_lib_suffix "" ) -endif ( CMAKE_SIZEOF_VOID_P EQUAL 8 ) -else () - set ( _init_lib_suffix "" ) -endif() -set ( LIB_SUFFIX ${_init_lib_suffix} CACHE STRING - "library directory name suffix (32/64/nothing)" ) -mark_as_advanced ( LIB_SUFFIX ) - -# the default C standard to use for all targets -set(CMAKE_C_STANDARD 90) - -# Compile with position independent code if the user requested a shared lib, i.e. no PIC if static requested. -# This is cmakes default behavior, but here it's explicitly required due to the use of libfluidsynth-OBJ as object library, -# which would otherwise always be compiled without PIC. -set ( CMAKE_POSITION_INDEPENDENT_CODE ${BUILD_SHARED_LIBS} ) - -# the default global visibility level for all target -# no visibility support on OS2 -if ( NOT OS2 ) - set ( CMAKE_C_VISIBILITY_PRESET hidden ) -endif ( NOT OS2 ) - -# enforce visibility control for all types of cmake targets -if ( POLICY CMP0063 ) - cmake_policy ( SET CMP0063 NEW ) -endif ( POLICY CMP0063 ) - -# Default install directory names -include ( DefaultDirs ) - -# Basic C library checks -include ( CheckSTDC ) -include ( CheckIncludeFile ) -include ( CheckFunctionExists ) -check_include_file ( string.h HAVE_STRING_H ) -check_include_file ( stdlib.h HAVE_STDLIB_H ) -check_include_file ( stdio.h HAVE_STDIO_H ) -check_include_file ( math.h HAVE_MATH_H ) -check_include_file ( errno.h HAVE_ERRNO_H ) -check_include_file ( stdarg.h HAVE_STDARG_H ) -check_include_file ( unistd.h HAVE_UNISTD_H ) -check_include_file ( sys/mman.h HAVE_SYS_MMAN_H ) -check_include_file ( sys/types.h HAVE_SYS_TYPES_H ) -check_include_file ( sys/time.h HAVE_SYS_TIME_H ) -check_include_file ( sys/stat.h HAVE_SYS_STAT_H ) -check_include_file ( fcntl.h HAVE_FCNTL_H ) -check_include_file ( sys/socket.h HAVE_SYS_SOCKET_H ) -check_include_file ( netinet/in.h HAVE_NETINET_IN_H ) -check_include_file ( netinet/tcp.h HAVE_NETINET_TCP_H ) -check_include_file ( arpa/inet.h HAVE_ARPA_INET_H ) -check_include_file ( limits.h HAVE_LIMITS_H ) -check_include_file ( pthread.h HAVE_PTHREAD_H ) -check_include_file ( signal.h HAVE_SIGNAL_H ) -check_include_file ( getopt.h HAVE_GETOPT_H ) -check_include_file ( stdint.h HAVE_STDINT_H ) -include ( TestInline ) -include ( TestVLA ) -include ( TestBigEndian ) -test_big_endian ( WORDS_BIGENDIAN ) - -unset ( LIBFLUID_CPPFLAGS CACHE ) -unset ( LIBFLUID_LIBS CACHE ) -unset ( FLUID_CPPFLAGS CACHE ) -unset ( FLUID_LIBS CACHE ) -unset ( ENABLE_UBSAN CACHE ) - -if ( CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID MATCHES "Clang" OR CMAKE_C_COMPILER_ID STREQUAL "Intel" ) - if ( NOT APPLE AND NOT OS2 ) - set ( CMAKE_EXE_LINKER_FLAGS - "${CMAKE_EXE_LINKER_FLAGS} -Wl,--as-needed" ) - set ( CMAKE_SHARED_LINKER_FLAGS - "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--no-undefined" ) - endif ( NOT APPLE AND NOT OS2 ) - - # define some warning flags - set ( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -W -Wpointer-arith -Wcast-qual -Wstrict-prototypes -Wno-unused-parameter -Wdeclaration-after-statement -Werror=implicit-function-declaration" ) - - # prepend to build type specific flags, to allow users to override - set ( CMAKE_C_FLAGS_DEBUG "-g ${CMAKE_C_FLAGS_DEBUG}" ) - - if ( CMAKE_C_COMPILER_ID STREQUAL "Intel" ) - # icc needs the restrict flag to recognize C99 restrict pointers - set ( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -restrict" ) - else () # not intel - # gcc and clang support bad function cast and alignment warnings; add them as well. - set ( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wbad-function-cast -Wcast-align" ) - - if ( enable-ubsan ) - set ( CMAKE_C_FLAGS "-fsanitize=address,undefined ${CMAKE_C_FLAGS}" ) - set ( CMAKE_EXE_LINKER_FLAGS "-fsanitize=address,undefined ${CMAKE_EXE_LINKER_FLAGS}" ) - set ( CMAKE_SHARED_LINKER_FLAGS "-fsanitize=address,undefined ${CMAKE_SHARED_LINKER_FLAGS}" ) - set ( ENABLE_UBSAN 1 ) - endif ( enable-ubsan ) - endif (CMAKE_C_COMPILER_ID STREQUAL "Intel" ) -endif ( CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID MATCHES "Clang" OR CMAKE_C_COMPILER_ID STREQUAL "Intel" ) - -# Windows -unset ( WINDOWS_LIBS CACHE ) -unset ( DSOUND_SUPPORT CACHE ) -unset ( WAVEOUT_SUPPORT CACHE ) -unset ( WINMIDI_SUPPORT CACHE ) -unset ( MINGW32 CACHE ) -if ( WIN32 ) - include ( CheckIncludeFiles ) - - # Check presence of MS include files - check_include_file ( windows.h HAVE_WINDOWS_H ) - check_include_file ( io.h HAVE_IO_H ) - check_include_file ( dsound.h HAVE_DSOUND_H ) - check_include_files ( "windows.h;mmsystem.h" HAVE_MMSYSTEM_H ) - - if ( enable-network ) - set ( WINDOWS_LIBS "${WINDOWS_LIBS};ws2_32" ) - endif ( enable-network ) - - if ( enable-dsound AND HAVE_DSOUND_H ) - set ( WINDOWS_LIBS "${WINDOWS_LIBS};dsound" ) - set ( DSOUND_SUPPORT 1 ) - endif () - - if ( enable-winmidi AND HAVE_MMSYSTEM_H ) - set ( WINDOWS_LIBS "${WINDOWS_LIBS};winmm" ) - set ( WINMIDI_SUPPORT 1 ) - endif () - - if ( enable-waveout AND HAVE_MMSYSTEM_H ) - set ( WINDOWS_LIBS "${WINDOWS_LIBS};winmm" ) - set ( WAVEOUT_SUPPORT 1 ) - endif () - - set ( LIBFLUID_CPPFLAGS "-DFLUIDSYNTH_DLL_EXPORTS" ) - set ( FLUID_CPPFLAGS "-DFLUIDSYNTH_NOT_A_DLL" ) - if ( MSVC ) - # statically link in the CRT library to avoid a bunch of runtime DLL dependencies and allow - # the CI windows builds to be run under WinXP - foreach ( flag_var - CMAKE_C_FLAGS - CMAKE_C_FLAGS_DEBUG - CMAKE_C_FLAGS_RELEASE - CMAKE_C_FLAGS_MINSIZEREL - CMAKE_C_FLAGS_RELWITHDEBINFO - CMAKE_CXX_FLAGS - CMAKE_CXX_FLAGS_DEBUG - CMAKE_CXX_FLAGS_RELEASE - CMAKE_CXX_FLAGS_MINSIZEREL - CMAKE_CXX_FLAGS_RELWITHDEBINFO - ) - if ( ${flag_var} MATCHES "/MD" ) - string ( REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}" ) - endif ( ${flag_var} MATCHES "/MD" ) - endforeach ( flag_var ) - - else ( MSVC ) - # only set debug postfix if not MSVS building - set ( CMAKE_DEBUG_POSTFIX "_debug" ) - endif ( MSVC ) - - # MinGW compiler (a Windows GCC port) - if ( MINGW ) - set ( MINGW32 1 ) - add_compile_options ( -mms-bitfields ) - endif ( MINGW ) -else ( WIN32 ) -# Check PThreads, but not in Windows - find_package ( Threads REQUIRED ) - set ( LIBFLUID_LIBS "m" ${CMAKE_THREAD_LIBS_INIT} ) -endif ( WIN32 ) - -# IBM OS/2 -unset ( DART_SUPPORT CACHE ) -unset ( DART_LIBS CACHE ) -unset ( DART_INCLUDE_DIRS CACHE ) -if ( CMAKE_SYSTEM MATCHES "OS2" ) - set ( CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Zbin-files" ) - set ( CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Zbin-files" ) - if ( enable-dart ) - check_include_files ( "os2.h;os2me.h" HAVE_DART_H ) - set ( DART_SUPPORT ${HAVE_DART_H} ) - unset ( DART_INCLUDE_DIRS CACHE ) - endif ( enable-dart ) -endif ( CMAKE_SYSTEM MATCHES "OS2" ) - -# Solaris / SunOS -if ( CMAKE_SYSTEM MATCHES "SunOS" ) - set ( FLUID_LIBS "${FLUID_LIBS};nsl;socket" ) - set ( LIBFLUID_LIBS "${LIBFLUID_LIBS};nsl;socket" ) -endif ( CMAKE_SYSTEM MATCHES "SunOS" ) - -# Apple Mac OSX -unset ( COREAUDIO_SUPPORT CACHE ) -unset ( COREAUDIO_LIBS CACHE ) -unset ( COREMIDI_SUPPORT CACHE ) -unset ( COREMIDI_LIBS CACHE ) -unset ( DARWIN CACHE ) -unset ( MACOSX_FRAMEWORK CACHE ) -if ( CMAKE_SYSTEM MATCHES "Darwin" ) - set ( DARWIN 1 ) - set ( CMAKE_INSTALL_NAME_DIR - ${CMAKE_INSTALL_PREFIX}/${LIB_INSTALL_DIR} ) - if ( enable-coreaudio ) - check_include_file ( CoreAudio/AudioHardware.h COREAUDIO_FOUND ) - if ( COREAUDIO_FOUND ) - set ( COREAUDIO_SUPPORT ${COREAUDIO_FOUND} ) - set ( COREAUDIO_LIBS "-Wl,-framework,CoreAudio,-framework,AudioUnit" ) - endif ( COREAUDIO_FOUND ) - endif ( enable-coreaudio ) - if ( enable-coremidi ) - check_include_file ( CoreMIDI/MIDIServices.h COREMIDI_FOUND ) - if ( COREMIDI_FOUND ) - set ( COREMIDI_SUPPORT ${COREMIDI_FOUND} ) - set ( COREMIDI_LIBS "-Wl,-framework,CoreMIDI,-framework,CoreServices" ) - endif ( COREMIDI_FOUND ) - endif ( enable-coremidi ) - if ( enable-framework ) - set ( MACOSX_FRAMEWORK 1 ) - endif ( enable-framework ) -endif ( CMAKE_SYSTEM MATCHES "Darwin" ) - - -unset ( HAVE_INETNTOP CACHE ) -unset ( IPV6_SUPPORT CACHE ) -CHECK_FUNCTION_EXISTS ( "inet_ntop" HAVE_INETNTOP ) -if ( enable-ipv6 ) - if ( HAVE_INETNTOP ) - set ( IPV6_SUPPORT 1 ) - endif ( HAVE_INETNTOP ) -endif ( enable-ipv6 ) - -unset ( NETWORK_SUPPORT ) -if ( enable-network ) - set ( NETWORK_SUPPORT 1 ) -endif ( enable-network ) - -unset ( WITH_FLOAT CACHE ) -if ( enable-floats ) - set ( WITH_FLOAT 1 ) -endif ( enable-floats ) - -unset ( WITH_PROFILING CACHE ) -if ( enable-profiling ) - set ( WITH_PROFILING 1 ) - if ( CMAKE_C_COMPILER_ID STREQUAL "Clang" ) - set ( OPT_FLAGS "-Rpass=loop-vectorize" ) # -Rpass-analysis=loop-vectorize" ) - elseif ( CMAKE_C_COMPILER_ID STREQUAL "Intel" ) - set ( OPT_FLAGS "-qopt-report=3" ) - elseif ( CMAKE_C_COMPILER_ID STREQUAL "GNU" ) - set ( OPT_FLAGS "" ) - endif ( ) - - set ( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OPT_FLAGS}" ) - - if ( CMAKE_VERSION VERSION_GREATER "3.6.0" ) - find_program( CLANG_TIDY - NAMES "clang-tidy" - DOC "Path to clang-tidy executable" ) - - if ( CLANG_TIDY ) - message ( STATUS "Found clang-tidy at ${CLANG_TIDY}" ) - execute_process ( COMMAND ${CLANG_TIDY} "--version" ) - set ( CMAKE_C_CLANG_TIDY ${CLANG_TIDY} ) - endif ( CLANG_TIDY ) - endif ( CMAKE_VERSION VERSION_GREATER "3.6.0" ) - -endif ( enable-profiling ) - -unset ( ENABLE_TRAPONFPE CACHE ) -unset ( TRAP_ON_FPE CACHE ) -if ( enable-trap-on-fpe AND NOT APPLE AND NOT WIN32 ) - set ( ENABLE_TRAPONFPE 1 ) - set ( TRAP_ON_FPE 1 ) -endif ( enable-trap-on-fpe AND NOT APPLE AND NOT WIN32 ) - -unset ( ENABLE_FPECHECK CACHE ) -unset ( FPE_CHECK CACHE ) -if ( enable-fpe-check AND NOT APPLE AND NOT WIN32 ) - set ( ENABLE_FPECHECK 1 ) - set ( FPE_CHECK 1 ) -endif ( enable-fpe-check AND NOT APPLE AND NOT WIN32 ) - -if ( enable-debug ) - set ( CMAKE_BUILD_TYPE "Debug" CACHE STRING - "Choose the build type, options: Debug Release RelWithDebInfo MinSizeRel" FORCE ) -endif ( enable-debug ) - -if ( NOT CMAKE_BUILD_TYPE ) - set ( CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING - "Choose the build type, options: Debug Release RelWithDebInfo MinSizeRel" FORCE ) -endif ( NOT CMAKE_BUILD_TYPE ) - -unset ( ENABLE_DEBUG CACHE ) -if ( CMAKE_BUILD_TYPE MATCHES "Debug" ) - set ( ENABLE_DEBUG 1 ) - add_definitions(-DDEBUG) -endif ( CMAKE_BUILD_TYPE MATCHES "Debug" ) - -# Additional targets to perform clang-format/clang-tidy -# Get all project files -file(GLOB_RECURSE - ALL_SOURCE_FILES - LIST_DIRECTORIES false - ${CMAKE_SOURCE_DIR}/*.[chi] - ${CMAKE_SOURCE_DIR}/*.[chi]pp - ${CMAKE_SOURCE_DIR}/*.[chi]xx - ${CMAKE_SOURCE_DIR}/*.cc - ${CMAKE_SOURCE_DIR}/*.hh - ${CMAKE_SOURCE_DIR}/*.ii - ${CMAKE_SOURCE_DIR}/*.[CHI] - ) - -# Adding clang-format target if executable is found -# find_program ( CLANG_FORMAT "clang-format" ) -# if ( CLANG_FORMAT ) -# add_custom_target( -# clang-format -# COMMAND ${CLANG_FORMAT} -# -i -# -style=file -# ${ALL_SOURCE_FILES} -# ) -# endif(CLANG_FORMAT) - -find_program ( ASTYLE "astyle" ) -if ( ASTYLE ) - add_custom_target( - format - COMMAND ${ASTYLE} - -A1 - -xb - -j - -k3 - -p - -f - -n - -U - ${ALL_SOURCE_FILES} - ) -endif(ASTYLE) - -if(NOT enable-pkgconfig) - - FIND_LIBRARY( GLIB_LIB NAMES glib glib-2.0 PATH GLIB_LIBRARY_DIR ) - FIND_LIBRARY( GTHREAD_LIB NAMES gthread gthread-2.0 PATH GTHREAD_LIBRARY_DIR ) - FIND_PATH( GLIBH_DIR glib.h PATH GLIB_INCLUDE_DIR ) - FIND_PATH( GLIBCONF_DIR glibconfig.h PATH GLIBCONF_INCLUDE_DIR ) - - IF( GLIB_LIB MATCHES "GLIB_LIB-NOTFOUND" OR - GTHREAD_LIB MATCHES "GTHREAD_LIB-NOTFOUND" OR - GLIBH_DIR MATCHES "GLIBH_DIR-NOTFOUND" OR - GLIBCONF_DIR MATCHES "GLIBCONF_DIR-NOTFOUND") - message( WARNING "Not sure if I found GLIB, continuing anyway.") - ENDIF() - - SET( GLIB_INCLUDE_DIRS ${GLIBH_DIR} ${GLIBCONF_DIR} ) - SET( GLIB_LIBRARIES ${GLIB_LIB} ${GTHREAD_LIB} ) - - message( STATUS "GLIB_INCLUDE_DIRS: " ${GLIB_INCLUDE_DIRS} ) - message( STATUS "GLIB_LIBRARIES: " ${GLIB_LIBRARIES} ) - -else(NOT enable-pkgconfig) - - find_package ( PkgConfig REQUIRED ) - - # Mandatory libraries: glib and gthread - pkg_check_modules ( GLIB REQUIRED glib-2.0>=2.6.5 gthread-2.0>=2.6.5 ) - - if ( GLIB_glib-2.0_VERSION AND GLIB_glib-2.0_VERSION VERSION_LESS "2.26.0" ) - message ( WARNING "Your version of glib is very old. This may cause problems with fluidsynth's sample cache on Windows. Consider updating to glib 2.26 or newer!" ) - endif ( GLIB_glib-2.0_VERSION AND GLIB_glib-2.0_VERSION VERSION_LESS "2.26.0" ) - - include ( UnsetPkgConfig ) - - # Optional features - unset ( LIBSNDFILE_SUPPORT CACHE ) - unset ( LIBSNDFILE_HASVORBIS CACHE ) - if ( enable-libsndfile ) - pkg_check_modules ( LIBSNDFILE sndfile>=1.0.0 ) - set ( LIBSNDFILE_SUPPORT ${LIBSNDFILE_FOUND} ) - if ( LIBSNDFILE_SUPPORT ) - pkg_check_modules ( LIBSNDFILE_VORBIS sndfile>=1.0.18 ) - set ( LIBSNDFILE_HASVORBIS ${LIBSNDFILE_VORBIS_FOUND} ) - endif ( LIBSNDFILE_SUPPORT ) - else ( enable-libsndfile ) - unset_pkg_config ( LIBSNDFILE ) - unset_pkg_config ( LIBSNDFILE_VORBIS ) - endif ( enable-libsndfile ) - - unset ( PULSE_SUPPORT CACHE ) - if ( enable-pulseaudio ) - pkg_check_modules ( PULSE libpulse-simple>=0.9.8 ) - set ( PULSE_SUPPORT ${PULSE_FOUND} ) - else ( enable-pulseaudio ) - unset_pkg_config ( PULSE ) - endif ( enable-pulseaudio ) - - unset ( ALSA_SUPPORT CACHE ) - if ( enable-alsa ) - pkg_check_modules ( ALSA alsa>=0.9.1 ) - set ( ALSA_SUPPORT ${ALSA_FOUND} ) - else ( enable-alsa ) - unset_pkg_config ( ALSA ) - endif ( enable-alsa ) - - unset ( PORTAUDIO_SUPPORT CACHE ) - if ( enable-portaudio ) - pkg_check_modules ( PORTAUDIO portaudio-2.0>=19 ) - set ( PORTAUDIO_SUPPORT ${PORTAUDIO_FOUND} ) - else ( enable-portaudio ) - unset_pkg_config ( PORTAUDIO ) - endif ( enable-portaudio ) - - unset ( JACK_SUPPORT CACHE ) - if ( enable-jack ) - pkg_check_modules ( JACK jack ) - set ( JACK_SUPPORT ${JACK_FOUND} ) - else ( enable-jack ) - unset_pkg_config ( JACK ) - endif ( enable-jack ) - - unset ( LASH_SUPPORT CACHE ) - if ( enable-lash ) - pkg_check_modules ( LASH lash-1.0>=0.3 ) - if ( LASH_FOUND ) - set ( LASH_SUPPORT 1 ) - add_definitions ( -DHAVE_LASH ) - endif ( LASH_FOUND ) - else ( enable-lash ) - unset_pkg_config ( LASH ) - remove_definitions( -DHAVE_LASH ) - endif ( enable-lash ) - - unset ( SYSTEMD_SUPPORT CACHE ) - if ( enable-systemd ) - pkg_check_modules ( SYSTEMD libsystemd ) - set ( SYSTEMD_SUPPORT ${SYSTEMD_FOUND} ) - else ( enable-systemd ) - unset_pkg_config ( SYSTEMD ) - endif ( enable-systemd ) - - unset ( DBUS_SUPPORT CACHE ) - if ( enable-dbus ) - pkg_check_modules ( DBUS dbus-1>=1.0.0 ) - set ( DBUS_SUPPORT ${DBUS_FOUND} ) - else ( enable-dbus ) - unset_pkg_config ( DBUS ) - endif ( enable-dbus ) - - unset ( LADSPA_SUPPORT CACHE ) - if ( enable-ladspa ) - check_include_file ( ladspa.h LADSPA_SUPPORT ) - if ( LADSPA_SUPPORT ) - pkg_check_modules ( GMODULE REQUIRED gmodule-2.0>=2.6.5 ) - set ( LADSPA 1 ) - endif ( LADSPA_SUPPORT ) - endif ( enable-ladspa ) - - unset ( LIBINSTPATCH_SUPPORT CACHE ) - if ( enable-libinstpatch ) - pkg_check_modules ( LIBINSTPATCH libinstpatch-1.0>=1.1.0 ) - set ( LIBINSTPATCH_SUPPORT ${LIBINSTPATCH_FOUND} ) - endif ( enable-libinstpatch ) - - unset ( SDL2_SUPPORT CACHE ) - if ( enable-sdl2 ) - pkg_check_modules ( SDL2 sdl2 ) - set ( SDL2_SUPPORT ${SDL2_FOUND} ) - else ( enable-sdl2 ) - unset_pkg_config ( SDL2 ) - endif ( enable-sdl2 ) - -endif(NOT enable-pkgconfig) - -unset ( AUFILE_SUPPORT CACHE ) -if ( enable-aufile ) - set ( AUFILE_SUPPORT 1 ) -endif ( enable-aufile ) - -unset ( OSS_SUPPORT CACHE ) -if ( enable-oss ) - find_package ( OSS QUIET ) - set ( OSS_SUPPORT ${OSS_FOUND} ) -endif ( enable-oss ) - -unset ( MIDISHARE_SUPPORT CACHE ) -if ( enable-midishare ) - find_package ( MidiShare QUIET ) - set ( MIDISHARE_SUPPORT ${MidiShare_FOUND} ) - if ( MidiShare_FOUND ) - set ( MidiShare_LIBS ${MidiShare_LIBRARIES} ) - else ( MidiShare_FOUND ) - unset ( MidiShare_LIBS CACHE ) - endif ( MidiShare_FOUND ) -else ( enable-midishare ) - unset ( MidiShare_LIBS CACHE ) -endif ( enable-midishare ) - -unset ( OPENSLES_SUPPORT CACHE ) -unset ( OpenSLES_LIBS CACHE ) -if ( enable-opensles ) - check_include_file ( SLES/OpenSLES.h OPENSLES_SUPPORT ) - if ( OPENSLES_SUPPORT ) - find_library ( OpenSLES_LIBS OpenSLES ) - if ( NOT OpenSLES_LIBS ) - unset ( OPENSLES_SUPPORT ) - endif ( NOT OpenSLES_LIBS ) - endif ( OPENSLES_SUPPORT ) -endif ( enable-opensles ) - -unset ( OBOE_SUPPORT CACHE ) -unset ( OBOE_LIBS CACHE ) -if ( enable-oboe ) - # enable C++ as it's needed for oboe - enable_language ( CXX ) - pkg_check_modules ( OBOE oboe-1.0 ) - if ( OBOE_FOUND ) - set ( OBOE_SUPPORT 1 ) - set ( OBOE_LIBS ${OBOE_LIBRARIES} ) - endif ( OBOE_FOUND ) -endif ( enable-oboe ) - -unset ( WITH_READLINE CACHE ) -unset ( READLINE_LIBS CACHE ) -if ( enable-readline ) - find_package ( Readline ) - set ( FOUND_READLINE ${HAVE_READLINE} ) - if ( HAVE_READLINE ) - set ( WITH_READLINE 1 ) - set ( READLINE_LIBS ${READLINE_LIBRARIES} ) - endif ( HAVE_READLINE ) -endif ( enable-readline ) - -unset ( ENABLE_MIXER_THREADS CACHE ) -if ( enable-threads ) - set ( ENABLE_MIXER_THREADS 1 ) -endif ( enable-threads ) - -unset ( HAVE_OPENMP CACHE ) -find_package ( OpenMP QUIET ) -if ( OpenMP_FOUND OR OpenMP_C_FOUND ) - message(STATUS "Found OpenMP ${OpenMP_C_SPEC_DATE}") - # require at least OMP 4.0 - if ( ( NOT OpenMP_C_SPEC_DATE LESS "201307" ) OR NOT ( OpenMP_C_VERSION VERSION_LESS "4.0" ) ) - set ( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}" ) - set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}" ) - - # currently no need to link against openMP runtime lib(s). If need be, uncomment below. - # set ( CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}" ) - # set ( LIBFLUID_LIBS "${OpenMP_C_LIBRARIES};${LIBFLUID_LIBS}" ) - set ( HAVE_OPENMP 1 ) - endif() -endif() - -# manipulate some variables to setup a proper test env -set(TEST_SOUNDFONT "${CMAKE_SOURCE_DIR}/sf2/VintageDreamsWaves-v2.sf2") -set(TEST_SOUNDFONT_SF3 "${CMAKE_SOURCE_DIR}/sf2/VintageDreamsWaves-v2.sf3") - -# Check for C99 float math - -unset ( HAVE_SINF CACHE ) -CHECK_FUNCTION_EXISTS ( "sinf" HAVE_SINF ) -if ( HAVE_SINF ) - set ( HAVE_SINF 1 ) -endif ( HAVE_SINF ) - -unset ( HAVE_COSF CACHE ) -CHECK_FUNCTION_EXISTS ( "cosf" HAVE_COSF ) -if ( HAVE_COSF ) - set ( HAVE_COSF 1 ) -endif ( HAVE_COSF ) - -unset ( HAVE_FABSF CACHE ) -CHECK_FUNCTION_EXISTS ( "fabsf" HAVE_FABSF ) -if ( HAVE_FABSF ) - set ( HAVE_FABSF 1 ) -endif ( HAVE_FABSF ) - -unset ( HAVE_POWF CACHE ) -CHECK_FUNCTION_EXISTS ( "powf" HAVE_POWF ) -if ( HAVE_POWF ) - set ( HAVE_POWF 1 ) -endif ( HAVE_POWF ) - -unset ( HAVE_SQRTF CACHE ) -CHECK_FUNCTION_EXISTS ( "sqrtf" HAVE_SQRTF ) -if ( HAVE_SQRTF ) - set ( HAVE_SQRTF 1 ) -endif ( HAVE_SQRTF ) - -unset ( HAVE_LOGF CACHE ) -CHECK_FUNCTION_EXISTS ( "logf" HAVE_LOGF ) -if ( HAVE_LOGF ) - set ( HAVE_LOGF 1 ) -endif ( HAVE_LOGF ) - -# General configuration file -configure_file ( ${CMAKE_SOURCE_DIR}/src/config.cmake - ${CMAKE_BINARY_DIR}/config.h ) - -# Setup linker directories NOW, as the command will apply only to targets created after it has been called. -link_directories ( - ${GLIB_LIBRARY_DIRS} - ${LASH_LIBRARY_DIRS} - ${JACK_LIBRARY_DIRS} - ${ALSA_LIBRARY_DIRS} - ${PULSE_LIBRARY_DIRS} - ${PORTAUDIO_LIBRARY_DIRS} - ${LIBSNDFILE_LIBRARY_DIRS} - ${DBUS_LIBRARY_DIRS} - ${SDL2_LIBRARY_DIRS} - ${OBOE_LIBRARY_DIRS} -) - -# Process subdirectories -add_subdirectory ( src ) -add_subdirectory ( test ) -add_subdirectory ( doc ) - -# pkg-config support -set ( prefix "${CMAKE_INSTALL_PREFIX}" ) -set ( exec_prefix "\${prefix}" ) -if ( IS_ABSOLUTE "${LIB_INSTALL_DIR}" ) - set ( libdir "${LIB_INSTALL_DIR}" ) -else () - set ( libdir "\${exec_prefix}/${LIB_INSTALL_DIR}" ) -endif () -if ( IS_ABSOLUTE "${INCLUDE_INSTALL_DIR}" ) - set ( includedir "${INCLUDE_INSTALL_DIR}" ) -else () - set ( includedir "\${prefix}/${INCLUDE_INSTALL_DIR}" ) -endif () -configure_file ( fluidsynth.pc.in - ${CMAKE_BINARY_DIR}/fluidsynth.pc IMMEDIATE @ONLY ) -install ( FILES ${CMAKE_BINARY_DIR}/fluidsynth.pc - DESTINATION ${LIB_INSTALL_DIR}/pkgconfig ) - -# Extra targets for Unix build environments -if ( UNIX ) - # RPM spec - configure_file ( fluidsynth.spec.in - ${CMAKE_BINARY_DIR}/fluidsynth.spec IMMEDIATE @ONLY ) - - if ( DEFINED FLUID_DAEMON_ENV_FILE) - configure_file ( fluidsynth.service.in - ${CMAKE_BINARY_DIR}/fluidsynth.service @ONLY ) - - configure_file ( fluidsynth.conf.in - ${CMAKE_BINARY_DIR}/fluidsynth.conf @ONLY ) - - endif ( DEFINED FLUID_DAEMON_ENV_FILE ) - - # uninstall custom target - configure_file ( "${CMAKE_SOURCE_DIR}/cmake_admin/cmake_uninstall.cmake.in" - "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" IMMEDIATE @ONLY) - add_custom_target ( uninstall - "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake") - - # tarball custom target - add_custom_target ( tarball - COMMAND mkdir -p ${PACKAGE}-${VERSION} - COMMAND cp -r bindings ${PACKAGE}-${VERSION} - COMMAND cp -r cmake_admin ${PACKAGE}-${VERSION} - COMMAND cp -r doc ${PACKAGE}-${VERSION} - COMMAND cp -r include ${PACKAGE}-${VERSION} - COMMAND cp -r src ${PACKAGE}-${VERSION} - COMMAND cp AUTHORS ChangeLog CMakeLists.txt LICENSE ${PACKAGE}.* INSTALL NEWS README* THANKS TODO ${PACKAGE}-${VERSION} -# COMMAND tar -cj --exclude .svn --exclude Makefile.am -f ${PACKAGE}-${VERSION}.tar.bz2 ${PACKAGE}-${VERSION} -# COMMAND tar -cz --exclude .svn --exclude Makefile.am -f ${PACKAGE}-${VERSION}.tar.gz ${PACKAGE}-${VERSION} -# COMMAND zip -qr ${PACKAGE}-${VERSION}.zip ${PACKAGE}-${VERSION} -x '*.svn*' -x '*Makefile.am' - COMMAND tar -cj --exclude .svn -f ${PACKAGE}-${VERSION}.tar.bz2 ${PACKAGE}-${VERSION} - COMMAND tar -cz --exclude .svn -f ${PACKAGE}-${VERSION}.tar.gz ${PACKAGE}-${VERSION} - COMMAND zip -qr ${PACKAGE}-${VERSION}.zip ${PACKAGE}-${VERSION} -x '*.svn*' - COMMAND rm -rf ${PACKAGE}-${VERSION} - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} - ) - -endif ( UNIX ) - -include ( report ) - -# CPack support -set ( CPACK_PACKAGE_DESCRIPTION_SUMMARY "FluidSynth real-time synthesizer" ) -set ( CPACK_PACKAGE_VENDOR "fluidsynth.org" ) -set ( CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_SOURCE_DIR}/README.md" ) -set ( CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/LICENSE" ) -set ( CPACK_PACKAGE_VERSION_MAJOR ${FLUIDSYNTH_VERSION_MAJOR} ) -set ( CPACK_PACKAGE_VERSION_MINOR ${FLUIDSYNTH_VERSION_MINOR} ) -set ( CPACK_PACKAGE_VERSION_PATCH ${FLUIDSYNTH_VERSION_MICRO} ) -set ( CPACK_PACKAGE_EXECUTABLES "fluidsynth" "FluidSynth CLI" ) - -# source packages -set ( CPACK_SOURCE_GENERATOR TGZ;TBZ2;ZIP ) -set ( CPACK_SOURCE_IGNORE_FILES "/.svn/;/build/;~$;.cproject;.project;/.settings/;${CPACK_SOURCE_IGNORE_FILES}" ) -set ( CPACK_SOURCE_PACKAGE_FILE_NAME "${PACKAGE}-${VERSION}" ) -set ( CPACK_SOURCE_STRIP_FILES OFF ) - -# binary packages -include ( InstallRequiredSystemLibraries ) -set ( CPACK_GENERATOR STGZ;TGZ;TBZ2;ZIP ) -set ( CPACK_PACKAGE_NAME ${PACKAGE} ) -set ( CPACK_STRIP_FILES ON ) - -include ( CPack ) diff --git a/singe/thirdparty/fluidsynth/CONTRIBUTING.md b/singe/thirdparty/fluidsynth/CONTRIBUTING.md deleted file mode 100644 index fe1ce4079..000000000 --- a/singe/thirdparty/fluidsynth/CONTRIBUTING.md +++ /dev/null @@ -1,40 +0,0 @@ -# Contributing - -Thanks for considering to contribute to FluidSynth. Before implementing -any huge new feature, consider bringing up your ideas on our mailing list: -https://lists.nongnu.org/mailman/listinfo/fluid-dev - -Contributing can be done by -* [submitting pull requests on Github]( -https://help.github.com/articles/proposing-changes-to-your-work-with-pull-requests/) or -* submitting patches to the mailing list. - -Patches should be created with `git format-patch`, so in every case you should be familiar with the basics of git. Make sure you develop against the master branch, i.e. **not** against any FluidSynth release. - -Some things that will increase the chance that your pull request or patch is accepted: - -* Give a reasoning / motivation for any changes or proposals you make. -* Follow our style guide. -* Keep your commits "atomic". -* Write meaningful commit messages. - -## Style Guide - -Find FluidSynth's style guide below. Syntax related issues, like missing braces, can be taken care of by calling `make format` (provided that cmake has found `astyle` on your system). - -#### General -* Every function should have a short comment explaining it's purpose -* Every public API function **must** be documented with purpose, params and return value -* Prefer signed integer types to unsigned ones -* Use spaces rather than tabs -* Avoid macros - -#### Naming Conventions -* Words separated by underscores -* Macros always UPPER_CASE -* Function and Variable names always lower_case, (e.g. `fluid_componentname_purpose()`) - -#### Bracing -* Every block after an if, else, while or for should be enclosed in braces -* **Allman-Style** braces everywhere - diff --git a/singe/thirdparty/fluidsynth/ChangeLog b/singe/thirdparty/fluidsynth/ChangeLog deleted file mode 100644 index e292de4b7..000000000 --- a/singe/thirdparty/fluidsynth/ChangeLog +++ /dev/null @@ -1,1693 +0,0 @@ -This file is no longer used. For detailed Changelog information, please refer to the -version control system's commits. For an overview of differences between versions, -see: -http://sourceforge.net/apps/trac/fluidsynth/wiki/ChangeLog1_1_2 -http://sourceforge.net/apps/trac/fluidsynth/wiki/ChangeLog1_1_1 -etc. - -For developer related "What's new"-information, doc/fluidsynth-v11-devdoc contains -valuable information. - -=== OLD === - -2009-05-01 Pedro Lopez-Cabanillas - * configure.ac: fix for win32 build. - -2009-05-01 Pedro Lopez-Cabanillas - * doc/Doxyfile: added fluid_filerenderer.c to Doxygen documentation. - * doc/fluidsynth-v11-devdoc.txt: license changed to CC-BY-SA 3.0 - * doc/fluidsynth_arpeggio.c: new example added. - * doc/fluidsynth_metronome.c: new example added. - * include/fluidsynth.h, include/fluidsynth/audio.h, - include/fluidsynth/settings.h: Doxygen documentation. - * src/fluid_settings.c: Doxygen documentation. - -2009-04-27 Josh Green - * include/fluidsynth/audio.h: Moved new filerenderer documentation to source file. - * src/config_win32.h.in: Added 'typedef int socklen_t;' to the correct place. - * src/fluid_filerenderer.c: Removed 2 extra pasted duplicates of the file, moved - Doxygen documentation from header file and added "API 1.1.0" designators. - * src/config_win32.h: Removed from subversion, since it is generated from - config_win32.h.in. - -2009-04-26 Josh Green - * configure.ac: Added glib 2.10 as a dependency, added notes in output - for LASH, LADCCA and READLINE that they are GPL. - * src/fluid_io.c: Moved code to fluid_sys.c and removed. - * src/config_win32.h: Added "typedef int socklen_t" definition. - * src/fluid_defsfont.h: Removed glib ripped code. - * src/fluid_oss.c: Fixed warnings where return value of write() was - being ignored. - * src/fluid_sys.c: Re-organized, implemented portable fluid_curtime() and - fluid_utime() using glib functions and removed old platform specific - code, implemented fluid_thread functionality using glib and removed - old platform specific code, fluid_istream_readline(), fluid_istream_gets() - and fluid_ostream_printf() should now work on WIN32 also, added code - for WIN32 for TCP sockets (not yet tested). - * src/fluid_sys.h: Added fluid_gerror_message() macro to extract message - safely from GError structures, replaced fluid_mutex macros with - portable implementations using glib, removed new_fluid_client_socket() - and delete_fluid_client_socket() which were never implemented or used. - * src/fluidsynth.c: Added call to g_thread_init(). - * src/fluidsynth_priv.h: Integer types now use glib integer types. - -2009-04-11 Josh Green - * FluidSynth release 1.0.9 "A Sound Future" - * configure.ac: Bumped version, no library interfaces added, removed or changed. - * doc/Makefile.am: Removed html and api folders from EXTRA_DIST. - * src/fluid_synth.c (fluid_synth_program_change): Preset substitute warning - now outputs MIDI channel. - -2009-04-02 Pedro Lopez-Cabanillas - * src/config_win32.h: fix compilation under MSVC 2008 and older - -2009-03-15 Josh Green - * ltconfig: Removed obsolete ltconfig script by suggestion of - Sven Hoexter. - * doc/fluidsynth.1: Some fixes from Sven Hoexter. - * src/fluid_adriver.c: Re-order of default drivers to jack, alsa, pulse. - * src/fluidsynth.c (fluid_synth_program_change): Added preset selection - fallback logic: Melodic - Fallback to Bank0:prognum followed by - Bank0:Program0, Percussion - Fallback to 128:0, code re-organization. - -2009-03-08 Josh Green - * src/fluid_jack.c: Added support for Jack MIDI. - * src/fluid_mdriver.c: Registered Jack MIDI driver. - * README-OSX: Update from Ebrahim Mayat. - -2009-02-28 Pedro Lopez-Cabanillas - * src/fluid_midi.c: Fix for ticket #22 (Wrong tempo changes) - * src/fluid_midi.h: delta-time accumulator moved to fluid_midi_file struct. - -2009-02-03 Josh Green - * Applied patch from KO Myung-Hun for OS/2 support including Dart audio - driver. - -2009-01-29 Josh Green - * src/Makefile.am: Added PortAudio driver conditional build. - * src/fluid_adriver.c: Registered fluid_portaudio_driver_settings. - * src/fluid_portaudio.c: Completely overhauled for Portaudio 19. - This driver appears to have been unbuildable before. - -2009-01-08 Pedro Lopez-Cabanillas - * configure.ac: detection of CoreMIDI support. Ticket #18. - * src/Makefile.am: conditional build of CoreMIDI driver. - * src/fluid_coremidi.c: Basic CoreMIDI driver. - * src/fluid_mdriver.c: added CoreMIDI driver. - -2009-01-08 Josh Green - * configure.ac: Followed GTK's lead for some unexplained magic for - stupid libtool version parameters (fixes autogen.sh bomb on - undefined macro LT_REVISION/LT_CURRENT/LT_AGE). Added - AC_CONFIG_MACRO_DIR([m4]) as suggested by libtoolize. - * Makefile.am: Added ACLOCAL_AMFLAGS=-I m4 as suggested by libtoolize. - -2008-12-23 Josh Green - * configure.ac: Added detection of PulseAudio driver. - * src/Makefile.am: Added conditional build of PulseAudio driver. - * src/fluid_adriver.c: Added PulseAudio driver and re-sorted drivers - by use preference. - * src/fluid_chan.c: Using MIDI enums for initializing channel CC values, - added supported for RPN GM MIDI messages Bend Range, Fine Tune and - Coarse Tune, added check for out of range NRPN parameters. - * src/fluid_midi.h: Added RPN enum midi_rpn_event. - * src/fluid_pulse.c: New PulseAudio driver. - -2008-09-22 Pedro Lopez-Cabanillas - * src/fluid_dsound.c: Fix for ticket #16 - dsound device can't be selected. - -2008-09-07 Josh Green - - * src/fluid_alsa.c (new_fluid_alsa_seq_driver): Patch from - Nicolas Boulicault to add ALSA sequencer midi.portname setting. - * src/fluid_conv.h: S. Christian Collins' patch - changed - FLUID_ATTEN_POWER_FACTOR from -531.509 to -200.0. - * src/fluid_defsfont.c (fluid_defpreset_noteon): S. Christian Collins' - patch - crash bug fix related to using certain modulators in a preset. - * src/fluid_mdriver.c: Pedro Lopez-Cabanillas' patch which adds a - midi.winmidi.device setting. - * src/fluid_mod.c: S. Christian Collins' patch - Stop forcing velocity - based filtering and a couple of calculation fixes to transform functions. - * src/fluid_synth.c: Nicolas Boulicault's patch to add midi.portname - setting. - (fluid_synth_program_change): added fix to properly search for a - percussion instrument - * src/fluid_synth.h: Changed FLUID_NUM_PROGRAMS to 128 and set - DRUM_INST_BANK to 128. - * src/fluid_voice.c (fluid_voice_write): S. Christian Collins' patch - - force velocity envelope value to be that of the previous stage when - switching from decay to sustain and filter calculation now uses - synthesizer baud rate rather than fixed at 44100. - (fluid_voice_update_param): S. Christian Collins' patch - Use multiplier - for GEN_ATTENUATION to be compatible with EMU10K1 cards. - * src/fluid_winmidi.c: Pedro Lopez-Cabanillas' patch which adds a - midi.winmidi.device option. - * src/fluidsynth.c: Nicolas Boulicault's patch which adds midi.portname - setting. Pedro Lopez-Cabanillas' patch which breaks out of argument - processing loop for non getopt option argument handling when a non - option is encountered and not using Readline. - -2007-11-17 Josh Green - - * FluidSynth release 1.0.8 "Its about funky time!" - * configure.ac: Bumped LT_REVISION and added call to AM_PROG_CC_C_O macro. - * Makefile: Updated fluidsynth.prj to fluidsynth.anjuta - * README-OSX: Update from Ebrahim Mayat for OS X Leopard - * acinclude.m4: Fixed embedded main function in AM_PATH_READLINE macro. - -2007-11-11 Josh Green - - * configure.ac: Added --enable-trap-on-fpe and --enable-fpe-check to - assist with Floating Point Exception debugging. - * src/fluid_chorus.c: Reverted the rest of the chorus "Effect level clip" - patch, until something better is devised. - * src/fluid_synth.c: Added support for trapping on Floating Point - Exceptions on GLIBC systems, to aid developers in tracking down FPEs - with gdb, removed buffer alignment hacks since they are no longer - needed (not using SSE currently). - * src/fluid_sys.c (fluid_time_config): Added check for a CPU freq - calculation of 0.0, since this test is inadequate to begin with and - was coming up as 0.0 on my laptop, causing a FPE. Will replace with - real timer functions, in the future. - * src/fluid_voice.c: Removed zap_almost_zero macro as it was buggy and - had issues which went away when gcc optimization was turned off and in - the case of !WITH_FLOAT was using abs() which is integer based and - would cause FPEs. - (fluid_voice_write): Removed a memory alignment hack and moved a call - to fluid_fpe_check() to a better location. - (fluid_voice_effects): Replaced zap_almost_zero with a call to fabs(), - added fluid_fpe_check() call. - * src/fluidsynth_priv.h: Removed FLUID_ALIGN16BYTE hack, as it is no - longer needed. - -2007-11-10 Josh Green - - * doc/fluidsynth.1: Updated man page with current command line options and other changes (minor). - * include/fluidsynth/synth.h: Reverted "Effect level clip" patch as it seems to cause chorus - count to have a much lessor effect. - -2007-09-20 Josh Green - - * Doc updates to AUTHORS and latest README-OSX from Ebrahim Mayat. - * src/config_win32.h.in: VERSION is now filled in at configure time. - * src/fluid_alsa.c (fluid_alsa_audio_run_s16): Fixed bug which was - causing weird crashes with QSynth when new_fluid_audio_driver2() when - audio meters were enabled (user data parameter was being used as a - fluid_synth_t instance). Synth instance is now no longer used in - this case (it was only used for 16 bit dithering before). - * src/fluid_oss.c: Fixed the same bug that was affecting ALSA driver. - * src/fluid_rev.c: Reverted to old commented out code in regards to - reverb level. - * src/fluid_synth.c (fluid_synth_dither_s16): Now no longer uses - fluid_synth_t instance, but accepts a pointer to an integer instead - for keeping track of dithering buffer index (all that the synth instance - was being used for). - * src/fluid_synth.c (fluid_synth_one_block): Reverted patch which - performs assignment of chorus and reverb levels in synthesis loop, - until a better scheme is devised (unnecessary CPU consumption). - * Added Visual Studio .sln and .vcproj files and some minor source - changes to get FluidSynth to build with it. - * Back-converted Visual Studio project to VC++ 6 project for users - using that build platform (not tested). - -2007-09-02 Josh Green - - * configure.ac: Removed SSE and longlong related switches (SSE support - removed for now and longlong is now always used). - * : Applied effect level clip patch from David Hilvert - see http://fluidsynth.resonance.org/trac/ticket/2. - * : Applied reverb damp scaling patch from David Hilvert - see http://fluidsynth.resonance.org/trac/ticket/3. - * src/fluid_dsp_float.c: No longer being #include'd and all interpolation - functionality has been re-written as separate functions, interpolating - around loops is now supported, effect (reverb/chorus/pan/filter) stuff - moved to fluid_voice.c. - * src/fluid_phase.h: 64 bit unsigned integers are now used for phase - index/fraction sample pointers, modified macros accordingly. - * src/fluid_voice.c: Removed SSE code, fluid_voice_init() renamed to - fluid_dsp_float_init() and moved to fluid_dsp_float.c. Effect related - functionality (reverb/chorus/pan/filter) moved from fluid_dsp_float.c - to fluid_voice.c. Some code re-formatting and comment cleanup. Loop - no longer requires padding surrounding it (fixes bug related to loop - point right on the end of the sample). - -2007-08-18 Josh Green - - * src/fluid_alsa.c: Added SND_SEQ_PORT_TYPE_MIDI_GENERIC back into the - ALSA sequencer port registration as it broke the use of playmidi - (thanks to Dave Serls for providing a patch and pointing this out). - -2007-01-14 Josh Green - - * src/fluid_alsa.c: Fixed evil bugs in ALSA driver where return value - of new fluid_alsa_handle_write_error() was not being checked correctly - causing successfully handled ALSA errors (underruns for example) to - terminate audio thread. - * src/fluid_synth.c: Using an inline roundi function to replace roundf - as per suggestion by Mihail Zenkov, 16 bit for dithering. - -2006-12-10 Josh Green - - Lots of documentation updates. - * doc/Doxyfile: No longer including functions by default, only those - listed in the listed header files. - * src/fluid_strtok.[ch]: Removed, since it was crap. Replaced with - fluid_strtok() in fluid_sys.c which doesn't require an allocated - tokenizing instance. - * src/fluid_alsa.c: Audio processing is more optimized in the case where - no user defined audio callback is used (removal of unneeded buffer copy), - fluid_alsa_handle_write_error() added for centralized ALSA audio error - handling, - * src/fluid_aufile.c: Now also doing 16 bit dithering. - * src/fluid_cmd.c: Removed use of old tokenizer instance. - * src/fluid_coreaudio.c: User defined callback function is now honored. - * src/fluid_defsfont.c: More leaks plugged (thanks to Paul Millar for - the patch), removed sfont_free_data() since sfont_close() should be - used instead (don't want to leak a file handle). - * src/fluid_midi_router.c: Took out uses of fflush() since sending a - line of text (with newline) should display it. - * src/fluid_oss.c: Using fluid_synth_dither_s16() in place of old - 16 bit conversion code. - * src/fluid_settings.c: Replaced strtok stuff with new function, some - other improvements. - * src/fluid_synth.c (delete_fluid_synth): Turning off all voices so that - SoundFont data will be freed correctly (thanks to patch from - Paul Millar). - * src/fluid_sys.c (fluid_strtok): New function to replace old tokenizing - functions which required a token instance. - * src/fluidsynth.c: Warning message printed if a non option is not a - valid SoundFont or MIDI file (thanks to Nick Daly for the patch). - -2006-11-22 Josh Green - - * src/fluid_alsa.c (new_fluid_alsa_audio_driver2): Removed some ALSA - lib calls to set software parameters, which was likely causing the - 100% CPU usage problem (not actually fixed in last update, not sure - which one is the culprit). - (fluid_alsa_seq_run): More changes in ALSA sequencer code, hopefully - it is right this time! - (delete_fluid_alsa_seq_driver): Memory leak fixed - wasn't freeing - array of sequencer file descriptors. - * src/fluid_chan.c: Memory leak fixes: Now deleting preset from channel - when channel is destroyed. - * src/fluid_cmd.c: Memory leak fix: strtok being deleted from command - shell when shell is destroyed. - * src/fluid_defsfont.c: Memory leak fixes: Freeing modulator lists in - preset and instrument zones, freeing zone names, freeing instruments - linked from preset zones, replaced use of "safe_malloc" with FLUID_MALLOC - macro, deleting instrument list in SFData, deleting samples in SFData, - freeing SFData structure. - * src/fluid_settings.c: Memory leak fix: freeing options in option - type settings. - * src/fluid_synth.c: Memory leak fixes: Freeing FX buffers and - right/left_buf. - -2006-11-21 Josh Green - - * src/fluid_alsa.c (new_fluid_alsa_audio_driver2): Modified all ALSA - calls to check return code error as "< 0" as per ALSA examples, sample - rate is now compared with what was expected and warning message displays - both values, if target sample rate wasn't set update the local - period_size variable (was causing 100% CPU consumption by ALSA, from - the resultant erroneous sw_params calls). - (fluid_alsa_audio_run_float): Using case statement for - error codes from snd_pcm_writen() for the sake of tidiness. - (fluid_alsa_audio_run_s16): Using case statement for error codes - from snd_pcm_writei() for the sake of tidiness, re-instated call - of device callback function that was broken with the dither patch - (don't want to break the API), now using new fluid_synth_dither_s16() - to convert floating point sample data to 16 bit with dithering. - (fluid_alsa_seq_run): Timeout in poll() call set to 100ms (from 1ms!), - snd_seq_event_input_pending is used to check if events are available - before calling snd_seq_event_input to prevent blocking, check of - snd_seq_event_input error code moved to the right location (bug fix). - * src/fluid_synth.h: Added dither_index parameter to fluid_synth_t - structure to allow for per synth dithering continuity. - * src/fluid_synth.c: Modified dithering to use new dither_index field - for per synth dithering continuity, fixed off by 1 error with - dithering index comparison, removed usage of roundf in dithering (is - it sufficient to just integer truncate?). - (fluid_synth_dither_s16): New function to perform dithering on - buffers of floating point sample data. - -2006-11-20 Josh Green - - * src/fluid_alsa.c: Applied dithering patch from Mihail Zenkov. - * src/fluid_synth.c: Applied dithering patch from Mihail Zenkov. - -2006-03-04 Josh Green - - * src/fluid_alsa.c (delete_fluid_alsa_audio_driver): Now calling - snd_pcm_close() to close the ALSA audio driver handle. - (fluid_alsa_seq_run): Check for -ENOSPC error was logicly inverted. - (new_fluid_alsa_seq_driver): Sequencer is now opened in blocking mode. - -2006-02-20 Josh Green - - * Fixed build error that occured when neither LASH or LADCCA are - present. - * Updated README-OSX from Ebrahim Mayat. - -2006-02-18 Josh Green - * FluidSynth release 1.0.7 "Increasing Fluidity.." - - * Removed spurious newlines from FLUID_LOG statements throughout. - * AUTHORS: Some cleanup and additions. - * src/fluid_lash.[ch]: Moved LADCCA related code from fluidsynth.c here - and added new LASH support (both old LADCCA and LASH are supported - exclusively). Used patches sent by Frieder Bürzele as a guide. - * src/fluidsynth.c: Removed LADCCA code (now in fluid_lash.c), - re-organized command line parsing and removed duplicate WIN32 switch - statement, re-organized help output and added missing entries, added - "-o help" switch for listing settings, welcome message now printed - whenever FluidSynth is run and simplified, - (print_usage): hard coded application name as "fluidsynth". - * configure.ac: Changed --enable-SSE option to --enable-broken-SSE - and --enable-SSE now just displays a fat warning about not using it. - * src/fluid_jack.c: Warning is now displayed if synth sample rate - doesn't match jackd. - * src/fluid_alsa.c: Added detection for ALSA sequencer buffer overrun - (-ENOSPC) and interrupted poll() call (-1??). - * src/fluid_voice.c: Applied patch from Henri Manson which adds a - fluid_ct2hz_real() function which does not have the filter cutoff - limits that fluid_ct2hz() does, new function being used for - calculations that may include non-audible frequencies. - * src/fluid_dsound.c: Applied patch from Henri Manson which - only creates the directsound window once. - -2005-09-04 Josh Green - - * src/fluid_ramsfont.c (fluid_ramsfont_remove_izone): Applied crash bug - fix from Antoine Schmitt. - -2005-07-05 Josh Green - - * src/fluidsynth_priv.h: FLUID_ALIGN16BYTE is broken on AMD64 so now - only enabled if SSE is being used. If SSE code becomes more useful in - the future this should be fixed. - -2005-06-29 Josh Green - - * Applied LASH patch that is included with ladcca-0.4.0. - -2005-06-11 - - * Released FluidSynth 1.0.6 "Music to my ears" - - * README-OSX: Update from Ebrahim Mayat. - * acinclude.m4: Midishare support now defaults to auto. - * configure.ac: Added LT_CURRENT, LT_REVISION and LT_AGE in place of - LIBFLUIDSYNTH_MAJ and LIBFLUIDSYNTH_MIN to make better use of - libtool library versioning. Fixed use of AC_ARG_ENABLE (was setting - variables to yes even when disable was specified), fixes --disable-SSE - which was reported by Mikhail Yakshin, added warning when SSE is - enabled to let users know that this feature isn't really desirable - currently. - * src/Makefile.am: Now using LT_VERSION_INFO to substitute the libtool - version. - * src/fluid_cmd.c (fluid_cmd_handler_handle): Modified to avoid GCC - "type-punned" cast warning. - * src/fluid_defsfont.c (fluid_preset_zone_import_sfont): Fixed - assignment of modulator amtsrc flags (should be assigned to flags2 - not flags1), thanks to Stephan Tassart for reporting this. - (fluid_inst_zone_import_sfont): Same fixes as for above. - * src/fluid_sys.c (fluid_log): Now using vsnprintf for formatting - error messages to fix buffer overflow as reported by Axioplase. - (fluid_debug): Same as above. - -2005-06-11 - - * fluidsynth.prj: Added Anjuta project file. - * src/fluid_conv.c: fluid_cb2amp conversion set back to real centibels - and added a new fluid_atten2amp table conversion for non-standard - EMU 8k/10k attenuation. - * src/fluid_voice.c (fluid_voice_write): Updated volume calculations to - use fluid_cb2amp for envelope and LFO, but use fluid_atten2amp for - initial attenuation. - (fluid_voice_noteoff): Re-coded volenv_val attack conversion and - verified. - -2005-06-10 - - * src/fluid_phase.h: Patch from Sean Bolton to fix big endian long long - phase combined 64 bit value type fluid_phase_t - * src/fluid_voice.c (fluid_voice_update_param): case GEN_OVERRIDEROOTKEY - was incorrectly adding pitchadj fine tune amount instead of subtracting - it. Also, fine tuning should be applied to root key override as well. - -2005-06-07 - - * Applied Sean Bolton's DSSI patch (SB patch) which adds the ability to - change polyphony at runtime and fixes a bug (see below). - * README-OSX: Update from Ebrahim Mayat for OSX Panther. - * include/fluidsynth/synth.h: Sean Bolton's DSSI patch adds two new - functions fluid_synth_set_polyphony and fluid_synth_get_polyphony. - * src/fluid_conv.c: Centibel to amplitude conversion now follows - EMU 8k/10k which is contrary to SoundFont specification (TiMidity++ - used as an example). - * src/fluid_conv.h: FLUID_CB_POWER_FACTOR defined for the centibel->amp - conversion table equation. - * src/fluid_defsfont.c (load_pgen): Fixed 'use of cast expressions as - lvalues is deprecated' warning by casting the value being assigned - instead of the variable assigned to and removed code warrior - specific code to work around this. - (load_igen): Same as for load_pgen. - * src/fluid_synth.c: SB patch - uses synth->polyphony instead of - synth->nvoice when iterating over the synth's voices. - (fluid_synth_update_polyphony): SB patch (new) - runtime update - (fluid_synth_set_polyphony): SB patch (new) - (fluid_synth_get_polyphony): SB patch (new) - (fluid_synth_nwrite_float): SB patch - fixes bug where the use of - arbitrary values of the 'len' parameter was broken. - * src/fluid_voice.c (fluid_voice_write): modlfo_to_vol (modulation LFO - to volume) was being calculated inverted (should be negative - attenuation, gain, for a positive rise in LFO). - (fluid_voice_noteoff): Updated centibel to amplitude conversion - used when voice off during attack to use the new - FLUID_CB_POWER_FACTOR. - -2004-11-11 - - * README-OSX: Update from Ebrahim Mayat. - -2004-08-18 - - * src/fluid_synth.c (fluid_synth_set_bank_offset): - (fluid_synth_get_bank_offset): New API to set - a bank offset in a SoundFont (proposition made by Ken Ellinwood). - -2004-08-06 - - * src/fluid_synth.c (fluid_synth_noteon): - fluid_synth_release_voice_on_same_note() is now called in the - noteon() function instead of in fluid_synth_start(). This fixes - the silent note problem! - -2004-07-29 - - * src/fluid_chan.c (fluid_channel_cc): Applied Ken Ellinwood's - fix for the bank select (MSB) message. - - * src/fluid_jack.c (fluid_jack_audio_driver_settings): Applied Rui - Nuno Capela's patch - -2004-05-14 - - * doc/fluidsynth.1 (option): Fixed typo noted by Gerald Pye. - -2004-05-14 Peter Hanappe - - * src/fluid_dsound.c (fluid_dsound_enum_callback): Applied Sergey - Pavlishin's patch. This path fix stack overflow during DirectSound - audio driver initialization. - -2004-05-07 Peter Hanappe - - * src/fluid_synth.c (fluid_synth_remove_sfont): Added new function - -2004-05-05 Peter Hanappe - - * src/fluid_alsa.c (new_fluid_alsa_seq_driver): The alsa driver - now opens several ports if the synthesizer is configured for more - than 16 MIDI channels. - - * src/fluid_voice.c (fluid_voice_write): I removed the filter - on/off optimization. The filter is always on and serves as an - anti-aliasing filter. - -2004-05-04 Peter Hanappe - - * src/fluid_synth.c (new_fluid_synth): The number of MIDI channels - now has to be a multiple of 16. The synth checks that this is the - case and changes the settings accordingly. I removed the sanity - checks for the min/max value of the number of MIDI channels since - this is already done by the settings object. - -2004-03-30 Josh Green - - * src/fluid_voice.c (fluid_voice_write): Altered filter turn-off - optimization to not turn filter off once it has been - enabled. There is still a potential for a click when it gets - turned on though, which needs to be dealt with. - -2004-03-30 Peter Hanappe - - * src/fluid_dsp_core.c: I've split up the dsp core file in three - files: fluid_dsp_simple.c, fluid_dsp_float.c, and - fluid_dsp_sse.c. This improves the readability. - -2004-03-29 Peter Hanappe - - * src/fluid_jack.c (new_fluid_jack_audio_driver2): Testing the - number of ports before allocating them. - (fluid_jack_audio_driver_settings): Registering - the "audio.jack.autoconnect" setting. - - * src/fluid_midi.c (fluid_player_set_midi_tempo): Tempo changes - handled correctly. Was broken after fix on [2004-03-22] (see - below). - - * src/fluid_strtok.c (fluid_strtok_char_index): Removed printf's - from fluid_strtok.c - -2004-03-26 Peter Hanappe - - * bindings/README: Imported the fluidsynth_jni and fluidmax - projects. - -2004-03-25 Peter Hanappe - - * src/fluid_rev.c (new_fluid_revmodel): Added 'gain', similar as - in Freeverb 3. Using same 'wetscale' as Freeverb 3, but fixing - 'wet' to 3. fluid_revmodel_setlevel() does not change the value of - 'wet': The 'wet' level can be controlled with the 'reverb send'. - (fluid_revmodel_processreplace): The input is multiplied by 2 and - by the gain. This corresponds to the channel mixing and scaling - that Freeverb 3 does. - -2004-03-24 Peter Hanappe - - * src/fluidsynth.c (main): Added the -f switch. Passing "-f file" - on the command line tells fluidsynth to read parse the file and - execute and commands. - (main): User config and system config file are now loaded correctly - - * src/fluid_cmd.c (fluid_shell_run): the shell doesn't get stuck - and loop on an emtpy string when the end of the stream is reached. - - * src/fluid_io.c (fluid_istream_gets): fluid_istream_gets() - returns 0 if the end of the stream was reached and -1 on error. - - * src/fluid_cmd.c (fluid_source): Fixed bug in "file = - open(filename, FLAGS);" (I shouldn't pass O_WRONLY when what I - want is O_RDONLY!) - -2004-03-23 Peter Hanappe - - * src/fluid_aufile.c (new_fluid_file_audio_driver): Added - fluid_aufile.c. This file implements a audio driver that writes - the audio output to a file. This driver is NOT real-time and is - currently useful for testing purposes only (not even useful to - play MIDI files). - -2004-03-22 Peter Hanappe - - * src/fluid_synth.c (new_fluid_synth): Removed the synth->busy - mutex. I don't think it is necessary; to be discussed. - - * src/fluid_midi.c (fluid_player_callback): Fixed the timing in - the MIDI playback. The current MIDI tick in every timer callback - was calculated as an increment to the previous number of - ticks. This introduces a growing error due to rounding errors and - timer variations. The current tick is now calculated according to - the absolute time at the beginning of the file. (Beginners error - ...) - - * doc/FluidSynth-LADSPA.pdf: Added Markus' LADSPA design document. - - * doc/xtrafluid.txt: Added Antoine's Xtra API documentation. - - * doc/midi_time.txt: Added a memo on midi timing. - -2004-03-19 Peter Hanappe - - * src/fluid_midishare.c: Applied Stephane Letz patch: MidiShare is - now connected to fluidsynth by default so that received MIDI - events directly trigger the synth - -2004-02-28 Peter Hanappe - - * src/fluid_synth.c: Added fluid_synth_program_select2() and - fluid_synth_get_sfont_by_name() in fluid_synth.c. These functions - are not in the public API, yet. - -2004-02-25 Peter Hanappe - - * src/fluid_voice.c: Fixed bug in volume envelope (in - fluid_voice_update_param(), case GEN_VOLENVDECAY): the minimum - value was converted to linear amplitude instead of a normalized - value of the cB (1-cB/1000). Because of that, the decay section - went on for too long. - -2004-12-xx Peter Hanappe - - * src/fluid_seq.c: Inserting events in the queueLater list was - incomplete. It didn't check if the event was the last in the list, - and the looping through the list didn't update the prev pointer. I - added muteces to the sequencer. Events are dynamically allocated - if no free events are available. The sequencer is protected by a - mutex. - -2003-11-14 Josh Green - * src/fluidsynth.c: Removed CCA_Use_Jack and CCA_Use_Alsa flags - since LADCCA no longer uses them. - -2003-08-31 Josh Green - - * acinclude.m4: Renamed AC_SOUND macro to AC_OSS_AUDIO and removed - the ALSA check from it since pkg-config is now being used to check - for ALSA. Also fixed --enable-alsa-support and --enable-oss-support - which were disabling support instead (reported by Bart Massey). - * configure.ac: pkg-config is now being used to check for ALSA. - ALSA and OSS now use automake conditionals to conditionally compile - source files. - * Makefile.am: Re-arranged SUBDIRS so build output looks nicer. - * src/Makefile.am: ALSA and OSS are now conditionally compiled using - automake conditionals. - -2003-08-29 Josh Green - - * src/fluid_sys.c: Patch from Eric Van Buggenhaut to make i386 asm - code not compile for all non-i386 archs rather than just DARWIN. - * src/fluidsynth_priv.h: Patch from Sergey Pavlishin to fix - FLUID_REALLOC macro. - * src/fluid_cmd.c: Ken Ellinwood's patch to add -verbose to "channels" - command, and print settings values with 3 decimal places. - * src/fluid_defsfont.c (fluid_defsfont_sfont_get_preset): Ken - Ellinwood's patch to initialize sfont field of preset. - * src/fluid_ramsfont.c (fluid_ramsfont_sfont_get_preset): Ken - Ellinwood's patch to initialize sfont field of preset. - * src/fluid_midi.c (fluid_midi_file_read_event): Fixed a crash bug with - zero length MIDI meta events that was pointed out by Sergey Pavlishin. - (delete_fluid_midi_event): Fixed a stack overflow problem pointed out - by Sergey Pavlishin that was caused by recursively deleting MIDI - event linked list, now just using a while loop. - -2003-08-25 Josh Green - - * src/fluidsynth.c: MIDI channels switch should be -K not -L as was - listed in "Usage" output, also -K was setting audio.channels for - non getopt case statement - changed to midi.channels. Added a new - option "-l, --disable-ladcca" to disable LADCCA server connection. - -2003-08-25 Josh Green - - Release version 1.0.3 - - * doc/fluidsynth.1: Applied typo patch from Eric Van Buggenhaut. - * TODO: Restructuring TODO file (removing old stuff). - * doc/Doxyfile: Disabled Tex doxygen generation and changed - OUTPUT_DIRECTORY to api/. - * doc/Makefile.am: Added an update-docs target and related for updating - developer doc and doxygen reference HTML. Also added update-docs to - dist-hook for updating before distribution packaging. - * include/fluidsynth/synth.h: Some fixes to doxygen documentation. - * fluidsynth.spec.in: New RPM spec file which is generated at configure - time. - * Makefile.am: Added fluidsynth.spec(.in) to EXTRA_DIST. - -2003-08-19 Josh Green - - * src/fluid_alsa.c: Added some calls to snd_strerror() to print out - details of ALSA routine failures. - * src/fluid_defsfont.c: Put a message about SoundFont loading code - being borrowed from Smurf SoundFont Editor. - * src/fluid_rev.c: Valgrind found that some values were being used - uninitialized because fluid_revmodel_update() was being called before - all reverb parameters were set, now setting manually and then calling - update routine. - * src/fluid_voice.c: Increased FLUID_MAX_AUDIBLE_FILTER_FC to minimize - clicks from filter toggling. Added a FLUID_MIN_VOLENVRELEASE constant - to set the minimum volume envelope release to minimize clicks. - -2003-07-22 Josh Green - - * src/fluid_midishare.c: Added include of header "config.h" as - per Albert Graef's request. - * src/fluid_voice.c (fluid_voice_optimize_sample): Moved a - variable declaration to the beginning of function, it was - causing problems with at least one user. - -2003-06-28 Josh Green - - * src/fluid_defsfont.c: Moved call to fluid_voice_optimize_sample - from fluid_inst_zone_import_sfont to fluid_defsfont_load. Also - reduced minimum sample size before rejection from 48 to 8 (could - be lower?). - * src/fluid_voice.c (fluid_voice_optimize_sample): Added a check - for sample->valid to ignore ROM samples which was causing a crash - with Vintage Dreams and other SoundFont files with ROM samples. - -2003-06-17 Josh Green - - Release version 1.0.2 - Added Makefile.am files where lacking. - - * Makefile.am: Fixes to "make dist" target by adding macbuild, sf2 - and winbuild to SUBDIRS also removed acconfig.h from EXTRA_DIST. - * acinclude.m4: Removed AC_JACK, now using pkgconfig. - * configure.ac: Updated to version 1.0.2, Jack test now using - pkgconfig and built by default if found, coreaudio driver now built - by default if found. - * doc/Makefile.am: Added Doxyfile, example.c, example.sf2, fluidsynth.1 - and fluidsynth-v10-devdoc.xml to EXTRA_DIST. - * src/Makefile.am: fluid_jack.c now conditionally built, fluid_sse.h - added to EXTRA_DIST. - * src/fluid_jack.c: #if JACK_SUPPORT removed as its not needed. - -2003-06-15 Josh Green - - * configure.ac: Fixed detection of CoreAudio by looking for - CoreAudio/AudioHardware.h. - * src/Makefile.am: Added COREAUDIO_CFLAGS and COREAUDIO_LIBS. - * src/fluid_coreaudio.c: Added CoreAudio prefix to #include headers - (fluid_core_audio_callback): Fixed declarition to match that of the - typedef in CoreAudio header to stop warnings. - * fluidsynth.c: Now including fluidsynth_priv.h to include the arch - specific definitions in there (perhaps should be done in configure - script though). - * fluidsynth_priv.h: Added "#define WITHOUT_SERVER 1" to Darwin build. - -2003-06-12 Josh Green - - * Makefile.am: Added autogen.sh to EXTRA_DIST - * acinclude.m4: Added AM_PATH_READLINE macro for readline detection - and prefix configuration. - * configure.ac: Support for MinGW32 build, Darwin build fixes, - configure CFLAGS input value now honored, fixes to CoreAudio support, - and better readline detection and config. - * src/Makefile.am: Now conditionally compiling CoreAudio and Windows - sources, added config_*.h files to EXTRA_DIST, some stuff for MinGW32 - build, READLINE_LIBS and READLINE_CFLAGS now used. - * src/fluid_dsound.c: Fixed some warnings by adding "void" for - empty parameter procedure declarations. - * src/fluidsynth.c: Don't include config_win32.h if MinGW32. - * src/fluidsynth_priv.h: Stuff for MinGW32 and Darwin builds. - * doc/fluidsynth-v10-devdoc.xml: Applied a diff from - Alexandre Prokoudine. - -2003-06-09 Josh Green - - * src/fluid_alsa.c: Added calls to pthread_attr_setschedparam to - properly create SCHED_FIFO threads. - * src/fluid_oss.c: pthread_attr_setschedparam calls added. - * src/fluid_midishare.c: Patch update from Stephane Letz. - -2003-05-29 root - - * src/fluid_synth.c (fluid_synth_one_block): Added a mutex that - provides a small degree of protection against noteons / noteoffs, - when the audio thread is working. - - * src/fluid_synth.h (struct _fluid_synth_t): - - * src/fluid_voice.c (fluid_voice_optimize_sample): - -2003-05-29 Markus Nentwig - - * include/fluidsynth/voice.h: added fluid_voice_gen_incr to api - * src/fluidsynth.c: Added error message for command line parameter handling - * src/fluid_voice.c (fluid_voice_optimize_sample): Removed loop peak detection - at run time, because it caused dropouts. Now the sound font loader or application - is responsible to call fluid_voice_optimize_sample (if it doesn't, the turnoff optimization is - simply disabled). - -1999-11-30 Antoine Schmitt - - * src/fluid_defsfont.c: inst_zone lokey is now properly inialized to 0 - (it was not, leading to random lost noteons depending on memory - initialization) - -2003-04-03 Peter Hanappe - - * src/fluid_rev.c: reverb parameters are clipped to their valid - range. - - * src/fluid_alsa.c: using fluid_alsa_audio_run_s16 as default - function. This reduces the high CPU usage. - - * src/fluid_voice.c (fluid_voice_write): filter interpolation done - over only 1 buffer to avoid filter instability - - * src/fluid_chan.c (fluid_channel_init): bank number set to 128 - for the drum channel - - * src/fluid_midi.c (fluid_midi_file_read_event): Correctly reading - pitchbend value - -2003-02-27 Josh Green - - Updated automake files (automake 1.6). - - * configure.ac: New version autoconf variables which get substituted - into include/iiwusynth/version.h.in. - * include/iiwusynth/version.h.in: Version defines that are filled in - by autoconf. - * src/Makefile.am: Fixed SOURCES including removing headers that are - now in include/iiwusynth/, added missing sources (iiwu_ramsfont.[ch], - iiwu_sfont.h) and added iiwu_dsp_core.c to EXTRA_DIST. - * doc/Makefile.am: Added iiwusynth.1 to EXTRA_DIST. - * include/iiwusynth.h: Added version.h. - * iiwusynth/Makefile.am: Added version.h to the installed headers. - -2003-02-08 Markus Nentwig - - * src/iiwu_ladspa.c: Added a very small signal at Nyquist - frequency. This fixes denormal number problems in some - plugins. - * src/iiwu_cmd.c (iiwu_shell_run): Now also invalid input lines - are added to the command line history. So the user can just scroll - up and fix them. - * src/iiwu_ladspa.c: Cleaned up error messages - * src/iiwu_dsp_core.c: Disabled SSE interpolation, because it is - slower than the normal code - * autogen.sh: Added a line, that checks for the presence of pkg-config in - autogen.sh. - Motivation: It took me some time to figure out what was wrong... - It produces some error message instead of an obscure error later - during ./configure, if pkg-config is not installed. - -2003-02-07 Josh Green - - Applied another Bob Ham LADCCA patch. - - * src/iiwu_alsa.c: LADCCA patch: Now using a ladcca.enable setting. - * src/iiwu_jack.c: LADCCA patch: ladcca.enable setting and jack ports - are no longer auto connected unless audio.jack.autoconnect is set. - * src/iiwusynth.c: LADCCA patch: ladcca.enable and command line options - -j and --connect-jack-outputs to enable Jack autoconnect. - -2003-02-05 Josh Green - - Applied Bob Ham's LADCCA and pkgconfig patches. - - * Makefile.am: pkgconfig patch. - * configure.ac: Renamed from configure.in as per new autoconf - standards. LADCCA configure switch and detection. FluidSynth.pc - pkgconfig file output. - * src/Makefile.am: LADCCA patch. - * src/iiwu_alsa.c [HAVE_LADCCA]: LADCCA patch: reports ALSA - sequencer client ID. - * src/iiwu_jack.c [HAVE_LADCCA]: LADCCA patch: reports JACK - client name. - * src/iiwusynth.c [HAVE_LADCCA]: LADCCA patch: connects to LADCCA - server, creates client thread, saves/restores SoundFont file state. - Used iiwu_sfont_get_name macro to get SoundFont file names contrary - to the patch. Should these macros be public? Included unistd.h - for usleep call (within HAVE_LADCCA). - -2003-01-23 Josh Green - - * src/iiwu_jack.c: Fixed a segfault bug caused by freeing jack - port names, when really only the port array should be freed, - jack reference docs are confusing on this matter! - * src/iiwu_voice.c (iiwu_voice_check_sample_sanity): Min loop size - and padding now set via constants IIWU_MIN_LOOP_SIZE and - IIWU_MIN_LOOP_PAD defined at top of iiwu_voice.c, and the values - were lowered to exceed SF spec requirements rather then just meet. - (iiwu_voice_write): Now using a constant IIWU_MAX_AUDIBLE_FILTER_FC - defined at the top of iiwu_voice.c to control the filter - cutoff optimization. Also added IIWU_MIN_AUDIBLE_FILTER_Q so - filter will only turn off if both cutoff and q are determined to be - inaudible. Filter optimization is much less noticeable when modulating. - -2003-01-14 Markus Nentwig - - * src/iiwu_ladspa.c: Adapted new command handler - * src/iiwu_midi_router.c (midi_dump_prerouter): Added forgotten - 'flush' for event dump 'fprintf's - -2003-01-01 Markus Nentwig - - * src/iiwu_oss.c (new_iiwu_oss_audio_driver): Changed to callback function - * src/iiwu_alsa.c (new_iiwu_alsa_midi_driver): Changed to callback function - * src/iiwu_midishare.c (iiwu_midishare_midi_driver_receive): Partly done the same - * src/iiwu_winmidi.c (new_iiwu_winmidi_driver): To be done... - * src/iiwu_midi_router.c: Added - * src/iiwu_ladspa.c: Adapted to new settings system - * src/iiwu_adriver.c (iiwu_audio_driver_settings): Uses getint - instead of getnum for audio.period-size and audio.periods settings. - * src/iiwu_voice.c (iiwu_voice_write): - Ignore the valid flag for samples. Otherwise no sound is produced. - * src/iiwu_chan.c (iiwu_channel_cc): Fixed bank select (7-bit - instead of 8 bit) - -2002-12-23 Peter Hanappe - - * src/iiwu_io.c (iiwu_istream_readline): new file (iiwu_io.c and - iiwu_io.c) to handle IO in the shell. - - * src/iiwusynth.c (main): options to start TCP server. - - * src/iiwu_cmd.c (new_iiwu_server): New structure and functions - (new_iiwu_shell): New structure and functions to improve command - interface. - (new_iiwu_cmd_handler): New structure and functions to improve command - interface. - - * src/iiwu_sys.c (new_iiwu_server_socket): New structure and - functions - (new_iiwu_thread): New structure and - functions - -2002-12-14 Peter Hanappe - - * src/iiwu_chan.c (iiwu_channel_cc): Handling NRPN messages (NRPN - system). - - * src/iiwu_voice.c (iiwu_voice_update_param): Does more extensive - range checking because the NPRN system may produce out-of-range - values (NRPN system). - (iiwu_voice_set_param): New function to change - generator values (NRPN system). - - * src/iiwusynth_priv.h (iiwu_clip): New macro - - * src/iiwu_synth.c (iiwu_synth_set_gen): New function to change - generator values (NRPN system). - - * src/iiwu_gen.c (iiwu_gen_map_nrpn): New function to map the NRPN - data input to the parameter range (NRPN system). - - * src/iiwu_midi.c (iiwu_midi_file_read_event): Fixed metadata - buffer bug (alloc size 1 too small). - -2002-12-10 Peter Hanappe - - * src/iiwu_dsound.c (iiwu_win32_destroy_window): Filled in the - empty lines... - - * src/iiwusynth.h: Changes in the definition for iiwu_synth_sfload - and iiwu_synth_sfunload, New functions: iiwu_synth_sfreload, - iiwu_synth_get_sfont_by_id, and iiwu_list_insert_at. New 'id' - field in iiwu_font_t. - -2002-12-08 Markus Nentwig - - * src/Makefile.am: added iiwu_hash.c and iiwu_strtok.c to libiiwusynth_la_SOURCES - * src/iiwu_settings.c (iiwu_settings_init): Removed - multi_channel from the settings (replaced with audio_channels > 1) - * src/iiwu_settings.c (iiwu_settings_init): added audio_groups - setting. This is the number of individual channels generated from - the synth, and always equal to audio_channels, as long as the - LADSPA Fx unit is disabled. Otherwise it can be used (for - example) to separate even and odd MIDI channels, apply different Fx - and mix together to one stereo output. - src/iiwu_ladspa.c: Extended Fx unit to multigroup input, fx sends - and multiple audio output channels - -2002-12-04 Peter Hanappe - - * src/iiwu_midi.c (iiwu_midi_file_read_event): the metadata buffer - is now dynamically allocated. What! Dynamic memory management - already existed in the sixties! - - * src/iiwu_cmd.c (iiwu_handle_reset): New shell command. Sends - system reset. - - * src/iiwu_cmd.c (iiwu_expand_path): New function to handle - filenames starting with '~'. - - * src/iiwu_cmd.c: Added commands for working with tunings. Added - 'source' command. - - * src/iiwu_chan.h (struct _iiwu_channel_t): added tuning - - * src/iiwusynth.h: new tuning functions - - * src/iiwu_synth.c (iiwu_synth_reset_tuning): new tuning functions - - * src/iiwu_voice.c: Added tuning - -2002-12-03 Peter Hanappe - - * doc/iiwusynth.1: new man page - - * src/iiwu_midi.c (iiwu_player_load): the player now handles a - playlist. - - * src/iiwusynth.h: 'iiwu_player_add' replaces 'iiwu_player_load' - - * src/iiwusynth.c (main): iiwusynth can now play midifiles. - -2002-12-02 Peter Hanappe - - * src/iiwu_sys.c (new_iiwu_timer): New argument 'auto_destroy' to - specify whether the timer should delete it's structure when the - timer is finished. - - * src/iiwu_synth.c (iiwu_synth_sfunload): If the soundfont can not - be unloaded immediately, a timer thread is spinned of to unload it - later. On MacOS 9, the unload is tried at a subsequent 'load' or - 'unload' request. - - * src/iiwusynth.h (struct _iiwu_sample_t): Added 'refcount' field - to test when a soundfont can be unloaded. - - * src/iiwu_synth.c (iiwu_synth_nwrite_float): New function - allowing multi-channel audio output. - (iiwu_synth_init): Fixed 'amount' for pan. Now set to 500. - - * src/iiwu_cmd.c (iiwu_synth_cmdshell): Added little prompt. - - * src/iiwusynth.c (print_welcome): iiwusynth prints out a welcome - message as an well-behaved, interactive application should. - - * src/iiwu_synth.c (iiwu_synth_all_sounds_off): New function to - implement the 'All Sound Off' MIDI messages (CC 120). - (iiwu_synth_system_reset): This function now also resets the - default controller values on the MIDI channels, and clears the - reverb and chorus delay lines. - (iiwu_synth_count_midi_channels): New function to retreive the - number of available midi channels. - (iiwu_synth_count_audio_channels): New function to retreive the - number of available midi channels. - (iiwu_synth_count_effects_channels): New function to retreive the - number of available effects channels. - (iiwu_synth_get_cpu_load): New function to retreive an estimation - of the CPU load. - - * src/iiwusynth.h: Added fields to handle multi-channel audio and - a variable number of midi-channels. The 'flags' has been - expanded/replaced with several variables. - - * src/iiwu_chan.c (iiwu_channel_cc): Implemented the 'All Control - Off' MIDI message (CC 121). - - * src/iiwu_chorus.c (iiwu_chorus_update): iiwu_chorus_update - (called after the iiwu_chorus_set_xxx function) no longer returns - an error of out-of-range values. It clips the value the the - [min-max] range. - -2002-11-22 Markus Nentwig - * src/iiwu_voice.c (iiwu_voice_write): Fixed compilation problem - without --enable-SSE (Pentium II and Mac) - -2002-11-17 Markus Nentwig - - * src/iiwu_voice.c (iiwu_voice_write): Fixed nonlooped samples-bug. - * TODO (TODO): Updated - * src/iiwu_cmd.c (iiwu_handle_reverbsetlevel): Changed command - line command 'rev_setwet' to 'rev_setlevel'. Replaced the word 'wet' by - 'level' in most places. - Added a command line option --dump, which provides - 'machine-readable' output from stdout to hook up a user interface. - * src/iiwusynth.h: Moved the default values for gain, chorus and - reverb here. Might be useful as an example... - * src/iiwu_voice.c (iiwu_voice_calculate_runtime_synthesis_parameters): - Added 'scale tuning' modulator, centered around C3. - * src/iiwusynth.h: Added API functions to read the reverb state - Moved iiwu_synth_system_reset to the API - -2002-11-08 Markus Nentwig - - * src/iiwu_voice.c (iiwu_voice_write): Fixed Volume envelope delay bug - * src/iiwu_voice.c (FILTER_TRANSITION_SAMPLES): Doubled filter - fading time - * src/iiwu_mod.c (iiwu_mod_get_value): Changed convex unipolar - negative definition - * src/iiwu_voice.c (iiwu_voice_off): Cleaned up a bit, uses now - calls to iiwu_voice_off, when a voice is finished. - * src/iiwu_midi.c (iiwu_midi_parser_parse): Reimplemented - New parser should be able to cope with realtime, system common - and resynchronize. - -2002-10-31 Markus Nentwig - - * src/iiwu_alsa.c (iiwu_alsa_midi_run): Increased MIDI timeout - from 1 to 100 ms - * src/iiwu_dsp_core.c: Merged identical filter coefficients b0 and - b2 into b02 - Implemented smooth filter transitions - * src/iiwu_sys.c (iiwu_check_fpe): Added verbose FPE reporting and - systematic FPE checks. - * src/iiwu_rev.c: Added a constant DC offset to avoid slowdown - caused by denormal numbers - * src/iiwu_synth.c (delete_iiwu_synth): Fixed segv during shutdown - * src/iiwu_dsp_core.c: Fixed buffer bug (aligned-unaligned) - * src/iiwu_synth.c (iiwu_synth_damp_voices): Commented out unused code - * src/iiwu_dsp_core.c: Optimized, added SSE code, which is - this time actually faster than the default code. Well. Part of it. - * src/iiwu_voice.c: Minor clean-up - * configure.in: Added switch --enable-longlong - * configure.in: Added switch --enable-SSE - * src/iiwu_phase.h: Added 64 bit operations, documented - * src/iiwu_sse.h: Check to avoid #including the file more than once - -2002-10-29 Markus Nentwig - - * src/iiwu_voice.c: Added experimental SSE support for Pentium - III. Comment out #define SSE from iiwu_voice.c to get back to the standard version. - -2002-10-26 Markus Nentwig - - * src/iiwu_seq.c: Fixed a couple of warnings - * src/iiwu_voice.c (new_iiwu_voice): Removed iiwu_voice_init. - * src/iiwu_dsp_core.c: New 7th order interpolation. - -2002-10-24 Markus Nentwig - - * src/iiwu_voice.c(iiwu_voice_determine_amplitude_that_reaches_noise_floor_for_sample): - Added checking for invalid sample. - * src/iiwu_voice.c (iiwu_voice_write): - Moved the DSP core functions into iiwu_dsp_core.c. - Optimized, cleaned up, documented. - Amplitude scaling short => floating point is now done as the last - operation in the DSP loop (voice->amp does not include the scaling - factor anymore). - * src/iiwu_synth.c (iiwu_synth_one_block): Saved a couple of - multiplications per sample by moving the master gain into iiwu_voice_write - * src/iiwu_synth.c (iiwu_synth_free_voice_by_kill): Modified the algorithm - * src/iiwu_synth.c (iiwu_synth_alloc_voice): Noteon algorithm will - now turn off retriggered running voices ('sustain pedal problem') - -2002-10-18 Markus Nentwig - - * src/iiwu_alsa.c (new_iiwu_alsa_midi_driver): Disabled - high-priority scheduling for the MIDI thread to get rid of audio dropouts. - * src/iiwu_synth.c (iiwu_synth_free_voice_by_kill): Modified voice - killing algorithm, so that recently started voices are not killed - * src/iiwu_voice.c (iiwu_voice_run_dsp): Changed some variable - names. Extensive loop point checking, when loop points are modulated. - * src/iiwusynth.h: Added functions to read the state of the - chorus. - * src/iiwu_chorus.c: Rewrote chorus setup logic (if a parameter is - out-of-range, all other parameter changes are discarded). - * src/iiwu_voice.c: Added caching for loop peak detection: The - amplitude of the loop is only detected once for each - sample. Exception only, if the resulting loop differs from the - original loop settings of the sample (in this case, the peak - detection is still run for each noteon event). - * src/iiwusynth.h (struct _iiwu_sample_t): Added 'amplitude_that_reaches_noise_floor_is_valid' - and 'amplitude_that_reaches_noise_floor' - * src/iiwu_voice.c(iiwu_voice_calculate_runtime_synthesis_parameters): - Renamed 'iiwu_voice_optimize' - -2002-07-21 Peter Hanappe - - * src/Makefile.am (libiiwusynth_la_SOURCES): Followed Bob Ham's - suggestion for the Makefile.am to fix the problems with automake - 1.6 - -1999-11-30 Tim Goetze - * src/iiwu_synth.c (iiwu_synth_alloc_voice): New algorithm for - voice allocation, when all voice processes are in use - -1999-11-30 Markus Nentwig - * src/iiwu_synth.c (iiwu_synth_alloc_voice): Applied above patch, - -2002-07-08 Markus Nentwig - - * src/iiwu_synth.c (iiwu_synth_noteoff): Changed noteoff strategy: - Noteoff now turns off all voice processes with the same channel / - key, regardless of the voice ID (avoids stuck notes). - -2002-07-13 Peter Hanappe - * src/Makefile.am (EXTRA_libiiwusynth_la_SOURCES): Applied Takashi - Iwai's patch. The configure stuff in iiwusynth-0.2 cannot be - rebuilt with the latest automake 1.6. You cannot use substitution - for *_SOURCES in Makefile.am. This fixes this problem. - -1999-11-30 Markus Nentwig - - * src/iiwusynth.h: Added documentation, removed GEN_CHANGED (it - was unused). - - * src/iiwu_mod.c (iiwu_dump_modulator): Cleaned up - - * src/iiwu_cmd.c (iiwu_handle_help): Restructured command line - help system - -2002-06-14 Markus Nentwig - - * src/iiwu_chorus.c (iiwu_chorus_processmix): Turning off chorus now, when parameters are wrong (avoid FPE) - * src/iiwu_voice.c (iiwu_voice_write): Optimized turnoff condition for voice - -2002-06-11 Markus Nentwig - - * src/iiwu_voice.c (iiwu_voice_add_mod): Fixed bug that prevented non-default modulators from being added. - (iiwu_voice_config): Added peak detection for the sample loop, and a condition turning off the voice, - if loop peak volume and amplitude envelope combined fall below the noise floor. - -2002-06-06 Peter Hanappe - - * acinclude.m4: Fixed problems with enable/disable jack and - midishare - -2002-06-06 Tim Goetze - - * src/iiwu_synth.c (iiwu_synth_all_notes_off): Added handling of - all-notes-off midi message - -2002-06-03 Markus Nentwig - * src/iiwu_chorus.c: Fixed bug in initial phase calculation - -2002-06-02 Peter Hanappe - - * src/iiwu_jack.c: updated for new JACK types. - -2002-06-02 Bob Ham - - * acinclude.m4: Changed acinclude.m4 for configure to ignore jack. - -2002-06-02 Markus Nentwig - * autogen.sh: Added libtoolize -f to prevent error message 'libtool: ltconfig version does not match ltmain.sh version ...' - * src/iiwusynth.h: Changed iiwu_voice_add_mod_t to iiwu_voice_add_mod - * src/iiwu_synth.c: Added NULL termination to list returned by iiwu_synth_get_voicelist - * src/iiwusynth.h: Added iiwu_synth_set_chorus (API function) - * src/iiwu_synth.c: Added iiwu_synth_set_(reverb|chorus)_on (API functions) - * src/iiwu_cmd.c: Added control commands for chorus (see help) - -2002-05-26 Tim Goetze - * src/iiwu_voice.c (iiwu_voice_noteoff): Fixed conversion between - volenv-values from attack segment to later envelope segments - -2002-05-22 Markus Nentwig - - * src/iiwu_voice.c (iiwu_voice_query_ID): Added, API function - - (iiwu_voice_query_playing): Added, API function - - (iiwu_voice_write): Fixed problem with filter caused 05-18 - - * src/iiwusynth.h: Moved iiwu_voice_update_param into the API - - -2002-05-19 Markus Nentwig - - * src/iiwusynth.h (iiwu_synth_get_voicelist): Added. - - * src/iiwu_voice.c (iiwu_voice_noteoff): Added a conversion for linear to cB amplitude, when a note is turned off - during the attack phase of the volume envelope - - * src/iiwu_gen.h: Moved the generator definition to API. Changed the fields to 'double'. - - * src/iiwu_mod.c: Moved the modulator definitions to API. Changed the data type of amount to 'double'. - - * src/iiwu_voice.c (iiwu_voice_write): The condition, that quits a voice, when the amplitude - falls below a threshold now uses only the volume envelope instead of the voice amplitude. - Previously, turning a volume pedal briefly to 0 would quit all voices playing. - - * src/iiwu_rev.c (iiwu_revmodel_processreplace): Removed 'dry' path from reverb unit - Motivation: This saves a couple of multiplications, the dry signal goes through the ordinary output - anyway. - - * src/iiwusynth.h (iiwu_synth_kill_by_exclusive_class): added to API - * src/iiwu_synth.c (iiwu_synth_kill_by_exclusive_class): Extended the exclusive class function to - work with stereo samples - (iiwu_synth_set_reverb): Renamed iwu_synth_set_reverb to iiwu_synth_set_reverb_preset - iiwu_synth_set_reverb is now an API function, that allows to set all reverb parameters. - -2002-05-18 Markus Nentwig - - * src/iiwu_chorus.c: Implemented variable delay line with bandlimited interpolation. Documentation, error handling. - Removed unneeded and broken features - * src/iiwusynth_priv.h: Moved typedef struct iiwu_mod_t iiwu_mod_t into iiwusynth.h - * src/iiwusynth.h: Moved iiwu_voice_add_mod from iiwu_voice.h into iiwusynth.h (now API function). - * src/iiwu_voice.c (iiwu_voice_update_param): Inserted chorus send into DSP loop - (iiwu_voice_write): Added flag 'voice->update_filter'. Now Q can be modulated. - -2002-05-12 Markus Nentwig - - * src/iiwu_synth.c (iiwu_synth_pitch_wheel_sens): added - * src/iiwu_chan.c (iiwu_channel_pitch_wheel_sens): added - * src/iiwu_cmd.c (iiwu_handle_reverbsetwidth): changed 'wet' to - * 'width' - -2002-05-11 Markus Nentwig - - * src/iiwu_conv.c (iiwu_tc2sec): - Added more conversion functions with range check for different ranges: - (iiwu_tc2sec_attack): - (iiwu_tc2sec_hold): - (iiwu_tc2sec_release): - - * src/iiwu_voice.c (iiwu_voice_add_mod): - implemented modulator src 0 (constant mod offset) - * src/iiwu_voice.c (iiwu_voice_update_param): - sample-and envelope related voice parameters - are now handled together with other voice parameters. - Implemented generators: - GEN_KEYTOVOLENVDECAY - GEN_KEYTOVOLENVHOLD - GEN_KEYTOMODENVDECAY - GEN_KEYTOMODENVHOLD - -2002-05-10 Peter Hanappe - - * src/iiwu_synth.c (iiwu_synth_start_voice): added - iiwu_synth_start_voice() to handle exclusive classes. - -2002-05-09 Peter Hanappe - - * src/iiwu_conv.h: removed velocity to cB conversion. No longer - used. - - * src/iiwu_synth.c (iiwu_synth_write_float): removed limiter - - * src/iiwu_synth.h (IIWU_NUM_CHANNELS): set the number of channels - to 64. - - * src/iiwu_synth.c (iiwu_synth_get_internal_bufsize): added - - * src/iiwu_ladspa.h: lower-cased ladspa files - - * src/iiwusynth.h: prefixed log levels with IIWU_... Updated all - references. - - * src/iiwu_cmd.c (iiwu_handle_reverb): renamed 'rev_enable' to - 'reverb' in correspondance with the long command line arguments - - * src/iiwusynth.c (main): checking if files on command line are valid - - * src/iiwuplay.c (main): checking if files on command line are valid - - * src/iiwusynth.h: New log level for verbose messages: IIWU_INFO - -2002-04-30 Markus Nentwig - - * src: Added iiwu_LADSPA.c, iiwu_LADSPA.h (support for LADSPA effect plugins). - - * src/iiwusynth.c (main): Changed default gain to 0.2. - - * src/iiwu_voice.c: Restructured the voice initialization as follows: - (iiwu_voice_init): sample position, IIR filter history, envelopes etc. are reset. - (iiwu_voice_optimize): The generators (nominal value) have been set by the sound font. - Now each modulator is calculated once to obtain the 'final' initial value for each - generator, which consists of nominal value and modulator-contributed part. - (iiwu_voice_update_param): Calculates all voice parameters, which depend on one - particular generator. This is called once for each voice parameter during - voice_optimize and further each time, when a modulator changes a generator. - (iiwu_voice_update_param): Added a voice parameter filter_gain to avoid - recalculating the filter gain each time the center frequency changes (it depends - only on Q) - (iiwu_voice_write): Voice is now turned off, when the amplitude falls below -100 dB, - even during the sustain phase (happens, when holding a piano key for a very long time) - - * src/iiwu_voice.c (iiwu_voice_noteoff): Moved voice->chan = NO_CHANNEL into iiwu_voice_off. - Previously a released note was not modulated anymore, for example pitch bend stopped working as soon - as the key was released. - - * src/iiwu_voice.h: Changed _ON macro to figure out the state of a key from the position in - the envelope, instead of using a cleared channel number as indicator. - - * src/iiwu_synth.c: Implemented all default modulators - Added LADSPA support. - Added digital clipping. - Moved master gain factor ahead of LADSPA Fx. - - * src/iiwu_mod.c: 'Hardcoded' GM default modulator vel => filter. - Replaced 128 with 127 in (127-x) - - * src/iiwu_midi.c: Fixed sysex for realtime MIDI. Fixed pitch bend bug. - - * src/iiwu_gen.c (iiwu_gen_set_default_values): Using float instead of int for default values. - Added references to specifications (doc). Changed 'init array' function name to 'set_default' . - - * src/iiwu_defsfont.c (iiwu_preset_zone_import_sfont): Import of modulators - (iiwu_inst_zone_import_sfont): Import of modulators - (iiwu_defpreset_noteon): Added modulators, fixed generator problem (local zone overwrites global zone, previously it added) - - * src/iiwu_conv.c: Using now oncave / convex equation from SF specs. - Removed ct2hz functions and tables. - (iiwu_ct2hz): Limit checking - (iiwu_cb2amp): Removed 'magic number' - (iiwu_tc2sec): Avoided == for iiwu_real_t - - * src/iiwu_cmd.c: Increased number of tokens. Using WORKLINELENGTH constant. - Changed max. gain to 5. - Added LADSPA commands. - Renamed misleading rev_bypass command to rev_enable - - * src/iiwu_chan.c: Centered pitch wheel. Added 'expression' modulator (CC 11). - * configure.in: Added LADSPA support - -2002-04-03 Peter Hanappe - - * src/iiwu_voice.c (iiwu_voice_run_dsp): Integrated Markus - Nentwig's new filter design - - -2002-03-12 Peter Hanappe - - * src/iiwusynth.h: the preset iteration in a soundfont now takes a - pointer to a preset structure - - * src/iiwu_sys.c (iiwu_profile_data): added support for profiling - - * src/iiwu_voice.c (iiwu_voice_write): turns off voice if - amplitude < -100 dB in release phase. Set filter gain back to old - value (0.25f * ...) - - * src/iiwuplay.c (main): added gain, interactive, and reverb options - - * src/iiwusynth.c (main): added gain and reverb options - - * src/iiwu_synth.c (iiwu_synth_write_s16): added brickwall limiter for s16 samples - -2002-01-29 Stephane Letz - - * src/iiwu_midishare.c : Compilation on MacOSX, use a task for typeNote management - * src/iiwu_sys.c : Compilation on MacOSX - * src/iiwu_sys.h : Compilation on MacOSX - * src/iiwu_sfont.c : Use the flag MACINTOSH instead of MACOS - * config_macos.h : Cleanup - * config_macosx.h : New file, compilation on MacOSX - - -2002-01-21 Stephane Letz - - * src/iiwu_midi.c (delete_iiwu_midi_handler): Desallocation of heap allocated strings - * src/iiwusynth_priv.h : Definition of strdup if not available (Macintosh) - - -2002-01-16 Peter Hanappe - - * src/iiwu_alsa.c (new_iiwu_alsa_seq_driver): Applied and adjusted - Bob Ham's patch: support for configurable ALSA sequencer client - name. - - * src/iiwu_chan.c (iiwu_channel_cc): Applied Bob Ham's patch: - added bank select midi message. - - -2001-12-31 Peter Hanappe - - * src/iiwu_synth.c (iiwu_synth_damp_voices): Sustain messages are - now handled. Updated iiwu_channel and iiwu_voice. - (delete_iiwu_synth): SoundFonts are deleted. - -2001-12-21 Stephane Letz - - * src/iiwu_midishare.c (new_iiwu_midishare_midi_driver, - delete_iiwu_midishare_midi_driver): - Updated to be compiled either in driver or application mode - with the flag MIDISHARE_DRIVER. - -2001-12-20 Stephane Letz - - * src/iiwu_portaudio.c (iiwu_portaudio_run , new_iiwu_portaudio_driver): - Adaptation for new audio drivers - - * src/iiwu_synth.c (audio driver definition): - Adaptation for PortAudio driver - - * src/iiwu_sys.c (header): Adaptation for compilation on MacOS9 - - * src/iiwu_sys.h (header): Adaptation for compilation on MacOS9 - -2001-12-16 Peter Hanappe - - * src/iiwuplay.c (main): The .iiwusynth file is loaded *before* - the soundfonts on the command lines are loaded - - * src/iiwusynth.c (main): idem. - -2001-12-16 Peter Hanappe - - * src/iiwu_midi.c (iiwu_player_callback): Fixed error in midi - timing after a tempo change - - * src/iiwu_jack.c (new_iiwu_jack_audio_driver): Added first - version of JACK driver - -2001-12-14 Peter Hanappe - - * src/iiwu_synth.c (iiwu_synth_noteoff): noteon/notoff events can - print a clear message, useful for debugging. - - * src/iiwu_sys.c (struct _iiwu_timer_t ): timer moved from - iiwu_midi.c to iiwu_sys.c - - * src/iiwusynth.h: New organization of settings; using bit flags; - added verbose option - - * src/iiwusynth.c (main): Added the verbose option - - * src/iiwuplay.c (main): Added the verbose option - -2001-10-05 Stephane Letz - - * src/iiwu_portaudio.c (new_iiwu_portaudio_driver): imported new - driver for the PortAudio library. - -2001-10-04 Stephane Letz - - * src/iiwu_synth.c (new_iiwu_synth): Fixed bug in synth initialisation - -2001-10-02 Peter Hanappe - - * src/iiwu_cmd.c (iiwu_get_userconf): returns default user - configuration - (iiwu_get_sysconf): returns default system configuration - (iiwu_synth_cmdline): Fixed bug with argument offset. Empty lines - are skipped correctly. - - * src/iiwusynth.c (main): loads the user or system config - - * src/iiwuplay.c (main): loads the user or system config - - * src/iiwu_synth.c (iiwu_sp_write): Using new envelope model for - modulation envelope - -2001-09-29 Peter Hanappe - - * src/iiwu_synth.c (iiwu_sp_write): redesigned the envelopes. - -2001-09-20 Peter Hanappe - - * src/iiwu_synth.c (iiwu_sp_write): redesigned the dsp loop. it's - faster and it sounds better (!) - -2001-09-19 Peter Hanappe - - * src/iiwu_sfont.c (iiwu_sample_import_sfont): better checking for - minimum sample size, loop start and loop end offsets. - -2001-09-17 Peter Hanappe - - * src/iiwu_synth.c (iiwu_sp_write): improved calculation of filter - coefficients - (new_iiwu_synth): using settings structure - -2001-09-09 Peter Hanappe - - * src/iiwu_synth.h (iiwu_phase_decr): fixed bug - - * src/iiwu_synth.c (iiwu_synth_noteoff): noteoff now turns off the - oldest note only (instead of all notes with the given channel and - key) - -2001-07-10 Peter Hanappe - - * src/iiwu_midi.h: removed midi driver join function. updated all - structures, implementations and callers. - -2001-07-04 Peter Hanappe - - * src/iiwuplay.c (print_help): corrected errors in the help and - usage display. - -2001-06-29 Peter Hanappe - - * src/iiwu_synth.c (iiwu_synth_one_block): new function. fills the - buffer with fresh samples. - (iiwu_synth_write_lr): now calls iiwu_synth_one_block. the - synthesizer uses fixed synthesis buffer size, independent of the - requested buffer length passed to iiwu_synth_write_lr. - (iiwu_revmodel_processreplace): new uses fixed IIWU_BUFSIZE value - for buffer length. - (iiwu_revmodel_processmix): uses fixed IIWU_BUFSIZE value - -2001-06-22 Peter Hanappe - - * src/iiwusynth.c (iiwu_handle_fonts): new shell command to list - the loaded fonts. - (iiwu_handle_mstat): new shell command to list the statistics of - the midi driver. - -2001-06-19 Peter Hanappe - - * src/iiwusynth.c (main): Several command line options are - available to select the midi and audio driver and device. Using - the getopt function on posix machines. - -2001-06-16 Peter Hanappe - - * src/iiwu_synth.h: new iiwu_revmodel_presets_t structure to store - reverb presets (concert hall, room, ...) - - * src/iiwu_synth.c (iiwu_synth_write_lr): now using 1 reverb for - all synthesis processes. the synthesis processes now receive a - left and right buffer, a reverb buffer, a chorus buffer, and a - monobuffer for their temporarry storage. reverb now always on. - - (new_iiwu_sp): no longer allocating a reverb module nor a - monobuf. only one reverb model and monobuffer allocated by the - synth object (read: much less memory usage). - - * src/iiwu_midi.c (iiwu_player_callback): fixed timing - errors. midi should play correctly now. - -2001-06-09 Peter Hanappe - - * src/iiwu_synth.c (iiwu_sp_write_lr): now using a 64-bits - fixed-point number to calculate the phase of the - wavetable. because of rounding erros, the float value I used - before gave terrible tuning problems. I updated all the - intepolation macros. - - * src/iiwusynth_priv.h: included the iiwu_phase_t data type. This - type represents a 64-bits fixed-point number. It's used to hold - the phase in the wavetable. - -2001-06-08 Peter Hanappe - - * src/iiwu_midi.c (new_iiwu_midi_handler): Better support for - runtime selection of the MIDI driver (using the - iiwu_mdriver_definition_t structure) - - * src/iiwu_auport.c (new_iiwu_auport): Better support for runtime - selection of the audio driver (using the iiwu_adriver_definition_t - structure) - -2001-06-07 Peter Hanappe - - * src/iiwu_synth.c (iiwu_sp_write_lr): rewrote the dsp function to - accept a seperate left and right channel buffer. - (iiwu_sp_write_lr): using cubic hermite interpolation by default. - (iiwu_synth_write_lr): added a dsp function to accept a seperate - left and right channel buffer. - -2001-05-26 Peter Hanappe - - * src/iiwu_midi.c (iiwu_midi_parser_parse): Fixed a bug in the - midi parser (running status should not be split in a status and - channel part for system messages). - (iiwu_midi_send_event): pitch bend events are now handled - -2001-05-25 Peter Hanappe - - * src/iiwu_midi.c (iiwu_midi_file_getc): Fixed bug when pushed - back byte equals zero (mf->c >= 0) - - * src/iiwu_midi.c (iiwu_midi_file_getc): Fixed bug when pushed - back byte equals zero (mf->c >= 0) - -2001-05-24 Peter Hanappe - - * src/iiwusynth.c: added the stupidly simple interpreter - - * src/iiwu_synth.c: removed all param strcutures. - - * src/iiwu_synth.c (iiwu_channel_get_banknum): new function - -2001-05-23 Peter Hanappe - - * src/iiwu_synth.c (iiwu_sp_write): Fixed devide by zero in filter - - * src/smurf.c (gerr): applied Josh's patch: using va_list now (as - it should). - -2001-05-22 Peter Hanappe - - * src/iiwu_midi.c: the midi handler is now devided in a dummy - iiwu_midi_handler_t and a "low level" driver. This allows for - multiple midi drivers to be compiled in. - - * src/iiwusynth.h: renamed iiwu_midi_driver_t to iiwu_midi_handler_t - - * src/iiwu_auport.c (new_iiwu_auport): new "driver" argument to - select between alsa, oss, midishare, directx, ... - - * configure.in: preparing for the first pre-release, version 0.0.1 diff --git a/singe/thirdparty/fluidsynth/LICENSE b/singe/thirdparty/fluidsynth/LICENSE deleted file mode 100644 index 19e307187..000000000 --- a/singe/thirdparty/fluidsynth/LICENSE +++ /dev/null @@ -1,504 +0,0 @@ - GNU LESSER GENERAL PUBLIC LICENSE - Version 2.1, February 1999 - - Copyright (C) 1991, 1999 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -(This is the first released version of the Lesser GPL. It also counts - as the successor of the GNU Library Public License, version 2, hence - the version number 2.1.) - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software--to make sure the software is free for all its users. - - This license, the Lesser General Public License, applies to some -specially designated software packages--typically libraries--of the -Free Software Foundation and other authors who decide to use it. You -can use it too, but we suggest you first think carefully about whether -this license or the ordinary General Public License is the better -strategy to use in any particular case, based on the explanations below. - - When we speak of free software, we are referring to freedom of use, -not price. Our General Public Licenses are designed to make sure that -you have the freedom to distribute copies of free software (and charge -for this service if you wish); that you receive source code or can get -it if you want it; that you can change the software and use pieces of -it in new free programs; and that you are informed that you can do -these things. - - To protect your rights, we need to make restrictions that forbid -distributors to deny you these rights or to ask you to surrender these -rights. These restrictions translate to certain responsibilities for -you if you distribute copies of the library or if you modify it. - - For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link other code with the library, you must provide -complete object files to the recipients, so that they can relink them -with the library after making changes to the library and recompiling -it. And you must show them these terms so they know their rights. - - We protect your rights with a two-step method: (1) we copyright the -library, and (2) we offer you this license, which gives you legal -permission to copy, distribute and/or modify the library. - - To protect each distributor, we want to make it very clear that -there is no warranty for the free library. Also, if the library is -modified by someone else and passed on, the recipients should know -that what they have is not the original version, so that the original -author's reputation will not be affected by problems that might be -introduced by others. - - Finally, software patents pose a constant threat to the existence of -any free program. We wish to make sure that a company cannot -effectively restrict the users of a free program by obtaining a -restrictive license from a patent holder. Therefore, we insist that -any patent license obtained for a version of the library must be -consistent with the full freedom of use specified in this license. - - Most GNU software, including some libraries, is covered by the -ordinary GNU General Public License. This license, the GNU Lesser -General Public License, applies to certain designated libraries, and -is quite different from the ordinary General Public License. We use -this license for certain libraries in order to permit linking those -libraries into non-free programs. - - When a program is linked with a library, whether statically or using -a shared library, the combination of the two is legally speaking a -combined work, a derivative of the original library. The ordinary -General Public License therefore permits such linking only if the -entire combination fits its criteria of freedom. The Lesser General -Public License permits more lax criteria for linking other code with -the library. - - We call this license the "Lesser" General Public License because it -does Less to protect the user's freedom than the ordinary General -Public License. It also provides other free software developers Less -of an advantage over competing non-free programs. These disadvantages -are the reason we use the ordinary General Public License for many -libraries. However, the Lesser license provides advantages in certain -special circumstances. - - For example, on rare occasions, there may be a special need to -encourage the widest possible use of a certain library, so that it becomes -a de-facto standard. To achieve this, non-free programs must be -allowed to use the library. A more frequent case is that a free -library does the same job as widely used non-free libraries. In this -case, there is little to gain by limiting the free library to free -software only, so we use the Lesser General Public License. - - In other cases, permission to use a particular library in non-free -programs enables a greater number of people to use a large body of -free software. For example, permission to use the GNU C Library in -non-free programs enables many more people to use the whole GNU -operating system, as well as its variant, the GNU/Linux operating -system. - - Although the Lesser General Public License is Less protective of the -users' freedom, it does ensure that the user of a program that is -linked with the Library has the freedom and the wherewithal to run -that program using a modified version of the Library. - - The precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, whereas the latter must -be combined with the library in order to run. - - GNU LESSER GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library or other -program which contains a notice placed by the copyright holder or -other authorized party saying it may be distributed under the terms of -this Lesser General Public License (also called "this License"). -Each licensee is addressed as "you". - - A "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for -making modifications to it. For a library, complete source code means -all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control compilation -and installation of the library. - - Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's -complete source code as you receive it, in any medium, provided that -you conspicuously and appropriately publish on each copy an -appropriate copyright notice and disclaimer of warranty; keep intact -all the notices that refer to this License and to the absence of any -warranty; and distribute a copy of this License along with the -Library. - - You may charge a fee for the physical act of transferring a copy, -and you may at your option offer warranty protection in exchange for a -fee. - - 2. You may modify your copy or copies of the Library or any portion -of it, thus forming a work based on the Library, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Library, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote -it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Library. - -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. - - Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you accompany -it with the complete corresponding machine-readable source code, which -must be distributed under the terms of Sections 1 and 2 above on a -medium customarily used for software interchange. - - If distribution of object code is made by offering access to copy -from a designated place, then offering equivalent access to copy the -source code from the same place satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also combine or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (1) uses at run time a - copy of the library already present on the user's computer system, - rather than copying library functions into the executable, and (2) - will operate properly with a modified version of the library, if - the user installs one, as long as the modified version is - interface-compatible with the version that the work was made with. - - c) Accompany the work with a written offer, valid for at - least three years, to give the same user the materials - specified in Subsection 6a, above, for a charge no more - than the cost of performing this distribution. - - d) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - e) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, -the materials to be distributed need not include anything that is -normally distributed (in either source or binary form) with the major -components (compiler, kernel, and so on) of the operating system on -which the executable runs, unless that component itself accompanies -the executable. - - It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. - - 7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library is void, and will automatically terminate your -rights under this License. However, parties who have received copies, -or rights, from you under this License will not have their licenses -terminated so long as such parties remain in full compliance. - - 9. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -subject to these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties with -this License. - - 11. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Library. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply, -and the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License may add -an explicit geographical distribution limitation excluding those countries, -so that distribution is permitted only in or among countries not thus -excluded. In such case, this License incorporates the limitation as if -written in the body of this License. - - 13. The Free Software Foundation may publish revised and/or new -versions of the Lesser General Public License from time to time. -Such new versions will be similar in spirit to the present version, -but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Library -specifies a version number of this License which applies to it and -"any later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -write to the author to ask for permission. For software which is -copyrighted by the Free Software Foundation, write to the Free -Software Foundation; we sometimes make exceptions for this. Our -decision will be guided by the two goals of preserving the free status -of all derivatives of our free software and of promoting the sharing -and reuse of software generally. - - NO WARRANTY - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Libraries - - If you develop a new library, and you want it to be of the greatest -possible use to the public, we recommend making it free software that -everyone can redistribute and change. You can do so by permitting -redistribution under these terms (or, alternatively, under the terms of the -ordinary General Public License). - - To apply these terms, attach the following notices to the library. It is -safest to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least the -"copyright" line and a pointer to where the full notice is found. - - {description} - Copyright (C) {year} {fullname} - - 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 - -Also add information on how to contact you by electronic and paper mail. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the library, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - library `Frob' (a library for tweaking knobs) written by James Random - Hacker. - - {signature of Ty Coon}, 1 April 1990 - Ty Coon, President of Vice - -That's all there is to it! diff --git a/singe/thirdparty/fluidsynth/README.cmake.md b/singe/thirdparty/fluidsynth/README.cmake.md deleted file mode 100644 index 57a5893f9..000000000 --- a/singe/thirdparty/fluidsynth/README.cmake.md +++ /dev/null @@ -1,115 +0,0 @@ -## For users - how to compile FluidSynth - -The latest information on how to compile FluidSynth using the cmake build system can be found in our wiki: - -https://github.com/FluidSynth/fluidsynth/wiki/BuildingWithCMake - - -## For developers - how to add a new feature to the CMake build system - -Let's explain this issue with an example. We are adding D-Bus support to -FluidSynth as an optional feature, conditionally adding source files that -require this feature. The first step is to add a macro "option()" to the main -CMakeLists.txt file, the one that is located at the fluidsynth root directory. - -file CMakeLists.txt, line 64: - -```cmake -option ( enable-dbus "compile DBUS support (if it is available)" on ) -``` - -Now, let's check if the dbus-1 library and headers are installed, using -pkg-config: - -file CMakeLists.txt, lines 371-377: - -```cmake -unset ( DBUS_SUPPORT CACHE ) -if ( enable-dbus ) - pkg_check_modules ( DBUS dbus-1>=1.0.0 ) - set ( DBUS_SUPPORT ${DBUS_FOUND} ) -else ( enable-dbus ) - unset_pkg_config ( DBUS ) -endif ( enable-dbus ) -``` - -The first line clears the value of the CMake variable DBUS_SUPPORT. If the -value of the option "enable-dbus" is true, then the macro pkg_check_modules() -is used to test a package named "dbus-1" with version 1.0.0 or later. This macro -automatically defines the variables DBUS_LIBRARIES, DBUS_INCLUDEDIR, DBUS_FOUND -and others. The value of the last one is assigned to our variable DBUS_SUPPORT -for later use. - -There is a report to summarize the performed checks and the enabled features -after the configuration steps, so let's add a line in this report regarding -the D-Bus support. - -file cmake_admin/report.cmake, lines 14-18: - -```cmake -if ( DBUS_SUPPORT ) - message ( "D-Bus: yes" ) -else ( DBUS_SUPPORT ) - message ( "D-Bus: no" ) -endif ( DBUS_SUPPORT ) -``` - -The variable DBUS_SUPPORT is available for the CMake files, but we want to make -it available to the compilers as well, to conditionally build code using -"#ifdef DBUS_SUPPORT". This can be done adding a line to the config.cmake file: - -file src/config.cmake, lines 22-23: - -```c -/* Define if D-Bus support is enabled */ -#cmakedefine DBUS_SUPPORT @DBUS_SUPPORT@ -``` - -The file config.cmake will be processed at configure time, producing a header -file "config.h" in the build directory with this content, if the dbus support -has been enabled and found: - -```c -/* Define if D-Bus support is enabled */ -#define DBUS_SUPPORT 1 -``` - -Finally, we can add the new source files to the build system for the compiler -target with the macro add_library(), and the libraries for the linker target -with the macros link_directories() and target_link_libraries(). - -file src/CMakeLists.txt, lines 57-60 - -```cmake -if ( DBUS_SUPPORT ) - set ( fluid_dbus_SOURCES fluid_rtkit.c fluid_rtkit.h ) - include_directories ( ${DBUS_INCLUDEDIR} ${DBUS_INCLUDE_DIRS} ) -endif ( DBUS_SUPPORT ) -``` - -file src/CMakeLists.txt, lines 163-197 - -```cmake -link_directories ( - ... - ${DBUS_LIBDIR} - ${DBUS_LIBRARY_DIRS} -) - -add_library ( libfluidsynth - ... - ${fluid_dbus_SOURCES} - ... -) -``` - -file src/CMakeLists.txt, lines 163-197 - -```cmake -target_link_libraries ( libfluidsynth - ... - ${DBUS_LIBRARIES} - ... -) -``` - diff --git a/singe/thirdparty/fluidsynth/README.md b/singe/thirdparty/fluidsynth/README.md deleted file mode 100644 index 76b6d7d5b..000000000 --- a/singe/thirdparty/fluidsynth/README.md +++ /dev/null @@ -1,99 +0,0 @@ -# FluidSynth - -| Build Status | glib < 2.30 | glib >= 2.30 | -|---|---|---| -| **Linux** | n.a. | [![Build Status Travis](https://travis-ci.org/FluidSynth/fluidsynth.svg?branch=master)](https://travis-ci.org/FluidSynth/fluidsynth/branches) | -| **FreeBSD** | n.a. | [![Build Status](https://api.cirrus-ci.com/github/FluidSynth/fluidsynth.svg?branch=master)](https://cirrus-ci.com/github/FluidSynth/fluidsynth) | -| **Windows** | [![Build Status](https://dev.azure.com/tommbrt/tommbrt/_apis/build/status/FluidSynth.fluidsynth.Win?branchName=master)](https://dev.azure.com/tommbrt/tommbrt/_build/latest?definitionId=3&branchName=master) | [![Build status](https://ci.appveyor.com/api/projects/status/anbmtebt5uk4q1it/branch/master?svg=true)](https://ci.appveyor.com/project/derselbst/fluidsynth-g2ouw/branch/master) | -| **MacOSX** | n.a. | [![Build Status](https://dev.azure.com/tommbrt/tommbrt/_apis/build/status/FluidSynth.fluidsynth.macOS?branchName=master)](https://dev.azure.com/tommbrt/tommbrt/_build/latest?definitionId=5&branchName=master) | -| **Android** | n.a. | [![CircleCI](https://circleci.com/gh/FluidSynth/fluidsynth/tree/master.svg?style=shield)](https://circleci.com/gh/FluidSynth/fluidsynth) | - - - -#### FluidSynth is a cross-platform, real-time software synthesizer based on the Soundfont 2 specification. - -FluidSynth generates audio by reading and handling MIDI events from MIDI input devices by using a [SoundFont](https://github.com/FluidSynth/fluidsynth/wiki/SoundFont). It is the software analogue of a MIDI synthesizer. FluidSynth can also play MIDI files. - -[![OHLOH Project Stats](https://www.openhub.net/p/fluidsynth/widgets/project_thin_badge?format=gif)](https://www.openhub.net/p/fluidsynth) - -## Documentation - -The central place for documentation and further links is our **wiki** here at GitHub: - -**https://github.com/FluidSynth/fluidsynth/wiki** - -If you are missing parts of the documentation, let us know by writing to our mailing list. -Of course, you are welcome to edit and improve the wiki yourself. All you need is an account at GitHub. Alternatively, you may send an EMail to our mailing list along with your suggested changes. Further information about the mailing list is available in the wiki as well. - -Latest information about FluidSynth is also available on the web site at http://www.fluidsynth.org/. - -## License - -The source code for FluidSynth is distributed under the terms of the [GNU Lesser General Public License](https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html), see the [LICENSE](https://github.com/FluidSynth/fluidsynth/blob/master/LICENSE) file. To better understand the conditions how FluidSynth can be used in e.g. commercial or closed-source projects, please refer to the [LicensingFAQ in our wiki](https://github.com/FluidSynth/fluidsynth/wiki/LicensingFAQ). - -## Building from source - -For information on how to build FluidSynth from source, please [refer to our wiki](https://github.com/FluidSynth/fluidsynth/wiki/BuildingWithCMake). - -## Links - -- FluidSynth's Home Page, http://www.fluidsynth.org - -- FluidSynth's wiki, https://github.com/FluidSynth/fluidsynth/wiki - -- FluidSynth's API documentation, http://www.fluidsynth.org/api/ - ---- - -## Historical background - -### Why did we do it - -The synthesizer grew out of a project, started by Samuel Bianchini and -Peter Hanappe, and later joined by Johnathan Lee, that aimed at -developing a networked multi-user game. - -Sound (and music) was considered a very important part of the game. In -addition, users had to be able to extend the game with their own -sounds and images. Johnathan Lee proposed to use the Soundfont -standard combined with intelligent use of midifiles. The arguments -were: - -- Wavetable synthesis is low on CPU usage, it is intuitive and it can - produce rich sounds - -- Hardware acceleration is possible if the user owns a Soundfont - compatible soundcard (important for games!) - -- MIDI files are small and Soundfont2 files can be made small thru the - intelligent use of loops and wavetables. Together, they are easier to - downloaded than MP3 or audio files. - -- Graphical editors are available for both file format: various - Soundfont editors are available on PC and on Linux (Smurf!), and - MIDI sequencers are available on all platforms. - -It seemed like a good combination to use for an (online) game. - -In order to make Soundfonts available on all platforms (Linux, Mac, -and Windows) and for all sound cards, we needed a software Soundfont -synthesizer. That is why we developed FluidSynth. - -### Design decisions - -The synthesizer was designed to be as self-contained as possible for -several reasons: - -- It had to be multi-platform (Linux, macOS, Win32). It was therefore - important that the code didn't rely on any platform-specific - library. - -- It had to be easy to integrate the synthesizer modules in various - environments, as a plugin or as a dynamically loadable object. I - wanted to make the synthesizer available as a plugin (jMax, LADSPA, - Xmms, WinAmp, Director, ...); develop language bindings (Python, - Java, Perl, ...); and integrate it into (game) frameworks (Crystal - Space, SDL, ...). For these reasons I've decided it would be easiest - if the project stayed very focussed on its goal (a Soundfont - synthesizer), stayed small (ideally one file) and didn't dependent - on external code. diff --git a/singe/thirdparty/fluidsynth/THANKS b/singe/thirdparty/fluidsynth/THANKS deleted file mode 100644 index 772b40f09..000000000 --- a/singe/thirdparty/fluidsynth/THANKS +++ /dev/null @@ -1,42 +0,0 @@ -For the list of authors that contributed to the code, please read the -file AUTHORS. - - -We would like to thank the Fondation Daniel Langlois for their -funding. Their help made this project to get of the ground. Without it -would simply not exist. Many thanks! -(http://www.fondation-langlois.org) - -In alphabetic order: - -Paul Barton-Davis -Samuel Bianchini -Raoul Bonisch -Rui Nuno Capela -Jake Commander -Francois Dechelle -Ken Ellinwood -Tim Goetze -Anthony Green -Josh Green -Bob Ham -Peter Hanappe -Jezar -Fernando Pablo Lopez-Lezcano -Johnathan Lee -Stephane Letz -Ebrahim Mayat -Sven Meier -Juergen Mueller -Markus Nentwig -David Olofson -Sergey Pavlishin -Dave Phillips -Daniel Pressnitzer -Gerald Pye -Norbert Schnell -Joshua Scholar -Antoine Schmitt -Werner Schweer -Stephan Tassart -Martin Uddén diff --git a/singe/thirdparty/fluidsynth/TODO b/singe/thirdparty/fluidsynth/TODO deleted file mode 100644 index 03088ce67..000000000 --- a/singe/thirdparty/fluidsynth/TODO +++ /dev/null @@ -1,70 +0,0 @@ -New features ------------- -- Audio level metering -- Active voice count monitoring - -Synthesis ---------- -- Improve voice stealing algorithm -- Dynamic voice killing (based on CPU usage) -- Batch voice activation (stereo synch. as per SoundFont spec) -- Pitch control on stereo samples not managed as should - -Drivers -------- -- libao audio output driver -- Windows DirectMusic component -- ASIO driver -- DirectSound 3D and EAX - -Bugs to mash ------------- -- Investigate why MIDI rendering causes burst of notes at start - -Validation ----------- -- Validation tests: create soundfont with basic wave forms [sine, - square, triangle]; make test midi file; compare with SBLive output; - "regression" test -- Validate chorus (often sounds rather crappy) -- Analyse performance - -Documentation -------------- -- Write documention on tuning -- Add usage scenarios in the documentation -- User and system configuration file - -Misc ----- -- Remove dependency of settings on audio driver and other (see - fluid_settings_init()) -- When specifying -i -s (no console and TCP server) log to TCP clients - with easier parsable messages ("warning:", "error:", etc) -- Pause and resume the synthesizer/audio thread (run synthesizer as a daemon) -- set loop on/off on a sample (set_gen GEN_SAMPLEMODE?) - - -FluidSynth Next Generation --------------------------------------------- - -Top of the list -- 3D audio output - -MIDI player -- Add API to manipulate and query MIDI file list -- generalize use of fluid_event_t, remove fluid_midi_event_t - -Shell & command handler -- Add "note" command that plays a note with a duration (sequencer) -- MIDI file player commands (load/play/stop) -- Allow settings to be loaded before the synthesizer is created - -MIDI Specs -- sample dump -- MIDI thru -- Scalable Polyphony MIDI (SP-MIDI) - - -Unsorted -- rewrite midi file using new sequencer diff --git a/singe/thirdparty/fluidsynth/cmake_admin/CheckDIRSymbolExists.cmake b/singe/thirdparty/fluidsynth/cmake_admin/CheckDIRSymbolExists.cmake deleted file mode 100644 index 4e259c09c..000000000 --- a/singe/thirdparty/fluidsynth/cmake_admin/CheckDIRSymbolExists.cmake +++ /dev/null @@ -1,75 +0,0 @@ -# - Check if the DIR symbol exists like in AC_HEADER_DIRENT. -# CHECK_DIRSYMBOL_EXISTS(FILES VARIABLE) -# -# FILES - include files to check -# VARIABLE - variable to return result -# -# This module is a small but important variation on CheckSymbolExists.cmake. -# The symbol always searched for is DIR, and the test programme follows -# the AC_HEADER_DIRENT test programme rather than the CheckSymbolExists.cmake -# test programme which always fails since DIR tends to be typedef'd -# rather than #define'd. -# -# The following variables may be set before calling this macro to -# modify the way the check is run: -# -# CMAKE_REQUIRED_FLAGS = string of compile command line flags -# CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar) -# CMAKE_REQUIRED_INCLUDES = list of include directories -# CMAKE_REQUIRED_LIBRARIES = list of libraries to link - -MACRO(CHECK_DIRSYMBOL_EXISTS FILES VARIABLE) - IF(NOT DEFINED ${VARIABLE}) - SET(CMAKE_CONFIGURABLE_FILE_CONTENT "/* */\n") - SET(MACRO_CHECK_DIRSYMBOL_EXISTS_FLAGS ${CMAKE_REQUIRED_FLAGS}) - IF(CMAKE_REQUIRED_LIBRARIES) - SET(CHECK_DIRSYMBOL_EXISTS_LIBS - "-DLINK_LIBRARIES:STRING=${CMAKE_REQUIRED_LIBRARIES}") - ELSE(CMAKE_REQUIRED_LIBRARIES) - SET(CHECK_DIRSYMBOL_EXISTS_LIBS) - ENDIF(CMAKE_REQUIRED_LIBRARIES) - IF(CMAKE_REQUIRED_INCLUDES) - SET(CMAKE_DIRSYMBOL_EXISTS_INCLUDES - "-DINCLUDE_DIRECTORIES:STRING=${CMAKE_REQUIRED_INCLUDES}") - ELSE(CMAKE_REQUIRED_INCLUDES) - SET(CMAKE_DIRSYMBOL_EXISTS_INCLUDES) - ENDIF(CMAKE_REQUIRED_INCLUDES) - FOREACH(FILE ${FILES}) - SET(CMAKE_CONFIGURABLE_FILE_CONTENT - "${CMAKE_CONFIGURABLE_FILE_CONTENT}#include <${FILE}>\n") - ENDFOREACH(FILE) - SET(CMAKE_CONFIGURABLE_FILE_CONTENT - "${CMAKE_CONFIGURABLE_FILE_CONTENT}\nint main()\n{if ((DIR *) 0) return 0;}\n") - - CONFIGURE_FILE("${CMAKE_ROOT}/Modules/CMakeConfigurableFile.in" - "${CMAKE_BINARY_DIR}/CMakeFiles/CMakeTmp/CheckDIRSymbolExists.c" @ONLY) - - MESSAGE(STATUS "Looking for DIR in ${FILES}") - TRY_COMPILE(${VARIABLE} - ${CMAKE_BINARY_DIR} - ${CMAKE_BINARY_DIR}/CMakeFiles/CMakeTmp/CheckDIRSymbolExists.c - COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS} - CMAKE_FLAGS - -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_DIRSYMBOL_EXISTS_FLAGS} - "${CHECK_DIRSYMBOL_EXISTS_LIBS}" - "${CMAKE_DIRSYMBOL_EXISTS_INCLUDES}" - OUTPUT_VARIABLE OUTPUT) - IF(${VARIABLE}) - MESSAGE(STATUS "Looking for DIR in ${FILES} - found") - SET(${VARIABLE} 1 CACHE INTERNAL "Have symbol DIR") - FILE(APPEND ${CMAKE_BINARY_DIR}/CMakeFiles/CMakeOutput.log - "Determining if the DIR symbol is defined as in AC_HEADER_DIRENT " - "passed with the following output:\n" - "${OUTPUT}\nFile ${CMAKE_BINARY_DIR}/CMakeFiles/CMakeTmp/CheckDIRSymbolExists.c:\n" - "${CMAKE_CONFIGURABLE_FILE_CONTENT}\n") - ELSE(${VARIABLE}) - MESSAGE(STATUS "Looking for DIR in ${FILES} - not found.") - SET(${VARIABLE} "" CACHE INTERNAL "Have symbol DIR") - FILE(APPEND ${CMAKE_BINARY_DIR}/CMakeFiles/CMakeError.log - "Determining if the DIR symbol is defined as in AC_HEADER_DIRENT " - "failed with the following output:\n" - "${OUTPUT}\nFile ${CMAKE_BINARY_DIR}/CMakeFiles/CMakeTmp/CheckDIRSymbolExists.c:\n" - "${CMAKE_CONFIGURABLE_FILE_CONTENT}\n") - ENDIF(${VARIABLE}) - ENDIF(NOT DEFINED ${VARIABLE}) -ENDMACRO(CHECK_DIRSYMBOL_EXISTS) diff --git a/singe/thirdparty/fluidsynth/cmake_admin/CheckPrototypeExists.cmake b/singe/thirdparty/fluidsynth/cmake_admin/CheckPrototypeExists.cmake deleted file mode 100644 index 0fa6bccbc..000000000 --- a/singe/thirdparty/fluidsynth/cmake_admin/CheckPrototypeExists.cmake +++ /dev/null @@ -1,41 +0,0 @@ -# - Check if the prototype for a function exists. -# CHECK_PROTOTYPE_EXISTS (FUNCTION HEADER VARIABLE) -# -# FUNCTION - the name of the function you are looking for -# HEADER - the header(s) where the prototype should be declared -# VARIABLE - variable to store the result -# -# The following variables may be set before calling this macro to -# modify the way the check is run: -# -# CMAKE_REQUIRED_FLAGS = string of compile command line flags -# CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar) -# CMAKE_REQUIRED_INCLUDES = list of include directories - -# Copyright (c) 2006, Alexander Neundorf, -# -# Redistribution and use is allowed according to the terms of the BSD license. -# For details see the accompanying COPYING-CMAKE-SCRIPTS file. - - -INCLUDE(CheckCSourceCompiles) - -MACRO (CHECK_PROTOTYPE_EXISTS _SYMBOL _HEADER _RESULT) - SET(_INCLUDE_FILES) - FOREACH (it ${_HEADER}) - SET(_INCLUDE_FILES "${_INCLUDE_FILES}#include <${it}>\n") - ENDFOREACH (it) - - SET(_CHECK_PROTO_EXISTS_SOURCE_CODE " -${_INCLUDE_FILES} -int main() -{ -#ifndef ${_SYMBOL} - int i = sizeof(&${_SYMBOL}); -#endif - return 0; -} -") - - CHECK_C_SOURCE_COMPILES("${_CHECK_PROTO_EXISTS_SOURCE_CODE}" ${_RESULT}) -ENDMACRO (CHECK_PROTOTYPE_EXISTS _SYMBOL _HEADER _RESULT) diff --git a/singe/thirdparty/fluidsynth/cmake_admin/CheckSTDC.cmake b/singe/thirdparty/fluidsynth/cmake_admin/CheckSTDC.cmake deleted file mode 100644 index afebf0b34..000000000 --- a/singe/thirdparty/fluidsynth/cmake_admin/CheckSTDC.cmake +++ /dev/null @@ -1,36 +0,0 @@ -message(STATUS "Checking whether system has ANSI C header files") -include(CheckPrototypeExists) -include(CheckIncludeFiles) - -check_include_files("dlfcn.h;stdint.h;stddef.h;inttypes.h;stdlib.h;strings.h;string.h;float.h" StandardHeadersExist) -if(StandardHeadersExist) - check_prototype_exists(memchr string.h memchrExists) - if(memchrExists) - check_prototype_exists(free stdlib.h freeExists) - if(freeExists) - message(STATUS "ANSI C header files - found") - set(STDC_HEADERS 1 CACHE INTERNAL "System has ANSI C header files") - set(HAVE_STRINGS_H 1) - set(HAVE_STRING_H 1) - set(HAVE_FLOAT_H 1) - set(HAVE_STDLIB_H 1) - set(HAVE_STDDEF_H 1) - set(HAVE_STDINT_H 1) - set(HAVE_INTTYPES_H 1) - endif(freeExists) - endif(memchrExists) -endif(StandardHeadersExist) - -if(NOT STDC_HEADERS) - message(STATUS "ANSI C header files - not found") - set(STDC_HEADERS 0 CACHE INTERNAL "System has ANSI C header files") -endif(NOT STDC_HEADERS) - -check_include_files(unistd.h HAVE_UNISTD_H) - -include(CheckDIRSymbolExists) -check_dirsymbol_exists("sys/stat.h;sys/types.h;dirent.h" HAVE_DIRENT_H) -if (HAVE_DIRENT_H) - set(HAVE_SYS_STAT_H 1) - set(HAVE_SYS_TYPES_H 1) -endif (HAVE_DIRENT_H) diff --git a/singe/thirdparty/fluidsynth/cmake_admin/DefaultDirs.cmake b/singe/thirdparty/fluidsynth/cmake_admin/DefaultDirs.cmake deleted file mode 100644 index 0110bac71..000000000 --- a/singe/thirdparty/fluidsynth/cmake_admin/DefaultDirs.cmake +++ /dev/null @@ -1,92 +0,0 @@ -# Several directory names used by FluidSynth to install files -# the variable names are similar to the KDE4 build system - -# DEFAULT_SOUNDFONT - automatically loaded in some use cases -if ( WIN32 ) - set (DEFAULT_SOUNDFONT "C:\\\\soundfonts\\\\default.sf2" CACHE STRING - "Default soundfont file") -else ( WIN32 ) - set (DEFAULT_SOUNDFONT "${CMAKE_INSTALL_PREFIX}/share/soundfonts/default.sf2" CACHE STRING - "Default soundfont file") -endif ( WIN32 ) -mark_as_advanced (DEFAULT_SOUNDFONT) - -# BUNDLE_INSTALL_DIR - Mac only: the directory for application bundles -set (BUNDLE_INSTALL_DIR "/Applications" CACHE STRING - "The install dir for application bundles") -mark_as_advanced (BUNDLE_INSTALL_DIR) - -# FRAMEWORK_INSTALL_DIR - Mac only: the directory for framework bundles -set (FRAMEWORK_INSTALL_DIR "/Library/Frameworks" CACHE STRING - "The install dir for framework bundles") -mark_as_advanced (FRAMEWORK_INSTALL_DIR) - -# BIN_INSTALL_DIR - the directory where executables will be installed -set (BIN_INSTALL_DIR "bin" CACHE STRING "The install dir for executables") -mark_as_advanced (BIN_INSTALL_DIR) - -# SBIN_INSTALL_DIR - the directory where system executables will be installed -set (SBIN_INSTALL_DIR "sbin" CACHE STRING - "The install dir for system executables") -mark_as_advanced (SBIN_INSTALL_DIR) - -# LIB_INSTALL_DIR - the directory where libraries will be installed -set (LIB_INSTALL_DIR "lib${LIB_SUFFIX}" CACHE STRING "The install dir for libraries") -mark_as_advanced (LIB_INSTALL_DIR) - -# INCLUDE_INSTALL_DIR - the install dir for header files -set (INCLUDE_INSTALL_DIR "include" CACHE STRING "The install dir for headers") -mark_as_advanced (INCLUDE_INSTALL_DIR) - -# DATA_INSTALL_DIR - the base install directory for data files -set (DATA_INSTALL_DIR "share" CACHE STRING - "The base install dir for data files") -mark_as_advanced (DATA_INSTALL_DIR) - -# DOC_INSTALL_DIR - the install dir for documentation -set (DOC_INSTALL_DIR "share/doc" CACHE STRING - "The install dir for documentation") -mark_as_advanced (DOC_INSTALL_DIR) - -# INFO_INSTALL_DIR - the info install dir -set (INFO_INSTALL_DIR "share/info" CACHE STRING "The info install dir") -mark_as_advanced (INFO_INSTALL_DIR) - -# MAN_INSTALL_DIR - the man pages install dir -if ( CMAKE_SYSTEM_NAME MATCHES "FreeBSD|DragonFly") - set (MAN_INSTALL_DIR "man/man1" CACHE STRING "The man pages install dir") -else() - set (MAN_INSTALL_DIR "share/man/man1" CACHE STRING "The man pages install dir") -endif() -mark_as_advanced (MAN_INSTALL_DIR) - -# SYSCONF_INSTALL_DIR - the config file install dir -set (SYSCONF_INSTALL_DIR "/etc" CACHE PATH - "The sysconfig install dir") -mark_as_advanced (SYSCONF_INSTALL_DIR) - -# XDG_APPS_INSTALL_DIR - the XDG apps dir, where .desktop files are installed -set (XDG_APPS_INSTALL_DIR "share/applications" CACHE STRING "The XDG apps dir") -mark_as_advanced (XDG_APPS_INSTALL_DIR) - -# XDG_MIME_INSTALL_DIR - the XDG mimetypes install dir -set (XDG_MIME_INSTALL_DIR "share/mime/packages" CACHE STRING - "The install dir for the xdg mimetypes") -mark_as_advanced (XDG_MIME_INSTALL_DIR) - -# DBUS_INTERFACES_INSTALL_DIR - the directory where dbus interfaces are -# installed -set (DBUS_INTERFACES_INSTALL_DIR "share/dbus-1/interfaces" CACHE STRING - "The dbus interfaces install dir") -mark_as_advanced (DBUS_INTERFACES_INSTALL_DIR) - -# DBUS_SERVICES_INSTALL_DIR - the directory where dbus services are installed -set (DBUS_SERVICES_INSTALL_DIR "share/dbus-1/services" CACHE STRING - "The dbus services install dir") -mark_as_advanced (DBUS_SERVICES_INSTALL_DIR) - -# DBUS_SYSTEM_SERVICES_INSTALL_DIR - the directory where dbus system services -# are installed -set (DBUS_SYSTEM_SERVICES_INSTALL_DIR "share/dbus-1/system-services" - CACHE STRING "The dbus system services install dir") -mark_as_advanced (DBUS_SYSTEM_SERVICES_INSTALL_DIR) diff --git a/singe/thirdparty/fluidsynth/cmake_admin/FindMidiShare.cmake b/singe/thirdparty/fluidsynth/cmake_admin/FindMidiShare.cmake deleted file mode 100644 index ae625d1ae..000000000 --- a/singe/thirdparty/fluidsynth/cmake_admin/FindMidiShare.cmake +++ /dev/null @@ -1,18 +0,0 @@ -# Try to find the READLINE library -# MidiShare_FOUND - system has MidiShare -# MidiShare_INCLUDE_DIR - MidiShare include directory -# MidiShare_LIBRARIES - Libraries needed to use MidiShare - -if ( MidiShare_INCLUDE_DIR AND MidiShare_LIBRARIES ) - set ( MidiShare_FIND_QUIETLY TRUE ) -endif ( MidiShare_INCLUDE_DIR AND MidiShare_LIBRARIES ) - -find_path ( MidiShare_INCLUDE_DIR NAMES MidiShare.h ) -find_library ( MidiShare_LIBRARIES NAMES MidiShare ) - -include ( FindPackageHandleStandardArgs ) -find_package_handle_standard_args( MidiShare DEFAULT_MSG - MidiShare_INCLUDE_DIR - MidiShare_LIBRARIES ) - -mark_as_advanced( MidiShare_INCLUDE_DIR MidiShare_LIBRARIES ) diff --git a/singe/thirdparty/fluidsynth/cmake_admin/FindOSS.cmake b/singe/thirdparty/fluidsynth/cmake_admin/FindOSS.cmake deleted file mode 100644 index e20cdf56c..000000000 --- a/singe/thirdparty/fluidsynth/cmake_admin/FindOSS.cmake +++ /dev/null @@ -1,51 +0,0 @@ -# - Find Oss -# Find Oss headers and libraries. -# -# OSS_INCLUDE_DIR - where to find soundcard.h, etc. -# OSS_FOUND - True if Oss found. - - -FIND_PATH(LINUX_OSS_INCLUDE_DIR "linux/soundcard.h" - "/usr/include" "/usr/local/include" -) - -FIND_PATH(SYS_OSS_INCLUDE_DIR "sys/soundcard.h" - "/usr/include" "/usr/local/include" -) - -FIND_PATH(MACHINE_OSS_INCLUDE_DIR "machine/soundcard.h" - "/usr/include" "/usr/local/include" -) - -SET(OSS_FOUND FALSE) - - -if ( NOT WIN32 ) - - IF(LINUX_OSS_INCLUDE_DIR) - SET(OSS_FOUND TRUE) - SET(OSS_INCLUDE_DIR ${LINUX_OSS_INCLUDE_DIR}) - SET(HAVE_LINUX_SOUNDCARD_H 1) - ENDIF() - - IF(SYS_OSS_INCLUDE_DIR) - SET(OSS_FOUND TRUE) - SET(OSS_INCLUDE_DIR ${SYS_OSS_INCLUDE_DIR}) - SET(HAVE_SYS_SOUNDCARD_H 1) - ENDIF() - - IF(MACHINE_OSS_INCLUDE_DIR) - SET(OSS_FOUND TRUE) - SET(OSS_INCLUDE_DIR ${MACHINE_OSS_INCLUDE_DIR}) - SET(HAVE_MACHINE_SOUNDCARD_H 1) - ENDIF() - -ENDIF(NOT WIN32) - -MARK_AS_ADVANCED ( - OSS_FOUND - OSS_INCLUDE_DIR - LINUX_OSS_INCLUDE_DIR - SYS_OSS_INCLUDE_DIR - MACHINE_OSS_INCLUDE_DIR -) diff --git a/singe/thirdparty/fluidsynth/cmake_admin/FindReadline.cmake b/singe/thirdparty/fluidsynth/cmake_admin/FindReadline.cmake deleted file mode 100644 index 33e2e8717..000000000 --- a/singe/thirdparty/fluidsynth/cmake_admin/FindReadline.cmake +++ /dev/null @@ -1,22 +0,0 @@ -# Try to find the READLINE library -# HAVE_READLINE - system has READLINE -# READLINE_INCLUDE_DIR - READLINE include directory -# READLINE_LIBRARIES - Libraries needed to use READLINE - -if ( READLINE_INCLUDE_DIR AND READLINE_LIBRARIES ) - set ( READLINE_FIND_QUIETLY TRUE ) -endif ( READLINE_INCLUDE_DIR AND READLINE_LIBRARIES ) - -find_path ( READLINE_INCLUDE_DIR NAMES history.h readline/history.h ) -find_library ( READLINE_LIBRARIES NAMES readline ) - -if ( READLINE_INCLUDE_DIR AND READLINE_LIBRARIES ) - set ( HAVE_READLINE TRUE CACHE BOOL "Found readline header and lib" FORCE ) -endif ( READLINE_INCLUDE_DIR AND READLINE_LIBRARIES ) - -include ( FindPackageHandleStandardArgs ) -FIND_PACKAGE_HANDLE_STANDARD_ARGS( READLINE DEFAULT_MSG - READLINE_INCLUDE_DIR - READLINE_LIBRARIES ) - -mark_as_advanced( READLINE_INCLUDE_DIR READLINE_LIBRARIES HAVE_READLINE ) diff --git a/singe/thirdparty/fluidsynth/cmake_admin/FluidUnitTest.cmake b/singe/thirdparty/fluidsynth/cmake_admin/FluidUnitTest.cmake deleted file mode 100644 index 367a406c5..000000000 --- a/singe/thirdparty/fluidsynth/cmake_admin/FluidUnitTest.cmake +++ /dev/null @@ -1,28 +0,0 @@ -macro ( ADD_FLUID_TEST _test ) - ADD_EXECUTABLE(${_test} ${_test}.c $ ) - - # only build this unit test when explicitly requested by "make check" - set_target_properties(${_test} PROPERTIES EXCLUDE_FROM_ALL TRUE) - - # import necessary compile flags and dependency libraries - if ( FLUID_CPPFLAGS ) - set_target_properties ( ${_test} PROPERTIES COMPILE_FLAGS ${FLUID_CPPFLAGS} ) - endif ( FLUID_CPPFLAGS ) - TARGET_LINK_LIBRARIES(${_test} $) - - # use the local include path to look for fluidsynth.h, as we cannot be sure fluidsynth is already installed - target_include_directories(${_test} - PUBLIC - $ # include auto generated headers - $ # include "normal" public (sub-)headers - $ # include private headers - $ # include all other header search paths needed by libfluidsynth (esp. glib) - ) - - # add the test to ctest - ADD_TEST(NAME ${_test} COMMAND ${_test}) - - # append the current unit test to check-target as dependency - add_dependencies(check ${_test}) - -endmacro ( ADD_FLUID_TEST ) diff --git a/singe/thirdparty/fluidsynth/cmake_admin/TestInline.cmake b/singe/thirdparty/fluidsynth/cmake_admin/TestInline.cmake deleted file mode 100644 index 20befd9c2..000000000 --- a/singe/thirdparty/fluidsynth/cmake_admin/TestInline.cmake +++ /dev/null @@ -1,15 +0,0 @@ -include ( CheckCSourceCompiles ) -foreach ( _keyword "inline" "__inline__" "__inline" ) - if ( NOT INLINE_KEYWORD ) - set ( CMAKE_REQUIRED_DEFINITIONS "-DTESTKEYWORD=${_keyword}" ) - check_c_source_compiles ( - "typedef int foo_t; - static TESTKEYWORD foo_t static_foo(){return 0;} - foo_t foo(){return 0;} - int main(int argc, char *argv[]){return 0;}" - _have_${_keyword} ) - if ( _have_${_keyword} ) - set ( INLINE_KEYWORD ${_keyword} ) - endif ( _have_${_keyword} ) - endif ( NOT INLINE_KEYWORD ) -endforeach ( _keyword ) diff --git a/singe/thirdparty/fluidsynth/cmake_admin/TestVLA.cmake b/singe/thirdparty/fluidsynth/cmake_admin/TestVLA.cmake deleted file mode 100644 index 33e4a133e..000000000 --- a/singe/thirdparty/fluidsynth/cmake_admin/TestVLA.cmake +++ /dev/null @@ -1,9 +0,0 @@ -include ( CheckCSourceCompiles ) -if ( NOT SUPPORTS_VLA ) - check_c_source_compiles ( - "int main(int argc, char *argv[]){int arr[argc]; return 0;}" - _have_vla ) - if ( _have_vla ) - set ( SUPPORTS_VLA 1 ) - endif ( _have_vla ) -endif ( NOT SUPPORTS_VLA ) diff --git a/singe/thirdparty/fluidsynth/cmake_admin/UnsetPkgConfig.cmake b/singe/thirdparty/fluidsynth/cmake_admin/UnsetPkgConfig.cmake deleted file mode 100644 index b249d9110..000000000 --- a/singe/thirdparty/fluidsynth/cmake_admin/UnsetPkgConfig.cmake +++ /dev/null @@ -1,14 +0,0 @@ -macro ( unset_pkg_config _prefix ) - unset ( ${_prefix}_VERSION CACHE ) - unset ( ${_prefix}_PREFIX CACHE ) - unset ( ${_prefix}_CFLAGS CACHE ) - unset ( ${_prefix}_CFLAGS_OTHER CACHE ) - unset ( ${_prefix}_LDFLAGS CACHE ) - unset ( ${_prefix}_LDFLAGS_OTHER CACHE ) - unset ( ${_prefix}_LIBRARIES CACHE ) - unset ( ${_prefix}_INCLUDEDIR CACHE ) - unset ( ${_prefix}_INCLUDE_DIRS CACHE ) - unset ( ${_prefix}_LIBDIR CACHE ) - unset ( ${_prefix}_LIBRARY_DIRS CACHE ) - unset ( __pkg_config_checked_${_prefix} CACHE ) -endmacro ( unset_pkg_config ) diff --git a/singe/thirdparty/fluidsynth/cmake_admin/VersionInfo.in b/singe/thirdparty/fluidsynth/cmake_admin/VersionInfo.in deleted file mode 100644 index a6228b454..000000000 --- a/singe/thirdparty/fluidsynth/cmake_admin/VersionInfo.in +++ /dev/null @@ -1,79 +0,0 @@ -#pragma once - -#ifndef PRODUCT_VERSION_MAJOR -#define PRODUCT_VERSION_MAJOR @PRODUCT_VERSION_MAJOR@ -#endif - -#ifndef PRODUCT_VERSION_MINOR -#define PRODUCT_VERSION_MINOR @PRODUCT_VERSION_MINOR@ -#endif - -#ifndef PRODUCT_VERSION_PATCH -#define PRODUCT_VERSION_PATCH @PRODUCT_VERSION_PATCH@ -#endif - -#ifndef PRODUCT_VERSION_BUILD -#define PRODUCT_VERSION_BUILD @PRODUCT_VERSION_REVISION@ -#endif - -#ifndef FILE_VERSION_MAJOR -#define FILE_VERSION_MAJOR @PRODUCT_VERSION_MAJOR@ -#endif - -#ifndef FILE_VERSION_MINOR -#define FILE_VERSION_MINOR @PRODUCT_VERSION_MINOR@ -#endif - -#ifndef FILE_VERSION_PATCH -#define FILE_VERSION_PATCH @PRODUCT_VERSION_PATCH@ -#endif - -#ifndef FILE_VERSION_BUILD -#define FILE_VERSION_BUILD @PRODUCT_VERSION_REVISION@ -#endif - -#ifndef __TO_STRING -#define __TO_STRING_IMPL(x) #x -#define __TO_STRING(x) __TO_STRING_IMPL(x) -#endif - -#define PRODUCT_VERSION_MAJOR_MINOR_STR __TO_STRING(PRODUCT_VERSION_MAJOR) "." __TO_STRING(PRODUCT_VERSION_MINOR) -#define PRODUCT_VERSION_MAJOR_MINOR_PATCH_STR PRODUCT_VERSION_MAJOR_MINOR_STR "." __TO_STRING(PRODUCT_VERSION_PATCH) -#define PRODUCT_VERSION_FULL_STR PRODUCT_VERSION_MAJOR_MINOR_PATCH_STR "." __TO_STRING(PRODUCT_VERSION_BUILD) -#define PRODUCT_VERSION_RESOURCE PRODUCT_VERSION_MAJOR,PRODUCT_VERSION_MINOR,PRODUCT_VERSION_PATCH,PRODUCT_VERSION_BUILD -#define PRODUCT_VERSION_RESOURCE_STR PRODUCT_VERSION_FULL_STR "\0" - -#define FILE_VERSION_MAJOR_MINOR_STR __TO_STRING(FILE_VERSION_MAJOR) "." __TO_STRING(FILE_VERSION_MINOR) -#define FILE_VERSION_MAJOR_MINOR_PATCH_STR FILE_VERSION_MAJOR_MINOR_STR "." __TO_STRING(FILE_VERSION_PATCH) -#define FILE_VERSION_FULL_STR FILE_VERSION_MAJOR_MINOR_PATCH_STR "." __TO_STRING(FILE_VERSION_BUILD) -#define FILE_VERSION_RESOURCE FILE_VERSION_MAJOR,FILE_VERSION_MINOR,FILE_VERSION_PATCH,FILE_VERSION_BUILD -#define FILE_VERSION_RESOURCE_STR FILE_VERSION_FULL_STR "\0" - -#ifndef PRODUCT_COMMENTS -#define PRODUCT_COMMENTS "@PRODUCT_COMMENTS@\0" -#endif - -#ifndef PRODUCT_COMPANY_NAME -#define PRODUCT_COMPANY_NAME "@PRODUCT_COMPANY_NAME@\0" -#endif - -#ifndef PRODUCT_COMPANY_COPYRIGHT -#define PRODUCT_COMPANY_COPYRIGHT "@PRODUCT_COMPANY_COPYRIGHT@\0" -#endif - -#ifndef PRODUCT_FILE_DESCRIPTION -#define PRODUCT_FILE_DESCRIPTION "@PRODUCT_FILE_DESCRIPTION@\0" -#endif - -#ifndef PRODUCT_INTERNAL_NAME -#define PRODUCT_INTERNAL_NAME "@PRODUCT_NAME@\0" -#endif - -#ifndef PRODUCT_ORIGINAL_FILENAME -#define PRODUCT_ORIGINAL_FILENAME "@PRODUCT_ORIGINAL_FILENAME@\0" -#endif - -#ifndef PRODUCT_BUNDLE -#define PRODUCT_BUNDLE "@PRODUCT_BUNDLE@\0" -#endif - diff --git a/singe/thirdparty/fluidsynth/cmake_admin/VersionResource.rc b/singe/thirdparty/fluidsynth/cmake_admin/VersionResource.rc deleted file mode 100644 index 27bc7b309..000000000 --- a/singe/thirdparty/fluidsynth/cmake_admin/VersionResource.rc +++ /dev/null @@ -1,37 +0,0 @@ -#include "VersionInfo.h" -#include "winver.h" - -VS_VERSION_INFO VERSIONINFO - FILEVERSION FILE_VERSION_RESOURCE - PRODUCTVERSION PRODUCT_VERSION_RESOURCE - FILEFLAGSMASK VS_FFI_FILEFLAGSMASK -#ifdef _DEBUG - FILEFLAGS 0x1L -#else - FILEFLAGS 0x0L -#endif - FILEOS VOS__WINDOWS32 - FILETYPE VFT_DLL - FILESUBTYPE VFT2_UNKNOWN -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040904E4" - BEGIN - VALUE "Comments", PRODUCT_COMMENTS - VALUE "CompanyName", PRODUCT_COMPANY_NAME - VALUE "FileDescription", PRODUCT_FILE_DESCRIPTION - VALUE "FileVersion", FILE_VERSION_RESOURCE_STR - VALUE "InternalName", PRODUCT_INTERNAL_NAME - VALUE "LegalCopyright", PRODUCT_COMPANY_COPYRIGHT - VALUE "OriginalFilename", PRODUCT_ORIGINAL_FILENAME - VALUE "ProductName", PRODUCT_BUNDLE - VALUE "ProductVersion", PRODUCT_VERSION_RESOURCE_STR - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x409, 1252 - END -END - diff --git a/singe/thirdparty/fluidsynth/cmake_admin/cmake_uninstall.cmake.in b/singe/thirdparty/fluidsynth/cmake_admin/cmake_uninstall.cmake.in deleted file mode 100644 index c8ff0b7ef..000000000 --- a/singe/thirdparty/fluidsynth/cmake_admin/cmake_uninstall.cmake.in +++ /dev/null @@ -1,22 +0,0 @@ -IF(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt") - MESSAGE(FATAL_ERROR "Cannot find install manifest: \"@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt\"") -ENDIF(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt") - -FILE(READ "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt" files) -STRING(REGEX REPLACE "\n" ";" files "${files}") -FOREACH(file ${files}) - MESSAGE(STATUS "Uninstalling \"${file}\"") - IF(EXISTS "${file}") - EXEC_PROGRAM( - "@CMAKE_COMMAND@" ARGS "-E remove \"${file}\"" - OUTPUT_VARIABLE rm_out - RETURN_VALUE rm_retval - ) - IF("${rm_retval}" STREQUAL 0) - ELSE("${rm_retval}" STREQUAL 0) - MESSAGE(FATAL_ERROR "Problem when removing \"${file}\"") - ENDIF("${rm_retval}" STREQUAL 0) - ELSE(EXISTS "${file}") - MESSAGE(STATUS "File \"${file}\" does not exist.") - ENDIF(EXISTS "${file}") -ENDFOREACH(file) diff --git a/singe/thirdparty/fluidsynth/cmake_admin/generate_product_version.cmake b/singe/thirdparty/fluidsynth/cmake_admin/generate_product_version.cmake deleted file mode 100644 index b91fab29f..000000000 --- a/singe/thirdparty/fluidsynth/cmake_admin/generate_product_version.cmake +++ /dev/null @@ -1,107 +0,0 @@ -include (CMakeParseArguments) - -set (GenerateProductVersionCurrentDir ${CMAKE_CURRENT_LIST_DIR}) - -# generate_product_version() function -# -# This function uses VersionInfo.in template file and VersionResource.rc file -# to generate WIN32 resource with version information and general resource strings. -# -# Usage: -# generate_product_version( -# SomeOutputResourceVariable -# NAME MyGreatProject -# ICON ${PATH_TO_APP_ICON} -# VERSION_MAJOR 2 -# VERSION_MINOR 3 -# VERSION_PATH ${BUILD_COUNTER} -# VERSION_REVISION ${BUILD_REVISION} -# ) -# where BUILD_COUNTER and BUILD_REVISION could be values from your CI server. -# -# You can use generated resource for your executable targets: -# add_executable(target-name ${target-files} ${SomeOutputResourceVariable}) -# -# You can specify resource strings in arguments: -# NAME - name of executable (no defaults, ex: Microsoft Word) -# BUNDLE - bundle (${NAME} is default, ex: Microsoft Office) -# ICON - path to application icon (${CMAKE_SOURCE_DIR}/product.ico by default) -# VERSION_MAJOR - 1 is default -# VERSION_MINOR - 0 is default -# VERSION_PATCH - 0 is default -# VERSION_REVISION - 0 is default -# COMPANY_NAME - your company name (no defaults) -# COMPANY_COPYRIGHT - ${COMPANY_NAME} (C) Copyright ${CURRENT_YEAR} is default -# COMMENTS - ${NAME} v${VERSION_MAJOR}.${VERSION_MINOR} is default -# ORIGINAL_FILENAME - ${NAME} is default -# INTERNAL_NAME - ${NAME} is default -# FILE_DESCRIPTION - ${NAME} is default -function(generate_product_version outfiles) - set (options) - set (oneValueArgs - NAME - BUNDLE - VERSION_MAJOR - VERSION_MINOR - VERSION_PATCH - VERSION_REVISION - COMPANY_NAME - COMPANY_COPYRIGHT - COMMENTS - ORIGINAL_FILENAME - INTERNAL_NAME - FILE_DESCRIPTION) - set (multiValueArgs) - cmake_parse_arguments(PRODUCT "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) - - if (NOT PRODUCT_BUNDLE OR "${PRODUCT_BUNDLE}" STREQUAL "") - set(PRODUCT_BUNDLE "${PRODUCT_NAME}") - endif() -# if (NOT PRODUCT_ICON OR "${PRODUCT_ICON}" STREQUAL "") -# set(PRODUCT_ICON "${CMAKE_SOURCE_DIR}/product.ico") -# endif() - - if (NOT PRODUCT_VERSION_MAJOR OR "${PRODUCT_VERSION_MAJOR}" STREQUAL "") - set(PRODUCT_VERSION_MAJOR 1) - endif() - if (NOT PRODUCT_VERSION_MINOR OR "${PRODUCT_VERSION_MINOR}" STREQUAL "") - set(PRODUCT_VERSION_MINOR 0) - endif() - if (NOT PRODUCT_VERSION_PATCH OR "${PRODUCT_VERSION_PATCH}" STREQUAL "") - set(PRODUCT_VERSION_PATCH 0) - endif() - if (NOT PRODUCT_VERSION_REVISION OR "${PRODUCT_VERSION_REVISION}" STREQUAL "") - set(PRODUCT_VERSION_REVISION 0) - endif() - - if (NOT PRODUCT_COMPANY_COPYRIGHT OR "${PRODUCT_COMPANY_COPYRIGHT}" STREQUAL "") - string(TIMESTAMP PRODUCT_CURRENT_YEAR "%Y") - set(PRODUCT_COMPANY_COPYRIGHT "${PRODUCT_COMPANY_NAME} (C) Copyright ${PRODUCT_CURRENT_YEAR}") - endif() - if (NOT PRODUCT_COMMENTS OR "${PRODUCT_COMMENTS}" STREQUAL "") - set(PRODUCT_COMMENTS "${PRODUCT_NAME} v${PRODUCT_VERSION_MAJOR}.${PRODUCT_VERSION_MINOR}") - endif() - if (NOT PRODUCT_ORIGINAL_FILENAME OR "${PRODUCT_ORIGINAL_FILENAME}" STREQUAL "") - set(PRODUCT_ORIGINAL_FILENAME "${PRODUCT_NAME}") - endif() - if (NOT PRODUCT_INTERNAL_NAME OR "${PRODUCT_INTERNAL_NAME}" STREQUAL "") - set(PRODUCT_INTERNAL_NAME "${PRODUCT_NAME}") - endif() - if (NOT PRODUCT_FILE_DESCRIPTION OR "${PRODUCT_FILE_DESCRIPTION}" STREQUAL "") - set(PRODUCT_FILE_DESCRIPTION "${PRODUCT_NAME}") - endif() - - set (_VersionInfoFile ${CMAKE_CURRENT_BINARY_DIR}/VersionInfo.h) - set (_VersionResourceFile ${CMAKE_CURRENT_BINARY_DIR}/VersionResource.rc) - configure_file( - ${GenerateProductVersionCurrentDir}/VersionInfo.in - ${_VersionInfoFile} - @ONLY) - configure_file( - ${GenerateProductVersionCurrentDir}/VersionResource.rc - ${_VersionResourceFile} - COPYONLY) - list(APPEND ${outfiles} ${_VersionInfoFile} ${_VersionResourceFile}) - set (${outfiles} ${${outfiles}} PARENT_SCOPE) -endfunction() - diff --git a/singe/thirdparty/fluidsynth/cmake_admin/report.cmake b/singe/thirdparty/fluidsynth/cmake_admin/report.cmake deleted file mode 100644 index e8868ce63..000000000 --- a/singe/thirdparty/fluidsynth/cmake_admin/report.cmake +++ /dev/null @@ -1,239 +0,0 @@ - -set ( AUDIO_MIDI_REPORT "\n" ) - -if ( ALSA_SUPPORT ) - set ( AUDIO_MIDI_REPORT "${AUDIO_MIDI_REPORT} ALSA: yes\n" ) -else ( ALSA_SUPPORT ) - set ( AUDIO_MIDI_REPORT "${AUDIO_MIDI_REPORT} ALSA: no\n" ) -endif ( ALSA_SUPPORT ) - -if ( COREAUDIO_SUPPORT ) - set ( AUDIO_MIDI_REPORT "${AUDIO_MIDI_REPORT} CoreAudio: yes\n" ) -else ( COREAUDIO_SUPPORT ) - set ( AUDIO_MIDI_REPORT "${AUDIO_MIDI_REPORT} CoreAudio: no\n" ) -endif ( COREAUDIO_SUPPORT ) - -if ( COREMIDI_SUPPORT ) - set ( AUDIO_MIDI_REPORT "${AUDIO_MIDI_REPORT} CoreMIDI: yes\n" ) -else ( COREMIDI_SUPPORT ) - set ( AUDIO_MIDI_REPORT "${AUDIO_MIDI_REPORT} CoreMIDI: no\n" ) -endif ( COREMIDI_SUPPORT ) - -if ( DSOUND_SUPPORT ) - set ( AUDIO_MIDI_REPORT "${AUDIO_MIDI_REPORT} DSound: yes\n" ) -else ( DSOUND_SUPPORT ) - set ( AUDIO_MIDI_REPORT "${AUDIO_MIDI_REPORT} DSound: no\n" ) -endif ( DSOUND_SUPPORT ) - -if ( JACK_SUPPORT ) - set ( AUDIO_MIDI_REPORT "${AUDIO_MIDI_REPORT} JACK: yes\n" ) -else ( JACK_SUPPORT ) - set ( AUDIO_MIDI_REPORT "${AUDIO_MIDI_REPORT} JACK: no\n" ) -endif ( JACK_SUPPORT ) - -if ( MIDISHARE_SUPPORT ) - set ( AUDIO_MIDI_REPORT "${AUDIO_MIDI_REPORT} MidiShare: yes\n" ) -else ( MIDISHARE_SUPPORT ) - set ( AUDIO_MIDI_REPORT "${AUDIO_MIDI_REPORT} MidiShare: no\n" ) -endif ( MIDISHARE_SUPPORT ) - -if ( OBOE_SUPPORT ) - set ( AUDIO_MIDI_REPORT "${AUDIO_MIDI_REPORT} Oboe: yes\n" ) -else ( OBOE_SUPPORT ) - set ( AUDIO_MIDI_REPORT "${AUDIO_MIDI_REPORT} Oboe: no\n" ) -endif ( OBOE_SUPPORT ) - -if ( OPENSLES_SUPPORT ) - set ( AUDIO_MIDI_REPORT "${AUDIO_MIDI_REPORT} OpenSLES: yes\n" ) -else ( OPENSLES_SUPPORT ) - set ( AUDIO_MIDI_REPORT "${AUDIO_MIDI_REPORT} OpenSLES: no\n" ) -endif ( OPENSLES_SUPPORT ) - -if ( DART_SUPPORT ) - set ( AUDIO_MIDI_REPORT "${AUDIO_MIDI_REPORT} OS/2 DART: yes\n" ) -else ( DART_SUPPORT ) - set ( AUDIO_MIDI_REPORT "${AUDIO_MIDI_REPORT} OS/2 DART: no\n" ) -endif ( DART_SUPPORT ) - -if ( OSS_SUPPORT ) - set ( AUDIO_MIDI_REPORT "${AUDIO_MIDI_REPORT} OSS: yes\n" ) -else ( OSS_SUPPORT ) - set ( AUDIO_MIDI_REPORT "${AUDIO_MIDI_REPORT} OSS: no\n" ) -endif ( OSS_SUPPORT ) - -if ( PORTAUDIO_SUPPORT ) - set ( AUDIO_MIDI_REPORT "${AUDIO_MIDI_REPORT} PortAudio: yes\n" ) -else ( PORTAUDIO_SUPPORT ) - set ( AUDIO_MIDI_REPORT "${AUDIO_MIDI_REPORT} PortAudio: no\n" ) -endif ( PORTAUDIO_SUPPORT ) - -if ( PULSE_SUPPORT ) - set ( AUDIO_MIDI_REPORT "${AUDIO_MIDI_REPORT} PulseAudio: yes\n" ) -else ( PULSE_SUPPORT ) - set ( AUDIO_MIDI_REPORT "${AUDIO_MIDI_REPORT} PulseAudio: no\n" ) -endif ( PULSE_SUPPORT ) - -if ( SDL2_SUPPORT ) - set ( AUDIO_MIDI_REPORT "${AUDIO_MIDI_REPORT} SDL2: yes\n" ) -else ( SDL2_SUPPORT ) - set ( AUDIO_MIDI_REPORT "${AUDIO_MIDI_REPORT} SDL2: no\n" ) -endif ( SDL2_SUPPORT ) - -if ( WAVEOUT_SUPPORT ) - set ( AUDIO_MIDI_REPORT "${AUDIO_MIDI_REPORT} WaveOut: yes\n" ) -else ( WAVEOUT_SUPPORT ) - set ( AUDIO_MIDI_REPORT "${AUDIO_MIDI_REPORT} WaveOut: no\n" ) -endif ( WAVEOUT_SUPPORT ) - -if ( WINMIDI_SUPPORT ) - set ( AUDIO_MIDI_REPORT "${AUDIO_MIDI_REPORT} WinMidi: yes\n" ) -else ( WINMIDI_SUPPORT ) - set ( AUDIO_MIDI_REPORT "${AUDIO_MIDI_REPORT} WinMidi: no\n" ) -endif ( WINMIDI_SUPPORT ) - - -set ( INPUTS_REPORT "\n" ) - -set ( INPUTS_REPORT "${INPUTS_REPORT}Support for SF3 files: " ) -if ( LIBSNDFILE_HASVORBIS ) - set ( INPUTS_REPORT "${INPUTS_REPORT}yes\n" ) -elseif ( NOT LIBSNDFILE_SUPPORT ) - set ( INPUTS_REPORT "${INPUTS_REPORT}no (libsndfile not found)\n" ) -elseif ( NOT LIBSNDFILE_HASVORBIS ) - set ( INPUTS_REPORT "${INPUTS_REPORT}no (libsndfile has no ogg vorbis support)\n" ) -endif ( LIBSNDFILE_HASVORBIS ) - - -set ( INPUTS_REPORT "${INPUTS_REPORT}Support for DLS files: " ) -if ( LIBINSTPATCH_SUPPORT ) - set ( INPUTS_REPORT "${INPUTS_REPORT}yes\n" ) -else ( LIBINSTPATCH_SUPPORT ) - set ( INPUTS_REPORT "${INPUTS_REPORT}no (libinstpatch not found)\n" ) -endif ( LIBINSTPATCH_SUPPORT ) - - -set ( RENDERING_REPORT "\n" ) - -if ( AUFILE_SUPPORT ) - set ( RENDERING_REPORT "${RENDERING_REPORT}Audio to file rendering: yes\n" ) -else ( AUFILE_SUPPORT ) - set ( RENDERING_REPORT "${RENDERING_REPORT}Audio to file rendering: no\n" ) -endif ( AUFILE_SUPPORT ) - -if ( LIBSNDFILE_SUPPORT ) - set ( RENDERING_REPORT "${RENDERING_REPORT} libsndfile: yes\n" ) -else ( LIBSNDFILE_SUPPORT ) - set ( RENDERING_REPORT "${RENDERING_REPORT} libsndfile: no (RAW PCM rendering only)\n" ) -endif ( LIBSNDFILE_SUPPORT ) - - -set ( MISC_REPORT "\nMiscellaneous support:\n" ) - -if ( DBUS_SUPPORT ) - set ( MISC_REPORT "${MISC_REPORT} D-Bus: yes\n" ) -else ( DBUS_SUPPORT ) - set ( MISC_REPORT "${MISC_REPORT} D-Bus: no\n" ) -endif ( DBUS_SUPPORT ) - -if ( LADSPA_SUPPORT ) - set ( MISC_REPORT "${MISC_REPORT} LADSPA support: yes\n" ) -else ( LADSPA_SUPPORT ) - set ( MISC_REPORT "${MISC_REPORT} LADSPA support: no\n" ) -endif ( LADSPA_SUPPORT ) - -if ( LASH_SUPPORT ) - set ( MISC_REPORT "${MISC_REPORT} LASH support: yes (NOTE: GPL library)\n" ) -else ( LASH_SUPPORT ) - set ( MISC_REPORT "${MISC_REPORT} LASH support: no\n" ) -endif ( LASH_SUPPORT ) - -if ( NETWORK_SUPPORT ) - set ( MISC_REPORT "${MISC_REPORT} NETWORK Support: yes\n" ) -else ( NETWORK_SUPPORT ) - set ( MISC_REPORT "${MISC_REPORT} NETWORK Support: no\n" ) -endif ( NETWORK_SUPPORT ) - -if ( IPV6_SUPPORT ) - set ( MISC_REPORT "${MISC_REPORT} IPV6 Support: yes\n" ) -else ( IPV6_SUPPORT ) - set ( MISC_REPORT "${MISC_REPORT} IPV6 Support: no\n" ) -endif ( IPV6_SUPPORT ) - -if ( WITH_READLINE ) - set ( MISC_REPORT "${MISC_REPORT} Readline: yes (NOTE: GPL library)\n" ) -else ( WITH_READLINE ) - set ( MISC_REPORT "${MISC_REPORT} Readline: no\n" ) -endif ( WITH_READLINE ) - -if ( SYSTEMD_SUPPORT ) - set ( MISC_REPORT "${MISC_REPORT} systemd: yes\n" ) -else ( SYSTEMD_SUPPORT ) - set ( MISC_REPORT "${MISC_REPORT} systemd: no\n" ) -endif ( SYSTEMD_SUPPORT ) - - -set ( DEVEL_REPORT "\nDeveloper nerds info:\n" ) - -if ( WITH_FLOAT ) - set ( DEVEL_REPORT "${DEVEL_REPORT} Samples type: float\n" ) -else ( WITH_FLOAT ) - set ( DEVEL_REPORT "${DEVEL_REPORT} Samples type: double\n" ) -endif ( WITH_FLOAT ) - -if ( ENABLE_MIXER_THREADS ) - set ( DEVEL_REPORT "${DEVEL_REPORT} Multithread rendering: yes\n" ) -else ( ENABLE_MIXER_THREADS ) - set ( DEVEL_REPORT "${DEVEL_REPORT} Multithread rendering: no\n" ) -endif ( ENABLE_MIXER_THREADS ) - -if ( HAVE_OPENMP ) - set ( DEVEL_REPORT "${DEVEL_REPORT} OpenMP 4.0: yes\n" ) -else ( HAVE_OPENMP ) - set ( DEVEL_REPORT "${DEVEL_REPORT} OpenMP 4.0: no\n" ) -endif ( HAVE_OPENMP ) - -if ( WITH_PROFILING ) - set ( DEVEL_REPORT "${DEVEL_REPORT} Profiling: yes\n" ) -else ( WITH_PROFILING ) - set ( DEVEL_REPORT "${DEVEL_REPORT} Profiling: no\n" ) -endif ( WITH_PROFILING ) - -if ( ENABLE_DEBUG ) - set ( DEVEL_REPORT "${DEVEL_REPORT} Debug Build: yes\n" ) -else ( ENABLE_DEBUG ) - set ( DEVEL_REPORT "${DEVEL_REPORT} Debug Build: no\n" ) -endif ( ENABLE_DEBUG ) - -if ( ENABLE_TRAPONFPE ) - set ( DEVEL_REPORT "${DEVEL_REPORT} Trap on FPE (debug): yes\n" ) -else ( ENABLE_TRAPONFPE ) - set ( DEVEL_REPORT "${DEVEL_REPORT} Trap on FPE (debug): no\n" ) -endif ( ENABLE_TRAPONFPE ) - -if ( ENABLE_FPECHECK ) - set ( DEVEL_REPORT "${DEVEL_REPORT} Check FPE (debug): yes\n" ) -else ( ENABLE_FPECHECK ) - set ( DEVEL_REPORT "${DEVEL_REPORT} Check FPE (debug): no\n" ) -endif ( ENABLE_FPECHECK ) - -if ( ENABLE_UBSAN ) - set ( DEVEL_REPORT "${DEVEL_REPORT} UBSan (debug): yes\n" ) -else ( ENABLE_UBSAN ) - set ( DEVEL_REPORT "${DEVEL_REPORT} UBSan (debug): no\n" ) -endif ( ENABLE_UBSAN ) - -message( STATUS - "\n**************************************************************\n" - "Build Summary:\n" - "Build type: " ${CMAKE_BUILD_TYPE} "\n" - "Install Prefix: " ${CMAKE_INSTALL_PREFIX} "\n" - "\n" - "Audio / MIDI driver support:" - ${AUDIO_MIDI_REPORT} - ${INPUTS_REPORT} - ${RENDERING_REPORT} - ${MISC_REPORT} - ${DEVEL_REPORT} - ) - -message ( "**************************************************************\n\n" ) diff --git a/singe/thirdparty/fluidsynth/doc/CMakeLists.txt b/singe/thirdparty/fluidsynth/doc/CMakeLists.txt deleted file mode 100644 index 799d95747..000000000 --- a/singe/thirdparty/fluidsynth/doc/CMakeLists.txt +++ /dev/null @@ -1,35 +0,0 @@ -# FluidSynth - A Software Synthesize -# -# Copyright (C) 2003-2010 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 -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -# 02111-1307, USA - -# CMake based build system. Pedro Lopez-Cabanillas - -find_package ( Doxygen ) -if ( DOXYGEN_FOUND ) - configure_file ( Doxyfile.cmake - ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile ) - add_custom_target ( doxygen - ${DOXYGEN} Doxyfile - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - ) -endif ( DOXYGEN_FOUND ) - -if ( UNIX ) - install ( FILES fluidsynth.1 - DESTINATION ${MAN_INSTALL_DIR} ) -endif ( UNIX ) diff --git a/singe/thirdparty/fluidsynth/doc/Doxyfile b/singe/thirdparty/fluidsynth/doc/Doxyfile deleted file mode 100644 index 8c8481b10..000000000 --- a/singe/thirdparty/fluidsynth/doc/Doxyfile +++ /dev/null @@ -1,246 +0,0 @@ -# Doxyfile 1.6 - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- -DOXYFILE_ENCODING = UTF-8 -PROJECT_NAME = libfluidsynth -PROJECT_NUMBER = 2.1.0RC -OUTPUT_DIRECTORY = api -CREATE_SUBDIRS = NO -OUTPUT_LANGUAGE = English -BRIEF_MEMBER_DESC = YES -REPEAT_BRIEF = YES -ABBREVIATE_BRIEF = "The $name class" "The $name widget" "The $name file" is provides specifies contains represents a an the -ALWAYS_DETAILED_SEC = NO -INLINE_INHERITED_MEMB = NO -FULL_PATH_NAMES = NO -STRIP_FROM_PATH = ../ -STRIP_FROM_INC_PATH = ../include/ -SHORT_NAMES = NO -JAVADOC_AUTOBRIEF = YES -QT_AUTOBRIEF = NO -MULTILINE_CPP_IS_BRIEF = NO -INHERIT_DOCS = YES -SEPARATE_MEMBER_PAGES = NO -TAB_SIZE = 8 -ALIASES = -OPTIMIZE_OUTPUT_FOR_C = YES -OPTIMIZE_OUTPUT_JAVA = NO -OPTIMIZE_FOR_FORTRAN = NO -OPTIMIZE_OUTPUT_VHDL = NO -BUILTIN_STL_SUPPORT = NO -CPP_CLI_SUPPORT = NO -SIP_SUPPORT = NO -IDL_PROPERTY_SUPPORT = YES -DISTRIBUTE_GROUP_DOC = NO -SUBGROUPING = NO -TYPEDEF_HIDES_STRUCT = NO -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- -EXTRACT_ALL = NO -EXTRACT_PRIVATE = NO -EXTRACT_STATIC = NO -EXTRACT_LOCAL_CLASSES = NO -EXTRACT_LOCAL_METHODS = NO -EXTRACT_ANON_NSPACES = NO -HIDE_UNDOC_MEMBERS = YES -HIDE_UNDOC_CLASSES = YES -HIDE_FRIEND_COMPOUNDS = NO -HIDE_IN_BODY_DOCS = NO -INTERNAL_DOCS = NO -CASE_SENSE_NAMES = YES -HIDE_SCOPE_NAMES = NO -SHOW_INCLUDE_FILES = NO -INLINE_INFO = YES -SORT_MEMBER_DOCS = NO -SORT_BRIEF_DOCS = NO -SORT_GROUP_NAMES = NO -SORT_BY_SCOPE_NAME = NO -GENERATE_TODOLIST = NO -GENERATE_TESTLIST = NO -GENERATE_BUGLIST = NO -GENERATE_DEPRECATEDLIST = YES -ENABLED_SECTIONS = -MAX_INITIALIZER_LINES = 30 -SHOW_USED_FILES = YES -SHOW_DIRECTORIES = NO -SHOW_FILES = YES -SHOW_NAMESPACES = YES -FILE_VERSION_FILTER = -#--------------------------------------------------------------------------- -# configuration options related to warning and progress messages -#--------------------------------------------------------------------------- -QUIET = NO -WARNINGS = YES -WARN_IF_UNDOCUMENTED = YES -WARN_IF_DOC_ERROR = YES -WARN_NO_PARAMDOC = YES -WARN_FORMAT = "$file:$line: $text" -WARN_LOGFILE = -#--------------------------------------------------------------------------- -# configuration options related to the input files -#--------------------------------------------------------------------------- -INPUT = ../doc/fluidsynth-v20-devdoc.txt ../include ../include/fluidsynth ../src -INPUT_ENCODING = UTF-8 -FILE_PATTERNS = *.c *.h -RECURSIVE = YES -EXCLUDE = -EXCLUDE_SYMLINKS = NO -EXCLUDE_PATTERNS = fluid_*.h -EXCLUDE_SYMBOLS = -EXAMPLE_PATH = ../doc -EXAMPLE_PATTERNS = *.c -EXAMPLE_RECURSIVE = NO -IMAGE_PATH = -INPUT_FILTER = -FILTER_PATTERNS = -FILTER_SOURCE_FILES = NO -#--------------------------------------------------------------------------- -# configuration options related to source browsing -#--------------------------------------------------------------------------- -SOURCE_BROWSER = NO -INLINE_SOURCES = NO -STRIP_CODE_COMMENTS = YES -REFERENCED_BY_RELATION = YES -REFERENCES_RELATION = YES -REFERENCES_LINK_SOURCE = YES -USE_HTAGS = NO -VERBATIM_HEADERS = NO -#--------------------------------------------------------------------------- -# configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- -ALPHABETICAL_INDEX = YES -COLS_IN_ALPHA_INDEX = 5 -IGNORE_PREFIX = -#--------------------------------------------------------------------------- -# configuration options related to the HTML output -#--------------------------------------------------------------------------- -GENERATE_HTML = YES -HTML_OUTPUT = html -HTML_FILE_EXTENSION = .html -HTML_HEADER = -HTML_FOOTER = -HTML_EXTRA_STYLESHEET = ../doc/doxy_formula.css -HTML_ALIGN_MEMBERS = YES -HTML_EXTRA_FILES = ../doc/fluidsettings.xml ../doc/fluidsettings.xsl -GENERATE_HTMLHELP = NO -GENERATE_DOCSET = NO -DOCSET_FEEDNAME = "Doxygen generated docs" -DOCSET_BUNDLE_ID = org.doxygen.Project -HTML_DYNAMIC_SECTIONS = YES -CHM_FILE = -HHC_LOCATION = -GENERATE_CHI = NO -CHM_INDEX_ENCODING = -BINARY_TOC = NO -TOC_EXPAND = NO -DISABLE_INDEX = NO -ENUM_VALUES_PER_LINE = 4 -GENERATE_TREEVIEW = NO -TREEVIEW_WIDTH = 250 -FORMULA_FONTSIZE = 10 -#--------------------------------------------------------------------------- -# configuration options related to the LaTeX output -#--------------------------------------------------------------------------- -GENERATE_LATEX = NO -LATEX_OUTPUT = latex -LATEX_CMD_NAME = latex -MAKEINDEX_CMD_NAME = makeindex -COMPACT_LATEX = NO -PAPER_TYPE = a4wide -EXTRA_PACKAGES = -LATEX_HEADER = -PDF_HYPERLINKS = YES -USE_PDFLATEX = YES -LATEX_BATCHMODE = NO -LATEX_HIDE_INDICES = NO -#--------------------------------------------------------------------------- -# configuration options related to the RTF output -#--------------------------------------------------------------------------- -GENERATE_RTF = NO -RTF_OUTPUT = rtf -COMPACT_RTF = NO -RTF_HYPERLINKS = NO -RTF_STYLESHEET_FILE = -RTF_EXTENSIONS_FILE = -#--------------------------------------------------------------------------- -# configuration options related to the man page output -#--------------------------------------------------------------------------- -GENERATE_MAN = NO -MAN_OUTPUT = man -MAN_EXTENSION = .3 -MAN_LINKS = NO -#--------------------------------------------------------------------------- -# configuration options related to the XML output -#--------------------------------------------------------------------------- -GENERATE_XML = NO -XML_OUTPUT = xml -XML_SCHEMA = -XML_DTD = -XML_PROGRAMLISTING = YES -#--------------------------------------------------------------------------- -# configuration options for the AutoGen Definitions output -#--------------------------------------------------------------------------- -GENERATE_AUTOGEN_DEF = NO -#--------------------------------------------------------------------------- -# configuration options related to the Perl module output -#--------------------------------------------------------------------------- -GENERATE_PERLMOD = NO -PERLMOD_LATEX = NO -PERLMOD_PRETTY = YES -PERLMOD_MAKEVAR_PREFIX = -#--------------------------------------------------------------------------- -# Configuration options related to the preprocessor -#--------------------------------------------------------------------------- -ENABLE_PREPROCESSING = YES -MACRO_EXPANSION = NO -EXPAND_ONLY_PREDEF = NO -SEARCH_INCLUDES = YES -INCLUDE_PATH = -INCLUDE_FILE_PATTERNS = -PREDEFINED = __DOXYGEN__ -EXPAND_AS_DEFINED = -SKIP_FUNCTION_MACROS = YES -#--------------------------------------------------------------------------- -# Configuration::additions related to external references -#--------------------------------------------------------------------------- -TAGFILES = -GENERATE_TAGFILE = -ALLEXTERNALS = NO -EXTERNAL_GROUPS = YES -PERL_PATH = /usr/bin/perl -#--------------------------------------------------------------------------- -# Configuration options related to the dot tool -#--------------------------------------------------------------------------- -CLASS_DIAGRAMS = YES -MSCGEN_PATH = -HIDE_UNDOC_RELATIONS = YES -HAVE_DOT = NO -DOT_FONTNAME = FreeSans -DOT_FONTPATH = -CLASS_GRAPH = YES -COLLABORATION_GRAPH = YES -GROUP_GRAPHS = YES -UML_LOOK = NO -TEMPLATE_RELATIONS = YES -INCLUDE_GRAPH = YES -INCLUDED_BY_GRAPH = YES -CALL_GRAPH = NO -CALLER_GRAPH = NO -GRAPHICAL_HIERARCHY = YES -DIRECTORY_GRAPH = YES -DOT_IMAGE_FORMAT = png -DOT_PATH = -DOTFILE_DIRS = -DOT_GRAPH_MAX_NODES = 50 -MAX_DOT_GRAPH_DEPTH = 1000 -DOT_TRANSPARENT = YES -DOT_MULTI_TARGETS = NO -GENERATE_LEGEND = YES -DOT_CLEANUP = YES -#--------------------------------------------------------------------------- -# Configuration::additions related to the search engine -#--------------------------------------------------------------------------- -SEARCHENGINE = YES diff --git a/singe/thirdparty/fluidsynth/doc/Doxyfile.cmake b/singe/thirdparty/fluidsynth/doc/Doxyfile.cmake deleted file mode 100644 index 096b9e5d4..000000000 --- a/singe/thirdparty/fluidsynth/doc/Doxyfile.cmake +++ /dev/null @@ -1,246 +0,0 @@ -# Doxyfile 1.6 - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- -DOXYFILE_ENCODING = UTF-8 -PROJECT_NAME = libfluidsynth -PROJECT_NUMBER = @VERSION@ -OUTPUT_DIRECTORY = api -CREATE_SUBDIRS = NO -OUTPUT_LANGUAGE = English -BRIEF_MEMBER_DESC = YES -REPEAT_BRIEF = YES -ABBREVIATE_BRIEF = "The $name class" "The $name widget" "The $name file" is provides specifies contains represents a an the -ALWAYS_DETAILED_SEC = NO -INLINE_INHERITED_MEMB = NO -FULL_PATH_NAMES = NO -STRIP_FROM_PATH = @CMAKE_SOURCE_DIR@/ -STRIP_FROM_INC_PATH = @CMAKE_SOURCE_DIR@/include/ -SHORT_NAMES = NO -JAVADOC_AUTOBRIEF = YES -QT_AUTOBRIEF = NO -MULTILINE_CPP_IS_BRIEF = NO -INHERIT_DOCS = YES -SEPARATE_MEMBER_PAGES = NO -TAB_SIZE = 8 -ALIASES = -OPTIMIZE_OUTPUT_FOR_C = YES -OPTIMIZE_OUTPUT_JAVA = NO -OPTIMIZE_FOR_FORTRAN = NO -OPTIMIZE_OUTPUT_VHDL = NO -BUILTIN_STL_SUPPORT = NO -CPP_CLI_SUPPORT = NO -SIP_SUPPORT = NO -IDL_PROPERTY_SUPPORT = YES -DISTRIBUTE_GROUP_DOC = NO -SUBGROUPING = NO -TYPEDEF_HIDES_STRUCT = NO -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- -EXTRACT_ALL = NO -EXTRACT_PRIVATE = NO -EXTRACT_STATIC = NO -EXTRACT_LOCAL_CLASSES = NO -EXTRACT_LOCAL_METHODS = NO -EXTRACT_ANON_NSPACES = NO -HIDE_UNDOC_MEMBERS = YES -HIDE_UNDOC_CLASSES = YES -HIDE_FRIEND_COMPOUNDS = NO -HIDE_IN_BODY_DOCS = NO -INTERNAL_DOCS = NO -CASE_SENSE_NAMES = YES -HIDE_SCOPE_NAMES = NO -SHOW_INCLUDE_FILES = NO -INLINE_INFO = YES -SORT_MEMBER_DOCS = NO -SORT_BRIEF_DOCS = NO -SORT_GROUP_NAMES = NO -SORT_BY_SCOPE_NAME = NO -GENERATE_TODOLIST = NO -GENERATE_TESTLIST = NO -GENERATE_BUGLIST = NO -GENERATE_DEPRECATEDLIST = YES -ENABLED_SECTIONS = -MAX_INITIALIZER_LINES = 30 -SHOW_USED_FILES = YES -SHOW_DIRECTORIES = NO -SHOW_FILES = YES -SHOW_NAMESPACES = YES -FILE_VERSION_FILTER = -#--------------------------------------------------------------------------- -# configuration options related to warning and progress messages -#--------------------------------------------------------------------------- -QUIET = NO -WARNINGS = YES -WARN_IF_UNDOCUMENTED = YES -WARN_IF_DOC_ERROR = YES -WARN_NO_PARAMDOC = YES -WARN_FORMAT = "$file:$line: $text" -WARN_LOGFILE = -#--------------------------------------------------------------------------- -# configuration options related to the input files -#--------------------------------------------------------------------------- -INPUT = @CMAKE_SOURCE_DIR@/doc/fluidsynth-v20-devdoc.txt @CMAKE_SOURCE_DIR@/include @CMAKE_SOURCE_DIR@/include/fluidsynth @CMAKE_SOURCE_DIR@/src @CMAKE_BINARY_DIR@/include/fluidsynth -INPUT_ENCODING = UTF-8 -FILE_PATTERNS = *.c *.h -RECURSIVE = YES -EXCLUDE = -EXCLUDE_SYMLINKS = NO -EXCLUDE_PATTERNS = fluid_*.h -EXCLUDE_SYMBOLS = -EXAMPLE_PATH = @CMAKE_SOURCE_DIR@/doc -EXAMPLE_PATTERNS = *.c -EXAMPLE_RECURSIVE = NO -IMAGE_PATH = -INPUT_FILTER = -FILTER_PATTERNS = -FILTER_SOURCE_FILES = NO -#--------------------------------------------------------------------------- -# configuration options related to source browsing -#--------------------------------------------------------------------------- -SOURCE_BROWSER = NO -INLINE_SOURCES = NO -STRIP_CODE_COMMENTS = YES -REFERENCED_BY_RELATION = YES -REFERENCES_RELATION = YES -REFERENCES_LINK_SOURCE = YES -USE_HTAGS = NO -VERBATIM_HEADERS = NO -#--------------------------------------------------------------------------- -# configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- -ALPHABETICAL_INDEX = YES -COLS_IN_ALPHA_INDEX = 5 -IGNORE_PREFIX = -#--------------------------------------------------------------------------- -# configuration options related to the HTML output -#--------------------------------------------------------------------------- -GENERATE_HTML = YES -HTML_OUTPUT = html -HTML_FILE_EXTENSION = .html -HTML_HEADER = -HTML_FOOTER = -HTML_EXTRA_STYLESHEET = @CMAKE_SOURCE_DIR@/doc/doxy_formula.css -HTML_ALIGN_MEMBERS = YES -HTML_EXTRA_FILES = @CMAKE_SOURCE_DIR@/doc/fluidsettings.xml @CMAKE_SOURCE_DIR@/doc/fluidsettings.xsl -GENERATE_HTMLHELP = NO -GENERATE_DOCSET = NO -DOCSET_FEEDNAME = "Doxygen generated docs" -DOCSET_BUNDLE_ID = org.doxygen.Project -HTML_DYNAMIC_SECTIONS = YES -CHM_FILE = -HHC_LOCATION = -GENERATE_CHI = NO -CHM_INDEX_ENCODING = -BINARY_TOC = NO -TOC_EXPAND = NO -DISABLE_INDEX = NO -ENUM_VALUES_PER_LINE = 4 -GENERATE_TREEVIEW = NO -TREEVIEW_WIDTH = 250 -FORMULA_FONTSIZE = 10 -#--------------------------------------------------------------------------- -# configuration options related to the LaTeX output -#--------------------------------------------------------------------------- -GENERATE_LATEX = NO -LATEX_OUTPUT = latex -LATEX_CMD_NAME = latex -MAKEINDEX_CMD_NAME = makeindex -COMPACT_LATEX = NO -PAPER_TYPE = a4wide -EXTRA_PACKAGES = -LATEX_HEADER = -PDF_HYPERLINKS = YES -USE_PDFLATEX = YES -LATEX_BATCHMODE = NO -LATEX_HIDE_INDICES = NO -#--------------------------------------------------------------------------- -# configuration options related to the RTF output -#--------------------------------------------------------------------------- -GENERATE_RTF = NO -RTF_OUTPUT = rtf -COMPACT_RTF = NO -RTF_HYPERLINKS = NO -RTF_STYLESHEET_FILE = -RTF_EXTENSIONS_FILE = -#--------------------------------------------------------------------------- -# configuration options related to the man page output -#--------------------------------------------------------------------------- -GENERATE_MAN = NO -MAN_OUTPUT = man -MAN_EXTENSION = .3 -MAN_LINKS = NO -#--------------------------------------------------------------------------- -# configuration options related to the XML output -#--------------------------------------------------------------------------- -GENERATE_XML = NO -XML_OUTPUT = xml -XML_SCHEMA = -XML_DTD = -XML_PROGRAMLISTING = YES -#--------------------------------------------------------------------------- -# configuration options for the AutoGen Definitions output -#--------------------------------------------------------------------------- -GENERATE_AUTOGEN_DEF = NO -#--------------------------------------------------------------------------- -# configuration options related to the Perl module output -#--------------------------------------------------------------------------- -GENERATE_PERLMOD = NO -PERLMOD_LATEX = NO -PERLMOD_PRETTY = YES -PERLMOD_MAKEVAR_PREFIX = -#--------------------------------------------------------------------------- -# Configuration options related to the preprocessor -#--------------------------------------------------------------------------- -ENABLE_PREPROCESSING = YES -MACRO_EXPANSION = NO -EXPAND_ONLY_PREDEF = NO -SEARCH_INCLUDES = YES -INCLUDE_PATH = -INCLUDE_FILE_PATTERNS = -PREDEFINED = __DOXYGEN__ -EXPAND_AS_DEFINED = -SKIP_FUNCTION_MACROS = YES -#--------------------------------------------------------------------------- -# Configuration::additions related to external references -#--------------------------------------------------------------------------- -TAGFILES = -GENERATE_TAGFILE = -ALLEXTERNALS = NO -EXTERNAL_GROUPS = YES -PERL_PATH = /usr/bin/perl -#--------------------------------------------------------------------------- -# Configuration options related to the dot tool -#--------------------------------------------------------------------------- -CLASS_DIAGRAMS = YES -MSCGEN_PATH = -HIDE_UNDOC_RELATIONS = YES -HAVE_DOT = NO -DOT_FONTNAME = FreeSans -DOT_FONTPATH = -CLASS_GRAPH = YES -COLLABORATION_GRAPH = YES -GROUP_GRAPHS = YES -UML_LOOK = NO -TEMPLATE_RELATIONS = YES -INCLUDE_GRAPH = YES -INCLUDED_BY_GRAPH = YES -CALL_GRAPH = NO -CALLER_GRAPH = NO -GRAPHICAL_HIERARCHY = YES -DIRECTORY_GRAPH = YES -DOT_IMAGE_FORMAT = png -DOT_PATH = -DOTFILE_DIRS = -DOT_GRAPH_MAX_NODES = 50 -MAX_DOT_GRAPH_DEPTH = 1000 -DOT_TRANSPARENT = YES -DOT_MULTI_TARGETS = NO -GENERATE_LEGEND = YES -DOT_CLEANUP = YES -#--------------------------------------------------------------------------- -# Configuration::additions related to the search engine -#--------------------------------------------------------------------------- -SEARCHENGINE = YES diff --git a/singe/thirdparty/fluidsynth/doc/FluidProfile_0004.pdf b/singe/thirdparty/fluidsynth/doc/FluidProfile_0004.pdf deleted file mode 100644 index f41ea27ad3c7ac6edf5c01688491d592b30967be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 314112 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 z59%0DR*WsB~wtsOq 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͆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 LadOIQD3JXxrw-?d diff --git a/singe/thirdparty/fluidsynth/doc/FluidSostenuto-005.pdf b/singe/thirdparty/fluidsynth/doc/FluidSostenuto-005.pdf deleted file mode 100644 index bda591c5d70727536aa7ff6c9479c7a8c03bf9af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21440 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