--- linuxsampler/trunk/configure.in 2005/07/23 21:55:38 714 +++ linuxsampler/trunk/configure.in 2005/12/22 21:04:35 821 @@ -99,6 +99,9 @@ fi fi +# check for +AC_CHECK_HEADERS(feature.h) + # Checks for available audio and MIDI systems / drivers # (we throw an error if there's not at least one system for audio output and MIDI input available) have_midi_input_driver="false" @@ -212,7 +215,7 @@ AC_DEFINE_UNQUOTED(HAVE_COREMIDI,$have_coremidi,[Define to 1 if you have CoreMIDI installed.]) # Check presence of libgig -libgig_version="2.0.1" +libgig_version="2.0.2" PKG_CHECK_MODULES(GIG, gig >= $libgig_version, HAVE_GIG=true, HAVE_GIG=false) if test "$HAVE_GIG" = "false"; then echo "Required libgig version not found!" @@ -259,27 +262,27 @@ # TODO: should we use AC_ARG_VAR(variable, description) instead? AC_ARG_ENABLE(asm, - [ --disable-asm - Disable hand-crafted assembly optimizations - (default=on). LinuxSampler provides CPU specific + [ --enable-asm + Enable hand-crafted assembly optimizations + (default=off). LinuxSampler provides CPU specific assembly optimizations for the most important - synthesis algorithms. You usually don't want to - disable that.], - [config_asm="no"], - [config_asm="yes"] + synthesis algorithms. This is currently disabled + by default since current asm code is broken.], + [config_asm="yes"], + [config_asm="no"] ) if test "$config_asm" = "yes"; then AC_DEFINE_UNQUOTED(CONFIG_ASM, 1, [Define to 1 if you want to enable hand-crafted asm optimizations.]) fi AC_ARG_ENABLE(dev-mode, - [ --enable-dev-mode - Enable development mode (default=no). In that mode + [ --disable-dev-mode + Disable development mode (default=on). In that mode we do some extra sanity checks here and there. This helps to spot possible problems, but reduces efficiency a bit], - [config_dev_mode="yes"], - [config_dev_mode="no"] + [config_dev_mode="no"], + [config_dev_mode="yes"] ) if test "$config_dev_mode" = "yes"; then AC_DEFINE_UNQUOTED(CONFIG_DEVMODE, 1, [Define to 1 if you want to enable development mode.]) @@ -436,6 +439,31 @@ ) AC_DEFINE_UNQUOTED(CONFIG_MAX_VOICES, $config_max_voices, [Define max. voices.]) +AC_ARG_ENABLE(subfragment-size, + [ --enable-subfragment-size + Every audio fragment will be splitted into + subfragments. Where each subfragment renders + audio with constant synthesis parameters. This is + done for efficiency reasons. This parameter + defines the default size of a subfragment in + sample points. A large value means less CPU time + whereas a low value means better audio quality + (default=32).], + [config_subfragment_size="${enableval}"], + [config_subfragment_size="32"] +) +AC_DEFINE_UNQUOTED(CONFIG_DEFAULT_SUBFRAGMENT_SIZE, $config_subfragment_size, [Define default subfragment size (in sample points).]) + +AC_ARG_ENABLE(global-attenuation, + [ --enable-global-attenuation + To prevent clipping all samples will be lowered + in amplitude by this given factor. + (default=0.35)], + [config_global_attenuation="${enableval}"], + [config_global_attenuation="0.35"] +) +AC_DEFINE_UNQUOTED(CONFIG_GLOBAL_ATTENUATION, $config_global_attenuation, [Define global volume attenuation (as floating point factor).]) + AC_ARG_ENABLE(voice-steal-algo, [ --enable-voice-steal-algo Voice stealing algorithm to be used. Currently @@ -469,18 +497,6 @@ ) AC_DEFINE_UNQUOTED(CONFIG_SYSEX_BUFFER_SIZE, $config_sysex_buffer_size, [Define SysEx buffer size.]) -AC_ARG_ENABLE(filter-update-steps, - [ --enable-filter-update-steps - Amount of sample points after which filter - parameters (cutoff, resonance) are going to be - updated (default=64). Higher value means less CPU - load, but also worse parameter resolution, this - value will be aligned to a power of two.], - [config_filter_update_steps="${enableval}"], - [config_filter_update_steps="64"] -) -AC_DEFINE_UNQUOTED(CONFIG_FILTER_UPDATE_STEPS, $config_filter_update_steps, [Define amount of steps to refresh filter coefficients.]) - AC_ARG_ENABLE(force-filter, [ --enable-force-filter If enabled will force filter to be used even if @@ -591,6 +607,12 @@ Uses integer math without any branch will then be converted to floating point value for each sample point. This int->float conversion might hurt on some systems. + intmathabs: + Similar to intmath but uses abs() function. + Depending on compiler and platrofm this could + perform better than integer math as it avoids + an extra integer multiply instruction. + diharmonic: The triangular wave will be approximated by adding two sinusoidials. This solution might especially hurt on @@ -602,6 +624,7 @@ benchmark between the algorithms mentioned above. This will NOT work for cross compilation!], [ if test ! "(" "${enableval}" = "intmath" \ + -o "${enableval}" = "intmathabs" \ -o "${enableval}" = "diharmonic" ")" ; then AC_MSG_ERROR([Unknown triangular wave algorithm for parameter --enable-signed-triang-algo]) else @@ -619,6 +642,12 @@ Uses integer math without any branch will then be converted to floating point value for each sample point. This int->float conversion might hurt on some systems. + intmathabs: + Similar to intmath but uses abs() function. + Depending on compiler and platrofm this could + perform better than integer math as it avoids + an extra integer multiply instruction. + diharmonic: The triangular wave will be approximated by adding two sinusoidials. This solution might especially hurt on @@ -630,6 +659,7 @@ benchmark between the algorithms mentioned above. This will NOT work for cross compilation!], [ if test ! "(" "${enableval}" = "intmath" \ + -o "${enableval}" = "intmathabs" \ -o "${enableval}" = "diharmonic" ")" ; then AC_MSG_ERROR([Unknown triangular wave algorithm for parameter --enable-unsigned-triang-algo]) else @@ -639,6 +669,22 @@ [config_unsigned_triang_algo="benchmark"] ) +AC_ARG_ENABLE(process-muted-channels, + [ --enable-process-muted-channels + Enable processing of muted channels (default=no). + In that mode all MIDI events in the muted channels + will be processed. This will provide information + about the active voices in the muted channels and + will not discard notes, triggered in mute mode, + when the channel is unmuted. But also will reduce + the efficiency.], + [config_process_muted_channels="yes"], + [config_process_muted_channels="no"] +) +if test "$config_process_muted_channels" = "yes"; then + AC_DEFINE_UNQUOTED(CONFIG_PROCESS_MUTED_CHANNELS, 1, [Define to 1 if you want to enable processing of muted channels.]) +fi + ########################################################################### # Automatic Benchmarks (to detect the best algorithms for the system) @@ -651,7 +697,7 @@ AC_TRY_RUN([ #define SIGNED 1 #define SILENT 1 - #include "benchmarks/triang.cpp" + #include "${srcdir}/benchmarks/triang.cpp" ], triang_signed=0, triang_signed=$?, @@ -663,6 +709,9 @@ elif test "$triang_signed" = "3"; then config_signed_triang_algo="diharmonic" echo "di harmonics" + elif test "$triang_signed" = "5"; then + config_signed_triang_algo="intmathabs" + echo "integer math using abs()" else echo "Benchmark of signed triangular wave algorithms failed!" echo "Maybe you are doing cross compilation? In that case you have to select" @@ -671,7 +720,7 @@ exit -1; fi fi -AC_DEFINE_UNQUOTED(CONFIG_SIGNED_TRIANG_ALGO, signed_triang_algo_${config_signed_triang_algo}, [Define signed triangular wave algorithm to be used.]) +AC_DEFINE_UNQUOTED(CONFIG_SIGNED_TRIANG_ALGO, ${triang_signed}, [Define signed triangular wave algorithm to be used.]) if test "$config_unsigned_triang_algo" = "benchmark"; then echo -n "benchmarking for the best (unsigned) triangular oscillator algorithm... " @@ -679,7 +728,7 @@ AC_TRY_RUN([ #define SIGNED 0 #define SILENT 1 - #include "benchmarks/triang.cpp" + #include "${srcdir}/benchmarks/triang.cpp" ], triang_unsigned=0, triang_unsigned=$?, @@ -691,6 +740,9 @@ elif test "$triang_unsigned" = "3"; then config_unsigned_triang_algo="diharmonic" echo "di harmonics" + elif test "$triang_unsigned" = "5"; then + config_unsigned_triang_algo="intmathabs" + echo "integer math using abs()" else echo "Benchmark of unsigned triangular wave algorithms failed!" echo "Maybe you are doing cross compilation? In that case you have to select" @@ -699,7 +751,7 @@ exit -1; fi fi -AC_DEFINE_UNQUOTED(CONFIG_UNSIGNED_TRIANG_ALGO, unsigned_triang_algo_${config_unsigned_triang_algo}, [Define unsigned triangular wave algorithm to be used.]) +AC_DEFINE_UNQUOTED(CONFIG_UNSIGNED_TRIANG_ALGO, ${triang_unsigned}, [Define unsigned triangular wave algorithm to be used.]) AC_LANG_RESTORE @@ -776,11 +828,12 @@ echo "# Stream Size: ${config_stream_size}" echo "# Maximum Disk Streams: ${config_max_streams}" echo "# Maximum Voices: ${config_max_voices}" +echo "# Default Subfragment Size: ${config_subfragment_size}" +echo "# Global Volume Attenuation: ${config_global_attenuation}" echo "# Voice Stealing Algorithm: ${config_voice_steal_algo}" echo "# Signed Triangular Oscillator Algorithm: ${config_signed_triang_algo}" echo "# Unsigned Triangular Oscillator Algorithm: ${config_unsigned_triang_algo}" echo "# SysEx Buffer Size: ${config_sysex_buffer_size} Byte" -echo "# Filter Update Steps: ${config_filter_update_steps}" echo "# Force Filter Usage: ${config_force_filter}" echo "# Filter Cutoff Minimum: ${config_filter_cutoff_min} Hz" echo "# Filter Cutoff Maximum: ${config_filter_cutoff_max} Hz" @@ -788,6 +841,7 @@ echo "# Override Filter Resonance Controller: ${config_override_resonance_ctrl}" echo "# Override Filter Type: ${config_override_filter_type}" echo "# Assert GS SysEx Checksum: ${config_assert_gs_sysex_checksum}" +echo "# Process Muted Channels: ${config_process_muted_channels}" echo "#-------------------------------------------------------------------#" echo "# Read './configure --help' or file 'configure.in' for details. #" echo "#####################################################################"