From 76a4d88fe4c3ace61627af4801858cb129c171f2 Mon Sep 17 00:00:00 2001 From: Tobias Doerffel Date: Sat, 2 Jul 2011 12:47:49 +0200 Subject: [PATCH] Added missing plugins from the SWH LADSPA plugin collection Once I added the SWH LADSPA plugins I just added a small selection of them in order to improve clarity. However lots of projects use SWH LADSPA plugins that are not shipped with LMMS and thus can't be played properly e.g. on Windows. Fix this by adding missing plugins (except the analog and FM oscillators). --- plugins/ladspa_effect/swh/CMakeLists.txt | 36 +- plugins/ladspa_effect/swh/NEWS | 0 plugins/ladspa_effect/swh/alias_1407.c | 251 +++ plugins/ladspa_effect/swh/allpass_1895.c | 1398 +++++++++++++++++ .../ladspa_effect/swh/am_pitchshift_1433.c | 466 ++++++ plugins/ladspa_effect/swh/amp_1181.c | 244 +++ .../ladspa_effect/swh/bandpass_a_iir_1893.c | 296 ++++ plugins/ladspa_effect/swh/bandpass_iir_1892.c | 361 +++++ plugins/ladspa_effect/swh/bode_shifter_1431.c | 469 ++++++ .../ladspa_effect/swh/bode_shifter_cv_1432.c | 534 +++++++ plugins/ladspa_effect/swh/butterworth_1902.c | 783 +++++++++ plugins/ladspa_effect/swh/chebstortion_1430.c | 410 +++++ plugins/ladspa_effect/swh/comb_1887.c | 1391 ++++++++++++++++ .../ladspa_effect/swh/comb_splitter_1411.c | 352 +++++ plugins/ladspa_effect/swh/const_1909.c | 261 +++ .../ladspa_effect/swh/crossover_dist_1404.c | 287 ++++ plugins/ladspa_effect/swh/decay_1886.c | 341 ++++ plugins/ladspa_effect/swh/decimator_1202.c | 346 ++++ plugins/ladspa_effect/swh/declip_1195.c | 246 +++ plugins/ladspa_effect/swh/delay_1898.c | 1150 ++++++++++++++ plugins/ladspa_effect/swh/delayorama_1402.c | 858 ++++++++++ plugins/ladspa_effect/swh/diode_1185.c | 275 ++++ plugins/ladspa_effect/swh/divider_1186.c | 342 ++++ plugins/ladspa_effect/swh/dj_flanger_1438.c | 483 ++++++ .../ladspa_effect/swh/dyson_compress_1403.c | 896 +++++++++++ plugins/ladspa_effect/swh/fad_delay_1192.c | 405 +++++ plugins/ladspa_effect/swh/foldover_1213.c | 266 ++++ plugins/ladspa_effect/swh/foverdrive_1196.c | 245 +++ plugins/ladspa_effect/swh/freq_tracker_1418.c | 330 ++++ plugins/ladspa_effect/swh/gate_1410.c | 593 +++++++ plugins/ladspa_effect/swh/giant_flange_1437.c | 648 ++++++++ plugins/ladspa_effect/swh/gong_1424.c | 958 +++++++++++ plugins/ladspa_effect/swh/gong_beater_1439.c | 411 +++++ plugins/ladspa_effect/swh/gsm/README | 36 + plugins/ladspa_effect/swh/gsm/add.c | 251 +++ plugins/ladspa_effect/swh/gsm/code.c | 100 ++ plugins/ladspa_effect/swh/gsm/config.h | 37 + plugins/ladspa_effect/swh/gsm/decode.c | 63 + plugins/ladspa_effect/swh/gsm/gsm.h | 71 + plugins/ladspa_effect/swh/gsm/gsm_create.c | 45 + plugins/ladspa_effect/swh/gsm/gsm_decode.c | 361 +++++ plugins/ladspa_effect/swh/gsm/gsm_destroy.c | 26 + plugins/ladspa_effect/swh/gsm/gsm_encode.c | 451 ++++++ plugins/ladspa_effect/swh/gsm/gsm_option.c | 69 + plugins/ladspa_effect/swh/gsm/long_term.c | 949 +++++++++++ plugins/ladspa_effect/swh/gsm/lpc.c | 341 ++++ plugins/ladspa_effect/swh/gsm/preprocess.c | 113 ++ plugins/ladspa_effect/swh/gsm/private.h | 278 ++++ plugins/ladspa_effect/swh/gsm/proto.h | 65 + plugins/ladspa_effect/swh/gsm/rpe.c | 488 ++++++ plugins/ladspa_effect/swh/gsm/short_term.c | 429 +++++ plugins/ladspa_effect/swh/gsm/table.c | 63 + plugins/ladspa_effect/swh/gsm/unproto.h | 23 + plugins/ladspa_effect/swh/gsm_1215.c | 504 ++++++ plugins/ladspa_effect/swh/gverb/gverb.c | 207 +++ plugins/ladspa_effect/swh/gverb/gverb.h | 234 +++ plugins/ladspa_effect/swh/gverb/gverbdsp.c | 130 ++ plugins/ladspa_effect/swh/gverb/gverbdsp.h | 85 + plugins/ladspa_effect/swh/gverb_1216.c | 440 ++++++ plugins/ladspa_effect/swh/hard_limiter_1413.c | 297 ++++ plugins/ladspa_effect/swh/harmonic_gen_1220.c | 553 +++++++ plugins/ladspa_effect/swh/highpass_iir_1890.c | 296 ++++ plugins/ladspa_effect/swh/hilbert_1440.c | 327 ++++ plugins/ladspa_effect/swh/imp_1199.c | 637 ++++++++ plugins/ladspa_effect/swh/impulse_1885.c | 268 ++++ plugins/ladspa_effect/swh/impulses/01-unit.h | 1 + .../swh/impulses/02-steves-flat.h | 452 ++++++ .../ladspa_effect/swh/impulses/03-stk-m1.h | 302 ++++ .../swh/impulses/04-fender-68-vibrolux-sm57.h | 1154 ++++++++++++++ .../impulses/05-fender-68-vibrolux-sm57-off.h | 1300 +++++++++++++++ .../impulses/06-fender-68-vibrolux-at4050.h | 1156 ++++++++++++++ .../swh/impulses/07-fender-68-vibrolux-ui87.h | 1226 +++++++++++++++ .../swh/impulses/08-fender-bassman-sm57.h | 681 ++++++++ .../swh/impulses/09-fender-bassman-sm57-off.h | 636 ++++++++ .../swh/impulses/10-fender-bassman-at4050.h | 797 ++++++++++ .../swh/impulses/11-fender-bassman-ui87.h | 822 ++++++++++ .../swh/impulses/12-fender-superchamp-sm57.h | 679 ++++++++ .../impulses/13-fender-superchamp-sm57-off.h | 676 ++++++++ .../impulses/14-fender-superchamp-at4050.h | 825 ++++++++++ .../swh/impulses/15-fender-superchamp-ui87.h | 790 ++++++++++ .../swh/impulses/16-marshall-jcm2000-sm57.h | 1167 ++++++++++++++ .../impulses/17-marshall-jcm2000-sm57-off.h | 1315 ++++++++++++++++ .../swh/impulses/18-marshall-plexi-sm57.h | 1386 ++++++++++++++++ .../swh/impulses/19-marshall-plexi-sm57-off.h | 1360 ++++++++++++++++ .../impulses/20-matchless-chieftain-sm57.h | 863 ++++++++++ .../21-matchless-chieftain-sm57-off.h | 937 +++++++++++ plugins/ladspa_effect/swh/impulses/all.h | 51 + plugins/ladspa_effect/swh/inv_1429.c | 218 +++ plugins/ladspa_effect/swh/karaoke_1409.c | 285 ++++ plugins/ladspa_effect/swh/ladspa-util.c | 22 + plugins/ladspa_effect/swh/latency_1914.c | 270 ++++ plugins/ladspa_effect/swh/lcr_delay_1436.c | 744 +++++++++ plugins/ladspa_effect/swh/lowpass_iir_1891.c | 298 ++++ plugins/ladspa_effect/swh/ls_filter_1908.c | 319 ++++ plugins/ladspa_effect/swh/matrix_ms_st_1421.c | 277 ++++ .../swh/matrix_spatialiser_1422.c | 435 +++++ plugins/ladspa_effect/swh/matrix_st_ms_1420.c | 256 +++ plugins/ladspa_effect/swh/mod_delay_1419.c | 329 ++++ .../swh/multivoice_chorus_1201.c | 667 ++++++++ plugins/ladspa_effect/swh/notch_iir_1894.c | 361 +++++ plugins/ladspa_effect/swh/pitch_scale_1193.c | 338 ++++ plugins/ladspa_effect/swh/pitch_scale_1194.c | 322 ++++ plugins/ladspa_effect/swh/plate_1423.c | 412 +++++ plugins/ladspa_effect/swh/pointer_cast_1910.c | 321 ++++ plugins/ladspa_effect/swh/rate_shifter_1417.c | 325 ++++ plugins/ladspa_effect/swh/retro_flange_1208.c | 592 +++++++ plugins/ladspa_effect/swh/revdelay_1605.c | 559 +++++++ plugins/ladspa_effect/swh/ringmod_1188.c | 649 ++++++++ .../ladspa_effect/swh/satan_maximiser_1408.c | 355 +++++ plugins/ladspa_effect/swh/sc1_1425.c | 484 ++++++ plugins/ladspa_effect/swh/sc2_1426.c | 502 ++++++ plugins/ladspa_effect/swh/sc3_1427.c | 573 +++++++ plugins/ladspa_effect/swh/sc4_1882.c | 629 ++++++++ plugins/ladspa_effect/swh/sc4m_1916.c | 579 +++++++ plugins/ladspa_effect/swh/se4_1883.c | 625 ++++++++ plugins/ladspa_effect/swh/shaper_1187.c | 271 ++++ plugins/ladspa_effect/swh/sifter_1210.c | 445 ++++++ plugins/ladspa_effect/swh/sin_cos_1881.c | 307 ++++ plugins/ladspa_effect/swh/single_para_1203.c | 323 ++++ .../swh/sinus_wavewrapper_1198.c | 255 +++ .../ladspa_effect/swh/smooth_decimate_1414.c | 340 ++++ plugins/ladspa_effect/swh/split_1406.c | 251 +++ plugins/ladspa_effect/swh/step_muxer_1212.c | 543 +++++++ .../ladspa_effect/swh/surround_encoder_1401.c | 425 +++++ plugins/ladspa_effect/swh/svf_1214.c | 419 +++++ plugins/ladspa_effect/swh/tape_delay_1211.c | 656 ++++++++ plugins/ladspa_effect/swh/transient_1206.c | 476 ++++++ plugins/ladspa_effect/swh/triple_para_1204.c | 604 +++++++ plugins/ladspa_effect/swh/util/blo.c | 266 ++++ plugins/ladspa_effect/swh/util/blo.h | 213 +++ plugins/ladspa_effect/swh/util/buffer.h | 17 + plugins/ladspa_effect/swh/util/db.c | 22 + plugins/ladspa_effect/swh/util/db.h | 86 + plugins/ladspa_effect/swh/util/iir.c | 236 +++ plugins/ladspa_effect/swh/util/iir.h | 338 ++++ plugins/ladspa_effect/swh/util/ls_filter.h | 64 + plugins/ladspa_effect/swh/util/pitchscale.c | 335 ++++ plugins/ladspa_effect/swh/util/pitchscale.h | 49 + plugins/ladspa_effect/swh/util/rms.c | 25 + plugins/ladspa_effect/swh/util/rms.h | 35 + plugins/ladspa_effect/swh/util/waveguide_nl.h | 148 ++ plugins/ladspa_effect/swh/valve_1209.c | 343 ++++ plugins/ladspa_effect/swh/valve_rect_1405.c | 412 +++++ plugins/ladspa_effect/swh/wave_terrain_1412.c | 242 +++ plugins/ladspa_effect/swh/xfade_1915.c | 615 ++++++++ plugins/ladspa_effect/swh/zm1_1428.c | 243 +++ 146 files changed, 63894 insertions(+), 1 deletion(-) create mode 100644 plugins/ladspa_effect/swh/NEWS create mode 100644 plugins/ladspa_effect/swh/alias_1407.c create mode 100644 plugins/ladspa_effect/swh/allpass_1895.c create mode 100644 plugins/ladspa_effect/swh/am_pitchshift_1433.c create mode 100644 plugins/ladspa_effect/swh/amp_1181.c create mode 100644 plugins/ladspa_effect/swh/bandpass_a_iir_1893.c create mode 100644 plugins/ladspa_effect/swh/bandpass_iir_1892.c create mode 100644 plugins/ladspa_effect/swh/bode_shifter_1431.c create mode 100644 plugins/ladspa_effect/swh/bode_shifter_cv_1432.c create mode 100644 plugins/ladspa_effect/swh/butterworth_1902.c create mode 100644 plugins/ladspa_effect/swh/chebstortion_1430.c create mode 100644 plugins/ladspa_effect/swh/comb_1887.c create mode 100644 plugins/ladspa_effect/swh/comb_splitter_1411.c create mode 100644 plugins/ladspa_effect/swh/const_1909.c create mode 100644 plugins/ladspa_effect/swh/crossover_dist_1404.c create mode 100644 plugins/ladspa_effect/swh/decay_1886.c create mode 100644 plugins/ladspa_effect/swh/decimator_1202.c create mode 100644 plugins/ladspa_effect/swh/declip_1195.c create mode 100644 plugins/ladspa_effect/swh/delay_1898.c create mode 100644 plugins/ladspa_effect/swh/delayorama_1402.c create mode 100644 plugins/ladspa_effect/swh/diode_1185.c create mode 100644 plugins/ladspa_effect/swh/divider_1186.c create mode 100644 plugins/ladspa_effect/swh/dj_flanger_1438.c create mode 100644 plugins/ladspa_effect/swh/dyson_compress_1403.c create mode 100644 plugins/ladspa_effect/swh/fad_delay_1192.c create mode 100644 plugins/ladspa_effect/swh/foldover_1213.c create mode 100644 plugins/ladspa_effect/swh/foverdrive_1196.c create mode 100644 plugins/ladspa_effect/swh/freq_tracker_1418.c create mode 100644 plugins/ladspa_effect/swh/gate_1410.c create mode 100644 plugins/ladspa_effect/swh/giant_flange_1437.c create mode 100644 plugins/ladspa_effect/swh/gong_1424.c create mode 100644 plugins/ladspa_effect/swh/gong_beater_1439.c create mode 100644 plugins/ladspa_effect/swh/gsm/README create mode 100644 plugins/ladspa_effect/swh/gsm/add.c create mode 100644 plugins/ladspa_effect/swh/gsm/code.c create mode 100644 plugins/ladspa_effect/swh/gsm/config.h create mode 100644 plugins/ladspa_effect/swh/gsm/decode.c create mode 100644 plugins/ladspa_effect/swh/gsm/gsm.h create mode 100644 plugins/ladspa_effect/swh/gsm/gsm_create.c create mode 100644 plugins/ladspa_effect/swh/gsm/gsm_decode.c create mode 100644 plugins/ladspa_effect/swh/gsm/gsm_destroy.c create mode 100644 plugins/ladspa_effect/swh/gsm/gsm_encode.c create mode 100644 plugins/ladspa_effect/swh/gsm/gsm_option.c create mode 100644 plugins/ladspa_effect/swh/gsm/long_term.c create mode 100644 plugins/ladspa_effect/swh/gsm/lpc.c create mode 100644 plugins/ladspa_effect/swh/gsm/preprocess.c create mode 100644 plugins/ladspa_effect/swh/gsm/private.h create mode 100644 plugins/ladspa_effect/swh/gsm/proto.h create mode 100644 plugins/ladspa_effect/swh/gsm/rpe.c create mode 100644 plugins/ladspa_effect/swh/gsm/short_term.c create mode 100644 plugins/ladspa_effect/swh/gsm/table.c create mode 100644 plugins/ladspa_effect/swh/gsm/unproto.h create mode 100644 plugins/ladspa_effect/swh/gsm_1215.c create mode 100644 plugins/ladspa_effect/swh/gverb/gverb.c create mode 100644 plugins/ladspa_effect/swh/gverb/gverb.h create mode 100644 plugins/ladspa_effect/swh/gverb/gverbdsp.c create mode 100644 plugins/ladspa_effect/swh/gverb/gverbdsp.h create mode 100644 plugins/ladspa_effect/swh/gverb_1216.c create mode 100644 plugins/ladspa_effect/swh/hard_limiter_1413.c create mode 100644 plugins/ladspa_effect/swh/harmonic_gen_1220.c create mode 100644 plugins/ladspa_effect/swh/highpass_iir_1890.c create mode 100644 plugins/ladspa_effect/swh/hilbert_1440.c create mode 100644 plugins/ladspa_effect/swh/imp_1199.c create mode 100644 plugins/ladspa_effect/swh/impulse_1885.c create mode 100644 plugins/ladspa_effect/swh/impulses/01-unit.h create mode 100644 plugins/ladspa_effect/swh/impulses/02-steves-flat.h create mode 100644 plugins/ladspa_effect/swh/impulses/03-stk-m1.h create mode 100644 plugins/ladspa_effect/swh/impulses/04-fender-68-vibrolux-sm57.h create mode 100644 plugins/ladspa_effect/swh/impulses/05-fender-68-vibrolux-sm57-off.h create mode 100644 plugins/ladspa_effect/swh/impulses/06-fender-68-vibrolux-at4050.h create mode 100644 plugins/ladspa_effect/swh/impulses/07-fender-68-vibrolux-ui87.h create mode 100644 plugins/ladspa_effect/swh/impulses/08-fender-bassman-sm57.h create mode 100644 plugins/ladspa_effect/swh/impulses/09-fender-bassman-sm57-off.h create mode 100644 plugins/ladspa_effect/swh/impulses/10-fender-bassman-at4050.h create mode 100644 plugins/ladspa_effect/swh/impulses/11-fender-bassman-ui87.h create mode 100644 plugins/ladspa_effect/swh/impulses/12-fender-superchamp-sm57.h create mode 100644 plugins/ladspa_effect/swh/impulses/13-fender-superchamp-sm57-off.h create mode 100644 plugins/ladspa_effect/swh/impulses/14-fender-superchamp-at4050.h create mode 100644 plugins/ladspa_effect/swh/impulses/15-fender-superchamp-ui87.h create mode 100644 plugins/ladspa_effect/swh/impulses/16-marshall-jcm2000-sm57.h create mode 100644 plugins/ladspa_effect/swh/impulses/17-marshall-jcm2000-sm57-off.h create mode 100644 plugins/ladspa_effect/swh/impulses/18-marshall-plexi-sm57.h create mode 100644 plugins/ladspa_effect/swh/impulses/19-marshall-plexi-sm57-off.h create mode 100644 plugins/ladspa_effect/swh/impulses/20-matchless-chieftain-sm57.h create mode 100644 plugins/ladspa_effect/swh/impulses/21-matchless-chieftain-sm57-off.h create mode 100644 plugins/ladspa_effect/swh/impulses/all.h create mode 100644 plugins/ladspa_effect/swh/inv_1429.c create mode 100644 plugins/ladspa_effect/swh/karaoke_1409.c create mode 100644 plugins/ladspa_effect/swh/ladspa-util.c create mode 100644 plugins/ladspa_effect/swh/latency_1914.c create mode 100644 plugins/ladspa_effect/swh/lcr_delay_1436.c create mode 100644 plugins/ladspa_effect/swh/lowpass_iir_1891.c create mode 100644 plugins/ladspa_effect/swh/ls_filter_1908.c create mode 100644 plugins/ladspa_effect/swh/matrix_ms_st_1421.c create mode 100644 plugins/ladspa_effect/swh/matrix_spatialiser_1422.c create mode 100644 plugins/ladspa_effect/swh/matrix_st_ms_1420.c create mode 100644 plugins/ladspa_effect/swh/mod_delay_1419.c create mode 100644 plugins/ladspa_effect/swh/multivoice_chorus_1201.c create mode 100644 plugins/ladspa_effect/swh/notch_iir_1894.c create mode 100644 plugins/ladspa_effect/swh/pitch_scale_1193.c create mode 100644 plugins/ladspa_effect/swh/pitch_scale_1194.c create mode 100644 plugins/ladspa_effect/swh/plate_1423.c create mode 100644 plugins/ladspa_effect/swh/pointer_cast_1910.c create mode 100644 plugins/ladspa_effect/swh/rate_shifter_1417.c create mode 100644 plugins/ladspa_effect/swh/retro_flange_1208.c create mode 100644 plugins/ladspa_effect/swh/revdelay_1605.c create mode 100644 plugins/ladspa_effect/swh/ringmod_1188.c create mode 100644 plugins/ladspa_effect/swh/satan_maximiser_1408.c create mode 100644 plugins/ladspa_effect/swh/sc1_1425.c create mode 100644 plugins/ladspa_effect/swh/sc2_1426.c create mode 100644 plugins/ladspa_effect/swh/sc3_1427.c create mode 100644 plugins/ladspa_effect/swh/sc4_1882.c create mode 100644 plugins/ladspa_effect/swh/sc4m_1916.c create mode 100644 plugins/ladspa_effect/swh/se4_1883.c create mode 100644 plugins/ladspa_effect/swh/shaper_1187.c create mode 100644 plugins/ladspa_effect/swh/sifter_1210.c create mode 100644 plugins/ladspa_effect/swh/sin_cos_1881.c create mode 100644 plugins/ladspa_effect/swh/single_para_1203.c create mode 100644 plugins/ladspa_effect/swh/sinus_wavewrapper_1198.c create mode 100644 plugins/ladspa_effect/swh/smooth_decimate_1414.c create mode 100644 plugins/ladspa_effect/swh/split_1406.c create mode 100644 plugins/ladspa_effect/swh/step_muxer_1212.c create mode 100644 plugins/ladspa_effect/swh/surround_encoder_1401.c create mode 100644 plugins/ladspa_effect/swh/svf_1214.c create mode 100644 plugins/ladspa_effect/swh/tape_delay_1211.c create mode 100644 plugins/ladspa_effect/swh/transient_1206.c create mode 100644 plugins/ladspa_effect/swh/triple_para_1204.c create mode 100644 plugins/ladspa_effect/swh/util/blo.c create mode 100644 plugins/ladspa_effect/swh/util/blo.h create mode 100644 plugins/ladspa_effect/swh/util/buffer.h create mode 100644 plugins/ladspa_effect/swh/util/db.c create mode 100644 plugins/ladspa_effect/swh/util/db.h create mode 100644 plugins/ladspa_effect/swh/util/iir.c create mode 100644 plugins/ladspa_effect/swh/util/iir.h create mode 100644 plugins/ladspa_effect/swh/util/ls_filter.h create mode 100644 plugins/ladspa_effect/swh/util/pitchscale.c create mode 100644 plugins/ladspa_effect/swh/util/pitchscale.h create mode 100644 plugins/ladspa_effect/swh/util/rms.c create mode 100644 plugins/ladspa_effect/swh/util/rms.h create mode 100644 plugins/ladspa_effect/swh/util/waveguide_nl.h create mode 100644 plugins/ladspa_effect/swh/valve_1209.c create mode 100644 plugins/ladspa_effect/swh/valve_rect_1405.c create mode 100644 plugins/ladspa_effect/swh/wave_terrain_1412.c create mode 100644 plugins/ladspa_effect/swh/xfade_1915.c create mode 100644 plugins/ladspa_effect/swh/zm1_1428.c diff --git a/plugins/ladspa_effect/swh/CMakeLists.txt b/plugins/ladspa_effect/swh/CMakeLists.txt index fc7cac822..d0219b4c6 100644 --- a/plugins/ladspa_effect/swh/CMakeLists.txt +++ b/plugins/ladspa_effect/swh/CMakeLists.txt @@ -8,7 +8,7 @@ LINK_LIBRARIES(-lfftw3f) ENDIF(LMMS_HAVE_FFTW3F) INCLUDE_DIRECTORIES(${CMAKE_BINARY_DIR}) -FILE(GLOB PLUGIN_SOURCES *.c) +FILE(GLOB PLUGIN_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/*.c) FOREACH(_item ${PLUGIN_SOURCES}) GET_FILENAME_COMPONENT(_plugin "${_item}" NAME_WE) IF(NOT "${_plugin}" STREQUAL "mbeq_1197" OR LMMS_HAVE_FFTW3F) @@ -32,3 +32,37 @@ FOREACH(_item ${PLUGIN_SOURCES}) ENDIF(NOT "${_plugin}" STREQUAL "mbeq_1197" OR LMMS_HAVE_FFTW3F) ENDFOREACH(_item ${PLUGIN_SOURCES}) + +ADD_LIBRARY(iir STATIC util/iir.c) +SET_TARGET_PROPERTIES(iir PROPERTIES COMPILE_FLAGS "-fPIC") +TARGET_LINK_LIBRARIES(bandpass_a_iir_1893 iir) +TARGET_LINK_LIBRARIES(bandpass_iir_1892 iir) +TARGET_LINK_LIBRARIES(butterworth_1902 iir) +TARGET_LINK_LIBRARIES(highpass_iir_1890 iir) +TARGET_LINK_LIBRARIES(lowpass_iir_1891 iir) +TARGET_LINK_LIBRARIES(notch_iir_1894 iir) + +FILE(GLOB GSM_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/gsm/*.c) +ADD_LIBRARY(gsm STATIC ${GSM_SOURCES}) +SET_TARGET_PROPERTIES(gsm PROPERTIES COMPILE_FLAGS "-fPIC") +TARGET_LINK_LIBRARIES(gsm_1215 gsm) + +ADD_LIBRARY(gverb STATIC gverb/gverb.c gverb/gverbdsp.c) +SET_TARGET_PROPERTIES(gverb PROPERTIES COMPILE_FLAGS "-fPIC") +TARGET_LINK_LIBRARIES(gverb_1216 gverb) + +ADD_LIBRARY(rms STATIC util/rms.c) +ADD_LIBRARY(db STATIC util/db.c) +SET_TARGET_PROPERTIES(rms PROPERTIES COMPILE_FLAGS "-fPIC") +SET_TARGET_PROPERTIES(db PROPERTIES COMPILE_FLAGS "-fPIC") +TARGET_LINK_LIBRARIES(sc1_1425 rms db) +TARGET_LINK_LIBRARIES(sc2_1426 rms db) +TARGET_LINK_LIBRARIES(sc3_1427 rms db) +TARGET_LINK_LIBRARIES(sc4_1882 rms db) +TARGET_LINK_LIBRARIES(sc4m_1916 rms db) +TARGET_LINK_LIBRARIES(se4_1883 rms db) + +ADD_LIBRARY(pitchscale STATIC util/pitchscale.c) +SET_TARGET_PROPERTIES(pitchscale PROPERTIES COMPILE_FLAGS "-fPIC") +TARGET_LINK_LIBRARIES(pitch_scale_1193 pitchscale) +TARGET_LINK_LIBRARIES(pitch_scale_1194 pitchscale) diff --git a/plugins/ladspa_effect/swh/NEWS b/plugins/ladspa_effect/swh/NEWS new file mode 100644 index 000000000..e69de29bb diff --git a/plugins/ladspa_effect/swh/alias_1407.c b/plugins/ladspa_effect/swh/alias_1407.c new file mode 100644 index 000000000..03a05f7fd --- /dev/null +++ b/plugins/ladspa_effect/swh/alias_1407.c @@ -0,0 +1,251 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + + +#define ALIAS_LEVEL 0 +#define ALIAS_INPUT 1 +#define ALIAS_OUTPUT 2 + +static LADSPA_Descriptor *aliasDescriptor = NULL; + +typedef struct { + LADSPA_Data *level; + LADSPA_Data *input; + LADSPA_Data *output; + LADSPA_Data run_adding_gain; +} Alias; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return aliasDescriptor; + default: + return NULL; + } +} + +static void cleanupAlias(LADSPA_Handle instance) { + free(instance); +} + +static void connectPortAlias( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + Alias *plugin; + + plugin = (Alias *)instance; + switch (port) { + case ALIAS_LEVEL: + plugin->level = data; + break; + case ALIAS_INPUT: + plugin->input = data; + break; + case ALIAS_OUTPUT: + plugin->output = data; + break; + } +} + +static LADSPA_Handle instantiateAlias( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + Alias *plugin_data = (Alias *)malloc(sizeof(Alias)); + plugin_data->run_adding_gain = 1.0f; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runAlias(LADSPA_Handle instance, unsigned long sample_count) { + Alias *plugin_data = (Alias *)instance; + + /* Aliasing level (float value) */ + const LADSPA_Data level = *(plugin_data->level); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + +#line 17 "alias_1407.xml" + unsigned long pos; + float coef = 1.0f - 2.0f * level; + + if (output != input) { + for (pos = 0; pos < sample_count; pos+=2) { + buffer_write(output[pos], input[pos]); + } + } + for (pos = 1; pos < sample_count; pos+=2) { + buffer_write(output[pos], input[pos] * coef); + } +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainAlias(LADSPA_Handle instance, LADSPA_Data gain) { + ((Alias *)instance)->run_adding_gain = gain; +} + +static void runAddingAlias(LADSPA_Handle instance, unsigned long sample_count) { + Alias *plugin_data = (Alias *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Aliasing level (float value) */ + const LADSPA_Data level = *(plugin_data->level); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + +#line 17 "alias_1407.xml" + unsigned long pos; + float coef = 1.0f - 2.0f * level; + + if (output != input) { + for (pos = 0; pos < sample_count; pos+=2) { + buffer_write(output[pos], input[pos]); + } + } + for (pos = 1; pos < sample_count; pos+=2) { + buffer_write(output[pos], input[pos] * coef); + } +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + aliasDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (aliasDescriptor) { + aliasDescriptor->UniqueID = 1407; + aliasDescriptor->Label = "alias"; + aliasDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + aliasDescriptor->Name = + D_("Aliasing"); + aliasDescriptor->Maker = + "Steve Harris "; + aliasDescriptor->Copyright = + "GPL"; + aliasDescriptor->PortCount = 3; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(3, + sizeof(LADSPA_PortDescriptor)); + aliasDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(3, + sizeof(LADSPA_PortRangeHint)); + aliasDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(3, sizeof(char*)); + aliasDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Aliasing level */ + port_descriptors[ALIAS_LEVEL] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[ALIAS_LEVEL] = + D_("Aliasing level"); + port_range_hints[ALIAS_LEVEL].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[ALIAS_LEVEL].LowerBound = 0; + port_range_hints[ALIAS_LEVEL].UpperBound = 1; + + /* Parameters for Input */ + port_descriptors[ALIAS_INPUT] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[ALIAS_INPUT] = + D_("Input"); + port_range_hints[ALIAS_INPUT].HintDescriptor = 0; + + /* Parameters for Output */ + port_descriptors[ALIAS_OUTPUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[ALIAS_OUTPUT] = + D_("Output"); + port_range_hints[ALIAS_OUTPUT].HintDescriptor = 0; + + aliasDescriptor->activate = NULL; + aliasDescriptor->cleanup = cleanupAlias; + aliasDescriptor->connect_port = connectPortAlias; + aliasDescriptor->deactivate = NULL; + aliasDescriptor->instantiate = instantiateAlias; + aliasDescriptor->run = runAlias; + aliasDescriptor->run_adding = runAddingAlias; + aliasDescriptor->set_run_adding_gain = setRunAddingGainAlias; + } +} + +void _fini() { + if (aliasDescriptor) { + free((LADSPA_PortDescriptor *)aliasDescriptor->PortDescriptors); + free((char **)aliasDescriptor->PortNames); + free((LADSPA_PortRangeHint *)aliasDescriptor->PortRangeHints); + free(aliasDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/allpass_1895.c b/plugins/ladspa_effect/swh/allpass_1895.c new file mode 100644 index 000000000..5b5c226cc --- /dev/null +++ b/plugins/ladspa_effect/swh/allpass_1895.c @@ -0,0 +1,1398 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + +#line 10 "allpass_1895.xml" + +#include "ladspa-util.h" + +#define MIN(a,b) ((a) < (b) ? (a) : (b)) +#define CALC_DELAY(delaytime) \ + (f_clamp (delaytime * sample_rate, 1.f, (float)(buffer_mask + 1))) + +#define LOG001 -6.9077552789f + +static inline float +calc_feedback (float delaytime, float decaytime) +{ + if (delaytime == 0.f) + return 0.f; + else if (decaytime > 0.f) + return exp(LOG001 * delaytime / decaytime); + else if (decaytime < 0.f) + return -exp(LOG001 * delaytime / -decaytime); + else + return 0.f; +} + +void ignore(LADSPA_Data some_var) +{ } + +#define ALLPASS_N_IN 0 +#define ALLPASS_N_OUT 1 +#define ALLPASS_N_MAX_DELAY 2 +#define ALLPASS_N_DELAY_TIME 3 +#define ALLPASS_N_DECAY_TIME 4 +#define ALLPASS_L_IN 0 +#define ALLPASS_L_OUT 1 +#define ALLPASS_L_MAX_DELAY 2 +#define ALLPASS_L_DELAY_TIME 3 +#define ALLPASS_L_DECAY_TIME 4 +#define ALLPASS_C_IN 0 +#define ALLPASS_C_OUT 1 +#define ALLPASS_C_MAX_DELAY 2 +#define ALLPASS_C_DELAY_TIME 3 +#define ALLPASS_C_DECAY_TIME 4 + +static LADSPA_Descriptor *allpass_nDescriptor = NULL; + +typedef struct { + LADSPA_Data *in; + LADSPA_Data *out; + LADSPA_Data *max_delay; + LADSPA_Data *delay_time; + LADSPA_Data *decay_time; + LADSPA_Data *buffer; + unsigned int buffer_mask; + LADSPA_Data delay_samples; + LADSPA_Data feedback; + LADSPA_Data last_decay_time; + LADSPA_Data last_delay_time; + unsigned int sample_rate; + long write_phase; + LADSPA_Data run_adding_gain; +} Allpass_n; + +static LADSPA_Descriptor *allpass_lDescriptor = NULL; + +typedef struct { + LADSPA_Data *in; + LADSPA_Data *out; + LADSPA_Data *max_delay; + LADSPA_Data *delay_time; + LADSPA_Data *decay_time; + LADSPA_Data *buffer; + unsigned int buffer_mask; + LADSPA_Data delay_samples; + LADSPA_Data feedback; + LADSPA_Data last_decay_time; + LADSPA_Data last_delay_time; + unsigned int sample_rate; + long write_phase; + LADSPA_Data run_adding_gain; +} Allpass_l; + +static LADSPA_Descriptor *allpass_cDescriptor = NULL; + +typedef struct { + LADSPA_Data *in; + LADSPA_Data *out; + LADSPA_Data *max_delay; + LADSPA_Data *delay_time; + LADSPA_Data *decay_time; + LADSPA_Data *buffer; + unsigned int buffer_mask; + LADSPA_Data delay_samples; + LADSPA_Data feedback; + LADSPA_Data last_decay_time; + LADSPA_Data last_delay_time; + unsigned int sample_rate; + long write_phase; + LADSPA_Data run_adding_gain; +} Allpass_c; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return allpass_nDescriptor; + case 1: + return allpass_lDescriptor; + case 2: + return allpass_cDescriptor; + default: + return NULL; + } +} + +static void activateAllpass_n(LADSPA_Handle instance) { + Allpass_n *plugin_data = (Allpass_n *)instance; + LADSPA_Data *buffer = plugin_data->buffer; + unsigned int buffer_mask = plugin_data->buffer_mask; + LADSPA_Data delay_samples = plugin_data->delay_samples; + LADSPA_Data feedback = plugin_data->feedback; + LADSPA_Data last_decay_time = plugin_data->last_decay_time; + LADSPA_Data last_delay_time = plugin_data->last_delay_time; + unsigned int sample_rate = plugin_data->sample_rate; + long write_phase = plugin_data->write_phase; +#line 48 "allpass_1895.xml" + unsigned int minsize, size; + + if (plugin_data->max_delay && *plugin_data->max_delay > 0) + minsize = sample_rate * *plugin_data->max_delay; + else if (plugin_data->delay_time) + minsize = sample_rate * *plugin_data->delay_time; + else + minsize = sample_rate; /* 1 second default */ + + size = 1; + while (size < minsize) size <<= 1; + + /* calloc sets the buffer to zero. */ + buffer = calloc(size, sizeof(LADSPA_Data)); + if (buffer) + buffer_mask = size - 1; + else + buffer_mask = 0; + write_phase = 0; + plugin_data->buffer = buffer; + plugin_data->buffer_mask = buffer_mask; + plugin_data->delay_samples = delay_samples; + plugin_data->feedback = feedback; + plugin_data->last_decay_time = last_decay_time; + plugin_data->last_delay_time = last_delay_time; + plugin_data->sample_rate = sample_rate; + plugin_data->write_phase = write_phase; + +} + +static void cleanupAllpass_n(LADSPA_Handle instance) { +#line 70 "allpass_1895.xml" + Allpass_n *plugin_data = (Allpass_n *)instance; + free(plugin_data->buffer); + free(instance); +} + +static void connectPortAllpass_n( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + Allpass_n *plugin; + + plugin = (Allpass_n *)instance; + switch (port) { + case ALLPASS_N_IN: + plugin->in = data; + break; + case ALLPASS_N_OUT: + plugin->out = data; + break; + case ALLPASS_N_MAX_DELAY: + plugin->max_delay = data; + break; + case ALLPASS_N_DELAY_TIME: + plugin->delay_time = data; + break; + case ALLPASS_N_DECAY_TIME: + plugin->decay_time = data; + break; + } +} + +static LADSPA_Handle instantiateAllpass_n( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + Allpass_n *plugin_data = (Allpass_n *)malloc(sizeof(Allpass_n)); + LADSPA_Data *buffer = NULL; + unsigned int buffer_mask; + LADSPA_Data delay_samples; + LADSPA_Data feedback; + LADSPA_Data last_decay_time; + LADSPA_Data last_delay_time; + unsigned int sample_rate; + long write_phase; + +#line 44 "allpass_1895.xml" + sample_rate = s_rate; + + plugin_data->buffer = buffer; + plugin_data->buffer_mask = buffer_mask; + plugin_data->delay_samples = delay_samples; + plugin_data->feedback = feedback; + plugin_data->last_decay_time = last_decay_time; + plugin_data->last_delay_time = last_delay_time; + plugin_data->sample_rate = sample_rate; + plugin_data->write_phase = write_phase; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runAllpass_n(LADSPA_Handle instance, unsigned long sample_count) { + Allpass_n *plugin_data = (Allpass_n *)instance; + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const in = plugin_data->in; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const out = plugin_data->out; + + /* Max Delay (s) (float value) */ + const LADSPA_Data max_delay = *(plugin_data->max_delay); + + /* Delay Time (s) (float value) */ + const LADSPA_Data delay_time = *(plugin_data->delay_time); + + /* Decay Time (s) (float value) */ + const LADSPA_Data decay_time = *(plugin_data->decay_time); + LADSPA_Data * buffer = plugin_data->buffer; + unsigned int buffer_mask = plugin_data->buffer_mask; + LADSPA_Data delay_samples = plugin_data->delay_samples; + LADSPA_Data feedback = plugin_data->feedback; + LADSPA_Data last_decay_time = plugin_data->last_decay_time; + LADSPA_Data last_delay_time = plugin_data->last_delay_time; + unsigned int sample_rate = plugin_data->sample_rate; + long write_phase = plugin_data->write_phase; + +#line 74 "allpass_1895.xml" + int i; + + ignore(max_delay); + + if (write_phase == 0) { + plugin_data->last_delay_time = delay_time; + plugin_data->last_decay_time = decay_time; + plugin_data->delay_samples = delay_samples = CALC_DELAY (delay_time); + plugin_data->feedback = feedback = calc_feedback (delay_time, decay_time); + } + + if (delay_time == last_delay_time) { + long read_phase = write_phase - (long)delay_samples; + LADSPA_Data *readptr = buffer + (read_phase & buffer_mask); + LADSPA_Data *writeptr = buffer + (write_phase & buffer_mask); + LADSPA_Data *lastptr = buffer + buffer_mask + 1; + + if (decay_time == last_decay_time) { + long remain = sample_count; + + while (remain) { + long read_space = lastptr - readptr; + long write_space = lastptr - writeptr; + long to_process = MIN (MIN (read_space, remain), write_space); + + if (to_process == 0) + return; // buffer not allocated. + + remain -= to_process; + + for (i=0; ilast_decay_time = decay_time; + plugin_data->feedback = feedback; + } + + write_phase += sample_count; + } else { + float next_delay_samples = CALC_DELAY (delay_time); + float delay_samples_slope = (next_delay_samples - delay_samples) / sample_count; + float next_feedback = calc_feedback (delay_time, decay_time); + float feedback_slope = (next_feedback - feedback) / sample_count; + + for (i=0; ilast_delay_time = delay_time; + plugin_data->last_decay_time = decay_time; + plugin_data->feedback = feedback; + plugin_data->delay_samples = delay_samples; + } + + plugin_data->write_phase = write_phase; +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainAllpass_n(LADSPA_Handle instance, LADSPA_Data gain) { + ((Allpass_n *)instance)->run_adding_gain = gain; +} + +static void runAddingAllpass_n(LADSPA_Handle instance, unsigned long sample_count) { + Allpass_n *plugin_data = (Allpass_n *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const in = plugin_data->in; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const out = plugin_data->out; + + /* Max Delay (s) (float value) */ + const LADSPA_Data max_delay = *(plugin_data->max_delay); + + /* Delay Time (s) (float value) */ + const LADSPA_Data delay_time = *(plugin_data->delay_time); + + /* Decay Time (s) (float value) */ + const LADSPA_Data decay_time = *(plugin_data->decay_time); + LADSPA_Data * buffer = plugin_data->buffer; + unsigned int buffer_mask = plugin_data->buffer_mask; + LADSPA_Data delay_samples = plugin_data->delay_samples; + LADSPA_Data feedback = plugin_data->feedback; + LADSPA_Data last_decay_time = plugin_data->last_decay_time; + LADSPA_Data last_delay_time = plugin_data->last_delay_time; + unsigned int sample_rate = plugin_data->sample_rate; + long write_phase = plugin_data->write_phase; + +#line 74 "allpass_1895.xml" + int i; + + ignore(max_delay); + + if (write_phase == 0) { + plugin_data->last_delay_time = delay_time; + plugin_data->last_decay_time = decay_time; + plugin_data->delay_samples = delay_samples = CALC_DELAY (delay_time); + plugin_data->feedback = feedback = calc_feedback (delay_time, decay_time); + } + + if (delay_time == last_delay_time) { + long read_phase = write_phase - (long)delay_samples; + LADSPA_Data *readptr = buffer + (read_phase & buffer_mask); + LADSPA_Data *writeptr = buffer + (write_phase & buffer_mask); + LADSPA_Data *lastptr = buffer + buffer_mask + 1; + + if (decay_time == last_decay_time) { + long remain = sample_count; + + while (remain) { + long read_space = lastptr - readptr; + long write_space = lastptr - writeptr; + long to_process = MIN (MIN (read_space, remain), write_space); + + if (to_process == 0) + return; // buffer not allocated. + + remain -= to_process; + + for (i=0; ilast_decay_time = decay_time; + plugin_data->feedback = feedback; + } + + write_phase += sample_count; + } else { + float next_delay_samples = CALC_DELAY (delay_time); + float delay_samples_slope = (next_delay_samples - delay_samples) / sample_count; + float next_feedback = calc_feedback (delay_time, decay_time); + float feedback_slope = (next_feedback - feedback) / sample_count; + + for (i=0; ilast_delay_time = delay_time; + plugin_data->last_decay_time = decay_time; + plugin_data->feedback = feedback; + plugin_data->delay_samples = delay_samples; + } + + plugin_data->write_phase = write_phase; +} + +static void activateAllpass_l(LADSPA_Handle instance) { + Allpass_l *plugin_data = (Allpass_l *)instance; + LADSPA_Data *buffer = plugin_data->buffer; + unsigned int buffer_mask = plugin_data->buffer_mask; + LADSPA_Data delay_samples = plugin_data->delay_samples; + LADSPA_Data feedback = plugin_data->feedback; + LADSPA_Data last_decay_time = plugin_data->last_decay_time; + LADSPA_Data last_delay_time = plugin_data->last_delay_time; + unsigned int sample_rate = plugin_data->sample_rate; + long write_phase = plugin_data->write_phase; +#line 48 "allpass_1895.xml" + unsigned int minsize, size; + + if (plugin_data->max_delay && *plugin_data->max_delay > 0) + minsize = sample_rate * *plugin_data->max_delay; + else if (plugin_data->delay_time) + minsize = sample_rate * *plugin_data->delay_time; + else + minsize = sample_rate; /* 1 second default */ + + size = 1; + while (size < minsize) size <<= 1; + + /* calloc sets the buffer to zero. */ + buffer = calloc(size, sizeof(LADSPA_Data)); + if (buffer) + buffer_mask = size - 1; + else + buffer_mask = 0; + write_phase = 0; + plugin_data->buffer = buffer; + plugin_data->buffer_mask = buffer_mask; + plugin_data->delay_samples = delay_samples; + plugin_data->feedback = feedback; + plugin_data->last_decay_time = last_decay_time; + plugin_data->last_delay_time = last_delay_time; + plugin_data->sample_rate = sample_rate; + plugin_data->write_phase = write_phase; + +} + +static void cleanupAllpass_l(LADSPA_Handle instance) { +#line 70 "allpass_1895.xml" + Allpass_l *plugin_data = (Allpass_l *)instance; + free(plugin_data->buffer); + free(instance); +} + +static void connectPortAllpass_l( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + Allpass_l *plugin; + + plugin = (Allpass_l *)instance; + switch (port) { + case ALLPASS_L_IN: + plugin->in = data; + break; + case ALLPASS_L_OUT: + plugin->out = data; + break; + case ALLPASS_L_MAX_DELAY: + plugin->max_delay = data; + break; + case ALLPASS_L_DELAY_TIME: + plugin->delay_time = data; + break; + case ALLPASS_L_DECAY_TIME: + plugin->decay_time = data; + break; + } +} + +static LADSPA_Handle instantiateAllpass_l( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + Allpass_l *plugin_data = (Allpass_l *)malloc(sizeof(Allpass_l)); + LADSPA_Data *buffer = NULL; + unsigned int buffer_mask; + LADSPA_Data delay_samples; + LADSPA_Data feedback; + LADSPA_Data last_decay_time; + LADSPA_Data last_delay_time; + unsigned int sample_rate; + long write_phase; + +#line 44 "allpass_1895.xml" + sample_rate = s_rate; + + plugin_data->buffer = buffer; + plugin_data->buffer_mask = buffer_mask; + plugin_data->delay_samples = delay_samples; + plugin_data->feedback = feedback; + plugin_data->last_decay_time = last_decay_time; + plugin_data->last_delay_time = last_delay_time; + plugin_data->sample_rate = sample_rate; + plugin_data->write_phase = write_phase; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runAllpass_l(LADSPA_Handle instance, unsigned long sample_count) { + Allpass_l *plugin_data = (Allpass_l *)instance; + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const in = plugin_data->in; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const out = plugin_data->out; + + /* Max Delay (s) (float value) */ + const LADSPA_Data max_delay = *(plugin_data->max_delay); + + /* Delay Time (s) (float value) */ + const LADSPA_Data delay_time = *(plugin_data->delay_time); + + /* Decay Time (s) (float value) */ + const LADSPA_Data decay_time = *(plugin_data->decay_time); + LADSPA_Data * buffer = plugin_data->buffer; + unsigned int buffer_mask = plugin_data->buffer_mask; + LADSPA_Data delay_samples = plugin_data->delay_samples; + LADSPA_Data feedback = plugin_data->feedback; + LADSPA_Data last_decay_time = plugin_data->last_decay_time; + LADSPA_Data last_delay_time = plugin_data->last_delay_time; + unsigned int sample_rate = plugin_data->sample_rate; + long write_phase = plugin_data->write_phase; + +#line 74 "allpass_1895.xml" + int i; + + if (write_phase == 0) { + plugin_data->last_delay_time = delay_time; + plugin_data->last_decay_time = decay_time; + plugin_data->delay_samples = delay_samples = CALC_DELAY (delay_time); + plugin_data->feedback = feedback = calc_feedback (delay_time, decay_time); + } + + if (delay_time == last_delay_time && decay_time == last_decay_time) { + long idelay_samples = (long)delay_samples; + LADSPA_Data frac = delay_samples - idelay_samples; + + for (i=0; ilast_delay_time = delay_time; + plugin_data->last_decay_time = decay_time; + plugin_data->feedback = feedback; + plugin_data->delay_samples = delay_samples; + } + + plugin_data->write_phase = write_phase; +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainAllpass_l(LADSPA_Handle instance, LADSPA_Data gain) { + ((Allpass_l *)instance)->run_adding_gain = gain; +} + +static void runAddingAllpass_l(LADSPA_Handle instance, unsigned long sample_count) { + Allpass_l *plugin_data = (Allpass_l *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const in = plugin_data->in; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const out = plugin_data->out; + + /* Max Delay (s) (float value) */ + const LADSPA_Data max_delay = *(plugin_data->max_delay); + + /* Delay Time (s) (float value) */ + const LADSPA_Data delay_time = *(plugin_data->delay_time); + + /* Decay Time (s) (float value) */ + const LADSPA_Data decay_time = *(plugin_data->decay_time); + LADSPA_Data * buffer = plugin_data->buffer; + unsigned int buffer_mask = plugin_data->buffer_mask; + LADSPA_Data delay_samples = plugin_data->delay_samples; + LADSPA_Data feedback = plugin_data->feedback; + LADSPA_Data last_decay_time = plugin_data->last_decay_time; + LADSPA_Data last_delay_time = plugin_data->last_delay_time; + unsigned int sample_rate = plugin_data->sample_rate; + long write_phase = plugin_data->write_phase; + +#line 74 "allpass_1895.xml" + int i; + + if (write_phase == 0) { + plugin_data->last_delay_time = delay_time; + plugin_data->last_decay_time = decay_time; + plugin_data->delay_samples = delay_samples = CALC_DELAY (delay_time); + plugin_data->feedback = feedback = calc_feedback (delay_time, decay_time); + } + + if (delay_time == last_delay_time && decay_time == last_decay_time) { + long idelay_samples = (long)delay_samples; + LADSPA_Data frac = delay_samples - idelay_samples; + + for (i=0; ilast_delay_time = delay_time; + plugin_data->last_decay_time = decay_time; + plugin_data->feedback = feedback; + plugin_data->delay_samples = delay_samples; + } + + plugin_data->write_phase = write_phase; +} + +static void activateAllpass_c(LADSPA_Handle instance) { + Allpass_c *plugin_data = (Allpass_c *)instance; + LADSPA_Data *buffer = plugin_data->buffer; + unsigned int buffer_mask = plugin_data->buffer_mask; + LADSPA_Data delay_samples = plugin_data->delay_samples; + LADSPA_Data feedback = plugin_data->feedback; + LADSPA_Data last_decay_time = plugin_data->last_decay_time; + LADSPA_Data last_delay_time = plugin_data->last_delay_time; + unsigned int sample_rate = plugin_data->sample_rate; + long write_phase = plugin_data->write_phase; +#line 48 "allpass_1895.xml" + unsigned int minsize, size; + + if (plugin_data->max_delay && *plugin_data->max_delay > 0) + minsize = sample_rate * *plugin_data->max_delay; + else if (plugin_data->delay_time) + minsize = sample_rate * *plugin_data->delay_time; + else + minsize = sample_rate; /* 1 second default */ + + size = 1; + while (size < minsize) size <<= 1; + + /* calloc sets the buffer to zero. */ + buffer = calloc(size, sizeof(LADSPA_Data)); + if (buffer) + buffer_mask = size - 1; + else + buffer_mask = 0; + write_phase = 0; + plugin_data->buffer = buffer; + plugin_data->buffer_mask = buffer_mask; + plugin_data->delay_samples = delay_samples; + plugin_data->feedback = feedback; + plugin_data->last_decay_time = last_decay_time; + plugin_data->last_delay_time = last_delay_time; + plugin_data->sample_rate = sample_rate; + plugin_data->write_phase = write_phase; + +} + +static void cleanupAllpass_c(LADSPA_Handle instance) { +#line 70 "allpass_1895.xml" + Allpass_c *plugin_data = (Allpass_c *)instance; + free(plugin_data->buffer); + free(instance); +} + +static void connectPortAllpass_c( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + Allpass_c *plugin; + + plugin = (Allpass_c *)instance; + switch (port) { + case ALLPASS_C_IN: + plugin->in = data; + break; + case ALLPASS_C_OUT: + plugin->out = data; + break; + case ALLPASS_C_MAX_DELAY: + plugin->max_delay = data; + break; + case ALLPASS_C_DELAY_TIME: + plugin->delay_time = data; + break; + case ALLPASS_C_DECAY_TIME: + plugin->decay_time = data; + break; + } +} + +static LADSPA_Handle instantiateAllpass_c( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + Allpass_c *plugin_data = (Allpass_c *)malloc(sizeof(Allpass_c)); + LADSPA_Data *buffer = NULL; + unsigned int buffer_mask; + LADSPA_Data delay_samples; + LADSPA_Data feedback; + LADSPA_Data last_decay_time; + LADSPA_Data last_delay_time; + unsigned int sample_rate; + long write_phase; + +#line 44 "allpass_1895.xml" + sample_rate = s_rate; + + plugin_data->buffer = buffer; + plugin_data->buffer_mask = buffer_mask; + plugin_data->delay_samples = delay_samples; + plugin_data->feedback = feedback; + plugin_data->last_decay_time = last_decay_time; + plugin_data->last_delay_time = last_delay_time; + plugin_data->sample_rate = sample_rate; + plugin_data->write_phase = write_phase; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runAllpass_c(LADSPA_Handle instance, unsigned long sample_count) { + Allpass_c *plugin_data = (Allpass_c *)instance; + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const in = plugin_data->in; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const out = plugin_data->out; + + /* Max Delay (s) (float value) */ + const LADSPA_Data max_delay = *(plugin_data->max_delay); + + /* Delay Time (s) (float value) */ + const LADSPA_Data delay_time = *(plugin_data->delay_time); + + /* Decay Time (s) (float value) */ + const LADSPA_Data decay_time = *(plugin_data->decay_time); + LADSPA_Data * buffer = plugin_data->buffer; + unsigned int buffer_mask = plugin_data->buffer_mask; + LADSPA_Data delay_samples = plugin_data->delay_samples; + LADSPA_Data feedback = plugin_data->feedback; + LADSPA_Data last_decay_time = plugin_data->last_decay_time; + LADSPA_Data last_delay_time = plugin_data->last_delay_time; + unsigned int sample_rate = plugin_data->sample_rate; + long write_phase = plugin_data->write_phase; + +#line 74 "allpass_1895.xml" + int i; + + if (write_phase == 0) { + plugin_data->last_delay_time = delay_time; + plugin_data->last_decay_time = decay_time; + plugin_data->delay_samples = delay_samples = CALC_DELAY (delay_time); + plugin_data->feedback = feedback = calc_feedback (delay_time, decay_time); + } + + if (delay_time == last_delay_time && decay_time == last_decay_time) { + long idelay_samples = (long)delay_samples; + LADSPA_Data frac = delay_samples - idelay_samples; + + for (i=0; ilast_delay_time = delay_time; + plugin_data->last_decay_time = decay_time; + plugin_data->feedback = feedback; + plugin_data->delay_samples = delay_samples; + } + + plugin_data->write_phase = write_phase; +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainAllpass_c(LADSPA_Handle instance, LADSPA_Data gain) { + ((Allpass_c *)instance)->run_adding_gain = gain; +} + +static void runAddingAllpass_c(LADSPA_Handle instance, unsigned long sample_count) { + Allpass_c *plugin_data = (Allpass_c *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const in = plugin_data->in; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const out = plugin_data->out; + + /* Max Delay (s) (float value) */ + const LADSPA_Data max_delay = *(plugin_data->max_delay); + + /* Delay Time (s) (float value) */ + const LADSPA_Data delay_time = *(plugin_data->delay_time); + + /* Decay Time (s) (float value) */ + const LADSPA_Data decay_time = *(plugin_data->decay_time); + LADSPA_Data * buffer = plugin_data->buffer; + unsigned int buffer_mask = plugin_data->buffer_mask; + LADSPA_Data delay_samples = plugin_data->delay_samples; + LADSPA_Data feedback = plugin_data->feedback; + LADSPA_Data last_decay_time = plugin_data->last_decay_time; + LADSPA_Data last_delay_time = plugin_data->last_delay_time; + unsigned int sample_rate = plugin_data->sample_rate; + long write_phase = plugin_data->write_phase; + +#line 74 "allpass_1895.xml" + int i; + + if (write_phase == 0) { + plugin_data->last_delay_time = delay_time; + plugin_data->last_decay_time = decay_time; + plugin_data->delay_samples = delay_samples = CALC_DELAY (delay_time); + plugin_data->feedback = feedback = calc_feedback (delay_time, decay_time); + } + + if (delay_time == last_delay_time && decay_time == last_decay_time) { + long idelay_samples = (long)delay_samples; + LADSPA_Data frac = delay_samples - idelay_samples; + + for (i=0; ilast_delay_time = delay_time; + plugin_data->last_decay_time = decay_time; + plugin_data->feedback = feedback; + plugin_data->delay_samples = delay_samples; + } + + plugin_data->write_phase = write_phase; +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + allpass_nDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (allpass_nDescriptor) { + allpass_nDescriptor->UniqueID = 1895; + allpass_nDescriptor->Label = "allpass_n"; + allpass_nDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + allpass_nDescriptor->Name = + D_("Allpass delay line, noninterpolating"); + allpass_nDescriptor->Maker = + "Andy Wingo "; + allpass_nDescriptor->Copyright = + "GPL"; + allpass_nDescriptor->PortCount = 5; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(5, + sizeof(LADSPA_PortDescriptor)); + allpass_nDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(5, + sizeof(LADSPA_PortRangeHint)); + allpass_nDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(5, sizeof(char*)); + allpass_nDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Input */ + port_descriptors[ALLPASS_N_IN] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[ALLPASS_N_IN] = + D_("Input"); + port_range_hints[ALLPASS_N_IN].HintDescriptor = 0; + + /* Parameters for Output */ + port_descriptors[ALLPASS_N_OUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[ALLPASS_N_OUT] = + D_("Output"); + port_range_hints[ALLPASS_N_OUT].HintDescriptor = 0; + + /* Parameters for Max Delay (s) */ + port_descriptors[ALLPASS_N_MAX_DELAY] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[ALLPASS_N_MAX_DELAY] = + D_("Max Delay (s)"); + port_range_hints[ALLPASS_N_MAX_DELAY].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW; + port_range_hints[ALLPASS_N_MAX_DELAY].LowerBound = 0; + + /* Parameters for Delay Time (s) */ + port_descriptors[ALLPASS_N_DELAY_TIME] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[ALLPASS_N_DELAY_TIME] = + D_("Delay Time (s)"); + port_range_hints[ALLPASS_N_DELAY_TIME].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW; + port_range_hints[ALLPASS_N_DELAY_TIME].LowerBound = 0; + + /* Parameters for Decay Time (s) */ + port_descriptors[ALLPASS_N_DECAY_TIME] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[ALLPASS_N_DECAY_TIME] = + D_("Decay Time (s)"); + port_range_hints[ALLPASS_N_DECAY_TIME].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW; + port_range_hints[ALLPASS_N_DECAY_TIME].LowerBound = 0; + + allpass_nDescriptor->activate = activateAllpass_n; + allpass_nDescriptor->cleanup = cleanupAllpass_n; + allpass_nDescriptor->connect_port = connectPortAllpass_n; + allpass_nDescriptor->deactivate = NULL; + allpass_nDescriptor->instantiate = instantiateAllpass_n; + allpass_nDescriptor->run = runAllpass_n; + allpass_nDescriptor->run_adding = runAddingAllpass_n; + allpass_nDescriptor->set_run_adding_gain = setRunAddingGainAllpass_n; + } + + allpass_lDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (allpass_lDescriptor) { + allpass_lDescriptor->UniqueID = 1896; + allpass_lDescriptor->Label = "allpass_l"; + allpass_lDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + allpass_lDescriptor->Name = + D_("Allpass delay line, linear interpolation"); + allpass_lDescriptor->Maker = + "Andy Wingo "; + allpass_lDescriptor->Copyright = + "GPL"; + allpass_lDescriptor->PortCount = 5; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(5, + sizeof(LADSPA_PortDescriptor)); + allpass_lDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(5, + sizeof(LADSPA_PortRangeHint)); + allpass_lDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(5, sizeof(char*)); + allpass_lDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Input */ + port_descriptors[ALLPASS_L_IN] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[ALLPASS_L_IN] = + D_("Input"); + port_range_hints[ALLPASS_L_IN].HintDescriptor = 0; + + /* Parameters for Output */ + port_descriptors[ALLPASS_L_OUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[ALLPASS_L_OUT] = + D_("Output"); + port_range_hints[ALLPASS_L_OUT].HintDescriptor = 0; + + /* Parameters for Max Delay (s) */ + port_descriptors[ALLPASS_L_MAX_DELAY] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[ALLPASS_L_MAX_DELAY] = + D_("Max Delay (s)"); + port_range_hints[ALLPASS_L_MAX_DELAY].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW; + port_range_hints[ALLPASS_L_MAX_DELAY].LowerBound = 0; + + /* Parameters for Delay Time (s) */ + port_descriptors[ALLPASS_L_DELAY_TIME] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[ALLPASS_L_DELAY_TIME] = + D_("Delay Time (s)"); + port_range_hints[ALLPASS_L_DELAY_TIME].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW; + port_range_hints[ALLPASS_L_DELAY_TIME].LowerBound = 0; + + /* Parameters for Decay Time (s) */ + port_descriptors[ALLPASS_L_DECAY_TIME] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[ALLPASS_L_DECAY_TIME] = + D_("Decay Time (s)"); + port_range_hints[ALLPASS_L_DECAY_TIME].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW; + port_range_hints[ALLPASS_L_DECAY_TIME].LowerBound = 0; + + allpass_lDescriptor->activate = activateAllpass_l; + allpass_lDescriptor->cleanup = cleanupAllpass_l; + allpass_lDescriptor->connect_port = connectPortAllpass_l; + allpass_lDescriptor->deactivate = NULL; + allpass_lDescriptor->instantiate = instantiateAllpass_l; + allpass_lDescriptor->run = runAllpass_l; + allpass_lDescriptor->run_adding = runAddingAllpass_l; + allpass_lDescriptor->set_run_adding_gain = setRunAddingGainAllpass_l; + } + + allpass_cDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (allpass_cDescriptor) { + allpass_cDescriptor->UniqueID = 1897; + allpass_cDescriptor->Label = "allpass_c"; + allpass_cDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + allpass_cDescriptor->Name = + D_("Allpass delay line, cubic spline interpolation"); + allpass_cDescriptor->Maker = + "Andy Wingo "; + allpass_cDescriptor->Copyright = + "GPL"; + allpass_cDescriptor->PortCount = 5; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(5, + sizeof(LADSPA_PortDescriptor)); + allpass_cDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(5, + sizeof(LADSPA_PortRangeHint)); + allpass_cDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(5, sizeof(char*)); + allpass_cDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Input */ + port_descriptors[ALLPASS_C_IN] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[ALLPASS_C_IN] = + D_("Input"); + port_range_hints[ALLPASS_C_IN].HintDescriptor = 0; + + /* Parameters for Output */ + port_descriptors[ALLPASS_C_OUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[ALLPASS_C_OUT] = + D_("Output"); + port_range_hints[ALLPASS_C_OUT].HintDescriptor = 0; + + /* Parameters for Max Delay (s) */ + port_descriptors[ALLPASS_C_MAX_DELAY] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[ALLPASS_C_MAX_DELAY] = + D_("Max Delay (s)"); + port_range_hints[ALLPASS_C_MAX_DELAY].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW; + port_range_hints[ALLPASS_C_MAX_DELAY].LowerBound = 0; + + /* Parameters for Delay Time (s) */ + port_descriptors[ALLPASS_C_DELAY_TIME] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[ALLPASS_C_DELAY_TIME] = + D_("Delay Time (s)"); + port_range_hints[ALLPASS_C_DELAY_TIME].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW; + port_range_hints[ALLPASS_C_DELAY_TIME].LowerBound = 0; + + /* Parameters for Decay Time (s) */ + port_descriptors[ALLPASS_C_DECAY_TIME] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[ALLPASS_C_DECAY_TIME] = + D_("Decay Time (s)"); + port_range_hints[ALLPASS_C_DECAY_TIME].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW; + port_range_hints[ALLPASS_C_DECAY_TIME].LowerBound = 0; + + allpass_cDescriptor->activate = activateAllpass_c; + allpass_cDescriptor->cleanup = cleanupAllpass_c; + allpass_cDescriptor->connect_port = connectPortAllpass_c; + allpass_cDescriptor->deactivate = NULL; + allpass_cDescriptor->instantiate = instantiateAllpass_c; + allpass_cDescriptor->run = runAllpass_c; + allpass_cDescriptor->run_adding = runAddingAllpass_c; + allpass_cDescriptor->set_run_adding_gain = setRunAddingGainAllpass_c; + } +} + +void _fini() { + if (allpass_nDescriptor) { + free((LADSPA_PortDescriptor *)allpass_nDescriptor->PortDescriptors); + free((char **)allpass_nDescriptor->PortNames); + free((LADSPA_PortRangeHint *)allpass_nDescriptor->PortRangeHints); + free(allpass_nDescriptor); + } + if (allpass_lDescriptor) { + free((LADSPA_PortDescriptor *)allpass_lDescriptor->PortDescriptors); + free((char **)allpass_lDescriptor->PortNames); + free((LADSPA_PortRangeHint *)allpass_lDescriptor->PortRangeHints); + free(allpass_lDescriptor); + } + if (allpass_cDescriptor) { + free((LADSPA_PortDescriptor *)allpass_cDescriptor->PortDescriptors); + free((char **)allpass_cDescriptor->PortNames); + free((LADSPA_PortRangeHint *)allpass_cDescriptor->PortRangeHints); + free(allpass_cDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/am_pitchshift_1433.c b/plugins/ladspa_effect/swh/am_pitchshift_1433.c new file mode 100644 index 000000000..94b919942 --- /dev/null +++ b/plugins/ladspa_effect/swh/am_pitchshift_1433.c @@ -0,0 +1,466 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + +#line 10 "am_pitchshift_1433.xml" + +#include +#include + +#include "ladspa-util.h" + +/* Beware of dependcies if you change this */ +#define DELAY_SIZE 8192 + +#define AMPITCHSHIFT_PITCH 0 +#define AMPITCHSHIFT_SIZE 1 +#define AMPITCHSHIFT_INPUT 2 +#define AMPITCHSHIFT_OUTPUT 3 +#define AMPITCHSHIFT_LATENCY 4 + +static LADSPA_Descriptor *amPitchshiftDescriptor = NULL; + +typedef struct { + LADSPA_Data *pitch; + LADSPA_Data *size; + LADSPA_Data *input; + LADSPA_Data *output; + LADSPA_Data *latency; + unsigned int count; + LADSPA_Data *delay; + unsigned int delay_mask; + unsigned int delay_ofs; + float last_gain; + float last_inc; + int last_size; + fixp16 rptr; + unsigned int wptr; + LADSPA_Data run_adding_gain; +} AmPitchshift; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return amPitchshiftDescriptor; + default: + return NULL; + } +} + +static void cleanupAmPitchshift(LADSPA_Handle instance) { +#line 39 "am_pitchshift_1433.xml" + AmPitchshift *plugin_data = (AmPitchshift *)instance; + free(plugin_data->delay); + free(instance); +} + +static void connectPortAmPitchshift( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + AmPitchshift *plugin; + + plugin = (AmPitchshift *)instance; + switch (port) { + case AMPITCHSHIFT_PITCH: + plugin->pitch = data; + break; + case AMPITCHSHIFT_SIZE: + plugin->size = data; + break; + case AMPITCHSHIFT_INPUT: + plugin->input = data; + break; + case AMPITCHSHIFT_OUTPUT: + plugin->output = data; + break; + case AMPITCHSHIFT_LATENCY: + plugin->latency = data; + break; + } +} + +static LADSPA_Handle instantiateAmPitchshift( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + AmPitchshift *plugin_data = (AmPitchshift *)malloc(sizeof(AmPitchshift)); + unsigned int count; + LADSPA_Data *delay = NULL; + unsigned int delay_mask; + unsigned int delay_ofs; + float last_gain; + float last_inc; + int last_size; + fixp16 rptr; + unsigned int wptr; + +#line 27 "am_pitchshift_1433.xml" + delay = calloc(DELAY_SIZE, sizeof(LADSPA_Data)); + rptr.all = 0; + wptr = 0; + last_size = -1; + delay_mask = 0xFF; + delay_ofs = 0x80; + last_gain = 0.5f; + count = 0; + last_inc = 0.0f; + + plugin_data->count = count; + plugin_data->delay = delay; + plugin_data->delay_mask = delay_mask; + plugin_data->delay_ofs = delay_ofs; + plugin_data->last_gain = last_gain; + plugin_data->last_inc = last_inc; + plugin_data->last_size = last_size; + plugin_data->rptr = rptr; + plugin_data->wptr = wptr; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runAmPitchshift(LADSPA_Handle instance, unsigned long sample_count) { + AmPitchshift *plugin_data = (AmPitchshift *)instance; + + /* Pitch shift (float value) */ + const LADSPA_Data pitch = *(plugin_data->pitch); + + /* Buffer size (float value) */ + const LADSPA_Data size = *(plugin_data->size); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + unsigned int count = plugin_data->count; + LADSPA_Data * delay = plugin_data->delay; + unsigned int delay_mask = plugin_data->delay_mask; + unsigned int delay_ofs = plugin_data->delay_ofs; + float last_gain = plugin_data->last_gain; + float last_inc = plugin_data->last_inc; + int last_size = plugin_data->last_size; + fixp16 rptr = plugin_data->rptr; + unsigned int wptr = plugin_data->wptr; + +#line 43 "am_pitchshift_1433.xml" + unsigned long pos; + fixp16 om; + float gain = last_gain, gain_inc = last_inc; + unsigned int i; + + om.all = f_round(pitch * 65536.0f); + + if (size != last_size) { + int size_tmp = f_round(size); + + if (size_tmp > 7) { + size_tmp = 5; + } else if (size_tmp < 1) { + size_tmp = 1; + } + plugin_data->last_size = size; + + /* Calculate the ringbuf parameters, the magick constants will need + * to be changed if you change DELAY_SIZE */ + delay_mask = (1 << (size_tmp + 6)) - 1; + delay_ofs = 1 << (size_tmp + 5); + } + + for (pos = 0; pos < sample_count; pos++) { + float out = 0.0f; + + if (count++ > 14) { + float tmp; + count = 0; + tmp = 0.5f * (float)((rptr.part.in - wptr + delay_ofs/2) & + delay_mask) / (float)delay_ofs; + tmp = sinf(M_PI * 2.0f * tmp) * 0.5f + 0.5f; + gain_inc = (tmp - gain) / 15.0f; + } + gain += gain_inc; + + delay[wptr] = input[pos]; + + /* Add contributions from the two readpointers, scaled by thier + * distance from the write pointer */ + i = rptr.part.in; + out += cube_interp((float)rptr.part.fr * 0.0000152587f, + delay[(i - 1) & delay_mask], delay[i], + delay[(i + 1) & delay_mask], + delay[(i + 2) & delay_mask]) * (1.0f - gain); + i += delay_ofs; + out += cube_interp((float)rptr.part.fr * 0.0000152587f, + delay[(i - 1) & delay_mask], delay[i & delay_mask], + delay[(i + 1) & delay_mask], + delay[(i + 2) & delay_mask]) * gain; + + buffer_write(output[pos], out); + + /* Increment ringbuffer pointers */ + wptr = (wptr + 1) & delay_mask; + rptr.all += om.all; + rptr.part.in &= delay_mask; + } + + plugin_data->rptr.all = rptr.all; + plugin_data->wptr = wptr; + plugin_data->delay_mask = delay_mask; + plugin_data->delay_ofs = delay_ofs; + plugin_data->last_gain = gain; + plugin_data->count = count; + plugin_data->last_inc = gain_inc; + + *(plugin_data->latency) = delay_ofs/2; +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainAmPitchshift(LADSPA_Handle instance, LADSPA_Data gain) { + ((AmPitchshift *)instance)->run_adding_gain = gain; +} + +static void runAddingAmPitchshift(LADSPA_Handle instance, unsigned long sample_count) { + AmPitchshift *plugin_data = (AmPitchshift *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Pitch shift (float value) */ + const LADSPA_Data pitch = *(plugin_data->pitch); + + /* Buffer size (float value) */ + const LADSPA_Data size = *(plugin_data->size); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + unsigned int count = plugin_data->count; + LADSPA_Data * delay = plugin_data->delay; + unsigned int delay_mask = plugin_data->delay_mask; + unsigned int delay_ofs = plugin_data->delay_ofs; + float last_gain = plugin_data->last_gain; + float last_inc = plugin_data->last_inc; + int last_size = plugin_data->last_size; + fixp16 rptr = plugin_data->rptr; + unsigned int wptr = plugin_data->wptr; + +#line 43 "am_pitchshift_1433.xml" + unsigned long pos; + fixp16 om; + float gain = last_gain, gain_inc = last_inc; + unsigned int i; + + om.all = f_round(pitch * 65536.0f); + + if (size != last_size) { + int size_tmp = f_round(size); + + if (size_tmp > 7) { + size_tmp = 5; + } else if (size_tmp < 1) { + size_tmp = 1; + } + plugin_data->last_size = size; + + /* Calculate the ringbuf parameters, the magick constants will need + * to be changed if you change DELAY_SIZE */ + delay_mask = (1 << (size_tmp + 6)) - 1; + delay_ofs = 1 << (size_tmp + 5); + } + + for (pos = 0; pos < sample_count; pos++) { + float out = 0.0f; + + if (count++ > 14) { + float tmp; + count = 0; + tmp = 0.5f * (float)((rptr.part.in - wptr + delay_ofs/2) & + delay_mask) / (float)delay_ofs; + tmp = sinf(M_PI * 2.0f * tmp) * 0.5f + 0.5f; + gain_inc = (tmp - gain) / 15.0f; + } + gain += gain_inc; + + delay[wptr] = input[pos]; + + /* Add contributions from the two readpointers, scaled by thier + * distance from the write pointer */ + i = rptr.part.in; + out += cube_interp((float)rptr.part.fr * 0.0000152587f, + delay[(i - 1) & delay_mask], delay[i], + delay[(i + 1) & delay_mask], + delay[(i + 2) & delay_mask]) * (1.0f - gain); + i += delay_ofs; + out += cube_interp((float)rptr.part.fr * 0.0000152587f, + delay[(i - 1) & delay_mask], delay[i & delay_mask], + delay[(i + 1) & delay_mask], + delay[(i + 2) & delay_mask]) * gain; + + buffer_write(output[pos], out); + + /* Increment ringbuffer pointers */ + wptr = (wptr + 1) & delay_mask; + rptr.all += om.all; + rptr.part.in &= delay_mask; + } + + plugin_data->rptr.all = rptr.all; + plugin_data->wptr = wptr; + plugin_data->delay_mask = delay_mask; + plugin_data->delay_ofs = delay_ofs; + plugin_data->last_gain = gain; + plugin_data->count = count; + plugin_data->last_inc = gain_inc; + + *(plugin_data->latency) = delay_ofs/2; +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + amPitchshiftDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (amPitchshiftDescriptor) { + amPitchshiftDescriptor->UniqueID = 1433; + amPitchshiftDescriptor->Label = "amPitchshift"; + amPitchshiftDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + amPitchshiftDescriptor->Name = + D_("AM pitchshifter"); + amPitchshiftDescriptor->Maker = + "Steve Harris "; + amPitchshiftDescriptor->Copyright = + "GPL"; + amPitchshiftDescriptor->PortCount = 5; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(5, + sizeof(LADSPA_PortDescriptor)); + amPitchshiftDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(5, + sizeof(LADSPA_PortRangeHint)); + amPitchshiftDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(5, sizeof(char*)); + amPitchshiftDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Pitch shift */ + port_descriptors[AMPITCHSHIFT_PITCH] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[AMPITCHSHIFT_PITCH] = + D_("Pitch shift"); + port_range_hints[AMPITCHSHIFT_PITCH].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_LOGARITHMIC | LADSPA_HINT_DEFAULT_1; + port_range_hints[AMPITCHSHIFT_PITCH].LowerBound = 0.25; + port_range_hints[AMPITCHSHIFT_PITCH].UpperBound = 4.0; + + /* Parameters for Buffer size */ + port_descriptors[AMPITCHSHIFT_SIZE] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[AMPITCHSHIFT_SIZE] = + D_("Buffer size"); + port_range_hints[AMPITCHSHIFT_SIZE].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_INTEGER | LADSPA_HINT_DEFAULT_MIDDLE; + port_range_hints[AMPITCHSHIFT_SIZE].LowerBound = 1; + port_range_hints[AMPITCHSHIFT_SIZE].UpperBound = 7; + + /* Parameters for Input */ + port_descriptors[AMPITCHSHIFT_INPUT] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[AMPITCHSHIFT_INPUT] = + D_("Input"); + port_range_hints[AMPITCHSHIFT_INPUT].HintDescriptor = 0; + + /* Parameters for Output */ + port_descriptors[AMPITCHSHIFT_OUTPUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[AMPITCHSHIFT_OUTPUT] = + D_("Output"); + port_range_hints[AMPITCHSHIFT_OUTPUT].HintDescriptor = 0; + + /* Parameters for latency */ + port_descriptors[AMPITCHSHIFT_LATENCY] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_CONTROL; + port_names[AMPITCHSHIFT_LATENCY] = + D_("latency"); + port_range_hints[AMPITCHSHIFT_LATENCY].HintDescriptor = 0; + + amPitchshiftDescriptor->activate = NULL; + amPitchshiftDescriptor->cleanup = cleanupAmPitchshift; + amPitchshiftDescriptor->connect_port = connectPortAmPitchshift; + amPitchshiftDescriptor->deactivate = NULL; + amPitchshiftDescriptor->instantiate = instantiateAmPitchshift; + amPitchshiftDescriptor->run = runAmPitchshift; + amPitchshiftDescriptor->run_adding = runAddingAmPitchshift; + amPitchshiftDescriptor->set_run_adding_gain = setRunAddingGainAmPitchshift; + } +} + +void _fini() { + if (amPitchshiftDescriptor) { + free((LADSPA_PortDescriptor *)amPitchshiftDescriptor->PortDescriptors); + free((char **)amPitchshiftDescriptor->PortNames); + free((LADSPA_PortRangeHint *)amPitchshiftDescriptor->PortRangeHints); + free(amPitchshiftDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/amp_1181.c b/plugins/ladspa_effect/swh/amp_1181.c new file mode 100644 index 000000000..c042c34b4 --- /dev/null +++ b/plugins/ladspa_effect/swh/amp_1181.c @@ -0,0 +1,244 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + +#line 10 "amp_1181.xml" + +#include "ladspa-util.h" + +#define AMP_GAIN 0 +#define AMP_INPUT 1 +#define AMP_OUTPUT 2 + +static LADSPA_Descriptor *ampDescriptor = NULL; + +typedef struct { + LADSPA_Data *gain; + LADSPA_Data *input; + LADSPA_Data *output; + LADSPA_Data run_adding_gain; +} Amp; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return ampDescriptor; + default: + return NULL; + } +} + +static void cleanupAmp(LADSPA_Handle instance) { + free(instance); +} + +static void connectPortAmp( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + Amp *plugin; + + plugin = (Amp *)instance; + switch (port) { + case AMP_GAIN: + plugin->gain = data; + break; + case AMP_INPUT: + plugin->input = data; + break; + case AMP_OUTPUT: + plugin->output = data; + break; + } +} + +static LADSPA_Handle instantiateAmp( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + Amp *plugin_data = (Amp *)malloc(sizeof(Amp)); + plugin_data->run_adding_gain = 1.0f; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runAmp(LADSPA_Handle instance, unsigned long sample_count) { + Amp *plugin_data = (Amp *)instance; + + /* Amps gain (dB) (float value) */ + const LADSPA_Data gain = *(plugin_data->gain); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + +#line 19 "amp_1181.xml" + unsigned long pos; + float coef = DB_CO(gain); + + for (pos = 0; pos < sample_count; pos++) { + buffer_write(output[pos], input[pos] * coef); + } +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainAmp(LADSPA_Handle instance, LADSPA_Data gain) { + ((Amp *)instance)->run_adding_gain = gain; +} + +static void runAddingAmp(LADSPA_Handle instance, unsigned long sample_count) { + Amp *plugin_data = (Amp *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Amps gain (dB) (float value) */ + const LADSPA_Data gain = *(plugin_data->gain); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + +#line 19 "amp_1181.xml" + unsigned long pos; + float coef = DB_CO(gain); + + for (pos = 0; pos < sample_count; pos++) { + buffer_write(output[pos], input[pos] * coef); + } +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + ampDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (ampDescriptor) { + ampDescriptor->UniqueID = 1181; + ampDescriptor->Label = "amp"; + ampDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + ampDescriptor->Name = + D_("Simple amplifier"); + ampDescriptor->Maker = + "Steve Harris "; + ampDescriptor->Copyright = + "GPL"; + ampDescriptor->PortCount = 3; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(3, + sizeof(LADSPA_PortDescriptor)); + ampDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(3, + sizeof(LADSPA_PortRangeHint)); + ampDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(3, sizeof(char*)); + ampDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Amps gain (dB) */ + port_descriptors[AMP_GAIN] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[AMP_GAIN] = + D_("Amps gain (dB)"); + port_range_hints[AMP_GAIN].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[AMP_GAIN].LowerBound = -70; + port_range_hints[AMP_GAIN].UpperBound = +70; + + /* Parameters for Input */ + port_descriptors[AMP_INPUT] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[AMP_INPUT] = + D_("Input"); + port_range_hints[AMP_INPUT].HintDescriptor = 0; + + /* Parameters for Output */ + port_descriptors[AMP_OUTPUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[AMP_OUTPUT] = + D_("Output"); + port_range_hints[AMP_OUTPUT].HintDescriptor = 0; + + ampDescriptor->activate = NULL; + ampDescriptor->cleanup = cleanupAmp; + ampDescriptor->connect_port = connectPortAmp; + ampDescriptor->deactivate = NULL; + ampDescriptor->instantiate = instantiateAmp; + ampDescriptor->run = runAmp; + ampDescriptor->run_adding = runAddingAmp; + ampDescriptor->set_run_adding_gain = setRunAddingGainAmp; + } +} + +void _fini() { + if (ampDescriptor) { + free((LADSPA_PortDescriptor *)ampDescriptor->PortDescriptors); + free((char **)ampDescriptor->PortNames); + free((LADSPA_PortRangeHint *)ampDescriptor->PortRangeHints); + free(ampDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/bandpass_a_iir_1893.c b/plugins/ladspa_effect/swh/bandpass_a_iir_1893.c new file mode 100644 index 000000000..477587a3f --- /dev/null +++ b/plugins/ladspa_effect/swh/bandpass_a_iir_1893.c @@ -0,0 +1,296 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + +#line 9 "bandpass_a_iir_1893.xml" + +#include "config.h" +#include "util/iir.h" + +#define BANDPASS_A_IIR_CENTER 0 +#define BANDPASS_A_IIR_WIDTH 1 +#define BANDPASS_A_IIR_INPUT 2 +#define BANDPASS_A_IIR_OUTPUT 3 + +static LADSPA_Descriptor *bandpass_a_iirDescriptor = NULL; + +typedef struct { + LADSPA_Data *center; + LADSPA_Data *width; + LADSPA_Data *input; + LADSPA_Data *output; + iir_stage_t* gt; + iirf_t* iirf; + long sample_rate; + LADSPA_Data run_adding_gain; +} Bandpass_a_iir; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return bandpass_a_iirDescriptor; + default: + return NULL; + } +} + +static void activateBandpass_a_iir(LADSPA_Handle instance) { + Bandpass_a_iir *plugin_data = (Bandpass_a_iir *)instance; + iir_stage_t*gt = plugin_data->gt; + iirf_t*iirf = plugin_data->iirf; + long sample_rate = plugin_data->sample_rate; +#line 30 "bandpass_a_iir_1893.xml" + + gt = init_iir_stage(IIR_STAGE_LOWPASS,1,3,2); + iirf = init_iirf_t(gt); + calc_2polebandpass(iirf, gt, *(plugin_data->center), *(plugin_data->width), sample_rate); + plugin_data->gt = gt; + plugin_data->iirf = iirf; + plugin_data->sample_rate = sample_rate; + +} + +static void cleanupBandpass_a_iir(LADSPA_Handle instance) { +#line 36 "bandpass_a_iir_1893.xml" + Bandpass_a_iir *plugin_data = (Bandpass_a_iir *)instance; + free_iirf_t(plugin_data->iirf, plugin_data->gt); + free_iir_stage(plugin_data->gt); + free(instance); +} + +static void connectPortBandpass_a_iir( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + Bandpass_a_iir *plugin; + + plugin = (Bandpass_a_iir *)instance; + switch (port) { + case BANDPASS_A_IIR_CENTER: + plugin->center = data; + break; + case BANDPASS_A_IIR_WIDTH: + plugin->width = data; + break; + case BANDPASS_A_IIR_INPUT: + plugin->input = data; + break; + case BANDPASS_A_IIR_OUTPUT: + plugin->output = data; + break; + } +} + +static LADSPA_Handle instantiateBandpass_a_iir( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + Bandpass_a_iir *plugin_data = (Bandpass_a_iir *)malloc(sizeof(Bandpass_a_iir)); + iir_stage_t*gt = NULL; + iirf_t*iirf = NULL; + long sample_rate; + +#line 22 "bandpass_a_iir_1893.xml" + sample_rate = s_rate; + + plugin_data->gt = gt; + plugin_data->iirf = iirf; + plugin_data->sample_rate = sample_rate; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runBandpass_a_iir(LADSPA_Handle instance, unsigned long sample_count) { + Bandpass_a_iir *plugin_data = (Bandpass_a_iir *)instance; + + /* Center Frequency (Hz) (float value) */ + const LADSPA_Data center = *(plugin_data->center); + + /* Bandwidth (Hz) (float value) */ + const LADSPA_Data width = *(plugin_data->width); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + iir_stage_t* gt = plugin_data->gt; + iirf_t* iirf = plugin_data->iirf; + long sample_rate = plugin_data->sample_rate; + +#line 25 "bandpass_a_iir_1893.xml" + calc_2polebandpass(iirf, gt, center, width, sample_rate); + iir_process_buffer_1s_5(iirf, gt, input, output, sample_count,0); +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainBandpass_a_iir(LADSPA_Handle instance, LADSPA_Data gain) { + ((Bandpass_a_iir *)instance)->run_adding_gain = gain; +} + +static void runAddingBandpass_a_iir(LADSPA_Handle instance, unsigned long sample_count) { + Bandpass_a_iir *plugin_data = (Bandpass_a_iir *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Center Frequency (Hz) (float value) */ + const LADSPA_Data center = *(plugin_data->center); + + /* Bandwidth (Hz) (float value) */ + const LADSPA_Data width = *(plugin_data->width); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + iir_stage_t* gt = plugin_data->gt; + iirf_t* iirf = plugin_data->iirf; + long sample_rate = plugin_data->sample_rate; + +#line 25 "bandpass_a_iir_1893.xml" + calc_2polebandpass(iirf, gt, center, width, sample_rate); + iir_process_buffer_1s_5(iirf, gt, input, output, sample_count,0); +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + bandpass_a_iirDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (bandpass_a_iirDescriptor) { + bandpass_a_iirDescriptor->UniqueID = 1893; + bandpass_a_iirDescriptor->Label = "bandpass_a_iir"; + bandpass_a_iirDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + bandpass_a_iirDescriptor->Name = + D_("Glame Bandpass Analog Filter"); + bandpass_a_iirDescriptor->Maker = + "Alexander Ehlert "; + bandpass_a_iirDescriptor->Copyright = + "GPL"; + bandpass_a_iirDescriptor->PortCount = 4; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(4, + sizeof(LADSPA_PortDescriptor)); + bandpass_a_iirDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(4, + sizeof(LADSPA_PortRangeHint)); + bandpass_a_iirDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(4, sizeof(char*)); + bandpass_a_iirDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Center Frequency (Hz) */ + port_descriptors[BANDPASS_A_IIR_CENTER] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[BANDPASS_A_IIR_CENTER] = + D_("Center Frequency (Hz)"); + port_range_hints[BANDPASS_A_IIR_CENTER].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_LOW | LADSPA_HINT_SAMPLE_RATE | LADSPA_HINT_LOGARITHMIC; + port_range_hints[BANDPASS_A_IIR_CENTER].LowerBound = 0.0001; + port_range_hints[BANDPASS_A_IIR_CENTER].UpperBound = 0.45; + + /* Parameters for Bandwidth (Hz) */ + port_descriptors[BANDPASS_A_IIR_WIDTH] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[BANDPASS_A_IIR_WIDTH] = + D_("Bandwidth (Hz)"); + port_range_hints[BANDPASS_A_IIR_WIDTH].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MIDDLE | LADSPA_HINT_SAMPLE_RATE | LADSPA_HINT_LOGARITHMIC; + port_range_hints[BANDPASS_A_IIR_WIDTH].LowerBound = 0.0001; + port_range_hints[BANDPASS_A_IIR_WIDTH].UpperBound = 0.45; + + /* Parameters for Input */ + port_descriptors[BANDPASS_A_IIR_INPUT] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[BANDPASS_A_IIR_INPUT] = + D_("Input"); + port_range_hints[BANDPASS_A_IIR_INPUT].HintDescriptor = 0; + + /* Parameters for Output */ + port_descriptors[BANDPASS_A_IIR_OUTPUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[BANDPASS_A_IIR_OUTPUT] = + D_("Output"); + port_range_hints[BANDPASS_A_IIR_OUTPUT].HintDescriptor = 0; + + bandpass_a_iirDescriptor->activate = activateBandpass_a_iir; + bandpass_a_iirDescriptor->cleanup = cleanupBandpass_a_iir; + bandpass_a_iirDescriptor->connect_port = connectPortBandpass_a_iir; + bandpass_a_iirDescriptor->deactivate = NULL; + bandpass_a_iirDescriptor->instantiate = instantiateBandpass_a_iir; + bandpass_a_iirDescriptor->run = runBandpass_a_iir; + bandpass_a_iirDescriptor->run_adding = runAddingBandpass_a_iir; + bandpass_a_iirDescriptor->set_run_adding_gain = setRunAddingGainBandpass_a_iir; + } +} + +void _fini() { + if (bandpass_a_iirDescriptor) { + free((LADSPA_PortDescriptor *)bandpass_a_iirDescriptor->PortDescriptors); + free((char **)bandpass_a_iirDescriptor->PortNames); + free((LADSPA_PortRangeHint *)bandpass_a_iirDescriptor->PortRangeHints); + free(bandpass_a_iirDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/bandpass_iir_1892.c b/plugins/ladspa_effect/swh/bandpass_iir_1892.c new file mode 100644 index 000000000..4ceada376 --- /dev/null +++ b/plugins/ladspa_effect/swh/bandpass_iir_1892.c @@ -0,0 +1,361 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + +#line 9 "bandpass_iir_1892.xml" + +#include "config.h" +#include "util/iir.h" + +#define BANDPASS_IIR_CENTER 0 +#define BANDPASS_IIR_WIDTH 1 +#define BANDPASS_IIR_STAGES 2 +#define BANDPASS_IIR_INPUT 3 +#define BANDPASS_IIR_OUTPUT 4 + +static LADSPA_Descriptor *bandpass_iirDescriptor = NULL; + +typedef struct { + LADSPA_Data *center; + LADSPA_Data *width; + LADSPA_Data *stages; + LADSPA_Data *input; + LADSPA_Data *output; + iir_stage_t* first; + iir_stage_t* gt; + iirf_t* iirf; + float lfc; + long sample_rate; + iir_stage_t* second; + float ufc; + LADSPA_Data run_adding_gain; +} Bandpass_iir; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return bandpass_iirDescriptor; + default: + return NULL; + } +} + +static void activateBandpass_iir(LADSPA_Handle instance) { + Bandpass_iir *plugin_data = (Bandpass_iir *)instance; + iir_stage_t*first = plugin_data->first; + iir_stage_t*gt = plugin_data->gt; + iirf_t*iirf = plugin_data->iirf; + float lfc = plugin_data->lfc; + long sample_rate = plugin_data->sample_rate; + iir_stage_t*second = plugin_data->second; + float ufc = plugin_data->ufc; +#line 36 "bandpass_iir_1892.xml" + + ufc = (*(plugin_data->center) + *(plugin_data->width)*0.5f)/(float)sample_rate; + lfc = (*(plugin_data->center) - *(plugin_data->width)*0.5f)/(float)sample_rate; + first = init_iir_stage(IIR_STAGE_LOWPASS,10,3,2); + second = init_iir_stage(IIR_STAGE_HIGHPASS,10,3,2); + gt = init_iir_stage(IIR_STAGE_BANDPASS,20,3,2); + iirf = init_iirf_t(gt); + chebyshev(iirf, first, 2*CLAMP((int)(*(plugin_data->stages)),1,10), IIR_STAGE_LOWPASS, ufc, 0.5f); + chebyshev(iirf, second, 2*CLAMP((int)(*(plugin_data->stages)),1,10), IIR_STAGE_HIGHPASS, lfc, 0.5f); + combine_iir_stages(IIR_STAGE_BANDPASS, gt, first, second,0,0); + plugin_data->first = first; + plugin_data->gt = gt; + plugin_data->iirf = iirf; + plugin_data->lfc = lfc; + plugin_data->sample_rate = sample_rate; + plugin_data->second = second; + plugin_data->ufc = ufc; + +} + +static void cleanupBandpass_iir(LADSPA_Handle instance) { +#line 48 "bandpass_iir_1892.xml" + Bandpass_iir *plugin_data = (Bandpass_iir *)instance; + free_iirf_t(plugin_data->iirf, plugin_data->gt); + free_iir_stage(plugin_data->first); + free_iir_stage(plugin_data->second); + free_iir_stage(plugin_data->gt); + free(instance); +} + +static void connectPortBandpass_iir( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + Bandpass_iir *plugin; + + plugin = (Bandpass_iir *)instance; + switch (port) { + case BANDPASS_IIR_CENTER: + plugin->center = data; + break; + case BANDPASS_IIR_WIDTH: + plugin->width = data; + break; + case BANDPASS_IIR_STAGES: + plugin->stages = data; + break; + case BANDPASS_IIR_INPUT: + plugin->input = data; + break; + case BANDPASS_IIR_OUTPUT: + plugin->output = data; + break; + } +} + +static LADSPA_Handle instantiateBandpass_iir( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + Bandpass_iir *plugin_data = (Bandpass_iir *)malloc(sizeof(Bandpass_iir)); + iir_stage_t*first = NULL; + iir_stage_t*gt = NULL; + iirf_t*iirf = NULL; + float lfc; + long sample_rate; + iir_stage_t*second = NULL; + float ufc; + +#line 24 "bandpass_iir_1892.xml" + sample_rate = s_rate; + + plugin_data->first = first; + plugin_data->gt = gt; + plugin_data->iirf = iirf; + plugin_data->lfc = lfc; + plugin_data->sample_rate = sample_rate; + plugin_data->second = second; + plugin_data->ufc = ufc; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runBandpass_iir(LADSPA_Handle instance, unsigned long sample_count) { + Bandpass_iir *plugin_data = (Bandpass_iir *)instance; + + /* Center Frequency (Hz) (float value) */ + const LADSPA_Data center = *(plugin_data->center); + + /* Bandwidth (Hz) (float value) */ + const LADSPA_Data width = *(plugin_data->width); + + /* Stages(2 poles per stage) (float value) */ + const LADSPA_Data stages = *(plugin_data->stages); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + iir_stage_t* first = plugin_data->first; + iir_stage_t* gt = plugin_data->gt; + iirf_t* iirf = plugin_data->iirf; + float lfc = plugin_data->lfc; + long sample_rate = plugin_data->sample_rate; + iir_stage_t* second = plugin_data->second; + float ufc = plugin_data->ufc; + +#line 27 "bandpass_iir_1892.xml" + ufc = (center + width*0.5f)/(float)sample_rate; + lfc = (center - width*0.5f)/(float)sample_rate; + combine_iir_stages(IIR_STAGE_BANDPASS, gt, first, second, + chebyshev(iirf, first, 2*CLAMP((int)stages,1,10), IIR_STAGE_LOWPASS, ufc, 0.5f), + chebyshev(iirf, second, 2*CLAMP((int)stages,1,10), IIR_STAGE_HIGHPASS, lfc, 0.5f)); + iir_process_buffer_ns_5(iirf, gt, input, output, sample_count,RUN_ADDING); +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainBandpass_iir(LADSPA_Handle instance, LADSPA_Data gain) { + ((Bandpass_iir *)instance)->run_adding_gain = gain; +} + +static void runAddingBandpass_iir(LADSPA_Handle instance, unsigned long sample_count) { + Bandpass_iir *plugin_data = (Bandpass_iir *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Center Frequency (Hz) (float value) */ + const LADSPA_Data center = *(plugin_data->center); + + /* Bandwidth (Hz) (float value) */ + const LADSPA_Data width = *(plugin_data->width); + + /* Stages(2 poles per stage) (float value) */ + const LADSPA_Data stages = *(plugin_data->stages); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + iir_stage_t* first = plugin_data->first; + iir_stage_t* gt = plugin_data->gt; + iirf_t* iirf = plugin_data->iirf; + float lfc = plugin_data->lfc; + long sample_rate = plugin_data->sample_rate; + iir_stage_t* second = plugin_data->second; + float ufc = plugin_data->ufc; + +#line 27 "bandpass_iir_1892.xml" + ufc = (center + width*0.5f)/(float)sample_rate; + lfc = (center - width*0.5f)/(float)sample_rate; + combine_iir_stages(IIR_STAGE_BANDPASS, gt, first, second, + chebyshev(iirf, first, 2*CLAMP((int)stages,1,10), IIR_STAGE_LOWPASS, ufc, 0.5f), + chebyshev(iirf, second, 2*CLAMP((int)stages,1,10), IIR_STAGE_HIGHPASS, lfc, 0.5f)); + iir_process_buffer_ns_5(iirf, gt, input, output, sample_count,RUN_ADDING); +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + bandpass_iirDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (bandpass_iirDescriptor) { + bandpass_iirDescriptor->UniqueID = 1892; + bandpass_iirDescriptor->Label = "bandpass_iir"; + bandpass_iirDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + bandpass_iirDescriptor->Name = + D_("Glame Bandpass Filter"); + bandpass_iirDescriptor->Maker = + "Alexander Ehlert "; + bandpass_iirDescriptor->Copyright = + "GPL"; + bandpass_iirDescriptor->PortCount = 5; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(5, + sizeof(LADSPA_PortDescriptor)); + bandpass_iirDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(5, + sizeof(LADSPA_PortRangeHint)); + bandpass_iirDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(5, sizeof(char*)); + bandpass_iirDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Center Frequency (Hz) */ + port_descriptors[BANDPASS_IIR_CENTER] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[BANDPASS_IIR_CENTER] = + D_("Center Frequency (Hz)"); + port_range_hints[BANDPASS_IIR_CENTER].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MIDDLE | LADSPA_HINT_SAMPLE_RATE | LADSPA_HINT_LOGARITHMIC; + port_range_hints[BANDPASS_IIR_CENTER].LowerBound = 0.0001; + port_range_hints[BANDPASS_IIR_CENTER].UpperBound = 0.45; + + /* Parameters for Bandwidth (Hz) */ + port_descriptors[BANDPASS_IIR_WIDTH] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[BANDPASS_IIR_WIDTH] = + D_("Bandwidth (Hz)"); + port_range_hints[BANDPASS_IIR_WIDTH].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MIDDLE | LADSPA_HINT_SAMPLE_RATE | LADSPA_HINT_LOGARITHMIC; + port_range_hints[BANDPASS_IIR_WIDTH].LowerBound = 0.0001; + port_range_hints[BANDPASS_IIR_WIDTH].UpperBound = 0.45; + + /* Parameters for Stages(2 poles per stage) */ + port_descriptors[BANDPASS_IIR_STAGES] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[BANDPASS_IIR_STAGES] = + D_("Stages(2 poles per stage)"); + port_range_hints[BANDPASS_IIR_STAGES].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_1 | LADSPA_HINT_INTEGER; + port_range_hints[BANDPASS_IIR_STAGES].LowerBound = 1.0; + port_range_hints[BANDPASS_IIR_STAGES].UpperBound = 10.0; + + /* Parameters for Input */ + port_descriptors[BANDPASS_IIR_INPUT] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[BANDPASS_IIR_INPUT] = + D_("Input"); + port_range_hints[BANDPASS_IIR_INPUT].HintDescriptor = 0; + + /* Parameters for Output */ + port_descriptors[BANDPASS_IIR_OUTPUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[BANDPASS_IIR_OUTPUT] = + D_("Output"); + port_range_hints[BANDPASS_IIR_OUTPUT].HintDescriptor = 0; + + bandpass_iirDescriptor->activate = activateBandpass_iir; + bandpass_iirDescriptor->cleanup = cleanupBandpass_iir; + bandpass_iirDescriptor->connect_port = connectPortBandpass_iir; + bandpass_iirDescriptor->deactivate = NULL; + bandpass_iirDescriptor->instantiate = instantiateBandpass_iir; + bandpass_iirDescriptor->run = runBandpass_iir; + bandpass_iirDescriptor->run_adding = runAddingBandpass_iir; + bandpass_iirDescriptor->set_run_adding_gain = setRunAddingGainBandpass_iir; + } +} + +void _fini() { + if (bandpass_iirDescriptor) { + free((LADSPA_PortDescriptor *)bandpass_iirDescriptor->PortDescriptors); + free((char **)bandpass_iirDescriptor->PortNames); + free((LADSPA_PortRangeHint *)bandpass_iirDescriptor->PortRangeHints); + free(bandpass_iirDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/bode_shifter_1431.c b/plugins/ladspa_effect/swh/bode_shifter_1431.c new file mode 100644 index 000000000..5601a0eb1 --- /dev/null +++ b/plugins/ladspa_effect/swh/bode_shifter_1431.c @@ -0,0 +1,469 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + +#line 10 "bode_shifter_1431.xml" + +#include + +#include "ladspa-util.h" + +#define SIN_T_SIZE 1024 +#define D_SIZE 256 +#define NZEROS 200 + +/* The non-zero taps of the Hilbert transformer */ +static float xcoeffs[] = { + +0.0008103736f, +0.0008457886f, +0.0009017196f, +0.0009793364f, + +0.0010798341f, +0.0012044365f, +0.0013544008f, +0.0015310235f, + +0.0017356466f, +0.0019696659f, +0.0022345404f, +0.0025318040f, + +0.0028630784f, +0.0032300896f, +0.0036346867f, +0.0040788644f, + +0.0045647903f, +0.0050948365f, +0.0056716186f, +0.0062980419f, + +0.0069773575f, +0.0077132300f, +0.0085098208f, +0.0093718901f, + +0.0103049226f, +0.0113152847f, +0.0124104218f, +0.0135991079f, + +0.0148917649f, +0.0163008758f, +0.0178415242f, +0.0195321089f, + +0.0213953037f, +0.0234593652f, +0.0257599469f, +0.0283426636f, + +0.0312667947f, +0.0346107648f, +0.0384804823f, +0.0430224431f, + +0.0484451086f, +0.0550553725f, +0.0633242001f, +0.0740128560f, + +0.0884368322f, +0.1090816773f, +0.1412745301f, +0.1988673273f, + +0.3326528346f, +0.9997730178f, -0.9997730178f, -0.3326528346f, + -0.1988673273f, -0.1412745301f, -0.1090816773f, -0.0884368322f, + -0.0740128560f, -0.0633242001f, -0.0550553725f, -0.0484451086f, + -0.0430224431f, -0.0384804823f, -0.0346107648f, -0.0312667947f, + -0.0283426636f, -0.0257599469f, -0.0234593652f, -0.0213953037f, + -0.0195321089f, -0.0178415242f, -0.0163008758f, -0.0148917649f, + -0.0135991079f, -0.0124104218f, -0.0113152847f, -0.0103049226f, + -0.0093718901f, -0.0085098208f, -0.0077132300f, -0.0069773575f, + -0.0062980419f, -0.0056716186f, -0.0050948365f, -0.0045647903f, + -0.0040788644f, -0.0036346867f, -0.0032300896f, -0.0028630784f, + -0.0025318040f, -0.0022345404f, -0.0019696659f, -0.0017356466f, + -0.0015310235f, -0.0013544008f, -0.0012044365f, -0.0010798341f, + -0.0009793364f, -0.0009017196f, -0.0008457886f, -0.0008103736f, +}; + +#define BODESHIFTER_SHIFT 0 +#define BODESHIFTER_INPUT 1 +#define BODESHIFTER_DOUT 2 +#define BODESHIFTER_UOUT 3 +#define BODESHIFTER_LATENCY 4 + +static LADSPA_Descriptor *bodeShifterDescriptor = NULL; + +typedef struct { + LADSPA_Data *shift; + LADSPA_Data *input; + LADSPA_Data *dout; + LADSPA_Data *uout; + LADSPA_Data *latency; + LADSPA_Data *delay; + unsigned int dptr; + float fs; + float last_shift; + float phi; + float * sint; + LADSPA_Data run_adding_gain; +} BodeShifter; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return bodeShifterDescriptor; + default: + return NULL; + } +} + +static void cleanupBodeShifter(LADSPA_Handle instance) { +#line 75 "bode_shifter_1431.xml" + BodeShifter *plugin_data = (BodeShifter *)instance; + free(plugin_data->delay); + free(plugin_data->sint); + free(instance); +} + +static void connectPortBodeShifter( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + BodeShifter *plugin; + + plugin = (BodeShifter *)instance; + switch (port) { + case BODESHIFTER_SHIFT: + plugin->shift = data; + break; + case BODESHIFTER_INPUT: + plugin->input = data; + break; + case BODESHIFTER_DOUT: + plugin->dout = data; + break; + case BODESHIFTER_UOUT: + plugin->uout = data; + break; + case BODESHIFTER_LATENCY: + plugin->latency = data; + break; + } +} + +static LADSPA_Handle instantiateBodeShifter( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + BodeShifter *plugin_data = (BodeShifter *)malloc(sizeof(BodeShifter)); + LADSPA_Data *delay = NULL; + unsigned int dptr; + float fs; + float last_shift; + float phi; + float *sint = NULL; + +#line 58 "bode_shifter_1431.xml" + unsigned int i; + + fs = (float)s_rate; + + delay = calloc(D_SIZE, sizeof(LADSPA_Data)); + sint = calloc(SIN_T_SIZE + 4, sizeof(float)); + + dptr = 0; + phi = 0.0f; + last_shift = 0.0f; + + for (i = 0; i < SIN_T_SIZE + 4; i++) { + sint[i] = sinf(2.0f * M_PI * (float)i / (float)SIN_T_SIZE); + } + + plugin_data->delay = delay; + plugin_data->dptr = dptr; + plugin_data->fs = fs; + plugin_data->last_shift = last_shift; + plugin_data->phi = phi; + plugin_data->sint = sint; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runBodeShifter(LADSPA_Handle instance, unsigned long sample_count) { + BodeShifter *plugin_data = (BodeShifter *)instance; + + /* Frequency shift (float value) */ + const LADSPA_Data shift = *(plugin_data->shift); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Down out (array of floats of length sample_count) */ + LADSPA_Data * const dout = plugin_data->dout; + + /* Up out (array of floats of length sample_count) */ + LADSPA_Data * const uout = plugin_data->uout; + LADSPA_Data * delay = plugin_data->delay; + unsigned int dptr = plugin_data->dptr; + float fs = plugin_data->fs; + float last_shift = plugin_data->last_shift; + float phi = plugin_data->phi; + float * sint = plugin_data->sint; + +#line 80 "bode_shifter_1431.xml" + unsigned long pos; + unsigned int i; + float hilb, rm1, rm2; + float shift_i = last_shift; + int int_p; + float frac_p; + const float shift_c = f_clamp(shift, 0.0f, 10000.0f); + const float shift_inc = (shift_c - last_shift) / (float)sample_count; + const float freq_fix = (float)SIN_T_SIZE / fs; + + for (pos = 0; pos < sample_count; pos++) { + delay[dptr] = input[pos]; + + /* Perform the Hilbert FIR convolution + * (probably FFT would be faster) */ + hilb = 0.0f; + for (i = 0; i < NZEROS/2; i++) { + hilb += (xcoeffs[i] * delay[(dptr - i*2) & (D_SIZE - 1)]); + } + + /* Calcuate the table positions for the sine modulator */ + int_p = f_round(floor(phi)); + + /* Calculate ringmod1, the transformed input modulated with a shift Hz + * sinewave. This creates a +180 degree sideband at source-shift Hz and + * a 0 degree sindeband at source+shift Hz */ + frac_p = phi - int_p; + + /* the Hilbert has a gain of pi/2, which we have to correct for, thanks + * Fons! */ + rm1 = hilb * 0.63661978f * cube_interp(frac_p, sint[int_p], + sint[int_p+1], sint[int_p+2], sint[int_p+3]); + + /* Calcuate the table positions for the cosine modulator */ + int_p = (int_p + SIN_T_SIZE / 4) & (SIN_T_SIZE - 1); + + /* Calculate ringmod2, the delayed input modulated with a shift Hz + * cosinewave. This creates a 0 degree sideband at source+shift Hz + * and a -180 degree sindeband at source-shift Hz */ + rm2 = delay[(dptr - 99) & (D_SIZE - 1)] * cube_interp(frac_p, + sint[int_p], sint[int_p+1], sint[int_p+2], sint[int_p+3]); + + /* Output the sum and differences of the ringmods. The +/-180 degree + * sidebands cancel (more of less) and just leave the shifted + * components */ + buffer_write(dout[pos], (rm2 - rm1) * 0.5f); + buffer_write(uout[pos], (rm2 + rm1) * 0.5f); + + dptr = (dptr + 1) & (D_SIZE - 1); + phi += shift_i * freq_fix; + while (phi > SIN_T_SIZE) { + phi -= SIN_T_SIZE; + } + shift_i += shift_inc; + } + + plugin_data->dptr = dptr; + plugin_data->phi = phi; + plugin_data->last_shift = shift_c; + + *(plugin_data->latency) = 99; +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainBodeShifter(LADSPA_Handle instance, LADSPA_Data gain) { + ((BodeShifter *)instance)->run_adding_gain = gain; +} + +static void runAddingBodeShifter(LADSPA_Handle instance, unsigned long sample_count) { + BodeShifter *plugin_data = (BodeShifter *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Frequency shift (float value) */ + const LADSPA_Data shift = *(plugin_data->shift); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Down out (array of floats of length sample_count) */ + LADSPA_Data * const dout = plugin_data->dout; + + /* Up out (array of floats of length sample_count) */ + LADSPA_Data * const uout = plugin_data->uout; + LADSPA_Data * delay = plugin_data->delay; + unsigned int dptr = plugin_data->dptr; + float fs = plugin_data->fs; + float last_shift = plugin_data->last_shift; + float phi = plugin_data->phi; + float * sint = plugin_data->sint; + +#line 80 "bode_shifter_1431.xml" + unsigned long pos; + unsigned int i; + float hilb, rm1, rm2; + float shift_i = last_shift; + int int_p; + float frac_p; + const float shift_c = f_clamp(shift, 0.0f, 10000.0f); + const float shift_inc = (shift_c - last_shift) / (float)sample_count; + const float freq_fix = (float)SIN_T_SIZE / fs; + + for (pos = 0; pos < sample_count; pos++) { + delay[dptr] = input[pos]; + + /* Perform the Hilbert FIR convolution + * (probably FFT would be faster) */ + hilb = 0.0f; + for (i = 0; i < NZEROS/2; i++) { + hilb += (xcoeffs[i] * delay[(dptr - i*2) & (D_SIZE - 1)]); + } + + /* Calcuate the table positions for the sine modulator */ + int_p = f_round(floor(phi)); + + /* Calculate ringmod1, the transformed input modulated with a shift Hz + * sinewave. This creates a +180 degree sideband at source-shift Hz and + * a 0 degree sindeband at source+shift Hz */ + frac_p = phi - int_p; + + /* the Hilbert has a gain of pi/2, which we have to correct for, thanks + * Fons! */ + rm1 = hilb * 0.63661978f * cube_interp(frac_p, sint[int_p], + sint[int_p+1], sint[int_p+2], sint[int_p+3]); + + /* Calcuate the table positions for the cosine modulator */ + int_p = (int_p + SIN_T_SIZE / 4) & (SIN_T_SIZE - 1); + + /* Calculate ringmod2, the delayed input modulated with a shift Hz + * cosinewave. This creates a 0 degree sideband at source+shift Hz + * and a -180 degree sindeband at source-shift Hz */ + rm2 = delay[(dptr - 99) & (D_SIZE - 1)] * cube_interp(frac_p, + sint[int_p], sint[int_p+1], sint[int_p+2], sint[int_p+3]); + + /* Output the sum and differences of the ringmods. The +/-180 degree + * sidebands cancel (more of less) and just leave the shifted + * components */ + buffer_write(dout[pos], (rm2 - rm1) * 0.5f); + buffer_write(uout[pos], (rm2 + rm1) * 0.5f); + + dptr = (dptr + 1) & (D_SIZE - 1); + phi += shift_i * freq_fix; + while (phi > SIN_T_SIZE) { + phi -= SIN_T_SIZE; + } + shift_i += shift_inc; + } + + plugin_data->dptr = dptr; + plugin_data->phi = phi; + plugin_data->last_shift = shift_c; + + *(plugin_data->latency) = 99; +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + bodeShifterDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (bodeShifterDescriptor) { + bodeShifterDescriptor->UniqueID = 1431; + bodeShifterDescriptor->Label = "bodeShifter"; + bodeShifterDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + bodeShifterDescriptor->Name = + D_("Bode frequency shifter"); + bodeShifterDescriptor->Maker = + "Steve Harris "; + bodeShifterDescriptor->Copyright = + "GPL"; + bodeShifterDescriptor->PortCount = 5; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(5, + sizeof(LADSPA_PortDescriptor)); + bodeShifterDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(5, + sizeof(LADSPA_PortRangeHint)); + bodeShifterDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(5, sizeof(char*)); + bodeShifterDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Frequency shift */ + port_descriptors[BODESHIFTER_SHIFT] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[BODESHIFTER_SHIFT] = + D_("Frequency shift"); + port_range_hints[BODESHIFTER_SHIFT].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[BODESHIFTER_SHIFT].LowerBound = 0; + port_range_hints[BODESHIFTER_SHIFT].UpperBound = 5000; + + /* Parameters for Input */ + port_descriptors[BODESHIFTER_INPUT] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[BODESHIFTER_INPUT] = + D_("Input"); + port_range_hints[BODESHIFTER_INPUT].HintDescriptor = 0; + + /* Parameters for Down out */ + port_descriptors[BODESHIFTER_DOUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[BODESHIFTER_DOUT] = + D_("Down out"); + port_range_hints[BODESHIFTER_DOUT].HintDescriptor = 0; + + /* Parameters for Up out */ + port_descriptors[BODESHIFTER_UOUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[BODESHIFTER_UOUT] = + D_("Up out"); + port_range_hints[BODESHIFTER_UOUT].HintDescriptor = 0; + + /* Parameters for latency */ + port_descriptors[BODESHIFTER_LATENCY] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_CONTROL; + port_names[BODESHIFTER_LATENCY] = + D_("latency"); + port_range_hints[BODESHIFTER_LATENCY].HintDescriptor = 0; + + bodeShifterDescriptor->activate = NULL; + bodeShifterDescriptor->cleanup = cleanupBodeShifter; + bodeShifterDescriptor->connect_port = connectPortBodeShifter; + bodeShifterDescriptor->deactivate = NULL; + bodeShifterDescriptor->instantiate = instantiateBodeShifter; + bodeShifterDescriptor->run = runBodeShifter; + bodeShifterDescriptor->run_adding = runAddingBodeShifter; + bodeShifterDescriptor->set_run_adding_gain = setRunAddingGainBodeShifter; + } +} + +void _fini() { + if (bodeShifterDescriptor) { + free((LADSPA_PortDescriptor *)bodeShifterDescriptor->PortDescriptors); + free((char **)bodeShifterDescriptor->PortNames); + free((LADSPA_PortRangeHint *)bodeShifterDescriptor->PortRangeHints); + free(bodeShifterDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/bode_shifter_cv_1432.c b/plugins/ladspa_effect/swh/bode_shifter_cv_1432.c new file mode 100644 index 000000000..215a92871 --- /dev/null +++ b/plugins/ladspa_effect/swh/bode_shifter_cv_1432.c @@ -0,0 +1,534 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + +#line 10 "bode_shifter_cv_1432.xml" + +#include + +#include "ladspa-util.h" + +#define SIN_T_SIZE 1024 +#define D_SIZE 256 +#define NZEROS 200 + +/* The non-zero taps of the Hilbert transformer */ +static float xcoeffs[] = { + +0.0008103736f, +0.0008457886f, +0.0009017196f, +0.0009793364f, + +0.0010798341f, +0.0012044365f, +0.0013544008f, +0.0015310235f, + +0.0017356466f, +0.0019696659f, +0.0022345404f, +0.0025318040f, + +0.0028630784f, +0.0032300896f, +0.0036346867f, +0.0040788644f, + +0.0045647903f, +0.0050948365f, +0.0056716186f, +0.0062980419f, + +0.0069773575f, +0.0077132300f, +0.0085098208f, +0.0093718901f, + +0.0103049226f, +0.0113152847f, +0.0124104218f, +0.0135991079f, + +0.0148917649f, +0.0163008758f, +0.0178415242f, +0.0195321089f, + +0.0213953037f, +0.0234593652f, +0.0257599469f, +0.0283426636f, + +0.0312667947f, +0.0346107648f, +0.0384804823f, +0.0430224431f, + +0.0484451086f, +0.0550553725f, +0.0633242001f, +0.0740128560f, + +0.0884368322f, +0.1090816773f, +0.1412745301f, +0.1988673273f, + +0.3326528346f, +0.9997730178f, -0.9997730178f, -0.3326528346f, + -0.1988673273f, -0.1412745301f, -0.1090816773f, -0.0884368322f, + -0.0740128560f, -0.0633242001f, -0.0550553725f, -0.0484451086f, + -0.0430224431f, -0.0384804823f, -0.0346107648f, -0.0312667947f, + -0.0283426636f, -0.0257599469f, -0.0234593652f, -0.0213953037f, + -0.0195321089f, -0.0178415242f, -0.0163008758f, -0.0148917649f, + -0.0135991079f, -0.0124104218f, -0.0113152847f, -0.0103049226f, + -0.0093718901f, -0.0085098208f, -0.0077132300f, -0.0069773575f, + -0.0062980419f, -0.0056716186f, -0.0050948365f, -0.0045647903f, + -0.0040788644f, -0.0036346867f, -0.0032300896f, -0.0028630784f, + -0.0025318040f, -0.0022345404f, -0.0019696659f, -0.0017356466f, + -0.0015310235f, -0.0013544008f, -0.0012044365f, -0.0010798341f, + -0.0009793364f, -0.0009017196f, -0.0008457886f, -0.0008103736f, +}; + +#define BODESHIFTERCV_SHIFT_B 0 +#define BODESHIFTERCV_MIX 1 +#define BODESHIFTERCV_INPUT 2 +#define BODESHIFTERCV_ATTEN 3 +#define BODESHIFTERCV_SHIFT 4 +#define BODESHIFTERCV_DOUT 5 +#define BODESHIFTERCV_UOUT 6 +#define BODESHIFTERCV_MIXOUT 7 +#define BODESHIFTERCV_LATENCY 8 + +static LADSPA_Descriptor *bodeShifterCVDescriptor = NULL; + +typedef struct { + LADSPA_Data *shift_b; + LADSPA_Data *mix; + LADSPA_Data *input; + LADSPA_Data *atten; + LADSPA_Data *shift; + LADSPA_Data *dout; + LADSPA_Data *uout; + LADSPA_Data *mixout; + LADSPA_Data *latency; + LADSPA_Data *delay; + unsigned int dptr; + float fs; + float phi; + float * sint; + LADSPA_Data run_adding_gain; +} BodeShifterCV; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return bodeShifterCVDescriptor; + default: + return NULL; + } +} + +static void cleanupBodeShifterCV(LADSPA_Handle instance) { +#line 132 "bode_shifter_cv_1432.xml" + BodeShifterCV *plugin_data = (BodeShifterCV *)instance; + free(plugin_data->delay); + free(plugin_data->sint); + free(instance); +} + +static void connectPortBodeShifterCV( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + BodeShifterCV *plugin; + + plugin = (BodeShifterCV *)instance; + switch (port) { + case BODESHIFTERCV_SHIFT_B: + plugin->shift_b = data; + break; + case BODESHIFTERCV_MIX: + plugin->mix = data; + break; + case BODESHIFTERCV_INPUT: + plugin->input = data; + break; + case BODESHIFTERCV_ATTEN: + plugin->atten = data; + break; + case BODESHIFTERCV_SHIFT: + plugin->shift = data; + break; + case BODESHIFTERCV_DOUT: + plugin->dout = data; + break; + case BODESHIFTERCV_UOUT: + plugin->uout = data; + break; + case BODESHIFTERCV_MIXOUT: + plugin->mixout = data; + break; + case BODESHIFTERCV_LATENCY: + plugin->latency = data; + break; + } +} + +static LADSPA_Handle instantiateBodeShifterCV( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + BodeShifterCV *plugin_data = (BodeShifterCV *)malloc(sizeof(BodeShifterCV)); + LADSPA_Data *delay = NULL; + unsigned int dptr; + float fs; + float phi; + float *sint = NULL; + +#line 57 "bode_shifter_cv_1432.xml" + unsigned int i; + + fs = (float)s_rate; + + delay = calloc(D_SIZE, sizeof(LADSPA_Data)); + sint = calloc(SIN_T_SIZE + 4, sizeof(float)); + + dptr = 0; + phi = 0.0f; + + for (i = 0; i < SIN_T_SIZE + 4; i++) { + sint[i] = sinf(2.0f * M_PI * (float)i / (float)SIN_T_SIZE); + } + + plugin_data->delay = delay; + plugin_data->dptr = dptr; + plugin_data->fs = fs; + plugin_data->phi = phi; + plugin_data->sint = sint; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runBodeShifterCV(LADSPA_Handle instance, unsigned long sample_count) { + BodeShifterCV *plugin_data = (BodeShifterCV *)instance; + + /* Base shift (float value) */ + const LADSPA_Data shift_b = *(plugin_data->shift_b); + + /* Mix (-1=down, +1=up) (float value) */ + const LADSPA_Data mix = *(plugin_data->mix); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* CV Attenuation (float value) */ + const LADSPA_Data atten = *(plugin_data->atten); + + /* Shift CV (array of floats of length sample_count) */ + const LADSPA_Data * const shift = plugin_data->shift; + + /* Down out (array of floats of length sample_count) */ + LADSPA_Data * const dout = plugin_data->dout; + + /* Up out (array of floats of length sample_count) */ + LADSPA_Data * const uout = plugin_data->uout; + + /* Mix out (array of floats of length sample_count) */ + LADSPA_Data * const mixout = plugin_data->mixout; + LADSPA_Data * delay = plugin_data->delay; + unsigned int dptr = plugin_data->dptr; + float fs = plugin_data->fs; + float phi = plugin_data->phi; + float * sint = plugin_data->sint; + +#line 73 "bode_shifter_cv_1432.xml" + unsigned long pos; + unsigned int i; + float hilb, rm1, rm2; + int int_p; + float frac_p; + const float freq_fix = (float)SIN_T_SIZE * 1000.0f * f_clamp(atten, 0.0f, 10.0f) / fs; + const float base_ofs = (float)SIN_T_SIZE * f_clamp(shift_b, 0.0f, 10000.0f) / fs; + const float mixc = mix * 0.5f + 0.5f; + + for (pos = 0; pos < sample_count; pos++) { + delay[dptr] = input[pos]; + + /* Perform the Hilbert FIR convolution + * (probably FFT would be faster) */ + hilb = 0.0f; + for (i = 0; i <= NZEROS/2; i++) { + hilb += (xcoeffs[i] * delay[(dptr - i*2) & (D_SIZE - 1)]); + } + + /* Calcuate the table positions for the sine modulator */ + int_p = f_round(floor(phi)); + + /* Calculate ringmod1, the transformed input modulated with a shift Hz + * sinewave. This creates a +180 degree sideband at source-shift Hz and + * a 0 degree sindeband at source+shift Hz */ + frac_p = phi - int_p; + rm1 = hilb * 0.63661978f * cube_interp(frac_p, sint[int_p], + sint[int_p+1], sint[int_p+2], sint[int_p+3]); + + /* Calcuate the table positions for the cosine modulator */ + int_p = (int_p + SIN_T_SIZE / 4) & (SIN_T_SIZE - 1); + + /* Calculate ringmod2, the delayed input modulated with a shift Hz + * cosinewave. This creates a 0 degree sideband at source+shift Hz + * and a -180 degree sindeband at source-shift Hz */ + rm2 = delay[(dptr - 99) & (D_SIZE - 1)] * cube_interp(frac_p, + sint[int_p], sint[int_p+1], sint[int_p+2], sint[int_p+3]); + + /* Output the sum and differences of the ringmods. The +/-180 degree + * sidebands cancel (more of less) and just leave the shifted + * components */ + buffer_write(dout[pos], (rm2 - rm1) * 0.5f); + buffer_write(uout[pos], (rm2 + rm1) * 0.5f); + buffer_write(mixout[pos], (dout[pos] - uout[pos]) * mixc + uout[pos]); + + dptr = (dptr + 1) & (D_SIZE - 1); + phi += f_clamp(shift[pos], 0.0f, 10.0f) * freq_fix + base_ofs; + while (phi > SIN_T_SIZE) { + phi -= SIN_T_SIZE; + } + } + + plugin_data->dptr = dptr; + plugin_data->phi = phi; + + *(plugin_data->latency) = 99; +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainBodeShifterCV(LADSPA_Handle instance, LADSPA_Data gain) { + ((BodeShifterCV *)instance)->run_adding_gain = gain; +} + +static void runAddingBodeShifterCV(LADSPA_Handle instance, unsigned long sample_count) { + BodeShifterCV *plugin_data = (BodeShifterCV *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Base shift (float value) */ + const LADSPA_Data shift_b = *(plugin_data->shift_b); + + /* Mix (-1=down, +1=up) (float value) */ + const LADSPA_Data mix = *(plugin_data->mix); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* CV Attenuation (float value) */ + const LADSPA_Data atten = *(plugin_data->atten); + + /* Shift CV (array of floats of length sample_count) */ + const LADSPA_Data * const shift = plugin_data->shift; + + /* Down out (array of floats of length sample_count) */ + LADSPA_Data * const dout = plugin_data->dout; + + /* Up out (array of floats of length sample_count) */ + LADSPA_Data * const uout = plugin_data->uout; + + /* Mix out (array of floats of length sample_count) */ + LADSPA_Data * const mixout = plugin_data->mixout; + LADSPA_Data * delay = plugin_data->delay; + unsigned int dptr = plugin_data->dptr; + float fs = plugin_data->fs; + float phi = plugin_data->phi; + float * sint = plugin_data->sint; + +#line 73 "bode_shifter_cv_1432.xml" + unsigned long pos; + unsigned int i; + float hilb, rm1, rm2; + int int_p; + float frac_p; + const float freq_fix = (float)SIN_T_SIZE * 1000.0f * f_clamp(atten, 0.0f, 10.0f) / fs; + const float base_ofs = (float)SIN_T_SIZE * f_clamp(shift_b, 0.0f, 10000.0f) / fs; + const float mixc = mix * 0.5f + 0.5f; + + for (pos = 0; pos < sample_count; pos++) { + delay[dptr] = input[pos]; + + /* Perform the Hilbert FIR convolution + * (probably FFT would be faster) */ + hilb = 0.0f; + for (i = 0; i <= NZEROS/2; i++) { + hilb += (xcoeffs[i] * delay[(dptr - i*2) & (D_SIZE - 1)]); + } + + /* Calcuate the table positions for the sine modulator */ + int_p = f_round(floor(phi)); + + /* Calculate ringmod1, the transformed input modulated with a shift Hz + * sinewave. This creates a +180 degree sideband at source-shift Hz and + * a 0 degree sindeband at source+shift Hz */ + frac_p = phi - int_p; + rm1 = hilb * 0.63661978f * cube_interp(frac_p, sint[int_p], + sint[int_p+1], sint[int_p+2], sint[int_p+3]); + + /* Calcuate the table positions for the cosine modulator */ + int_p = (int_p + SIN_T_SIZE / 4) & (SIN_T_SIZE - 1); + + /* Calculate ringmod2, the delayed input modulated with a shift Hz + * cosinewave. This creates a 0 degree sideband at source+shift Hz + * and a -180 degree sindeband at source-shift Hz */ + rm2 = delay[(dptr - 99) & (D_SIZE - 1)] * cube_interp(frac_p, + sint[int_p], sint[int_p+1], sint[int_p+2], sint[int_p+3]); + + /* Output the sum and differences of the ringmods. The +/-180 degree + * sidebands cancel (more of less) and just leave the shifted + * components */ + buffer_write(dout[pos], (rm2 - rm1) * 0.5f); + buffer_write(uout[pos], (rm2 + rm1) * 0.5f); + buffer_write(mixout[pos], (dout[pos] - uout[pos]) * mixc + uout[pos]); + + dptr = (dptr + 1) & (D_SIZE - 1); + phi += f_clamp(shift[pos], 0.0f, 10.0f) * freq_fix + base_ofs; + while (phi > SIN_T_SIZE) { + phi -= SIN_T_SIZE; + } + } + + plugin_data->dptr = dptr; + plugin_data->phi = phi; + + *(plugin_data->latency) = 99; +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + bodeShifterCVDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (bodeShifterCVDescriptor) { + bodeShifterCVDescriptor->UniqueID = 1432; + bodeShifterCVDescriptor->Label = "bodeShifterCV"; + bodeShifterCVDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + bodeShifterCVDescriptor->Name = + D_("Bode frequency shifter (CV)"); + bodeShifterCVDescriptor->Maker = + "Steve Harris "; + bodeShifterCVDescriptor->Copyright = + "GPL"; + bodeShifterCVDescriptor->PortCount = 9; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(9, + sizeof(LADSPA_PortDescriptor)); + bodeShifterCVDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(9, + sizeof(LADSPA_PortRangeHint)); + bodeShifterCVDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(9, sizeof(char*)); + bodeShifterCVDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Base shift */ + port_descriptors[BODESHIFTERCV_SHIFT_B] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[BODESHIFTERCV_SHIFT_B] = + D_("Base shift"); + port_range_hints[BODESHIFTERCV_SHIFT_B].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[BODESHIFTERCV_SHIFT_B].LowerBound = 0; + port_range_hints[BODESHIFTERCV_SHIFT_B].UpperBound = 5000; + + /* Parameters for Mix (-1=down, +1=up) */ + port_descriptors[BODESHIFTERCV_MIX] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[BODESHIFTERCV_MIX] = + D_("Mix (-1=down, +1=up)"); + port_range_hints[BODESHIFTERCV_MIX].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[BODESHIFTERCV_MIX].LowerBound = -1; + port_range_hints[BODESHIFTERCV_MIX].UpperBound = 1; + + /* Parameters for Input */ + port_descriptors[BODESHIFTERCV_INPUT] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[BODESHIFTERCV_INPUT] = + D_("Input"); + port_range_hints[BODESHIFTERCV_INPUT].HintDescriptor = 0; + + /* Parameters for CV Attenuation */ + port_descriptors[BODESHIFTERCV_ATTEN] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[BODESHIFTERCV_ATTEN] = + D_("CV Attenuation"); + port_range_hints[BODESHIFTERCV_ATTEN].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MAXIMUM; + port_range_hints[BODESHIFTERCV_ATTEN].LowerBound = 0; + port_range_hints[BODESHIFTERCV_ATTEN].UpperBound = 1; + + /* Parameters for Shift CV */ + port_descriptors[BODESHIFTERCV_SHIFT] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[BODESHIFTERCV_SHIFT] = + D_("Shift CV"); + port_range_hints[BODESHIFTERCV_SHIFT].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[BODESHIFTERCV_SHIFT].LowerBound = 0; + port_range_hints[BODESHIFTERCV_SHIFT].UpperBound = 5; + + /* Parameters for Down out */ + port_descriptors[BODESHIFTERCV_DOUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[BODESHIFTERCV_DOUT] = + D_("Down out"); + port_range_hints[BODESHIFTERCV_DOUT].HintDescriptor = 0; + + /* Parameters for Up out */ + port_descriptors[BODESHIFTERCV_UOUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[BODESHIFTERCV_UOUT] = + D_("Up out"); + port_range_hints[BODESHIFTERCV_UOUT].HintDescriptor = 0; + + /* Parameters for Mix out */ + port_descriptors[BODESHIFTERCV_MIXOUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[BODESHIFTERCV_MIXOUT] = + D_("Mix out"); + port_range_hints[BODESHIFTERCV_MIXOUT].HintDescriptor = 0; + + /* Parameters for latency */ + port_descriptors[BODESHIFTERCV_LATENCY] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_CONTROL; + port_names[BODESHIFTERCV_LATENCY] = + D_("latency"); + port_range_hints[BODESHIFTERCV_LATENCY].HintDescriptor = 0; + + bodeShifterCVDescriptor->activate = NULL; + bodeShifterCVDescriptor->cleanup = cleanupBodeShifterCV; + bodeShifterCVDescriptor->connect_port = connectPortBodeShifterCV; + bodeShifterCVDescriptor->deactivate = NULL; + bodeShifterCVDescriptor->instantiate = instantiateBodeShifterCV; + bodeShifterCVDescriptor->run = runBodeShifterCV; + bodeShifterCVDescriptor->run_adding = runAddingBodeShifterCV; + bodeShifterCVDescriptor->set_run_adding_gain = setRunAddingGainBodeShifterCV; + } +} + +void _fini() { + if (bodeShifterCVDescriptor) { + free((LADSPA_PortDescriptor *)bodeShifterCVDescriptor->PortDescriptors); + free((char **)bodeShifterCVDescriptor->PortNames); + free((LADSPA_PortRangeHint *)bodeShifterCVDescriptor->PortRangeHints); + free(bodeShifterCVDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/butterworth_1902.c b/plugins/ladspa_effect/swh/butterworth_1902.c new file mode 100644 index 000000000..fbc0f1e07 --- /dev/null +++ b/plugins/ladspa_effect/swh/butterworth_1902.c @@ -0,0 +1,783 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + +#line 9 "butterworth_1902.xml" + +#include "config.h" +#include "util/iir.h" +#include "util/buffer.h" + +#define BWXOVER_IIR_CUTOFF 0 +#define BWXOVER_IIR_RESONANCE 1 +#define BWXOVER_IIR_INPUT 2 +#define BWXOVER_IIR_LPOUTPUT 3 +#define BWXOVER_IIR_HPOUTPUT 4 +#define BUTTLOW_IIR_CUTOFF 0 +#define BUTTLOW_IIR_RESONANCE 1 +#define BUTTLOW_IIR_INPUT 2 +#define BUTTLOW_IIR_OUTPUT 3 +#define BUTTHIGH_IIR_CUTOFF 0 +#define BUTTHIGH_IIR_RESONANCE 1 +#define BUTTHIGH_IIR_INPUT 2 +#define BUTTHIGH_IIR_OUTPUT 3 + +static LADSPA_Descriptor *bwxover_iirDescriptor = NULL; + +typedef struct { + LADSPA_Data *cutoff; + LADSPA_Data *resonance; + LADSPA_Data *input; + LADSPA_Data *lpoutput; + LADSPA_Data *hpoutput; + iir_stage_t* gt; + iirf_t* iirf; + long sample_rate; + LADSPA_Data run_adding_gain; +} Bwxover_iir; + +static LADSPA_Descriptor *buttlow_iirDescriptor = NULL; + +typedef struct { + LADSPA_Data *cutoff; + LADSPA_Data *resonance; + LADSPA_Data *input; + LADSPA_Data *output; + iir_stage_t* gt; + iirf_t* iirf; + long sample_rate; + LADSPA_Data run_adding_gain; +} Buttlow_iir; + +static LADSPA_Descriptor *butthigh_iirDescriptor = NULL; + +typedef struct { + LADSPA_Data *cutoff; + LADSPA_Data *resonance; + LADSPA_Data *input; + LADSPA_Data *output; + iir_stage_t* gt; + iirf_t* iirf; + long sample_rate; + LADSPA_Data run_adding_gain; +} Butthigh_iir; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return bwxover_iirDescriptor; + case 1: + return buttlow_iirDescriptor; + case 2: + return butthigh_iirDescriptor; + default: + return NULL; + } +} + +static void activateBwxover_iir(LADSPA_Handle instance) { + Bwxover_iir *plugin_data = (Bwxover_iir *)instance; + iir_stage_t*gt = plugin_data->gt; + iirf_t*iirf = plugin_data->iirf; + long sample_rate = plugin_data->sample_rate; +#line 31 "butterworth_1902.xml" + + gt = init_iir_stage(IIR_STAGE_LOWPASS,1,3,2); + iirf = init_iirf_t(gt); + butterworth_stage(gt, 0, *(plugin_data->cutoff), + *(plugin_data->resonance), + sample_rate); + plugin_data->gt = gt; + plugin_data->iirf = iirf; + plugin_data->sample_rate = sample_rate; + +} + +static void cleanupBwxover_iir(LADSPA_Handle instance) { +#line 39 "butterworth_1902.xml" + Bwxover_iir *plugin_data = (Bwxover_iir *)instance; + free_iirf_t(plugin_data->iirf, plugin_data->gt); + free_iir_stage(plugin_data->gt); + free(instance); +} + +static void connectPortBwxover_iir( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + Bwxover_iir *plugin; + + plugin = (Bwxover_iir *)instance; + switch (port) { + case BWXOVER_IIR_CUTOFF: + plugin->cutoff = data; + break; + case BWXOVER_IIR_RESONANCE: + plugin->resonance = data; + break; + case BWXOVER_IIR_INPUT: + plugin->input = data; + break; + case BWXOVER_IIR_LPOUTPUT: + plugin->lpoutput = data; + break; + case BWXOVER_IIR_HPOUTPUT: + plugin->hpoutput = data; + break; + } +} + +static LADSPA_Handle instantiateBwxover_iir( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + Bwxover_iir *plugin_data = (Bwxover_iir *)malloc(sizeof(Bwxover_iir)); + iir_stage_t*gt = NULL; + iirf_t*iirf = NULL; + long sample_rate; + +#line 22 "butterworth_1902.xml" + sample_rate = s_rate; + + plugin_data->gt = gt; + plugin_data->iirf = iirf; + plugin_data->sample_rate = sample_rate; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runBwxover_iir(LADSPA_Handle instance, unsigned long sample_count) { + Bwxover_iir *plugin_data = (Bwxover_iir *)instance; + + /* Cutoff Frequency (Hz) (float value) */ + const LADSPA_Data cutoff = *(plugin_data->cutoff); + + /* Resonance (float value) */ + const LADSPA_Data resonance = *(plugin_data->resonance); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* LP-Output (array of floats of length sample_count) */ + LADSPA_Data * const lpoutput = plugin_data->lpoutput; + + /* HP-Output (array of floats of length sample_count) */ + LADSPA_Data * const hpoutput = plugin_data->hpoutput; + iir_stage_t* gt = plugin_data->gt; + iirf_t* iirf = plugin_data->iirf; + long sample_rate = plugin_data->sample_rate; + +#line 25 "butterworth_1902.xml" + butterworth_stage(gt, 0, cutoff, resonance, sample_rate); + iir_process_buffer_1s_5(iirf, gt, input, lpoutput, sample_count,0); + buffer_sub(input, lpoutput, hpoutput, sample_count); +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainBwxover_iir(LADSPA_Handle instance, LADSPA_Data gain) { + ((Bwxover_iir *)instance)->run_adding_gain = gain; +} + +static void runAddingBwxover_iir(LADSPA_Handle instance, unsigned long sample_count) { + Bwxover_iir *plugin_data = (Bwxover_iir *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Cutoff Frequency (Hz) (float value) */ + const LADSPA_Data cutoff = *(plugin_data->cutoff); + + /* Resonance (float value) */ + const LADSPA_Data resonance = *(plugin_data->resonance); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* LP-Output (array of floats of length sample_count) */ + LADSPA_Data * const lpoutput = plugin_data->lpoutput; + + /* HP-Output (array of floats of length sample_count) */ + LADSPA_Data * const hpoutput = plugin_data->hpoutput; + iir_stage_t* gt = plugin_data->gt; + iirf_t* iirf = plugin_data->iirf; + long sample_rate = plugin_data->sample_rate; + +#line 25 "butterworth_1902.xml" + butterworth_stage(gt, 0, cutoff, resonance, sample_rate); + iir_process_buffer_1s_5(iirf, gt, input, lpoutput, sample_count,0); + buffer_sub(input, lpoutput, hpoutput, sample_count); +} + +static void activateButtlow_iir(LADSPA_Handle instance) { + Buttlow_iir *plugin_data = (Buttlow_iir *)instance; + iir_stage_t*gt = plugin_data->gt; + iirf_t*iirf = plugin_data->iirf; + long sample_rate = plugin_data->sample_rate; +#line 31 "butterworth_1902.xml" + + gt = init_iir_stage(IIR_STAGE_LOWPASS,1,3,2); + iirf = init_iirf_t(gt); + butterworth_stage(gt, 0, *(plugin_data->cutoff), + *(plugin_data->resonance), + sample_rate); + plugin_data->gt = gt; + plugin_data->iirf = iirf; + plugin_data->sample_rate = sample_rate; + +} + +static void cleanupButtlow_iir(LADSPA_Handle instance) { +#line 39 "butterworth_1902.xml" + Buttlow_iir *plugin_data = (Buttlow_iir *)instance; + free_iirf_t(plugin_data->iirf, plugin_data->gt); + free_iir_stage(plugin_data->gt); + free(instance); +} + +static void connectPortButtlow_iir( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + Buttlow_iir *plugin; + + plugin = (Buttlow_iir *)instance; + switch (port) { + case BUTTLOW_IIR_CUTOFF: + plugin->cutoff = data; + break; + case BUTTLOW_IIR_RESONANCE: + plugin->resonance = data; + break; + case BUTTLOW_IIR_INPUT: + plugin->input = data; + break; + case BUTTLOW_IIR_OUTPUT: + plugin->output = data; + break; + } +} + +static LADSPA_Handle instantiateButtlow_iir( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + Buttlow_iir *plugin_data = (Buttlow_iir *)malloc(sizeof(Buttlow_iir)); + iir_stage_t*gt = NULL; + iirf_t*iirf = NULL; + long sample_rate; + +#line 22 "butterworth_1902.xml" + sample_rate = s_rate; + + plugin_data->gt = gt; + plugin_data->iirf = iirf; + plugin_data->sample_rate = sample_rate; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runButtlow_iir(LADSPA_Handle instance, unsigned long sample_count) { + Buttlow_iir *plugin_data = (Buttlow_iir *)instance; + + /* Cutoff Frequency (Hz) (float value) */ + const LADSPA_Data cutoff = *(plugin_data->cutoff); + + /* Resonance (float value) */ + const LADSPA_Data resonance = *(plugin_data->resonance); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + iir_stage_t* gt = plugin_data->gt; + iirf_t* iirf = plugin_data->iirf; + long sample_rate = plugin_data->sample_rate; + +#line 25 "butterworth_1902.xml" + butterworth_stage(gt, 0, cutoff, resonance, sample_rate); + iir_process_buffer_1s_5(iirf, gt, input, output, sample_count,0); +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainButtlow_iir(LADSPA_Handle instance, LADSPA_Data gain) { + ((Buttlow_iir *)instance)->run_adding_gain = gain; +} + +static void runAddingButtlow_iir(LADSPA_Handle instance, unsigned long sample_count) { + Buttlow_iir *plugin_data = (Buttlow_iir *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Cutoff Frequency (Hz) (float value) */ + const LADSPA_Data cutoff = *(plugin_data->cutoff); + + /* Resonance (float value) */ + const LADSPA_Data resonance = *(plugin_data->resonance); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + iir_stage_t* gt = plugin_data->gt; + iirf_t* iirf = plugin_data->iirf; + long sample_rate = plugin_data->sample_rate; + +#line 25 "butterworth_1902.xml" + butterworth_stage(gt, 0, cutoff, resonance, sample_rate); + iir_process_buffer_1s_5(iirf, gt, input, output, sample_count,0); +} + +static void activateButthigh_iir(LADSPA_Handle instance) { + Butthigh_iir *plugin_data = (Butthigh_iir *)instance; + iir_stage_t*gt = plugin_data->gt; + iirf_t*iirf = plugin_data->iirf; + long sample_rate = plugin_data->sample_rate; +#line 31 "butterworth_1902.xml" + + gt = init_iir_stage(IIR_STAGE_LOWPASS,1,3,2); + iirf = init_iirf_t(gt); + butterworth_stage(gt, 1, *(plugin_data->cutoff), + *(plugin_data->resonance), + sample_rate); + plugin_data->gt = gt; + plugin_data->iirf = iirf; + plugin_data->sample_rate = sample_rate; + +} + +static void cleanupButthigh_iir(LADSPA_Handle instance) { +#line 39 "butterworth_1902.xml" + Butthigh_iir *plugin_data = (Butthigh_iir *)instance; + free_iirf_t(plugin_data->iirf, plugin_data->gt); + free_iir_stage(plugin_data->gt); + free(instance); +} + +static void connectPortButthigh_iir( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + Butthigh_iir *plugin; + + plugin = (Butthigh_iir *)instance; + switch (port) { + case BUTTHIGH_IIR_CUTOFF: + plugin->cutoff = data; + break; + case BUTTHIGH_IIR_RESONANCE: + plugin->resonance = data; + break; + case BUTTHIGH_IIR_INPUT: + plugin->input = data; + break; + case BUTTHIGH_IIR_OUTPUT: + plugin->output = data; + break; + } +} + +static LADSPA_Handle instantiateButthigh_iir( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + Butthigh_iir *plugin_data = (Butthigh_iir *)malloc(sizeof(Butthigh_iir)); + iir_stage_t*gt = NULL; + iirf_t*iirf = NULL; + long sample_rate; + +#line 22 "butterworth_1902.xml" + sample_rate = s_rate; + + plugin_data->gt = gt; + plugin_data->iirf = iirf; + plugin_data->sample_rate = sample_rate; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runButthigh_iir(LADSPA_Handle instance, unsigned long sample_count) { + Butthigh_iir *plugin_data = (Butthigh_iir *)instance; + + /* Cutoff Frequency (Hz) (float value) */ + const LADSPA_Data cutoff = *(plugin_data->cutoff); + + /* Resonance (float value) */ + const LADSPA_Data resonance = *(plugin_data->resonance); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + iir_stage_t* gt = plugin_data->gt; + iirf_t* iirf = plugin_data->iirf; + long sample_rate = plugin_data->sample_rate; + +#line 25 "butterworth_1902.xml" + butterworth_stage(gt, 1, cutoff, resonance, sample_rate); + iir_process_buffer_1s_5(iirf, gt, input, output, sample_count,0); +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainButthigh_iir(LADSPA_Handle instance, LADSPA_Data gain) { + ((Butthigh_iir *)instance)->run_adding_gain = gain; +} + +static void runAddingButthigh_iir(LADSPA_Handle instance, unsigned long sample_count) { + Butthigh_iir *plugin_data = (Butthigh_iir *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Cutoff Frequency (Hz) (float value) */ + const LADSPA_Data cutoff = *(plugin_data->cutoff); + + /* Resonance (float value) */ + const LADSPA_Data resonance = *(plugin_data->resonance); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + iir_stage_t* gt = plugin_data->gt; + iirf_t* iirf = plugin_data->iirf; + long sample_rate = plugin_data->sample_rate; + +#line 25 "butterworth_1902.xml" + butterworth_stage(gt, 1, cutoff, resonance, sample_rate); + iir_process_buffer_1s_5(iirf, gt, input, output, sample_count,0); +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + bwxover_iirDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (bwxover_iirDescriptor) { + bwxover_iirDescriptor->UniqueID = 1902; + bwxover_iirDescriptor->Label = "bwxover_iir"; + bwxover_iirDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + bwxover_iirDescriptor->Name = + D_("Glame Butterworth X-over Filter"); + bwxover_iirDescriptor->Maker = + "Alexander Ehlert "; + bwxover_iirDescriptor->Copyright = + "GPL"; + bwxover_iirDescriptor->PortCount = 5; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(5, + sizeof(LADSPA_PortDescriptor)); + bwxover_iirDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(5, + sizeof(LADSPA_PortRangeHint)); + bwxover_iirDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(5, sizeof(char*)); + bwxover_iirDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Cutoff Frequency (Hz) */ + port_descriptors[BWXOVER_IIR_CUTOFF] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[BWXOVER_IIR_CUTOFF] = + D_("Cutoff Frequency (Hz)"); + port_range_hints[BWXOVER_IIR_CUTOFF].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_LOW | LADSPA_HINT_SAMPLE_RATE | LADSPA_HINT_LOGARITHMIC; + port_range_hints[BWXOVER_IIR_CUTOFF].LowerBound = 0.0001; + port_range_hints[BWXOVER_IIR_CUTOFF].UpperBound = 0.45; + + /* Parameters for Resonance */ + port_descriptors[BWXOVER_IIR_RESONANCE] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[BWXOVER_IIR_RESONANCE] = + D_("Resonance"); + port_range_hints[BWXOVER_IIR_RESONANCE].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MIDDLE; + port_range_hints[BWXOVER_IIR_RESONANCE].LowerBound = 0.1; + port_range_hints[BWXOVER_IIR_RESONANCE].UpperBound = 1.41; + + /* Parameters for Input */ + port_descriptors[BWXOVER_IIR_INPUT] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[BWXOVER_IIR_INPUT] = + D_("Input"); + port_range_hints[BWXOVER_IIR_INPUT].HintDescriptor = 0; + + /* Parameters for LP-Output */ + port_descriptors[BWXOVER_IIR_LPOUTPUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[BWXOVER_IIR_LPOUTPUT] = + D_("LP-Output"); + port_range_hints[BWXOVER_IIR_LPOUTPUT].HintDescriptor = 0; + + /* Parameters for HP-Output */ + port_descriptors[BWXOVER_IIR_HPOUTPUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[BWXOVER_IIR_HPOUTPUT] = + D_("HP-Output"); + port_range_hints[BWXOVER_IIR_HPOUTPUT].HintDescriptor = 0; + + bwxover_iirDescriptor->activate = activateBwxover_iir; + bwxover_iirDescriptor->cleanup = cleanupBwxover_iir; + bwxover_iirDescriptor->connect_port = connectPortBwxover_iir; + bwxover_iirDescriptor->deactivate = NULL; + bwxover_iirDescriptor->instantiate = instantiateBwxover_iir; + bwxover_iirDescriptor->run = runBwxover_iir; + bwxover_iirDescriptor->run_adding = runAddingBwxover_iir; + bwxover_iirDescriptor->set_run_adding_gain = setRunAddingGainBwxover_iir; + } + + buttlow_iirDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (buttlow_iirDescriptor) { + buttlow_iirDescriptor->UniqueID = 1903; + buttlow_iirDescriptor->Label = "buttlow_iir"; + buttlow_iirDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + buttlow_iirDescriptor->Name = + D_("GLAME Butterworth Lowpass"); + buttlow_iirDescriptor->Maker = + "Alexander Ehlert "; + buttlow_iirDescriptor->Copyright = + "GPL"; + buttlow_iirDescriptor->PortCount = 4; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(4, + sizeof(LADSPA_PortDescriptor)); + buttlow_iirDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(4, + sizeof(LADSPA_PortRangeHint)); + buttlow_iirDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(4, sizeof(char*)); + buttlow_iirDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Cutoff Frequency (Hz) */ + port_descriptors[BUTTLOW_IIR_CUTOFF] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[BUTTLOW_IIR_CUTOFF] = + D_("Cutoff Frequency (Hz)"); + port_range_hints[BUTTLOW_IIR_CUTOFF].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_LOW | LADSPA_HINT_SAMPLE_RATE | LADSPA_HINT_LOGARITHMIC; + port_range_hints[BUTTLOW_IIR_CUTOFF].LowerBound = 0.0001; + port_range_hints[BUTTLOW_IIR_CUTOFF].UpperBound = 0.45; + + /* Parameters for Resonance */ + port_descriptors[BUTTLOW_IIR_RESONANCE] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[BUTTLOW_IIR_RESONANCE] = + D_("Resonance"); + port_range_hints[BUTTLOW_IIR_RESONANCE].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MIDDLE; + port_range_hints[BUTTLOW_IIR_RESONANCE].LowerBound = 0.1; + port_range_hints[BUTTLOW_IIR_RESONANCE].UpperBound = 1.41; + + /* Parameters for Input */ + port_descriptors[BUTTLOW_IIR_INPUT] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[BUTTLOW_IIR_INPUT] = + D_("Input"); + port_range_hints[BUTTLOW_IIR_INPUT].HintDescriptor = 0; + + /* Parameters for Output */ + port_descriptors[BUTTLOW_IIR_OUTPUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[BUTTLOW_IIR_OUTPUT] = + D_("Output"); + port_range_hints[BUTTLOW_IIR_OUTPUT].HintDescriptor = 0; + + buttlow_iirDescriptor->activate = activateButtlow_iir; + buttlow_iirDescriptor->cleanup = cleanupButtlow_iir; + buttlow_iirDescriptor->connect_port = connectPortButtlow_iir; + buttlow_iirDescriptor->deactivate = NULL; + buttlow_iirDescriptor->instantiate = instantiateButtlow_iir; + buttlow_iirDescriptor->run = runButtlow_iir; + buttlow_iirDescriptor->run_adding = runAddingButtlow_iir; + buttlow_iirDescriptor->set_run_adding_gain = setRunAddingGainButtlow_iir; + } + + butthigh_iirDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (butthigh_iirDescriptor) { + butthigh_iirDescriptor->UniqueID = 1904; + butthigh_iirDescriptor->Label = "butthigh_iir"; + butthigh_iirDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + butthigh_iirDescriptor->Name = + D_("GLAME Butterworth Highpass"); + butthigh_iirDescriptor->Maker = + "Alexander Ehlert "; + butthigh_iirDescriptor->Copyright = + "GPL"; + butthigh_iirDescriptor->PortCount = 4; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(4, + sizeof(LADSPA_PortDescriptor)); + butthigh_iirDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(4, + sizeof(LADSPA_PortRangeHint)); + butthigh_iirDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(4, sizeof(char*)); + butthigh_iirDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Cutoff Frequency (Hz) */ + port_descriptors[BUTTHIGH_IIR_CUTOFF] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[BUTTHIGH_IIR_CUTOFF] = + D_("Cutoff Frequency (Hz)"); + port_range_hints[BUTTHIGH_IIR_CUTOFF].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_LOW | LADSPA_HINT_SAMPLE_RATE | LADSPA_HINT_LOGARITHMIC; + port_range_hints[BUTTHIGH_IIR_CUTOFF].LowerBound = 0.0001; + port_range_hints[BUTTHIGH_IIR_CUTOFF].UpperBound = 0.45; + + /* Parameters for Resonance */ + port_descriptors[BUTTHIGH_IIR_RESONANCE] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[BUTTHIGH_IIR_RESONANCE] = + D_("Resonance"); + port_range_hints[BUTTHIGH_IIR_RESONANCE].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MIDDLE; + port_range_hints[BUTTHIGH_IIR_RESONANCE].LowerBound = 0.1; + port_range_hints[BUTTHIGH_IIR_RESONANCE].UpperBound = 1.41; + + /* Parameters for Input */ + port_descriptors[BUTTHIGH_IIR_INPUT] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[BUTTHIGH_IIR_INPUT] = + D_("Input"); + port_range_hints[BUTTHIGH_IIR_INPUT].HintDescriptor = 0; + + /* Parameters for Output */ + port_descriptors[BUTTHIGH_IIR_OUTPUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[BUTTHIGH_IIR_OUTPUT] = + D_("Output"); + port_range_hints[BUTTHIGH_IIR_OUTPUT].HintDescriptor = 0; + + butthigh_iirDescriptor->activate = activateButthigh_iir; + butthigh_iirDescriptor->cleanup = cleanupButthigh_iir; + butthigh_iirDescriptor->connect_port = connectPortButthigh_iir; + butthigh_iirDescriptor->deactivate = NULL; + butthigh_iirDescriptor->instantiate = instantiateButthigh_iir; + butthigh_iirDescriptor->run = runButthigh_iir; + butthigh_iirDescriptor->run_adding = runAddingButthigh_iir; + butthigh_iirDescriptor->set_run_adding_gain = setRunAddingGainButthigh_iir; + } +} + +void _fini() { + if (bwxover_iirDescriptor) { + free((LADSPA_PortDescriptor *)bwxover_iirDescriptor->PortDescriptors); + free((char **)bwxover_iirDescriptor->PortNames); + free((LADSPA_PortRangeHint *)bwxover_iirDescriptor->PortRangeHints); + free(bwxover_iirDescriptor); + } + if (buttlow_iirDescriptor) { + free((LADSPA_PortDescriptor *)buttlow_iirDescriptor->PortDescriptors); + free((char **)buttlow_iirDescriptor->PortNames); + free((LADSPA_PortRangeHint *)buttlow_iirDescriptor->PortRangeHints); + free(buttlow_iirDescriptor); + } + if (butthigh_iirDescriptor) { + free((LADSPA_PortDescriptor *)butthigh_iirDescriptor->PortDescriptors); + free((char **)butthigh_iirDescriptor->PortNames); + free((LADSPA_PortRangeHint *)butthigh_iirDescriptor->PortRangeHints); + free(butthigh_iirDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/chebstortion_1430.c b/plugins/ladspa_effect/swh/chebstortion_1430.c new file mode 100644 index 000000000..946abaf15 --- /dev/null +++ b/plugins/ladspa_effect/swh/chebstortion_1430.c @@ -0,0 +1,410 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + +#line 10 "chebstortion_1430.xml" + +#include + +#define HARMONICS 11 +#define STAGES 2 + +static float cd_lut[STAGES][HARMONICS]; + +/* Calculate Chebychev coefficents from partial magnitudes, adapted from + * example in Num. Rec. */ +void chebpc(float c[], float d[]) +{ + int k, j; + float sv, dd[HARMONICS]; + + for (j = 0; j < HARMONICS; j++) { + d[j] = dd[j] = 0.0; + } + + d[0] = c[HARMONICS - 1]; + + for (j = HARMONICS - 2; j >= 1; j--) { + for (k = HARMONICS - j; k >= 1; k--) { + sv = d[k]; + d[k] = 2.0 * d[k - 1] - dd[k]; + dd[k] = sv; + } + sv = d[0]; + d[0] = -dd[0] + c[j]; + dd[0] = sv; + } + + for (j = HARMONICS - 1; j >= 1; j--) { + d[j] = d[j - 1] - dd[j]; + } + d[0] = -dd[0] + 0.5 * c[0]; +} + +#define CHEBSTORTION_DIST 0 +#define CHEBSTORTION_INPUT 1 +#define CHEBSTORTION_OUTPUT 2 + +static LADSPA_Descriptor *chebstortionDescriptor = NULL; + +typedef struct { + LADSPA_Data *dist; + LADSPA_Data *input; + LADSPA_Data *output; + unsigned int count; + float env; + float itm1; + float otm1; + LADSPA_Data run_adding_gain; +} Chebstortion; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return chebstortionDescriptor; + default: + return NULL; + } +} + +static void activateChebstortion(LADSPA_Handle instance) { + Chebstortion *plugin_data = (Chebstortion *)instance; + unsigned int count = plugin_data->count; + float env = plugin_data->env; + float itm1 = plugin_data->itm1; + float otm1 = plugin_data->otm1; +#line 82 "chebstortion_1430.xml" + itm1 = 0.0f; + otm1 = 0.0f; + env = 0.0f; + count = 0; + plugin_data->count = count; + plugin_data->env = env; + plugin_data->itm1 = itm1; + plugin_data->otm1 = otm1; + +} + +static void cleanupChebstortion(LADSPA_Handle instance) { + free(instance); +} + +static void connectPortChebstortion( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + Chebstortion *plugin; + + plugin = (Chebstortion *)instance; + switch (port) { + case CHEBSTORTION_DIST: + plugin->dist = data; + break; + case CHEBSTORTION_INPUT: + plugin->input = data; + break; + case CHEBSTORTION_OUTPUT: + plugin->output = data; + break; + } +} + +static LADSPA_Handle instantiateChebstortion( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + Chebstortion *plugin_data = (Chebstortion *)malloc(sizeof(Chebstortion)); + unsigned int count; + float env; + float itm1; + float otm1; + +#line 62 "chebstortion_1430.xml" + unsigned int i; + + cd_lut[0][0] = 0.0f; + cd_lut[0][1] = 1.0f; + for (i=2; icount = count; + plugin_data->env = env; + plugin_data->itm1 = itm1; + plugin_data->otm1 = otm1; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runChebstortion(LADSPA_Handle instance, unsigned long sample_count) { + Chebstortion *plugin_data = (Chebstortion *)instance; + + /* Distortion (float value) */ + const LADSPA_Data dist = *(plugin_data->dist); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + unsigned int count = plugin_data->count; + float env = plugin_data->env; + float itm1 = plugin_data->itm1; + float otm1 = plugin_data->otm1; + +#line 89 "chebstortion_1430.xml" + unsigned long pos, i; + float p[HARMONICS], interp[HARMONICS]; + + for (pos = 0; pos < sample_count; pos++) { + const float x = input[pos]; + const float a = fabs(input[pos]); + float y; + + if (a > env) { + env = env * 0.9f + a * 0.1f; + } else { + env = env * 0.97f + a * 0.03f; + } + + if (count-- == 0) { + for (i=0; iitm1 = itm1; + plugin_data->otm1 = otm1; + plugin_data->env = env; + plugin_data->count = count; +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainChebstortion(LADSPA_Handle instance, LADSPA_Data gain) { + ((Chebstortion *)instance)->run_adding_gain = gain; +} + +static void runAddingChebstortion(LADSPA_Handle instance, unsigned long sample_count) { + Chebstortion *plugin_data = (Chebstortion *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Distortion (float value) */ + const LADSPA_Data dist = *(plugin_data->dist); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + unsigned int count = plugin_data->count; + float env = plugin_data->env; + float itm1 = plugin_data->itm1; + float otm1 = plugin_data->otm1; + +#line 89 "chebstortion_1430.xml" + unsigned long pos, i; + float p[HARMONICS], interp[HARMONICS]; + + for (pos = 0; pos < sample_count; pos++) { + const float x = input[pos]; + const float a = fabs(input[pos]); + float y; + + if (a > env) { + env = env * 0.9f + a * 0.1f; + } else { + env = env * 0.97f + a * 0.03f; + } + + if (count-- == 0) { + for (i=0; iitm1 = itm1; + plugin_data->otm1 = otm1; + plugin_data->env = env; + plugin_data->count = count; +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + chebstortionDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (chebstortionDescriptor) { + chebstortionDescriptor->UniqueID = 1430; + chebstortionDescriptor->Label = "chebstortion"; + chebstortionDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + chebstortionDescriptor->Name = + D_("Chebyshev distortion"); + chebstortionDescriptor->Maker = + "Steve Harris "; + chebstortionDescriptor->Copyright = + "GPL"; + chebstortionDescriptor->PortCount = 3; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(3, + sizeof(LADSPA_PortDescriptor)); + chebstortionDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(3, + sizeof(LADSPA_PortRangeHint)); + chebstortionDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(3, sizeof(char*)); + chebstortionDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Distortion */ + port_descriptors[CHEBSTORTION_DIST] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[CHEBSTORTION_DIST] = + D_("Distortion"); + port_range_hints[CHEBSTORTION_DIST].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[CHEBSTORTION_DIST].LowerBound = 0; + port_range_hints[CHEBSTORTION_DIST].UpperBound = 3; + + /* Parameters for Input */ + port_descriptors[CHEBSTORTION_INPUT] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[CHEBSTORTION_INPUT] = + D_("Input"); + port_range_hints[CHEBSTORTION_INPUT].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE; + port_range_hints[CHEBSTORTION_INPUT].LowerBound = -1; + port_range_hints[CHEBSTORTION_INPUT].UpperBound = +1; + + /* Parameters for Output */ + port_descriptors[CHEBSTORTION_OUTPUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[CHEBSTORTION_OUTPUT] = + D_("Output"); + port_range_hints[CHEBSTORTION_OUTPUT].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE; + port_range_hints[CHEBSTORTION_OUTPUT].LowerBound = -1; + port_range_hints[CHEBSTORTION_OUTPUT].UpperBound = +1; + + chebstortionDescriptor->activate = activateChebstortion; + chebstortionDescriptor->cleanup = cleanupChebstortion; + chebstortionDescriptor->connect_port = connectPortChebstortion; + chebstortionDescriptor->deactivate = NULL; + chebstortionDescriptor->instantiate = instantiateChebstortion; + chebstortionDescriptor->run = runChebstortion; + chebstortionDescriptor->run_adding = runAddingChebstortion; + chebstortionDescriptor->set_run_adding_gain = setRunAddingGainChebstortion; + } +} + +void _fini() { + if (chebstortionDescriptor) { + free((LADSPA_PortDescriptor *)chebstortionDescriptor->PortDescriptors); + free((char **)chebstortionDescriptor->PortNames); + free((LADSPA_PortRangeHint *)chebstortionDescriptor->PortRangeHints); + free(chebstortionDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/comb_1887.c b/plugins/ladspa_effect/swh/comb_1887.c new file mode 100644 index 000000000..50e0c8477 --- /dev/null +++ b/plugins/ladspa_effect/swh/comb_1887.c @@ -0,0 +1,1391 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + +#line 10 "comb_1887.xml" + +#include "ladspa-util.h" + +#define MIN(a,b) ((a) < (b) ? (a) : (b)) +#define CALC_DELAY(delaytime) \ + (f_clamp (delaytime * sample_rate, 1.f, (float)(buffer_mask + 1))) + +#define LOG001 -6.9077552789f + +static inline float +calc_feedback (float delaytime, float decaytime) +{ + if (delaytime == 0.f) + return 0.f; + else if (decaytime > 0.f) + return exp(LOG001 * delaytime / decaytime); + else if (decaytime < 0.f) + return -exp(LOG001 * delaytime / -decaytime); + else + return 0.f; +} + +#define COMB_N_IN 0 +#define COMB_N_OUT 1 +#define COMB_N_MAX_DELAY 2 +#define COMB_N_DELAY_TIME 3 +#define COMB_N_DECAY_TIME 4 +#define COMB_L_IN 0 +#define COMB_L_OUT 1 +#define COMB_L_MAX_DELAY 2 +#define COMB_L_DELAY_TIME 3 +#define COMB_L_DECAY_TIME 4 +#define COMB_C_IN 0 +#define COMB_C_OUT 1 +#define COMB_C_MAX_DELAY 2 +#define COMB_C_DELAY_TIME 3 +#define COMB_C_DECAY_TIME 4 + +static LADSPA_Descriptor *comb_nDescriptor = NULL; + +typedef struct { + LADSPA_Data *in; + LADSPA_Data *out; + LADSPA_Data *max_delay; + LADSPA_Data *delay_time; + LADSPA_Data *decay_time; + LADSPA_Data *buffer; + unsigned int buffer_mask; + LADSPA_Data delay_samples; + LADSPA_Data feedback; + LADSPA_Data last_decay_time; + LADSPA_Data last_delay_time; + unsigned int sample_rate; + long write_phase; + LADSPA_Data run_adding_gain; +} Comb_n; + +static LADSPA_Descriptor *comb_lDescriptor = NULL; + +typedef struct { + LADSPA_Data *in; + LADSPA_Data *out; + LADSPA_Data *max_delay; + LADSPA_Data *delay_time; + LADSPA_Data *decay_time; + LADSPA_Data *buffer; + unsigned int buffer_mask; + LADSPA_Data delay_samples; + LADSPA_Data feedback; + LADSPA_Data last_decay_time; + LADSPA_Data last_delay_time; + unsigned int sample_rate; + long write_phase; + LADSPA_Data run_adding_gain; +} Comb_l; + +static LADSPA_Descriptor *comb_cDescriptor = NULL; + +typedef struct { + LADSPA_Data *in; + LADSPA_Data *out; + LADSPA_Data *max_delay; + LADSPA_Data *delay_time; + LADSPA_Data *decay_time; + LADSPA_Data *buffer; + unsigned int buffer_mask; + LADSPA_Data delay_samples; + LADSPA_Data feedback; + LADSPA_Data last_decay_time; + LADSPA_Data last_delay_time; + unsigned int sample_rate; + long write_phase; + LADSPA_Data run_adding_gain; +} Comb_c; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return comb_nDescriptor; + case 1: + return comb_lDescriptor; + case 2: + return comb_cDescriptor; + default: + return NULL; + } +} + +static void activateComb_n(LADSPA_Handle instance) { + Comb_n *plugin_data = (Comb_n *)instance; + LADSPA_Data *buffer = plugin_data->buffer; + unsigned int buffer_mask = plugin_data->buffer_mask; + LADSPA_Data delay_samples = plugin_data->delay_samples; + LADSPA_Data feedback = plugin_data->feedback; + LADSPA_Data last_decay_time = plugin_data->last_decay_time; + LADSPA_Data last_delay_time = plugin_data->last_delay_time; + unsigned int sample_rate = plugin_data->sample_rate; + long write_phase = plugin_data->write_phase; +#line 45 "comb_1887.xml" + unsigned int minsize, size; + + if (plugin_data->max_delay && *plugin_data->max_delay > 0) + minsize = sample_rate * *plugin_data->max_delay; + else if (plugin_data->delay_time) + minsize = sample_rate * *plugin_data->delay_time; + else + minsize = sample_rate; /* 1 second default */ + + size = 1; + while (size < minsize) size <<= 1; + + /* calloc sets the buffer to zero. */ + buffer = calloc(size, sizeof(LADSPA_Data)); + if (buffer) + buffer_mask = size - 1; + else + buffer_mask = 0; + write_phase = 0; + plugin_data->buffer = buffer; + plugin_data->buffer_mask = buffer_mask; + plugin_data->delay_samples = delay_samples; + plugin_data->feedback = feedback; + plugin_data->last_decay_time = last_decay_time; + plugin_data->last_delay_time = last_delay_time; + plugin_data->sample_rate = sample_rate; + plugin_data->write_phase = write_phase; + +} + +static void cleanupComb_n(LADSPA_Handle instance) { +#line 67 "comb_1887.xml" + Comb_n *plugin_data = (Comb_n *)instance; + free(plugin_data->buffer); + free(instance); +} + +static void connectPortComb_n( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + Comb_n *plugin; + + plugin = (Comb_n *)instance; + switch (port) { + case COMB_N_IN: + plugin->in = data; + break; + case COMB_N_OUT: + plugin->out = data; + break; + case COMB_N_MAX_DELAY: + plugin->max_delay = data; + break; + case COMB_N_DELAY_TIME: + plugin->delay_time = data; + break; + case COMB_N_DECAY_TIME: + plugin->decay_time = data; + break; + } +} + +static LADSPA_Handle instantiateComb_n( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + Comb_n *plugin_data = (Comb_n *)malloc(sizeof(Comb_n)); + LADSPA_Data *buffer = NULL; + unsigned int buffer_mask; + LADSPA_Data delay_samples; + LADSPA_Data feedback; + LADSPA_Data last_decay_time; + LADSPA_Data last_delay_time; + unsigned int sample_rate; + long write_phase; + +#line 41 "comb_1887.xml" + sample_rate = s_rate; + + plugin_data->buffer = buffer; + plugin_data->buffer_mask = buffer_mask; + plugin_data->delay_samples = delay_samples; + plugin_data->feedback = feedback; + plugin_data->last_decay_time = last_decay_time; + plugin_data->last_delay_time = last_delay_time; + plugin_data->sample_rate = sample_rate; + plugin_data->write_phase = write_phase; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runComb_n(LADSPA_Handle instance, unsigned long sample_count) { + Comb_n *plugin_data = (Comb_n *)instance; + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const in = plugin_data->in; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const out = plugin_data->out; + + /* Max Delay (s) (float value) */ + const LADSPA_Data max_delay = *(plugin_data->max_delay); + + /* Delay Time (s) (float value) */ + const LADSPA_Data delay_time = *(plugin_data->delay_time); + + /* Decay Time (s) (float value) */ + const LADSPA_Data decay_time = *(plugin_data->decay_time); + LADSPA_Data * buffer = plugin_data->buffer; + unsigned int buffer_mask = plugin_data->buffer_mask; + LADSPA_Data delay_samples = plugin_data->delay_samples; + LADSPA_Data feedback = plugin_data->feedback; + LADSPA_Data last_decay_time = plugin_data->last_decay_time; + LADSPA_Data last_delay_time = plugin_data->last_delay_time; + unsigned int sample_rate = plugin_data->sample_rate; + long write_phase = plugin_data->write_phase; + +#line 71 "comb_1887.xml" + int i; + + i = max_delay; /* stop gcc complaining */ + + if (write_phase == 0) { + plugin_data->last_delay_time = delay_time; + plugin_data->last_decay_time = decay_time; + plugin_data->delay_samples = delay_samples = CALC_DELAY (delay_time); + plugin_data->feedback = feedback = calc_feedback (delay_time, decay_time); + } + + if (delay_time == last_delay_time) { + long read_phase = write_phase - (long)delay_samples; + LADSPA_Data *readptr = buffer + (read_phase & buffer_mask); + LADSPA_Data *writeptr = buffer + (write_phase & buffer_mask); + LADSPA_Data *lastptr = buffer + buffer_mask + 1; + + if (decay_time == last_decay_time) { + long remain = sample_count; + + while (remain) { + long read_space = lastptr - readptr; + long write_space = lastptr - writeptr; + long to_process = MIN (MIN (read_space, remain), write_space); + + if (to_process == 0) + return; // buffer not allocated. + + remain -= to_process; + + for (i=0; ilast_decay_time = decay_time; + plugin_data->feedback = feedback; + } + + write_phase += sample_count; + } else { + float next_delay_samples = CALC_DELAY (delay_time); + float delay_samples_slope = (next_delay_samples - delay_samples) / sample_count; + float next_feedback = calc_feedback (delay_time, decay_time); + float feedback_slope = (next_feedback - feedback) / sample_count; + + for (i=0; ilast_delay_time = delay_time; + plugin_data->last_decay_time = decay_time; + plugin_data->feedback = feedback; + plugin_data->delay_samples = delay_samples; + } + + plugin_data->write_phase = write_phase; +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainComb_n(LADSPA_Handle instance, LADSPA_Data gain) { + ((Comb_n *)instance)->run_adding_gain = gain; +} + +static void runAddingComb_n(LADSPA_Handle instance, unsigned long sample_count) { + Comb_n *plugin_data = (Comb_n *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const in = plugin_data->in; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const out = plugin_data->out; + + /* Max Delay (s) (float value) */ + const LADSPA_Data max_delay = *(plugin_data->max_delay); + + /* Delay Time (s) (float value) */ + const LADSPA_Data delay_time = *(plugin_data->delay_time); + + /* Decay Time (s) (float value) */ + const LADSPA_Data decay_time = *(plugin_data->decay_time); + LADSPA_Data * buffer = plugin_data->buffer; + unsigned int buffer_mask = plugin_data->buffer_mask; + LADSPA_Data delay_samples = plugin_data->delay_samples; + LADSPA_Data feedback = plugin_data->feedback; + LADSPA_Data last_decay_time = plugin_data->last_decay_time; + LADSPA_Data last_delay_time = plugin_data->last_delay_time; + unsigned int sample_rate = plugin_data->sample_rate; + long write_phase = plugin_data->write_phase; + +#line 71 "comb_1887.xml" + int i; + + i = max_delay; /* stop gcc complaining */ + + if (write_phase == 0) { + plugin_data->last_delay_time = delay_time; + plugin_data->last_decay_time = decay_time; + plugin_data->delay_samples = delay_samples = CALC_DELAY (delay_time); + plugin_data->feedback = feedback = calc_feedback (delay_time, decay_time); + } + + if (delay_time == last_delay_time) { + long read_phase = write_phase - (long)delay_samples; + LADSPA_Data *readptr = buffer + (read_phase & buffer_mask); + LADSPA_Data *writeptr = buffer + (write_phase & buffer_mask); + LADSPA_Data *lastptr = buffer + buffer_mask + 1; + + if (decay_time == last_decay_time) { + long remain = sample_count; + + while (remain) { + long read_space = lastptr - readptr; + long write_space = lastptr - writeptr; + long to_process = MIN (MIN (read_space, remain), write_space); + + if (to_process == 0) + return; // buffer not allocated. + + remain -= to_process; + + for (i=0; ilast_decay_time = decay_time; + plugin_data->feedback = feedback; + } + + write_phase += sample_count; + } else { + float next_delay_samples = CALC_DELAY (delay_time); + float delay_samples_slope = (next_delay_samples - delay_samples) / sample_count; + float next_feedback = calc_feedback (delay_time, decay_time); + float feedback_slope = (next_feedback - feedback) / sample_count; + + for (i=0; ilast_delay_time = delay_time; + plugin_data->last_decay_time = decay_time; + plugin_data->feedback = feedback; + plugin_data->delay_samples = delay_samples; + } + + plugin_data->write_phase = write_phase; +} + +static void activateComb_l(LADSPA_Handle instance) { + Comb_l *plugin_data = (Comb_l *)instance; + LADSPA_Data *buffer = plugin_data->buffer; + unsigned int buffer_mask = plugin_data->buffer_mask; + LADSPA_Data delay_samples = plugin_data->delay_samples; + LADSPA_Data feedback = plugin_data->feedback; + LADSPA_Data last_decay_time = plugin_data->last_decay_time; + LADSPA_Data last_delay_time = plugin_data->last_delay_time; + unsigned int sample_rate = plugin_data->sample_rate; + long write_phase = plugin_data->write_phase; +#line 45 "comb_1887.xml" + unsigned int minsize, size; + + if (plugin_data->max_delay && *plugin_data->max_delay > 0) + minsize = sample_rate * *plugin_data->max_delay; + else if (plugin_data->delay_time) + minsize = sample_rate * *plugin_data->delay_time; + else + minsize = sample_rate; /* 1 second default */ + + size = 1; + while (size < minsize) size <<= 1; + + /* calloc sets the buffer to zero. */ + buffer = calloc(size, sizeof(LADSPA_Data)); + if (buffer) + buffer_mask = size - 1; + else + buffer_mask = 0; + write_phase = 0; + plugin_data->buffer = buffer; + plugin_data->buffer_mask = buffer_mask; + plugin_data->delay_samples = delay_samples; + plugin_data->feedback = feedback; + plugin_data->last_decay_time = last_decay_time; + plugin_data->last_delay_time = last_delay_time; + plugin_data->sample_rate = sample_rate; + plugin_data->write_phase = write_phase; + +} + +static void cleanupComb_l(LADSPA_Handle instance) { +#line 67 "comb_1887.xml" + Comb_l *plugin_data = (Comb_l *)instance; + free(plugin_data->buffer); + free(instance); +} + +static void connectPortComb_l( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + Comb_l *plugin; + + plugin = (Comb_l *)instance; + switch (port) { + case COMB_L_IN: + plugin->in = data; + break; + case COMB_L_OUT: + plugin->out = data; + break; + case COMB_L_MAX_DELAY: + plugin->max_delay = data; + break; + case COMB_L_DELAY_TIME: + plugin->delay_time = data; + break; + case COMB_L_DECAY_TIME: + plugin->decay_time = data; + break; + } +} + +static LADSPA_Handle instantiateComb_l( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + Comb_l *plugin_data = (Comb_l *)malloc(sizeof(Comb_l)); + LADSPA_Data *buffer = NULL; + unsigned int buffer_mask; + LADSPA_Data delay_samples; + LADSPA_Data feedback; + LADSPA_Data last_decay_time; + LADSPA_Data last_delay_time; + unsigned int sample_rate; + long write_phase; + +#line 41 "comb_1887.xml" + sample_rate = s_rate; + + plugin_data->buffer = buffer; + plugin_data->buffer_mask = buffer_mask; + plugin_data->delay_samples = delay_samples; + plugin_data->feedback = feedback; + plugin_data->last_decay_time = last_decay_time; + plugin_data->last_delay_time = last_delay_time; + plugin_data->sample_rate = sample_rate; + plugin_data->write_phase = write_phase; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runComb_l(LADSPA_Handle instance, unsigned long sample_count) { + Comb_l *plugin_data = (Comb_l *)instance; + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const in = plugin_data->in; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const out = plugin_data->out; + + /* Max Delay (s) (float value) */ + const LADSPA_Data max_delay = *(plugin_data->max_delay); + + /* Delay Time (s) (float value) */ + const LADSPA_Data delay_time = *(plugin_data->delay_time); + + /* Decay Time (s) (float value) */ + const LADSPA_Data decay_time = *(plugin_data->decay_time); + LADSPA_Data * buffer = plugin_data->buffer; + unsigned int buffer_mask = plugin_data->buffer_mask; + LADSPA_Data delay_samples = plugin_data->delay_samples; + LADSPA_Data feedback = plugin_data->feedback; + LADSPA_Data last_decay_time = plugin_data->last_decay_time; + LADSPA_Data last_delay_time = plugin_data->last_delay_time; + unsigned int sample_rate = plugin_data->sample_rate; + long write_phase = plugin_data->write_phase; + +#line 71 "comb_1887.xml" + int i; + + i = max_delay; + + if (write_phase == 0) { + plugin_data->last_delay_time = delay_time; + plugin_data->last_decay_time = decay_time; + plugin_data->delay_samples = delay_samples = CALC_DELAY (delay_time); + plugin_data->feedback = feedback = calc_feedback (delay_time, decay_time); + } + + if (delay_time == last_delay_time && decay_time == last_decay_time) { + long idelay_samples = (long)delay_samples; + LADSPA_Data frac = delay_samples - idelay_samples; + + for (i=0; ilast_delay_time = delay_time; + plugin_data->last_decay_time = decay_time; + plugin_data->feedback = feedback; + plugin_data->delay_samples = delay_samples; + } + + plugin_data->write_phase = write_phase; +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainComb_l(LADSPA_Handle instance, LADSPA_Data gain) { + ((Comb_l *)instance)->run_adding_gain = gain; +} + +static void runAddingComb_l(LADSPA_Handle instance, unsigned long sample_count) { + Comb_l *plugin_data = (Comb_l *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const in = plugin_data->in; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const out = plugin_data->out; + + /* Max Delay (s) (float value) */ + const LADSPA_Data max_delay = *(plugin_data->max_delay); + + /* Delay Time (s) (float value) */ + const LADSPA_Data delay_time = *(plugin_data->delay_time); + + /* Decay Time (s) (float value) */ + const LADSPA_Data decay_time = *(plugin_data->decay_time); + LADSPA_Data * buffer = plugin_data->buffer; + unsigned int buffer_mask = plugin_data->buffer_mask; + LADSPA_Data delay_samples = plugin_data->delay_samples; + LADSPA_Data feedback = plugin_data->feedback; + LADSPA_Data last_decay_time = plugin_data->last_decay_time; + LADSPA_Data last_delay_time = plugin_data->last_delay_time; + unsigned int sample_rate = plugin_data->sample_rate; + long write_phase = plugin_data->write_phase; + +#line 71 "comb_1887.xml" + int i; + + i = max_delay; + + if (write_phase == 0) { + plugin_data->last_delay_time = delay_time; + plugin_data->last_decay_time = decay_time; + plugin_data->delay_samples = delay_samples = CALC_DELAY (delay_time); + plugin_data->feedback = feedback = calc_feedback (delay_time, decay_time); + } + + if (delay_time == last_delay_time && decay_time == last_decay_time) { + long idelay_samples = (long)delay_samples; + LADSPA_Data frac = delay_samples - idelay_samples; + + for (i=0; ilast_delay_time = delay_time; + plugin_data->last_decay_time = decay_time; + plugin_data->feedback = feedback; + plugin_data->delay_samples = delay_samples; + } + + plugin_data->write_phase = write_phase; +} + +static void activateComb_c(LADSPA_Handle instance) { + Comb_c *plugin_data = (Comb_c *)instance; + LADSPA_Data *buffer = plugin_data->buffer; + unsigned int buffer_mask = plugin_data->buffer_mask; + LADSPA_Data delay_samples = plugin_data->delay_samples; + LADSPA_Data feedback = plugin_data->feedback; + LADSPA_Data last_decay_time = plugin_data->last_decay_time; + LADSPA_Data last_delay_time = plugin_data->last_delay_time; + unsigned int sample_rate = plugin_data->sample_rate; + long write_phase = plugin_data->write_phase; +#line 45 "comb_1887.xml" + unsigned int minsize, size; + + if (plugin_data->max_delay && *plugin_data->max_delay > 0) + minsize = sample_rate * *plugin_data->max_delay; + else if (plugin_data->delay_time) + minsize = sample_rate * *plugin_data->delay_time; + else + minsize = sample_rate; /* 1 second default */ + + size = 1; + while (size < minsize) size <<= 1; + + /* calloc sets the buffer to zero. */ + buffer = calloc(size, sizeof(LADSPA_Data)); + if (buffer) + buffer_mask = size - 1; + else + buffer_mask = 0; + write_phase = 0; + plugin_data->buffer = buffer; + plugin_data->buffer_mask = buffer_mask; + plugin_data->delay_samples = delay_samples; + plugin_data->feedback = feedback; + plugin_data->last_decay_time = last_decay_time; + plugin_data->last_delay_time = last_delay_time; + plugin_data->sample_rate = sample_rate; + plugin_data->write_phase = write_phase; + +} + +static void cleanupComb_c(LADSPA_Handle instance) { +#line 67 "comb_1887.xml" + Comb_c *plugin_data = (Comb_c *)instance; + free(plugin_data->buffer); + free(instance); +} + +static void connectPortComb_c( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + Comb_c *plugin; + + plugin = (Comb_c *)instance; + switch (port) { + case COMB_C_IN: + plugin->in = data; + break; + case COMB_C_OUT: + plugin->out = data; + break; + case COMB_C_MAX_DELAY: + plugin->max_delay = data; + break; + case COMB_C_DELAY_TIME: + plugin->delay_time = data; + break; + case COMB_C_DECAY_TIME: + plugin->decay_time = data; + break; + } +} + +static LADSPA_Handle instantiateComb_c( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + Comb_c *plugin_data = (Comb_c *)malloc(sizeof(Comb_c)); + LADSPA_Data *buffer = NULL; + unsigned int buffer_mask; + LADSPA_Data delay_samples; + LADSPA_Data feedback; + LADSPA_Data last_decay_time; + LADSPA_Data last_delay_time; + unsigned int sample_rate; + long write_phase; + +#line 41 "comb_1887.xml" + sample_rate = s_rate; + + plugin_data->buffer = buffer; + plugin_data->buffer_mask = buffer_mask; + plugin_data->delay_samples = delay_samples; + plugin_data->feedback = feedback; + plugin_data->last_decay_time = last_decay_time; + plugin_data->last_delay_time = last_delay_time; + plugin_data->sample_rate = sample_rate; + plugin_data->write_phase = write_phase; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runComb_c(LADSPA_Handle instance, unsigned long sample_count) { + Comb_c *plugin_data = (Comb_c *)instance; + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const in = plugin_data->in; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const out = plugin_data->out; + + /* Max Delay (s) (float value) */ + const LADSPA_Data max_delay = *(plugin_data->max_delay); + + /* Delay Time (s) (float value) */ + const LADSPA_Data delay_time = *(plugin_data->delay_time); + + /* Decay Time (s) (float value) */ + const LADSPA_Data decay_time = *(plugin_data->decay_time); + LADSPA_Data * buffer = plugin_data->buffer; + unsigned int buffer_mask = plugin_data->buffer_mask; + LADSPA_Data delay_samples = plugin_data->delay_samples; + LADSPA_Data feedback = plugin_data->feedback; + LADSPA_Data last_decay_time = plugin_data->last_decay_time; + LADSPA_Data last_delay_time = plugin_data->last_delay_time; + unsigned int sample_rate = plugin_data->sample_rate; + long write_phase = plugin_data->write_phase; + +#line 71 "comb_1887.xml" + int i; + + i = max_delay; + + if (write_phase == 0) { + plugin_data->last_delay_time = delay_time; + plugin_data->last_decay_time = decay_time; + plugin_data->delay_samples = delay_samples = CALC_DELAY (delay_time); + plugin_data->feedback = feedback = calc_feedback (delay_time, decay_time); + } + + if (delay_time == last_delay_time && decay_time == last_decay_time) { + long idelay_samples = (long)delay_samples; + LADSPA_Data frac = delay_samples - idelay_samples; + + for (i=0; ilast_delay_time = delay_time; + plugin_data->last_decay_time = decay_time; + plugin_data->feedback = feedback; + plugin_data->delay_samples = delay_samples; + } + + plugin_data->write_phase = write_phase; +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainComb_c(LADSPA_Handle instance, LADSPA_Data gain) { + ((Comb_c *)instance)->run_adding_gain = gain; +} + +static void runAddingComb_c(LADSPA_Handle instance, unsigned long sample_count) { + Comb_c *plugin_data = (Comb_c *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const in = plugin_data->in; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const out = plugin_data->out; + + /* Max Delay (s) (float value) */ + const LADSPA_Data max_delay = *(plugin_data->max_delay); + + /* Delay Time (s) (float value) */ + const LADSPA_Data delay_time = *(plugin_data->delay_time); + + /* Decay Time (s) (float value) */ + const LADSPA_Data decay_time = *(plugin_data->decay_time); + LADSPA_Data * buffer = plugin_data->buffer; + unsigned int buffer_mask = plugin_data->buffer_mask; + LADSPA_Data delay_samples = plugin_data->delay_samples; + LADSPA_Data feedback = plugin_data->feedback; + LADSPA_Data last_decay_time = plugin_data->last_decay_time; + LADSPA_Data last_delay_time = plugin_data->last_delay_time; + unsigned int sample_rate = plugin_data->sample_rate; + long write_phase = plugin_data->write_phase; + +#line 71 "comb_1887.xml" + int i; + + i = max_delay; + + if (write_phase == 0) { + plugin_data->last_delay_time = delay_time; + plugin_data->last_decay_time = decay_time; + plugin_data->delay_samples = delay_samples = CALC_DELAY (delay_time); + plugin_data->feedback = feedback = calc_feedback (delay_time, decay_time); + } + + if (delay_time == last_delay_time && decay_time == last_decay_time) { + long idelay_samples = (long)delay_samples; + LADSPA_Data frac = delay_samples - idelay_samples; + + for (i=0; ilast_delay_time = delay_time; + plugin_data->last_decay_time = decay_time; + plugin_data->feedback = feedback; + plugin_data->delay_samples = delay_samples; + } + + plugin_data->write_phase = write_phase; +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + comb_nDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (comb_nDescriptor) { + comb_nDescriptor->UniqueID = 1889; + comb_nDescriptor->Label = "comb_n"; + comb_nDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + comb_nDescriptor->Name = + D_("Comb delay line, noninterpolating"); + comb_nDescriptor->Maker = + "Andy Wingo "; + comb_nDescriptor->Copyright = + "GPL"; + comb_nDescriptor->PortCount = 5; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(5, + sizeof(LADSPA_PortDescriptor)); + comb_nDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(5, + sizeof(LADSPA_PortRangeHint)); + comb_nDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(5, sizeof(char*)); + comb_nDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Input */ + port_descriptors[COMB_N_IN] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[COMB_N_IN] = + D_("Input"); + port_range_hints[COMB_N_IN].HintDescriptor = 0; + + /* Parameters for Output */ + port_descriptors[COMB_N_OUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[COMB_N_OUT] = + D_("Output"); + port_range_hints[COMB_N_OUT].HintDescriptor = 0; + + /* Parameters for Max Delay (s) */ + port_descriptors[COMB_N_MAX_DELAY] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[COMB_N_MAX_DELAY] = + D_("Max Delay (s)"); + port_range_hints[COMB_N_MAX_DELAY].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW; + port_range_hints[COMB_N_MAX_DELAY].LowerBound = 0; + + /* Parameters for Delay Time (s) */ + port_descriptors[COMB_N_DELAY_TIME] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[COMB_N_DELAY_TIME] = + D_("Delay Time (s)"); + port_range_hints[COMB_N_DELAY_TIME].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW; + port_range_hints[COMB_N_DELAY_TIME].LowerBound = 0; + + /* Parameters for Decay Time (s) */ + port_descriptors[COMB_N_DECAY_TIME] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[COMB_N_DECAY_TIME] = + D_("Decay Time (s)"); + port_range_hints[COMB_N_DECAY_TIME].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW; + port_range_hints[COMB_N_DECAY_TIME].LowerBound = 0; + + comb_nDescriptor->activate = activateComb_n; + comb_nDescriptor->cleanup = cleanupComb_n; + comb_nDescriptor->connect_port = connectPortComb_n; + comb_nDescriptor->deactivate = NULL; + comb_nDescriptor->instantiate = instantiateComb_n; + comb_nDescriptor->run = runComb_n; + comb_nDescriptor->run_adding = runAddingComb_n; + comb_nDescriptor->set_run_adding_gain = setRunAddingGainComb_n; + } + + comb_lDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (comb_lDescriptor) { + comb_lDescriptor->UniqueID = 1887; + comb_lDescriptor->Label = "comb_l"; + comb_lDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + comb_lDescriptor->Name = + D_("Comb delay line, linear interpolation"); + comb_lDescriptor->Maker = + "Andy Wingo "; + comb_lDescriptor->Copyright = + "GPL"; + comb_lDescriptor->PortCount = 5; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(5, + sizeof(LADSPA_PortDescriptor)); + comb_lDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(5, + sizeof(LADSPA_PortRangeHint)); + comb_lDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(5, sizeof(char*)); + comb_lDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Input */ + port_descriptors[COMB_L_IN] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[COMB_L_IN] = + D_("Input"); + port_range_hints[COMB_L_IN].HintDescriptor = 0; + + /* Parameters for Output */ + port_descriptors[COMB_L_OUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[COMB_L_OUT] = + D_("Output"); + port_range_hints[COMB_L_OUT].HintDescriptor = 0; + + /* Parameters for Max Delay (s) */ + port_descriptors[COMB_L_MAX_DELAY] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[COMB_L_MAX_DELAY] = + D_("Max Delay (s)"); + port_range_hints[COMB_L_MAX_DELAY].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW; + port_range_hints[COMB_L_MAX_DELAY].LowerBound = 0; + + /* Parameters for Delay Time (s) */ + port_descriptors[COMB_L_DELAY_TIME] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[COMB_L_DELAY_TIME] = + D_("Delay Time (s)"); + port_range_hints[COMB_L_DELAY_TIME].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW; + port_range_hints[COMB_L_DELAY_TIME].LowerBound = 0; + + /* Parameters for Decay Time (s) */ + port_descriptors[COMB_L_DECAY_TIME] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[COMB_L_DECAY_TIME] = + D_("Decay Time (s)"); + port_range_hints[COMB_L_DECAY_TIME].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW; + port_range_hints[COMB_L_DECAY_TIME].LowerBound = 0; + + comb_lDescriptor->activate = activateComb_l; + comb_lDescriptor->cleanup = cleanupComb_l; + comb_lDescriptor->connect_port = connectPortComb_l; + comb_lDescriptor->deactivate = NULL; + comb_lDescriptor->instantiate = instantiateComb_l; + comb_lDescriptor->run = runComb_l; + comb_lDescriptor->run_adding = runAddingComb_l; + comb_lDescriptor->set_run_adding_gain = setRunAddingGainComb_l; + } + + comb_cDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (comb_cDescriptor) { + comb_cDescriptor->UniqueID = 1888; + comb_cDescriptor->Label = "comb_c"; + comb_cDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + comb_cDescriptor->Name = + D_("Comb delay line, cubic spline interpolation"); + comb_cDescriptor->Maker = + "Andy Wingo "; + comb_cDescriptor->Copyright = + "GPL"; + comb_cDescriptor->PortCount = 5; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(5, + sizeof(LADSPA_PortDescriptor)); + comb_cDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(5, + sizeof(LADSPA_PortRangeHint)); + comb_cDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(5, sizeof(char*)); + comb_cDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Input */ + port_descriptors[COMB_C_IN] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[COMB_C_IN] = + D_("Input"); + port_range_hints[COMB_C_IN].HintDescriptor = 0; + + /* Parameters for Output */ + port_descriptors[COMB_C_OUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[COMB_C_OUT] = + D_("Output"); + port_range_hints[COMB_C_OUT].HintDescriptor = 0; + + /* Parameters for Max Delay (s) */ + port_descriptors[COMB_C_MAX_DELAY] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[COMB_C_MAX_DELAY] = + D_("Max Delay (s)"); + port_range_hints[COMB_C_MAX_DELAY].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW; + port_range_hints[COMB_C_MAX_DELAY].LowerBound = 0; + + /* Parameters for Delay Time (s) */ + port_descriptors[COMB_C_DELAY_TIME] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[COMB_C_DELAY_TIME] = + D_("Delay Time (s)"); + port_range_hints[COMB_C_DELAY_TIME].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW; + port_range_hints[COMB_C_DELAY_TIME].LowerBound = 0; + + /* Parameters for Decay Time (s) */ + port_descriptors[COMB_C_DECAY_TIME] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[COMB_C_DECAY_TIME] = + D_("Decay Time (s)"); + port_range_hints[COMB_C_DECAY_TIME].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW; + port_range_hints[COMB_C_DECAY_TIME].LowerBound = 0; + + comb_cDescriptor->activate = activateComb_c; + comb_cDescriptor->cleanup = cleanupComb_c; + comb_cDescriptor->connect_port = connectPortComb_c; + comb_cDescriptor->deactivate = NULL; + comb_cDescriptor->instantiate = instantiateComb_c; + comb_cDescriptor->run = runComb_c; + comb_cDescriptor->run_adding = runAddingComb_c; + comb_cDescriptor->set_run_adding_gain = setRunAddingGainComb_c; + } +} + +void _fini() { + if (comb_nDescriptor) { + free((LADSPA_PortDescriptor *)comb_nDescriptor->PortDescriptors); + free((char **)comb_nDescriptor->PortNames); + free((LADSPA_PortRangeHint *)comb_nDescriptor->PortRangeHints); + free(comb_nDescriptor); + } + if (comb_lDescriptor) { + free((LADSPA_PortDescriptor *)comb_lDescriptor->PortDescriptors); + free((char **)comb_lDescriptor->PortNames); + free((LADSPA_PortRangeHint *)comb_lDescriptor->PortRangeHints); + free(comb_lDescriptor); + } + if (comb_cDescriptor) { + free((LADSPA_PortDescriptor *)comb_cDescriptor->PortDescriptors); + free((char **)comb_cDescriptor->PortNames); + free((LADSPA_PortRangeHint *)comb_cDescriptor->PortRangeHints); + free(comb_cDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/comb_splitter_1411.c b/plugins/ladspa_effect/swh/comb_splitter_1411.c new file mode 100644 index 000000000..bd1c4c714 --- /dev/null +++ b/plugins/ladspa_effect/swh/comb_splitter_1411.c @@ -0,0 +1,352 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + +#line 9 "comb_splitter_1411.xml" + +#include "ladspa-util.h" +#define COMB_SIZE 0x4000 +#define COMB_MASK 0x3FFF + +#define COMBSPLITTER_FREQ 0 +#define COMBSPLITTER_INPUT 1 +#define COMBSPLITTER_OUT1 2 +#define COMBSPLITTER_OUT2 3 + +static LADSPA_Descriptor *combSplitterDescriptor = NULL; + +typedef struct { + LADSPA_Data *freq; + LADSPA_Data *input; + LADSPA_Data *out1; + LADSPA_Data *out2; + long comb_pos; + LADSPA_Data *comb_tbl; + float last_offset; + long sample_rate; + LADSPA_Data run_adding_gain; +} CombSplitter; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return combSplitterDescriptor; + default: + return NULL; + } +} + +static void activateCombSplitter(LADSPA_Handle instance) { + CombSplitter *plugin_data = (CombSplitter *)instance; + long comb_pos = plugin_data->comb_pos; + LADSPA_Data *comb_tbl = plugin_data->comb_tbl; + float last_offset = plugin_data->last_offset; + long sample_rate = plugin_data->sample_rate; +#line 29 "comb_splitter_1411.xml" + int i; + + for (i = 0; i < COMB_SIZE; i++) { + comb_tbl[i] = 0; + } + comb_pos = 0; + last_offset = 1000; + plugin_data->comb_pos = comb_pos; + plugin_data->comb_tbl = comb_tbl; + plugin_data->last_offset = last_offset; + plugin_data->sample_rate = sample_rate; + +} + +static void cleanupCombSplitter(LADSPA_Handle instance) { +#line 39 "comb_splitter_1411.xml" + CombSplitter *plugin_data = (CombSplitter *)instance; + free(plugin_data->comb_tbl); + free(instance); +} + +static void connectPortCombSplitter( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + CombSplitter *plugin; + + plugin = (CombSplitter *)instance; + switch (port) { + case COMBSPLITTER_FREQ: + plugin->freq = data; + break; + case COMBSPLITTER_INPUT: + plugin->input = data; + break; + case COMBSPLITTER_OUT1: + plugin->out1 = data; + break; + case COMBSPLITTER_OUT2: + plugin->out2 = data; + break; + } +} + +static LADSPA_Handle instantiateCombSplitter( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + CombSplitter *plugin_data = (CombSplitter *)malloc(sizeof(CombSplitter)); + long comb_pos; + LADSPA_Data *comb_tbl = NULL; + float last_offset; + long sample_rate; + +#line 22 "comb_splitter_1411.xml" + sample_rate = s_rate; + comb_tbl = malloc(sizeof(LADSPA_Data) * COMB_SIZE); + comb_pos = 0; + last_offset = 1000; + + plugin_data->comb_pos = comb_pos; + plugin_data->comb_tbl = comb_tbl; + plugin_data->last_offset = last_offset; + plugin_data->sample_rate = sample_rate; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runCombSplitter(LADSPA_Handle instance, unsigned long sample_count) { + CombSplitter *plugin_data = (CombSplitter *)instance; + + /* Band separation (Hz) (float value) */ + const LADSPA_Data freq = *(plugin_data->freq); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output 1 (array of floats of length sample_count) */ + LADSPA_Data * const out1 = plugin_data->out1; + + /* Output 2 (array of floats of length sample_count) */ + LADSPA_Data * const out2 = plugin_data->out2; + long comb_pos = plugin_data->comb_pos; + LADSPA_Data * comb_tbl = plugin_data->comb_tbl; + float last_offset = plugin_data->last_offset; + long sample_rate = plugin_data->sample_rate; + +#line 43 "comb_splitter_1411.xml" + float offset; + int data_pos; + unsigned long pos; + float xf, xf_step, d_pos, fr, interp, in; + + offset = sample_rate / freq; + offset = f_clamp(offset, 0, COMB_SIZE - 1); + xf_step = 1.0f / (float)sample_count; + xf = 0.0f; + + for (pos = 0; pos < sample_count; pos++) { + xf += xf_step; + d_pos = comb_pos - LIN_INTERP(xf, last_offset, offset); + data_pos = f_trunc(d_pos); + fr = d_pos - data_pos; + interp = cube_interp(fr, comb_tbl[(data_pos - 1) & COMB_MASK], comb_tbl[data_pos & COMB_MASK], comb_tbl[(data_pos + 1) & COMB_MASK], comb_tbl[(data_pos + 2) & COMB_MASK]); + in = input[pos]; + comb_tbl[comb_pos] = in; + buffer_write(out1[pos], (in + interp) * 0.5f); + buffer_write(out2[pos], (in - interp) * 0.5f); + comb_pos = (comb_pos + 1) & COMB_MASK; + } + + plugin_data->comb_pos = comb_pos; + plugin_data->last_offset = offset; +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainCombSplitter(LADSPA_Handle instance, LADSPA_Data gain) { + ((CombSplitter *)instance)->run_adding_gain = gain; +} + +static void runAddingCombSplitter(LADSPA_Handle instance, unsigned long sample_count) { + CombSplitter *plugin_data = (CombSplitter *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Band separation (Hz) (float value) */ + const LADSPA_Data freq = *(plugin_data->freq); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output 1 (array of floats of length sample_count) */ + LADSPA_Data * const out1 = plugin_data->out1; + + /* Output 2 (array of floats of length sample_count) */ + LADSPA_Data * const out2 = plugin_data->out2; + long comb_pos = plugin_data->comb_pos; + LADSPA_Data * comb_tbl = plugin_data->comb_tbl; + float last_offset = plugin_data->last_offset; + long sample_rate = plugin_data->sample_rate; + +#line 43 "comb_splitter_1411.xml" + float offset; + int data_pos; + unsigned long pos; + float xf, xf_step, d_pos, fr, interp, in; + + offset = sample_rate / freq; + offset = f_clamp(offset, 0, COMB_SIZE - 1); + xf_step = 1.0f / (float)sample_count; + xf = 0.0f; + + for (pos = 0; pos < sample_count; pos++) { + xf += xf_step; + d_pos = comb_pos - LIN_INTERP(xf, last_offset, offset); + data_pos = f_trunc(d_pos); + fr = d_pos - data_pos; + interp = cube_interp(fr, comb_tbl[(data_pos - 1) & COMB_MASK], comb_tbl[data_pos & COMB_MASK], comb_tbl[(data_pos + 1) & COMB_MASK], comb_tbl[(data_pos + 2) & COMB_MASK]); + in = input[pos]; + comb_tbl[comb_pos] = in; + buffer_write(out1[pos], (in + interp) * 0.5f); + buffer_write(out2[pos], (in - interp) * 0.5f); + comb_pos = (comb_pos + 1) & COMB_MASK; + } + + plugin_data->comb_pos = comb_pos; + plugin_data->last_offset = offset; +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + combSplitterDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (combSplitterDescriptor) { + combSplitterDescriptor->UniqueID = 1411; + combSplitterDescriptor->Label = "combSplitter"; + combSplitterDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + combSplitterDescriptor->Name = + D_("Comb Splitter"); + combSplitterDescriptor->Maker = + "Steve Harris "; + combSplitterDescriptor->Copyright = + "GPL"; + combSplitterDescriptor->PortCount = 4; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(4, + sizeof(LADSPA_PortDescriptor)); + combSplitterDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(4, + sizeof(LADSPA_PortRangeHint)); + combSplitterDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(4, sizeof(char*)); + combSplitterDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Band separation (Hz) */ + port_descriptors[COMBSPLITTER_FREQ] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[COMBSPLITTER_FREQ] = + D_("Band separation (Hz)"); + port_range_hints[COMBSPLITTER_FREQ].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_LOW; + port_range_hints[COMBSPLITTER_FREQ].LowerBound = 16; + port_range_hints[COMBSPLITTER_FREQ].UpperBound = 640; + + /* Parameters for Input */ + port_descriptors[COMBSPLITTER_INPUT] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[COMBSPLITTER_INPUT] = + D_("Input"); + port_range_hints[COMBSPLITTER_INPUT].HintDescriptor = 0; + + /* Parameters for Output 1 */ + port_descriptors[COMBSPLITTER_OUT1] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[COMBSPLITTER_OUT1] = + D_("Output 1"); + port_range_hints[COMBSPLITTER_OUT1].HintDescriptor = 0; + + /* Parameters for Output 2 */ + port_descriptors[COMBSPLITTER_OUT2] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[COMBSPLITTER_OUT2] = + D_("Output 2"); + port_range_hints[COMBSPLITTER_OUT2].HintDescriptor = 0; + + combSplitterDescriptor->activate = activateCombSplitter; + combSplitterDescriptor->cleanup = cleanupCombSplitter; + combSplitterDescriptor->connect_port = connectPortCombSplitter; + combSplitterDescriptor->deactivate = NULL; + combSplitterDescriptor->instantiate = instantiateCombSplitter; + combSplitterDescriptor->run = runCombSplitter; + combSplitterDescriptor->run_adding = runAddingCombSplitter; + combSplitterDescriptor->set_run_adding_gain = setRunAddingGainCombSplitter; + } +} + +void _fini() { + if (combSplitterDescriptor) { + free((LADSPA_PortDescriptor *)combSplitterDescriptor->PortDescriptors); + free((char **)combSplitterDescriptor->PortNames); + free((LADSPA_PortRangeHint *)combSplitterDescriptor->PortRangeHints); + free(combSplitterDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/const_1909.c b/plugins/ladspa_effect/swh/const_1909.c new file mode 100644 index 000000000..9e91cc41b --- /dev/null +++ b/plugins/ladspa_effect/swh/const_1909.c @@ -0,0 +1,261 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + + +#define CONST_AMPLITUDE 0 +#define CONST_INPUT 1 +#define CONST_OUTPUT 2 + +static LADSPA_Descriptor *constDescriptor = NULL; + +typedef struct { + LADSPA_Data *amplitude; + LADSPA_Data *input; + LADSPA_Data *output; + float last_amp; + LADSPA_Data run_adding_gain; +} Const; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return constDescriptor; + default: + return NULL; + } +} + +static void activateConst(LADSPA_Handle instance) { + Const *plugin_data = (Const *)instance; + float last_amp = plugin_data->last_amp; +#line 18 "const_1909.xml" + last_amp = 0.0f; + plugin_data->last_amp = last_amp; + +} + +static void cleanupConst(LADSPA_Handle instance) { + free(instance); +} + +static void connectPortConst( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + Const *plugin; + + plugin = (Const *)instance; + switch (port) { + case CONST_AMPLITUDE: + plugin->amplitude = data; + break; + case CONST_INPUT: + plugin->input = data; + break; + case CONST_OUTPUT: + plugin->output = data; + break; + } +} + +static LADSPA_Handle instantiateConst( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + Const *plugin_data = (Const *)malloc(sizeof(Const)); + plugin_data->run_adding_gain = 1.0f; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runConst(LADSPA_Handle instance, unsigned long sample_count) { + Const *plugin_data = (Const *)instance; + + /* Signal amplitude (float value) */ + const LADSPA_Data amplitude = *(plugin_data->amplitude); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + float last_amp = plugin_data->last_amp; + +#line 22 "const_1909.xml" + unsigned long pos; + const float delta = (amplitude - last_amp) / (sample_count - 1); + float amp = last_amp; + + for (pos = 0; pos < sample_count; pos++) { + amp += delta; + buffer_write(output[pos], input[pos] + amp); + } + + plugin_data->last_amp = amp; +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainConst(LADSPA_Handle instance, LADSPA_Data gain) { + ((Const *)instance)->run_adding_gain = gain; +} + +static void runAddingConst(LADSPA_Handle instance, unsigned long sample_count) { + Const *plugin_data = (Const *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Signal amplitude (float value) */ + const LADSPA_Data amplitude = *(plugin_data->amplitude); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + float last_amp = plugin_data->last_amp; + +#line 22 "const_1909.xml" + unsigned long pos; + const float delta = (amplitude - last_amp) / (sample_count - 1); + float amp = last_amp; + + for (pos = 0; pos < sample_count; pos++) { + amp += delta; + buffer_write(output[pos], input[pos] + amp); + } + + plugin_data->last_amp = amp; +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + constDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (constDescriptor) { + constDescriptor->UniqueID = 1909; + constDescriptor->Label = "const"; + constDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + constDescriptor->Name = + D_("Constant Signal Generator"); + constDescriptor->Maker = + "Steve Harris "; + constDescriptor->Copyright = + "GPL"; + constDescriptor->PortCount = 3; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(3, + sizeof(LADSPA_PortDescriptor)); + constDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(3, + sizeof(LADSPA_PortRangeHint)); + constDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(3, sizeof(char*)); + constDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Signal amplitude */ + port_descriptors[CONST_AMPLITUDE] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[CONST_AMPLITUDE] = + D_("Signal amplitude"); + port_range_hints[CONST_AMPLITUDE].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[CONST_AMPLITUDE].LowerBound = -1; + port_range_hints[CONST_AMPLITUDE].UpperBound = 1.1; + + /* Parameters for Input */ + port_descriptors[CONST_INPUT] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[CONST_INPUT] = + D_("Input"); + port_range_hints[CONST_INPUT].HintDescriptor = 0; + + /* Parameters for Output */ + port_descriptors[CONST_OUTPUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[CONST_OUTPUT] = + D_("Output"); + port_range_hints[CONST_OUTPUT].HintDescriptor = 0; + + constDescriptor->activate = activateConst; + constDescriptor->cleanup = cleanupConst; + constDescriptor->connect_port = connectPortConst; + constDescriptor->deactivate = NULL; + constDescriptor->instantiate = instantiateConst; + constDescriptor->run = runConst; + constDescriptor->run_adding = runAddingConst; + constDescriptor->set_run_adding_gain = setRunAddingGainConst; + } +} + +void _fini() { + if (constDescriptor) { + free((LADSPA_PortDescriptor *)constDescriptor->PortDescriptors); + free((char **)constDescriptor->PortNames); + free((LADSPA_PortRangeHint *)constDescriptor->PortRangeHints); + free(constDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/crossover_dist_1404.c b/plugins/ladspa_effect/swh/crossover_dist_1404.c new file mode 100644 index 000000000..80053a214 --- /dev/null +++ b/plugins/ladspa_effect/swh/crossover_dist_1404.c @@ -0,0 +1,287 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + +#line 10 "crossover_dist_1404.xml" + +#include "ladspa-util.h" + +#define CROSSOVERDIST_AMP 0 +#define CROSSOVERDIST_SMOOTH 1 +#define CROSSOVERDIST_INPUT 2 +#define CROSSOVERDIST_OUTPUT 3 + +static LADSPA_Descriptor *crossoverDistDescriptor = NULL; + +typedef struct { + LADSPA_Data *amp; + LADSPA_Data *smooth; + LADSPA_Data *input; + LADSPA_Data *output; + LADSPA_Data run_adding_gain; +} CrossoverDist; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return crossoverDistDescriptor; + default: + return NULL; + } +} + +static void cleanupCrossoverDist(LADSPA_Handle instance) { + free(instance); +} + +static void connectPortCrossoverDist( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + CrossoverDist *plugin; + + plugin = (CrossoverDist *)instance; + switch (port) { + case CROSSOVERDIST_AMP: + plugin->amp = data; + break; + case CROSSOVERDIST_SMOOTH: + plugin->smooth = data; + break; + case CROSSOVERDIST_INPUT: + plugin->input = data; + break; + case CROSSOVERDIST_OUTPUT: + plugin->output = data; + break; + } +} + +static LADSPA_Handle instantiateCrossoverDist( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + CrossoverDist *plugin_data = (CrossoverDist *)malloc(sizeof(CrossoverDist)); + plugin_data->run_adding_gain = 1.0f; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runCrossoverDist(LADSPA_Handle instance, unsigned long sample_count) { + CrossoverDist *plugin_data = (CrossoverDist *)instance; + + /* Crossover amplitude (float value) */ + const LADSPA_Data amp = *(plugin_data->amp); + + /* Smoothing (float value) */ + const LADSPA_Data smooth = *(plugin_data->smooth); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + +#line 21 "crossover_dist_1404.xml" + unsigned long pos; + float sig; + const float fade = fabs(amp * smooth) + 0.0001; + + for (pos = 0; pos < sample_count; pos++) { + sig = fabs(input[pos]) - amp; + + if (sig < 0.0f) { + sig *= (1.0f + sig/fade) * smooth; + } + + if (input[pos] < 0.0f) { + buffer_write(output[pos], -sig); + } else { + buffer_write(output[pos], sig); + } + } +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainCrossoverDist(LADSPA_Handle instance, LADSPA_Data gain) { + ((CrossoverDist *)instance)->run_adding_gain = gain; +} + +static void runAddingCrossoverDist(LADSPA_Handle instance, unsigned long sample_count) { + CrossoverDist *plugin_data = (CrossoverDist *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Crossover amplitude (float value) */ + const LADSPA_Data amp = *(plugin_data->amp); + + /* Smoothing (float value) */ + const LADSPA_Data smooth = *(plugin_data->smooth); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + +#line 21 "crossover_dist_1404.xml" + unsigned long pos; + float sig; + const float fade = fabs(amp * smooth) + 0.0001; + + for (pos = 0; pos < sample_count; pos++) { + sig = fabs(input[pos]) - amp; + + if (sig < 0.0f) { + sig *= (1.0f + sig/fade) * smooth; + } + + if (input[pos] < 0.0f) { + buffer_write(output[pos], -sig); + } else { + buffer_write(output[pos], sig); + } + } +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + crossoverDistDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (crossoverDistDescriptor) { + crossoverDistDescriptor->UniqueID = 1404; + crossoverDistDescriptor->Label = "crossoverDist"; + crossoverDistDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + crossoverDistDescriptor->Name = + D_("Crossover distortion"); + crossoverDistDescriptor->Maker = + "Steve Harris "; + crossoverDistDescriptor->Copyright = + "GPL"; + crossoverDistDescriptor->PortCount = 4; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(4, + sizeof(LADSPA_PortDescriptor)); + crossoverDistDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(4, + sizeof(LADSPA_PortRangeHint)); + crossoverDistDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(4, sizeof(char*)); + crossoverDistDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Crossover amplitude */ + port_descriptors[CROSSOVERDIST_AMP] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[CROSSOVERDIST_AMP] = + D_("Crossover amplitude"); + port_range_hints[CROSSOVERDIST_AMP].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MINIMUM; + port_range_hints[CROSSOVERDIST_AMP].LowerBound = 0; + port_range_hints[CROSSOVERDIST_AMP].UpperBound = 0.1; + + /* Parameters for Smoothing */ + port_descriptors[CROSSOVERDIST_SMOOTH] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[CROSSOVERDIST_SMOOTH] = + D_("Smoothing"); + port_range_hints[CROSSOVERDIST_SMOOTH].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MAXIMUM; + port_range_hints[CROSSOVERDIST_SMOOTH].LowerBound = 0; + port_range_hints[CROSSOVERDIST_SMOOTH].UpperBound = 1; + + /* Parameters for Input */ + port_descriptors[CROSSOVERDIST_INPUT] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[CROSSOVERDIST_INPUT] = + D_("Input"); + port_range_hints[CROSSOVERDIST_INPUT].HintDescriptor = 0; + + /* Parameters for Output */ + port_descriptors[CROSSOVERDIST_OUTPUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[CROSSOVERDIST_OUTPUT] = + D_("Output"); + port_range_hints[CROSSOVERDIST_OUTPUT].HintDescriptor = 0; + + crossoverDistDescriptor->activate = NULL; + crossoverDistDescriptor->cleanup = cleanupCrossoverDist; + crossoverDistDescriptor->connect_port = connectPortCrossoverDist; + crossoverDistDescriptor->deactivate = NULL; + crossoverDistDescriptor->instantiate = instantiateCrossoverDist; + crossoverDistDescriptor->run = runCrossoverDist; + crossoverDistDescriptor->run_adding = runAddingCrossoverDist; + crossoverDistDescriptor->set_run_adding_gain = setRunAddingGainCrossoverDist; + } +} + +void _fini() { + if (crossoverDistDescriptor) { + free((LADSPA_PortDescriptor *)crossoverDistDescriptor->PortDescriptors); + free((char **)crossoverDistDescriptor->PortNames); + free((LADSPA_PortRangeHint *)crossoverDistDescriptor->PortRangeHints); + free(crossoverDistDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/decay_1886.c b/plugins/ladspa_effect/swh/decay_1886.c new file mode 100644 index 000000000..5871ea18f --- /dev/null +++ b/plugins/ladspa_effect/swh/decay_1886.c @@ -0,0 +1,341 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + +#line 10 "decay_1886.xml" + +#include "ladspa-util.h" + +#define LOG001 -6.9077552789f + +#define DECAY_IN 0 +#define DECAY_OUT 1 +#define DECAY_DECAY_TIME 2 + +static LADSPA_Descriptor *decayDescriptor = NULL; + +typedef struct { + LADSPA_Data *in; + LADSPA_Data *out; + LADSPA_Data *decay_time; + LADSPA_Data b; + char first_time; + LADSPA_Data last_decay_time; + LADSPA_Data sample_rate; + LADSPA_Data y; + LADSPA_Data run_adding_gain; +} Decay; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return decayDescriptor; + default: + return NULL; + } +} + +static void activateDecay(LADSPA_Handle instance) { + Decay *plugin_data = (Decay *)instance; + LADSPA_Data b = plugin_data->b; + char first_time = plugin_data->first_time; + LADSPA_Data last_decay_time = plugin_data->last_decay_time; + LADSPA_Data sample_rate = plugin_data->sample_rate; + LADSPA_Data y = plugin_data->y; +#line 28 "decay_1886.xml" + b = 0.f; + y = 0.f; + last_decay_time = 0.f; + first_time = 0; + plugin_data->b = b; + plugin_data->first_time = first_time; + plugin_data->last_decay_time = last_decay_time; + plugin_data->sample_rate = sample_rate; + plugin_data->y = y; + +} + +static void cleanupDecay(LADSPA_Handle instance) { + free(instance); +} + +static void connectPortDecay( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + Decay *plugin; + + plugin = (Decay *)instance; + switch (port) { + case DECAY_IN: + plugin->in = data; + break; + case DECAY_OUT: + plugin->out = data; + break; + case DECAY_DECAY_TIME: + plugin->decay_time = data; + break; + } +} + +static LADSPA_Handle instantiateDecay( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + Decay *plugin_data = (Decay *)malloc(sizeof(Decay)); + LADSPA_Data b; + char first_time; + LADSPA_Data last_decay_time; + LADSPA_Data sample_rate; + LADSPA_Data y; + +#line 24 "decay_1886.xml" + sample_rate = s_rate; + + plugin_data->b = b; + plugin_data->first_time = first_time; + plugin_data->last_decay_time = last_decay_time; + plugin_data->sample_rate = sample_rate; + plugin_data->y = y; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runDecay(LADSPA_Handle instance, unsigned long sample_count) { + Decay *plugin_data = (Decay *)instance; + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const in = plugin_data->in; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const out = plugin_data->out; + + /* Decay Time (s) (float value) */ + const LADSPA_Data decay_time = *(plugin_data->decay_time); + LADSPA_Data b = plugin_data->b; + char first_time = plugin_data->first_time; + LADSPA_Data last_decay_time = plugin_data->last_decay_time; + LADSPA_Data sample_rate = plugin_data->sample_rate; + LADSPA_Data y = plugin_data->y; + +#line 35 "decay_1886.xml" + int i; + + if (first_time) { + plugin_data->last_decay_time = decay_time; + plugin_data->b = decay_time == 0.f ? 0.f : exp (LOG001 / (decay_time * sample_rate)); + plugin_data->first_time = 0; + } + + if (decay_time == last_decay_time) { + if (b == 0.f) + for (i=0; ib = decay_time == 0.f ? 0.f : exp (LOG001 / (decay_time * sample_rate)); + b_slope = (plugin_data->b - b) / sample_count; + + for (i=0; ilast_decay_time = decay_time; + } + + plugin_data->y = y; +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainDecay(LADSPA_Handle instance, LADSPA_Data gain) { + ((Decay *)instance)->run_adding_gain = gain; +} + +static void runAddingDecay(LADSPA_Handle instance, unsigned long sample_count) { + Decay *plugin_data = (Decay *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const in = plugin_data->in; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const out = plugin_data->out; + + /* Decay Time (s) (float value) */ + const LADSPA_Data decay_time = *(plugin_data->decay_time); + LADSPA_Data b = plugin_data->b; + char first_time = plugin_data->first_time; + LADSPA_Data last_decay_time = plugin_data->last_decay_time; + LADSPA_Data sample_rate = plugin_data->sample_rate; + LADSPA_Data y = plugin_data->y; + +#line 35 "decay_1886.xml" + int i; + + if (first_time) { + plugin_data->last_decay_time = decay_time; + plugin_data->b = decay_time == 0.f ? 0.f : exp (LOG001 / (decay_time * sample_rate)); + plugin_data->first_time = 0; + } + + if (decay_time == last_decay_time) { + if (b == 0.f) + for (i=0; ib = decay_time == 0.f ? 0.f : exp (LOG001 / (decay_time * sample_rate)); + b_slope = (plugin_data->b - b) / sample_count; + + for (i=0; ilast_decay_time = decay_time; + } + + plugin_data->y = y; +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + decayDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (decayDescriptor) { + decayDescriptor->UniqueID = 1886; + decayDescriptor->Label = "decay"; + decayDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + decayDescriptor->Name = + D_("Exponential signal decay"); + decayDescriptor->Maker = + "Andy Wingo "; + decayDescriptor->Copyright = + "GPL"; + decayDescriptor->PortCount = 3; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(3, + sizeof(LADSPA_PortDescriptor)); + decayDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(3, + sizeof(LADSPA_PortRangeHint)); + decayDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(3, sizeof(char*)); + decayDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Input */ + port_descriptors[DECAY_IN] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[DECAY_IN] = + D_("Input"); + port_range_hints[DECAY_IN].HintDescriptor = 0; + + /* Parameters for Output */ + port_descriptors[DECAY_OUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[DECAY_OUT] = + D_("Output"); + port_range_hints[DECAY_OUT].HintDescriptor = 0; + + /* Parameters for Decay Time (s) */ + port_descriptors[DECAY_DECAY_TIME] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[DECAY_DECAY_TIME] = + D_("Decay Time (s)"); + port_range_hints[DECAY_DECAY_TIME].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW; + port_range_hints[DECAY_DECAY_TIME].LowerBound = 0; + + decayDescriptor->activate = activateDecay; + decayDescriptor->cleanup = cleanupDecay; + decayDescriptor->connect_port = connectPortDecay; + decayDescriptor->deactivate = NULL; + decayDescriptor->instantiate = instantiateDecay; + decayDescriptor->run = runDecay; + decayDescriptor->run_adding = runAddingDecay; + decayDescriptor->set_run_adding_gain = setRunAddingGainDecay; + } +} + +void _fini() { + if (decayDescriptor) { + free((LADSPA_PortDescriptor *)decayDescriptor->PortDescriptors); + free((char **)decayDescriptor->PortNames); + free((LADSPA_PortRangeHint *)decayDescriptor->PortRangeHints); + free(decayDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/decimator_1202.c b/plugins/ladspa_effect/swh/decimator_1202.c new file mode 100644 index 000000000..bcf7a8004 --- /dev/null +++ b/plugins/ladspa_effect/swh/decimator_1202.c @@ -0,0 +1,346 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + +#line 9 "decimator_1202.xml" + +#include +#include "ladspa-util.h" + +#define DECIMATOR_BITS 0 +#define DECIMATOR_FS 1 +#define DECIMATOR_INPUT 2 +#define DECIMATOR_OUTPUT 3 + +static LADSPA_Descriptor *decimatorDescriptor = NULL; + +typedef struct { + LADSPA_Data *bits; + LADSPA_Data *fs; + LADSPA_Data *input; + LADSPA_Data *output; + float count; + LADSPA_Data last_out; + long sample_rate; + LADSPA_Data run_adding_gain; +} Decimator; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return decimatorDescriptor; + default: + return NULL; + } +} + +static void cleanupDecimator(LADSPA_Handle instance) { + free(instance); +} + +static void connectPortDecimator( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + Decimator *plugin; + + plugin = (Decimator *)instance; + switch (port) { + case DECIMATOR_BITS: + plugin->bits = data; + break; + case DECIMATOR_FS: + plugin->fs = data; + break; + case DECIMATOR_INPUT: + plugin->input = data; + break; + case DECIMATOR_OUTPUT: + plugin->output = data; + break; + } +} + +static LADSPA_Handle instantiateDecimator( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + Decimator *plugin_data = (Decimator *)malloc(sizeof(Decimator)); + float count; + LADSPA_Data last_out; + long sample_rate; + +#line 20 "decimator_1202.xml" + sample_rate = s_rate; + count = 0.0f; + last_out = 0.0f; + + plugin_data->count = count; + plugin_data->last_out = last_out; + plugin_data->sample_rate = sample_rate; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runDecimator(LADSPA_Handle instance, unsigned long sample_count) { + Decimator *plugin_data = (Decimator *)instance; + + /* Bit depth (float value) */ + const LADSPA_Data bits = *(plugin_data->bits); + + /* Sample rate (Hz) (float value) */ + const LADSPA_Data fs = *(plugin_data->fs); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + float count = plugin_data->count; + LADSPA_Data last_out = plugin_data->last_out; + long sample_rate = plugin_data->sample_rate; + +#line 26 "decimator_1202.xml" + unsigned long pos; + float step, stepr, delta, ratio; + double dummy; + + if (bits >= 31.0f || bits < 1.0f) { + step = 0.0f; + stepr = 1.0f; + } else { + step = pow(0.5f, bits - 0.999f); + stepr = 1/step; + } + + if (fs >= sample_rate) { + ratio = 1.0f; + } else { + ratio = fs/sample_rate; + } + + for (pos = 0; pos < sample_count; pos++) { + count += ratio; + + if (count >= 1.0f) { + count -= 1.0f; + delta = modf((input[pos] + (input[pos]<0?-1.0:1.0)*step*0.5) * stepr, &dummy) * step; + last_out = input[pos] - delta; + buffer_write(output[pos], last_out); + } else { + buffer_write(output[pos], last_out); + } + } + + plugin_data->last_out = last_out; + plugin_data->count = count; +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainDecimator(LADSPA_Handle instance, LADSPA_Data gain) { + ((Decimator *)instance)->run_adding_gain = gain; +} + +static void runAddingDecimator(LADSPA_Handle instance, unsigned long sample_count) { + Decimator *plugin_data = (Decimator *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Bit depth (float value) */ + const LADSPA_Data bits = *(plugin_data->bits); + + /* Sample rate (Hz) (float value) */ + const LADSPA_Data fs = *(plugin_data->fs); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + float count = plugin_data->count; + LADSPA_Data last_out = plugin_data->last_out; + long sample_rate = plugin_data->sample_rate; + +#line 26 "decimator_1202.xml" + unsigned long pos; + float step, stepr, delta, ratio; + double dummy; + + if (bits >= 31.0f || bits < 1.0f) { + step = 0.0f; + stepr = 1.0f; + } else { + step = pow(0.5f, bits - 0.999f); + stepr = 1/step; + } + + if (fs >= sample_rate) { + ratio = 1.0f; + } else { + ratio = fs/sample_rate; + } + + for (pos = 0; pos < sample_count; pos++) { + count += ratio; + + if (count >= 1.0f) { + count -= 1.0f; + delta = modf((input[pos] + (input[pos]<0?-1.0:1.0)*step*0.5) * stepr, &dummy) * step; + last_out = input[pos] - delta; + buffer_write(output[pos], last_out); + } else { + buffer_write(output[pos], last_out); + } + } + + plugin_data->last_out = last_out; + plugin_data->count = count; +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + decimatorDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (decimatorDescriptor) { + decimatorDescriptor->UniqueID = 1202; + decimatorDescriptor->Label = "decimator"; + decimatorDescriptor->Properties = + 0; + decimatorDescriptor->Name = + D_("Decimator"); + decimatorDescriptor->Maker = + "Steve Harris "; + decimatorDescriptor->Copyright = + "GPL"; + decimatorDescriptor->PortCount = 4; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(4, + sizeof(LADSPA_PortDescriptor)); + decimatorDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(4, + sizeof(LADSPA_PortRangeHint)); + decimatorDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(4, sizeof(char*)); + decimatorDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Bit depth */ + port_descriptors[DECIMATOR_BITS] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[DECIMATOR_BITS] = + D_("Bit depth"); + port_range_hints[DECIMATOR_BITS].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MAXIMUM; + port_range_hints[DECIMATOR_BITS].LowerBound = 1; + port_range_hints[DECIMATOR_BITS].UpperBound = 24; + + /* Parameters for Sample rate (Hz) */ + port_descriptors[DECIMATOR_FS] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[DECIMATOR_FS] = + D_("Sample rate (Hz)"); + port_range_hints[DECIMATOR_FS].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_SAMPLE_RATE | LADSPA_HINT_DEFAULT_MAXIMUM; + port_range_hints[DECIMATOR_FS].LowerBound = 0.001; + port_range_hints[DECIMATOR_FS].UpperBound = 1; + + /* Parameters for Input */ + port_descriptors[DECIMATOR_INPUT] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[DECIMATOR_INPUT] = + D_("Input"); + port_range_hints[DECIMATOR_INPUT].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE; + port_range_hints[DECIMATOR_INPUT].LowerBound = -1.0; + port_range_hints[DECIMATOR_INPUT].UpperBound = +1.0; + + /* Parameters for Output */ + port_descriptors[DECIMATOR_OUTPUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[DECIMATOR_OUTPUT] = + D_("Output"); + port_range_hints[DECIMATOR_OUTPUT].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE; + port_range_hints[DECIMATOR_OUTPUT].LowerBound = -1.0; + port_range_hints[DECIMATOR_OUTPUT].UpperBound = +1.0; + + decimatorDescriptor->activate = NULL; + decimatorDescriptor->cleanup = cleanupDecimator; + decimatorDescriptor->connect_port = connectPortDecimator; + decimatorDescriptor->deactivate = NULL; + decimatorDescriptor->instantiate = instantiateDecimator; + decimatorDescriptor->run = runDecimator; + decimatorDescriptor->run_adding = runAddingDecimator; + decimatorDescriptor->set_run_adding_gain = setRunAddingGainDecimator; + } +} + +void _fini() { + if (decimatorDescriptor) { + free((LADSPA_PortDescriptor *)decimatorDescriptor->PortDescriptors); + free((char **)decimatorDescriptor->PortNames); + free((LADSPA_PortRangeHint *)decimatorDescriptor->PortRangeHints); + free(decimatorDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/declip_1195.c b/plugins/ladspa_effect/swh/declip_1195.c new file mode 100644 index 000000000..3f5d5a5df --- /dev/null +++ b/plugins/ladspa_effect/swh/declip_1195.c @@ -0,0 +1,246 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + +#line 9 "declip_1195.xml" + +#define MAX_AMP 1.0f +#define CLIP 0.8f +#define CLIP_A ((MAX_AMP - CLIP) * (MAX_AMP - CLIP)) +#define CLIP_B (MAX_AMP - 2.0f * CLIP) + +#define DECLIP_INPUT 0 +#define DECLIP_OUTPUT 1 + +static LADSPA_Descriptor *declipDescriptor = NULL; + +typedef struct { + LADSPA_Data *input; + LADSPA_Data *output; + LADSPA_Data run_adding_gain; +} Declip; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return declipDescriptor; + default: + return NULL; + } +} + +static void cleanupDeclip(LADSPA_Handle instance) { + free(instance); +} + +static void connectPortDeclip( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + Declip *plugin; + + plugin = (Declip *)instance; + switch (port) { + case DECLIP_INPUT: + plugin->input = data; + break; + case DECLIP_OUTPUT: + plugin->output = data; + break; + } +} + +static LADSPA_Handle instantiateDeclip( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + Declip *plugin_data = (Declip *)malloc(sizeof(Declip)); + plugin_data->run_adding_gain = 1.0f; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runDeclip(LADSPA_Handle instance, unsigned long sample_count) { + Declip *plugin_data = (Declip *)instance; + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + +#line 23 "declip_1195.xml" + unsigned long pos; + + for (pos = 0; pos < sample_count; pos++) { + const LADSPA_Data in = input[pos]; + + if((in < CLIP) && (in > -CLIP)) { + buffer_write(output[pos], in); + } else if (in > 0.0f) { + buffer_write(output[pos], MAX_AMP - (CLIP_A / (CLIP_B + in))); + } else { + buffer_write(output[pos], -(MAX_AMP - (CLIP_A / (CLIP_B - in)))); + } + } +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainDeclip(LADSPA_Handle instance, LADSPA_Data gain) { + ((Declip *)instance)->run_adding_gain = gain; +} + +static void runAddingDeclip(LADSPA_Handle instance, unsigned long sample_count) { + Declip *plugin_data = (Declip *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + +#line 23 "declip_1195.xml" + unsigned long pos; + + for (pos = 0; pos < sample_count; pos++) { + const LADSPA_Data in = input[pos]; + + if((in < CLIP) && (in > -CLIP)) { + buffer_write(output[pos], in); + } else if (in > 0.0f) { + buffer_write(output[pos], MAX_AMP - (CLIP_A / (CLIP_B + in))); + } else { + buffer_write(output[pos], -(MAX_AMP - (CLIP_A / (CLIP_B - in)))); + } + } +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + declipDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (declipDescriptor) { + declipDescriptor->UniqueID = 1195; + declipDescriptor->Label = "declip"; + declipDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + declipDescriptor->Name = + D_("Declipper"); + declipDescriptor->Maker = + "Steve Harris "; + declipDescriptor->Copyright = + "GPL"; + declipDescriptor->PortCount = 2; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(2, + sizeof(LADSPA_PortDescriptor)); + declipDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(2, + sizeof(LADSPA_PortRangeHint)); + declipDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(2, sizeof(char*)); + declipDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Input */ + port_descriptors[DECLIP_INPUT] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[DECLIP_INPUT] = + D_("Input"); + port_range_hints[DECLIP_INPUT].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE; + port_range_hints[DECLIP_INPUT].LowerBound = -1; + port_range_hints[DECLIP_INPUT].UpperBound = +1; + + /* Parameters for Output */ + port_descriptors[DECLIP_OUTPUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[DECLIP_OUTPUT] = + D_("Output"); + port_range_hints[DECLIP_OUTPUT].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE; + port_range_hints[DECLIP_OUTPUT].LowerBound = -1; + port_range_hints[DECLIP_OUTPUT].UpperBound = +1; + + declipDescriptor->activate = NULL; + declipDescriptor->cleanup = cleanupDeclip; + declipDescriptor->connect_port = connectPortDeclip; + declipDescriptor->deactivate = NULL; + declipDescriptor->instantiate = instantiateDeclip; + declipDescriptor->run = runDeclip; + declipDescriptor->run_adding = runAddingDeclip; + declipDescriptor->set_run_adding_gain = setRunAddingGainDeclip; + } +} + +void _fini() { + if (declipDescriptor) { + free((LADSPA_PortDescriptor *)declipDescriptor->PortDescriptors); + free((char **)declipDescriptor->PortNames); + free((LADSPA_PortRangeHint *)declipDescriptor->PortRangeHints); + free(declipDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/delay_1898.c b/plugins/ladspa_effect/swh/delay_1898.c new file mode 100644 index 000000000..d886d93a3 --- /dev/null +++ b/plugins/ladspa_effect/swh/delay_1898.c @@ -0,0 +1,1150 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + +#line 10 "delay_1898.xml" + +#include "ladspa-util.h" + +#define MIN(a,b) ((a) < (b) ? (a) : (b)) +#define CALC_DELAY(delaytime) \ + (f_clamp (delaytime * sample_rate, 1.f, (float)(buffer_mask + 1))) + +#define DELAY_N_IN 0 +#define DELAY_N_OUT 1 +#define DELAY_N_MAX_DELAY 2 +#define DELAY_N_DELAY_TIME 3 +#define DELAY_L_IN 0 +#define DELAY_L_OUT 1 +#define DELAY_L_MAX_DELAY 2 +#define DELAY_L_DELAY_TIME 3 +#define DELAY_C_IN 0 +#define DELAY_C_OUT 1 +#define DELAY_C_MAX_DELAY 2 +#define DELAY_C_DELAY_TIME 3 + +static LADSPA_Descriptor *delay_nDescriptor = NULL; + +typedef struct { + LADSPA_Data *in; + LADSPA_Data *out; + LADSPA_Data *max_delay; + LADSPA_Data *delay_time; + LADSPA_Data *buffer; + unsigned int buffer_mask; + LADSPA_Data delay_samples; + LADSPA_Data last_delay_time; + unsigned int sample_rate; + long write_phase; + LADSPA_Data run_adding_gain; +} Delay_n; + +static LADSPA_Descriptor *delay_lDescriptor = NULL; + +typedef struct { + LADSPA_Data *in; + LADSPA_Data *out; + LADSPA_Data *max_delay; + LADSPA_Data *delay_time; + LADSPA_Data *buffer; + unsigned int buffer_mask; + LADSPA_Data delay_samples; + LADSPA_Data last_delay_time; + unsigned int sample_rate; + long write_phase; + LADSPA_Data run_adding_gain; +} Delay_l; + +static LADSPA_Descriptor *delay_cDescriptor = NULL; + +typedef struct { + LADSPA_Data *in; + LADSPA_Data *out; + LADSPA_Data *max_delay; + LADSPA_Data *delay_time; + LADSPA_Data *buffer; + unsigned int buffer_mask; + LADSPA_Data delay_samples; + LADSPA_Data last_delay_time; + unsigned int sample_rate; + long write_phase; + LADSPA_Data run_adding_gain; +} Delay_c; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return delay_nDescriptor; + case 1: + return delay_lDescriptor; + case 2: + return delay_cDescriptor; + default: + return NULL; + } +} + +static void activateDelay_n(LADSPA_Handle instance) { + Delay_n *plugin_data = (Delay_n *)instance; + LADSPA_Data *buffer = plugin_data->buffer; + unsigned int buffer_mask = plugin_data->buffer_mask; + LADSPA_Data delay_samples = plugin_data->delay_samples; + LADSPA_Data last_delay_time = plugin_data->last_delay_time; + unsigned int sample_rate = plugin_data->sample_rate; + long write_phase = plugin_data->write_phase; +#line 31 "delay_1898.xml" + unsigned int minsize, size; + + if (plugin_data->max_delay && *plugin_data->max_delay > 0) + minsize = sample_rate * *plugin_data->max_delay; + else if (plugin_data->delay_time) + minsize = sample_rate * *plugin_data->delay_time; + else + minsize = sample_rate; /* 1 second default */ + + size = 1; + while (size < minsize) size <<= 1; + + /* calloc sets the buffer to zero. */ + buffer = calloc(size, sizeof(LADSPA_Data)); + if (buffer) + buffer_mask = size - 1; + else + buffer_mask = 0; + write_phase = 0; + plugin_data->buffer = buffer; + plugin_data->buffer_mask = buffer_mask; + plugin_data->delay_samples = delay_samples; + plugin_data->last_delay_time = last_delay_time; + plugin_data->sample_rate = sample_rate; + plugin_data->write_phase = write_phase; + +} + +static void cleanupDelay_n(LADSPA_Handle instance) { +#line 53 "delay_1898.xml" + Delay_n *plugin_data = (Delay_n *)instance; + free(plugin_data->buffer); + free(instance); +} + +static void connectPortDelay_n( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + Delay_n *plugin; + + plugin = (Delay_n *)instance; + switch (port) { + case DELAY_N_IN: + plugin->in = data; + break; + case DELAY_N_OUT: + plugin->out = data; + break; + case DELAY_N_MAX_DELAY: + plugin->max_delay = data; + break; + case DELAY_N_DELAY_TIME: + plugin->delay_time = data; + break; + } +} + +static LADSPA_Handle instantiateDelay_n( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + Delay_n *plugin_data = (Delay_n *)malloc(sizeof(Delay_n)); + LADSPA_Data *buffer = NULL; + unsigned int buffer_mask; + LADSPA_Data delay_samples; + LADSPA_Data last_delay_time; + unsigned int sample_rate; + long write_phase; + +#line 27 "delay_1898.xml" + sample_rate = s_rate; + + plugin_data->buffer = buffer; + plugin_data->buffer_mask = buffer_mask; + plugin_data->delay_samples = delay_samples; + plugin_data->last_delay_time = last_delay_time; + plugin_data->sample_rate = sample_rate; + plugin_data->write_phase = write_phase; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runDelay_n(LADSPA_Handle instance, unsigned long sample_count) { + Delay_n *plugin_data = (Delay_n *)instance; + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const in = plugin_data->in; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const out = plugin_data->out; + + /* Max Delay (s) (float value) */ + const LADSPA_Data max_delay = *(plugin_data->max_delay); + + /* Delay Time (s) (float value) */ + const LADSPA_Data delay_time = *(plugin_data->delay_time); + LADSPA_Data * buffer = plugin_data->buffer; + unsigned int buffer_mask = plugin_data->buffer_mask; + LADSPA_Data delay_samples = plugin_data->delay_samples; + LADSPA_Data last_delay_time = plugin_data->last_delay_time; + unsigned int sample_rate = plugin_data->sample_rate; + long write_phase = plugin_data->write_phase; + +#line 57 "delay_1898.xml" + int i; + + if (write_phase == 0) { + plugin_data->last_delay_time = delay_time; + plugin_data->delay_samples = delay_samples = CALC_DELAY (delay_time); + } + + if (delay_time == last_delay_time) { + long read_phase = write_phase - (long)delay_samples; + LADSPA_Data *readptr = buffer + (read_phase & buffer_mask); + LADSPA_Data *writeptr = buffer + (write_phase & buffer_mask); + LADSPA_Data *lastptr = buffer + buffer_mask + 1; + + long remain = sample_count; + + while (remain) { + long read_space = lastptr - readptr; + long write_space = lastptr - writeptr; + long to_process = MIN (MIN (read_space, remain), write_space); + + if (to_process == 0) + return; // buffer not allocated. + + remain -= to_process; + + for (i=0; ilast_delay_time = delay_time; + plugin_data->delay_samples = delay_samples; + } + + plugin_data->write_phase = write_phase; +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainDelay_n(LADSPA_Handle instance, LADSPA_Data gain) { + ((Delay_n *)instance)->run_adding_gain = gain; +} + +static void runAddingDelay_n(LADSPA_Handle instance, unsigned long sample_count) { + Delay_n *plugin_data = (Delay_n *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const in = plugin_data->in; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const out = plugin_data->out; + + /* Max Delay (s) (float value) */ + const LADSPA_Data max_delay = *(plugin_data->max_delay); + + /* Delay Time (s) (float value) */ + const LADSPA_Data delay_time = *(plugin_data->delay_time); + LADSPA_Data * buffer = plugin_data->buffer; + unsigned int buffer_mask = plugin_data->buffer_mask; + LADSPA_Data delay_samples = plugin_data->delay_samples; + LADSPA_Data last_delay_time = plugin_data->last_delay_time; + unsigned int sample_rate = plugin_data->sample_rate; + long write_phase = plugin_data->write_phase; + +#line 57 "delay_1898.xml" + int i; + + if (write_phase == 0) { + plugin_data->last_delay_time = delay_time; + plugin_data->delay_samples = delay_samples = CALC_DELAY (delay_time); + } + + if (delay_time == last_delay_time) { + long read_phase = write_phase - (long)delay_samples; + LADSPA_Data *readptr = buffer + (read_phase & buffer_mask); + LADSPA_Data *writeptr = buffer + (write_phase & buffer_mask); + LADSPA_Data *lastptr = buffer + buffer_mask + 1; + + long remain = sample_count; + + while (remain) { + long read_space = lastptr - readptr; + long write_space = lastptr - writeptr; + long to_process = MIN (MIN (read_space, remain), write_space); + + if (to_process == 0) + return; // buffer not allocated. + + remain -= to_process; + + for (i=0; ilast_delay_time = delay_time; + plugin_data->delay_samples = delay_samples; + } + + plugin_data->write_phase = write_phase; +} + +static void activateDelay_l(LADSPA_Handle instance) { + Delay_l *plugin_data = (Delay_l *)instance; + LADSPA_Data *buffer = plugin_data->buffer; + unsigned int buffer_mask = plugin_data->buffer_mask; + LADSPA_Data delay_samples = plugin_data->delay_samples; + LADSPA_Data last_delay_time = plugin_data->last_delay_time; + unsigned int sample_rate = plugin_data->sample_rate; + long write_phase = plugin_data->write_phase; +#line 31 "delay_1898.xml" + unsigned int minsize, size; + + if (plugin_data->max_delay && *plugin_data->max_delay > 0) + minsize = sample_rate * *plugin_data->max_delay; + else if (plugin_data->delay_time) + minsize = sample_rate * *plugin_data->delay_time; + else + minsize = sample_rate; /* 1 second default */ + + size = 1; + while (size < minsize) size <<= 1; + + /* calloc sets the buffer to zero. */ + buffer = calloc(size, sizeof(LADSPA_Data)); + if (buffer) + buffer_mask = size - 1; + else + buffer_mask = 0; + write_phase = 0; + plugin_data->buffer = buffer; + plugin_data->buffer_mask = buffer_mask; + plugin_data->delay_samples = delay_samples; + plugin_data->last_delay_time = last_delay_time; + plugin_data->sample_rate = sample_rate; + plugin_data->write_phase = write_phase; + +} + +static void cleanupDelay_l(LADSPA_Handle instance) { +#line 53 "delay_1898.xml" + Delay_l *plugin_data = (Delay_l *)instance; + free(plugin_data->buffer); + free(instance); +} + +static void connectPortDelay_l( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + Delay_l *plugin; + + plugin = (Delay_l *)instance; + switch (port) { + case DELAY_L_IN: + plugin->in = data; + break; + case DELAY_L_OUT: + plugin->out = data; + break; + case DELAY_L_MAX_DELAY: + plugin->max_delay = data; + break; + case DELAY_L_DELAY_TIME: + plugin->delay_time = data; + break; + } +} + +static LADSPA_Handle instantiateDelay_l( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + Delay_l *plugin_data = (Delay_l *)malloc(sizeof(Delay_l)); + LADSPA_Data *buffer = NULL; + unsigned int buffer_mask; + LADSPA_Data delay_samples; + LADSPA_Data last_delay_time; + unsigned int sample_rate; + long write_phase; + +#line 27 "delay_1898.xml" + sample_rate = s_rate; + + plugin_data->buffer = buffer; + plugin_data->buffer_mask = buffer_mask; + plugin_data->delay_samples = delay_samples; + plugin_data->last_delay_time = last_delay_time; + plugin_data->sample_rate = sample_rate; + plugin_data->write_phase = write_phase; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runDelay_l(LADSPA_Handle instance, unsigned long sample_count) { + Delay_l *plugin_data = (Delay_l *)instance; + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const in = plugin_data->in; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const out = plugin_data->out; + + /* Max Delay (s) (float value) */ + const LADSPA_Data max_delay = *(plugin_data->max_delay); + + /* Delay Time (s) (float value) */ + const LADSPA_Data delay_time = *(plugin_data->delay_time); + LADSPA_Data * buffer = plugin_data->buffer; + unsigned int buffer_mask = plugin_data->buffer_mask; + LADSPA_Data delay_samples = plugin_data->delay_samples; + LADSPA_Data last_delay_time = plugin_data->last_delay_time; + unsigned int sample_rate = plugin_data->sample_rate; + long write_phase = plugin_data->write_phase; + +#line 57 "delay_1898.xml" + int i; + + if (write_phase == 0) { + plugin_data->last_delay_time = delay_time; + plugin_data->delay_samples = delay_samples = CALC_DELAY (delay_time); + } + + if (delay_time == last_delay_time) { + long idelay_samples = (long)delay_samples; + LADSPA_Data frac = delay_samples - idelay_samples; + + for (i=0; ilast_delay_time = delay_time; + plugin_data->delay_samples = delay_samples; + } + + plugin_data->write_phase = write_phase; +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainDelay_l(LADSPA_Handle instance, LADSPA_Data gain) { + ((Delay_l *)instance)->run_adding_gain = gain; +} + +static void runAddingDelay_l(LADSPA_Handle instance, unsigned long sample_count) { + Delay_l *plugin_data = (Delay_l *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const in = plugin_data->in; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const out = plugin_data->out; + + /* Max Delay (s) (float value) */ + const LADSPA_Data max_delay = *(plugin_data->max_delay); + + /* Delay Time (s) (float value) */ + const LADSPA_Data delay_time = *(plugin_data->delay_time); + LADSPA_Data * buffer = plugin_data->buffer; + unsigned int buffer_mask = plugin_data->buffer_mask; + LADSPA_Data delay_samples = plugin_data->delay_samples; + LADSPA_Data last_delay_time = plugin_data->last_delay_time; + unsigned int sample_rate = plugin_data->sample_rate; + long write_phase = plugin_data->write_phase; + +#line 57 "delay_1898.xml" + int i; + + if (write_phase == 0) { + plugin_data->last_delay_time = delay_time; + plugin_data->delay_samples = delay_samples = CALC_DELAY (delay_time); + } + + if (delay_time == last_delay_time) { + long idelay_samples = (long)delay_samples; + LADSPA_Data frac = delay_samples - idelay_samples; + + for (i=0; ilast_delay_time = delay_time; + plugin_data->delay_samples = delay_samples; + } + + plugin_data->write_phase = write_phase; +} + +static void activateDelay_c(LADSPA_Handle instance) { + Delay_c *plugin_data = (Delay_c *)instance; + LADSPA_Data *buffer = plugin_data->buffer; + unsigned int buffer_mask = plugin_data->buffer_mask; + LADSPA_Data delay_samples = plugin_data->delay_samples; + LADSPA_Data last_delay_time = plugin_data->last_delay_time; + unsigned int sample_rate = plugin_data->sample_rate; + long write_phase = plugin_data->write_phase; +#line 31 "delay_1898.xml" + unsigned int minsize, size; + + if (plugin_data->max_delay && *plugin_data->max_delay > 0) + minsize = sample_rate * *plugin_data->max_delay; + else if (plugin_data->delay_time) + minsize = sample_rate * *plugin_data->delay_time; + else + minsize = sample_rate; /* 1 second default */ + + size = 1; + while (size < minsize) size <<= 1; + + /* calloc sets the buffer to zero. */ + buffer = calloc(size, sizeof(LADSPA_Data)); + if (buffer) + buffer_mask = size - 1; + else + buffer_mask = 0; + write_phase = 0; + plugin_data->buffer = buffer; + plugin_data->buffer_mask = buffer_mask; + plugin_data->delay_samples = delay_samples; + plugin_data->last_delay_time = last_delay_time; + plugin_data->sample_rate = sample_rate; + plugin_data->write_phase = write_phase; + +} + +static void cleanupDelay_c(LADSPA_Handle instance) { +#line 53 "delay_1898.xml" + Delay_c *plugin_data = (Delay_c *)instance; + free(plugin_data->buffer); + free(instance); +} + +static void connectPortDelay_c( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + Delay_c *plugin; + + plugin = (Delay_c *)instance; + switch (port) { + case DELAY_C_IN: + plugin->in = data; + break; + case DELAY_C_OUT: + plugin->out = data; + break; + case DELAY_C_MAX_DELAY: + plugin->max_delay = data; + break; + case DELAY_C_DELAY_TIME: + plugin->delay_time = data; + break; + } +} + +static LADSPA_Handle instantiateDelay_c( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + Delay_c *plugin_data = (Delay_c *)malloc(sizeof(Delay_c)); + LADSPA_Data *buffer = NULL; + unsigned int buffer_mask; + LADSPA_Data delay_samples; + LADSPA_Data last_delay_time; + unsigned int sample_rate; + long write_phase; + +#line 27 "delay_1898.xml" + sample_rate = s_rate; + + plugin_data->buffer = buffer; + plugin_data->buffer_mask = buffer_mask; + plugin_data->delay_samples = delay_samples; + plugin_data->last_delay_time = last_delay_time; + plugin_data->sample_rate = sample_rate; + plugin_data->write_phase = write_phase; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runDelay_c(LADSPA_Handle instance, unsigned long sample_count) { + Delay_c *plugin_data = (Delay_c *)instance; + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const in = plugin_data->in; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const out = plugin_data->out; + + /* Max Delay (s) (float value) */ + const LADSPA_Data max_delay = *(plugin_data->max_delay); + + /* Delay Time (s) (float value) */ + const LADSPA_Data delay_time = *(plugin_data->delay_time); + LADSPA_Data * buffer = plugin_data->buffer; + unsigned int buffer_mask = plugin_data->buffer_mask; + LADSPA_Data delay_samples = plugin_data->delay_samples; + LADSPA_Data last_delay_time = plugin_data->last_delay_time; + unsigned int sample_rate = plugin_data->sample_rate; + long write_phase = plugin_data->write_phase; + +#line 57 "delay_1898.xml" + int i; + + if (write_phase == 0) { + plugin_data->last_delay_time = delay_time; + plugin_data->delay_samples = delay_samples = CALC_DELAY (delay_time); + } + + if (delay_time == last_delay_time) { + long idelay_samples = (long)delay_samples; + LADSPA_Data frac = delay_samples - idelay_samples; + + for (i=0; ilast_delay_time = delay_time; + plugin_data->delay_samples = delay_samples; + } + + plugin_data->write_phase = write_phase; +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainDelay_c(LADSPA_Handle instance, LADSPA_Data gain) { + ((Delay_c *)instance)->run_adding_gain = gain; +} + +static void runAddingDelay_c(LADSPA_Handle instance, unsigned long sample_count) { + Delay_c *plugin_data = (Delay_c *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const in = plugin_data->in; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const out = plugin_data->out; + + /* Max Delay (s) (float value) */ + const LADSPA_Data max_delay = *(plugin_data->max_delay); + + /* Delay Time (s) (float value) */ + const LADSPA_Data delay_time = *(plugin_data->delay_time); + LADSPA_Data * buffer = plugin_data->buffer; + unsigned int buffer_mask = plugin_data->buffer_mask; + LADSPA_Data delay_samples = plugin_data->delay_samples; + LADSPA_Data last_delay_time = plugin_data->last_delay_time; + unsigned int sample_rate = plugin_data->sample_rate; + long write_phase = plugin_data->write_phase; + +#line 57 "delay_1898.xml" + int i; + + if (write_phase == 0) { + plugin_data->last_delay_time = delay_time; + plugin_data->delay_samples = delay_samples = CALC_DELAY (delay_time); + } + + if (delay_time == last_delay_time) { + long idelay_samples = (long)delay_samples; + LADSPA_Data frac = delay_samples - idelay_samples; + + for (i=0; ilast_delay_time = delay_time; + plugin_data->delay_samples = delay_samples; + } + + plugin_data->write_phase = write_phase; +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + delay_nDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (delay_nDescriptor) { + delay_nDescriptor->UniqueID = 1898; + delay_nDescriptor->Label = "delay_n"; + delay_nDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + delay_nDescriptor->Name = + D_("Simple delay line, noninterpolating"); + delay_nDescriptor->Maker = + "Andy Wingo "; + delay_nDescriptor->Copyright = + "GPL"; + delay_nDescriptor->PortCount = 4; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(4, + sizeof(LADSPA_PortDescriptor)); + delay_nDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(4, + sizeof(LADSPA_PortRangeHint)); + delay_nDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(4, sizeof(char*)); + delay_nDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Input */ + port_descriptors[DELAY_N_IN] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[DELAY_N_IN] = + D_("Input"); + port_range_hints[DELAY_N_IN].HintDescriptor = 0; + + /* Parameters for Output */ + port_descriptors[DELAY_N_OUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[DELAY_N_OUT] = + D_("Output"); + port_range_hints[DELAY_N_OUT].HintDescriptor = 0; + + /* Parameters for Max Delay (s) */ + port_descriptors[DELAY_N_MAX_DELAY] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[DELAY_N_MAX_DELAY] = + D_("Max Delay (s)"); + port_range_hints[DELAY_N_MAX_DELAY].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW; + port_range_hints[DELAY_N_MAX_DELAY].LowerBound = 0; + + /* Parameters for Delay Time (s) */ + port_descriptors[DELAY_N_DELAY_TIME] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[DELAY_N_DELAY_TIME] = + D_("Delay Time (s)"); + port_range_hints[DELAY_N_DELAY_TIME].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW; + port_range_hints[DELAY_N_DELAY_TIME].LowerBound = 0; + + delay_nDescriptor->activate = activateDelay_n; + delay_nDescriptor->cleanup = cleanupDelay_n; + delay_nDescriptor->connect_port = connectPortDelay_n; + delay_nDescriptor->deactivate = NULL; + delay_nDescriptor->instantiate = instantiateDelay_n; + delay_nDescriptor->run = runDelay_n; + delay_nDescriptor->run_adding = runAddingDelay_n; + delay_nDescriptor->set_run_adding_gain = setRunAddingGainDelay_n; + } + + delay_lDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (delay_lDescriptor) { + delay_lDescriptor->UniqueID = 1899; + delay_lDescriptor->Label = "delay_l"; + delay_lDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + delay_lDescriptor->Name = + D_("Simple delay line, linear interpolation"); + delay_lDescriptor->Maker = + "Andy Wingo "; + delay_lDescriptor->Copyright = + "GPL"; + delay_lDescriptor->PortCount = 4; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(4, + sizeof(LADSPA_PortDescriptor)); + delay_lDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(4, + sizeof(LADSPA_PortRangeHint)); + delay_lDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(4, sizeof(char*)); + delay_lDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Input */ + port_descriptors[DELAY_L_IN] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[DELAY_L_IN] = + D_("Input"); + port_range_hints[DELAY_L_IN].HintDescriptor = 0; + + /* Parameters for Output */ + port_descriptors[DELAY_L_OUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[DELAY_L_OUT] = + D_("Output"); + port_range_hints[DELAY_L_OUT].HintDescriptor = 0; + + /* Parameters for Max Delay (s) */ + port_descriptors[DELAY_L_MAX_DELAY] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[DELAY_L_MAX_DELAY] = + D_("Max Delay (s)"); + port_range_hints[DELAY_L_MAX_DELAY].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW; + port_range_hints[DELAY_L_MAX_DELAY].LowerBound = 0; + + /* Parameters for Delay Time (s) */ + port_descriptors[DELAY_L_DELAY_TIME] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[DELAY_L_DELAY_TIME] = + D_("Delay Time (s)"); + port_range_hints[DELAY_L_DELAY_TIME].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW; + port_range_hints[DELAY_L_DELAY_TIME].LowerBound = 0; + + delay_lDescriptor->activate = activateDelay_l; + delay_lDescriptor->cleanup = cleanupDelay_l; + delay_lDescriptor->connect_port = connectPortDelay_l; + delay_lDescriptor->deactivate = NULL; + delay_lDescriptor->instantiate = instantiateDelay_l; + delay_lDescriptor->run = runDelay_l; + delay_lDescriptor->run_adding = runAddingDelay_l; + delay_lDescriptor->set_run_adding_gain = setRunAddingGainDelay_l; + } + + delay_cDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (delay_cDescriptor) { + delay_cDescriptor->UniqueID = 1900; + delay_cDescriptor->Label = "delay_c"; + delay_cDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + delay_cDescriptor->Name = + D_("Simple delay line, cubic spline interpolation"); + delay_cDescriptor->Maker = + "Andy Wingo "; + delay_cDescriptor->Copyright = + "GPL"; + delay_cDescriptor->PortCount = 4; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(4, + sizeof(LADSPA_PortDescriptor)); + delay_cDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(4, + sizeof(LADSPA_PortRangeHint)); + delay_cDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(4, sizeof(char*)); + delay_cDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Input */ + port_descriptors[DELAY_C_IN] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[DELAY_C_IN] = + D_("Input"); + port_range_hints[DELAY_C_IN].HintDescriptor = 0; + + /* Parameters for Output */ + port_descriptors[DELAY_C_OUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[DELAY_C_OUT] = + D_("Output"); + port_range_hints[DELAY_C_OUT].HintDescriptor = 0; + + /* Parameters for Max Delay (s) */ + port_descriptors[DELAY_C_MAX_DELAY] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[DELAY_C_MAX_DELAY] = + D_("Max Delay (s)"); + port_range_hints[DELAY_C_MAX_DELAY].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW; + port_range_hints[DELAY_C_MAX_DELAY].LowerBound = 0; + + /* Parameters for Delay Time (s) */ + port_descriptors[DELAY_C_DELAY_TIME] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[DELAY_C_DELAY_TIME] = + D_("Delay Time (s)"); + port_range_hints[DELAY_C_DELAY_TIME].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW; + port_range_hints[DELAY_C_DELAY_TIME].LowerBound = 0; + + delay_cDescriptor->activate = activateDelay_c; + delay_cDescriptor->cleanup = cleanupDelay_c; + delay_cDescriptor->connect_port = connectPortDelay_c; + delay_cDescriptor->deactivate = NULL; + delay_cDescriptor->instantiate = instantiateDelay_c; + delay_cDescriptor->run = runDelay_c; + delay_cDescriptor->run_adding = runAddingDelay_c; + delay_cDescriptor->set_run_adding_gain = setRunAddingGainDelay_c; + } +} + +void _fini() { + if (delay_nDescriptor) { + free((LADSPA_PortDescriptor *)delay_nDescriptor->PortDescriptors); + free((char **)delay_nDescriptor->PortNames); + free((LADSPA_PortRangeHint *)delay_nDescriptor->PortRangeHints); + free(delay_nDescriptor); + } + if (delay_lDescriptor) { + free((LADSPA_PortDescriptor *)delay_lDescriptor->PortDescriptors); + free((char **)delay_lDescriptor->PortNames); + free((LADSPA_PortRangeHint *)delay_lDescriptor->PortRangeHints); + free(delay_lDescriptor); + } + if (delay_cDescriptor) { + free((LADSPA_PortDescriptor *)delay_cDescriptor->PortDescriptors); + free((char **)delay_cDescriptor->PortNames); + free((LADSPA_PortRangeHint *)delay_cDescriptor->PortRangeHints); + free(delay_cDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/delayorama_1402.c b/plugins/ladspa_effect/swh/delayorama_1402.c new file mode 100644 index 000000000..3949b0643 --- /dev/null +++ b/plugins/ladspa_effect/swh/delayorama_1402.c @@ -0,0 +1,858 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + +#line 9 "delayorama_1402.xml" + +#include + +#define N_TAPS 128 + +typedef struct { + unsigned int delay; + float gain; +} tap; + +#define DELAYORAMA_SEED 0 +#define DELAYORAMA_GAIN 1 +#define DELAYORAMA_FEEDBACK_PC 2 +#define DELAYORAMA_TAP_COUNT 3 +#define DELAYORAMA_FIRST_DELAY 4 +#define DELAYORAMA_DELAY_RANGE 5 +#define DELAYORAMA_DELAY_SCALE 6 +#define DELAYORAMA_DELAY_RAND_PC 7 +#define DELAYORAMA_GAIN_SCALE 8 +#define DELAYORAMA_GAIN_RAND_PC 9 +#define DELAYORAMA_WET 10 +#define DELAYORAMA_INPUT 11 +#define DELAYORAMA_OUTPUT 12 + +static LADSPA_Descriptor *delayoramaDescriptor = NULL; + +typedef struct { + LADSPA_Data *seed; + LADSPA_Data *gain; + LADSPA_Data *feedback_pc; + LADSPA_Data *tap_count; + LADSPA_Data *first_delay; + LADSPA_Data *delay_range; + LADSPA_Data *delay_scale; + LADSPA_Data *delay_rand_pc; + LADSPA_Data *gain_scale; + LADSPA_Data *gain_rand_pc; + LADSPA_Data *wet; + LADSPA_Data *input; + LADSPA_Data *output; + unsigned int active_set; + LADSPA_Data *buffer; + unsigned long buffer_pos; + unsigned int buffer_size; + float last_a_rand; + float last_ampsc; + float last_d_rand; + float last_delaysc; + unsigned int last_ntaps; + LADSPA_Data last_out; + float last_range; + float last_seed; + float last_start; + unsigned int next_set; + unsigned int sample_rate; + tap ** taps; + LADSPA_Data run_adding_gain; +} Delayorama; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return delayoramaDescriptor; + default: + return NULL; + } +} + +static void activateDelayorama(LADSPA_Handle instance) { + Delayorama *plugin_data = (Delayorama *)instance; + unsigned int active_set = plugin_data->active_set; + LADSPA_Data *buffer = plugin_data->buffer; + unsigned long buffer_pos = plugin_data->buffer_pos; + unsigned int buffer_size = plugin_data->buffer_size; + float last_a_rand = plugin_data->last_a_rand; + float last_ampsc = plugin_data->last_ampsc; + float last_d_rand = plugin_data->last_d_rand; + float last_delaysc = plugin_data->last_delaysc; + unsigned int last_ntaps = plugin_data->last_ntaps; + LADSPA_Data last_out = plugin_data->last_out; + float last_range = plugin_data->last_range; + float last_seed = plugin_data->last_seed; + float last_start = plugin_data->last_start; + unsigned int next_set = plugin_data->next_set; + unsigned int sample_rate = plugin_data->sample_rate; + tap **taps = plugin_data->taps; +#line 52 "delayorama_1402.xml" + memset(buffer, 0, buffer_size * sizeof(LADSPA_Data)); + + last_out = 0.0f; + last_ampsc = 0.0f; + last_delaysc = 0.0f; + last_start = 0; + last_range = 0; + last_ntaps = 0; + last_seed = 0; + last_a_rand = 0; + last_d_rand = 0; + plugin_data->active_set = active_set; + plugin_data->buffer = buffer; + plugin_data->buffer_pos = buffer_pos; + plugin_data->buffer_size = buffer_size; + plugin_data->last_a_rand = last_a_rand; + plugin_data->last_ampsc = last_ampsc; + plugin_data->last_d_rand = last_d_rand; + plugin_data->last_delaysc = last_delaysc; + plugin_data->last_ntaps = last_ntaps; + plugin_data->last_out = last_out; + plugin_data->last_range = last_range; + plugin_data->last_seed = last_seed; + plugin_data->last_start = last_start; + plugin_data->next_set = next_set; + plugin_data->sample_rate = sample_rate; + plugin_data->taps = taps; + +} + +static void cleanupDelayorama(LADSPA_Handle instance) { +#line 66 "delayorama_1402.xml" + Delayorama *plugin_data = (Delayorama *)instance; + free(plugin_data->taps[0]); + free(plugin_data->taps[1]); + free(plugin_data->taps); + free(plugin_data->buffer); + free(instance); +} + +static void connectPortDelayorama( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + Delayorama *plugin; + + plugin = (Delayorama *)instance; + switch (port) { + case DELAYORAMA_SEED: + plugin->seed = data; + break; + case DELAYORAMA_GAIN: + plugin->gain = data; + break; + case DELAYORAMA_FEEDBACK_PC: + plugin->feedback_pc = data; + break; + case DELAYORAMA_TAP_COUNT: + plugin->tap_count = data; + break; + case DELAYORAMA_FIRST_DELAY: + plugin->first_delay = data; + break; + case DELAYORAMA_DELAY_RANGE: + plugin->delay_range = data; + break; + case DELAYORAMA_DELAY_SCALE: + plugin->delay_scale = data; + break; + case DELAYORAMA_DELAY_RAND_PC: + plugin->delay_rand_pc = data; + break; + case DELAYORAMA_GAIN_SCALE: + plugin->gain_scale = data; + break; + case DELAYORAMA_GAIN_RAND_PC: + plugin->gain_rand_pc = data; + break; + case DELAYORAMA_WET: + plugin->wet = data; + break; + case DELAYORAMA_INPUT: + plugin->input = data; + break; + case DELAYORAMA_OUTPUT: + plugin->output = data; + break; + } +} + +static LADSPA_Handle instantiateDelayorama( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + Delayorama *plugin_data = (Delayorama *)malloc(sizeof(Delayorama)); + unsigned int active_set; + LADSPA_Data *buffer = NULL; + unsigned long buffer_pos; + unsigned int buffer_size; + float last_a_rand; + float last_ampsc; + float last_d_rand; + float last_delaysc; + unsigned int last_ntaps; + LADSPA_Data last_out; + float last_range; + float last_seed; + float last_start; + unsigned int next_set; + unsigned int sample_rate; + tap **taps = NULL; + +#line 25 "delayorama_1402.xml" + sample_rate = s_rate; + + buffer_pos = 0; + + buffer_size = 6.0f * sample_rate; + + taps = malloc(2 * sizeof(tap *)); + taps[0] = calloc(N_TAPS, sizeof(tap)); + taps[1] = calloc(N_TAPS, sizeof(tap)); + active_set = 0; + next_set = 1; + + buffer = calloc(buffer_size, sizeof(LADSPA_Data)); + + last_out = 0.0f; + + last_ampsc = 0.0f; + last_delaysc = 0.0f; + last_start = 0; + last_range = 0; + last_ntaps = 0; + last_seed = 0; + last_a_rand = 0; + last_d_rand = 0; + + plugin_data->active_set = active_set; + plugin_data->buffer = buffer; + plugin_data->buffer_pos = buffer_pos; + plugin_data->buffer_size = buffer_size; + plugin_data->last_a_rand = last_a_rand; + plugin_data->last_ampsc = last_ampsc; + plugin_data->last_d_rand = last_d_rand; + plugin_data->last_delaysc = last_delaysc; + plugin_data->last_ntaps = last_ntaps; + plugin_data->last_out = last_out; + plugin_data->last_range = last_range; + plugin_data->last_seed = last_seed; + plugin_data->last_start = last_start; + plugin_data->next_set = next_set; + plugin_data->sample_rate = sample_rate; + plugin_data->taps = taps; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runDelayorama(LADSPA_Handle instance, unsigned long sample_count) { + Delayorama *plugin_data = (Delayorama *)instance; + + /* Random seed (float value) */ + const LADSPA_Data seed = *(plugin_data->seed); + + /* Input gain (dB) (float value) */ + const LADSPA_Data gain = *(plugin_data->gain); + + /* Feedback (%) (float value) */ + const LADSPA_Data feedback_pc = *(plugin_data->feedback_pc); + + /* Number of taps (float value) */ + const LADSPA_Data tap_count = *(plugin_data->tap_count); + + /* First delay (s) (float value) */ + const LADSPA_Data first_delay = *(plugin_data->first_delay); + + /* Delay range (s) (float value) */ + const LADSPA_Data delay_range = *(plugin_data->delay_range); + + /* Delay change (float value) */ + const LADSPA_Data delay_scale = *(plugin_data->delay_scale); + + /* Delay random (%) (float value) */ + const LADSPA_Data delay_rand_pc = *(plugin_data->delay_rand_pc); + + /* Amplitude change (float value) */ + const LADSPA_Data gain_scale = *(plugin_data->gain_scale); + + /* Amplitude random (%) (float value) */ + const LADSPA_Data gain_rand_pc = *(plugin_data->gain_rand_pc); + + /* Dry/wet mix (float value) */ + const LADSPA_Data wet = *(plugin_data->wet); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + unsigned int active_set = plugin_data->active_set; + LADSPA_Data * buffer = plugin_data->buffer; + unsigned long buffer_pos = plugin_data->buffer_pos; + unsigned int buffer_size = plugin_data->buffer_size; + float last_a_rand = plugin_data->last_a_rand; + float last_ampsc = plugin_data->last_ampsc; + float last_d_rand = plugin_data->last_d_rand; + float last_delaysc = plugin_data->last_delaysc; + unsigned int last_ntaps = plugin_data->last_ntaps; + LADSPA_Data last_out = plugin_data->last_out; + float last_range = plugin_data->last_range; + float last_seed = plugin_data->last_seed; + float last_start = plugin_data->last_start; + unsigned int next_set = plugin_data->next_set; + unsigned int sample_rate = plugin_data->sample_rate; + tap ** taps = plugin_data->taps; + +#line 73 "delayorama_1402.xml" + unsigned long pos; + float coef = DB_CO(gain); + unsigned int i; + unsigned int recalc = 0; + unsigned int ntaps = LIMIT(f_round(tap_count), 2, N_TAPS); + float range = f_clamp(delay_range * sample_rate, 0.0f, + (float)(buffer_size-1)); + LADSPA_Data out; + float xfade = 0.0f; + + const float feedback = feedback_pc * 0.01f; + const float gain_rand = gain_rand_pc * 0.01f; + const float delay_rand = delay_rand_pc * 0.01f; + + + if (ntaps != last_ntaps) { + recalc = 1; + plugin_data->last_ntaps = ntaps; + } + if (first_delay != last_start) { + recalc = 1; + plugin_data->last_start = first_delay; + } + if (range != last_range) { + recalc = 1; + plugin_data->last_range = range; + } + if (delay_scale != last_delaysc) { + recalc = 1; + plugin_data->last_delaysc = delay_scale; + } + if (gain_scale != last_ampsc) { + recalc = 1; + plugin_data->last_ampsc = gain_scale; + } + if (seed != last_seed) { + recalc = 1; + plugin_data->last_seed = seed; + } + if (gain_rand != last_a_rand) { + recalc = 1; + plugin_data->last_a_rand = gain_rand; + } + if (delay_rand != last_d_rand) { + recalc = 1; + plugin_data->last_d_rand = delay_rand; + } + + if (recalc) { + float delay_base = first_delay * sample_rate; + float delay_fix; + float gain, delay, delay_sum; + float d_rand, g_rand; + + srand(f_round(seed)); + if (delay_base + range > buffer_size-1) { + delay_base = buffer_size - 1 - range; + } + + if (gain_scale <= 1.0f) { + gain = 1.0f; + } else { + gain = 1.0f / pow(gain_scale, ntaps-1); + } + + if (delay_scale == 1.0f) { + delay_fix = range / (ntaps - 1); + } else { + delay_fix = range * (delay_scale - 1.0f) / (pow(delay_scale, ntaps - 1) - 1.0f); + } + delay = 1.0f; + delay_sum = 0.0f; + + for (i=0; i= buffer_size) { + buffer_pos = 0; + } + } + + if (recalc) { + plugin_data->active_set = next_set; + plugin_data->next_set = active_set; + } + + plugin_data->buffer_pos = buffer_pos; + plugin_data->last_out = out; +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainDelayorama(LADSPA_Handle instance, LADSPA_Data gain) { + ((Delayorama *)instance)->run_adding_gain = gain; +} + +static void runAddingDelayorama(LADSPA_Handle instance, unsigned long sample_count) { + Delayorama *plugin_data = (Delayorama *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Random seed (float value) */ + const LADSPA_Data seed = *(plugin_data->seed); + + /* Input gain (dB) (float value) */ + const LADSPA_Data gain = *(plugin_data->gain); + + /* Feedback (%) (float value) */ + const LADSPA_Data feedback_pc = *(plugin_data->feedback_pc); + + /* Number of taps (float value) */ + const LADSPA_Data tap_count = *(plugin_data->tap_count); + + /* First delay (s) (float value) */ + const LADSPA_Data first_delay = *(plugin_data->first_delay); + + /* Delay range (s) (float value) */ + const LADSPA_Data delay_range = *(plugin_data->delay_range); + + /* Delay change (float value) */ + const LADSPA_Data delay_scale = *(plugin_data->delay_scale); + + /* Delay random (%) (float value) */ + const LADSPA_Data delay_rand_pc = *(plugin_data->delay_rand_pc); + + /* Amplitude change (float value) */ + const LADSPA_Data gain_scale = *(plugin_data->gain_scale); + + /* Amplitude random (%) (float value) */ + const LADSPA_Data gain_rand_pc = *(plugin_data->gain_rand_pc); + + /* Dry/wet mix (float value) */ + const LADSPA_Data wet = *(plugin_data->wet); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + unsigned int active_set = plugin_data->active_set; + LADSPA_Data * buffer = plugin_data->buffer; + unsigned long buffer_pos = plugin_data->buffer_pos; + unsigned int buffer_size = plugin_data->buffer_size; + float last_a_rand = plugin_data->last_a_rand; + float last_ampsc = plugin_data->last_ampsc; + float last_d_rand = plugin_data->last_d_rand; + float last_delaysc = plugin_data->last_delaysc; + unsigned int last_ntaps = plugin_data->last_ntaps; + LADSPA_Data last_out = plugin_data->last_out; + float last_range = plugin_data->last_range; + float last_seed = plugin_data->last_seed; + float last_start = plugin_data->last_start; + unsigned int next_set = plugin_data->next_set; + unsigned int sample_rate = plugin_data->sample_rate; + tap ** taps = plugin_data->taps; + +#line 73 "delayorama_1402.xml" + unsigned long pos; + float coef = DB_CO(gain); + unsigned int i; + unsigned int recalc = 0; + unsigned int ntaps = LIMIT(f_round(tap_count), 2, N_TAPS); + float range = f_clamp(delay_range * sample_rate, 0.0f, + (float)(buffer_size-1)); + LADSPA_Data out; + float xfade = 0.0f; + + const float feedback = feedback_pc * 0.01f; + const float gain_rand = gain_rand_pc * 0.01f; + const float delay_rand = delay_rand_pc * 0.01f; + + + if (ntaps != last_ntaps) { + recalc = 1; + plugin_data->last_ntaps = ntaps; + } + if (first_delay != last_start) { + recalc = 1; + plugin_data->last_start = first_delay; + } + if (range != last_range) { + recalc = 1; + plugin_data->last_range = range; + } + if (delay_scale != last_delaysc) { + recalc = 1; + plugin_data->last_delaysc = delay_scale; + } + if (gain_scale != last_ampsc) { + recalc = 1; + plugin_data->last_ampsc = gain_scale; + } + if (seed != last_seed) { + recalc = 1; + plugin_data->last_seed = seed; + } + if (gain_rand != last_a_rand) { + recalc = 1; + plugin_data->last_a_rand = gain_rand; + } + if (delay_rand != last_d_rand) { + recalc = 1; + plugin_data->last_d_rand = delay_rand; + } + + if (recalc) { + float delay_base = first_delay * sample_rate; + float delay_fix; + float gain, delay, delay_sum; + float d_rand, g_rand; + + srand(f_round(seed)); + if (delay_base + range > buffer_size-1) { + delay_base = buffer_size - 1 - range; + } + + if (gain_scale <= 1.0f) { + gain = 1.0f; + } else { + gain = 1.0f / pow(gain_scale, ntaps-1); + } + + if (delay_scale == 1.0f) { + delay_fix = range / (ntaps - 1); + } else { + delay_fix = range * (delay_scale - 1.0f) / (pow(delay_scale, ntaps - 1) - 1.0f); + } + delay = 1.0f; + delay_sum = 0.0f; + + for (i=0; i= buffer_size) { + buffer_pos = 0; + } + } + + if (recalc) { + plugin_data->active_set = next_set; + plugin_data->next_set = active_set; + } + + plugin_data->buffer_pos = buffer_pos; + plugin_data->last_out = out; +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + delayoramaDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (delayoramaDescriptor) { + delayoramaDescriptor->UniqueID = 1402; + delayoramaDescriptor->Label = "delayorama"; + delayoramaDescriptor->Properties = + 0; + delayoramaDescriptor->Name = + D_("Delayorama"); + delayoramaDescriptor->Maker = + "Steve Harris "; + delayoramaDescriptor->Copyright = + "GPL"; + delayoramaDescriptor->PortCount = 13; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(13, + sizeof(LADSPA_PortDescriptor)); + delayoramaDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(13, + sizeof(LADSPA_PortRangeHint)); + delayoramaDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(13, sizeof(char*)); + delayoramaDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Random seed */ + port_descriptors[DELAYORAMA_SEED] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[DELAYORAMA_SEED] = + D_("Random seed"); + port_range_hints[DELAYORAMA_SEED].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_INTEGER | LADSPA_HINT_DEFAULT_0; + port_range_hints[DELAYORAMA_SEED].LowerBound = 0; + port_range_hints[DELAYORAMA_SEED].UpperBound = 1000; + + /* Parameters for Input gain (dB) */ + port_descriptors[DELAYORAMA_GAIN] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[DELAYORAMA_GAIN] = + D_("Input gain (dB)"); + port_range_hints[DELAYORAMA_GAIN].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[DELAYORAMA_GAIN].LowerBound = -96; + port_range_hints[DELAYORAMA_GAIN].UpperBound = +24; + + /* Parameters for Feedback (%) */ + port_descriptors[DELAYORAMA_FEEDBACK_PC] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[DELAYORAMA_FEEDBACK_PC] = + D_("Feedback (%)"); + port_range_hints[DELAYORAMA_FEEDBACK_PC].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[DELAYORAMA_FEEDBACK_PC].LowerBound = 0; + port_range_hints[DELAYORAMA_FEEDBACK_PC].UpperBound = 100; + + /* Parameters for Number of taps */ + port_descriptors[DELAYORAMA_TAP_COUNT] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[DELAYORAMA_TAP_COUNT] = + D_("Number of taps"); + port_range_hints[DELAYORAMA_TAP_COUNT].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_INTEGER | LADSPA_HINT_DEFAULT_MINIMUM; + port_range_hints[DELAYORAMA_TAP_COUNT].LowerBound = 2; + port_range_hints[DELAYORAMA_TAP_COUNT].UpperBound = N_TAPS; + + /* Parameters for First delay (s) */ + port_descriptors[DELAYORAMA_FIRST_DELAY] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[DELAYORAMA_FIRST_DELAY] = + D_("First delay (s)"); + port_range_hints[DELAYORAMA_FIRST_DELAY].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[DELAYORAMA_FIRST_DELAY].LowerBound = 0; + port_range_hints[DELAYORAMA_FIRST_DELAY].UpperBound = 5; + + /* Parameters for Delay range (s) */ + port_descriptors[DELAYORAMA_DELAY_RANGE] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[DELAYORAMA_DELAY_RANGE] = + D_("Delay range (s)"); + port_range_hints[DELAYORAMA_DELAY_RANGE].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MAXIMUM; + port_range_hints[DELAYORAMA_DELAY_RANGE].LowerBound = 0.0001; + port_range_hints[DELAYORAMA_DELAY_RANGE].UpperBound = 6; + + /* Parameters for Delay change */ + port_descriptors[DELAYORAMA_DELAY_SCALE] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[DELAYORAMA_DELAY_SCALE] = + D_("Delay change"); + port_range_hints[DELAYORAMA_DELAY_SCALE].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_1; + port_range_hints[DELAYORAMA_DELAY_SCALE].LowerBound = 0.2; + port_range_hints[DELAYORAMA_DELAY_SCALE].UpperBound = 5; + + /* Parameters for Delay random (%) */ + port_descriptors[DELAYORAMA_DELAY_RAND_PC] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[DELAYORAMA_DELAY_RAND_PC] = + D_("Delay random (%)"); + port_range_hints[DELAYORAMA_DELAY_RAND_PC].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[DELAYORAMA_DELAY_RAND_PC].LowerBound = 0; + port_range_hints[DELAYORAMA_DELAY_RAND_PC].UpperBound = 100; + + /* Parameters for Amplitude change */ + port_descriptors[DELAYORAMA_GAIN_SCALE] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[DELAYORAMA_GAIN_SCALE] = + D_("Amplitude change"); + port_range_hints[DELAYORAMA_GAIN_SCALE].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_1; + port_range_hints[DELAYORAMA_GAIN_SCALE].LowerBound = 0.2; + port_range_hints[DELAYORAMA_GAIN_SCALE].UpperBound = 5; + + /* Parameters for Amplitude random (%) */ + port_descriptors[DELAYORAMA_GAIN_RAND_PC] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[DELAYORAMA_GAIN_RAND_PC] = + D_("Amplitude random (%)"); + port_range_hints[DELAYORAMA_GAIN_RAND_PC].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[DELAYORAMA_GAIN_RAND_PC].LowerBound = 0; + port_range_hints[DELAYORAMA_GAIN_RAND_PC].UpperBound = 100; + + /* Parameters for Dry/wet mix */ + port_descriptors[DELAYORAMA_WET] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[DELAYORAMA_WET] = + D_("Dry/wet mix"); + port_range_hints[DELAYORAMA_WET].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_1; + port_range_hints[DELAYORAMA_WET].LowerBound = 0; + port_range_hints[DELAYORAMA_WET].UpperBound = 1; + + /* Parameters for Input */ + port_descriptors[DELAYORAMA_INPUT] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[DELAYORAMA_INPUT] = + D_("Input"); + port_range_hints[DELAYORAMA_INPUT].HintDescriptor = 0; + + /* Parameters for Output */ + port_descriptors[DELAYORAMA_OUTPUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[DELAYORAMA_OUTPUT] = + D_("Output"); + port_range_hints[DELAYORAMA_OUTPUT].HintDescriptor = 0; + + delayoramaDescriptor->activate = activateDelayorama; + delayoramaDescriptor->cleanup = cleanupDelayorama; + delayoramaDescriptor->connect_port = connectPortDelayorama; + delayoramaDescriptor->deactivate = NULL; + delayoramaDescriptor->instantiate = instantiateDelayorama; + delayoramaDescriptor->run = runDelayorama; + delayoramaDescriptor->run_adding = runAddingDelayorama; + delayoramaDescriptor->set_run_adding_gain = setRunAddingGainDelayorama; + } +} + +void _fini() { + if (delayoramaDescriptor) { + free((LADSPA_PortDescriptor *)delayoramaDescriptor->PortDescriptors); + free((char **)delayoramaDescriptor->PortNames); + free((LADSPA_PortRangeHint *)delayoramaDescriptor->PortRangeHints); + free(delayoramaDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/diode_1185.c b/plugins/ladspa_effect/swh/diode_1185.c new file mode 100644 index 000000000..cd488f199 --- /dev/null +++ b/plugins/ladspa_effect/swh/diode_1185.c @@ -0,0 +1,275 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + + +#define DIODE_MODE 0 +#define DIODE_INPUT 1 +#define DIODE_OUTPUT 2 + +static LADSPA_Descriptor *diodeDescriptor = NULL; + +typedef struct { + LADSPA_Data *mode; + LADSPA_Data *input; + LADSPA_Data *output; + LADSPA_Data run_adding_gain; +} Diode; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return diodeDescriptor; + default: + return NULL; + } +} + +static void cleanupDiode(LADSPA_Handle instance) { + free(instance); +} + +static void connectPortDiode( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + Diode *plugin; + + plugin = (Diode *)instance; + switch (port) { + case DIODE_MODE: + plugin->mode = data; + break; + case DIODE_INPUT: + plugin->input = data; + break; + case DIODE_OUTPUT: + plugin->output = data; + break; + } +} + +static LADSPA_Handle instantiateDiode( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + Diode *plugin_data = (Diode *)malloc(sizeof(Diode)); + plugin_data->run_adding_gain = 1.0f; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runDiode(LADSPA_Handle instance, unsigned long sample_count) { + Diode *plugin_data = (Diode *)instance; + + /* Mode (0 for none, 1 for half wave, 2 for full wave) (float value) */ + const LADSPA_Data mode = *(plugin_data->mode); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + +#line 17 "diode_1185.xml" + unsigned long pos; + + if (mode >= 0.0f && mode < 1.0f) { + for (pos = 0; pos < sample_count; pos++) { + buffer_write(output[pos], ((1.0f-mode) * input[pos]) + + (mode * (input[pos] > 0.0f ? input[pos] : 0.0f))); + } + } else if (mode >= 1.0f && mode < 2.0f) { + float fac = mode - 1.0f; + for (pos = 0; pos < sample_count; pos++) { + buffer_write(output[pos], ((1.0f-fac) * (input[pos] > 0 ? + input[pos] : 0.0)) + (fac * fabs(input[pos]))); + } + } else if (mode >= 2) { + float fac = mode < 3 ? mode - 2 : 1.0; + for (pos = 0; pos < sample_count; pos++) { + buffer_write(output[pos], (1.0-fac) * fabs(input[pos])); + } + } else { + for (pos = 0; pos < sample_count; pos++) { + buffer_write(output[pos], input[pos]); + } + } +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainDiode(LADSPA_Handle instance, LADSPA_Data gain) { + ((Diode *)instance)->run_adding_gain = gain; +} + +static void runAddingDiode(LADSPA_Handle instance, unsigned long sample_count) { + Diode *plugin_data = (Diode *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Mode (0 for none, 1 for half wave, 2 for full wave) (float value) */ + const LADSPA_Data mode = *(plugin_data->mode); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + +#line 17 "diode_1185.xml" + unsigned long pos; + + if (mode >= 0.0f && mode < 1.0f) { + for (pos = 0; pos < sample_count; pos++) { + buffer_write(output[pos], ((1.0f-mode) * input[pos]) + + (mode * (input[pos] > 0.0f ? input[pos] : 0.0f))); + } + } else if (mode >= 1.0f && mode < 2.0f) { + float fac = mode - 1.0f; + for (pos = 0; pos < sample_count; pos++) { + buffer_write(output[pos], ((1.0f-fac) * (input[pos] > 0 ? + input[pos] : 0.0)) + (fac * fabs(input[pos]))); + } + } else if (mode >= 2) { + float fac = mode < 3 ? mode - 2 : 1.0; + for (pos = 0; pos < sample_count; pos++) { + buffer_write(output[pos], (1.0-fac) * fabs(input[pos])); + } + } else { + for (pos = 0; pos < sample_count; pos++) { + buffer_write(output[pos], input[pos]); + } + } +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + diodeDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (diodeDescriptor) { + diodeDescriptor->UniqueID = 1185; + diodeDescriptor->Label = "diode"; + diodeDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + diodeDescriptor->Name = + D_("Diode Processor"); + diodeDescriptor->Maker = + "Steve Harris "; + diodeDescriptor->Copyright = + "GPL"; + diodeDescriptor->PortCount = 3; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(3, + sizeof(LADSPA_PortDescriptor)); + diodeDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(3, + sizeof(LADSPA_PortRangeHint)); + diodeDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(3, sizeof(char*)); + diodeDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Mode (0 for none, 1 for half wave, 2 for full wave) */ + port_descriptors[DIODE_MODE] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[DIODE_MODE] = + D_("Mode (0 for none, 1 for half wave, 2 for full wave)"); + port_range_hints[DIODE_MODE].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[DIODE_MODE].LowerBound = 0; + port_range_hints[DIODE_MODE].UpperBound = 3; + + /* Parameters for Input */ + port_descriptors[DIODE_INPUT] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[DIODE_INPUT] = + D_("Input"); + port_range_hints[DIODE_INPUT].HintDescriptor = 0; + + /* Parameters for Output */ + port_descriptors[DIODE_OUTPUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[DIODE_OUTPUT] = + D_("Output"); + port_range_hints[DIODE_OUTPUT].HintDescriptor = 0; + + diodeDescriptor->activate = NULL; + diodeDescriptor->cleanup = cleanupDiode; + diodeDescriptor->connect_port = connectPortDiode; + diodeDescriptor->deactivate = NULL; + diodeDescriptor->instantiate = instantiateDiode; + diodeDescriptor->run = runDiode; + diodeDescriptor->run_adding = runAddingDiode; + diodeDescriptor->set_run_adding_gain = setRunAddingGainDiode; + } +} + +void _fini() { + if (diodeDescriptor) { + free((LADSPA_PortDescriptor *)diodeDescriptor->PortDescriptors); + free((char **)diodeDescriptor->PortNames); + free((LADSPA_PortRangeHint *)diodeDescriptor->PortRangeHints); + free(diodeDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/divider_1186.c b/plugins/ladspa_effect/swh/divider_1186.c new file mode 100644 index 000000000..4dbd7310b --- /dev/null +++ b/plugins/ladspa_effect/swh/divider_1186.c @@ -0,0 +1,342 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + + +#define DIVIDER_DENOMINATOR 0 +#define DIVIDER_INPUT 1 +#define DIVIDER_OUTPUT 2 + +static LADSPA_Descriptor *dividerDescriptor = NULL; + +typedef struct { + LADSPA_Data *denominator; + LADSPA_Data *input; + LADSPA_Data *output; + LADSPA_Data amp; + float count; + LADSPA_Data lamp; + LADSPA_Data last; + LADSPA_Data out; + int zeroxs; + LADSPA_Data run_adding_gain; +} Divider; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return dividerDescriptor; + default: + return NULL; + } +} + +static void cleanupDivider(LADSPA_Handle instance) { + free(instance); +} + +static void connectPortDivider( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + Divider *plugin; + + plugin = (Divider *)instance; + switch (port) { + case DIVIDER_DENOMINATOR: + plugin->denominator = data; + break; + case DIVIDER_INPUT: + plugin->input = data; + break; + case DIVIDER_OUTPUT: + plugin->output = data; + break; + } +} + +static LADSPA_Handle instantiateDivider( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + Divider *plugin_data = (Divider *)malloc(sizeof(Divider)); + LADSPA_Data amp; + float count; + LADSPA_Data lamp; + LADSPA_Data last; + LADSPA_Data out; + int zeroxs; + +#line 16 "divider_1186.xml" + out = 1.0f; + amp = 0.0f; + count = 0.0f; + lamp = 0.0f; + last = 0.0f; + zeroxs = 0; + + plugin_data->amp = amp; + plugin_data->count = count; + plugin_data->lamp = lamp; + plugin_data->last = last; + plugin_data->out = out; + plugin_data->zeroxs = zeroxs; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runDivider(LADSPA_Handle instance, unsigned long sample_count) { + Divider *plugin_data = (Divider *)instance; + + /* Denominator (float value) */ + const LADSPA_Data denominator = *(plugin_data->denominator); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + LADSPA_Data amp = plugin_data->amp; + float count = plugin_data->count; + LADSPA_Data lamp = plugin_data->lamp; + LADSPA_Data last = plugin_data->last; + LADSPA_Data out = plugin_data->out; + int zeroxs = plugin_data->zeroxs; + +#line 25 "divider_1186.xml" + /* Integer version of denominator */ + int den = (int)denominator; + + unsigned long pos; + + for (pos = 0; pos < sample_count; pos++) { + count += 1.0f; + if ((input[pos] > 0.0f && last <= 0.0f) || + (input[pos] < 0.0f && last >= 0.0)) { + zeroxs++; + if (den == 1) { + out = out > 0.0f ? -1.0f : 1.0f; + lamp = amp / count; + zeroxs = 0; + count = 0; + amp = 0; + } + } + amp += fabs(input[pos]); + if (den > 1 && (zeroxs % den) == den-1) { + out = out > 0.0f ? -1.0f : 1.0f; + lamp = amp / count; + zeroxs = 0; + count = 0; + amp = 0; + } + last = input[pos]; + buffer_write(output[pos], out * lamp); + } + + plugin_data->last = last; + plugin_data->amp = amp; + plugin_data->lamp = lamp; + plugin_data->zeroxs = zeroxs; + plugin_data->count = count; + plugin_data->out = out; +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainDivider(LADSPA_Handle instance, LADSPA_Data gain) { + ((Divider *)instance)->run_adding_gain = gain; +} + +static void runAddingDivider(LADSPA_Handle instance, unsigned long sample_count) { + Divider *plugin_data = (Divider *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Denominator (float value) */ + const LADSPA_Data denominator = *(plugin_data->denominator); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + LADSPA_Data amp = plugin_data->amp; + float count = plugin_data->count; + LADSPA_Data lamp = plugin_data->lamp; + LADSPA_Data last = plugin_data->last; + LADSPA_Data out = plugin_data->out; + int zeroxs = plugin_data->zeroxs; + +#line 25 "divider_1186.xml" + /* Integer version of denominator */ + int den = (int)denominator; + + unsigned long pos; + + for (pos = 0; pos < sample_count; pos++) { + count += 1.0f; + if ((input[pos] > 0.0f && last <= 0.0f) || + (input[pos] < 0.0f && last >= 0.0)) { + zeroxs++; + if (den == 1) { + out = out > 0.0f ? -1.0f : 1.0f; + lamp = amp / count; + zeroxs = 0; + count = 0; + amp = 0; + } + } + amp += fabs(input[pos]); + if (den > 1 && (zeroxs % den) == den-1) { + out = out > 0.0f ? -1.0f : 1.0f; + lamp = amp / count; + zeroxs = 0; + count = 0; + amp = 0; + } + last = input[pos]; + buffer_write(output[pos], out * lamp); + } + + plugin_data->last = last; + plugin_data->amp = amp; + plugin_data->lamp = lamp; + plugin_data->zeroxs = zeroxs; + plugin_data->count = count; + plugin_data->out = out; +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + dividerDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (dividerDescriptor) { + dividerDescriptor->UniqueID = 1186; + dividerDescriptor->Label = "divider"; + dividerDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + dividerDescriptor->Name = + D_("Audio Divider (Suboctave Generator)"); + dividerDescriptor->Maker = + "Steve Harris "; + dividerDescriptor->Copyright = + "GPL"; + dividerDescriptor->PortCount = 3; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(3, + sizeof(LADSPA_PortDescriptor)); + dividerDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(3, + sizeof(LADSPA_PortRangeHint)); + dividerDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(3, sizeof(char*)); + dividerDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Denominator */ + port_descriptors[DIVIDER_DENOMINATOR] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[DIVIDER_DENOMINATOR] = + D_("Denominator"); + port_range_hints[DIVIDER_DENOMINATOR].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_INTEGER | LADSPA_HINT_DEFAULT_1; + port_range_hints[DIVIDER_DENOMINATOR].LowerBound = 1; + port_range_hints[DIVIDER_DENOMINATOR].UpperBound = 8; + + /* Parameters for Input */ + port_descriptors[DIVIDER_INPUT] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[DIVIDER_INPUT] = + D_("Input"); + port_range_hints[DIVIDER_INPUT].HintDescriptor = 0; + + /* Parameters for Output */ + port_descriptors[DIVIDER_OUTPUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[DIVIDER_OUTPUT] = + D_("Output"); + port_range_hints[DIVIDER_OUTPUT].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE; + port_range_hints[DIVIDER_OUTPUT].LowerBound = -1; + port_range_hints[DIVIDER_OUTPUT].UpperBound = +1; + + dividerDescriptor->activate = NULL; + dividerDescriptor->cleanup = cleanupDivider; + dividerDescriptor->connect_port = connectPortDivider; + dividerDescriptor->deactivate = NULL; + dividerDescriptor->instantiate = instantiateDivider; + dividerDescriptor->run = runDivider; + dividerDescriptor->run_adding = runAddingDivider; + dividerDescriptor->set_run_adding_gain = setRunAddingGainDivider; + } +} + +void _fini() { + if (dividerDescriptor) { + free((LADSPA_PortDescriptor *)dividerDescriptor->PortDescriptors); + free((char **)dividerDescriptor->PortNames); + free((LADSPA_PortRangeHint *)dividerDescriptor->PortRangeHints); + free(dividerDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/dj_flanger_1438.c b/plugins/ladspa_effect/swh/dj_flanger_1438.c new file mode 100644 index 000000000..c15564b6f --- /dev/null +++ b/plugins/ladspa_effect/swh/dj_flanger_1438.c @@ -0,0 +1,483 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + +#line 10 "dj_flanger_1438.xml" + +#include +#include "ladspa-util.h" + +#define DELAY_TIME 0.005f + +#define DJFLANGER_SYNC 0 +#define DJFLANGER_PERIOD 1 +#define DJFLANGER_DEPTH 2 +#define DJFLANGER_FEEDBACK 3 +#define DJFLANGER_INPUT 4 +#define DJFLANGER_OUTPUT 5 + +static LADSPA_Descriptor *djFlangerDescriptor = NULL; + +typedef struct { + LADSPA_Data *sync; + LADSPA_Data *period; + LADSPA_Data *depth; + LADSPA_Data *feedback; + LADSPA_Data *input; + LADSPA_Data *output; + LADSPA_Data *buffer; + unsigned int buffer_mask; + unsigned int buffer_pos; + float fs; + unsigned int last_sync; + float x; + float y; + LADSPA_Data run_adding_gain; +} DjFlanger; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return djFlangerDescriptor; + default: + return NULL; + } +} + +static void activateDjFlanger(LADSPA_Handle instance) { + DjFlanger *plugin_data = (DjFlanger *)instance; + LADSPA_Data *buffer = plugin_data->buffer; + unsigned int buffer_mask = plugin_data->buffer_mask; + unsigned int buffer_pos = plugin_data->buffer_pos; + float fs = plugin_data->fs; + unsigned int last_sync = plugin_data->last_sync; + float x = plugin_data->x; + float y = plugin_data->y; +#line 38 "dj_flanger_1438.xml" + memset(buffer, 0, (buffer_mask + 1) * sizeof(LADSPA_Data)); + last_sync = 0; + plugin_data->buffer = buffer; + plugin_data->buffer_mask = buffer_mask; + plugin_data->buffer_pos = buffer_pos; + plugin_data->fs = fs; + plugin_data->last_sync = last_sync; + plugin_data->x = x; + plugin_data->y = y; + +} + +static void cleanupDjFlanger(LADSPA_Handle instance) { +#line 103 "dj_flanger_1438.xml" + DjFlanger *plugin_data = (DjFlanger *)instance; + free(plugin_data->buffer); + free(instance); +} + +static void connectPortDjFlanger( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + DjFlanger *plugin; + + plugin = (DjFlanger *)instance; + switch (port) { + case DJFLANGER_SYNC: + plugin->sync = data; + break; + case DJFLANGER_PERIOD: + plugin->period = data; + break; + case DJFLANGER_DEPTH: + plugin->depth = data; + break; + case DJFLANGER_FEEDBACK: + plugin->feedback = data; + break; + case DJFLANGER_INPUT: + plugin->input = data; + break; + case DJFLANGER_OUTPUT: + plugin->output = data; + break; + } +} + +static LADSPA_Handle instantiateDjFlanger( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + DjFlanger *plugin_data = (DjFlanger *)malloc(sizeof(DjFlanger)); + LADSPA_Data *buffer = NULL; + unsigned int buffer_mask; + unsigned int buffer_pos; + float fs; + unsigned int last_sync; + float x; + float y; + +#line 23 "dj_flanger_1438.xml" + int buffer_size = 2048; + + fs = s_rate; + while (buffer_size < fs * DELAY_TIME + 3.0f) { + buffer_size *= 2; + } + buffer = calloc(buffer_size, sizeof(LADSPA_Data)); + buffer_mask = buffer_size - 1; + buffer_pos = 0; + x = 0.5f; + y = 0.0f; + last_sync = 0; + + plugin_data->buffer = buffer; + plugin_data->buffer_mask = buffer_mask; + plugin_data->buffer_pos = buffer_pos; + plugin_data->fs = fs; + plugin_data->last_sync = last_sync; + plugin_data->x = x; + plugin_data->y = y; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runDjFlanger(LADSPA_Handle instance, unsigned long sample_count) { + DjFlanger *plugin_data = (DjFlanger *)instance; + + /* LFO sync (float value) */ + const LADSPA_Data sync = *(plugin_data->sync); + + /* LFO period (s) (float value) */ + const LADSPA_Data period = *(plugin_data->period); + + /* LFO depth (ms) (float value) */ + const LADSPA_Data depth = *(plugin_data->depth); + + /* Feedback (%) (float value) */ + const LADSPA_Data feedback = *(plugin_data->feedback); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + LADSPA_Data * buffer = plugin_data->buffer; + unsigned int buffer_mask = plugin_data->buffer_mask; + unsigned int buffer_pos = plugin_data->buffer_pos; + float fs = plugin_data->fs; + unsigned int last_sync = plugin_data->last_sync; + float x = plugin_data->x; + float y = plugin_data->y; + +#line 43 "dj_flanger_1438.xml" + unsigned long pos; + const float omega = 6.2831852f / (period * fs); + const float dr = 0.001f * fs * depth; + float fb; + float d; + float dout, out; + unsigned int dof; + + if (feedback > 99.0f) { + fb = 0.99f; + } else if (feedback < -99.0f) { + fb = -0.99f; + } else { + fb = feedback * 0.01f; + } + + if (sync > 0) { + if (!last_sync) { + x = 0.5f; + y = 0.0f; + } + plugin_data->last_sync = 1; + } else { + plugin_data->last_sync = 0; + } + + for (pos = 0; pos < sample_count; pos++) { + /* Write input into delay line */ + buffer[buffer_pos] = input[pos]; + + /* Calcuate delay */ + d = (x + 0.5f) * dr; + + dof = f_round(d); + //dout = buffer[(buffer_pos - f_round(d)) & buffer_mask]; + dout = cube_interp(d - floor(d), + buffer[(buffer_pos - dof - 3) & buffer_mask], + buffer[(buffer_pos - dof - 2) & buffer_mask], + buffer[(buffer_pos - dof - 1) & buffer_mask], + buffer[(buffer_pos - dof) & buffer_mask]); + + /* Write output */ + out = (buffer[buffer_pos] + dout) * 0.5f; + buffer[buffer_pos] = input[pos] + out * fb; + buffer_write(output[pos], out); + + /* Roll ringbuffer */ + buffer_pos = (buffer_pos + 1) & buffer_mask; + + /* Run LFO */ + x -= omega * y; + y += omega * x; + } + + plugin_data->x = x; + plugin_data->y = y; + plugin_data->buffer_pos = buffer_pos; +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainDjFlanger(LADSPA_Handle instance, LADSPA_Data gain) { + ((DjFlanger *)instance)->run_adding_gain = gain; +} + +static void runAddingDjFlanger(LADSPA_Handle instance, unsigned long sample_count) { + DjFlanger *plugin_data = (DjFlanger *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* LFO sync (float value) */ + const LADSPA_Data sync = *(plugin_data->sync); + + /* LFO period (s) (float value) */ + const LADSPA_Data period = *(plugin_data->period); + + /* LFO depth (ms) (float value) */ + const LADSPA_Data depth = *(plugin_data->depth); + + /* Feedback (%) (float value) */ + const LADSPA_Data feedback = *(plugin_data->feedback); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + LADSPA_Data * buffer = plugin_data->buffer; + unsigned int buffer_mask = plugin_data->buffer_mask; + unsigned int buffer_pos = plugin_data->buffer_pos; + float fs = plugin_data->fs; + unsigned int last_sync = plugin_data->last_sync; + float x = plugin_data->x; + float y = plugin_data->y; + +#line 43 "dj_flanger_1438.xml" + unsigned long pos; + const float omega = 6.2831852f / (period * fs); + const float dr = 0.001f * fs * depth; + float fb; + float d; + float dout, out; + unsigned int dof; + + if (feedback > 99.0f) { + fb = 0.99f; + } else if (feedback < -99.0f) { + fb = -0.99f; + } else { + fb = feedback * 0.01f; + } + + if (sync > 0) { + if (!last_sync) { + x = 0.5f; + y = 0.0f; + } + plugin_data->last_sync = 1; + } else { + plugin_data->last_sync = 0; + } + + for (pos = 0; pos < sample_count; pos++) { + /* Write input into delay line */ + buffer[buffer_pos] = input[pos]; + + /* Calcuate delay */ + d = (x + 0.5f) * dr; + + dof = f_round(d); + //dout = buffer[(buffer_pos - f_round(d)) & buffer_mask]; + dout = cube_interp(d - floor(d), + buffer[(buffer_pos - dof - 3) & buffer_mask], + buffer[(buffer_pos - dof - 2) & buffer_mask], + buffer[(buffer_pos - dof - 1) & buffer_mask], + buffer[(buffer_pos - dof) & buffer_mask]); + + /* Write output */ + out = (buffer[buffer_pos] + dout) * 0.5f; + buffer[buffer_pos] = input[pos] + out * fb; + buffer_write(output[pos], out); + + /* Roll ringbuffer */ + buffer_pos = (buffer_pos + 1) & buffer_mask; + + /* Run LFO */ + x -= omega * y; + y += omega * x; + } + + plugin_data->x = x; + plugin_data->y = y; + plugin_data->buffer_pos = buffer_pos; +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + djFlangerDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (djFlangerDescriptor) { + djFlangerDescriptor->UniqueID = 1438; + djFlangerDescriptor->Label = "djFlanger"; + djFlangerDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + djFlangerDescriptor->Name = + D_("DJ flanger"); + djFlangerDescriptor->Maker = + "Steve Harris "; + djFlangerDescriptor->Copyright = + "GPL"; + djFlangerDescriptor->PortCount = 6; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(6, + sizeof(LADSPA_PortDescriptor)); + djFlangerDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(6, + sizeof(LADSPA_PortRangeHint)); + djFlangerDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(6, sizeof(char*)); + djFlangerDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for LFO sync */ + port_descriptors[DJFLANGER_SYNC] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[DJFLANGER_SYNC] = + D_("LFO sync"); + port_range_hints[DJFLANGER_SYNC].HintDescriptor = 0; + + /* Parameters for LFO period (s) */ + port_descriptors[DJFLANGER_PERIOD] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[DJFLANGER_PERIOD] = + D_("LFO period (s)"); + port_range_hints[DJFLANGER_PERIOD].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_1; + port_range_hints[DJFLANGER_PERIOD].LowerBound = 0.1; + port_range_hints[DJFLANGER_PERIOD].UpperBound = 32.0; + + /* Parameters for LFO depth (ms) */ + port_descriptors[DJFLANGER_DEPTH] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[DJFLANGER_DEPTH] = + D_("LFO depth (ms)"); + port_range_hints[DJFLANGER_DEPTH].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_HIGH; + port_range_hints[DJFLANGER_DEPTH].LowerBound = 1; + port_range_hints[DJFLANGER_DEPTH].UpperBound = 5; + + /* Parameters for Feedback (%) */ + port_descriptors[DJFLANGER_FEEDBACK] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[DJFLANGER_FEEDBACK] = + D_("Feedback (%)"); + port_range_hints[DJFLANGER_FEEDBACK].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[DJFLANGER_FEEDBACK].LowerBound = -100; + port_range_hints[DJFLANGER_FEEDBACK].UpperBound = 100; + + /* Parameters for Input */ + port_descriptors[DJFLANGER_INPUT] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[DJFLANGER_INPUT] = + D_("Input"); + port_range_hints[DJFLANGER_INPUT].HintDescriptor = 0; + + /* Parameters for Output */ + port_descriptors[DJFLANGER_OUTPUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[DJFLANGER_OUTPUT] = + D_("Output"); + port_range_hints[DJFLANGER_OUTPUT].HintDescriptor = 0; + + djFlangerDescriptor->activate = activateDjFlanger; + djFlangerDescriptor->cleanup = cleanupDjFlanger; + djFlangerDescriptor->connect_port = connectPortDjFlanger; + djFlangerDescriptor->deactivate = NULL; + djFlangerDescriptor->instantiate = instantiateDjFlanger; + djFlangerDescriptor->run = runDjFlanger; + djFlangerDescriptor->run_adding = runAddingDjFlanger; + djFlangerDescriptor->set_run_adding_gain = setRunAddingGainDjFlanger; + } +} + +void _fini() { + if (djFlangerDescriptor) { + free((LADSPA_PortDescriptor *)djFlangerDescriptor->PortDescriptors); + free((char **)djFlangerDescriptor->PortNames); + free((LADSPA_PortRangeHint *)djFlangerDescriptor->PortRangeHints); + free(djFlangerDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/dyson_compress_1403.c b/plugins/ladspa_effect/swh/dyson_compress_1403.c new file mode 100644 index 000000000..f7bb71556 --- /dev/null +++ b/plugins/ladspa_effect/swh/dyson_compress_1403.c @@ -0,0 +1,896 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + +#line 10 "dyson_compress_1403.xml" + +/* + * Copyright (c) 1996, John S. Dyson + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * This code (easily) runs realtime on a P5-166 w/EDO, Triton-II on FreeBSD. + * + * More info/comments: dyson@freebsd.org + * + * This program provides compression of a stereo 16bit audio stream, + * such as that contained by a 16Bit wav file. Extreme measures have + * been taken to make the compression as subtile as possible. One + * possible purpose for this code would be to master cassette tapes from + * CD's for playback in automobiles where dynamic range needs to be + * restricted. + * + * Suitably recoded for an embedded DSP, this would make a killer audio + * compressor for broadcast or recording. When writing this code, I + * ignored the issues of roundoff error or trucation -- Pentiums have + * really nice FP processors :-). + */ + + #include + + #define MAXLEVEL 0.9f + #define NFILT 12 + #define NEFILT 17 + + /* These filters should filter at least the lowest audio freq */ + #define RLEVELSQ0FILTER .001 + #define RLEVELSQ1FILTER .010 + /* These are the attack time for the rms measurement */ + #define RLEVELSQ0FFILTER .001 + #define RLEVELSQEFILTER .001 + + #define RMASTERGAIN0FILTER .000003 + + #define RPEAKGAINFILTER .001 + + #define MAXFASTGAIN 3 + #define MAXSLOWGAIN 9 + + #define FLOORLEVEL 0.06 + + float hardlimit(float value, float knee, float limit) { + float ab = fabs(value); + if (ab >= limit) { + value = value > 0 ? limit : -limit; + } + + return value; + } + +#define DYSONCOMPRESS_PEAK_LIMIT 0 +#define DYSONCOMPRESS_RELEASE_TIME 1 +#define DYSONCOMPRESS_CFRATE 2 +#define DYSONCOMPRESS_CRATE 3 +#define DYSONCOMPRESS_INPUT 4 +#define DYSONCOMPRESS_OUTPUT 5 + +static LADSPA_Descriptor *dysonCompressDescriptor = NULL; + +typedef struct { + LADSPA_Data *peak_limit; + LADSPA_Data *release_time; + LADSPA_Data *cfrate; + LADSPA_Data *crate; + LADSPA_Data *input; + LADSPA_Data *output; + LADSPA_Data *delay; + float extra_maxlevel; + float lastrgain; + float maxgain; + float mingain; + float ndelay; + unsigned int ndelayptr; + int peaklimitdelay; + float rgain; + float rlevelsq0; + float rlevelsq1; + LADSPA_Data *rlevelsqe; + LADSPA_Data *rlevelsqn; + float rmastergain0; + float rpeakgain0; + float rpeakgain1; + float rpeaklimitdelay; + float sample_rate; + LADSPA_Data run_adding_gain; +} DysonCompress; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return dysonCompressDescriptor; + default: + return NULL; + } +} + +static void activateDysonCompress(LADSPA_Handle instance) { + DysonCompress *plugin_data = (DysonCompress *)instance; + LADSPA_Data *delay = plugin_data->delay; + float extra_maxlevel = plugin_data->extra_maxlevel; + float lastrgain = plugin_data->lastrgain; + float maxgain = plugin_data->maxgain; + float mingain = plugin_data->mingain; + float ndelay = plugin_data->ndelay; + unsigned int ndelayptr = plugin_data->ndelayptr; + int peaklimitdelay = plugin_data->peaklimitdelay; + float rgain = plugin_data->rgain; + float rlevelsq0 = plugin_data->rlevelsq0; + float rlevelsq1 = plugin_data->rlevelsq1; + LADSPA_Data *rlevelsqe = plugin_data->rlevelsqe; + LADSPA_Data *rlevelsqn = plugin_data->rlevelsqn; + float rmastergain0 = plugin_data->rmastergain0; + float rpeakgain0 = plugin_data->rpeakgain0; + float rpeakgain1 = plugin_data->rpeakgain1; + float rpeaklimitdelay = plugin_data->rpeaklimitdelay; + float sample_rate = plugin_data->sample_rate; +#line 105 "dyson_compress_1403.xml" + unsigned int i; + + for (i=0; idelay = delay; + plugin_data->extra_maxlevel = extra_maxlevel; + plugin_data->lastrgain = lastrgain; + plugin_data->maxgain = maxgain; + plugin_data->mingain = mingain; + plugin_data->ndelay = ndelay; + plugin_data->ndelayptr = ndelayptr; + plugin_data->peaklimitdelay = peaklimitdelay; + plugin_data->rgain = rgain; + plugin_data->rlevelsq0 = rlevelsq0; + plugin_data->rlevelsq1 = rlevelsq1; + plugin_data->rlevelsqe = rlevelsqe; + plugin_data->rlevelsqn = rlevelsqn; + plugin_data->rmastergain0 = rmastergain0; + plugin_data->rpeakgain0 = rpeakgain0; + plugin_data->rpeakgain1 = rpeakgain1; + plugin_data->rpeaklimitdelay = rpeaklimitdelay; + plugin_data->sample_rate = sample_rate; + +} + +static void cleanupDysonCompress(LADSPA_Handle instance) { +#line 137 "dyson_compress_1403.xml" + DysonCompress *plugin_data = (DysonCompress *)instance; + free(plugin_data->delay); + free(plugin_data->rlevelsqn); + free(plugin_data->rlevelsqe); + free(instance); +} + +static void connectPortDysonCompress( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + DysonCompress *plugin; + + plugin = (DysonCompress *)instance; + switch (port) { + case DYSONCOMPRESS_PEAK_LIMIT: + plugin->peak_limit = data; + break; + case DYSONCOMPRESS_RELEASE_TIME: + plugin->release_time = data; + break; + case DYSONCOMPRESS_CFRATE: + plugin->cfrate = data; + break; + case DYSONCOMPRESS_CRATE: + plugin->crate = data; + break; + case DYSONCOMPRESS_INPUT: + plugin->input = data; + break; + case DYSONCOMPRESS_OUTPUT: + plugin->output = data; + break; + } +} + +static LADSPA_Handle instantiateDysonCompress( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + DysonCompress *plugin_data = (DysonCompress *)malloc(sizeof(DysonCompress)); + LADSPA_Data *delay = NULL; + float extra_maxlevel; + float lastrgain; + float maxgain; + float mingain; + float ndelay; + unsigned int ndelayptr; + int peaklimitdelay; + float rgain; + float rlevelsq0; + float rlevelsq1; + LADSPA_Data *rlevelsqe = NULL; + LADSPA_Data *rlevelsqn = NULL; + float rmastergain0; + float rpeakgain0; + float rpeakgain1; + float rpeaklimitdelay; + float sample_rate; + +#line 78 "dyson_compress_1403.xml" + sample_rate = (float)s_rate; + + mingain = 10000; + maxgain = 0; + + rpeaklimitdelay = 2500; + + rgain = rmastergain0 = 1.0; + rlevelsq0 = 0; + rlevelsq1 = 0; + ndelay = (int)(1.0 / RLEVELSQ0FFILTER); + + delay = calloc(ndelay, sizeof(LADSPA_Data)); + rlevelsqn = calloc(NFILT + 1, sizeof(float)); + rlevelsqe = calloc(NEFILT + 1, sizeof(float)); + + rpeakgain0 = 1.0; + rpeakgain1 = 1.0; + rpeaklimitdelay = 0; + ndelayptr = 0; + lastrgain = 1.0; + + extra_maxlevel = 0.0f; + peaklimitdelay = 0; + + plugin_data->delay = delay; + plugin_data->extra_maxlevel = extra_maxlevel; + plugin_data->lastrgain = lastrgain; + plugin_data->maxgain = maxgain; + plugin_data->mingain = mingain; + plugin_data->ndelay = ndelay; + plugin_data->ndelayptr = ndelayptr; + plugin_data->peaklimitdelay = peaklimitdelay; + plugin_data->rgain = rgain; + plugin_data->rlevelsq0 = rlevelsq0; + plugin_data->rlevelsq1 = rlevelsq1; + plugin_data->rlevelsqe = rlevelsqe; + plugin_data->rlevelsqn = rlevelsqn; + plugin_data->rmastergain0 = rmastergain0; + plugin_data->rpeakgain0 = rpeakgain0; + plugin_data->rpeakgain1 = rpeakgain1; + plugin_data->rpeaklimitdelay = rpeaklimitdelay; + plugin_data->sample_rate = sample_rate; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runDysonCompress(LADSPA_Handle instance, unsigned long sample_count) { + DysonCompress *plugin_data = (DysonCompress *)instance; + + /* Peak limit (dB) (float value) */ + const LADSPA_Data peak_limit = *(plugin_data->peak_limit); + + /* Release time (s) (float value) */ + const LADSPA_Data release_time = *(plugin_data->release_time); + + /* Fast compression ratio (float value) */ + const LADSPA_Data cfrate = *(plugin_data->cfrate); + + /* Compression ratio (float value) */ + const LADSPA_Data crate = *(plugin_data->crate); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + LADSPA_Data * delay = plugin_data->delay; + float extra_maxlevel = plugin_data->extra_maxlevel; + float lastrgain = plugin_data->lastrgain; + float maxgain = plugin_data->maxgain; + float mingain = plugin_data->mingain; + float ndelay = plugin_data->ndelay; + unsigned int ndelayptr = plugin_data->ndelayptr; + int peaklimitdelay = plugin_data->peaklimitdelay; + float rgain = plugin_data->rgain; + float rlevelsq0 = plugin_data->rlevelsq0; + float rlevelsq1 = plugin_data->rlevelsq1; + LADSPA_Data * rlevelsqe = plugin_data->rlevelsqe; + LADSPA_Data * rlevelsqn = plugin_data->rlevelsqn; + float rmastergain0 = plugin_data->rmastergain0; + float rpeakgain0 = plugin_data->rpeakgain0; + float rpeakgain1 = plugin_data->rpeakgain1; + float rpeaklimitdelay = plugin_data->rpeaklimitdelay; + float sample_rate = plugin_data->sample_rate; + +#line 143 "dyson_compress_1403.xml" + unsigned long pos; + float targetlevel = MAXLEVEL * DB_CO(peak_limit); + float rgainfilter = 1.0f / (release_time * sample_rate); + float fastgaincompressionratio = cfrate; + float compressionratio = crate; + float efilt; + float levelsqe; + float gain; + float tgain; + float d; + float fastgain; + float qgain; + float tslowgain; + float slowgain; + float npeakgain; + float new; + float nrgain; + float ngain; + float ngsq; + float tnrgain; + float sqrtrpeakgain; + float totalgain; + unsigned int i; + + for (pos = 0; pos < sample_count; pos++) { + // Ergh! this was originally meant to track a stereo signal + float levelsq0 = 2.0f * (input[pos] * input[pos]); + + delay[ndelayptr] = input[pos]; + ndelayptr++; + + if (ndelayptr >= ndelay) { + ndelayptr = 0; + } + + if (levelsq0 > rlevelsq0) { + rlevelsq0 = (levelsq0 * RLEVELSQ0FFILTER) + + rlevelsq0 * (1 - RLEVELSQ0FFILTER); + } else { + rlevelsq0 = (levelsq0 * RLEVELSQ0FILTER) + + rlevelsq0 * (1 - RLEVELSQ0FILTER); + } + + if (rlevelsq0 <= FLOORLEVEL * FLOORLEVEL) { + goto skipagc; + } + + if (rlevelsq0 > rlevelsq1) { + rlevelsq1 = rlevelsq0; + } else { + rlevelsq1 = rlevelsq0 * RLEVELSQ1FILTER + + rlevelsq1 * (1 - RLEVELSQ1FILTER); + } + + rlevelsqn[0] = rlevelsq1; + for(i = 0; i < NFILT-1; i++) { + if (rlevelsqn[i] > rlevelsqn[i+1]) + rlevelsqn[i+1] = rlevelsqn[i]; + else + rlevelsqn[i+1] = rlevelsqn[i] * RLEVELSQ1FILTER + + rlevelsqn[i+1] * (1 - RLEVELSQ1FILTER); + } + + efilt = RLEVELSQEFILTER; + levelsqe = rlevelsqe[0] = rlevelsqn[NFILT-1]; + for(i = 0; i < NEFILT-1; i++) { + rlevelsqe[i+1] = rlevelsqe[i] * efilt + + rlevelsqe[i+1] * (1.0 - efilt); + if (rlevelsqe[i+1] > levelsqe) + levelsqe = rlevelsqe[i+1]; + efilt *= 1.0f / 1.5f; + } + + gain = targetlevel / sqrt(levelsqe); + if (compressionratio < 0.99f) { + if (compressionratio == 0.50f) + gain = sqrt(gain); + else + gain = f_exp(log(gain) * compressionratio); + } + + if (gain < rgain) + rgain = gain * RLEVELSQEFILTER/2 + + rgain * (1 - RLEVELSQEFILTER/2); + else + rgain = gain * rgainfilter + + rgain * (1 - rgainfilter); + + lastrgain = rgain; + if ( gain < lastrgain) + lastrgain = gain; + + skipagc:; + + tgain = lastrgain; + + d = delay[ndelayptr]; + + fastgain = tgain; + if (fastgain > MAXFASTGAIN) + fastgain = MAXFASTGAIN; + + if (fastgain < 0.0001) + fastgain = 0.0001; + + qgain = f_exp(log(fastgain) * fastgaincompressionratio); + + tslowgain = tgain / qgain; + if (tslowgain > MAXSLOWGAIN) + tslowgain = MAXSLOWGAIN; + if (tslowgain < rmastergain0) + rmastergain0 = tslowgain; + else + rmastergain0 = tslowgain * RMASTERGAIN0FILTER + + (1 - RMASTERGAIN0FILTER) * rmastergain0; + + slowgain = rmastergain0; + npeakgain = slowgain * qgain; + + new = d * npeakgain; + if (fabs(new) >= MAXLEVEL) + nrgain = MAXLEVEL / fabs(new); + else + nrgain = 1.0; + + ngain = nrgain; + + ngsq = ngain * ngain; + if (ngsq <= rpeakgain0) { + rpeakgain0 = ngsq /* * 0.50 + rpeakgain0 * 0.50 */; + rpeaklimitdelay = peaklimitdelay; + } else if (rpeaklimitdelay == 0) { + if (nrgain > 1.0) + tnrgain = 1.0; + else + tnrgain = nrgain; + rpeakgain0 = tnrgain * RPEAKGAINFILTER + + (1.0 - RPEAKGAINFILTER) * rpeakgain0; + } + + if (rpeakgain0 <= rpeakgain1) { + rpeakgain1 = rpeakgain0; + rpeaklimitdelay = peaklimitdelay; + } else if (rpeaklimitdelay == 0) { + rpeakgain1 = RPEAKGAINFILTER * rpeakgain0 + + (1.0 - RPEAKGAINFILTER) * rpeakgain1; + } else { + --rpeaklimitdelay; + } + + sqrtrpeakgain = sqrt(rpeakgain1); + totalgain = npeakgain * sqrtrpeakgain; + + buffer_write(output[pos], new * sqrtrpeakgain); + + if (totalgain > maxgain) + maxgain = totalgain; + if (totalgain < mingain) + mingain = totalgain; + if (output[pos] > extra_maxlevel) + extra_maxlevel = output[pos]; + } + + plugin_data->ndelayptr = ndelayptr; + plugin_data->rlevelsq0 = rlevelsq0; + plugin_data->rlevelsq1 = rlevelsq1; + plugin_data->mingain = mingain; + plugin_data->maxgain = maxgain; + plugin_data->rpeaklimitdelay = rpeaklimitdelay; + plugin_data->rgain = rgain; + plugin_data->rmastergain0 = rmastergain0; + plugin_data->rpeakgain0 = rpeakgain0; + plugin_data->rpeakgain1 = rpeakgain1; + plugin_data->lastrgain = lastrgain; + plugin_data->extra_maxlevel = extra_maxlevel; +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainDysonCompress(LADSPA_Handle instance, LADSPA_Data gain) { + ((DysonCompress *)instance)->run_adding_gain = gain; +} + +static void runAddingDysonCompress(LADSPA_Handle instance, unsigned long sample_count) { + DysonCompress *plugin_data = (DysonCompress *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Peak limit (dB) (float value) */ + const LADSPA_Data peak_limit = *(plugin_data->peak_limit); + + /* Release time (s) (float value) */ + const LADSPA_Data release_time = *(plugin_data->release_time); + + /* Fast compression ratio (float value) */ + const LADSPA_Data cfrate = *(plugin_data->cfrate); + + /* Compression ratio (float value) */ + const LADSPA_Data crate = *(plugin_data->crate); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + LADSPA_Data * delay = plugin_data->delay; + float extra_maxlevel = plugin_data->extra_maxlevel; + float lastrgain = plugin_data->lastrgain; + float maxgain = plugin_data->maxgain; + float mingain = plugin_data->mingain; + float ndelay = plugin_data->ndelay; + unsigned int ndelayptr = plugin_data->ndelayptr; + int peaklimitdelay = plugin_data->peaklimitdelay; + float rgain = plugin_data->rgain; + float rlevelsq0 = plugin_data->rlevelsq0; + float rlevelsq1 = plugin_data->rlevelsq1; + LADSPA_Data * rlevelsqe = plugin_data->rlevelsqe; + LADSPA_Data * rlevelsqn = plugin_data->rlevelsqn; + float rmastergain0 = plugin_data->rmastergain0; + float rpeakgain0 = plugin_data->rpeakgain0; + float rpeakgain1 = plugin_data->rpeakgain1; + float rpeaklimitdelay = plugin_data->rpeaklimitdelay; + float sample_rate = plugin_data->sample_rate; + +#line 143 "dyson_compress_1403.xml" + unsigned long pos; + float targetlevel = MAXLEVEL * DB_CO(peak_limit); + float rgainfilter = 1.0f / (release_time * sample_rate); + float fastgaincompressionratio = cfrate; + float compressionratio = crate; + float efilt; + float levelsqe; + float gain; + float tgain; + float d; + float fastgain; + float qgain; + float tslowgain; + float slowgain; + float npeakgain; + float new; + float nrgain; + float ngain; + float ngsq; + float tnrgain; + float sqrtrpeakgain; + float totalgain; + unsigned int i; + + for (pos = 0; pos < sample_count; pos++) { + // Ergh! this was originally meant to track a stereo signal + float levelsq0 = 2.0f * (input[pos] * input[pos]); + + delay[ndelayptr] = input[pos]; + ndelayptr++; + + if (ndelayptr >= ndelay) { + ndelayptr = 0; + } + + if (levelsq0 > rlevelsq0) { + rlevelsq0 = (levelsq0 * RLEVELSQ0FFILTER) + + rlevelsq0 * (1 - RLEVELSQ0FFILTER); + } else { + rlevelsq0 = (levelsq0 * RLEVELSQ0FILTER) + + rlevelsq0 * (1 - RLEVELSQ0FILTER); + } + + if (rlevelsq0 <= FLOORLEVEL * FLOORLEVEL) { + goto skipagc; + } + + if (rlevelsq0 > rlevelsq1) { + rlevelsq1 = rlevelsq0; + } else { + rlevelsq1 = rlevelsq0 * RLEVELSQ1FILTER + + rlevelsq1 * (1 - RLEVELSQ1FILTER); + } + + rlevelsqn[0] = rlevelsq1; + for(i = 0; i < NFILT-1; i++) { + if (rlevelsqn[i] > rlevelsqn[i+1]) + rlevelsqn[i+1] = rlevelsqn[i]; + else + rlevelsqn[i+1] = rlevelsqn[i] * RLEVELSQ1FILTER + + rlevelsqn[i+1] * (1 - RLEVELSQ1FILTER); + } + + efilt = RLEVELSQEFILTER; + levelsqe = rlevelsqe[0] = rlevelsqn[NFILT-1]; + for(i = 0; i < NEFILT-1; i++) { + rlevelsqe[i+1] = rlevelsqe[i] * efilt + + rlevelsqe[i+1] * (1.0 - efilt); + if (rlevelsqe[i+1] > levelsqe) + levelsqe = rlevelsqe[i+1]; + efilt *= 1.0f / 1.5f; + } + + gain = targetlevel / sqrt(levelsqe); + if (compressionratio < 0.99f) { + if (compressionratio == 0.50f) + gain = sqrt(gain); + else + gain = f_exp(log(gain) * compressionratio); + } + + if (gain < rgain) + rgain = gain * RLEVELSQEFILTER/2 + + rgain * (1 - RLEVELSQEFILTER/2); + else + rgain = gain * rgainfilter + + rgain * (1 - rgainfilter); + + lastrgain = rgain; + if ( gain < lastrgain) + lastrgain = gain; + + skipagc:; + + tgain = lastrgain; + + d = delay[ndelayptr]; + + fastgain = tgain; + if (fastgain > MAXFASTGAIN) + fastgain = MAXFASTGAIN; + + if (fastgain < 0.0001) + fastgain = 0.0001; + + qgain = f_exp(log(fastgain) * fastgaincompressionratio); + + tslowgain = tgain / qgain; + if (tslowgain > MAXSLOWGAIN) + tslowgain = MAXSLOWGAIN; + if (tslowgain < rmastergain0) + rmastergain0 = tslowgain; + else + rmastergain0 = tslowgain * RMASTERGAIN0FILTER + + (1 - RMASTERGAIN0FILTER) * rmastergain0; + + slowgain = rmastergain0; + npeakgain = slowgain * qgain; + + new = d * npeakgain; + if (fabs(new) >= MAXLEVEL) + nrgain = MAXLEVEL / fabs(new); + else + nrgain = 1.0; + + ngain = nrgain; + + ngsq = ngain * ngain; + if (ngsq <= rpeakgain0) { + rpeakgain0 = ngsq /* * 0.50 + rpeakgain0 * 0.50 */; + rpeaklimitdelay = peaklimitdelay; + } else if (rpeaklimitdelay == 0) { + if (nrgain > 1.0) + tnrgain = 1.0; + else + tnrgain = nrgain; + rpeakgain0 = tnrgain * RPEAKGAINFILTER + + (1.0 - RPEAKGAINFILTER) * rpeakgain0; + } + + if (rpeakgain0 <= rpeakgain1) { + rpeakgain1 = rpeakgain0; + rpeaklimitdelay = peaklimitdelay; + } else if (rpeaklimitdelay == 0) { + rpeakgain1 = RPEAKGAINFILTER * rpeakgain0 + + (1.0 - RPEAKGAINFILTER) * rpeakgain1; + } else { + --rpeaklimitdelay; + } + + sqrtrpeakgain = sqrt(rpeakgain1); + totalgain = npeakgain * sqrtrpeakgain; + + buffer_write(output[pos], new * sqrtrpeakgain); + + if (totalgain > maxgain) + maxgain = totalgain; + if (totalgain < mingain) + mingain = totalgain; + if (output[pos] > extra_maxlevel) + extra_maxlevel = output[pos]; + } + + plugin_data->ndelayptr = ndelayptr; + plugin_data->rlevelsq0 = rlevelsq0; + plugin_data->rlevelsq1 = rlevelsq1; + plugin_data->mingain = mingain; + plugin_data->maxgain = maxgain; + plugin_data->rpeaklimitdelay = rpeaklimitdelay; + plugin_data->rgain = rgain; + plugin_data->rmastergain0 = rmastergain0; + plugin_data->rpeakgain0 = rpeakgain0; + plugin_data->rpeakgain1 = rpeakgain1; + plugin_data->lastrgain = lastrgain; + plugin_data->extra_maxlevel = extra_maxlevel; +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + dysonCompressDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (dysonCompressDescriptor) { + dysonCompressDescriptor->UniqueID = 1403; + dysonCompressDescriptor->Label = "dysonCompress"; + dysonCompressDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + dysonCompressDescriptor->Name = + D_("Dyson compressor"); + dysonCompressDescriptor->Maker = + "Steve Harris "; + dysonCompressDescriptor->Copyright = + "GPL"; + dysonCompressDescriptor->PortCount = 6; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(6, + sizeof(LADSPA_PortDescriptor)); + dysonCompressDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(6, + sizeof(LADSPA_PortRangeHint)); + dysonCompressDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(6, sizeof(char*)); + dysonCompressDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Peak limit (dB) */ + port_descriptors[DYSONCOMPRESS_PEAK_LIMIT] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[DYSONCOMPRESS_PEAK_LIMIT] = + D_("Peak limit (dB)"); + port_range_hints[DYSONCOMPRESS_PEAK_LIMIT].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[DYSONCOMPRESS_PEAK_LIMIT].LowerBound = -30; + port_range_hints[DYSONCOMPRESS_PEAK_LIMIT].UpperBound = 0; + + /* Parameters for Release time (s) */ + port_descriptors[DYSONCOMPRESS_RELEASE_TIME] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[DYSONCOMPRESS_RELEASE_TIME] = + D_("Release time (s)"); + port_range_hints[DYSONCOMPRESS_RELEASE_TIME].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_LOW; + port_range_hints[DYSONCOMPRESS_RELEASE_TIME].LowerBound = 0; + port_range_hints[DYSONCOMPRESS_RELEASE_TIME].UpperBound = 1; + + /* Parameters for Fast compression ratio */ + port_descriptors[DYSONCOMPRESS_CFRATE] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[DYSONCOMPRESS_CFRATE] = + D_("Fast compression ratio"); + port_range_hints[DYSONCOMPRESS_CFRATE].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MIDDLE; + port_range_hints[DYSONCOMPRESS_CFRATE].LowerBound = 0; + port_range_hints[DYSONCOMPRESS_CFRATE].UpperBound = 1; + + /* Parameters for Compression ratio */ + port_descriptors[DYSONCOMPRESS_CRATE] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[DYSONCOMPRESS_CRATE] = + D_("Compression ratio"); + port_range_hints[DYSONCOMPRESS_CRATE].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MIDDLE; + port_range_hints[DYSONCOMPRESS_CRATE].LowerBound = 0; + port_range_hints[DYSONCOMPRESS_CRATE].UpperBound = 1; + + /* Parameters for Input */ + port_descriptors[DYSONCOMPRESS_INPUT] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[DYSONCOMPRESS_INPUT] = + D_("Input"); + port_range_hints[DYSONCOMPRESS_INPUT].HintDescriptor = 0; + + /* Parameters for Output */ + port_descriptors[DYSONCOMPRESS_OUTPUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[DYSONCOMPRESS_OUTPUT] = + D_("Output"); + port_range_hints[DYSONCOMPRESS_OUTPUT].HintDescriptor = 0; + + dysonCompressDescriptor->activate = activateDysonCompress; + dysonCompressDescriptor->cleanup = cleanupDysonCompress; + dysonCompressDescriptor->connect_port = connectPortDysonCompress; + dysonCompressDescriptor->deactivate = NULL; + dysonCompressDescriptor->instantiate = instantiateDysonCompress; + dysonCompressDescriptor->run = runDysonCompress; + dysonCompressDescriptor->run_adding = runAddingDysonCompress; + dysonCompressDescriptor->set_run_adding_gain = setRunAddingGainDysonCompress; + } +} + +void _fini() { + if (dysonCompressDescriptor) { + free((LADSPA_PortDescriptor *)dysonCompressDescriptor->PortDescriptors); + free((char **)dysonCompressDescriptor->PortNames); + free((LADSPA_PortRangeHint *)dysonCompressDescriptor->PortRangeHints); + free(dysonCompressDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/fad_delay_1192.c b/plugins/ladspa_effect/swh/fad_delay_1192.c new file mode 100644 index 000000000..0c4592ec9 --- /dev/null +++ b/plugins/ladspa_effect/swh/fad_delay_1192.c @@ -0,0 +1,405 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + +#line 8 "fad_delay_1192.xml" + +#include "ladspa-util.h" + +#define BASE_BUFFER 8 // Base buffer length (s) + +#define FADDELAY_DELAY 0 +#define FADDELAY_FB_DB 1 +#define FADDELAY_INPUT 2 +#define FADDELAY_OUTPUT 3 + +static LADSPA_Descriptor *fadDelayDescriptor = NULL; + +typedef struct { + LADSPA_Data *delay; + LADSPA_Data *fb_db; + LADSPA_Data *input; + LADSPA_Data *output; + LADSPA_Data *buffer; + unsigned long buffer_mask; + unsigned long buffer_size; + LADSPA_Data last_in; + int last_phase; + float phase; + long sample_rate; + LADSPA_Data run_adding_gain; +} FadDelay; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return fadDelayDescriptor; + default: + return NULL; + } +} + +static void activateFadDelay(LADSPA_Handle instance) { + FadDelay *plugin_data = (FadDelay *)instance; + LADSPA_Data *buffer = plugin_data->buffer; + unsigned long buffer_mask = plugin_data->buffer_mask; + unsigned long buffer_size = plugin_data->buffer_size; + LADSPA_Data last_in = plugin_data->last_in; + int last_phase = plugin_data->last_phase; + float phase = plugin_data->phase; + long sample_rate = plugin_data->sample_rate; +#line 35 "fad_delay_1192.xml" + int i; + + for (i = 0; i < buffer_size; i++) { + buffer[i] = 0; + } + phase = 0; + last_phase = 0; + last_in = 0.0f; + sample_rate = sample_rate; + plugin_data->buffer = buffer; + plugin_data->buffer_mask = buffer_mask; + plugin_data->buffer_size = buffer_size; + plugin_data->last_in = last_in; + plugin_data->last_phase = last_phase; + plugin_data->phase = phase; + plugin_data->sample_rate = sample_rate; + +} + +static void cleanupFadDelay(LADSPA_Handle instance) { +#line 47 "fad_delay_1192.xml" + FadDelay *plugin_data = (FadDelay *)instance; + free(plugin_data->buffer); + free(instance); +} + +static void connectPortFadDelay( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + FadDelay *plugin; + + plugin = (FadDelay *)instance; + switch (port) { + case FADDELAY_DELAY: + plugin->delay = data; + break; + case FADDELAY_FB_DB: + plugin->fb_db = data; + break; + case FADDELAY_INPUT: + plugin->input = data; + break; + case FADDELAY_OUTPUT: + plugin->output = data; + break; + } +} + +static LADSPA_Handle instantiateFadDelay( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + FadDelay *plugin_data = (FadDelay *)malloc(sizeof(FadDelay)); + LADSPA_Data *buffer = NULL; + unsigned long buffer_mask; + unsigned long buffer_size; + LADSPA_Data last_in; + int last_phase; + float phase; + long sample_rate; + +#line 21 "fad_delay_1192.xml" + unsigned int min_bs; + + sample_rate = s_rate; + min_bs = BASE_BUFFER * s_rate; + for (buffer_size = 4096; buffer_size < min_bs; + buffer_size *= 2); + buffer = calloc(buffer_size, sizeof(LADSPA_Data)); + buffer_mask = buffer_size - 1; + phase = 0; + last_phase = 0; + last_in = 0.0f; + + plugin_data->buffer = buffer; + plugin_data->buffer_mask = buffer_mask; + plugin_data->buffer_size = buffer_size; + plugin_data->last_in = last_in; + plugin_data->last_phase = last_phase; + plugin_data->phase = phase; + plugin_data->sample_rate = sample_rate; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runFadDelay(LADSPA_Handle instance, unsigned long sample_count) { + FadDelay *plugin_data = (FadDelay *)instance; + + /* Delay (seconds) (float value) */ + const LADSPA_Data delay = *(plugin_data->delay); + + /* Feedback (dB) (float value) */ + const LADSPA_Data fb_db = *(plugin_data->fb_db); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + LADSPA_Data * buffer = plugin_data->buffer; + unsigned long buffer_mask = plugin_data->buffer_mask; + unsigned long buffer_size = plugin_data->buffer_size; + LADSPA_Data last_in = plugin_data->last_in; + int last_phase = plugin_data->last_phase; + float phase = plugin_data->phase; + long sample_rate = plugin_data->sample_rate; + +#line 51 "fad_delay_1192.xml" + long int pos; + float increment = (float)buffer_size / ((float)sample_rate * + f_max(fabs(delay), 0.01)); + float lin_int, lin_inc; + int track; + int fph; + LADSPA_Data out; + const float fb = DB_CO(fb_db); + + for (pos = 0; pos < sample_count; pos++) { + fph = f_round(floor(phase)); + last_phase = fph; + lin_int = phase - (float)fph; + out = LIN_INTERP(lin_int, buffer[(fph+1) & buffer_mask], + buffer[(fph+2) & buffer_mask]); + phase += increment; + lin_inc = 1.0f / (floor(phase) - last_phase + 1); + lin_inc = lin_inc > 1.0f ? 1.0f : lin_inc; + lin_int = 0.0f; + for (track = last_phase; track < phase; track++) { + lin_int += lin_inc; + buffer[track % buffer_size] = out * fb + + LIN_INTERP(lin_int, last_in, input[pos]); + } + last_in = input[pos]; + buffer_write(output[pos], out); + if (phase >= buffer_size) { + phase -= buffer_size; + } + } + + // Store current phase in instance + plugin_data->phase = phase; + plugin_data->last_phase = last_phase; + plugin_data->last_in = last_in; +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainFadDelay(LADSPA_Handle instance, LADSPA_Data gain) { + ((FadDelay *)instance)->run_adding_gain = gain; +} + +static void runAddingFadDelay(LADSPA_Handle instance, unsigned long sample_count) { + FadDelay *plugin_data = (FadDelay *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Delay (seconds) (float value) */ + const LADSPA_Data delay = *(plugin_data->delay); + + /* Feedback (dB) (float value) */ + const LADSPA_Data fb_db = *(plugin_data->fb_db); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + LADSPA_Data * buffer = plugin_data->buffer; + unsigned long buffer_mask = plugin_data->buffer_mask; + unsigned long buffer_size = plugin_data->buffer_size; + LADSPA_Data last_in = plugin_data->last_in; + int last_phase = plugin_data->last_phase; + float phase = plugin_data->phase; + long sample_rate = plugin_data->sample_rate; + +#line 51 "fad_delay_1192.xml" + long int pos; + float increment = (float)buffer_size / ((float)sample_rate * + f_max(fabs(delay), 0.01)); + float lin_int, lin_inc; + int track; + int fph; + LADSPA_Data out; + const float fb = DB_CO(fb_db); + + for (pos = 0; pos < sample_count; pos++) { + fph = f_round(floor(phase)); + last_phase = fph; + lin_int = phase - (float)fph; + out = LIN_INTERP(lin_int, buffer[(fph+1) & buffer_mask], + buffer[(fph+2) & buffer_mask]); + phase += increment; + lin_inc = 1.0f / (floor(phase) - last_phase + 1); + lin_inc = lin_inc > 1.0f ? 1.0f : lin_inc; + lin_int = 0.0f; + for (track = last_phase; track < phase; track++) { + lin_int += lin_inc; + buffer[track % buffer_size] = out * fb + + LIN_INTERP(lin_int, last_in, input[pos]); + } + last_in = input[pos]; + buffer_write(output[pos], out); + if (phase >= buffer_size) { + phase -= buffer_size; + } + } + + // Store current phase in instance + plugin_data->phase = phase; + plugin_data->last_phase = last_phase; + plugin_data->last_in = last_in; +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + fadDelayDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (fadDelayDescriptor) { + fadDelayDescriptor->UniqueID = 1192; + fadDelayDescriptor->Label = "fadDelay"; + fadDelayDescriptor->Properties = + 0; + fadDelayDescriptor->Name = + D_("Fractionally Addressed Delay Line"); + fadDelayDescriptor->Maker = + "Steve Harris "; + fadDelayDescriptor->Copyright = + "GPL"; + fadDelayDescriptor->PortCount = 4; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(4, + sizeof(LADSPA_PortDescriptor)); + fadDelayDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(4, + sizeof(LADSPA_PortRangeHint)); + fadDelayDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(4, sizeof(char*)); + fadDelayDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Delay (seconds) */ + port_descriptors[FADDELAY_DELAY] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[FADDELAY_DELAY] = + D_("Delay (seconds)"); + port_range_hints[FADDELAY_DELAY].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_1; + port_range_hints[FADDELAY_DELAY].LowerBound = 0.1; + port_range_hints[FADDELAY_DELAY].UpperBound = 10; + + /* Parameters for Feedback (dB) */ + port_descriptors[FADDELAY_FB_DB] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[FADDELAY_FB_DB] = + D_("Feedback (dB)"); + port_range_hints[FADDELAY_FB_DB].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[FADDELAY_FB_DB].LowerBound = -70; + port_range_hints[FADDELAY_FB_DB].UpperBound = 0; + + /* Parameters for Input */ + port_descriptors[FADDELAY_INPUT] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[FADDELAY_INPUT] = + D_("Input"); + port_range_hints[FADDELAY_INPUT].HintDescriptor = 0; + + /* Parameters for Output */ + port_descriptors[FADDELAY_OUTPUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[FADDELAY_OUTPUT] = + D_("Output"); + port_range_hints[FADDELAY_OUTPUT].HintDescriptor = 0; + + fadDelayDescriptor->activate = activateFadDelay; + fadDelayDescriptor->cleanup = cleanupFadDelay; + fadDelayDescriptor->connect_port = connectPortFadDelay; + fadDelayDescriptor->deactivate = NULL; + fadDelayDescriptor->instantiate = instantiateFadDelay; + fadDelayDescriptor->run = runFadDelay; + fadDelayDescriptor->run_adding = runAddingFadDelay; + fadDelayDescriptor->set_run_adding_gain = setRunAddingGainFadDelay; + } +} + +void _fini() { + if (fadDelayDescriptor) { + free((LADSPA_PortDescriptor *)fadDelayDescriptor->PortDescriptors); + free((char **)fadDelayDescriptor->PortNames); + free((LADSPA_PortRangeHint *)fadDelayDescriptor->PortRangeHints); + free(fadDelayDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/foldover_1213.c b/plugins/ladspa_effect/swh/foldover_1213.c new file mode 100644 index 000000000..76119b5b3 --- /dev/null +++ b/plugins/ladspa_effect/swh/foldover_1213.c @@ -0,0 +1,266 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + + +#define FOLDOVER_DRIVE_P 0 +#define FOLDOVER_PUSH 1 +#define FOLDOVER_INPUT 2 +#define FOLDOVER_OUTPUT 3 + +static LADSPA_Descriptor *foldoverDescriptor = NULL; + +typedef struct { + LADSPA_Data *drive_p; + LADSPA_Data *push; + LADSPA_Data *input; + LADSPA_Data *output; + LADSPA_Data run_adding_gain; +} Foldover; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return foldoverDescriptor; + default: + return NULL; + } +} + +static void cleanupFoldover(LADSPA_Handle instance) { + free(instance); +} + +static void connectPortFoldover( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + Foldover *plugin; + + plugin = (Foldover *)instance; + switch (port) { + case FOLDOVER_DRIVE_P: + plugin->drive_p = data; + break; + case FOLDOVER_PUSH: + plugin->push = data; + break; + case FOLDOVER_INPUT: + plugin->input = data; + break; + case FOLDOVER_OUTPUT: + plugin->output = data; + break; + } +} + +static LADSPA_Handle instantiateFoldover( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + Foldover *plugin_data = (Foldover *)malloc(sizeof(Foldover)); + plugin_data->run_adding_gain = 1.0f; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runFoldover(LADSPA_Handle instance, unsigned long sample_count) { + Foldover *plugin_data = (Foldover *)instance; + + /* Drive (float value) */ + const LADSPA_Data drive_p = *(plugin_data->drive_p); + + /* Skew (float value) */ + const LADSPA_Data push = *(plugin_data->push); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + +#line 18 "foldover_1213.xml" + unsigned long pos; + float x; + const float drive = drive_p + 1.0f; + + for (pos = 0; pos < sample_count; pos++) { + x = input[pos] * drive + push; + buffer_write(output[pos], 1.5f * x - 0.5f * x * x * x); + } +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainFoldover(LADSPA_Handle instance, LADSPA_Data gain) { + ((Foldover *)instance)->run_adding_gain = gain; +} + +static void runAddingFoldover(LADSPA_Handle instance, unsigned long sample_count) { + Foldover *plugin_data = (Foldover *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Drive (float value) */ + const LADSPA_Data drive_p = *(plugin_data->drive_p); + + /* Skew (float value) */ + const LADSPA_Data push = *(plugin_data->push); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + +#line 18 "foldover_1213.xml" + unsigned long pos; + float x; + const float drive = drive_p + 1.0f; + + for (pos = 0; pos < sample_count; pos++) { + x = input[pos] * drive + push; + buffer_write(output[pos], 1.5f * x - 0.5f * x * x * x); + } +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + foldoverDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (foldoverDescriptor) { + foldoverDescriptor->UniqueID = 1213; + foldoverDescriptor->Label = "foldover"; + foldoverDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + foldoverDescriptor->Name = + D_("Foldover distortion"); + foldoverDescriptor->Maker = + "Steve Harris "; + foldoverDescriptor->Copyright = + "GPL"; + foldoverDescriptor->PortCount = 4; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(4, + sizeof(LADSPA_PortDescriptor)); + foldoverDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(4, + sizeof(LADSPA_PortRangeHint)); + foldoverDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(4, sizeof(char*)); + foldoverDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Drive */ + port_descriptors[FOLDOVER_DRIVE_P] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[FOLDOVER_DRIVE_P] = + D_("Drive"); + port_range_hints[FOLDOVER_DRIVE_P].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[FOLDOVER_DRIVE_P].LowerBound = 0; + port_range_hints[FOLDOVER_DRIVE_P].UpperBound = 1; + + /* Parameters for Skew */ + port_descriptors[FOLDOVER_PUSH] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[FOLDOVER_PUSH] = + D_("Skew"); + port_range_hints[FOLDOVER_PUSH].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[FOLDOVER_PUSH].LowerBound = 0; + port_range_hints[FOLDOVER_PUSH].UpperBound = 1; + + /* Parameters for Input */ + port_descriptors[FOLDOVER_INPUT] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[FOLDOVER_INPUT] = + D_("Input"); + port_range_hints[FOLDOVER_INPUT].HintDescriptor = 0; + + /* Parameters for Output */ + port_descriptors[FOLDOVER_OUTPUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[FOLDOVER_OUTPUT] = + D_("Output"); + port_range_hints[FOLDOVER_OUTPUT].HintDescriptor = 0; + + foldoverDescriptor->activate = NULL; + foldoverDescriptor->cleanup = cleanupFoldover; + foldoverDescriptor->connect_port = connectPortFoldover; + foldoverDescriptor->deactivate = NULL; + foldoverDescriptor->instantiate = instantiateFoldover; + foldoverDescriptor->run = runFoldover; + foldoverDescriptor->run_adding = runAddingFoldover; + foldoverDescriptor->set_run_adding_gain = setRunAddingGainFoldover; + } +} + +void _fini() { + if (foldoverDescriptor) { + free((LADSPA_PortDescriptor *)foldoverDescriptor->PortDescriptors); + free((char **)foldoverDescriptor->PortNames); + free((LADSPA_PortRangeHint *)foldoverDescriptor->PortRangeHints); + free(foldoverDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/foverdrive_1196.c b/plugins/ladspa_effect/swh/foverdrive_1196.c new file mode 100644 index 000000000..d00eb052c --- /dev/null +++ b/plugins/ladspa_effect/swh/foverdrive_1196.c @@ -0,0 +1,245 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + + +#define FOVERDRIVE_DRIVE 0 +#define FOVERDRIVE_INPUT 1 +#define FOVERDRIVE_OUTPUT 2 + +static LADSPA_Descriptor *foverdriveDescriptor = NULL; + +typedef struct { + LADSPA_Data *drive; + LADSPA_Data *input; + LADSPA_Data *output; + LADSPA_Data run_adding_gain; +} Foverdrive; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return foverdriveDescriptor; + default: + return NULL; + } +} + +static void cleanupFoverdrive(LADSPA_Handle instance) { + free(instance); +} + +static void connectPortFoverdrive( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + Foverdrive *plugin; + + plugin = (Foverdrive *)instance; + switch (port) { + case FOVERDRIVE_DRIVE: + plugin->drive = data; + break; + case FOVERDRIVE_INPUT: + plugin->input = data; + break; + case FOVERDRIVE_OUTPUT: + plugin->output = data; + break; + } +} + +static LADSPA_Handle instantiateFoverdrive( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + Foverdrive *plugin_data = (Foverdrive *)malloc(sizeof(Foverdrive)); + plugin_data->run_adding_gain = 1.0f; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runFoverdrive(LADSPA_Handle instance, unsigned long sample_count) { + Foverdrive *plugin_data = (Foverdrive *)instance; + + /* Drive level (float value) */ + const LADSPA_Data drive = *(plugin_data->drive); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + +#line 16 "foverdrive_1196.xml" + unsigned long pos; + const float drivem1 = drive - 1.0f; + + for (pos = 0; pos < sample_count; pos++) { + LADSPA_Data x = input[pos]; + const float fx = fabs(x); + buffer_write(output[pos], x*(fx + drive)/(x*x + drivem1*fx + 1.0f)); + } +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainFoverdrive(LADSPA_Handle instance, LADSPA_Data gain) { + ((Foverdrive *)instance)->run_adding_gain = gain; +} + +static void runAddingFoverdrive(LADSPA_Handle instance, unsigned long sample_count) { + Foverdrive *plugin_data = (Foverdrive *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Drive level (float value) */ + const LADSPA_Data drive = *(plugin_data->drive); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + +#line 16 "foverdrive_1196.xml" + unsigned long pos; + const float drivem1 = drive - 1.0f; + + for (pos = 0; pos < sample_count; pos++) { + LADSPA_Data x = input[pos]; + const float fx = fabs(x); + buffer_write(output[pos], x*(fx + drive)/(x*x + drivem1*fx + 1.0f)); + } +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + foverdriveDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (foverdriveDescriptor) { + foverdriveDescriptor->UniqueID = 1196; + foverdriveDescriptor->Label = "foverdrive"; + foverdriveDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + foverdriveDescriptor->Name = + D_("Fast overdrive"); + foverdriveDescriptor->Maker = + "Steve Harris "; + foverdriveDescriptor->Copyright = + "GPL"; + foverdriveDescriptor->PortCount = 3; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(3, + sizeof(LADSPA_PortDescriptor)); + foverdriveDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(3, + sizeof(LADSPA_PortRangeHint)); + foverdriveDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(3, sizeof(char*)); + foverdriveDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Drive level */ + port_descriptors[FOVERDRIVE_DRIVE] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[FOVERDRIVE_DRIVE] = + D_("Drive level"); + port_range_hints[FOVERDRIVE_DRIVE].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MINIMUM; + port_range_hints[FOVERDRIVE_DRIVE].LowerBound = 1; + port_range_hints[FOVERDRIVE_DRIVE].UpperBound = 3; + + /* Parameters for Input */ + port_descriptors[FOVERDRIVE_INPUT] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[FOVERDRIVE_INPUT] = + D_("Input"); + port_range_hints[FOVERDRIVE_INPUT].HintDescriptor = 0; + + /* Parameters for Output */ + port_descriptors[FOVERDRIVE_OUTPUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[FOVERDRIVE_OUTPUT] = + D_("Output"); + port_range_hints[FOVERDRIVE_OUTPUT].HintDescriptor = 0; + + foverdriveDescriptor->activate = NULL; + foverdriveDescriptor->cleanup = cleanupFoverdrive; + foverdriveDescriptor->connect_port = connectPortFoverdrive; + foverdriveDescriptor->deactivate = NULL; + foverdriveDescriptor->instantiate = instantiateFoverdrive; + foverdriveDescriptor->run = runFoverdrive; + foverdriveDescriptor->run_adding = runAddingFoverdrive; + foverdriveDescriptor->set_run_adding_gain = setRunAddingGainFoverdrive; + } +} + +void _fini() { + if (foverdriveDescriptor) { + free((LADSPA_PortDescriptor *)foverdriveDescriptor->PortDescriptors); + free((char **)foverdriveDescriptor->PortNames); + free((LADSPA_PortRangeHint *)foverdriveDescriptor->PortRangeHints); + free(foverdriveDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/freq_tracker_1418.c b/plugins/ladspa_effect/swh/freq_tracker_1418.c new file mode 100644 index 000000000..fff203f92 --- /dev/null +++ b/plugins/ladspa_effect/swh/freq_tracker_1418.c @@ -0,0 +1,330 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + +#line 10 "freq_tracker_1418.xml" + +#include "ladspa-util.h" + +#define FREQTRACKER_SPEED 0 +#define FREQTRACKER_INPUT 1 +#define FREQTRACKER_FREQ 2 + +static LADSPA_Descriptor *freqTrackerDescriptor = NULL; + +typedef struct { + LADSPA_Data *speed; + LADSPA_Data *input; + LADSPA_Data *freq; + int cross_time; + LADSPA_Data f; + LADSPA_Data fo; + float fs; + LADSPA_Data last_amp; + LADSPA_Data run_adding_gain; +} FreqTracker; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return freqTrackerDescriptor; + default: + return NULL; + } +} + +static void activateFreqTracker(LADSPA_Handle instance) { + FreqTracker *plugin_data = (FreqTracker *)instance; + int cross_time = plugin_data->cross_time; + LADSPA_Data f = plugin_data->f; + LADSPA_Data fo = plugin_data->fo; + float fs = plugin_data->fs; + LADSPA_Data last_amp = plugin_data->last_amp; +#line 27 "freq_tracker_1418.xml" + cross_time = 0; + f = 0.0f; + fo = 0.0f; + last_amp = 0.0f; + plugin_data->cross_time = cross_time; + plugin_data->f = f; + plugin_data->fo = fo; + plugin_data->fs = fs; + plugin_data->last_amp = last_amp; + +} + +static void cleanupFreqTracker(LADSPA_Handle instance) { + free(instance); +} + +static void connectPortFreqTracker( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + FreqTracker *plugin; + + plugin = (FreqTracker *)instance; + switch (port) { + case FREQTRACKER_SPEED: + plugin->speed = data; + break; + case FREQTRACKER_INPUT: + plugin->input = data; + break; + case FREQTRACKER_FREQ: + plugin->freq = data; + break; + } +} + +static LADSPA_Handle instantiateFreqTracker( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + FreqTracker *plugin_data = (FreqTracker *)malloc(sizeof(FreqTracker)); + int cross_time; + LADSPA_Data f; + LADSPA_Data fo; + float fs; + LADSPA_Data last_amp; + +#line 19 "freq_tracker_1418.xml" + fs = s_rate; + f = 0.0f; + fo = 0.0f; + cross_time = 0; + last_amp = 0.0f; + + plugin_data->cross_time = cross_time; + plugin_data->f = f; + plugin_data->fo = fo; + plugin_data->fs = fs; + plugin_data->last_amp = last_amp; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runFreqTracker(LADSPA_Handle instance, unsigned long sample_count) { + FreqTracker *plugin_data = (FreqTracker *)instance; + + /* Tracking speed (float value) */ + const LADSPA_Data speed = *(plugin_data->speed); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Frequency (Hz) (array of floats of length sample_count) */ + LADSPA_Data * const freq = plugin_data->freq; + int cross_time = plugin_data->cross_time; + LADSPA_Data f = plugin_data->f; + LADSPA_Data fo = plugin_data->fo; + float fs = plugin_data->fs; + LADSPA_Data last_amp = plugin_data->last_amp; + +#line 34 "freq_tracker_1418.xml" + unsigned long pos; + float xm1 = last_amp; + const float damp_lp = (1.0f - speed) * 0.9f; + const float damp_lpi = 1.0f - damp_lp; + + for (pos = 0; pos < sample_count; pos++) { + if (input[pos] < 0.0f && xm1 > 0.0f) { + if (cross_time > 3.0f) { + f = fs / ((float)cross_time * 2.0f); + } + cross_time = 0; + } + xm1 = input[pos]; + cross_time++; + fo = fo * damp_lp + f * damp_lpi; + fo = flush_to_zero(fo); + buffer_write(freq[pos], fo); + } + + plugin_data->last_amp = xm1; + plugin_data->fo = fo; + plugin_data->f = f; + plugin_data->cross_time = cross_time; +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainFreqTracker(LADSPA_Handle instance, LADSPA_Data gain) { + ((FreqTracker *)instance)->run_adding_gain = gain; +} + +static void runAddingFreqTracker(LADSPA_Handle instance, unsigned long sample_count) { + FreqTracker *plugin_data = (FreqTracker *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Tracking speed (float value) */ + const LADSPA_Data speed = *(plugin_data->speed); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Frequency (Hz) (array of floats of length sample_count) */ + LADSPA_Data * const freq = plugin_data->freq; + int cross_time = plugin_data->cross_time; + LADSPA_Data f = plugin_data->f; + LADSPA_Data fo = plugin_data->fo; + float fs = plugin_data->fs; + LADSPA_Data last_amp = plugin_data->last_amp; + +#line 34 "freq_tracker_1418.xml" + unsigned long pos; + float xm1 = last_amp; + const float damp_lp = (1.0f - speed) * 0.9f; + const float damp_lpi = 1.0f - damp_lp; + + for (pos = 0; pos < sample_count; pos++) { + if (input[pos] < 0.0f && xm1 > 0.0f) { + if (cross_time > 3.0f) { + f = fs / ((float)cross_time * 2.0f); + } + cross_time = 0; + } + xm1 = input[pos]; + cross_time++; + fo = fo * damp_lp + f * damp_lpi; + fo = flush_to_zero(fo); + buffer_write(freq[pos], fo); + } + + plugin_data->last_amp = xm1; + plugin_data->fo = fo; + plugin_data->f = f; + plugin_data->cross_time = cross_time; +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + freqTrackerDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (freqTrackerDescriptor) { + freqTrackerDescriptor->UniqueID = 1418; + freqTrackerDescriptor->Label = "freqTracker"; + freqTrackerDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + freqTrackerDescriptor->Name = + D_("Frequency tracker"); + freqTrackerDescriptor->Maker = + "Steve Harris "; + freqTrackerDescriptor->Copyright = + "GPL"; + freqTrackerDescriptor->PortCount = 3; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(3, + sizeof(LADSPA_PortDescriptor)); + freqTrackerDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(3, + sizeof(LADSPA_PortRangeHint)); + freqTrackerDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(3, sizeof(char*)); + freqTrackerDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Tracking speed */ + port_descriptors[FREQTRACKER_SPEED] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[FREQTRACKER_SPEED] = + D_("Tracking speed"); + port_range_hints[FREQTRACKER_SPEED].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MIDDLE; + port_range_hints[FREQTRACKER_SPEED].LowerBound = 0; + port_range_hints[FREQTRACKER_SPEED].UpperBound = 1; + + /* Parameters for Input */ + port_descriptors[FREQTRACKER_INPUT] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[FREQTRACKER_INPUT] = + D_("Input"); + port_range_hints[FREQTRACKER_INPUT].HintDescriptor = 0; + + /* Parameters for Frequency (Hz) */ + port_descriptors[FREQTRACKER_FREQ] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[FREQTRACKER_FREQ] = + D_("Frequency (Hz)"); + port_range_hints[FREQTRACKER_FREQ].HintDescriptor = 0; + + freqTrackerDescriptor->activate = activateFreqTracker; + freqTrackerDescriptor->cleanup = cleanupFreqTracker; + freqTrackerDescriptor->connect_port = connectPortFreqTracker; + freqTrackerDescriptor->deactivate = NULL; + freqTrackerDescriptor->instantiate = instantiateFreqTracker; + freqTrackerDescriptor->run = runFreqTracker; + freqTrackerDescriptor->run_adding = runAddingFreqTracker; + freqTrackerDescriptor->set_run_adding_gain = setRunAddingGainFreqTracker; + } +} + +void _fini() { + if (freqTrackerDescriptor) { + free((LADSPA_PortDescriptor *)freqTrackerDescriptor->PortDescriptors); + free((char **)freqTrackerDescriptor->PortNames); + free((LADSPA_PortRangeHint *)freqTrackerDescriptor->PortRangeHints); + free(freqTrackerDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/gate_1410.c b/plugins/ladspa_effect/swh/gate_1410.c new file mode 100644 index 000000000..fddd78fc0 --- /dev/null +++ b/plugins/ladspa_effect/swh/gate_1410.c @@ -0,0 +1,593 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + +#line 10 "gate_1410.xml" + +#include "ladspa-util.h" +#include "util/biquad.h" + +#define ENV_TR 0.0001f + +#define CLOSED 1 +#define OPENING 2 +#define OPEN 3 +#define CLOSING 4 + +#define GATE_LF_FC 0 +#define GATE_HF_FC 1 +#define GATE_THRESHOLD 2 +#define GATE_ATTACK 3 +#define GATE_HOLD 4 +#define GATE_DECAY 5 +#define GATE_RANGE 6 +#define GATE_SELECT 7 +#define GATE_INPUT 8 +#define GATE_OUTPUT 9 + +static LADSPA_Descriptor *gateDescriptor = NULL; + +typedef struct { + LADSPA_Data *lf_fc; + LADSPA_Data *hf_fc; + LADSPA_Data *threshold; + LADSPA_Data *attack; + LADSPA_Data *hold; + LADSPA_Data *decay; + LADSPA_Data *range; + LADSPA_Data *select; + LADSPA_Data *input; + LADSPA_Data *output; + float env; + float fs; + float gate; + biquad * hf; + int hold_count; + biquad * lf; + int state; + LADSPA_Data run_adding_gain; +} Gate; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return gateDescriptor; + default: + return NULL; + } +} + +static void activateGate(LADSPA_Handle instance) { + Gate *plugin_data = (Gate *)instance; + float env = plugin_data->env; + float fs = plugin_data->fs; + float gate = plugin_data->gate; + biquad *hf = plugin_data->hf; + int hold_count = plugin_data->hold_count; + biquad *lf = plugin_data->lf; + int state = plugin_data->state; +#line 41 "gate_1410.xml" + env = 0.0f; + gate = 0.0f; + state = CLOSED; + biquad_init(lf); + biquad_init(hf); + plugin_data->env = env; + plugin_data->fs = fs; + plugin_data->gate = gate; + plugin_data->hf = hf; + plugin_data->hold_count = hold_count; + plugin_data->lf = lf; + plugin_data->state = state; + +} + +static void cleanupGate(LADSPA_Handle instance) { +#line 49 "gate_1410.xml" + Gate *plugin_data = (Gate *)instance; + free(plugin_data->lf); + free(plugin_data->hf); + free(instance); +} + +static void connectPortGate( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + Gate *plugin; + + plugin = (Gate *)instance; + switch (port) { + case GATE_LF_FC: + plugin->lf_fc = data; + break; + case GATE_HF_FC: + plugin->hf_fc = data; + break; + case GATE_THRESHOLD: + plugin->threshold = data; + break; + case GATE_ATTACK: + plugin->attack = data; + break; + case GATE_HOLD: + plugin->hold = data; + break; + case GATE_DECAY: + plugin->decay = data; + break; + case GATE_RANGE: + plugin->range = data; + break; + case GATE_SELECT: + plugin->select = data; + break; + case GATE_INPUT: + plugin->input = data; + break; + case GATE_OUTPUT: + plugin->output = data; + break; + } +} + +static LADSPA_Handle instantiateGate( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + Gate *plugin_data = (Gate *)malloc(sizeof(Gate)); + float env; + float fs; + float gate; + biquad *hf = NULL; + int hold_count; + biquad *lf = NULL; + int state; + +#line 28 "gate_1410.xml" + fs = s_rate; + env = 0.0f; + gate = 0.0f; + state = CLOSED; + hold_count = 0; + + lf = malloc(sizeof(biquad)); + hf = malloc(sizeof(biquad)); + biquad_init(lf); + biquad_init(hf); + + plugin_data->env = env; + plugin_data->fs = fs; + plugin_data->gate = gate; + plugin_data->hf = hf; + plugin_data->hold_count = hold_count; + plugin_data->lf = lf; + plugin_data->state = state; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runGate(LADSPA_Handle instance, unsigned long sample_count) { + Gate *plugin_data = (Gate *)instance; + + /* LF key filter (Hz) (float value) */ + const LADSPA_Data lf_fc = *(plugin_data->lf_fc); + + /* HF key filter (Hz) (float value) */ + const LADSPA_Data hf_fc = *(plugin_data->hf_fc); + + /* Threshold (dB) (float value) */ + const LADSPA_Data threshold = *(plugin_data->threshold); + + /* Attack (ms) (float value) */ + const LADSPA_Data attack = *(plugin_data->attack); + + /* Hold (ms) (float value) */ + const LADSPA_Data hold = *(plugin_data->hold); + + /* Decay (ms) (float value) */ + const LADSPA_Data decay = *(plugin_data->decay); + + /* Range (dB) (float value) */ + const LADSPA_Data range = *(plugin_data->range); + + /* Output select (-1 = key listen, 0 = gate, 1 = bypass) (float value) */ + const LADSPA_Data select = *(plugin_data->select); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + float env = plugin_data->env; + float fs = plugin_data->fs; + float gate = plugin_data->gate; + biquad * hf = plugin_data->hf; + int hold_count = plugin_data->hold_count; + biquad * lf = plugin_data->lf; + int state = plugin_data->state; + +#line 55 "gate_1410.xml" + unsigned long pos; + float cut = DB_CO(range); + float t_level = DB_CO(threshold); + float a_rate = 1000.0f / (attack * fs); + float d_rate = 1000.0f / (decay * fs); + float post_filter, apost_filter; + int op = f_round(select); + + ls_set_params(lf, lf_fc, -40.0f, 0.6f, fs); + hs_set_params(hf, hf_fc, -50.0f, 0.6f, fs); + + for (pos = 0; pos < sample_count; pos++) { + post_filter = biquad_run(lf, input[pos]); + post_filter = biquad_run(hf, post_filter); + apost_filter = fabs(post_filter); + + if (apost_filter > env) { + env = apost_filter; + } else { + env = apost_filter * ENV_TR + env * (1.0f - ENV_TR); + } + + if (state == CLOSED) { + if (env >= t_level) { + state = OPENING; + } + } else if (state == OPENING) { + gate += a_rate; + if (gate >= 1.0f) { + gate = 1.0f; + state = OPEN; + hold_count = f_round(hold * fs * 0.001f); + plugin_data->hold_count = hold_count; + } + } else if (state == OPEN) { + if (hold_count <= 0) { + if (env < t_level) { + state = CLOSING; + } + } else { + hold_count--; + } + } else if (state == CLOSING) { + gate -= d_rate; + if (env >= t_level) { + state = OPENING; + } else if (gate <= 0.0f) { + gate = 0.0f; + state = CLOSED; + } + } + + if (op == 0) { + buffer_write(output[pos], input[pos] * (cut * (1.0f - gate) + gate)); + } else if (op == -1) { + buffer_write(output[pos], post_filter); + } else { + buffer_write(output[pos], input[pos]); + } + } + + plugin_data->env = env; + plugin_data->gate = gate; + plugin_data->state = state; + plugin_data->hold_count = hold_count; +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainGate(LADSPA_Handle instance, LADSPA_Data gain) { + ((Gate *)instance)->run_adding_gain = gain; +} + +static void runAddingGate(LADSPA_Handle instance, unsigned long sample_count) { + Gate *plugin_data = (Gate *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* LF key filter (Hz) (float value) */ + const LADSPA_Data lf_fc = *(plugin_data->lf_fc); + + /* HF key filter (Hz) (float value) */ + const LADSPA_Data hf_fc = *(plugin_data->hf_fc); + + /* Threshold (dB) (float value) */ + const LADSPA_Data threshold = *(plugin_data->threshold); + + /* Attack (ms) (float value) */ + const LADSPA_Data attack = *(plugin_data->attack); + + /* Hold (ms) (float value) */ + const LADSPA_Data hold = *(plugin_data->hold); + + /* Decay (ms) (float value) */ + const LADSPA_Data decay = *(plugin_data->decay); + + /* Range (dB) (float value) */ + const LADSPA_Data range = *(plugin_data->range); + + /* Output select (-1 = key listen, 0 = gate, 1 = bypass) (float value) */ + const LADSPA_Data select = *(plugin_data->select); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + float env = plugin_data->env; + float fs = plugin_data->fs; + float gate = plugin_data->gate; + biquad * hf = plugin_data->hf; + int hold_count = plugin_data->hold_count; + biquad * lf = plugin_data->lf; + int state = plugin_data->state; + +#line 55 "gate_1410.xml" + unsigned long pos; + float cut = DB_CO(range); + float t_level = DB_CO(threshold); + float a_rate = 1000.0f / (attack * fs); + float d_rate = 1000.0f / (decay * fs); + float post_filter, apost_filter; + int op = f_round(select); + + ls_set_params(lf, lf_fc, -40.0f, 0.6f, fs); + hs_set_params(hf, hf_fc, -50.0f, 0.6f, fs); + + for (pos = 0; pos < sample_count; pos++) { + post_filter = biquad_run(lf, input[pos]); + post_filter = biquad_run(hf, post_filter); + apost_filter = fabs(post_filter); + + if (apost_filter > env) { + env = apost_filter; + } else { + env = apost_filter * ENV_TR + env * (1.0f - ENV_TR); + } + + if (state == CLOSED) { + if (env >= t_level) { + state = OPENING; + } + } else if (state == OPENING) { + gate += a_rate; + if (gate >= 1.0f) { + gate = 1.0f; + state = OPEN; + hold_count = f_round(hold * fs * 0.001f); + plugin_data->hold_count = hold_count; + } + } else if (state == OPEN) { + if (hold_count <= 0) { + if (env < t_level) { + state = CLOSING; + } + } else { + hold_count--; + } + } else if (state == CLOSING) { + gate -= d_rate; + if (env >= t_level) { + state = OPENING; + } else if (gate <= 0.0f) { + gate = 0.0f; + state = CLOSED; + } + } + + if (op == 0) { + buffer_write(output[pos], input[pos] * (cut * (1.0f - gate) + gate)); + } else if (op == -1) { + buffer_write(output[pos], post_filter); + } else { + buffer_write(output[pos], input[pos]); + } + } + + plugin_data->env = env; + plugin_data->gate = gate; + plugin_data->state = state; + plugin_data->hold_count = hold_count; +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + gateDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (gateDescriptor) { + gateDescriptor->UniqueID = 1410; + gateDescriptor->Label = "gate"; + gateDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + gateDescriptor->Name = + D_("Gate"); + gateDescriptor->Maker = + "Steve Harris "; + gateDescriptor->Copyright = + "GPL"; + gateDescriptor->PortCount = 10; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(10, + sizeof(LADSPA_PortDescriptor)); + gateDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(10, + sizeof(LADSPA_PortRangeHint)); + gateDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(10, sizeof(char*)); + gateDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for LF key filter (Hz) */ + port_descriptors[GATE_LF_FC] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[GATE_LF_FC] = + D_("LF key filter (Hz)"); + port_range_hints[GATE_LF_FC].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_SAMPLE_RATE | LADSPA_HINT_DEFAULT_MINIMUM; + port_range_hints[GATE_LF_FC].LowerBound = 0.0007f; + port_range_hints[GATE_LF_FC].UpperBound = 0.1; + + /* Parameters for HF key filter (Hz) */ + port_descriptors[GATE_HF_FC] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[GATE_HF_FC] = + D_("HF key filter (Hz)"); + port_range_hints[GATE_HF_FC].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_SAMPLE_RATE | LADSPA_HINT_DEFAULT_MAXIMUM; + port_range_hints[GATE_HF_FC].LowerBound = 0.005f; + port_range_hints[GATE_HF_FC].UpperBound = 0.49; + + /* Parameters for Threshold (dB) */ + port_descriptors[GATE_THRESHOLD] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[GATE_THRESHOLD] = + D_("Threshold (dB)"); + port_range_hints[GATE_THRESHOLD].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MINIMUM; + port_range_hints[GATE_THRESHOLD].LowerBound = -70; + port_range_hints[GATE_THRESHOLD].UpperBound = +20; + + /* Parameters for Attack (ms) */ + port_descriptors[GATE_ATTACK] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[GATE_ATTACK] = + D_("Attack (ms)"); + port_range_hints[GATE_ATTACK].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_LOW; + port_range_hints[GATE_ATTACK].LowerBound = 0.01; + port_range_hints[GATE_ATTACK].UpperBound = 1000; + + /* Parameters for Hold (ms) */ + port_descriptors[GATE_HOLD] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[GATE_HOLD] = + D_("Hold (ms)"); + port_range_hints[GATE_HOLD].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_HIGH; + port_range_hints[GATE_HOLD].LowerBound = 2; + port_range_hints[GATE_HOLD].UpperBound = 2000; + + /* Parameters for Decay (ms) */ + port_descriptors[GATE_DECAY] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[GATE_DECAY] = + D_("Decay (ms)"); + port_range_hints[GATE_DECAY].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MIDDLE; + port_range_hints[GATE_DECAY].LowerBound = 2; + port_range_hints[GATE_DECAY].UpperBound = 4000; + + /* Parameters for Range (dB) */ + port_descriptors[GATE_RANGE] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[GATE_RANGE] = + D_("Range (dB)"); + port_range_hints[GATE_RANGE].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MINIMUM; + port_range_hints[GATE_RANGE].LowerBound = -90; + port_range_hints[GATE_RANGE].UpperBound = 0; + + /* Parameters for Output select (-1 = key listen, 0 = gate, 1 = bypass) */ + port_descriptors[GATE_SELECT] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[GATE_SELECT] = + D_("Output select (-1 = key listen, 0 = gate, 1 = bypass)"); + port_range_hints[GATE_SELECT].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_INTEGER | LADSPA_HINT_DEFAULT_0; + port_range_hints[GATE_SELECT].LowerBound = -1; + port_range_hints[GATE_SELECT].UpperBound = 1; + + /* Parameters for Input */ + port_descriptors[GATE_INPUT] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[GATE_INPUT] = + D_("Input"); + port_range_hints[GATE_INPUT].HintDescriptor = 0; + + /* Parameters for Output */ + port_descriptors[GATE_OUTPUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[GATE_OUTPUT] = + D_("Output"); + port_range_hints[GATE_OUTPUT].HintDescriptor = 0; + + gateDescriptor->activate = activateGate; + gateDescriptor->cleanup = cleanupGate; + gateDescriptor->connect_port = connectPortGate; + gateDescriptor->deactivate = NULL; + gateDescriptor->instantiate = instantiateGate; + gateDescriptor->run = runGate; + gateDescriptor->run_adding = runAddingGate; + gateDescriptor->set_run_adding_gain = setRunAddingGainGate; + } +} + +void _fini() { + if (gateDescriptor) { + free((LADSPA_PortDescriptor *)gateDescriptor->PortDescriptors); + free((char **)gateDescriptor->PortNames); + free((LADSPA_PortRangeHint *)gateDescriptor->PortRangeHints); + free(gateDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/giant_flange_1437.c b/plugins/ladspa_effect/swh/giant_flange_1437.c new file mode 100644 index 000000000..967334c6e --- /dev/null +++ b/plugins/ladspa_effect/swh/giant_flange_1437.c @@ -0,0 +1,648 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + +#line 10 "giant_flange_1437.xml" + +#include +#include "ladspa-util.h" + +#define INT_SCALE 16384.0f +/* INT_SCALE reciprocal includes factor of two scaling */ +#define INT_SCALE_R 0.000030517578125f + +#define MAX_AMP 1.0f +#define CLIP 0.8f +#define CLIP_A ((MAX_AMP - CLIP) * (MAX_AMP - CLIP)) +#define CLIP_B (MAX_AMP - 2.0f * CLIP) + +#define GIANTFLANGE_DELDOUBLE 0 +#define GIANTFLANGE_FREQ1 1 +#define GIANTFLANGE_DELAY1 2 +#define GIANTFLANGE_FREQ2 3 +#define GIANTFLANGE_DELAY2 4 +#define GIANTFLANGE_FEEDBACK 5 +#define GIANTFLANGE_WET 6 +#define GIANTFLANGE_INPUT 7 +#define GIANTFLANGE_OUTPUT 8 + +static LADSPA_Descriptor *giantFlangeDescriptor = NULL; + +typedef struct { + LADSPA_Data *deldouble; + LADSPA_Data *freq1; + LADSPA_Data *delay1; + LADSPA_Data *freq2; + LADSPA_Data *delay2; + LADSPA_Data *feedback; + LADSPA_Data *wet; + LADSPA_Data *input; + LADSPA_Data *output; + int16_t * buffer; + unsigned int buffer_mask; + unsigned int buffer_pos; + float fs; + float x1; + float x2; + float y1; + float y2; + LADSPA_Data run_adding_gain; +} GiantFlange; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return giantFlangeDescriptor; + default: + return NULL; + } +} + +static void activateGiantFlange(LADSPA_Handle instance) { + GiantFlange *plugin_data = (GiantFlange *)instance; + int16_t *buffer = plugin_data->buffer; + unsigned int buffer_mask = plugin_data->buffer_mask; + unsigned int buffer_pos = plugin_data->buffer_pos; + float fs = plugin_data->fs; + float x1 = plugin_data->x1; + float x2 = plugin_data->x2; + float y1 = plugin_data->y1; + float y2 = plugin_data->y2; +#line 51 "giant_flange_1437.xml" + memset(buffer, 0, (buffer_mask + 1) * sizeof(int16_t)); + plugin_data->buffer = buffer; + plugin_data->buffer_mask = buffer_mask; + plugin_data->buffer_pos = buffer_pos; + plugin_data->fs = fs; + plugin_data->x1 = x1; + plugin_data->x2 = x2; + plugin_data->y1 = y1; + plugin_data->y2 = y2; + +} + +static void cleanupGiantFlange(LADSPA_Handle instance) { +#line 55 "giant_flange_1437.xml" + GiantFlange *plugin_data = (GiantFlange *)instance; + free(plugin_data->buffer); + free(instance); +} + +static void connectPortGiantFlange( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + GiantFlange *plugin; + + plugin = (GiantFlange *)instance; + switch (port) { + case GIANTFLANGE_DELDOUBLE: + plugin->deldouble = data; + break; + case GIANTFLANGE_FREQ1: + plugin->freq1 = data; + break; + case GIANTFLANGE_DELAY1: + plugin->delay1 = data; + break; + case GIANTFLANGE_FREQ2: + plugin->freq2 = data; + break; + case GIANTFLANGE_DELAY2: + plugin->delay2 = data; + break; + case GIANTFLANGE_FEEDBACK: + plugin->feedback = data; + break; + case GIANTFLANGE_WET: + plugin->wet = data; + break; + case GIANTFLANGE_INPUT: + plugin->input = data; + break; + case GIANTFLANGE_OUTPUT: + plugin->output = data; + break; + } +} + +static LADSPA_Handle instantiateGiantFlange( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + GiantFlange *plugin_data = (GiantFlange *)malloc(sizeof(GiantFlange)); + int16_t *buffer = NULL; + unsigned int buffer_mask; + unsigned int buffer_pos; + float fs; + float x1; + float x2; + float y1; + float y2; + +#line 35 "giant_flange_1437.xml" + int buffer_size = 32768; + + fs = s_rate; + while (buffer_size < fs * 10.5f) { + buffer_size *= 2; + } + buffer = calloc(buffer_size, sizeof(int16_t)); + buffer_mask = buffer_size - 1; + buffer_pos = 0; + x1 = 0.5f; + y1 = 0.0f; + x2 = 0.5f; + y2 = 0.0f; + + plugin_data->buffer = buffer; + plugin_data->buffer_mask = buffer_mask; + plugin_data->buffer_pos = buffer_pos; + plugin_data->fs = fs; + plugin_data->x1 = x1; + plugin_data->x2 = x2; + plugin_data->y1 = y1; + plugin_data->y2 = y2; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runGiantFlange(LADSPA_Handle instance, unsigned long sample_count) { + GiantFlange *plugin_data = (GiantFlange *)instance; + + /* Double delay (float value) */ + const LADSPA_Data deldouble = *(plugin_data->deldouble); + + /* LFO frequency 1 (Hz) (float value) */ + const LADSPA_Data freq1 = *(plugin_data->freq1); + + /* Delay 1 range (s) (float value) */ + const LADSPA_Data delay1 = *(plugin_data->delay1); + + /* LFO frequency 2 (Hz) (float value) */ + const LADSPA_Data freq2 = *(plugin_data->freq2); + + /* Delay 2 range (s) (float value) */ + const LADSPA_Data delay2 = *(plugin_data->delay2); + + /* Feedback (float value) */ + const LADSPA_Data feedback = *(plugin_data->feedback); + + /* Dry/Wet level (float value) */ + const LADSPA_Data wet = *(plugin_data->wet); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + int16_t * buffer = plugin_data->buffer; + unsigned int buffer_mask = plugin_data->buffer_mask; + unsigned int buffer_pos = plugin_data->buffer_pos; + float fs = plugin_data->fs; + float x1 = plugin_data->x1; + float x2 = plugin_data->x2; + float y1 = plugin_data->y1; + float y2 = plugin_data->y2; + +#line 59 "giant_flange_1437.xml" + unsigned long pos; + const float omega1 = 6.2831852f * (freq1 / fs); + const float omega2 = 6.2831852f * (freq2 / fs); + float fb; + float d1, d2; + float d1out, d2out; + float fbs; + + if (feedback > 99.0f) { + fb = 0.99f; + } else if (feedback < -99.0f) { + fb = -0.99f; + } else { + fb = feedback * 0.01f; + } + + if (f_round(deldouble)) { + const float dr1 = delay1 * fs * 0.25f; + const float dr2 = delay2 * fs * 0.25f; + + for (pos = 0; pos < sample_count; pos++) { + /* Write input into delay line */ + buffer[buffer_pos] = f_round(input[pos] * INT_SCALE); + + /* Calcuate delays */ + d1 = (x1 + 1.0f) * dr1; + d2 = (y2 + 1.0f) * dr2; + + d1out = buffer[(buffer_pos - f_round(d1)) & buffer_mask] * INT_SCALE_R; + d2out = buffer[(buffer_pos - f_round(d2)) & buffer_mask] * INT_SCALE_R; + + /* Add feedback, must be done afterwards for case where delay = 0 */ + fbs = input[pos] + (d1out + d2out) * fb; + if(fbs < CLIP && fbs > -CLIP) { + buffer[buffer_pos] = fbs * INT_SCALE; + } else if (fbs > 0.0f) { + buffer[buffer_pos] = (MAX_AMP - (CLIP_A / (CLIP_B + fbs))) * + INT_SCALE; + } else { + buffer[buffer_pos] = (MAX_AMP - (CLIP_A / (CLIP_B - fbs))) * + -INT_SCALE; + } + + /* Write output */ + buffer_write(output[pos], LIN_INTERP(wet, input[pos], d1out + d2out)); + + if (pos % 2) { + buffer_pos = (buffer_pos + 1) & buffer_mask; + } + + /* Run LFOs */ + x1 -= omega1 * y1; + y1 += omega1 * x1; + x2 -= omega2 * y2; + y2 += omega2 * x2; + } + } else { + const float dr1 = delay1 * fs * 0.5f; + const float dr2 = delay2 * fs * 0.5f; + + for (pos = 0; pos < sample_count; pos++) { + /* Write input into delay line */ + buffer[buffer_pos] = f_round(input[pos] * INT_SCALE); + + /* Calcuate delays */ + d1 = (x1 + 1.0f) * dr1; + d2 = (y2 + 1.0f) * dr2; + + d1out = buffer[(buffer_pos - f_round(d1)) & buffer_mask] * INT_SCALE_R; + d2out = buffer[(buffer_pos - f_round(d2)) & buffer_mask] * INT_SCALE_R; + + /* Add feedback, must be done afterwards for case where delay = 0 */ + fbs = input[pos] + (d1out + d2out) * fb; + if(fbs < CLIP && fbs > -CLIP) { + buffer[buffer_pos] = fbs * INT_SCALE; + } else if (fbs > 0.0f) { + buffer[buffer_pos] = (MAX_AMP - (CLIP_A / (CLIP_B + fbs))) * + INT_SCALE; + } else { + buffer[buffer_pos] = (MAX_AMP - (CLIP_A / (CLIP_B - fbs))) * + -INT_SCALE; + } + + /* Write output */ + buffer_write(output[pos], LIN_INTERP(wet, input[pos], d1out + d2out)); + + buffer_pos = (buffer_pos + 1) & buffer_mask; + + /* Run LFOs */ + x1 -= omega1 * y1; + y1 += omega1 * x1; + x2 -= omega2 * y2; + y2 += omega2 * x2; + } + } + + plugin_data->x1 = x1; + plugin_data->y1 = y1; + plugin_data->x2 = x2; + plugin_data->y2 = y2; + plugin_data->buffer_pos = buffer_pos; +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainGiantFlange(LADSPA_Handle instance, LADSPA_Data gain) { + ((GiantFlange *)instance)->run_adding_gain = gain; +} + +static void runAddingGiantFlange(LADSPA_Handle instance, unsigned long sample_count) { + GiantFlange *plugin_data = (GiantFlange *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Double delay (float value) */ + const LADSPA_Data deldouble = *(plugin_data->deldouble); + + /* LFO frequency 1 (Hz) (float value) */ + const LADSPA_Data freq1 = *(plugin_data->freq1); + + /* Delay 1 range (s) (float value) */ + const LADSPA_Data delay1 = *(plugin_data->delay1); + + /* LFO frequency 2 (Hz) (float value) */ + const LADSPA_Data freq2 = *(plugin_data->freq2); + + /* Delay 2 range (s) (float value) */ + const LADSPA_Data delay2 = *(plugin_data->delay2); + + /* Feedback (float value) */ + const LADSPA_Data feedback = *(plugin_data->feedback); + + /* Dry/Wet level (float value) */ + const LADSPA_Data wet = *(plugin_data->wet); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + int16_t * buffer = plugin_data->buffer; + unsigned int buffer_mask = plugin_data->buffer_mask; + unsigned int buffer_pos = plugin_data->buffer_pos; + float fs = plugin_data->fs; + float x1 = plugin_data->x1; + float x2 = plugin_data->x2; + float y1 = plugin_data->y1; + float y2 = plugin_data->y2; + +#line 59 "giant_flange_1437.xml" + unsigned long pos; + const float omega1 = 6.2831852f * (freq1 / fs); + const float omega2 = 6.2831852f * (freq2 / fs); + float fb; + float d1, d2; + float d1out, d2out; + float fbs; + + if (feedback > 99.0f) { + fb = 0.99f; + } else if (feedback < -99.0f) { + fb = -0.99f; + } else { + fb = feedback * 0.01f; + } + + if (f_round(deldouble)) { + const float dr1 = delay1 * fs * 0.25f; + const float dr2 = delay2 * fs * 0.25f; + + for (pos = 0; pos < sample_count; pos++) { + /* Write input into delay line */ + buffer[buffer_pos] = f_round(input[pos] * INT_SCALE); + + /* Calcuate delays */ + d1 = (x1 + 1.0f) * dr1; + d2 = (y2 + 1.0f) * dr2; + + d1out = buffer[(buffer_pos - f_round(d1)) & buffer_mask] * INT_SCALE_R; + d2out = buffer[(buffer_pos - f_round(d2)) & buffer_mask] * INT_SCALE_R; + + /* Add feedback, must be done afterwards for case where delay = 0 */ + fbs = input[pos] + (d1out + d2out) * fb; + if(fbs < CLIP && fbs > -CLIP) { + buffer[buffer_pos] = fbs * INT_SCALE; + } else if (fbs > 0.0f) { + buffer[buffer_pos] = (MAX_AMP - (CLIP_A / (CLIP_B + fbs))) * + INT_SCALE; + } else { + buffer[buffer_pos] = (MAX_AMP - (CLIP_A / (CLIP_B - fbs))) * + -INT_SCALE; + } + + /* Write output */ + buffer_write(output[pos], LIN_INTERP(wet, input[pos], d1out + d2out)); + + if (pos % 2) { + buffer_pos = (buffer_pos + 1) & buffer_mask; + } + + /* Run LFOs */ + x1 -= omega1 * y1; + y1 += omega1 * x1; + x2 -= omega2 * y2; + y2 += omega2 * x2; + } + } else { + const float dr1 = delay1 * fs * 0.5f; + const float dr2 = delay2 * fs * 0.5f; + + for (pos = 0; pos < sample_count; pos++) { + /* Write input into delay line */ + buffer[buffer_pos] = f_round(input[pos] * INT_SCALE); + + /* Calcuate delays */ + d1 = (x1 + 1.0f) * dr1; + d2 = (y2 + 1.0f) * dr2; + + d1out = buffer[(buffer_pos - f_round(d1)) & buffer_mask] * INT_SCALE_R; + d2out = buffer[(buffer_pos - f_round(d2)) & buffer_mask] * INT_SCALE_R; + + /* Add feedback, must be done afterwards for case where delay = 0 */ + fbs = input[pos] + (d1out + d2out) * fb; + if(fbs < CLIP && fbs > -CLIP) { + buffer[buffer_pos] = fbs * INT_SCALE; + } else if (fbs > 0.0f) { + buffer[buffer_pos] = (MAX_AMP - (CLIP_A / (CLIP_B + fbs))) * + INT_SCALE; + } else { + buffer[buffer_pos] = (MAX_AMP - (CLIP_A / (CLIP_B - fbs))) * + -INT_SCALE; + } + + /* Write output */ + buffer_write(output[pos], LIN_INTERP(wet, input[pos], d1out + d2out)); + + buffer_pos = (buffer_pos + 1) & buffer_mask; + + /* Run LFOs */ + x1 -= omega1 * y1; + y1 += omega1 * x1; + x2 -= omega2 * y2; + y2 += omega2 * x2; + } + } + + plugin_data->x1 = x1; + plugin_data->y1 = y1; + plugin_data->x2 = x2; + plugin_data->y2 = y2; + plugin_data->buffer_pos = buffer_pos; +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + giantFlangeDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (giantFlangeDescriptor) { + giantFlangeDescriptor->UniqueID = 1437; + giantFlangeDescriptor->Label = "giantFlange"; + giantFlangeDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + giantFlangeDescriptor->Name = + D_("Giant flange"); + giantFlangeDescriptor->Maker = + "Steve Harris "; + giantFlangeDescriptor->Copyright = + "GPL"; + giantFlangeDescriptor->PortCount = 9; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(9, + sizeof(LADSPA_PortDescriptor)); + giantFlangeDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(9, + sizeof(LADSPA_PortRangeHint)); + giantFlangeDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(9, sizeof(char*)); + giantFlangeDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Double delay */ + port_descriptors[GIANTFLANGE_DELDOUBLE] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[GIANTFLANGE_DELDOUBLE] = + D_("Double delay"); + port_range_hints[GIANTFLANGE_DELDOUBLE].HintDescriptor = 0; + + /* Parameters for LFO frequency 1 (Hz) */ + port_descriptors[GIANTFLANGE_FREQ1] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[GIANTFLANGE_FREQ1] = + D_("LFO frequency 1 (Hz)"); + port_range_hints[GIANTFLANGE_FREQ1].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_1; + port_range_hints[GIANTFLANGE_FREQ1].LowerBound = 0; + port_range_hints[GIANTFLANGE_FREQ1].UpperBound = 30.0; + + /* Parameters for Delay 1 range (s) */ + port_descriptors[GIANTFLANGE_DELAY1] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[GIANTFLANGE_DELAY1] = + D_("Delay 1 range (s)"); + port_range_hints[GIANTFLANGE_DELAY1].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_LOW; + port_range_hints[GIANTFLANGE_DELAY1].LowerBound = 0; + port_range_hints[GIANTFLANGE_DELAY1].UpperBound = 10.5; + + /* Parameters for LFO frequency 2 (Hz) */ + port_descriptors[GIANTFLANGE_FREQ2] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[GIANTFLANGE_FREQ2] = + D_("LFO frequency 2 (Hz)"); + port_range_hints[GIANTFLANGE_FREQ2].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_1; + port_range_hints[GIANTFLANGE_FREQ2].LowerBound = 0; + port_range_hints[GIANTFLANGE_FREQ2].UpperBound = 30.0; + + /* Parameters for Delay 2 range (s) */ + port_descriptors[GIANTFLANGE_DELAY2] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[GIANTFLANGE_DELAY2] = + D_("Delay 2 range (s)"); + port_range_hints[GIANTFLANGE_DELAY2].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[GIANTFLANGE_DELAY2].LowerBound = 0; + port_range_hints[GIANTFLANGE_DELAY2].UpperBound = 10.5; + + /* Parameters for Feedback */ + port_descriptors[GIANTFLANGE_FEEDBACK] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[GIANTFLANGE_FEEDBACK] = + D_("Feedback"); + port_range_hints[GIANTFLANGE_FEEDBACK].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[GIANTFLANGE_FEEDBACK].LowerBound = -100; + port_range_hints[GIANTFLANGE_FEEDBACK].UpperBound = 100; + + /* Parameters for Dry/Wet level */ + port_descriptors[GIANTFLANGE_WET] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[GIANTFLANGE_WET] = + D_("Dry/Wet level"); + port_range_hints[GIANTFLANGE_WET].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[GIANTFLANGE_WET].LowerBound = 0; + port_range_hints[GIANTFLANGE_WET].UpperBound = 1; + + /* Parameters for Input */ + port_descriptors[GIANTFLANGE_INPUT] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[GIANTFLANGE_INPUT] = + D_("Input"); + port_range_hints[GIANTFLANGE_INPUT].HintDescriptor = 0; + + /* Parameters for Output */ + port_descriptors[GIANTFLANGE_OUTPUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[GIANTFLANGE_OUTPUT] = + D_("Output"); + port_range_hints[GIANTFLANGE_OUTPUT].HintDescriptor = 0; + + giantFlangeDescriptor->activate = activateGiantFlange; + giantFlangeDescriptor->cleanup = cleanupGiantFlange; + giantFlangeDescriptor->connect_port = connectPortGiantFlange; + giantFlangeDescriptor->deactivate = NULL; + giantFlangeDescriptor->instantiate = instantiateGiantFlange; + giantFlangeDescriptor->run = runGiantFlange; + giantFlangeDescriptor->run_adding = runAddingGiantFlange; + giantFlangeDescriptor->set_run_adding_gain = setRunAddingGainGiantFlange; + } +} + +void _fini() { + if (giantFlangeDescriptor) { + free((LADSPA_PortDescriptor *)giantFlangeDescriptor->PortDescriptors); + free((char **)giantFlangeDescriptor->PortNames); + free((LADSPA_PortRangeHint *)giantFlangeDescriptor->PortRangeHints); + free(giantFlangeDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/gong_1424.c b/plugins/ladspa_effect/swh/gong_1424.c new file mode 100644 index 000000000..deca3cd9e --- /dev/null +++ b/plugins/ladspa_effect/swh/gong_1424.c @@ -0,0 +1,958 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + +#line 10 "gong_1424.xml" + +#include "util/waveguide_nl.h" + +#define RUN_WG(n, junct_a, junct_b) waveguide_nl_process(w[n], junct_a - out[n*2+1], junct_b - out[n*2], out+n*2, out+n*2+1) + +#define GONG_DAMP_I 0 +#define GONG_DAMP_O 1 +#define GONG_MICPOS 2 +#define GONG_SCALE0 3 +#define GONG_APA0 4 +#define GONG_APB0 5 +#define GONG_SCALE1 6 +#define GONG_APA1 7 +#define GONG_APB1 8 +#define GONG_SCALE2 9 +#define GONG_APA2 10 +#define GONG_APB2 11 +#define GONG_SCALE3 12 +#define GONG_APA3 13 +#define GONG_APB3 14 +#define GONG_SCALE4 15 +#define GONG_APA4 16 +#define GONG_APB4 17 +#define GONG_SCALE5 18 +#define GONG_APA5 19 +#define GONG_APB5 20 +#define GONG_SCALE6 21 +#define GONG_APA6 22 +#define GONG_APB6 23 +#define GONG_SCALE7 24 +#define GONG_APA7 25 +#define GONG_APB7 26 +#define GONG_INPUT 27 +#define GONG_OUTPUT 28 + +static LADSPA_Descriptor *gongDescriptor = NULL; + +typedef struct { + LADSPA_Data *damp_i; + LADSPA_Data *damp_o; + LADSPA_Data *micpos; + LADSPA_Data *scale0; + LADSPA_Data *apa0; + LADSPA_Data *apb0; + LADSPA_Data *scale1; + LADSPA_Data *apa1; + LADSPA_Data *apb1; + LADSPA_Data *scale2; + LADSPA_Data *apa2; + LADSPA_Data *apb2; + LADSPA_Data *scale3; + LADSPA_Data *apa3; + LADSPA_Data *apb3; + LADSPA_Data *scale4; + LADSPA_Data *apa4; + LADSPA_Data *apb4; + LADSPA_Data *scale5; + LADSPA_Data *apa5; + LADSPA_Data *apb5; + LADSPA_Data *scale6; + LADSPA_Data *apa6; + LADSPA_Data *apb6; + LADSPA_Data *scale7; + LADSPA_Data *apa7; + LADSPA_Data *apb7; + LADSPA_Data *input; + LADSPA_Data *output; + int maxsize_i; + int maxsize_o; + float * out; + waveguide_nl **w; + LADSPA_Data run_adding_gain; +} Gong; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return gongDescriptor; + default: + return NULL; + } +} + +static void activateGong(LADSPA_Handle instance) { + Gong *plugin_data = (Gong *)instance; + int maxsize_i = plugin_data->maxsize_i; + int maxsize_o = plugin_data->maxsize_o; + float *out = plugin_data->out; + waveguide_nl **w = plugin_data->w; +#line 44 "gong_1424.xml" + unsigned int i; + + for (i = 0; i < 8; i++) { + waveguide_nl_reset(w[i]); + } + plugin_data->maxsize_i = maxsize_i; + plugin_data->maxsize_o = maxsize_o; + plugin_data->out = out; + plugin_data->w = w; + +} + +static void cleanupGong(LADSPA_Handle instance) { +#line 110 "gong_1424.xml" + Gong *plugin_data = (Gong *)instance; + unsigned int i; + + for (i = 0; i < 8; i++) { + waveguide_nl_free(plugin_data->w[i]); + } + free(plugin_data->w); + free(plugin_data->out); + free(instance); +} + +static void connectPortGong( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + Gong *plugin; + + plugin = (Gong *)instance; + switch (port) { + case GONG_DAMP_I: + plugin->damp_i = data; + break; + case GONG_DAMP_O: + plugin->damp_o = data; + break; + case GONG_MICPOS: + plugin->micpos = data; + break; + case GONG_SCALE0: + plugin->scale0 = data; + break; + case GONG_APA0: + plugin->apa0 = data; + break; + case GONG_APB0: + plugin->apb0 = data; + break; + case GONG_SCALE1: + plugin->scale1 = data; + break; + case GONG_APA1: + plugin->apa1 = data; + break; + case GONG_APB1: + plugin->apb1 = data; + break; + case GONG_SCALE2: + plugin->scale2 = data; + break; + case GONG_APA2: + plugin->apa2 = data; + break; + case GONG_APB2: + plugin->apb2 = data; + break; + case GONG_SCALE3: + plugin->scale3 = data; + break; + case GONG_APA3: + plugin->apa3 = data; + break; + case GONG_APB3: + plugin->apb3 = data; + break; + case GONG_SCALE4: + plugin->scale4 = data; + break; + case GONG_APA4: + plugin->apa4 = data; + break; + case GONG_APB4: + plugin->apb4 = data; + break; + case GONG_SCALE5: + plugin->scale5 = data; + break; + case GONG_APA5: + plugin->apa5 = data; + break; + case GONG_APB5: + plugin->apb5 = data; + break; + case GONG_SCALE6: + plugin->scale6 = data; + break; + case GONG_APA6: + plugin->apa6 = data; + break; + case GONG_APB6: + plugin->apb6 = data; + break; + case GONG_SCALE7: + plugin->scale7 = data; + break; + case GONG_APA7: + plugin->apa7 = data; + break; + case GONG_APB7: + plugin->apb7 = data; + break; + case GONG_INPUT: + plugin->input = data; + break; + case GONG_OUTPUT: + plugin->output = data; + break; + } +} + +static LADSPA_Handle instantiateGong( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + Gong *plugin_data = (Gong *)malloc(sizeof(Gong)); + int maxsize_i; + int maxsize_o; + float *out = NULL; + waveguide_nl **w = NULL; + +#line 23 "gong_1424.xml" + /* Max delay length for inner waveguides */ + maxsize_i = (float)s_rate * 0.03643242f; + /* Max delay length for outer waveguides */ + maxsize_o = (float)s_rate * 0.05722782f; + + /* The waveguide structures */ + w = malloc(8 * sizeof(waveguide_nl *)); + w[0] = waveguide_nl_new(maxsize_i, 0.5, 0.0f, 0.0f); + w[1] = waveguide_nl_new(maxsize_i, 0.5, 0.0f, 0.0f); + w[2] = waveguide_nl_new(maxsize_i, 0.5, 0.0f, 0.0f); + w[3] = waveguide_nl_new(maxsize_i, 0.5, 0.0f, 0.0f); + w[4] = waveguide_nl_new(maxsize_o, 0.5, 0.0f, 0.0f); + w[5] = waveguide_nl_new(maxsize_o, 0.5, 0.0f, 0.0f); + w[6] = waveguide_nl_new(maxsize_o, 0.5, 0.0f, 0.0f); + w[7] = waveguide_nl_new(maxsize_o, 0.5, 0.0f, 0.0f); + + /* Buffers to hold the currect deflections */ + out = calloc(32, sizeof(float)); + + plugin_data->maxsize_i = maxsize_i; + plugin_data->maxsize_o = maxsize_o; + plugin_data->out = out; + plugin_data->w = w; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runGong(LADSPA_Handle instance, unsigned long sample_count) { + Gong *plugin_data = (Gong *)instance; + + /* Inner damping (float value) */ + const LADSPA_Data damp_i = *(plugin_data->damp_i); + + /* Outer damping (float value) */ + const LADSPA_Data damp_o = *(plugin_data->damp_o); + + /* Mic position (float value) */ + const LADSPA_Data micpos = *(plugin_data->micpos); + + /* Inner size 1 (float value) */ + const LADSPA_Data scale0 = *(plugin_data->scale0); + + /* Inner stiffness 1 + (float value) */ + const LADSPA_Data apa0 = *(plugin_data->apa0); + + /* Inner stiffness 1 - (float value) */ + const LADSPA_Data apb0 = *(plugin_data->apb0); + + /* Inner size 2 (float value) */ + const LADSPA_Data scale1 = *(plugin_data->scale1); + + /* Inner stiffness 2 + (float value) */ + const LADSPA_Data apa1 = *(plugin_data->apa1); + + /* Inner stiffness 2 - (float value) */ + const LADSPA_Data apb1 = *(plugin_data->apb1); + + /* Inner size 3 (float value) */ + const LADSPA_Data scale2 = *(plugin_data->scale2); + + /* Inner stiffness 3 + (float value) */ + const LADSPA_Data apa2 = *(plugin_data->apa2); + + /* Inner stiffness 3 - (float value) */ + const LADSPA_Data apb2 = *(plugin_data->apb2); + + /* Inner size 4 (float value) */ + const LADSPA_Data scale3 = *(plugin_data->scale3); + + /* Inner stiffness 4 + (float value) */ + const LADSPA_Data apa3 = *(plugin_data->apa3); + + /* Inner stiffness 4 - (float value) */ + const LADSPA_Data apb3 = *(plugin_data->apb3); + + /* Outer size 1 (float value) */ + const LADSPA_Data scale4 = *(plugin_data->scale4); + + /* Outer stiffness 1 + (float value) */ + const LADSPA_Data apa4 = *(plugin_data->apa4); + + /* Outer stiffness 1 - (float value) */ + const LADSPA_Data apb4 = *(plugin_data->apb4); + + /* Outer size 2 (float value) */ + const LADSPA_Data scale5 = *(plugin_data->scale5); + + /* Outer stiffness 2 + (float value) */ + const LADSPA_Data apa5 = *(plugin_data->apa5); + + /* Outer stiffness 2 - (float value) */ + const LADSPA_Data apb5 = *(plugin_data->apb5); + + /* Outer size 3 (float value) */ + const LADSPA_Data scale6 = *(plugin_data->scale6); + + /* Outer stiffness 3 + (float value) */ + const LADSPA_Data apa6 = *(plugin_data->apa6); + + /* Outer stiffness 3 - (float value) */ + const LADSPA_Data apb6 = *(plugin_data->apb6); + + /* Outer size 4 (float value) */ + const LADSPA_Data scale7 = *(plugin_data->scale7); + + /* Outer stiffness 4 + (float value) */ + const LADSPA_Data apa7 = *(plugin_data->apa7); + + /* Outer stiffness 4 - (float value) */ + const LADSPA_Data apb7 = *(plugin_data->apb7); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + int maxsize_i = plugin_data->maxsize_i; + int maxsize_o = plugin_data->maxsize_o; + float * out = plugin_data->out; + waveguide_nl ** w = plugin_data->w; + +#line 52 "gong_1424.xml" + unsigned long pos; + /* The a coef of the inner lowpass */ + const float lpi = 1.0f - damp_i * 0.1423f; + /* The a coef of the outer lowpass */ + const float lpo = 1.0f - damp_o * 0.19543f; + + /* Set the parameters of the waveguides */ + waveguide_nl_set_delay(w[0], maxsize_i * scale0); + waveguide_nl_set_ap(w[0], apa0, apb0); + waveguide_nl_set_delay(w[1], maxsize_i * scale1); + waveguide_nl_set_ap(w[1], apa1, apb1); + waveguide_nl_set_delay(w[2], maxsize_i * scale2); + waveguide_nl_set_ap(w[2], apa2, apb2); + waveguide_nl_set_delay(w[3], maxsize_i * scale3); + waveguide_nl_set_ap(w[3], apa3, apb3); + waveguide_nl_set_delay(w[4], maxsize_o * scale4); + waveguide_nl_set_ap(w[4], apa4, apb4); + waveguide_nl_set_delay(w[5], maxsize_o * scale5); + waveguide_nl_set_ap(w[5], apa5, apb5); + waveguide_nl_set_delay(w[6], maxsize_o * scale6); + waveguide_nl_set_ap(w[6], apa6, apb6); + waveguide_nl_set_delay(w[7], maxsize_o * scale7); + waveguide_nl_set_ap(w[7], apa7, apb7); + + for (pos=0; pos<4; pos++) { + waveguide_nl_set_fc(w[pos], lpi); + } + for (; pos<8; pos++) { + waveguide_nl_set_fc(w[pos], lpo); + } + + for (pos = 0; pos < sample_count; pos++) { + /* Calcualte the deflections at the wavejunctions + alpha is the centre, beta is north, gamma is east, + delta is south and epsilon is west */ + const float alpha = (out[0] + out[2] + out[4] + out[6]) * 0.5f + + input[pos]; + const float beta = (out[1] + out[9] + out[14]) * 0.666666666666f; + const float gamma = (out[3] + out[8] + out[11]) * 0.666666666666f; + const float delta = (out[5] + out[10] + out[13]) * 0.666666666666f; + const float epsilon = (out[7] + out[12] + out[15]) * 0.666666666666f; + + /* Inject the energy at the junctions + reflections into the + waveguides (the macro gives the reflection calcs) */ + RUN_WG(0, beta, alpha); + RUN_WG(1, gamma, alpha); + RUN_WG(2, delta, alpha); + RUN_WG(3, epsilon, alpha); + RUN_WG(4, beta, gamma); + RUN_WG(5, gamma, delta); + RUN_WG(6, delta, epsilon); + RUN_WG(7, epsilon, beta); + + buffer_write(output[pos], (1.0f - micpos) * alpha + micpos * delta); + } +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainGong(LADSPA_Handle instance, LADSPA_Data gain) { + ((Gong *)instance)->run_adding_gain = gain; +} + +static void runAddingGong(LADSPA_Handle instance, unsigned long sample_count) { + Gong *plugin_data = (Gong *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Inner damping (float value) */ + const LADSPA_Data damp_i = *(plugin_data->damp_i); + + /* Outer damping (float value) */ + const LADSPA_Data damp_o = *(plugin_data->damp_o); + + /* Mic position (float value) */ + const LADSPA_Data micpos = *(plugin_data->micpos); + + /* Inner size 1 (float value) */ + const LADSPA_Data scale0 = *(plugin_data->scale0); + + /* Inner stiffness 1 + (float value) */ + const LADSPA_Data apa0 = *(plugin_data->apa0); + + /* Inner stiffness 1 - (float value) */ + const LADSPA_Data apb0 = *(plugin_data->apb0); + + /* Inner size 2 (float value) */ + const LADSPA_Data scale1 = *(plugin_data->scale1); + + /* Inner stiffness 2 + (float value) */ + const LADSPA_Data apa1 = *(plugin_data->apa1); + + /* Inner stiffness 2 - (float value) */ + const LADSPA_Data apb1 = *(plugin_data->apb1); + + /* Inner size 3 (float value) */ + const LADSPA_Data scale2 = *(plugin_data->scale2); + + /* Inner stiffness 3 + (float value) */ + const LADSPA_Data apa2 = *(plugin_data->apa2); + + /* Inner stiffness 3 - (float value) */ + const LADSPA_Data apb2 = *(plugin_data->apb2); + + /* Inner size 4 (float value) */ + const LADSPA_Data scale3 = *(plugin_data->scale3); + + /* Inner stiffness 4 + (float value) */ + const LADSPA_Data apa3 = *(plugin_data->apa3); + + /* Inner stiffness 4 - (float value) */ + const LADSPA_Data apb3 = *(plugin_data->apb3); + + /* Outer size 1 (float value) */ + const LADSPA_Data scale4 = *(plugin_data->scale4); + + /* Outer stiffness 1 + (float value) */ + const LADSPA_Data apa4 = *(plugin_data->apa4); + + /* Outer stiffness 1 - (float value) */ + const LADSPA_Data apb4 = *(plugin_data->apb4); + + /* Outer size 2 (float value) */ + const LADSPA_Data scale5 = *(plugin_data->scale5); + + /* Outer stiffness 2 + (float value) */ + const LADSPA_Data apa5 = *(plugin_data->apa5); + + /* Outer stiffness 2 - (float value) */ + const LADSPA_Data apb5 = *(plugin_data->apb5); + + /* Outer size 3 (float value) */ + const LADSPA_Data scale6 = *(plugin_data->scale6); + + /* Outer stiffness 3 + (float value) */ + const LADSPA_Data apa6 = *(plugin_data->apa6); + + /* Outer stiffness 3 - (float value) */ + const LADSPA_Data apb6 = *(plugin_data->apb6); + + /* Outer size 4 (float value) */ + const LADSPA_Data scale7 = *(plugin_data->scale7); + + /* Outer stiffness 4 + (float value) */ + const LADSPA_Data apa7 = *(plugin_data->apa7); + + /* Outer stiffness 4 - (float value) */ + const LADSPA_Data apb7 = *(plugin_data->apb7); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + int maxsize_i = plugin_data->maxsize_i; + int maxsize_o = plugin_data->maxsize_o; + float * out = plugin_data->out; + waveguide_nl ** w = plugin_data->w; + +#line 52 "gong_1424.xml" + unsigned long pos; + /* The a coef of the inner lowpass */ + const float lpi = 1.0f - damp_i * 0.1423f; + /* The a coef of the outer lowpass */ + const float lpo = 1.0f - damp_o * 0.19543f; + + /* Set the parameters of the waveguides */ + waveguide_nl_set_delay(w[0], maxsize_i * scale0); + waveguide_nl_set_ap(w[0], apa0, apb0); + waveguide_nl_set_delay(w[1], maxsize_i * scale1); + waveguide_nl_set_ap(w[1], apa1, apb1); + waveguide_nl_set_delay(w[2], maxsize_i * scale2); + waveguide_nl_set_ap(w[2], apa2, apb2); + waveguide_nl_set_delay(w[3], maxsize_i * scale3); + waveguide_nl_set_ap(w[3], apa3, apb3); + waveguide_nl_set_delay(w[4], maxsize_o * scale4); + waveguide_nl_set_ap(w[4], apa4, apb4); + waveguide_nl_set_delay(w[5], maxsize_o * scale5); + waveguide_nl_set_ap(w[5], apa5, apb5); + waveguide_nl_set_delay(w[6], maxsize_o * scale6); + waveguide_nl_set_ap(w[6], apa6, apb6); + waveguide_nl_set_delay(w[7], maxsize_o * scale7); + waveguide_nl_set_ap(w[7], apa7, apb7); + + for (pos=0; pos<4; pos++) { + waveguide_nl_set_fc(w[pos], lpi); + } + for (; pos<8; pos++) { + waveguide_nl_set_fc(w[pos], lpo); + } + + for (pos = 0; pos < sample_count; pos++) { + /* Calcualte the deflections at the wavejunctions + alpha is the centre, beta is north, gamma is east, + delta is south and epsilon is west */ + const float alpha = (out[0] + out[2] + out[4] + out[6]) * 0.5f + + input[pos]; + const float beta = (out[1] + out[9] + out[14]) * 0.666666666666f; + const float gamma = (out[3] + out[8] + out[11]) * 0.666666666666f; + const float delta = (out[5] + out[10] + out[13]) * 0.666666666666f; + const float epsilon = (out[7] + out[12] + out[15]) * 0.666666666666f; + + /* Inject the energy at the junctions + reflections into the + waveguides (the macro gives the reflection calcs) */ + RUN_WG(0, beta, alpha); + RUN_WG(1, gamma, alpha); + RUN_WG(2, delta, alpha); + RUN_WG(3, epsilon, alpha); + RUN_WG(4, beta, gamma); + RUN_WG(5, gamma, delta); + RUN_WG(6, delta, epsilon); + RUN_WG(7, epsilon, beta); + + buffer_write(output[pos], (1.0f - micpos) * alpha + micpos * delta); + } +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + gongDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (gongDescriptor) { + gongDescriptor->UniqueID = 1424; + gongDescriptor->Label = "gong"; + gongDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + gongDescriptor->Name = + D_("Gong model"); + gongDescriptor->Maker = + "Steve Harris "; + gongDescriptor->Copyright = + "GPL"; + gongDescriptor->PortCount = 29; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(29, + sizeof(LADSPA_PortDescriptor)); + gongDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(29, + sizeof(LADSPA_PortRangeHint)); + gongDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(29, sizeof(char*)); + gongDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Inner damping */ + port_descriptors[GONG_DAMP_I] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[GONG_DAMP_I] = + D_("Inner damping"); + port_range_hints[GONG_DAMP_I].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MIDDLE; + port_range_hints[GONG_DAMP_I].LowerBound = 0; + port_range_hints[GONG_DAMP_I].UpperBound = 1; + + /* Parameters for Outer damping */ + port_descriptors[GONG_DAMP_O] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[GONG_DAMP_O] = + D_("Outer damping"); + port_range_hints[GONG_DAMP_O].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MIDDLE; + port_range_hints[GONG_DAMP_O].LowerBound = 0; + port_range_hints[GONG_DAMP_O].UpperBound = 1; + + /* Parameters for Mic position */ + port_descriptors[GONG_MICPOS] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[GONG_MICPOS] = + D_("Mic position"); + port_range_hints[GONG_MICPOS].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_LOW; + port_range_hints[GONG_MICPOS].LowerBound = 0; + port_range_hints[GONG_MICPOS].UpperBound = 1; + + /* Parameters for Inner size 1 */ + port_descriptors[GONG_SCALE0] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[GONG_SCALE0] = + D_("Inner size 1"); + port_range_hints[GONG_SCALE0].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MIDDLE; + port_range_hints[GONG_SCALE0].LowerBound = 0; + port_range_hints[GONG_SCALE0].UpperBound = 1; + + /* Parameters for Inner stiffness 1 + */ + port_descriptors[GONG_APA0] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[GONG_APA0] = + D_("Inner stiffness 1 +"); + port_range_hints[GONG_APA0].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MIDDLE; + port_range_hints[GONG_APA0].LowerBound = 0; + port_range_hints[GONG_APA0].UpperBound = 1; + + /* Parameters for Inner stiffness 1 - */ + port_descriptors[GONG_APB0] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[GONG_APB0] = + D_("Inner stiffness 1 -"); + port_range_hints[GONG_APB0].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MIDDLE; + port_range_hints[GONG_APB0].LowerBound = 0; + port_range_hints[GONG_APB0].UpperBound = 1; + + /* Parameters for Inner size 2 */ + port_descriptors[GONG_SCALE1] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[GONG_SCALE1] = + D_("Inner size 2"); + port_range_hints[GONG_SCALE1].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MIDDLE; + port_range_hints[GONG_SCALE1].LowerBound = 0; + port_range_hints[GONG_SCALE1].UpperBound = 1; + + /* Parameters for Inner stiffness 2 + */ + port_descriptors[GONG_APA1] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[GONG_APA1] = + D_("Inner stiffness 2 +"); + port_range_hints[GONG_APA1].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MIDDLE; + port_range_hints[GONG_APA1].LowerBound = 0; + port_range_hints[GONG_APA1].UpperBound = 1; + + /* Parameters for Inner stiffness 2 - */ + port_descriptors[GONG_APB1] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[GONG_APB1] = + D_("Inner stiffness 2 -"); + port_range_hints[GONG_APB1].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MIDDLE; + port_range_hints[GONG_APB1].LowerBound = 0; + port_range_hints[GONG_APB1].UpperBound = 1; + + /* Parameters for Inner size 3 */ + port_descriptors[GONG_SCALE2] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[GONG_SCALE2] = + D_("Inner size 3"); + port_range_hints[GONG_SCALE2].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MIDDLE; + port_range_hints[GONG_SCALE2].LowerBound = 0; + port_range_hints[GONG_SCALE2].UpperBound = 1; + + /* Parameters for Inner stiffness 3 + */ + port_descriptors[GONG_APA2] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[GONG_APA2] = + D_("Inner stiffness 3 +"); + port_range_hints[GONG_APA2].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MIDDLE; + port_range_hints[GONG_APA2].LowerBound = 0; + port_range_hints[GONG_APA2].UpperBound = 1; + + /* Parameters for Inner stiffness 3 - */ + port_descriptors[GONG_APB2] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[GONG_APB2] = + D_("Inner stiffness 3 -"); + port_range_hints[GONG_APB2].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MIDDLE; + port_range_hints[GONG_APB2].LowerBound = 0; + port_range_hints[GONG_APB2].UpperBound = 1; + + /* Parameters for Inner size 4 */ + port_descriptors[GONG_SCALE3] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[GONG_SCALE3] = + D_("Inner size 4"); + port_range_hints[GONG_SCALE3].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MIDDLE; + port_range_hints[GONG_SCALE3].LowerBound = 0; + port_range_hints[GONG_SCALE3].UpperBound = 1; + + /* Parameters for Inner stiffness 4 + */ + port_descriptors[GONG_APA3] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[GONG_APA3] = + D_("Inner stiffness 4 +"); + port_range_hints[GONG_APA3].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MIDDLE; + port_range_hints[GONG_APA3].LowerBound = 0; + port_range_hints[GONG_APA3].UpperBound = 1; + + /* Parameters for Inner stiffness 4 - */ + port_descriptors[GONG_APB3] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[GONG_APB3] = + D_("Inner stiffness 4 -"); + port_range_hints[GONG_APB3].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MIDDLE; + port_range_hints[GONG_APB3].LowerBound = 0; + port_range_hints[GONG_APB3].UpperBound = 1; + + /* Parameters for Outer size 1 */ + port_descriptors[GONG_SCALE4] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[GONG_SCALE4] = + D_("Outer size 1"); + port_range_hints[GONG_SCALE4].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MIDDLE; + port_range_hints[GONG_SCALE4].LowerBound = 0; + port_range_hints[GONG_SCALE4].UpperBound = 1; + + /* Parameters for Outer stiffness 1 + */ + port_descriptors[GONG_APA4] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[GONG_APA4] = + D_("Outer stiffness 1 +"); + port_range_hints[GONG_APA4].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MIDDLE; + port_range_hints[GONG_APA4].LowerBound = 0; + port_range_hints[GONG_APA4].UpperBound = 1; + + /* Parameters for Outer stiffness 1 - */ + port_descriptors[GONG_APB4] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[GONG_APB4] = + D_("Outer stiffness 1 -"); + port_range_hints[GONG_APB4].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MIDDLE; + port_range_hints[GONG_APB4].LowerBound = 0; + port_range_hints[GONG_APB4].UpperBound = 1; + + /* Parameters for Outer size 2 */ + port_descriptors[GONG_SCALE5] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[GONG_SCALE5] = + D_("Outer size 2"); + port_range_hints[GONG_SCALE5].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MIDDLE; + port_range_hints[GONG_SCALE5].LowerBound = 0; + port_range_hints[GONG_SCALE5].UpperBound = 1; + + /* Parameters for Outer stiffness 2 + */ + port_descriptors[GONG_APA5] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[GONG_APA5] = + D_("Outer stiffness 2 +"); + port_range_hints[GONG_APA5].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MIDDLE; + port_range_hints[GONG_APA5].LowerBound = 0; + port_range_hints[GONG_APA5].UpperBound = 1; + + /* Parameters for Outer stiffness 2 - */ + port_descriptors[GONG_APB5] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[GONG_APB5] = + D_("Outer stiffness 2 -"); + port_range_hints[GONG_APB5].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MIDDLE; + port_range_hints[GONG_APB5].LowerBound = 0; + port_range_hints[GONG_APB5].UpperBound = 1; + + /* Parameters for Outer size 3 */ + port_descriptors[GONG_SCALE6] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[GONG_SCALE6] = + D_("Outer size 3"); + port_range_hints[GONG_SCALE6].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MIDDLE; + port_range_hints[GONG_SCALE6].LowerBound = 0; + port_range_hints[GONG_SCALE6].UpperBound = 1; + + /* Parameters for Outer stiffness 3 + */ + port_descriptors[GONG_APA6] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[GONG_APA6] = + D_("Outer stiffness 3 +"); + port_range_hints[GONG_APA6].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MIDDLE; + port_range_hints[GONG_APA6].LowerBound = 0; + port_range_hints[GONG_APA6].UpperBound = 1; + + /* Parameters for Outer stiffness 3 - */ + port_descriptors[GONG_APB6] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[GONG_APB6] = + D_("Outer stiffness 3 -"); + port_range_hints[GONG_APB6].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MIDDLE; + port_range_hints[GONG_APB6].LowerBound = 0; + port_range_hints[GONG_APB6].UpperBound = 1; + + /* Parameters for Outer size 4 */ + port_descriptors[GONG_SCALE7] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[GONG_SCALE7] = + D_("Outer size 4"); + port_range_hints[GONG_SCALE7].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MIDDLE; + port_range_hints[GONG_SCALE7].LowerBound = 0; + port_range_hints[GONG_SCALE7].UpperBound = 1; + + /* Parameters for Outer stiffness 4 + */ + port_descriptors[GONG_APA7] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[GONG_APA7] = + D_("Outer stiffness 4 +"); + port_range_hints[GONG_APA7].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MIDDLE; + port_range_hints[GONG_APA7].LowerBound = 0; + port_range_hints[GONG_APA7].UpperBound = 1; + + /* Parameters for Outer stiffness 4 - */ + port_descriptors[GONG_APB7] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[GONG_APB7] = + D_("Outer stiffness 4 -"); + port_range_hints[GONG_APB7].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MIDDLE; + port_range_hints[GONG_APB7].LowerBound = 0; + port_range_hints[GONG_APB7].UpperBound = 1; + + /* Parameters for Input */ + port_descriptors[GONG_INPUT] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[GONG_INPUT] = + D_("Input"); + port_range_hints[GONG_INPUT].HintDescriptor = 0; + + /* Parameters for Output */ + port_descriptors[GONG_OUTPUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[GONG_OUTPUT] = + D_("Output"); + port_range_hints[GONG_OUTPUT].HintDescriptor = 0; + + gongDescriptor->activate = activateGong; + gongDescriptor->cleanup = cleanupGong; + gongDescriptor->connect_port = connectPortGong; + gongDescriptor->deactivate = NULL; + gongDescriptor->instantiate = instantiateGong; + gongDescriptor->run = runGong; + gongDescriptor->run_adding = runAddingGong; + gongDescriptor->set_run_adding_gain = setRunAddingGainGong; + } +} + +void _fini() { + if (gongDescriptor) { + free((LADSPA_PortDescriptor *)gongDescriptor->PortDescriptors); + free((char **)gongDescriptor->PortNames); + free((LADSPA_PortRangeHint *)gongDescriptor->PortRangeHints); + free(gongDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/gong_beater_1439.c b/plugins/ladspa_effect/swh/gong_beater_1439.c new file mode 100644 index 000000000..e6e1803c8 --- /dev/null +++ b/plugins/ladspa_effect/swh/gong_beater_1439.c @@ -0,0 +1,411 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + +#line 10 "gong_beater_1439.xml" + +#include "ladspa-util.h" + +#define GONGBEATER_IMP_GAIN 0 +#define GONGBEATER_STRIKE_GAIN 1 +#define GONGBEATER_STRIKE_DURATION 2 +#define GONGBEATER_INPUT 3 +#define GONGBEATER_OUTPUT 4 + +static LADSPA_Descriptor *gongBeaterDescriptor = NULL; + +typedef struct { + LADSPA_Data *imp_gain; + LADSPA_Data *strike_gain; + LADSPA_Data *strike_duration; + LADSPA_Data *input; + LADSPA_Data *output; + float fs; + float imp_level; + unsigned int running; + float x; + float xm; + float y; + float ym; + LADSPA_Data run_adding_gain; +} GongBeater; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return gongBeaterDescriptor; + default: + return NULL; + } +} + +static void activateGongBeater(LADSPA_Handle instance) { + GongBeater *plugin_data = (GongBeater *)instance; + float fs = plugin_data->fs; + float imp_level = plugin_data->imp_level; + unsigned int running = plugin_data->running; + float x = plugin_data->x; + float xm = plugin_data->xm; + float y = plugin_data->y; + float ym = plugin_data->ym; +#line 31 "gong_beater_1439.xml" + running = 0; + x = 0.5f; + y = 0.0f; + xm = 0.5f; + ym = 0.0f; + plugin_data->fs = fs; + plugin_data->imp_level = imp_level; + plugin_data->running = running; + plugin_data->x = x; + plugin_data->xm = xm; + plugin_data->y = y; + plugin_data->ym = ym; + +} + +static void cleanupGongBeater(LADSPA_Handle instance) { + free(instance); +} + +static void connectPortGongBeater( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + GongBeater *plugin; + + plugin = (GongBeater *)instance; + switch (port) { + case GONGBEATER_IMP_GAIN: + plugin->imp_gain = data; + break; + case GONGBEATER_STRIKE_GAIN: + plugin->strike_gain = data; + break; + case GONGBEATER_STRIKE_DURATION: + plugin->strike_duration = data; + break; + case GONGBEATER_INPUT: + plugin->input = data; + break; + case GONGBEATER_OUTPUT: + plugin->output = data; + break; + } +} + +static LADSPA_Handle instantiateGongBeater( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + GongBeater *plugin_data = (GongBeater *)malloc(sizeof(GongBeater)); + float fs; + float imp_level; + unsigned int running; + float x; + float xm; + float y; + float ym; + +#line 21 "gong_beater_1439.xml" + running = 0; + x = 0.5f; + y = 0.0f; + xm = 0.5f; + ym = 0.0f; + fs = (float)s_rate; + imp_level = 0.0f; + + plugin_data->fs = fs; + plugin_data->imp_level = imp_level; + plugin_data->running = running; + plugin_data->x = x; + plugin_data->xm = xm; + plugin_data->y = y; + plugin_data->ym = ym; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runGongBeater(LADSPA_Handle instance, unsigned long sample_count) { + GongBeater *plugin_data = (GongBeater *)instance; + + /* Impulse gain (dB) (float value) */ + const LADSPA_Data imp_gain = *(plugin_data->imp_gain); + + /* Strike gain (dB) (float value) */ + const LADSPA_Data strike_gain = *(plugin_data->strike_gain); + + /* Strike duration (s) (float value) */ + const LADSPA_Data strike_duration = *(plugin_data->strike_duration); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + float fs = plugin_data->fs; + float imp_level = plugin_data->imp_level; + unsigned int running = plugin_data->running; + float x = plugin_data->x; + float xm = plugin_data->xm; + float y = plugin_data->y; + float ym = plugin_data->ym; + +#line 39 "gong_beater_1439.xml" + unsigned long pos; + const float imp_amp = DB_CO(imp_gain); + const float strike_amp = DB_CO(strike_gain); + const float omega = 6.2831852f / (strike_duration * fs); + + pos = 0; + while (pos < sample_count) { + for (; !running && pos < sample_count; pos++) { + if (fabs(input[pos]) > 0.05f) { + running = strike_duration * fs; + imp_level = fabs(input[pos]); + } + buffer_write(output[pos], input[pos] * imp_amp); + } + for (; running && pos < sample_count; pos++, running--) { + if (fabs(input[pos]) > imp_level) { + imp_level = fabs(input[pos]); + } + x -= omega * y; + y += omega * x; + xm -= omega * 0.5f * ym; + ym += omega * 0.5f * xm; + + buffer_write(output[pos], input[pos] * imp_amp + y * strike_amp * + imp_level * 4.0f * ym); + } + } + + plugin_data->x = x; + plugin_data->y = y; + plugin_data->xm = xm; + plugin_data->ym = ym; + plugin_data->running = running; + plugin_data->imp_level = imp_level; +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainGongBeater(LADSPA_Handle instance, LADSPA_Data gain) { + ((GongBeater *)instance)->run_adding_gain = gain; +} + +static void runAddingGongBeater(LADSPA_Handle instance, unsigned long sample_count) { + GongBeater *plugin_data = (GongBeater *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Impulse gain (dB) (float value) */ + const LADSPA_Data imp_gain = *(plugin_data->imp_gain); + + /* Strike gain (dB) (float value) */ + const LADSPA_Data strike_gain = *(plugin_data->strike_gain); + + /* Strike duration (s) (float value) */ + const LADSPA_Data strike_duration = *(plugin_data->strike_duration); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + float fs = plugin_data->fs; + float imp_level = plugin_data->imp_level; + unsigned int running = plugin_data->running; + float x = plugin_data->x; + float xm = plugin_data->xm; + float y = plugin_data->y; + float ym = plugin_data->ym; + +#line 39 "gong_beater_1439.xml" + unsigned long pos; + const float imp_amp = DB_CO(imp_gain); + const float strike_amp = DB_CO(strike_gain); + const float omega = 6.2831852f / (strike_duration * fs); + + pos = 0; + while (pos < sample_count) { + for (; !running && pos < sample_count; pos++) { + if (fabs(input[pos]) > 0.05f) { + running = strike_duration * fs; + imp_level = fabs(input[pos]); + } + buffer_write(output[pos], input[pos] * imp_amp); + } + for (; running && pos < sample_count; pos++, running--) { + if (fabs(input[pos]) > imp_level) { + imp_level = fabs(input[pos]); + } + x -= omega * y; + y += omega * x; + xm -= omega * 0.5f * ym; + ym += omega * 0.5f * xm; + + buffer_write(output[pos], input[pos] * imp_amp + y * strike_amp * + imp_level * 4.0f * ym); + } + } + + plugin_data->x = x; + plugin_data->y = y; + plugin_data->xm = xm; + plugin_data->ym = ym; + plugin_data->running = running; + plugin_data->imp_level = imp_level; +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + gongBeaterDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (gongBeaterDescriptor) { + gongBeaterDescriptor->UniqueID = 1439; + gongBeaterDescriptor->Label = "gongBeater"; + gongBeaterDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + gongBeaterDescriptor->Name = + D_("Gong beater"); + gongBeaterDescriptor->Maker = + "Steve Harris "; + gongBeaterDescriptor->Copyright = + "GPL"; + gongBeaterDescriptor->PortCount = 5; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(5, + sizeof(LADSPA_PortDescriptor)); + gongBeaterDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(5, + sizeof(LADSPA_PortRangeHint)); + gongBeaterDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(5, sizeof(char*)); + gongBeaterDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Impulse gain (dB) */ + port_descriptors[GONGBEATER_IMP_GAIN] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[GONGBEATER_IMP_GAIN] = + D_("Impulse gain (dB)"); + port_range_hints[GONGBEATER_IMP_GAIN].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MINIMUM; + port_range_hints[GONGBEATER_IMP_GAIN].LowerBound = -70; + port_range_hints[GONGBEATER_IMP_GAIN].UpperBound = 0; + + /* Parameters for Strike gain (dB) */ + port_descriptors[GONGBEATER_STRIKE_GAIN] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[GONGBEATER_STRIKE_GAIN] = + D_("Strike gain (dB)"); + port_range_hints[GONGBEATER_STRIKE_GAIN].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MAXIMUM; + port_range_hints[GONGBEATER_STRIKE_GAIN].LowerBound = -70; + port_range_hints[GONGBEATER_STRIKE_GAIN].UpperBound = 0; + + /* Parameters for Strike duration (s) */ + port_descriptors[GONGBEATER_STRIKE_DURATION] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[GONGBEATER_STRIKE_DURATION] = + D_("Strike duration (s)"); + port_range_hints[GONGBEATER_STRIKE_DURATION].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MIDDLE; + port_range_hints[GONGBEATER_STRIKE_DURATION].LowerBound = 0.001; + port_range_hints[GONGBEATER_STRIKE_DURATION].UpperBound = 0.2; + + /* Parameters for Input */ + port_descriptors[GONGBEATER_INPUT] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[GONGBEATER_INPUT] = + D_("Input"); + port_range_hints[GONGBEATER_INPUT].HintDescriptor = 0; + + /* Parameters for Output */ + port_descriptors[GONGBEATER_OUTPUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[GONGBEATER_OUTPUT] = + D_("Output"); + port_range_hints[GONGBEATER_OUTPUT].HintDescriptor = 0; + + gongBeaterDescriptor->activate = activateGongBeater; + gongBeaterDescriptor->cleanup = cleanupGongBeater; + gongBeaterDescriptor->connect_port = connectPortGongBeater; + gongBeaterDescriptor->deactivate = NULL; + gongBeaterDescriptor->instantiate = instantiateGongBeater; + gongBeaterDescriptor->run = runGongBeater; + gongBeaterDescriptor->run_adding = runAddingGongBeater; + gongBeaterDescriptor->set_run_adding_gain = setRunAddingGainGongBeater; + } +} + +void _fini() { + if (gongBeaterDescriptor) { + free((LADSPA_PortDescriptor *)gongBeaterDescriptor->PortDescriptors); + free((char **)gongBeaterDescriptor->PortNames); + free((LADSPA_PortRangeHint *)gongBeaterDescriptor->PortRangeHints); + free(gongBeaterDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/gsm/README b/plugins/ladspa_effect/swh/gsm/README new file mode 100644 index 000000000..b57132b05 --- /dev/null +++ b/plugins/ladspa_effect/swh/gsm/README @@ -0,0 +1,36 @@ +GSM 06.10 13 kbit/s RPE/LTP speech codec +---------------------------------------- + +All the file in this directory were written by Jutta Degener +and Carsten Borman for The Communications and Operating Systems +Research Group (KBS) at the Technische Universitaet Berlin. + +Their work was released under the following license which is +assumed to be compatible with The GNU Lesser General Public License. + +---------------------------------------------------------------------------- + +Copyright 1992, 1993, 1994 by Jutta Degener and Carsten Bormann, +Technische Universitaet Berlin + +Any use of this software is permitted provided that this notice is not +removed and that neither the authors nor the Technische Universitaet Berlin +are deemed to have made any representations as to the suitability of this +software for any purpose nor are held responsible for any defects of +this software. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE. + +As a matter of courtesy, the authors request to be informed about uses +this software has found, about bugs in this software, and about any +improvements that may be of general interest. + +Berlin, 28.11.1994 +Jutta Degener (jutta@cs.tu-berlin.de) +Carsten Bormann (cabo@cs.tu-berlin.de) + +---------------------------------------------------------------------------- + +Jutta Degener and Carsten Bormann's work can be found on their homepage +at: + + http://kbs.cs.tu-berlin.de/~jutta/toast.html + diff --git a/plugins/ladspa_effect/swh/gsm/add.c b/plugins/ladspa_effect/swh/gsm/add.c new file mode 100644 index 000000000..13b71fda1 --- /dev/null +++ b/plugins/ladspa_effect/swh/gsm/add.c @@ -0,0 +1,251 @@ +/* + * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische + * Universitaet Berlin. See the accompanying file "COPYRIGHT" for + * details. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE. + */ + +/* $Header: /home/cvs/giga/ladspa-swh/gsm/add.c,v 1.1 2001/06/10 21:36:51 swh Exp $ */ + +/* + * See private.h for the more commonly used macro versions. + */ + +#include +#include + +#include "private.h" +#include "gsm.h" +#include "proto.h" + +#define saturate(x) \ + ((x) < MIN_WORD ? MIN_WORD : (x) > MAX_WORD ? MAX_WORD: (x)) + +word gsm_add P2((a,b), word a, word b) +{ + longword sum = (longword)a + (longword)b; + return saturate(sum); +} + +word gsm_sub P2((a,b), word a, word b) +{ + longword diff = (longword)a - (longword)b; + return saturate(diff); +} + +word gsm_mult P2((a,b), word a, word b) +{ + if (a == MIN_WORD && b == MIN_WORD) return MAX_WORD; + else return SASR( (longword)a * (longword)b, 15 ); +} + +word gsm_mult_r P2((a,b), word a, word b) +{ + if (b == MIN_WORD && a == MIN_WORD) return MAX_WORD; + else { + longword prod = (longword)a * (longword)b + 16384; + prod >>= 15; + return prod & 0xFFFF; + } +} + +word gsm_abs P1((a), word a) +{ + return a < 0 ? (a == MIN_WORD ? MAX_WORD : -a) : a; +} + +longword gsm_L_mult P2((a,b),word a, word b) +{ + assert( a != MIN_WORD || b != MIN_WORD ); + return ((longword)a * (longword)b) << 1; +} + +longword gsm_L_add P2((a,b), longword a, longword b) +{ + if (a < 0) { + if (b >= 0) return a + b; + else { + ulongword A = (ulongword)-(a + 1) + (ulongword)-(b + 1); + return A >= MAX_LONGWORD ? MIN_LONGWORD :-(longword)A-2; + } + } + else if (b <= 0) return a + b; + else { + ulongword A = (ulongword)a + (ulongword)b; + return A > MAX_LONGWORD ? MAX_LONGWORD : A; + } +} + +longword gsm_L_sub P2((a,b), longword a, longword b) +{ + if (a >= 0) { + if (b >= 0) return a - b; + else { + /* a>=0, b<0 */ + + ulongword A = (ulongword)a + -(b + 1); + return A >= MAX_LONGWORD ? MAX_LONGWORD : (A + 1); + } + } + else if (b <= 0) return a - b; + else { + /* a<0, b>0 */ + + ulongword A = (ulongword)-(a + 1) + b; + return A >= MAX_LONGWORD ? MIN_LONGWORD : -(longword)A - 1; + } +} + +static unsigned char const bitoff[ 256 ] = { + 8, 7, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +}; + +word gsm_norm P1((a), longword a ) +/* + * the number of left shifts needed to normalize the 32 bit + * variable L_var1 for positive values on the interval + * + * with minimum of + * minimum of 1073741824 (01000000000000000000000000000000) and + * maximum of 2147483647 (01111111111111111111111111111111) + * + * + * and for negative values on the interval with + * minimum of -2147483648 (-10000000000000000000000000000000) and + * maximum of -1073741824 ( -1000000000000000000000000000000). + * + * in order to normalize the result, the following + * operation must be done: L_norm_var1 = L_var1 << norm( L_var1 ); + * + * (That's 'ffs', only from the left, not the right..) + */ +{ + assert(a != 0); + + if (a < 0) { + if (a <= -1073741824) return 0; + a = ~a; + } + + return a & 0xffff0000 + ? ( a & 0xff000000 + ? -1 + bitoff[ 0xFF & (a >> 24) ] + : 7 + bitoff[ 0xFF & (a >> 16) ] ) + : ( a & 0xff00 + ? 15 + bitoff[ 0xFF & (a >> 8) ] + : 23 + bitoff[ 0xFF & a ] ); +} + +longword gsm_L_asl (longword a, int n) +{ + if (n >= 32) return 0; + if (n <= -32) return -(a < 0); + if (n < 0) return gsm_L_asr(a, -n); + return a << n; +} + +word gsm_asr (word a, int n) +{ + if (n >= 16) return -(a < 0); + if (n <= -16) return 0; + if (n < 0) return a << -n; + +# ifdef SASR + return a >> n; +# else + if (a >= 0) return a >> n; + else return -(word)( -(uword)a >> n ); +# endif +} + +word gsm_asl (word a, int n) +{ + if (n >= 16) return 0; + if (n <= -16) return -(a < 0); + if (n < 0) return gsm_asr(a, -n); + return a << n; +} + +longword gsm_L_asr (longword a, int n) +{ + if (n >= 32) return -(a < 0); + if (n <= -32) return 0; + if (n < 0) return a << -n; + +# ifdef SASR + return a >> n; +# else + if (a >= 0) return a >> n; + else return -(longword)( -(ulongword)a >> n ); +# endif +} + +/* +** word gsm_asr (word a, int n) +** { +** if (n >= 16) return -(a < 0); +** if (n <= -16) return 0; +** if (n < 0) return a << -n; +** +** # ifdef SASR +** return a >> n; +** # else +** if (a >= 0) return a >> n; +** else return -(word)( -(uword)a >> n ); +** # endif +** } +** +*/ +/* + * (From p. 46, end of section 4.2.5) + * + * NOTE: The following lines gives [sic] one correct implementation + * of the div(num, denum) arithmetic operation. Compute div + * which is the integer division of num by denum: with denum + * >= num > 0 + */ + +word gsm_div P2((num,denum), word num, word denum) +{ + longword L_num = num; + longword L_denum = denum; + word div = 0; + int k = 15; + + /* The parameter num sometimes becomes zero. + * Although this is explicitly guarded against in 4.2.5, + * we assume that the result should then be zero as well. + */ + + /* assert(num != 0); */ + + assert(num >= 0 && denum >= num); + if (num == 0) + return 0; + + while (k--) { + div <<= 1; + L_num <<= 1; + + if (L_num >= L_denum) { + L_num -= L_denum; + div++; + } + } + + return div; +} diff --git a/plugins/ladspa_effect/swh/gsm/code.c b/plugins/ladspa_effect/swh/gsm/code.c new file mode 100644 index 000000000..3521b8eb8 --- /dev/null +++ b/plugins/ladspa_effect/swh/gsm/code.c @@ -0,0 +1,100 @@ +/* + * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische + * Universitaet Berlin. See the accompanying file "COPYRIGHT" for + * details. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE. + */ + +/* $Header: /home/cvs/giga/ladspa-swh/gsm/code.c,v 1.2 2003/03/07 23:26:13 swh Exp $ */ + +#include "config.h" +#include + + +#ifdef HAS_STDLIB_H +#include +#else +# include "proto.h" + extern char * memcpy P((char *, char *, int)); +#endif + +#include "private.h" +#include "gsm.h" +#include "proto.h" + +/* + * 4.2 FIXED POINT IMPLEMENTATION OF THE RPE-LTP CODER + */ + +void Gsm_Coder P8((S,s,LARc,Nc,bc,Mc,xmaxc,xMc), + + struct gsm_state * S, + + word * s, /* [0..159] samples IN */ + +/* + * The RPE-LTD coder works on a frame by frame basis. The length of + * the frame is equal to 160 samples. Some computations are done + * once per frame to produce at the output of the coder the + * LARc[1..8] parameters which are the coded LAR coefficients and + * also to realize the inverse filtering operation for the entire + * frame (160 samples of signal d[0..159]). These parts produce at + * the output of the coder: + */ + + word * LARc, /* [0..7] LAR coefficients OUT */ + +/* + * Procedure 4.2.11 to 4.2.18 are to be executed four times per + * frame. That means once for each sub-segment RPE-LTP analysis of + * 40 samples. These parts produce at the output of the coder: + */ + + word * Nc, /* [0..3] LTP lag OUT */ + word * bc, /* [0..3] coded LTP gain OUT */ + word * Mc, /* [0..3] RPE grid selection OUT */ + word * xmaxc,/* [0..3] Coded maximum amplitude OUT */ + word * xMc /* [13*4] normalized RPE samples OUT */ +) +{ + int k; + word * dp = S->dp0 + 120; /* [ -120...-1 ] */ + word * dpp = dp; /* [ 0...39 ] */ + + static word e[50]; + + word so[160]; + + Gsm_Preprocess (S, s, so); + Gsm_LPC_Analysis (S, so, LARc); + Gsm_Short_Term_Analysis_Filter (S, LARc, so); + + for (k = 0; k <= 3; k++, xMc += 13) { + + Gsm_Long_Term_Predictor ( S, + so+k*40, /* d [0..39] IN */ + dp, /* dp [-120..-1] IN */ + e + 5, /* e [0..39] OUT */ + dpp, /* dpp [0..39] OUT */ + Nc++, + bc++); + + Gsm_RPE_Encoding ( S, + e + 5, /* e ][0..39][ IN/OUT */ + xmaxc++, Mc++, xMc ); + /* + * Gsm_Update_of_reconstructed_short_time_residual_signal + * ( dpp, e + 5, dp ); + */ + + { register int i; + register longword ltmp; + for (i = 0; i <= 39; i++) + dp[ i ] = GSM_ADD( e[5 + i], dpp[i] ); + } + dp += 40; + dpp += 40; + + } + (void)memcpy( (char *)S->dp0, (char *)(S->dp0 + 160), + 120 * sizeof(*S->dp0) ); +} diff --git a/plugins/ladspa_effect/swh/gsm/config.h b/plugins/ladspa_effect/swh/gsm/config.h new file mode 100644 index 000000000..1f2613a98 --- /dev/null +++ b/plugins/ladspa_effect/swh/gsm/config.h @@ -0,0 +1,37 @@ +/* + * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische + * Universitaet Berlin. See the accompanying file "COPYRIGHT" for + * details. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE. + */ + +/*$Header: /home/cvs/giga/ladspa-swh/gsm/config.h,v 1.1 2001/06/10 21:36:51 swh Exp $*/ + +#ifndef CONFIG_H +#define CONFIG_H + +//*efine SIGHANDLER_T int /* signal handlers are void */ +//*efine HAS_SYSV_SIGNAL 1 /* sigs not blocked/reset? */ + +#define HAS_STDLIB_H 1 /* /usr/include/stdlib.h */ +//*efine HAS_LIMITS_H 1 /* /usr/include/limits.h */ +#define HAS_FCNTL_H 1 /* /usr/include/fcntl.h */ +//*efine HAS_ERRNO_DECL 1 /* errno.h declares errno */ + +#define HAS_FSTAT 1 /* fstat syscall */ +#define HAS_FCHMOD 1 /* fchmod syscall */ +#define HAS_CHMOD 1 /* chmod syscall */ +#define HAS_FCHOWN 1 /* fchown syscall */ +#define HAS_CHOWN 1 /* chown syscall */ +//*efine HAS__FSETMODE 1 /* _fsetmode -- set file mode */ + +#define HAS_STRING_H 1 /* /usr/include/string.h */ +//*efine HAS_STRINGS_H 1 /* /usr/include/strings.h */ + +#define HAS_UNISTD_H 1 /* /usr/include/unistd.h */ +#define HAS_UTIME 1 /* POSIX utime(path, times) */ +//*efine HAS_UTIMES 1 /* use utimes() syscall instead */ +#define HAS_UTIME_H 1 /* UTIME header file */ +//*efine HAS_UTIMBUF 1 /* struct utimbuf */ +//*efine HAS_UTIMEUSEC 1 /* microseconds in utimbuf? */ + +#endif /* CONFIG_H */ diff --git a/plugins/ladspa_effect/swh/gsm/decode.c b/plugins/ladspa_effect/swh/gsm/decode.c new file mode 100644 index 000000000..187f4fb2c --- /dev/null +++ b/plugins/ladspa_effect/swh/gsm/decode.c @@ -0,0 +1,63 @@ +/* + * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische + * Universitaet Berlin. See the accompanying file "COPYRIGHT" for + * details. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE. + */ + +/* $Header: /home/cvs/giga/ladspa-swh/gsm/decode.c,v 1.1 2001/06/10 21:36:51 swh Exp $ */ + +#include + +#include "private.h" +#include "gsm.h" +#include "proto.h" + +/* + * 4.3 FIXED POINT IMPLEMENTATION OF THE RPE-LTP DECODER + */ + +static void Postprocessing P2((S,s), + struct gsm_state * S, + register word * s) +{ + register int k; + register word msr = S->msr; + register longword ltmp; /* for GSM_ADD */ + register word tmp; + + for (k = 160; k--; s++) { + tmp = GSM_MULT_R( msr, 28180 ); + msr = GSM_ADD(*s, tmp); /* Deemphasis */ + *s = GSM_ADD(msr, msr) & 0xFFF8; /* Truncation & Upscaling */ + } + S->msr = msr; +} + +void Gsm_Decoder P8((S,LARcr, Ncr,bcr,Mcr,xmaxcr,xMcr,s), + struct gsm_state * S, + + word * LARcr, /* [0..7] IN */ + + word * Ncr, /* [0..3] IN */ + word * bcr, /* [0..3] IN */ + word * Mcr, /* [0..3] IN */ + word * xmaxcr, /* [0..3] IN */ + word * xMcr, /* [0..13*4] IN */ + + word * s) /* [0..159] OUT */ +{ + int j, k; + word erp[40], wt[160]; + word * drp = S->dp0 + 120; + + for (j=0; j <= 3; j++, xmaxcr++, bcr++, Ncr++, Mcr++, xMcr += 13) { + + Gsm_RPE_Decoding( S, *xmaxcr, *Mcr, xMcr, erp ); + Gsm_Long_Term_Synthesis_Filtering( S, *Ncr, *bcr, erp, drp ); + + for (k = 0; k <= 39; k++) wt[ j * 40 + k ] = drp[ k ]; + } + + Gsm_Short_Term_Synthesis_Filter( S, LARcr, wt, s ); + Postprocessing(S, s); +} diff --git a/plugins/ladspa_effect/swh/gsm/gsm.h b/plugins/ladspa_effect/swh/gsm/gsm.h new file mode 100644 index 000000000..e5ce0bb20 --- /dev/null +++ b/plugins/ladspa_effect/swh/gsm/gsm.h @@ -0,0 +1,71 @@ +/* + * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische + * Universitaet Berlin. See the accompanying file "COPYRIGHT" for + * details. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE. + */ + +/*$Header: /home/cvs/giga/ladspa-swh/gsm/gsm.h,v 1.1 2001/06/10 21:36:51 swh Exp $*/ + +#ifndef GSM_H +#define GSM_H + +#ifdef __cplusplus +# define NeedFunctionPrototypes 1 +#endif + +#if __STDC__ +# define NeedFunctionPrototypes 1 +#endif + +#ifdef _NO_PROTO +# undef NeedFunctionPrototypes +#endif + +#ifdef NeedFunctionPrototypes +# include /* for FILE * */ +#endif + +#undef GSM_P +#if NeedFunctionPrototypes +# define GSM_P( protos ) protos +#else +# define GSM_P( protos ) ( /* protos */ ) +#endif + +/* + * Interface + */ + +typedef struct gsm_state * gsm; +typedef short gsm_signal; /* signed 16 bit */ +typedef unsigned char gsm_byte; +typedef gsm_byte gsm_frame[33]; /* 33 * 8 bits */ + +#define GSM_MAGIC 0xD /* 13 kbit/s RPE-LTP */ + +#define GSM_PATCHLEVEL 10 +#define GSM_MINOR 0 +#define GSM_MAJOR 1 + +#define GSM_OPT_VERBOSE 1 +#define GSM_OPT_FAST 2 +#define GSM_OPT_LTP_CUT 3 +#define GSM_OPT_WAV49 4 +#define GSM_OPT_FRAME_INDEX 5 +#define GSM_OPT_FRAME_CHAIN 6 + +extern gsm gsm_create GSM_P((void)); +extern void gsm_destroy GSM_P((gsm)); + +extern int gsm_print GSM_P((FILE *, gsm, gsm_byte *)); +extern int gsm_option GSM_P((gsm, int, int *)); + +extern void gsm_encode GSM_P((gsm, gsm_signal *, gsm_byte *)); +extern int gsm_decode GSM_P((gsm, gsm_byte *, gsm_signal *)); + +extern int gsm_explode GSM_P((gsm, gsm_byte *, gsm_signal *)); +extern void gsm_implode GSM_P((gsm, gsm_signal *, gsm_byte *)); + +#undef GSM_P + +#endif /* GSM_H */ diff --git a/plugins/ladspa_effect/swh/gsm/gsm_create.c b/plugins/ladspa_effect/swh/gsm/gsm_create.c new file mode 100644 index 000000000..cadaff60e --- /dev/null +++ b/plugins/ladspa_effect/swh/gsm/gsm_create.c @@ -0,0 +1,45 @@ +/* + * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische + * Universitaet Berlin. See the accompanying file "COPYRIGHT" for + * details. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE. + */ + +static char const ident[] = "$Header: /home/cvs/giga/ladspa-swh/gsm/gsm_create.c,v 1.1 2001/06/10 21:36:51 swh Exp $"; + +#include "config.h" + +#ifdef HAS_STRING_H +#include +#else +# include "proto.h" + extern char * memset P((char *, int, int)); +#endif + +#ifdef HAS_STDLIB_H +# include +#else +# ifdef HAS_MALLOC_H +# include +# else + extern char * malloc(); +# endif +#endif + +#include + +#include "gsm.h" +#include "private.h" +#include "proto.h" + +gsm gsm_create P0() +{ + gsm r; + + r = (gsm)malloc(sizeof(struct gsm_state)); + if (!r) return r; + + memset((char *)r, 0, sizeof(*r)); + r->nrp = 40; + + return r; +} diff --git a/plugins/ladspa_effect/swh/gsm/gsm_decode.c b/plugins/ladspa_effect/swh/gsm/gsm_decode.c new file mode 100644 index 000000000..08135212f --- /dev/null +++ b/plugins/ladspa_effect/swh/gsm/gsm_decode.c @@ -0,0 +1,361 @@ +/* + * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische + * Universitaet Berlin. See the accompanying file "COPYRIGHT" for + * details. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE. + */ + +/* $Header: /home/cvs/giga/ladspa-swh/gsm/gsm_decode.c,v 1.1 2001/06/10 21:36:51 swh Exp $ */ + +#include "private.h" + +#include "gsm.h" +#include "proto.h" + +int gsm_decode P3((s, c, target), gsm s, gsm_byte * c, gsm_signal * target) +{ + word LARc[8], Nc[4], Mc[4], bc[4], xmaxc[4], xmc[13*4]; + +#ifdef WAV49 + if (s->wav_fmt) { + + uword sr = 0; + + s->frame_index = !s->frame_index; + if (s->frame_index) { + + sr = *c++; + LARc[0] = sr & 0x3f; sr >>= 6; + sr |= (uword)*c++ << 2; + LARc[1] = sr & 0x3f; sr >>= 6; + sr |= (uword)*c++ << 4; + LARc[2] = sr & 0x1f; sr >>= 5; + LARc[3] = sr & 0x1f; sr >>= 5; + sr |= (uword)*c++ << 2; + LARc[4] = sr & 0xf; sr >>= 4; + LARc[5] = sr & 0xf; sr >>= 4; + sr |= (uword)*c++ << 2; /* 5 */ + LARc[6] = sr & 0x7; sr >>= 3; + LARc[7] = sr & 0x7; sr >>= 3; + sr |= (uword)*c++ << 4; + Nc[0] = sr & 0x7f; sr >>= 7; + bc[0] = sr & 0x3; sr >>= 2; + Mc[0] = sr & 0x3; sr >>= 2; + sr |= (uword)*c++ << 1; + xmaxc[0] = sr & 0x3f; sr >>= 6; + xmc[0] = sr & 0x7; sr >>= 3; + sr = *c++; + xmc[1] = sr & 0x7; sr >>= 3; + xmc[2] = sr & 0x7; sr >>= 3; + sr |= (uword)*c++ << 2; + xmc[3] = sr & 0x7; sr >>= 3; + xmc[4] = sr & 0x7; sr >>= 3; + xmc[5] = sr & 0x7; sr >>= 3; + sr |= (uword)*c++ << 1; /* 10 */ + xmc[6] = sr & 0x7; sr >>= 3; + xmc[7] = sr & 0x7; sr >>= 3; + xmc[8] = sr & 0x7; sr >>= 3; + sr = *c++; + xmc[9] = sr & 0x7; sr >>= 3; + xmc[10] = sr & 0x7; sr >>= 3; + sr |= (uword)*c++ << 2; + xmc[11] = sr & 0x7; sr >>= 3; + xmc[12] = sr & 0x7; sr >>= 3; + sr |= (uword)*c++ << 4; + Nc[1] = sr & 0x7f; sr >>= 7; + bc[1] = sr & 0x3; sr >>= 2; + Mc[1] = sr & 0x3; sr >>= 2; + sr |= (uword)*c++ << 1; + xmaxc[1] = sr & 0x3f; sr >>= 6; + xmc[13] = sr & 0x7; sr >>= 3; + sr = *c++; /* 15 */ + xmc[14] = sr & 0x7; sr >>= 3; + xmc[15] = sr & 0x7; sr >>= 3; + sr |= (uword)*c++ << 2; + xmc[16] = sr & 0x7; sr >>= 3; + xmc[17] = sr & 0x7; sr >>= 3; + xmc[18] = sr & 0x7; sr >>= 3; + sr |= (uword)*c++ << 1; + xmc[19] = sr & 0x7; sr >>= 3; + xmc[20] = sr & 0x7; sr >>= 3; + xmc[21] = sr & 0x7; sr >>= 3; + sr = *c++; + xmc[22] = sr & 0x7; sr >>= 3; + xmc[23] = sr & 0x7; sr >>= 3; + sr |= (uword)*c++ << 2; + xmc[24] = sr & 0x7; sr >>= 3; + xmc[25] = sr & 0x7; sr >>= 3; + sr |= (uword)*c++ << 4; /* 20 */ + Nc[2] = sr & 0x7f; sr >>= 7; + bc[2] = sr & 0x3; sr >>= 2; + Mc[2] = sr & 0x3; sr >>= 2; + sr |= (uword)*c++ << 1; + xmaxc[2] = sr & 0x3f; sr >>= 6; + xmc[26] = sr & 0x7; sr >>= 3; + sr = *c++; + xmc[27] = sr & 0x7; sr >>= 3; + xmc[28] = sr & 0x7; sr >>= 3; + sr |= (uword)*c++ << 2; + xmc[29] = sr & 0x7; sr >>= 3; + xmc[30] = sr & 0x7; sr >>= 3; + xmc[31] = sr & 0x7; sr >>= 3; + sr |= (uword)*c++ << 1; + xmc[32] = sr & 0x7; sr >>= 3; + xmc[33] = sr & 0x7; sr >>= 3; + xmc[34] = sr & 0x7; sr >>= 3; + sr = *c++; /* 25 */ + xmc[35] = sr & 0x7; sr >>= 3; + xmc[36] = sr & 0x7; sr >>= 3; + sr |= (uword)*c++ << 2; + xmc[37] = sr & 0x7; sr >>= 3; + xmc[38] = sr & 0x7; sr >>= 3; + sr |= (uword)*c++ << 4; + Nc[3] = sr & 0x7f; sr >>= 7; + bc[3] = sr & 0x3; sr >>= 2; + Mc[3] = sr & 0x3; sr >>= 2; + sr |= (uword)*c++ << 1; + xmaxc[3] = sr & 0x3f; sr >>= 6; + xmc[39] = sr & 0x7; sr >>= 3; + sr = *c++; + xmc[40] = sr & 0x7; sr >>= 3; + xmc[41] = sr & 0x7; sr >>= 3; + sr |= (uword)*c++ << 2; /* 30 */ + xmc[42] = sr & 0x7; sr >>= 3; + xmc[43] = sr & 0x7; sr >>= 3; + xmc[44] = sr & 0x7; sr >>= 3; + sr |= (uword)*c++ << 1; + xmc[45] = sr & 0x7; sr >>= 3; + xmc[46] = sr & 0x7; sr >>= 3; + xmc[47] = sr & 0x7; sr >>= 3; + sr = *c++; + xmc[48] = sr & 0x7; sr >>= 3; + xmc[49] = sr & 0x7; sr >>= 3; + sr |= (uword)*c++ << 2; + xmc[50] = sr & 0x7; sr >>= 3; + xmc[51] = sr & 0x7; sr >>= 3; + + s->frame_chain = sr & 0xf; + } + else { + sr = s->frame_chain; + sr |= (uword)*c++ << 4; /* 1 */ + LARc[0] = sr & 0x3f; sr >>= 6; + LARc[1] = sr & 0x3f; sr >>= 6; + sr = *c++; + LARc[2] = sr & 0x1f; sr >>= 5; + sr |= (uword)*c++ << 3; + LARc[3] = sr & 0x1f; sr >>= 5; + LARc[4] = sr & 0xf; sr >>= 4; + sr |= (uword)*c++ << 2; + LARc[5] = sr & 0xf; sr >>= 4; + LARc[6] = sr & 0x7; sr >>= 3; + LARc[7] = sr & 0x7; sr >>= 3; + sr = *c++; /* 5 */ + Nc[0] = sr & 0x7f; sr >>= 7; + sr |= (uword)*c++ << 1; + bc[0] = sr & 0x3; sr >>= 2; + Mc[0] = sr & 0x3; sr >>= 2; + sr |= (uword)*c++ << 5; + xmaxc[0] = sr & 0x3f; sr >>= 6; + xmc[0] = sr & 0x7; sr >>= 3; + xmc[1] = sr & 0x7; sr >>= 3; + sr |= (uword)*c++ << 1; + xmc[2] = sr & 0x7; sr >>= 3; + xmc[3] = sr & 0x7; sr >>= 3; + xmc[4] = sr & 0x7; sr >>= 3; + sr = *c++; + xmc[5] = sr & 0x7; sr >>= 3; + xmc[6] = sr & 0x7; sr >>= 3; + sr |= (uword)*c++ << 2; /* 10 */ + xmc[7] = sr & 0x7; sr >>= 3; + xmc[8] = sr & 0x7; sr >>= 3; + xmc[9] = sr & 0x7; sr >>= 3; + sr |= (uword)*c++ << 1; + xmc[10] = sr & 0x7; sr >>= 3; + xmc[11] = sr & 0x7; sr >>= 3; + xmc[12] = sr & 0x7; sr >>= 3; + sr = *c++; + Nc[1] = sr & 0x7f; sr >>= 7; + sr |= (uword)*c++ << 1; + bc[1] = sr & 0x3; sr >>= 2; + Mc[1] = sr & 0x3; sr >>= 2; + sr |= (uword)*c++ << 5; + xmaxc[1] = sr & 0x3f; sr >>= 6; + xmc[13] = sr & 0x7; sr >>= 3; + xmc[14] = sr & 0x7; sr >>= 3; + sr |= (uword)*c++ << 1; /* 15 */ + xmc[15] = sr & 0x7; sr >>= 3; + xmc[16] = sr & 0x7; sr >>= 3; + xmc[17] = sr & 0x7; sr >>= 3; + sr = *c++; + xmc[18] = sr & 0x7; sr >>= 3; + xmc[19] = sr & 0x7; sr >>= 3; + sr |= (uword)*c++ << 2; + xmc[20] = sr & 0x7; sr >>= 3; + xmc[21] = sr & 0x7; sr >>= 3; + xmc[22] = sr & 0x7; sr >>= 3; + sr |= (uword)*c++ << 1; + xmc[23] = sr & 0x7; sr >>= 3; + xmc[24] = sr & 0x7; sr >>= 3; + xmc[25] = sr & 0x7; sr >>= 3; + sr = *c++; + Nc[2] = sr & 0x7f; sr >>= 7; + sr |= (uword)*c++ << 1; /* 20 */ + bc[2] = sr & 0x3; sr >>= 2; + Mc[2] = sr & 0x3; sr >>= 2; + sr |= (uword)*c++ << 5; + xmaxc[2] = sr & 0x3f; sr >>= 6; + xmc[26] = sr & 0x7; sr >>= 3; + xmc[27] = sr & 0x7; sr >>= 3; + sr |= (uword)*c++ << 1; + xmc[28] = sr & 0x7; sr >>= 3; + xmc[29] = sr & 0x7; sr >>= 3; + xmc[30] = sr & 0x7; sr >>= 3; + sr = *c++; + xmc[31] = sr & 0x7; sr >>= 3; + xmc[32] = sr & 0x7; sr >>= 3; + sr |= (uword)*c++ << 2; + xmc[33] = sr & 0x7; sr >>= 3; + xmc[34] = sr & 0x7; sr >>= 3; + xmc[35] = sr & 0x7; sr >>= 3; + sr |= (uword)*c++ << 1; /* 25 */ + xmc[36] = sr & 0x7; sr >>= 3; + xmc[37] = sr & 0x7; sr >>= 3; + xmc[38] = sr & 0x7; sr >>= 3; + sr = *c++; + Nc[3] = sr & 0x7f; sr >>= 7; + sr |= (uword)*c++ << 1; + bc[3] = sr & 0x3; sr >>= 2; + Mc[3] = sr & 0x3; sr >>= 2; + sr |= (uword)*c++ << 5; + xmaxc[3] = sr & 0x3f; sr >>= 6; + xmc[39] = sr & 0x7; sr >>= 3; + xmc[40] = sr & 0x7; sr >>= 3; + sr |= (uword)*c++ << 1; + xmc[41] = sr & 0x7; sr >>= 3; + xmc[42] = sr & 0x7; sr >>= 3; + xmc[43] = sr & 0x7; sr >>= 3; + sr = *c++; /* 30 */ + xmc[44] = sr & 0x7; sr >>= 3; + xmc[45] = sr & 0x7; sr >>= 3; + sr |= (uword)*c++ << 2; + xmc[46] = sr & 0x7; sr >>= 3; + xmc[47] = sr & 0x7; sr >>= 3; + xmc[48] = sr & 0x7; sr >>= 3; + sr |= (uword)*c++ << 1; + xmc[49] = sr & 0x7; sr >>= 3; + xmc[50] = sr & 0x7; sr >>= 3; + xmc[51] = sr & 0x7; sr >>= 3; + } + } + else +#endif + { + /* GSM_MAGIC = (*c >> 4) & 0xF; */ + + if (((*c >> 4) & 0x0F) != GSM_MAGIC) return -1; + + LARc[0] = (*c++ & 0xF) << 2; /* 1 */ + LARc[0] |= (*c >> 6) & 0x3; + LARc[1] = *c++ & 0x3F; + LARc[2] = (*c >> 3) & 0x1F; + LARc[3] = (*c++ & 0x7) << 2; + LARc[3] |= (*c >> 6) & 0x3; + LARc[4] = (*c >> 2) & 0xF; + LARc[5] = (*c++ & 0x3) << 2; + LARc[5] |= (*c >> 6) & 0x3; + LARc[6] = (*c >> 3) & 0x7; + LARc[7] = *c++ & 0x7; + Nc[0] = (*c >> 1) & 0x7F; + bc[0] = (*c++ & 0x1) << 1; + bc[0] |= (*c >> 7) & 0x1; + Mc[0] = (*c >> 5) & 0x3; + xmaxc[0] = (*c++ & 0x1F) << 1; + xmaxc[0] |= (*c >> 7) & 0x1; + xmc[0] = (*c >> 4) & 0x7; + xmc[1] = (*c >> 1) & 0x7; + xmc[2] = (*c++ & 0x1) << 2; + xmc[2] |= (*c >> 6) & 0x3; + xmc[3] = (*c >> 3) & 0x7; + xmc[4] = *c++ & 0x7; + xmc[5] = (*c >> 5) & 0x7; + xmc[6] = (*c >> 2) & 0x7; + xmc[7] = (*c++ & 0x3) << 1; /* 10 */ + xmc[7] |= (*c >> 7) & 0x1; + xmc[8] = (*c >> 4) & 0x7; + xmc[9] = (*c >> 1) & 0x7; + xmc[10] = (*c++ & 0x1) << 2; + xmc[10] |= (*c >> 6) & 0x3; + xmc[11] = (*c >> 3) & 0x7; + xmc[12] = *c++ & 0x7; + Nc[1] = (*c >> 1) & 0x7F; + bc[1] = (*c++ & 0x1) << 1; + bc[1] |= (*c >> 7) & 0x1; + Mc[1] = (*c >> 5) & 0x3; + xmaxc[1] = (*c++ & 0x1F) << 1; + xmaxc[1] |= (*c >> 7) & 0x1; + xmc[13] = (*c >> 4) & 0x7; + xmc[14] = (*c >> 1) & 0x7; + xmc[15] = (*c++ & 0x1) << 2; + xmc[15] |= (*c >> 6) & 0x3; + xmc[16] = (*c >> 3) & 0x7; + xmc[17] = *c++ & 0x7; + xmc[18] = (*c >> 5) & 0x7; + xmc[19] = (*c >> 2) & 0x7; + xmc[20] = (*c++ & 0x3) << 1; + xmc[20] |= (*c >> 7) & 0x1; + xmc[21] = (*c >> 4) & 0x7; + xmc[22] = (*c >> 1) & 0x7; + xmc[23] = (*c++ & 0x1) << 2; + xmc[23] |= (*c >> 6) & 0x3; + xmc[24] = (*c >> 3) & 0x7; + xmc[25] = *c++ & 0x7; + Nc[2] = (*c >> 1) & 0x7F; + bc[2] = (*c++ & 0x1) << 1; /* 20 */ + bc[2] |= (*c >> 7) & 0x1; + Mc[2] = (*c >> 5) & 0x3; + xmaxc[2] = (*c++ & 0x1F) << 1; + xmaxc[2] |= (*c >> 7) & 0x1; + xmc[26] = (*c >> 4) & 0x7; + xmc[27] = (*c >> 1) & 0x7; + xmc[28] = (*c++ & 0x1) << 2; + xmc[28] |= (*c >> 6) & 0x3; + xmc[29] = (*c >> 3) & 0x7; + xmc[30] = *c++ & 0x7; + xmc[31] = (*c >> 5) & 0x7; + xmc[32] = (*c >> 2) & 0x7; + xmc[33] = (*c++ & 0x3) << 1; + xmc[33] |= (*c >> 7) & 0x1; + xmc[34] = (*c >> 4) & 0x7; + xmc[35] = (*c >> 1) & 0x7; + xmc[36] = (*c++ & 0x1) << 2; + xmc[36] |= (*c >> 6) & 0x3; + xmc[37] = (*c >> 3) & 0x7; + xmc[38] = *c++ & 0x7; + Nc[3] = (*c >> 1) & 0x7F; + bc[3] = (*c++ & 0x1) << 1; + bc[3] |= (*c >> 7) & 0x1; + Mc[3] = (*c >> 5) & 0x3; + xmaxc[3] = (*c++ & 0x1F) << 1; + xmaxc[3] |= (*c >> 7) & 0x1; + xmc[39] = (*c >> 4) & 0x7; + xmc[40] = (*c >> 1) & 0x7; + xmc[41] = (*c++ & 0x1) << 2; + xmc[41] |= (*c >> 6) & 0x3; + xmc[42] = (*c >> 3) & 0x7; + xmc[43] = *c++ & 0x7; /* 30 */ + xmc[44] = (*c >> 5) & 0x7; + xmc[45] = (*c >> 2) & 0x7; + xmc[46] = (*c++ & 0x3) << 1; + xmc[46] |= (*c >> 7) & 0x1; + xmc[47] = (*c >> 4) & 0x7; + xmc[48] = (*c >> 1) & 0x7; + xmc[49] = (*c++ & 0x1) << 2; + xmc[49] |= (*c >> 6) & 0x3; + xmc[50] = (*c >> 3) & 0x7; + xmc[51] = *c & 0x7; /* 33 */ + } + + Gsm_Decoder(s, LARc, Nc, bc, Mc, xmaxc, xmc, target); + + return 0; +} diff --git a/plugins/ladspa_effect/swh/gsm/gsm_destroy.c b/plugins/ladspa_effect/swh/gsm/gsm_destroy.c new file mode 100644 index 000000000..8630364df --- /dev/null +++ b/plugins/ladspa_effect/swh/gsm/gsm_destroy.c @@ -0,0 +1,26 @@ +/* + * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische + * Universitaet Berlin. See the accompanying file "COPYRIGHT" for + * details. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE. + */ + +/* $Header: /home/cvs/giga/ladspa-swh/gsm/gsm_destroy.c,v 1.1 2001/06/10 21:36:51 swh Exp $ */ + +#include "gsm.h" +#include "config.h" +#include "proto.h" + +#ifdef HAS_STDLIB_H +# include +#else +# ifdef HAS_MALLOC_H +# include +# else + extern void free(); +# endif +#endif + +void gsm_destroy P1((S), gsm S) +{ + if (S) free((char *)S); +} diff --git a/plugins/ladspa_effect/swh/gsm/gsm_encode.c b/plugins/ladspa_effect/swh/gsm/gsm_encode.c new file mode 100644 index 000000000..ea298e1f8 --- /dev/null +++ b/plugins/ladspa_effect/swh/gsm/gsm_encode.c @@ -0,0 +1,451 @@ +/* + * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische + * Universitaet Berlin. See the accompanying file "COPYRIGHT" for + * details. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE. + */ + +/* $Header: /home/cvs/giga/ladspa-swh/gsm/gsm_encode.c,v 1.1 2001/06/10 21:36:51 swh Exp $ */ + +#include "private.h" +#include "gsm.h" +#include "proto.h" + +void gsm_encode P3((s, source, c), gsm s, gsm_signal * source, gsm_byte * c) +{ + word LARc[8], Nc[4], Mc[4], bc[4], xmaxc[4], xmc[13*4]; + + Gsm_Coder(s, source, LARc, Nc, bc, Mc, xmaxc, xmc); + + + /* variable size + + GSM_MAGIC 4 + + LARc[0] 6 + LARc[1] 6 + LARc[2] 5 + LARc[3] 5 + LARc[4] 4 + LARc[5] 4 + LARc[6] 3 + LARc[7] 3 + + Nc[0] 7 + bc[0] 2 + Mc[0] 2 + xmaxc[0] 6 + xmc[0] 3 + xmc[1] 3 + xmc[2] 3 + xmc[3] 3 + xmc[4] 3 + xmc[5] 3 + xmc[6] 3 + xmc[7] 3 + xmc[8] 3 + xmc[9] 3 + xmc[10] 3 + xmc[11] 3 + xmc[12] 3 + + Nc[1] 7 + bc[1] 2 + Mc[1] 2 + xmaxc[1] 6 + xmc[13] 3 + xmc[14] 3 + xmc[15] 3 + xmc[16] 3 + xmc[17] 3 + xmc[18] 3 + xmc[19] 3 + xmc[20] 3 + xmc[21] 3 + xmc[22] 3 + xmc[23] 3 + xmc[24] 3 + xmc[25] 3 + + Nc[2] 7 + bc[2] 2 + Mc[2] 2 + xmaxc[2] 6 + xmc[26] 3 + xmc[27] 3 + xmc[28] 3 + xmc[29] 3 + xmc[30] 3 + xmc[31] 3 + xmc[32] 3 + xmc[33] 3 + xmc[34] 3 + xmc[35] 3 + xmc[36] 3 + xmc[37] 3 + xmc[38] 3 + + Nc[3] 7 + bc[3] 2 + Mc[3] 2 + xmaxc[3] 6 + xmc[39] 3 + xmc[40] 3 + xmc[41] 3 + xmc[42] 3 + xmc[43] 3 + xmc[44] 3 + xmc[45] 3 + xmc[46] 3 + xmc[47] 3 + xmc[48] 3 + xmc[49] 3 + xmc[50] 3 + xmc[51] 3 + */ + +#ifdef WAV49 + + if (s->wav_fmt) { + s->frame_index = !s->frame_index; + if (s->frame_index) { + + uword sr; + + sr = 0; + sr = sr >> 6 | LARc[0] << 10; + sr = sr >> 6 | LARc[1] << 10; + *c++ = sr >> 4; + sr = sr >> 5 | LARc[2] << 11; + *c++ = sr >> 7; + sr = sr >> 5 | LARc[3] << 11; + sr = sr >> 4 | LARc[4] << 12; + *c++ = sr >> 6; + sr = sr >> 4 | LARc[5] << 12; + sr = sr >> 3 | LARc[6] << 13; + *c++ = sr >> 7; + sr = sr >> 3 | LARc[7] << 13; + sr = sr >> 7 | Nc[0] << 9; + *c++ = sr >> 5; + sr = sr >> 2 | bc[0] << 14; + sr = sr >> 2 | Mc[0] << 14; + sr = sr >> 6 | xmaxc[0] << 10; + *c++ = sr >> 3; + sr = sr >> 3 | xmc[0] << 13; + *c++ = sr >> 8; + sr = sr >> 3 | xmc[1] << 13; + sr = sr >> 3 | xmc[2] << 13; + sr = sr >> 3 | xmc[3] << 13; + *c++ = sr >> 7; + sr = sr >> 3 | xmc[4] << 13; + sr = sr >> 3 | xmc[5] << 13; + sr = sr >> 3 | xmc[6] << 13; + *c++ = sr >> 6; + sr = sr >> 3 | xmc[7] << 13; + sr = sr >> 3 | xmc[8] << 13; + *c++ = sr >> 8; + sr = sr >> 3 | xmc[9] << 13; + sr = sr >> 3 | xmc[10] << 13; + sr = sr >> 3 | xmc[11] << 13; + *c++ = sr >> 7; + sr = sr >> 3 | xmc[12] << 13; + sr = sr >> 7 | Nc[1] << 9; + *c++ = sr >> 5; + sr = sr >> 2 | bc[1] << 14; + sr = sr >> 2 | Mc[1] << 14; + sr = sr >> 6 | xmaxc[1] << 10; + *c++ = sr >> 3; + sr = sr >> 3 | xmc[13] << 13; + *c++ = sr >> 8; + sr = sr >> 3 | xmc[14] << 13; + sr = sr >> 3 | xmc[15] << 13; + sr = sr >> 3 | xmc[16] << 13; + *c++ = sr >> 7; + sr = sr >> 3 | xmc[17] << 13; + sr = sr >> 3 | xmc[18] << 13; + sr = sr >> 3 | xmc[19] << 13; + *c++ = sr >> 6; + sr = sr >> 3 | xmc[20] << 13; + sr = sr >> 3 | xmc[21] << 13; + *c++ = sr >> 8; + sr = sr >> 3 | xmc[22] << 13; + sr = sr >> 3 | xmc[23] << 13; + sr = sr >> 3 | xmc[24] << 13; + *c++ = sr >> 7; + sr = sr >> 3 | xmc[25] << 13; + sr = sr >> 7 | Nc[2] << 9; + *c++ = sr >> 5; + sr = sr >> 2 | bc[2] << 14; + sr = sr >> 2 | Mc[2] << 14; + sr = sr >> 6 | xmaxc[2] << 10; + *c++ = sr >> 3; + sr = sr >> 3 | xmc[26] << 13; + *c++ = sr >> 8; + sr = sr >> 3 | xmc[27] << 13; + sr = sr >> 3 | xmc[28] << 13; + sr = sr >> 3 | xmc[29] << 13; + *c++ = sr >> 7; + sr = sr >> 3 | xmc[30] << 13; + sr = sr >> 3 | xmc[31] << 13; + sr = sr >> 3 | xmc[32] << 13; + *c++ = sr >> 6; + sr = sr >> 3 | xmc[33] << 13; + sr = sr >> 3 | xmc[34] << 13; + *c++ = sr >> 8; + sr = sr >> 3 | xmc[35] << 13; + sr = sr >> 3 | xmc[36] << 13; + sr = sr >> 3 | xmc[37] << 13; + *c++ = sr >> 7; + sr = sr >> 3 | xmc[38] << 13; + sr = sr >> 7 | Nc[3] << 9; + *c++ = sr >> 5; + sr = sr >> 2 | bc[3] << 14; + sr = sr >> 2 | Mc[3] << 14; + sr = sr >> 6 | xmaxc[3] << 10; + *c++ = sr >> 3; + sr = sr >> 3 | xmc[39] << 13; + *c++ = sr >> 8; + sr = sr >> 3 | xmc[40] << 13; + sr = sr >> 3 | xmc[41] << 13; + sr = sr >> 3 | xmc[42] << 13; + *c++ = sr >> 7; + sr = sr >> 3 | xmc[43] << 13; + sr = sr >> 3 | xmc[44] << 13; + sr = sr >> 3 | xmc[45] << 13; + *c++ = sr >> 6; + sr = sr >> 3 | xmc[46] << 13; + sr = sr >> 3 | xmc[47] << 13; + *c++ = sr >> 8; + sr = sr >> 3 | xmc[48] << 13; + sr = sr >> 3 | xmc[49] << 13; + sr = sr >> 3 | xmc[50] << 13; + *c++ = sr >> 7; + sr = sr >> 3 | xmc[51] << 13; + sr = sr >> 4; + *c = sr >> 8; + s->frame_chain = *c; + } + else { + uword sr; + + sr = 0; + sr = sr >> 4 | s->frame_chain << 12; + sr = sr >> 6 | LARc[0] << 10; + *c++ = sr >> 6; + sr = sr >> 6 | LARc[1] << 10; + *c++ = sr >> 8; + sr = sr >> 5 | LARc[2] << 11; + sr = sr >> 5 | LARc[3] << 11; + *c++ = sr >> 6; + sr = sr >> 4 | LARc[4] << 12; + sr = sr >> 4 | LARc[5] << 12; + *c++ = sr >> 6; + sr = sr >> 3 | LARc[6] << 13; + sr = sr >> 3 | LARc[7] << 13; + *c++ = sr >> 8; + sr = sr >> 7 | Nc[0] << 9; + sr = sr >> 2 | bc[0] << 14; + *c++ = sr >> 7; + sr = sr >> 2 | Mc[0] << 14; + sr = sr >> 6 | xmaxc[0] << 10; + *c++ = sr >> 7; + sr = sr >> 3 | xmc[0] << 13; + sr = sr >> 3 | xmc[1] << 13; + sr = sr >> 3 | xmc[2] << 13; + *c++ = sr >> 6; + sr = sr >> 3 | xmc[3] << 13; + sr = sr >> 3 | xmc[4] << 13; + *c++ = sr >> 8; + sr = sr >> 3 | xmc[5] << 13; + sr = sr >> 3 | xmc[6] << 13; + sr = sr >> 3 | xmc[7] << 13; + *c++ = sr >> 7; + sr = sr >> 3 | xmc[8] << 13; + sr = sr >> 3 | xmc[9] << 13; + sr = sr >> 3 | xmc[10] << 13; + *c++ = sr >> 6; + sr = sr >> 3 | xmc[11] << 13; + sr = sr >> 3 | xmc[12] << 13; + *c++ = sr >> 8; + sr = sr >> 7 | Nc[1] << 9; + sr = sr >> 2 | bc[1] << 14; + *c++ = sr >> 7; + sr = sr >> 2 | Mc[1] << 14; + sr = sr >> 6 | xmaxc[1] << 10; + *c++ = sr >> 7; + sr = sr >> 3 | xmc[13] << 13; + sr = sr >> 3 | xmc[14] << 13; + sr = sr >> 3 | xmc[15] << 13; + *c++ = sr >> 6; + sr = sr >> 3 | xmc[16] << 13; + sr = sr >> 3 | xmc[17] << 13; + *c++ = sr >> 8; + sr = sr >> 3 | xmc[18] << 13; + sr = sr >> 3 | xmc[19] << 13; + sr = sr >> 3 | xmc[20] << 13; + *c++ = sr >> 7; + sr = sr >> 3 | xmc[21] << 13; + sr = sr >> 3 | xmc[22] << 13; + sr = sr >> 3 | xmc[23] << 13; + *c++ = sr >> 6; + sr = sr >> 3 | xmc[24] << 13; + sr = sr >> 3 | xmc[25] << 13; + *c++ = sr >> 8; + sr = sr >> 7 | Nc[2] << 9; + sr = sr >> 2 | bc[2] << 14; + *c++ = sr >> 7; + sr = sr >> 2 | Mc[2] << 14; + sr = sr >> 6 | xmaxc[2] << 10; + *c++ = sr >> 7; + sr = sr >> 3 | xmc[26] << 13; + sr = sr >> 3 | xmc[27] << 13; + sr = sr >> 3 | xmc[28] << 13; + *c++ = sr >> 6; + sr = sr >> 3 | xmc[29] << 13; + sr = sr >> 3 | xmc[30] << 13; + *c++ = sr >> 8; + sr = sr >> 3 | xmc[31] << 13; + sr = sr >> 3 | xmc[32] << 13; + sr = sr >> 3 | xmc[33] << 13; + *c++ = sr >> 7; + sr = sr >> 3 | xmc[34] << 13; + sr = sr >> 3 | xmc[35] << 13; + sr = sr >> 3 | xmc[36] << 13; + *c++ = sr >> 6; + sr = sr >> 3 | xmc[37] << 13; + sr = sr >> 3 | xmc[38] << 13; + *c++ = sr >> 8; + sr = sr >> 7 | Nc[3] << 9; + sr = sr >> 2 | bc[3] << 14; + *c++ = sr >> 7; + sr = sr >> 2 | Mc[3] << 14; + sr = sr >> 6 | xmaxc[3] << 10; + *c++ = sr >> 7; + sr = sr >> 3 | xmc[39] << 13; + sr = sr >> 3 | xmc[40] << 13; + sr = sr >> 3 | xmc[41] << 13; + *c++ = sr >> 6; + sr = sr >> 3 | xmc[42] << 13; + sr = sr >> 3 | xmc[43] << 13; + *c++ = sr >> 8; + sr = sr >> 3 | xmc[44] << 13; + sr = sr >> 3 | xmc[45] << 13; + sr = sr >> 3 | xmc[46] << 13; + *c++ = sr >> 7; + sr = sr >> 3 | xmc[47] << 13; + sr = sr >> 3 | xmc[48] << 13; + sr = sr >> 3 | xmc[49] << 13; + *c++ = sr >> 6; + sr = sr >> 3 | xmc[50] << 13; + sr = sr >> 3 | xmc[51] << 13; + *c++ = sr >> 8; + } + } + + else + +#endif /* WAV49 */ + { + + *c++ = ((GSM_MAGIC & 0xF) << 4) /* 1 */ + | ((LARc[0] >> 2) & 0xF); + *c++ = ((LARc[0] & 0x3) << 6) + | (LARc[1] & 0x3F); + *c++ = ((LARc[2] & 0x1F) << 3) + | ((LARc[3] >> 2) & 0x7); + *c++ = ((LARc[3] & 0x3) << 6) + | ((LARc[4] & 0xF) << 2) + | ((LARc[5] >> 2) & 0x3); + *c++ = ((LARc[5] & 0x3) << 6) + | ((LARc[6] & 0x7) << 3) + | (LARc[7] & 0x7); + *c++ = ((Nc[0] & 0x7F) << 1) + | ((bc[0] >> 1) & 0x1); + *c++ = ((bc[0] & 0x1) << 7) + | ((Mc[0] & 0x3) << 5) + | ((xmaxc[0] >> 1) & 0x1F); + *c++ = ((xmaxc[0] & 0x1) << 7) + | ((xmc[0] & 0x7) << 4) + | ((xmc[1] & 0x7) << 1) + | ((xmc[2] >> 2) & 0x1); + *c++ = ((xmc[2] & 0x3) << 6) + | ((xmc[3] & 0x7) << 3) + | (xmc[4] & 0x7); + *c++ = ((xmc[5] & 0x7) << 5) /* 10 */ + | ((xmc[6] & 0x7) << 2) + | ((xmc[7] >> 1) & 0x3); + *c++ = ((xmc[7] & 0x1) << 7) + | ((xmc[8] & 0x7) << 4) + | ((xmc[9] & 0x7) << 1) + | ((xmc[10] >> 2) & 0x1); + *c++ = ((xmc[10] & 0x3) << 6) + | ((xmc[11] & 0x7) << 3) + | (xmc[12] & 0x7); + *c++ = ((Nc[1] & 0x7F) << 1) + | ((bc[1] >> 1) & 0x1); + *c++ = ((bc[1] & 0x1) << 7) + | ((Mc[1] & 0x3) << 5) + | ((xmaxc[1] >> 1) & 0x1F); + *c++ = ((xmaxc[1] & 0x1) << 7) + | ((xmc[13] & 0x7) << 4) + | ((xmc[14] & 0x7) << 1) + | ((xmc[15] >> 2) & 0x1); + *c++ = ((xmc[15] & 0x3) << 6) + | ((xmc[16] & 0x7) << 3) + | (xmc[17] & 0x7); + *c++ = ((xmc[18] & 0x7) << 5) + | ((xmc[19] & 0x7) << 2) + | ((xmc[20] >> 1) & 0x3); + *c++ = ((xmc[20] & 0x1) << 7) + | ((xmc[21] & 0x7) << 4) + | ((xmc[22] & 0x7) << 1) + | ((xmc[23] >> 2) & 0x1); + *c++ = ((xmc[23] & 0x3) << 6) + | ((xmc[24] & 0x7) << 3) + | (xmc[25] & 0x7); + *c++ = ((Nc[2] & 0x7F) << 1) /* 20 */ + | ((bc[2] >> 1) & 0x1); + *c++ = ((bc[2] & 0x1) << 7) + | ((Mc[2] & 0x3) << 5) + | ((xmaxc[2] >> 1) & 0x1F); + *c++ = ((xmaxc[2] & 0x1) << 7) + | ((xmc[26] & 0x7) << 4) + | ((xmc[27] & 0x7) << 1) + | ((xmc[28] >> 2) & 0x1); + *c++ = ((xmc[28] & 0x3) << 6) + | ((xmc[29] & 0x7) << 3) + | (xmc[30] & 0x7); + *c++ = ((xmc[31] & 0x7) << 5) + | ((xmc[32] & 0x7) << 2) + | ((xmc[33] >> 1) & 0x3); + *c++ = ((xmc[33] & 0x1) << 7) + | ((xmc[34] & 0x7) << 4) + | ((xmc[35] & 0x7) << 1) + | ((xmc[36] >> 2) & 0x1); + *c++ = ((xmc[36] & 0x3) << 6) + | ((xmc[37] & 0x7) << 3) + | (xmc[38] & 0x7); + *c++ = ((Nc[3] & 0x7F) << 1) + | ((bc[3] >> 1) & 0x1); + *c++ = ((bc[3] & 0x1) << 7) + | ((Mc[3] & 0x3) << 5) + | ((xmaxc[3] >> 1) & 0x1F); + *c++ = ((xmaxc[3] & 0x1) << 7) + | ((xmc[39] & 0x7) << 4) + | ((xmc[40] & 0x7) << 1) + | ((xmc[41] >> 2) & 0x1); + *c++ = ((xmc[41] & 0x3) << 6) /* 30 */ + | ((xmc[42] & 0x7) << 3) + | (xmc[43] & 0x7); + *c++ = ((xmc[44] & 0x7) << 5) + | ((xmc[45] & 0x7) << 2) + | ((xmc[46] >> 1) & 0x3); + *c++ = ((xmc[46] & 0x1) << 7) + | ((xmc[47] & 0x7) << 4) + | ((xmc[48] & 0x7) << 1) + | ((xmc[49] >> 2) & 0x1); + *c++ = ((xmc[49] & 0x3) << 6) + | ((xmc[50] & 0x7) << 3) + | (xmc[51] & 0x7); + + } +} diff --git a/plugins/ladspa_effect/swh/gsm/gsm_option.c b/plugins/ladspa_effect/swh/gsm/gsm_option.c new file mode 100644 index 000000000..b9901ef9e --- /dev/null +++ b/plugins/ladspa_effect/swh/gsm/gsm_option.c @@ -0,0 +1,69 @@ +/* + * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische + * Universitaet Berlin. See the accompanying file "COPYRIGHT" for + * details. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE. + */ + +/* $Header: /home/cvs/giga/ladspa-swh/gsm/gsm_option.c,v 1.1 2001/06/10 21:36:51 swh Exp $ */ + +#include "private.h" + +#include "gsm.h" +#include "proto.h" + +int gsm_option P3((r, opt, val), gsm r, int opt, int * val) +{ + int result = -1; + + switch (opt) { + case GSM_OPT_LTP_CUT: +#ifdef LTP_CUT + result = r->ltp_cut; + if (val) r->ltp_cut = *val; +#endif + break; + + case GSM_OPT_VERBOSE: +#ifndef NDEBUG + result = r->verbose; + if (val) r->verbose = *val; +#endif + break; + + case GSM_OPT_FAST: + +#if defined(FAST) && defined(USE_FLOAT_MUL) + result = r->fast; + if (val) r->fast = !!*val; +#endif + break; + + case GSM_OPT_FRAME_CHAIN: + +#ifdef WAV49 + result = r->frame_chain; + if (val) r->frame_chain = *val; +#endif + break; + + case GSM_OPT_FRAME_INDEX: + +#ifdef WAV49 + result = r->frame_index; + if (val) r->frame_index = *val; +#endif + break; + + case GSM_OPT_WAV49: + +#ifdef WAV49 + result = r->wav_fmt; + if (val) r->wav_fmt = !!*val; +#endif + break; + + default: + break; + } + return result; +} diff --git a/plugins/ladspa_effect/swh/gsm/long_term.c b/plugins/ladspa_effect/swh/gsm/long_term.c new file mode 100644 index 000000000..176b82779 --- /dev/null +++ b/plugins/ladspa_effect/swh/gsm/long_term.c @@ -0,0 +1,949 @@ +/* + * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische + * Universitaet Berlin. See the accompanying file "COPYRIGHT" for + * details. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE. + */ + +/* $Header: /home/cvs/giga/ladspa-swh/gsm/long_term.c,v 1.1 2001/06/10 21:36:51 swh Exp $ */ + +#include +#include + +#include "private.h" + +#include "gsm.h" +#include "proto.h" + +/* + * 4.2.11 .. 4.2.12 LONG TERM PREDICTOR (LTP) SECTION + */ + + +/* + * This module computes the LTP gain (bc) and the LTP lag (Nc) + * for the long term analysis filter. This is done by calculating a + * maximum of the cross-correlation function between the current + * sub-segment short term residual signal d[0..39] (output of + * the short term analysis filter; for simplification the index + * of this array begins at 0 and ends at 39 for each sub-segment of the + * RPE-LTP analysis) and the previous reconstructed short term + * residual signal dp[ -120 .. -1 ]. A dynamic scaling must be + * performed to avoid overflow. + */ + + /* The next procedure exists in six versions. First two integer + * version (if USE_FLOAT_MUL is not defined); then four floating + * point versions, twice with proper scaling (USE_FLOAT_MUL defined), + * once without (USE_FLOAT_MUL and FAST defined, and fast run-time + * option used). Every pair has first a Cut version (see the -C + * option to toast or the LTP_CUT option to gsm_option()), then the + * uncut one. (For a detailed explanation of why this is altogether + * a bad idea, see Henry Spencer and Geoff Collyer, ``#ifdef Considered + * Harmful''.) + */ + +#ifndef USE_FLOAT_MUL + +#ifdef LTP_CUT + +static void Cut_Calculation_of_the_LTP_parameters P5((st, d,dp,bc_out,Nc_out), + + struct gsm_state * st, + + register word * d, /* [0..39] IN */ + register word * dp, /* [-120..-1] IN */ + word * bc_out, /* OUT */ + word * Nc_out /* OUT */ +) +{ + register int k, lambda; + word Nc, bc; + word wt[40]; + + longword L_result; + longword L_max, L_power; + word R, S, dmax, scal, best_k; + word ltp_cut; + + register word temp, wt_k; + + /* Search of the optimum scaling of d[0..39]. + */ + dmax = 0; + for (k = 0; k <= 39; k++) { + temp = d[k]; + temp = GSM_ABS( temp ); + if (temp > dmax) { + dmax = temp; + best_k = k; + } + } + temp = 0; + if (dmax == 0) scal = 0; + else { + assert(dmax > 0); + temp = gsm_norm( (longword)dmax << 16 ); + } + if (temp > 6) scal = 0; + else scal = 6 - temp; + assert(scal >= 0); + + /* Search for the maximum cross-correlation and coding of the LTP lag + */ + L_max = 0; + Nc = 40; /* index for the maximum cross-correlation */ + wt_k = SASR(d[best_k], scal); + + for (lambda = 40; lambda <= 120; lambda++) { + L_result = (longword)wt_k * dp[best_k - lambda]; + if (L_result > L_max) { + Nc = lambda; + L_max = L_result; + } + } + *Nc_out = Nc; + L_max <<= 1; + + /* Rescaling of L_max + */ + assert(scal <= 100 && scal >= -100); + L_max = L_max >> (6 - scal); /* sub(6, scal) */ + + assert( Nc <= 120 && Nc >= 40); + + /* Compute the power of the reconstructed short term residual + * signal dp[..] + */ + L_power = 0; + for (k = 0; k <= 39; k++) { + + register longword L_temp; + + L_temp = SASR( dp[k - Nc], 3 ); + L_power += L_temp * L_temp; + } + L_power <<= 1; /* from L_MULT */ + + /* Normalization of L_max and L_power + */ + + if (L_max <= 0) { + *bc_out = 0; + return; + } + if (L_max >= L_power) { + *bc_out = 3; + return; + } + + temp = gsm_norm( L_power ); + + R = SASR( L_max << temp, 16 ); + S = SASR( L_power << temp, 16 ); + + /* Coding of the LTP gain + */ + + /* Table 4.3a must be used to obtain the level DLB[i] for the + * quantization of the LTP gain b to get the coded version bc. + */ + for (bc = 0; bc <= 2; bc++) if (R <= gsm_mult(S, gsm_DLB[bc])) break; + *bc_out = bc; +} + +#endif /* LTP_CUT */ + +static void Calculation_of_the_LTP_parameters P4((d,dp,bc_out,Nc_out), + register word * d, /* [0..39] IN */ + register word * dp, /* [-120..-1] IN */ + word * bc_out, /* OUT */ + word * Nc_out /* OUT */ +) +{ + register int k, lambda; + word Nc, bc; + word wt[40]; + + longword L_max, L_power; + word R, S, dmax, scal; + register word temp; + + /* Search of the optimum scaling of d[0..39]. + */ + dmax = 0; + + for (k = 0; k <= 39; k++) { + temp = d[k]; + temp = GSM_ABS( temp ); + if (temp > dmax) dmax = temp; + } + + temp = 0; + if (dmax == 0) scal = 0; + else { + assert(dmax > 0); + temp = gsm_norm( (longword)dmax << 16 ); + } + + if (temp > 6) scal = 0; + else scal = 6 - temp; + + assert(scal >= 0); + + /* Initialization of a working array wt + */ + + for (k = 0; k <= 39; k++) wt[k] = SASR( d[k], scal ); + + /* Search for the maximum cross-correlation and coding of the LTP lag + */ + L_max = 0; + Nc = 40; /* index for the maximum cross-correlation */ + + for (lambda = 40; lambda <= 120; lambda++) { + +# undef STEP +# define STEP(k) (longword)wt[k] * dp[k - lambda] + + register longword L_result; + + L_result = STEP(0) ; L_result += STEP(1) ; + L_result += STEP(2) ; L_result += STEP(3) ; + L_result += STEP(4) ; L_result += STEP(5) ; + L_result += STEP(6) ; L_result += STEP(7) ; + L_result += STEP(8) ; L_result += STEP(9) ; + L_result += STEP(10) ; L_result += STEP(11) ; + L_result += STEP(12) ; L_result += STEP(13) ; + L_result += STEP(14) ; L_result += STEP(15) ; + L_result += STEP(16) ; L_result += STEP(17) ; + L_result += STEP(18) ; L_result += STEP(19) ; + L_result += STEP(20) ; L_result += STEP(21) ; + L_result += STEP(22) ; L_result += STEP(23) ; + L_result += STEP(24) ; L_result += STEP(25) ; + L_result += STEP(26) ; L_result += STEP(27) ; + L_result += STEP(28) ; L_result += STEP(29) ; + L_result += STEP(30) ; L_result += STEP(31) ; + L_result += STEP(32) ; L_result += STEP(33) ; + L_result += STEP(34) ; L_result += STEP(35) ; + L_result += STEP(36) ; L_result += STEP(37) ; + L_result += STEP(38) ; L_result += STEP(39) ; + + if (L_result > L_max) { + + Nc = lambda; + L_max = L_result; + } + } + + *Nc_out = Nc; + + L_max <<= 1; + + /* Rescaling of L_max + */ + assert(scal <= 100 && scal >= -100); + L_max = L_max >> (6 - scal); /* sub(6, scal) */ + + assert( Nc <= 120 && Nc >= 40); + + /* Compute the power of the reconstructed short term residual + * signal dp[..] + */ + L_power = 0; + for (k = 0; k <= 39; k++) { + + register longword L_temp; + + L_temp = SASR( dp[k - Nc], 3 ); + L_power += L_temp * L_temp; + } + L_power <<= 1; /* from L_MULT */ + + /* Normalization of L_max and L_power + */ + + if (L_max <= 0) { + *bc_out = 0; + return; + } + if (L_max >= L_power) { + *bc_out = 3; + return; + } + + temp = gsm_norm( L_power ); + + R = SASR( L_max << temp, 16 ); + S = SASR( L_power << temp, 16 ); + + /* Coding of the LTP gain + */ + + /* Table 4.3a must be used to obtain the level DLB[i] for the + * quantization of the LTP gain b to get the coded version bc. + */ + for (bc = 0; bc <= 2; bc++) if (R <= gsm_mult(S, gsm_DLB[bc])) break; + *bc_out = bc; +} + +#else /* USE_FLOAT_MUL */ + +#ifdef LTP_CUT + +static void Cut_Calculation_of_the_LTP_parameters P5((st, d,dp,bc_out,Nc_out), + struct gsm_state * st, /* IN */ + register word * d, /* [0..39] IN */ + register word * dp, /* [-120..-1] IN */ + word * bc_out, /* OUT */ + word * Nc_out /* OUT */ +) +{ + register int k, lambda; + word Nc, bc; + word ltp_cut; + + float wt_float[40]; + float dp_float_base[120], * dp_float = dp_float_base + 120; + + longword L_max, L_power; + word R, S, dmax, scal; + register word temp; + + /* Search of the optimum scaling of d[0..39]. + */ + dmax = 0; + + for (k = 0; k <= 39; k++) { + temp = d[k]; + temp = GSM_ABS( temp ); + if (temp > dmax) dmax = temp; + } + + temp = 0; + if (dmax == 0) scal = 0; + else { + assert(dmax > 0); + temp = gsm_norm( (longword)dmax << 16 ); + } + + if (temp > 6) scal = 0; + else scal = 6 - temp; + + assert(scal >= 0); + ltp_cut = (longword)SASR(dmax, scal) * st->ltp_cut / 100; + + + /* Initialization of a working array wt + */ + + for (k = 0; k < 40; k++) { + register word w = SASR( d[k], scal ); + if (w < 0 ? w > -ltp_cut : w < ltp_cut) { + wt_float[k] = 0.0; + } + else { + wt_float[k] = w; + } + } + for (k = -120; k < 0; k++) dp_float[k] = dp[k]; + + /* Search for the maximum cross-correlation and coding of the LTP lag + */ + L_max = 0; + Nc = 40; /* index for the maximum cross-correlation */ + + for (lambda = 40; lambda <= 120; lambda += 9) { + + /* Calculate L_result for l = lambda .. lambda + 9. + */ + register float *lp = dp_float - lambda; + + register float W; + register float a = lp[-8], b = lp[-7], c = lp[-6], + d = lp[-5], e = lp[-4], f = lp[-3], + g = lp[-2], h = lp[-1]; + register float E; + register float S0 = 0, S1 = 0, S2 = 0, S3 = 0, S4 = 0, + S5 = 0, S6 = 0, S7 = 0, S8 = 0; + +# undef STEP +# define STEP(K, a, b, c, d, e, f, g, h) \ + if ((W = wt_float[K]) != 0.0) { \ + E = W * a; S8 += E; \ + E = W * b; S7 += E; \ + E = W * c; S6 += E; \ + E = W * d; S5 += E; \ + E = W * e; S4 += E; \ + E = W * f; S3 += E; \ + E = W * g; S2 += E; \ + E = W * h; S1 += E; \ + a = lp[K]; \ + E = W * a; S0 += E; } else (a = lp[K]) + +# define STEP_A(K) STEP(K, a, b, c, d, e, f, g, h) +# define STEP_B(K) STEP(K, b, c, d, e, f, g, h, a) +# define STEP_C(K) STEP(K, c, d, e, f, g, h, a, b) +# define STEP_D(K) STEP(K, d, e, f, g, h, a, b, c) +# define STEP_E(K) STEP(K, e, f, g, h, a, b, c, d) +# define STEP_F(K) STEP(K, f, g, h, a, b, c, d, e) +# define STEP_G(K) STEP(K, g, h, a, b, c, d, e, f) +# define STEP_H(K) STEP(K, h, a, b, c, d, e, f, g) + + STEP_A( 0); STEP_B( 1); STEP_C( 2); STEP_D( 3); + STEP_E( 4); STEP_F( 5); STEP_G( 6); STEP_H( 7); + + STEP_A( 8); STEP_B( 9); STEP_C(10); STEP_D(11); + STEP_E(12); STEP_F(13); STEP_G(14); STEP_H(15); + + STEP_A(16); STEP_B(17); STEP_C(18); STEP_D(19); + STEP_E(20); STEP_F(21); STEP_G(22); STEP_H(23); + + STEP_A(24); STEP_B(25); STEP_C(26); STEP_D(27); + STEP_E(28); STEP_F(29); STEP_G(30); STEP_H(31); + + STEP_A(32); STEP_B(33); STEP_C(34); STEP_D(35); + STEP_E(36); STEP_F(37); STEP_G(38); STEP_H(39); + + if (S0 > L_max) { L_max = S0; Nc = lambda; } + if (S1 > L_max) { L_max = S1; Nc = lambda + 1; } + if (S2 > L_max) { L_max = S2; Nc = lambda + 2; } + if (S3 > L_max) { L_max = S3; Nc = lambda + 3; } + if (S4 > L_max) { L_max = S4; Nc = lambda + 4; } + if (S5 > L_max) { L_max = S5; Nc = lambda + 5; } + if (S6 > L_max) { L_max = S6; Nc = lambda + 6; } + if (S7 > L_max) { L_max = S7; Nc = lambda + 7; } + if (S8 > L_max) { L_max = S8; Nc = lambda + 8; } + + } + *Nc_out = Nc; + + L_max <<= 1; + + /* Rescaling of L_max + */ + assert(scal <= 100 && scal >= -100); + L_max = L_max >> (6 - scal); /* sub(6, scal) */ + + assert( Nc <= 120 && Nc >= 40); + + /* Compute the power of the reconstructed short term residual + * signal dp[..] + */ + L_power = 0; + for (k = 0; k <= 39; k++) { + + register longword L_temp; + + L_temp = SASR( dp[k - Nc], 3 ); + L_power += L_temp * L_temp; + } + L_power <<= 1; /* from L_MULT */ + + /* Normalization of L_max and L_power + */ + + if (L_max <= 0) { + *bc_out = 0; + return; + } + if (L_max >= L_power) { + *bc_out = 3; + return; + } + + temp = gsm_norm( L_power ); + + R = SASR( L_max << temp, 16 ); + S = SASR( L_power << temp, 16 ); + + /* Coding of the LTP gain + */ + + /* Table 4.3a must be used to obtain the level DLB[i] for the + * quantization of the LTP gain b to get the coded version bc. + */ + for (bc = 0; bc <= 2; bc++) if (R <= gsm_mult(S, gsm_DLB[bc])) break; + *bc_out = bc; +} + +#endif /* LTP_CUT */ + +static void Calculation_of_the_LTP_parameters P4((d,dp,bc_out,Nc_out), + register word * d, /* [0..39] IN */ + register word * dp, /* [-120..-1] IN */ + word * bc_out, /* OUT */ + word * Nc_out /* OUT */ +) +{ + register int k, lambda; + word Nc, bc; + + float wt_float[40]; + float dp_float_base[120], * dp_float = dp_float_base + 120; + + longword L_max, L_power; + word R, S, dmax, scal; + register word temp; + + /* Search of the optimum scaling of d[0..39]. + */ + dmax = 0; + + for (k = 0; k <= 39; k++) { + temp = d[k]; + temp = GSM_ABS( temp ); + if (temp > dmax) dmax = temp; + } + + temp = 0; + if (dmax == 0) scal = 0; + else { + assert(dmax > 0); + temp = gsm_norm( (longword)dmax << 16 ); + } + + if (temp > 6) scal = 0; + else scal = 6 - temp; + + assert(scal >= 0); + + /* Initialization of a working array wt + */ + + for (k = 0; k < 40; k++) wt_float[k] = SASR( d[k], scal ); + for (k = -120; k < 0; k++) dp_float[k] = dp[k]; + + /* Search for the maximum cross-correlation and coding of the LTP lag + */ + L_max = 0; + Nc = 40; /* index for the maximum cross-correlation */ + + for (lambda = 40; lambda <= 120; lambda += 9) { + + /* Calculate L_result for l = lambda .. lambda + 9. + */ + register float *lp = dp_float - lambda; + + register float W; + register float a = lp[-8], b = lp[-7], c = lp[-6], + d = lp[-5], e = lp[-4], f = lp[-3], + g = lp[-2], h = lp[-1]; + register float E; + register float S0 = 0, S1 = 0, S2 = 0, S3 = 0, S4 = 0, + S5 = 0, S6 = 0, S7 = 0, S8 = 0; + +# undef STEP +# define STEP(K, a, b, c, d, e, f, g, h) \ + W = wt_float[K]; \ + E = W * a; S8 += E; \ + E = W * b; S7 += E; \ + E = W * c; S6 += E; \ + E = W * d; S5 += E; \ + E = W * e; S4 += E; \ + E = W * f; S3 += E; \ + E = W * g; S2 += E; \ + E = W * h; S1 += E; \ + a = lp[K]; \ + E = W * a; S0 += E + +# define STEP_A(K) STEP(K, a, b, c, d, e, f, g, h) +# define STEP_B(K) STEP(K, b, c, d, e, f, g, h, a) +# define STEP_C(K) STEP(K, c, d, e, f, g, h, a, b) +# define STEP_D(K) STEP(K, d, e, f, g, h, a, b, c) +# define STEP_E(K) STEP(K, e, f, g, h, a, b, c, d) +# define STEP_F(K) STEP(K, f, g, h, a, b, c, d, e) +# define STEP_G(K) STEP(K, g, h, a, b, c, d, e, f) +# define STEP_H(K) STEP(K, h, a, b, c, d, e, f, g) + + STEP_A( 0); STEP_B( 1); STEP_C( 2); STEP_D( 3); + STEP_E( 4); STEP_F( 5); STEP_G( 6); STEP_H( 7); + + STEP_A( 8); STEP_B( 9); STEP_C(10); STEP_D(11); + STEP_E(12); STEP_F(13); STEP_G(14); STEP_H(15); + + STEP_A(16); STEP_B(17); STEP_C(18); STEP_D(19); + STEP_E(20); STEP_F(21); STEP_G(22); STEP_H(23); + + STEP_A(24); STEP_B(25); STEP_C(26); STEP_D(27); + STEP_E(28); STEP_F(29); STEP_G(30); STEP_H(31); + + STEP_A(32); STEP_B(33); STEP_C(34); STEP_D(35); + STEP_E(36); STEP_F(37); STEP_G(38); STEP_H(39); + + if (S0 > L_max) { L_max = S0; Nc = lambda; } + if (S1 > L_max) { L_max = S1; Nc = lambda + 1; } + if (S2 > L_max) { L_max = S2; Nc = lambda + 2; } + if (S3 > L_max) { L_max = S3; Nc = lambda + 3; } + if (S4 > L_max) { L_max = S4; Nc = lambda + 4; } + if (S5 > L_max) { L_max = S5; Nc = lambda + 5; } + if (S6 > L_max) { L_max = S6; Nc = lambda + 6; } + if (S7 > L_max) { L_max = S7; Nc = lambda + 7; } + if (S8 > L_max) { L_max = S8; Nc = lambda + 8; } + } + *Nc_out = Nc; + + L_max <<= 1; + + /* Rescaling of L_max + */ + assert(scal <= 100 && scal >= -100); + L_max = L_max >> (6 - scal); /* sub(6, scal) */ + + assert( Nc <= 120 && Nc >= 40); + + /* Compute the power of the reconstructed short term residual + * signal dp[..] + */ + L_power = 0; + for (k = 0; k <= 39; k++) { + + register longword L_temp; + + L_temp = SASR( dp[k - Nc], 3 ); + L_power += L_temp * L_temp; + } + L_power <<= 1; /* from L_MULT */ + + /* Normalization of L_max and L_power + */ + + if (L_max <= 0) { + *bc_out = 0; + return; + } + if (L_max >= L_power) { + *bc_out = 3; + return; + } + + temp = gsm_norm( L_power ); + + R = SASR( L_max << temp, 16 ); + S = SASR( L_power << temp, 16 ); + + /* Coding of the LTP gain + */ + + /* Table 4.3a must be used to obtain the level DLB[i] for the + * quantization of the LTP gain b to get the coded version bc. + */ + for (bc = 0; bc <= 2; bc++) if (R <= gsm_mult(S, gsm_DLB[bc])) break; + *bc_out = bc; +} + +#ifdef FAST +#ifdef LTP_CUT + +static void Cut_Fast_Calculation_of_the_LTP_parameters P5((st, + d,dp,bc_out,Nc_out), + struct gsm_state * st, /* IN */ + register word * d, /* [0..39] IN */ + register word * dp, /* [-120..-1] IN */ + word * bc_out, /* OUT */ + word * Nc_out /* OUT */ +) +{ + register int k, lambda; + register float wt_float; + word Nc, bc; + word wt_max, best_k, ltp_cut; + + float dp_float_base[120], * dp_float = dp_float_base + 120; + + register float L_result, L_max, L_power; + + wt_max = 0; + + for (k = 0; k < 40; ++k) { + if ( d[k] > wt_max) wt_max = d[best_k = k]; + else if (-d[k] > wt_max) wt_max = -d[best_k = k]; + } + + assert(wt_max >= 0); + wt_float = (float)wt_max; + + for (k = -120; k < 0; ++k) dp_float[k] = (float)dp[k]; + + /* Search for the maximum cross-correlation and coding of the LTP lag + */ + L_max = 0; + Nc = 40; /* index for the maximum cross-correlation */ + + for (lambda = 40; lambda <= 120; lambda++) { + L_result = wt_float * dp_float[best_k - lambda]; + if (L_result > L_max) { + Nc = lambda; + L_max = L_result; + } + } + + *Nc_out = Nc; + if (L_max <= 0.) { + *bc_out = 0; + return; + } + + /* Compute the power of the reconstructed short term residual + * signal dp[..] + */ + dp_float -= Nc; + L_power = 0; + for (k = 0; k < 40; ++k) { + register float f = dp_float[k]; + L_power += f * f; + } + + if (L_max >= L_power) { + *bc_out = 3; + return; + } + + /* Coding of the LTP gain + * Table 4.3a must be used to obtain the level DLB[i] for the + * quantization of the LTP gain b to get the coded version bc. + */ + lambda = L_max / L_power * 32768.; + for (bc = 0; bc <= 2; ++bc) if (lambda <= gsm_DLB[bc]) break; + *bc_out = bc; +} + +#endif /* LTP_CUT */ + +static void Fast_Calculation_of_the_LTP_parameters P4((d,dp,bc_out,Nc_out), + register word * d, /* [0..39] IN */ + register word * dp, /* [-120..-1] IN */ + word * bc_out, /* OUT */ + word * Nc_out /* OUT */ +) +{ + register int k, lambda; + word Nc, bc; + + float wt_float[40]; + float dp_float_base[120], * dp_float = dp_float_base + 120; + + register float L_max, L_power; + + for (k = 0; k < 40; ++k) wt_float[k] = (float)d[k]; + for (k = -120; k < 0; ++k) dp_float[k] = (float)dp[k]; + + /* Search for the maximum cross-correlation and coding of the LTP lag + */ + L_max = 0; + Nc = 40; /* index for the maximum cross-correlation */ + + for (lambda = 40; lambda <= 120; lambda += 9) { + + /* Calculate L_result for l = lambda .. lambda + 9. + */ + register float *lp = dp_float - lambda; + + register float W; + register float a = lp[-8], b = lp[-7], c = lp[-6], + d = lp[-5], e = lp[-4], f = lp[-3], + g = lp[-2], h = lp[-1]; + register float E; + register float S0 = 0, S1 = 0, S2 = 0, S3 = 0, S4 = 0, + S5 = 0, S6 = 0, S7 = 0, S8 = 0; + +# undef STEP +# define STEP(K, a, b, c, d, e, f, g, h) \ + W = wt_float[K]; \ + E = W * a; S8 += E; \ + E = W * b; S7 += E; \ + E = W * c; S6 += E; \ + E = W * d; S5 += E; \ + E = W * e; S4 += E; \ + E = W * f; S3 += E; \ + E = W * g; S2 += E; \ + E = W * h; S1 += E; \ + a = lp[K]; \ + E = W * a; S0 += E + +# define STEP_A(K) STEP(K, a, b, c, d, e, f, g, h) +# define STEP_B(K) STEP(K, b, c, d, e, f, g, h, a) +# define STEP_C(K) STEP(K, c, d, e, f, g, h, a, b) +# define STEP_D(K) STEP(K, d, e, f, g, h, a, b, c) +# define STEP_E(K) STEP(K, e, f, g, h, a, b, c, d) +# define STEP_F(K) STEP(K, f, g, h, a, b, c, d, e) +# define STEP_G(K) STEP(K, g, h, a, b, c, d, e, f) +# define STEP_H(K) STEP(K, h, a, b, c, d, e, f, g) + + STEP_A( 0); STEP_B( 1); STEP_C( 2); STEP_D( 3); + STEP_E( 4); STEP_F( 5); STEP_G( 6); STEP_H( 7); + + STEP_A( 8); STEP_B( 9); STEP_C(10); STEP_D(11); + STEP_E(12); STEP_F(13); STEP_G(14); STEP_H(15); + + STEP_A(16); STEP_B(17); STEP_C(18); STEP_D(19); + STEP_E(20); STEP_F(21); STEP_G(22); STEP_H(23); + + STEP_A(24); STEP_B(25); STEP_C(26); STEP_D(27); + STEP_E(28); STEP_F(29); STEP_G(30); STEP_H(31); + + STEP_A(32); STEP_B(33); STEP_C(34); STEP_D(35); + STEP_E(36); STEP_F(37); STEP_G(38); STEP_H(39); + + if (S0 > L_max) { L_max = S0; Nc = lambda; } + if (S1 > L_max) { L_max = S1; Nc = lambda + 1; } + if (S2 > L_max) { L_max = S2; Nc = lambda + 2; } + if (S3 > L_max) { L_max = S3; Nc = lambda + 3; } + if (S4 > L_max) { L_max = S4; Nc = lambda + 4; } + if (S5 > L_max) { L_max = S5; Nc = lambda + 5; } + if (S6 > L_max) { L_max = S6; Nc = lambda + 6; } + if (S7 > L_max) { L_max = S7; Nc = lambda + 7; } + if (S8 > L_max) { L_max = S8; Nc = lambda + 8; } + } + *Nc_out = Nc; + + if (L_max <= 0.) { + *bc_out = 0; + return; + } + + /* Compute the power of the reconstructed short term residual + * signal dp[..] + */ + dp_float -= Nc; + L_power = 0; + for (k = 0; k < 40; ++k) { + register float f = dp_float[k]; + L_power += f * f; + } + + if (L_max >= L_power) { + *bc_out = 3; + return; + } + + /* Coding of the LTP gain + * Table 4.3a must be used to obtain the level DLB[i] for the + * quantization of the LTP gain b to get the coded version bc. + */ + lambda = L_max / L_power * 32768.; + for (bc = 0; bc <= 2; ++bc) if (lambda <= gsm_DLB[bc]) break; + *bc_out = bc; +} + +#endif /* FAST */ +#endif /* USE_FLOAT_MUL */ + + +/* 4.2.12 */ + +static void Long_term_analysis_filtering P6((bc,Nc,dp,d,dpp,e), + word bc, /* IN */ + word Nc, /* IN */ + register word * dp, /* previous d [-120..-1] IN */ + register word * d, /* d [0..39] IN */ + register word * dpp, /* estimate [0..39] OUT */ + register word * e /* long term res. signal [0..39] OUT */ +) +/* + * In this part, we have to decode the bc parameter to compute + * the samples of the estimate dpp[0..39]. The decoding of bc needs the + * use of table 4.3b. The long term residual signal e[0..39] + * is then calculated to be fed to the RPE encoding section. + */ +{ + register int k; + register longword ltmp; + +# undef STEP +# define STEP(BP) \ + for (k = 0; k <= 39; k++) { \ + dpp[k] = GSM_MULT_R( BP, dp[k - Nc]); \ + e[k] = GSM_SUB( d[k], dpp[k] ); \ + } + + switch (bc) { + case 0: STEP( 3277 ); break; + case 1: STEP( 11469 ); break; + case 2: STEP( 21299 ); break; + case 3: STEP( 32767 ); break; + } +} + +void Gsm_Long_Term_Predictor P7((S,d,dp,e,dpp,Nc,bc), /* 4x for 160 samples */ + + struct gsm_state * S, + + word * d, /* [0..39] residual signal IN */ + word * dp, /* [-120..-1] d' IN */ + + word * e, /* [0..39] OUT */ + word * dpp, /* [0..39] OUT */ + word * Nc, /* correlation lag OUT */ + word * bc /* gain factor OUT */ +) +{ + assert( d ); assert( dp ); assert( e ); + assert( dpp); assert( Nc ); assert( bc ); + +#if defined(FAST) && defined(USE_FLOAT_MUL) + if (S->fast) +#if defined (LTP_CUT) + if (S->ltp_cut) + Cut_Fast_Calculation_of_the_LTP_parameters(S, + d, dp, bc, Nc); + else +#endif /* LTP_CUT */ + Fast_Calculation_of_the_LTP_parameters(d, dp, bc, Nc ); + else +#endif /* FAST & USE_FLOAT_MUL */ +#ifdef LTP_CUT + if (S->ltp_cut) + Cut_Calculation_of_the_LTP_parameters(S, d, dp, bc, Nc); + else +#endif + Calculation_of_the_LTP_parameters(d, dp, bc, Nc); + + Long_term_analysis_filtering( *bc, *Nc, dp, d, dpp, e ); +} + +/* 4.3.2 */ +void Gsm_Long_Term_Synthesis_Filtering P5((S,Ncr,bcr,erp,drp), + struct gsm_state * S, + + word Ncr, + word bcr, + register word * erp, /* [0..39] IN */ + register word * drp /* [-120..-1] IN, [-120..40] OUT */ +) +/* + * This procedure uses the bcr and Ncr parameter to realize the + * long term synthesis filtering. The decoding of bcr needs + * table 4.3b. + */ +{ + register longword ltmp; /* for ADD */ + register int k; + word brp, drpp, Nr; + + /* Check the limits of Nr. + */ + Nr = Ncr < 40 || Ncr > 120 ? S->nrp : Ncr; + S->nrp = Nr; + assert(Nr >= 40 && Nr <= 120); + + /* Decoding of the LTP gain bcr + */ + brp = gsm_QLB[ bcr ]; + + /* Computation of the reconstructed short term residual + * signal drp[0..39] + */ + assert(brp != MIN_WORD); + + for (k = 0; k <= 39; k++) { + drpp = GSM_MULT_R( brp, drp[ k - Nr ] ); + drp[k] = GSM_ADD( erp[k], drpp ); + } + + /* + * Update of the reconstructed short term residual signal + * drp[ -1..-120 ] + */ + + for (k = 0; k <= 119; k++) drp[ -120 + k ] = drp[ -80 + k ]; +} diff --git a/plugins/ladspa_effect/swh/gsm/lpc.c b/plugins/ladspa_effect/swh/gsm/lpc.c new file mode 100644 index 000000000..7c030cb5a --- /dev/null +++ b/plugins/ladspa_effect/swh/gsm/lpc.c @@ -0,0 +1,341 @@ +/* + * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische + * Universitaet Berlin. See the accompanying file "COPYRIGHT" for + * details. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE. + */ + +/* $Header: /home/cvs/giga/ladspa-swh/gsm/lpc.c,v 1.1 2001/06/10 21:36:51 swh Exp $ */ + +#include +#include + +#include "private.h" + +#include "gsm.h" +#include "proto.h" + +#undef P + +/* + * 4.2.4 .. 4.2.7 LPC ANALYSIS SECTION + */ + +/* 4.2.4 */ + + +static void Autocorrelation P2((s, L_ACF), + word * s, /* [0..159] IN/OUT */ + longword * L_ACF) /* [0..8] OUT */ +/* + * The goal is to compute the array L_ACF[k]. The signal s[i] must + * be scaled in order to avoid an overflow situation. + */ +{ + register int k, i; + + word temp, smax, scalauto; + +#ifdef USE_FLOAT_MUL + float float_s[160]; +#endif + + /* Dynamic scaling of the array s[0..159] + */ + + /* Search for the maximum. + */ + smax = 0; + for (k = 0; k <= 159; k++) { + temp = GSM_ABS( s[k] ); + if (temp > smax) smax = temp; + } + + /* Computation of the scaling factor. + */ + if (smax == 0) scalauto = 0; + else { + assert(smax > 0); + scalauto = 4 - gsm_norm( (longword)smax << 16 );/* sub(4,..) */ + } + + /* Scaling of the array s[0...159] + */ + + if (scalauto > 0) { + +# ifdef USE_FLOAT_MUL +# define SCALE(n) \ + case n: for (k = 0; k <= 159; k++) \ + float_s[k] = (float) \ + (s[k] = GSM_MULT_R(s[k], 16384 >> (n-1)));\ + break; +# else +# define SCALE(n) \ + case n: for (k = 0; k <= 159; k++) \ + s[k] = GSM_MULT_R( s[k], 16384 >> (n-1) );\ + break; +# endif /* USE_FLOAT_MUL */ + + switch (scalauto) { + SCALE(1) + SCALE(2) + SCALE(3) + SCALE(4) + } +# undef SCALE + } +# ifdef USE_FLOAT_MUL + else for (k = 0; k <= 159; k++) float_s[k] = (float) s[k]; +# endif + + /* Compute the L_ACF[..]. + */ + { +# ifdef USE_FLOAT_MUL + register float * sp = float_s; + register float sl = *sp; + +# define STEP(k) L_ACF[k] += (longword)(sl * sp[ -(k) ]); +# else + word * sp = s; + word sl = *sp; + +# define STEP(k) L_ACF[k] += ((longword)sl * sp[ -(k) ]); +# endif + +# define NEXTI sl = *++sp + + + for (k = 9; k--; L_ACF[k] = 0) ; + + STEP (0); + NEXTI; + STEP(0); STEP(1); + NEXTI; + STEP(0); STEP(1); STEP(2); + NEXTI; + STEP(0); STEP(1); STEP(2); STEP(3); + NEXTI; + STEP(0); STEP(1); STEP(2); STEP(3); STEP(4); + NEXTI; + STEP(0); STEP(1); STEP(2); STEP(3); STEP(4); STEP(5); + NEXTI; + STEP(0); STEP(1); STEP(2); STEP(3); STEP(4); STEP(5); STEP(6); + NEXTI; + STEP(0); STEP(1); STEP(2); STEP(3); STEP(4); STEP(5); STEP(6); STEP(7); + + for (i = 8; i <= 159; i++) { + + NEXTI; + + STEP(0); + STEP(1); STEP(2); STEP(3); STEP(4); + STEP(5); STEP(6); STEP(7); STEP(8); + } + + for (k = 9; k--; L_ACF[k] <<= 1) ; + + } + /* Rescaling of the array s[0..159] + */ + if (scalauto > 0) { + assert(scalauto <= 4); + for (k = 160; k--; *s++ <<= scalauto) ; + } +} + +#if defined(USE_FLOAT_MUL) && defined(FAST) + +static void Fast_Autocorrelation P2((s, L_ACF), + word * s, /* [0..159] IN/OUT */ + longword * L_ACF) /* [0..8] OUT */ +{ + register int k, i; + float f_L_ACF[9]; + float scale; + + float s_f[160]; + register float *sf = s_f; + + for (i = 0; i < 160; ++i) sf[i] = s[i]; + for (k = 0; k <= 8; k++) { + register float L_temp2 = 0; + register float *sfl = sf - k; + for (i = k; i < 160; ++i) L_temp2 += sf[i] * sfl[i]; + f_L_ACF[k] = L_temp2; + } + scale = MAX_LONGWORD / f_L_ACF[0]; + + for (k = 0; k <= 8; k++) { + L_ACF[k] = f_L_ACF[k] * scale; + } +} +#endif /* defined (USE_FLOAT_MUL) && defined (FAST) */ + +/* 4.2.5 */ + +static void Reflection_coefficients P2( (L_ACF, r), + longword * L_ACF, /* 0...8 IN */ + register word * r /* 0...7 OUT */ +) +{ + register int i, m, n; + register word temp; + register longword ltmp; + word ACF[9]; /* 0..8 */ + word P[ 9]; /* 0..8 */ + word K[ 9]; /* 2..8 */ + + /* Schur recursion with 16 bits arithmetic. + */ + + if (L_ACF[0] == 0) { + for (i = 8; i--; *r++ = 0) ; + return; + } + + assert( L_ACF[0] != 0 ); + temp = gsm_norm( L_ACF[0] ); + + assert(temp >= 0 && temp < 32); + + /* ? overflow ? */ + for (i = 0; i <= 8; i++) ACF[i] = SASR( L_ACF[i] << temp, 16 ); + + /* Initialize array P[..] and K[..] for the recursion. + */ + + for (i = 1; i <= 7; i++) K[ i ] = ACF[ i ]; + for (i = 0; i <= 8; i++) P[ i ] = ACF[ i ]; + + /* Compute reflection coefficients + */ + for (n = 1; n <= 8; n++, r++) { + + temp = P[1]; + temp = GSM_ABS(temp); + if (P[0] < temp) { + for (i = n; i <= 8; i++) *r++ = 0; + return; + } + + *r = gsm_div( temp, P[0] ); + + assert(*r >= 0); + if (P[1] > 0) *r = -*r; /* r[n] = sub(0, r[n]) */ + assert (*r != MIN_WORD); + if (n == 8) return; + + /* Schur recursion + */ + temp = GSM_MULT_R( P[1], *r ); + P[0] = GSM_ADD( P[0], temp ); + + for (m = 1; m <= 8 - n; m++) { + temp = GSM_MULT_R( K[ m ], *r ); + P[m] = GSM_ADD( P[ m+1 ], temp ); + + temp = GSM_MULT_R( P[ m+1 ], *r ); + K[m] = GSM_ADD( K[ m ], temp ); + } + } +} + +/* 4.2.6 */ + +static void Transformation_to_Log_Area_Ratios P1((r), + register word * r /* 0..7 IN/OUT */ +) +/* + * The following scaling for r[..] and LAR[..] has been used: + * + * r[..] = integer( real_r[..]*32768. ); -1 <= real_r < 1. + * LAR[..] = integer( real_LAR[..] * 16384 ); + * with -1.625 <= real_LAR <= 1.625 + */ +{ + register word temp; + register int i; + + + /* Computation of the LAR[0..7] from the r[0..7] + */ + for (i = 1; i <= 8; i++, r++) { + + temp = *r; + temp = GSM_ABS(temp); + assert(temp >= 0); + + if (temp < 22118) { + temp >>= 1; + } else if (temp < 31130) { + assert( temp >= 11059 ); + temp -= 11059; + } else { + assert( temp >= 26112 ); + temp -= 26112; + temp <<= 2; + } + + *r = *r < 0 ? -temp : temp; + assert( *r != MIN_WORD ); + } +} + +/* 4.2.7 */ + +static void Quantization_and_coding P1((LAR), + register word * LAR /* [0..7] IN/OUT */ +) +{ + register word temp; + longword ltmp; + + + /* This procedure needs four tables; the following equations + * give the optimum scaling for the constants: + * + * A[0..7] = integer( real_A[0..7] * 1024 ) + * B[0..7] = integer( real_B[0..7] * 512 ) + * MAC[0..7] = maximum of the LARc[0..7] + * MIC[0..7] = minimum of the LARc[0..7] + */ + +# undef STEP +# define STEP( A, B, MAC, MIC ) \ + temp = GSM_MULT( A, *LAR ); \ + temp = GSM_ADD( temp, B ); \ + temp = GSM_ADD( temp, 256 ); \ + temp = SASR( temp, 9 ); \ + *LAR = temp>MAC ? MAC - MIC : (tempfast) Fast_Autocorrelation (s, L_ACF ); + else +#endif + Autocorrelation (s, L_ACF ); + Reflection_coefficients (L_ACF, LARc ); + Transformation_to_Log_Area_Ratios (LARc); + Quantization_and_coding (LARc); +} diff --git a/plugins/ladspa_effect/swh/gsm/preprocess.c b/plugins/ladspa_effect/swh/gsm/preprocess.c new file mode 100644 index 000000000..a3afe0cf1 --- /dev/null +++ b/plugins/ladspa_effect/swh/gsm/preprocess.c @@ -0,0 +1,113 @@ +/* + * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische + * Universitaet Berlin. See the accompanying file "COPYRIGHT" for + * details. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE. + */ + +/* $Header: /home/cvs/giga/ladspa-swh/gsm/preprocess.c,v 1.1 2001/06/10 21:36:51 swh Exp $ */ + +#include +#include + +#include "private.h" + +#include "gsm.h" +#include "proto.h" + +/* 4.2.0 .. 4.2.3 PREPROCESSING SECTION + * + * After A-law to linear conversion (or directly from the + * Ato D converter) the following scaling is assumed for + * input to the RPE-LTP algorithm: + * + * in: 0.1.....................12 + * S.v.v.v.v.v.v.v.v.v.v.v.v.*.*.* + * + * Where S is the sign bit, v a valid bit, and * a "don't care" bit. + * The original signal is called sop[..] + * + * out: 0.1................... 12 + * S.S.v.v.v.v.v.v.v.v.v.v.v.v.0.0 + */ + + +void Gsm_Preprocess P3((S, s, so), + struct gsm_state * S, + word * s, + word * so ) /* [0..159] IN/OUT */ +{ + + word z1 = S->z1; + longword L_z2 = S->L_z2; + word mp = S->mp; + + word s1; + longword L_s2; + + longword L_temp; + + word msp, lsp; + word SO; + + longword ltmp; /* for ADD */ + ulongword utmp; /* for L_ADD */ + + register int k = 160; + + while (k--) { + + /* 4.2.1 Downscaling of the input signal + */ + SO = SASR( *s, 3 ) << 2; + s++; + + assert (SO >= -0x4000); /* downscaled by */ + assert (SO <= 0x3FFC); /* previous routine. */ + + + /* 4.2.2 Offset compensation + * + * This part implements a high-pass filter and requires extended + * arithmetic precision for the recursive part of this filter. + * The input of this procedure is the array so[0...159] and the + * output the array sof[ 0...159 ]. + */ + /* Compute the non-recursive part + */ + + s1 = SO - z1; /* s1 = gsm_sub( *so, z1 ); */ + z1 = SO; + + assert(s1 != MIN_WORD); + + /* Compute the recursive part + */ + L_s2 = s1; + L_s2 <<= 15; + + /* Execution of a 31 bv 16 bits multiplication + */ + + msp = SASR( L_z2, 15 ); + lsp = L_z2-((longword)msp<<15); /* gsm_L_sub(L_z2,(msp<<15)); */ + + L_s2 += GSM_MULT_R( lsp, 32735 ); + L_temp = (longword)msp * 32735; /* GSM_L_MULT(msp,32735) >> 1;*/ + L_z2 = GSM_L_ADD( L_temp, L_s2 ); + + /* Compute sof[k] with rounding + */ + L_temp = GSM_L_ADD( L_z2, 16384 ); + + /* 4.2.3 Preemphasis + */ + + msp = GSM_MULT_R( mp, -28180 ); + mp = SASR( L_temp, 15 ); + *so++ = GSM_ADD( mp, msp ); + } + + S->z1 = z1; + S->L_z2 = L_z2; + S->mp = mp; +} diff --git a/plugins/ladspa_effect/swh/gsm/private.h b/plugins/ladspa_effect/swh/gsm/private.h new file mode 100644 index 000000000..60be5a317 --- /dev/null +++ b/plugins/ladspa_effect/swh/gsm/private.h @@ -0,0 +1,278 @@ +/* + * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische + * Universitaet Berlin. See the accompanying file "COPYRIGHT" for + * details. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE. + */ + +/*$Header: /home/cvs/giga/ladspa-swh/gsm/private.h,v 1.1 2001/06/10 21:36:51 swh Exp $*/ + +#ifndef PRIVATE_H +#define PRIVATE_H + +/* Added by Erik de Castro Lopo */ +#define NeedFunctionPrototypes 1 +#define SASR +#define USE_FLOAT_MUL +#define FAST +#define WAV49 +/* Added by Erik de Castro Lopo */ + + + +typedef short word; /* 16 bit signed int */ +typedef int longword; /* 32 bit signed int */ + +typedef unsigned short uword; /* unsigned word */ +typedef unsigned int ulongword; /* unsigned longword */ + +struct gsm_state { + + word dp0[ 280 ]; + + word z1; /* preprocessing.c, Offset_com. */ + longword L_z2; /* Offset_com. */ + int mp; /* Preemphasis */ + + word u[8]; /* short_term_aly_filter.c */ + word LARpp[2][8]; /* */ + word j; /* */ + + word ltp_cut; /* long_term.c, LTP crosscorr. */ + word nrp; /* 40 */ /* long_term.c, synthesis */ + word v[9]; /* short_term.c, synthesis */ + word msr; /* decoder.c, Postprocessing */ + + char verbose; /* only used if !NDEBUG */ + char fast; /* only used if FAST */ + + char wav_fmt; /* only used if WAV49 defined */ + unsigned char frame_index; /* odd/even chaining */ + unsigned char frame_chain; /* half-byte to carry forward */ +}; + + +#define MIN_WORD (-32767 - 1) +#define MAX_WORD 32767 + +#define MIN_LONGWORD (-2147483647 - 1) +#define MAX_LONGWORD 2147483647 + +#ifdef SASR /* flag: >> is a signed arithmetic shift right */ +#undef SASR +#define SASR(x, by) ((x) >> (by)) +#else +#define SASR(x, by) ((x) >= 0 ? (x) >> (by) : (~(-((x) + 1) >> (by)))) +#endif /* SASR */ + +#include "proto.h" + +/* + * Prototypes from add.c + */ +extern word gsm_mult (word a, word b); +extern longword gsm_L_mult (word a, word b); +extern word gsm_mult_r (word a, word b); + +extern word gsm_div (word num, word denum); + +extern word gsm_add (word a, word b ); +extern longword gsm_L_add (longword a, longword b ); + +extern word gsm_sub (word a, word b); +extern longword gsm_L_sub (longword a, longword b); + +extern word gsm_abs (word a); + +extern word gsm_norm (longword a ); + +extern longword gsm_L_asl (longword a, int n); +extern word gsm_asl (word a, int n); + +extern longword gsm_L_asr (longword a, int n); +extern word gsm_asr (word a, int n); + +/* + * Inlined functions from add.h + */ + +/* + * #define GSM_MULT_R(a, b) (* word a, word b, !(a == b == MIN_WORD) *) \ + * (0x0FFFF & SASR(((longword)(a) * (longword)(b) + 16384), 15)) + */ +#define GSM_MULT_R(a, b) /* word a, word b, !(a == b == MIN_WORD) */ \ + (SASR( ((longword)(a) * (longword)(b) + 16384), 15 )) + +# define GSM_MULT(a,b) /* word a, word b, !(a == b == MIN_WORD) */ \ + (SASR( ((longword)(a) * (longword)(b)), 15 )) + +# define GSM_L_MULT(a, b) /* word a, word b */ \ + (((longword)(a) * (longword)(b)) << 1) + +# define GSM_L_ADD(a, b) \ + ( (a) < 0 ? ( (b) >= 0 ? (a) + (b) \ + : (utmp = (ulongword)-((a) + 1) + (ulongword)-((b) + 1)) \ + >= MAX_LONGWORD ? MIN_LONGWORD : -(longword)utmp-2 ) \ + : ((b) <= 0 ? (a) + (b) \ + : (utmp = (ulongword)(a) + (ulongword)(b)) >= MAX_LONGWORD \ + ? MAX_LONGWORD : utmp)) + +/* + * # define GSM_ADD(a, b) \ + * ((ltmp = (longword)(a) + (longword)(b)) >= MAX_WORD \ + * ? MAX_WORD : ltmp <= MIN_WORD ? MIN_WORD : ltmp) + */ +/* Nonportable, but faster: */ + +#define GSM_ADD(a, b) \ + ((ulongword)((ltmp = (longword)(a) + (longword)(b)) - MIN_WORD) > \ + MAX_WORD - MIN_WORD ? (ltmp > 0 ? MAX_WORD : MIN_WORD) : ltmp) + +# define GSM_SUB(a, b) \ + ((ltmp = (longword)(a) - (longword)(b)) >= MAX_WORD \ + ? MAX_WORD : ltmp <= MIN_WORD ? MIN_WORD : ltmp) + +# define GSM_ABS(a) ((a) < 0 ? ((a) == MIN_WORD ? MAX_WORD : -(a)) : (a)) + +/* Use these if necessary: + +# define GSM_MULT_R(a, b) gsm_mult_r(a, b) +# define GSM_MULT(a, b) gsm_mult(a, b) +# define GSM_L_MULT(a, b) gsm_L_mult(a, b) + +# define GSM_L_ADD(a, b) gsm_L_add(a, b) +# define GSM_ADD(a, b) gsm_add(a, b) +# define GSM_SUB(a, b) gsm_sub(a, b) + +# define GSM_ABS(a) gsm_abs(a) + +*/ + +/* + * More prototypes from implementations.. + */ +extern void Gsm_Coder P(( + struct gsm_state * S, + word * s, /* [0..159] samples IN */ + word * LARc, /* [0..7] LAR coefficients OUT */ + word * Nc, /* [0..3] LTP lag OUT */ + word * bc, /* [0..3] coded LTP gain OUT */ + word * Mc, /* [0..3] RPE grid selection OUT */ + word * xmaxc,/* [0..3] Coded maximum amplitude OUT */ + word * xMc /* [13*4] normalized RPE samples OUT */)); + +extern void Gsm_Long_Term_Predictor P(( /* 4x for 160 samples */ + struct gsm_state * S, + word * d, /* [0..39] residual signal IN */ + word * dp, /* [-120..-1] d' IN */ + word * e, /* [0..40] OUT */ + word * dpp, /* [0..40] OUT */ + word * Nc, /* correlation lag OUT */ + word * bc /* gain factor OUT */)); + +extern void Gsm_LPC_Analysis P(( + struct gsm_state * S, + word * s, /* 0..159 signals IN/OUT */ + word * LARc)); /* 0..7 LARc's OUT */ + +extern void Gsm_Preprocess P(( + struct gsm_state * S, + word * s, word * so)); + +extern void Gsm_Encoding P(( + struct gsm_state * S, + word * e, + word * ep, + word * xmaxc, + word * Mc, + word * xMc)); + +extern void Gsm_Short_Term_Analysis_Filter P(( + struct gsm_state * S, + word * LARc, /* coded log area ratio [0..7] IN */ + word * d /* st res. signal [0..159] IN/OUT */)); + +extern void Gsm_Decoder P(( + struct gsm_state * S, + word * LARcr, /* [0..7] IN */ + word * Ncr, /* [0..3] IN */ + word * bcr, /* [0..3] IN */ + word * Mcr, /* [0..3] IN */ + word * xmaxcr, /* [0..3] IN */ + word * xMcr, /* [0..13*4] IN */ + word * s)); /* [0..159] OUT */ + +extern void Gsm_Decoding P(( + struct gsm_state * S, + word xmaxcr, + word Mcr, + word * xMcr, /* [0..12] IN */ + word * erp)); /* [0..39] OUT */ + +extern void Gsm_Long_Term_Synthesis_Filtering P(( + struct gsm_state* S, + word Ncr, + word bcr, + word * erp, /* [0..39] IN */ + word * drp)); /* [-120..-1] IN, [0..40] OUT */ + +void Gsm_RPE_Decoding P(( + struct gsm_state *S, + word xmaxcr, + word Mcr, + word * xMcr, /* [0..12], 3 bits IN */ + word * erp)); /* [0..39] OUT */ + +void Gsm_RPE_Encoding P(( + struct gsm_state * S, + word * e, /* -5..-1][0..39][40..44 IN/OUT */ + word * xmaxc, /* OUT */ + word * Mc, /* OUT */ + word * xMc)); /* [0..12] OUT */ + +extern void Gsm_Short_Term_Synthesis_Filter P(( + struct gsm_state * S, + word * LARcr, /* log area ratios [0..7] IN */ + word * drp, /* received d [0...39] IN */ + word * s)); /* signal s [0..159] OUT */ + +extern void Gsm_Update_of_reconstructed_short_time_residual_signal P(( + word * dpp, /* [0...39] IN */ + word * ep, /* [0...39] IN */ + word * dp)); /* [-120...-1] IN/OUT */ + +/* + * Tables from table.c + */ +#ifndef GSM_TABLE_C + +extern word gsm_A[8], gsm_B[8], gsm_MIC[8], gsm_MAC[8]; +extern word gsm_INVA[8]; +extern word gsm_DLB[4], gsm_QLB[4]; +extern word gsm_H[11]; +extern word gsm_NRFAC[8]; +extern word gsm_FAC[8]; + +#endif /* GSM_TABLE_C */ + +/* + * Debugging + */ +#ifdef NDEBUG + +# define gsm_debug_words(a, b, c, d) /* nil */ +# define gsm_debug_longwords(a, b, c, d) /* nil */ +# define gsm_debug_word(a, b) /* nil */ +# define gsm_debug_longword(a, b) /* nil */ + +#else /* !NDEBUG => DEBUG */ + + extern void gsm_debug_words P((char * name, int, int, word *)); + extern void gsm_debug_longwords P((char * name, int, int, longword *)); + extern void gsm_debug_longword P((char * name, longword)); + extern void gsm_debug_word P((char * name, word)); + +#endif /* !NDEBUG */ + +#include "unproto.h" + +#endif /* PRIVATE_H */ diff --git a/plugins/ladspa_effect/swh/gsm/proto.h b/plugins/ladspa_effect/swh/gsm/proto.h new file mode 100644 index 000000000..92e422b2a --- /dev/null +++ b/plugins/ladspa_effect/swh/gsm/proto.h @@ -0,0 +1,65 @@ +/* + * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische + * Universitaet Berlin. See the accompanying file "COPYRIGHT" for + * details. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE. + */ + +/*$Header: /home/cvs/giga/ladspa-swh/gsm/proto.h,v 1.1 2001/06/10 21:36:51 swh Exp $*/ + +#ifndef PROTO_H +#define PROTO_H + +/*#if __cplusplus*/ +# define NeedFunctionPrototypes 1 +/*#endif*/ + +#if __STDC__ +# define NeedFunctionPrototypes 1 +#endif + +#ifdef _NO_PROTO +# undef NeedFunctionPrototypes +#endif + +#undef P /* gnu stdio.h actually defines this... */ +#undef P0 +#undef P1 +#undef P2 +#undef P3 +#undef P4 +#undef P5 +#undef P6 +#undef P7 +#undef P8 + +#if NeedFunctionPrototypes + +# define P( protos ) protos + +# define P0() (void) +# define P1(x, a) (a) +# define P2(x, a, b) (a, b) +# define P3(x, a, b, c) (a, b, c) +# define P4(x, a, b, c, d) (a, b, c, d) +# define P5(x, a, b, c, d, e) (a, b, c, d, e) +# define P6(x, a, b, c, d, e, f) (a, b, c, d, e, f) +# define P7(x, a, b, c, d, e, f, g) (a, b, c, d, e, f, g) +# define P8(x, a, b, c, d, e, f, g, h) (a, b, c, d, e, f, g, h) + +#else /* !NeedFunctionPrototypes */ + +# define P( protos ) ( /* protos */ ) + +# define P0() () +# define P1(x, a) x a; +# define P2(x, a, b) x a; b; +# define P3(x, a, b, c) x a; b; c; +# define P4(x, a, b, c, d) x a; b; c; d; +# define P5(x, a, b, c, d, e) x a; b; c; d; e; +# define P6(x, a, b, c, d, e, f) x a; b; c; d; e; f; +# define P7(x, a, b, c, d, e, f, g) x a; b; c; d; e; f; g; +# define P8(x, a, b, c, d, e, f, g, h) x a; b; c; d; e; f; g; h; + +#endif /* !NeedFunctionPrototypes */ + +#endif /* PROTO_H */ diff --git a/plugins/ladspa_effect/swh/gsm/rpe.c b/plugins/ladspa_effect/swh/gsm/rpe.c new file mode 100644 index 000000000..2c0260b60 --- /dev/null +++ b/plugins/ladspa_effect/swh/gsm/rpe.c @@ -0,0 +1,488 @@ +/* + * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische + * Universitaet Berlin. See the accompanying file "COPYRIGHT" for + * details. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE. + */ + +/* $Header: /home/cvs/giga/ladspa-swh/gsm/rpe.c,v 1.1 2001/06/10 21:36:51 swh Exp $ */ + +#include +#include + +#include "private.h" + +#include "gsm.h" +#include "proto.h" + +/* 4.2.13 .. 4.2.17 RPE ENCODING SECTION + */ + +/* 4.2.13 */ + +static void Weighting_filter P2((e, x), + register word * e, /* signal [-5..0.39.44] IN */ + word * x /* signal [0..39] OUT */ +) +/* + * The coefficients of the weighting filter are stored in a table + * (see table 4.4). The following scaling is used: + * + * H[0..10] = integer( real_H[ 0..10] * 8192 ); + */ +{ + /* word wt[ 50 ]; */ + + register longword L_result; + register int k /* , i */ ; + + /* Initialization of a temporary working array wt[0...49] + */ + + /* for (k = 0; k <= 4; k++) wt[k] = 0; + * for (k = 5; k <= 44; k++) wt[k] = *e++; + * for (k = 45; k <= 49; k++) wt[k] = 0; + * + * (e[-5..-1] and e[40..44] are allocated by the caller, + * are initially zero and are not written anywhere.) + */ + e -= 5; + + /* Compute the signal x[0..39] + */ + for (k = 0; k <= 39; k++) { + + L_result = 8192 >> 1; + + /* for (i = 0; i <= 10; i++) { + * L_temp = GSM_L_MULT( wt[k+i], gsm_H[i] ); + * L_result = GSM_L_ADD( L_result, L_temp ); + * } + */ + +#undef STEP +#define STEP( i, H ) (e[ k + i ] * (longword)H) + + /* Every one of these multiplications is done twice -- + * but I don't see an elegant way to optimize this. + * Do you? + */ + +#ifdef STUPID_COMPILER + L_result += STEP( 0, -134 ) ; + L_result += STEP( 1, -374 ) ; + /* + STEP( 2, 0 ) */ + L_result += STEP( 3, 2054 ) ; + L_result += STEP( 4, 5741 ) ; + L_result += STEP( 5, 8192 ) ; + L_result += STEP( 6, 5741 ) ; + L_result += STEP( 7, 2054 ) ; + /* + STEP( 8, 0 ) */ + L_result += STEP( 9, -374 ) ; + L_result += STEP( 10, -134 ) ; +#else + L_result += + STEP( 0, -134 ) + + STEP( 1, -374 ) + /* + STEP( 2, 0 ) */ + + STEP( 3, 2054 ) + + STEP( 4, 5741 ) + + STEP( 5, 8192 ) + + STEP( 6, 5741 ) + + STEP( 7, 2054 ) + /* + STEP( 8, 0 ) */ + + STEP( 9, -374 ) + + STEP(10, -134 ) + ; +#endif + + /* L_result = GSM_L_ADD( L_result, L_result ); (* scaling(x2) *) + * L_result = GSM_L_ADD( L_result, L_result ); (* scaling(x4) *) + * + * x[k] = SASR( L_result, 16 ); + */ + + /* 2 adds vs. >>16 => 14, minus one shift to compensate for + * those we lost when replacing L_MULT by '*'. + */ + + L_result = SASR( L_result, 13 ); + x[k] = ( L_result < MIN_WORD ? MIN_WORD + : (L_result > MAX_WORD ? MAX_WORD : L_result )); + } +} + +/* 4.2.14 */ + +static void RPE_grid_selection P3((x,xM,Mc_out), + word * x, /* [0..39] IN */ + word * xM, /* [0..12] OUT */ + word * Mc_out /* OUT */ +) +/* + * The signal x[0..39] is used to select the RPE grid which is + * represented by Mc. + */ +{ + /* register word temp1; */ + register int /* m, */ i; + register longword L_result, L_temp; + longword EM; /* xxx should be L_EM? */ + word Mc; + + longword L_common_0_3; + + EM = 0; + Mc = 0; + + /* for (m = 0; m <= 3; m++) { + * L_result = 0; + * + * + * for (i = 0; i <= 12; i++) { + * + * temp1 = SASR( x[m + 3*i], 2 ); + * + * assert(temp1 != MIN_WORD); + * + * L_temp = GSM_L_MULT( temp1, temp1 ); + * L_result = GSM_L_ADD( L_temp, L_result ); + * } + * + * if (L_result > EM) { + * Mc = m; + * EM = L_result; + * } + * } + */ + +#undef STEP +#define STEP( m, i ) L_temp = SASR( x[m + 3 * i], 2 ); \ + L_result += L_temp * L_temp; + + /* common part of 0 and 3 */ + + L_result = 0; + STEP( 0, 1 ); STEP( 0, 2 ); STEP( 0, 3 ); STEP( 0, 4 ); + STEP( 0, 5 ); STEP( 0, 6 ); STEP( 0, 7 ); STEP( 0, 8 ); + STEP( 0, 9 ); STEP( 0, 10); STEP( 0, 11); STEP( 0, 12); + L_common_0_3 = L_result; + + /* i = 0 */ + + STEP( 0, 0 ); + L_result <<= 1; /* implicit in L_MULT */ + EM = L_result; + + /* i = 1 */ + + L_result = 0; + STEP( 1, 0 ); + STEP( 1, 1 ); STEP( 1, 2 ); STEP( 1, 3 ); STEP( 1, 4 ); + STEP( 1, 5 ); STEP( 1, 6 ); STEP( 1, 7 ); STEP( 1, 8 ); + STEP( 1, 9 ); STEP( 1, 10); STEP( 1, 11); STEP( 1, 12); + L_result <<= 1; + if (L_result > EM) { + Mc = 1; + EM = L_result; + } + + /* i = 2 */ + + L_result = 0; + STEP( 2, 0 ); + STEP( 2, 1 ); STEP( 2, 2 ); STEP( 2, 3 ); STEP( 2, 4 ); + STEP( 2, 5 ); STEP( 2, 6 ); STEP( 2, 7 ); STEP( 2, 8 ); + STEP( 2, 9 ); STEP( 2, 10); STEP( 2, 11); STEP( 2, 12); + L_result <<= 1; + if (L_result > EM) { + Mc = 2; + EM = L_result; + } + + /* i = 3 */ + + L_result = L_common_0_3; + STEP( 3, 12 ); + L_result <<= 1; + if (L_result > EM) { + Mc = 3; + EM = L_result; + } + + /**/ + + /* Down-sampling by a factor 3 to get the selected xM[0..12] + * RPE sequence. + */ + for (i = 0; i <= 12; i ++) xM[i] = x[Mc + 3*i]; + *Mc_out = Mc; +} + +/* 4.12.15 */ + +static void APCM_quantization_xmaxc_to_exp_mant P3((xmaxc,exp_out,mant_out), + word xmaxc, /* IN */ + word * exp_out, /* OUT */ + word * mant_out ) /* OUT */ +{ + word exp, mant; + + /* Compute exponent and mantissa of the decoded version of xmaxc + */ + + exp = 0; + if (xmaxc > 15) exp = SASR(xmaxc, 3) - 1; + mant = xmaxc - (exp << 3); + + if (mant == 0) { + exp = -4; + mant = 7; + } + else { + while (mant <= 7) { + mant = mant << 1 | 1; + exp--; + } + mant -= 8; + } + + assert( exp >= -4 && exp <= 6 ); + assert( mant >= 0 && mant <= 7 ); + + *exp_out = exp; + *mant_out = mant; +} + +static void APCM_quantization P5((xM,xMc,mant_out,exp_out,xmaxc_out), + word * xM, /* [0..12] IN */ + + word * xMc, /* [0..12] OUT */ + word * mant_out, /* OUT */ + word * exp_out, /* OUT */ + word * xmaxc_out /* OUT */ +) +{ + int i, itest; + + word xmax, xmaxc, temp, temp1, temp2; + word exp, mant; + + + /* Find the maximum absolute value xmax of xM[0..12]. + */ + + xmax = 0; + for (i = 0; i <= 12; i++) { + temp = xM[i]; + temp = GSM_ABS(temp); + if (temp > xmax) xmax = temp; + } + + /* Qantizing and coding of xmax to get xmaxc. + */ + + exp = 0; + temp = SASR( xmax, 9 ); + itest = 0; + + for (i = 0; i <= 5; i++) { + + itest |= (temp <= 0); + temp = SASR( temp, 1 ); + + assert(exp <= 5); + if (itest == 0) exp++; /* exp = add (exp, 1) */ + } + + assert(exp <= 6 && exp >= 0); + temp = exp + 5; + + assert(temp <= 11 && temp >= 0); + xmaxc = gsm_add( SASR(xmax, temp), exp << 3 ); + + /* Quantizing and coding of the xM[0..12] RPE sequence + * to get the xMc[0..12] + */ + + APCM_quantization_xmaxc_to_exp_mant( xmaxc, &exp, &mant ); + + /* This computation uses the fact that the decoded version of xmaxc + * can be calculated by using the exponent and the mantissa part of + * xmaxc (logarithmic table). + * So, this method avoids any division and uses only a scaling + * of the RPE samples by a function of the exponent. A direct + * multiplication by the inverse of the mantissa (NRFAC[0..7] + * found in table 4.5) gives the 3 bit coded version xMc[0..12] + * of the RPE samples. + */ + + + /* Direct computation of xMc[0..12] using table 4.5 + */ + + assert( exp <= 4096 && exp >= -4096); + assert( mant >= 0 && mant <= 7 ); + + temp1 = 6 - exp; /* normalization by the exponent */ + temp2 = gsm_NRFAC[ mant ]; /* inverse mantissa */ + + for (i = 0; i <= 12; i++) { + + assert(temp1 >= 0 && temp1 < 16); + + temp = xM[i] << temp1; + temp = GSM_MULT( temp, temp2 ); + temp = SASR(temp, 12); + xMc[i] = temp + 4; /* see note below */ + } + + /* NOTE: This equation is used to make all the xMc[i] positive. + */ + + *mant_out = mant; + *exp_out = exp; + *xmaxc_out = xmaxc; +} + +/* 4.2.16 */ + +static void APCM_inverse_quantization P4((xMc,mant,exp,xMp), + register word * xMc, /* [0..12] IN */ + word mant, + word exp, + register word * xMp) /* [0..12] OUT */ +/* + * This part is for decoding the RPE sequence of coded xMc[0..12] + * samples to obtain the xMp[0..12] array. Table 4.6 is used to get + * the mantissa of xmaxc (FAC[0..7]). + */ +{ + int i; + word temp, temp1, temp2, temp3; + longword ltmp; + + assert( mant >= 0 && mant <= 7 ); + + temp1 = gsm_FAC[ mant ]; /* see 4.2-15 for mant */ + temp2 = gsm_sub( 6, exp ); /* see 4.2-15 for exp */ + temp3 = gsm_asl( 1, gsm_sub( temp2, 1 )); + + for (i = 13; i--;) { + + assert( *xMc <= 7 && *xMc >= 0 ); /* 3 bit unsigned */ + + /* temp = gsm_sub( *xMc++ << 1, 7 ); */ + temp = (*xMc++ << 1) - 7; /* restore sign */ + assert( temp <= 7 && temp >= -7 ); /* 4 bit signed */ + + temp <<= 12; /* 16 bit signed */ + temp = GSM_MULT_R( temp1, temp ); + temp = GSM_ADD( temp, temp3 ); + *xMp++ = gsm_asr( temp, temp2 ); + } +} + +/* 4.2.17 */ + +static void RPE_grid_positioning P3((Mc,xMp,ep), + word Mc, /* grid position IN */ + register word * xMp, /* [0..12] IN */ + register word * ep /* [0..39] OUT */ +) +/* + * This procedure computes the reconstructed long term residual signal + * ep[0..39] for the LTP analysis filter. The inputs are the Mc + * which is the grid position selection and the xMp[0..12] decoded + * RPE samples which are upsampled by a factor of 3 by inserting zero + * values. + */ +{ + int i = 13; + + assert(0 <= Mc && Mc <= 3); + + switch (Mc) { + case 3: *ep++ = 0; + case 2: do { + *ep++ = 0; + case 1: *ep++ = 0; + case 0: *ep++ = *xMp++; + } while (--i); + } + while (++Mc < 4) *ep++ = 0; + + /* + + int i, k; + for (k = 0; k <= 39; k++) ep[k] = 0; + for (i = 0; i <= 12; i++) { + ep[ Mc + (3*i) ] = xMp[i]; + } + */ +} + +/* 4.2.18 */ + +/* This procedure adds the reconstructed long term residual signal + * ep[0..39] to the estimated signal dpp[0..39] from the long term + * analysis filter to compute the reconstructed short term residual + * signal dp[-40..-1]; also the reconstructed short term residual + * array dp[-120..-41] is updated. + */ + +#if 0 /* Has been inlined in code.c */ +void Gsm_Update_of_reconstructed_short_time_residual_signal P3((dpp, ep, dp), + word * dpp, /* [0...39] IN */ + word * ep, /* [0...39] IN */ + word * dp) /* [-120...-1] IN/OUT */ +{ + int k; + + for (k = 0; k <= 79; k++) + dp[ -120 + k ] = dp[ -80 + k ]; + + for (k = 0; k <= 39; k++) + dp[ -40 + k ] = gsm_add( ep[k], dpp[k] ); +} +#endif /* Has been inlined in code.c */ + +void Gsm_RPE_Encoding P5((S,e,xmaxc,Mc,xMc), + + struct gsm_state * S, + + word * e, /* -5..-1][0..39][40..44 IN/OUT */ + word * xmaxc, /* OUT */ + word * Mc, /* OUT */ + word * xMc) /* [0..12] OUT */ +{ + word x[40]; + word xM[13], xMp[13]; + word mant, exp; + + Weighting_filter(e, x); + RPE_grid_selection(x, xM, Mc); + + APCM_quantization( xM, xMc, &mant, &exp, xmaxc); + APCM_inverse_quantization( xMc, mant, exp, xMp); + + RPE_grid_positioning( *Mc, xMp, e ); + +} + +void Gsm_RPE_Decoding P5((S, xmaxcr, Mcr, xMcr, erp), + struct gsm_state * S, + + word xmaxcr, + word Mcr, + word * xMcr, /* [0..12], 3 bits IN */ + word * erp /* [0..39] OUT */ +) +{ + word exp, mant; + word xMp[ 13 ]; + + APCM_quantization_xmaxc_to_exp_mant( xmaxcr, &exp, &mant ); + APCM_inverse_quantization( xMcr, mant, exp, xMp ); + RPE_grid_positioning( Mcr, xMp, erp ); + +} diff --git a/plugins/ladspa_effect/swh/gsm/short_term.c b/plugins/ladspa_effect/swh/gsm/short_term.c new file mode 100644 index 000000000..ba7f01840 --- /dev/null +++ b/plugins/ladspa_effect/swh/gsm/short_term.c @@ -0,0 +1,429 @@ +/* + * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische + * Universitaet Berlin. See the accompanying file "COPYRIGHT" for + * details. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE. + */ + +/* $Header: /home/cvs/giga/ladspa-swh/gsm/short_term.c,v 1.1 2001/06/10 21:36:51 swh Exp $ */ + +#include +#include + +#include "private.h" + +#include "gsm.h" +#include "proto.h" + +/* + * SHORT TERM ANALYSIS FILTERING SECTION + */ + +/* 4.2.8 */ + +static void Decoding_of_the_coded_Log_Area_Ratios P2((LARc,LARpp), + word * LARc, /* coded log area ratio [0..7] IN */ + word * LARpp) /* out: decoded .. */ +{ + register word temp1 /* , temp2 */; + register long ltmp; /* for GSM_ADD */ + + /* This procedure requires for efficient implementation + * two tables. + * + * INVA[1..8] = integer( (32768 * 8) / real_A[1..8]) + * MIC[1..8] = minimum value of the LARc[1..8] + */ + + /* Compute the LARpp[1..8] + */ + + /* for (i = 1; i <= 8; i++, B++, MIC++, INVA++, LARc++, LARpp++) { + * + * temp1 = GSM_ADD( *LARc, *MIC ) << 10; + * temp2 = *B << 1; + * temp1 = GSM_SUB( temp1, temp2 ); + * + * assert(*INVA != MIN_WORD); + * + * temp1 = GSM_MULT_R( *INVA, temp1 ); + * *LARpp = GSM_ADD( temp1, temp1 ); + * } + */ + +#undef STEP +#define STEP( B, MIC, INVA ) \ + temp1 = GSM_ADD( *LARc++, MIC ) << 10; \ + temp1 = GSM_SUB( temp1, B << 1 ); \ + temp1 = GSM_MULT_R( INVA, temp1 ); \ + *LARpp++ = GSM_ADD( temp1, temp1 ); + + STEP( 0, -32, 13107 ); + STEP( 0, -32, 13107 ); + STEP( 2048, -16, 13107 ); + STEP( -2560, -16, 13107 ); + + STEP( 94, -8, 19223 ); + STEP( -1792, -8, 17476 ); + STEP( -341, -4, 31454 ); + STEP( -1144, -4, 29708 ); + + /* NOTE: the addition of *MIC is used to restore + * the sign of *LARc. + */ +} + +/* 4.2.9 */ +/* Computation of the quantized reflection coefficients + */ + +/* 4.2.9.1 Interpolation of the LARpp[1..8] to get the LARp[1..8] + */ + +/* + * Within each frame of 160 analyzed speech samples the short term + * analysis and synthesis filters operate with four different sets of + * coefficients, derived from the previous set of decoded LARs(LARpp(j-1)) + * and the actual set of decoded LARs (LARpp(j)) + * + * (Initial value: LARpp(j-1)[1..8] = 0.) + */ + +static void Coefficients_0_12 P3((LARpp_j_1, LARpp_j, LARp), + register word * LARpp_j_1, + register word * LARpp_j, + register word * LARp) +{ + register int i; + register longword ltmp; + + for (i = 1; i <= 8; i++, LARp++, LARpp_j_1++, LARpp_j++) { + *LARp = GSM_ADD( SASR( *LARpp_j_1, 2 ), SASR( *LARpp_j, 2 )); + *LARp = GSM_ADD( *LARp, SASR( *LARpp_j_1, 1)); + } +} + +static void Coefficients_13_26 P3((LARpp_j_1, LARpp_j, LARp), + register word * LARpp_j_1, + register word * LARpp_j, + register word * LARp) +{ + register int i; + register longword ltmp; + for (i = 1; i <= 8; i++, LARpp_j_1++, LARpp_j++, LARp++) { + *LARp = GSM_ADD( SASR( *LARpp_j_1, 1), SASR( *LARpp_j, 1 )); + } +} + +static void Coefficients_27_39 P3((LARpp_j_1, LARpp_j, LARp), + register word * LARpp_j_1, + register word * LARpp_j, + register word * LARp) +{ + register int i; + register longword ltmp; + + for (i = 1; i <= 8; i++, LARpp_j_1++, LARpp_j++, LARp++) { + *LARp = GSM_ADD( SASR( *LARpp_j_1, 2 ), SASR( *LARpp_j, 2 )); + *LARp = GSM_ADD( *LARp, SASR( *LARpp_j, 1 )); + } +} + + +static void Coefficients_40_159 P2((LARpp_j, LARp), + register word * LARpp_j, + register word * LARp) +{ + register int i; + + for (i = 1; i <= 8; i++, LARp++, LARpp_j++) + *LARp = *LARpp_j; +} + +/* 4.2.9.2 */ + +static void LARp_to_rp P1((LARp), + register word * LARp) /* [0..7] IN/OUT */ +/* + * The input of this procedure is the interpolated LARp[0..7] array. + * The reflection coefficients, rp[i], are used in the analysis + * filter and in the synthesis filter. + */ +{ + register int i; + register word temp; + register longword ltmp; + + for (i = 1; i <= 8; i++, LARp++) { + + /* temp = GSM_ABS( *LARp ); + * + * if (temp < 11059) temp <<= 1; + * else if (temp < 20070) temp += 11059; + * else temp = GSM_ADD( temp >> 2, 26112 ); + * + * *LARp = *LARp < 0 ? -temp : temp; + */ + + if (*LARp < 0) { + temp = *LARp == MIN_WORD ? MAX_WORD : -(*LARp); + *LARp = - ((temp < 11059) ? temp << 1 + : ((temp < 20070) ? temp + 11059 + : GSM_ADD( temp >> 2, 26112 ))); + } else { + temp = *LARp; + *LARp = (temp < 11059) ? temp << 1 + : ((temp < 20070) ? temp + 11059 + : GSM_ADD( temp >> 2, 26112 )); + } + } +} + + +/* 4.2.10 */ +static void Short_term_analysis_filtering P4((S,rp,k_n,s), + struct gsm_state * S, + register word * rp, /* [0..7] IN */ + register int k_n, /* k_end - k_start */ + register word * s /* [0..n-1] IN/OUT */ +) +/* + * This procedure computes the short term residual signal d[..] to be fed + * to the RPE-LTP loop from the s[..] signal and from the local rp[..] + * array (quantized reflection coefficients). As the call of this + * procedure can be done in many ways (see the interpolation of the LAR + * coefficient), it is assumed that the computation begins with index + * k_start (for arrays d[..] and s[..]) and stops with index k_end + * (k_start and k_end are defined in 4.2.9.1). This procedure also + * needs to keep the array u[0..7] in memory for each call. + */ +{ + register word * u = S->u; + register int i; + register word di, zzz, ui, sav, rpi; + register longword ltmp; + + for (; k_n--; s++) { + + di = sav = *s; + + for (i = 0; i < 8; i++) { /* YYY */ + + ui = u[i]; + rpi = rp[i]; + u[i] = sav; + + zzz = GSM_MULT_R(rpi, di); + sav = GSM_ADD( ui, zzz); + + zzz = GSM_MULT_R(rpi, ui); + di = GSM_ADD( di, zzz ); + } + + *s = di; + } +} + +#if defined(USE_FLOAT_MUL) && defined(FAST) + +static void Fast_Short_term_analysis_filtering P4((S,rp,k_n,s), + struct gsm_state * S, + register word * rp, /* [0..7] IN */ + register int k_n, /* k_end - k_start */ + register word * s /* [0..n-1] IN/OUT */ +) +{ + register word * u = S->u; + register int i; + + float uf[8], + rpf[8]; + + register float scalef = 3.0517578125e-5; + register float sav, di, temp; + + for (i = 0; i < 8; ++i) { + uf[i] = u[i]; + rpf[i] = rp[i] * scalef; + } + for (; k_n--; s++) { + sav = di = *s; + for (i = 0; i < 8; ++i) { + register float rpfi = rpf[i]; + register float ufi = uf[i]; + + uf[i] = sav; + temp = rpfi * di + ufi; + di += rpfi * ufi; + sav = temp; + } + *s = di; + } + for (i = 0; i < 8; ++i) u[i] = uf[i]; +} +#endif /* ! (defined (USE_FLOAT_MUL) && defined (FAST)) */ + +static void Short_term_synthesis_filtering P5((S,rrp,k,wt,sr), + struct gsm_state * S, + register word * rrp, /* [0..7] IN */ + register int k, /* k_end - k_start */ + register word * wt, /* [0..k-1] IN */ + register word * sr /* [0..k-1] OUT */ +) +{ + register word * v = S->v; + register int i; + register word sri, tmp1, tmp2; + register longword ltmp; /* for GSM_ADD & GSM_SUB */ + + while (k--) { + sri = *wt++; + for (i = 8; i--;) { + + /* sri = GSM_SUB( sri, gsm_mult_r( rrp[i], v[i] ) ); + */ + tmp1 = rrp[i]; + tmp2 = v[i]; + tmp2 = ( tmp1 == MIN_WORD && tmp2 == MIN_WORD + ? MAX_WORD + : 0x0FFFF & (( (longword)tmp1 * (longword)tmp2 + + 16384) >> 15)) ; + + sri = GSM_SUB( sri, tmp2 ); + + /* v[i+1] = GSM_ADD( v[i], gsm_mult_r( rrp[i], sri ) ); + */ + tmp1 = ( tmp1 == MIN_WORD && sri == MIN_WORD + ? MAX_WORD + : 0x0FFFF & (( (longword)tmp1 * (longword)sri + + 16384) >> 15)) ; + + v[i+1] = GSM_ADD( v[i], tmp1); + } + *sr++ = v[0] = sri; + } +} + + +#if defined(FAST) && defined(USE_FLOAT_MUL) + +static void Fast_Short_term_synthesis_filtering P5((S,rrp,k,wt,sr), + struct gsm_state * S, + register word * rrp, /* [0..7] IN */ + register int k, /* k_end - k_start */ + register word * wt, /* [0..k-1] IN */ + register word * sr /* [0..k-1] OUT */ +) +{ + register word * v = S->v; + register int i; + + float va[9], rrpa[8]; + register float scalef = 3.0517578125e-5, temp; + + for (i = 0; i < 8; ++i) { + va[i] = v[i]; + rrpa[i] = (float)rrp[i] * scalef; + } + while (k--) { + register float sri = *wt++; + for (i = 8; i--;) { + sri -= rrpa[i] * va[i]; + if (sri < -32768.) sri = -32768.; + else if (sri > 32767.) sri = 32767.; + + temp = va[i] + rrpa[i] * sri; + if (temp < -32768.) temp = -32768.; + else if (temp > 32767.) temp = 32767.; + va[i+1] = temp; + } + *sr++ = va[0] = sri; + } + for (i = 0; i < 9; ++i) v[i] = va[i]; +} + +#endif /* defined(FAST) && defined(USE_FLOAT_MUL) */ + +void Gsm_Short_Term_Analysis_Filter P3((S,LARc,s), + + struct gsm_state * S, + + word * LARc, /* coded log area ratio [0..7] IN */ + word * s /* signal [0..159] IN/OUT */ +) +{ + word * LARpp_j = S->LARpp[ S->j ]; + word * LARpp_j_1 = S->LARpp[ S->j ^= 1 ]; + + word LARp[8]; + +#undef FILTER +#if defined(FAST) && defined(USE_FLOAT_MUL) +# define FILTER (* (S->fast \ + ? Fast_Short_term_analysis_filtering \ + : Short_term_analysis_filtering )) + +#else +# define FILTER Short_term_analysis_filtering +#endif + + Decoding_of_the_coded_Log_Area_Ratios( LARc, LARpp_j ); + + Coefficients_0_12( LARpp_j_1, LARpp_j, LARp ); + LARp_to_rp( LARp ); + FILTER( S, LARp, 13, s); + + Coefficients_13_26( LARpp_j_1, LARpp_j, LARp); + LARp_to_rp( LARp ); + FILTER( S, LARp, 14, s + 13); + + Coefficients_27_39( LARpp_j_1, LARpp_j, LARp); + LARp_to_rp( LARp ); + FILTER( S, LARp, 13, s + 27); + + Coefficients_40_159( LARpp_j, LARp); + LARp_to_rp( LARp ); + FILTER( S, LARp, 120, s + 40); +} + +void Gsm_Short_Term_Synthesis_Filter P4((S, LARcr, wt, s), + struct gsm_state * S, + + word * LARcr, /* received log area ratios [0..7] IN */ + word * wt, /* received d [0..159] IN */ + + word * s /* signal s [0..159] OUT */ +) +{ + word * LARpp_j = S->LARpp[ S->j ]; + word * LARpp_j_1 = S->LARpp[ S->j ^=1 ]; + + word LARp[8]; + +#undef FILTER +#if defined(FAST) && defined(USE_FLOAT_MUL) + +# define FILTER (* (S->fast \ + ? Fast_Short_term_synthesis_filtering \ + : Short_term_synthesis_filtering )) +#else +# define FILTER Short_term_synthesis_filtering +#endif + + Decoding_of_the_coded_Log_Area_Ratios( LARcr, LARpp_j ); + + Coefficients_0_12( LARpp_j_1, LARpp_j, LARp ); + LARp_to_rp( LARp ); + FILTER( S, LARp, 13, wt, s ); + + Coefficients_13_26( LARpp_j_1, LARpp_j, LARp); + LARp_to_rp( LARp ); + FILTER( S, LARp, 14, wt + 13, s + 13 ); + + Coefficients_27_39( LARpp_j_1, LARpp_j, LARp); + LARp_to_rp( LARp ); + FILTER( S, LARp, 13, wt + 27, s + 27 ); + + Coefficients_40_159( LARpp_j, LARp ); + LARp_to_rp( LARp ); + FILTER(S, LARp, 120, wt + 40, s + 40); +} diff --git a/plugins/ladspa_effect/swh/gsm/table.c b/plugins/ladspa_effect/swh/gsm/table.c new file mode 100644 index 000000000..6b889757b --- /dev/null +++ b/plugins/ladspa_effect/swh/gsm/table.c @@ -0,0 +1,63 @@ +/* + * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische + * Universitaet Berlin. See the accompanying file "COPYRIGHT" for + * details. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE. + */ + +/* $Header: /home/cvs/giga/ladspa-swh/gsm/table.c,v 1.1 2001/06/10 21:36:51 swh Exp $ */ + +/* Most of these tables are inlined at their point of use. + */ + +/* 4.4 TABLES USED IN THE FIXED POINT IMPLEMENTATION OF THE RPE-LTP + * CODER AND DECODER + * + * (Most of them inlined, so watch out.) + */ + +#define GSM_TABLE_C +#include "private.h" +#include "gsm.h" + +/* Table 4.1 Quantization of the Log.-Area Ratios + */ +/* i 1 2 3 4 5 6 7 8 */ +word gsm_A[8] = {20480, 20480, 20480, 20480, 13964, 15360, 8534, 9036}; +word gsm_B[8] = { 0, 0, 2048, -2560, 94, -1792, -341, -1144}; +word gsm_MIC[8] = { -32, -32, -16, -16, -8, -8, -4, -4 }; +word gsm_MAC[8] = { 31, 31, 15, 15, 7, 7, 3, 3 }; + + +/* Table 4.2 Tabulation of 1/A[1..8] + */ +word gsm_INVA[8]={ 13107, 13107, 13107, 13107, 19223, 17476, 31454, 29708 }; + + +/* Table 4.3a Decision level of the LTP gain quantizer + */ +/* bc 0 1 2 3 */ +word gsm_DLB[4] = { 6554, 16384, 26214, 32767 }; + + +/* Table 4.3b Quantization levels of the LTP gain quantizer + */ +/* bc 0 1 2 3 */ +word gsm_QLB[4] = { 3277, 11469, 21299, 32767 }; + + +/* Table 4.4 Coefficients of the weighting filter + */ +/* i 0 1 2 3 4 5 6 7 8 9 10 */ +word gsm_H[11] = {-134, -374, 0, 2054, 5741, 8192, 5741, 2054, 0, -374, -134 }; + + +/* Table 4.5 Normalized inverse mantissa used to compute xM/xmax + */ +/* i 0 1 2 3 4 5 6 7 */ +word gsm_NRFAC[8] = { 29128, 26215, 23832, 21846, 20165, 18725, 17476, 16384 }; + + +/* Table 4.6 Normalized direct mantissa used to compute xM/xmax + */ +/* i 0 1 2 3 4 5 6 7 */ +word gsm_FAC[8] = { 18431, 20479, 22527, 24575, 26623, 28671, 30719, 32767 }; diff --git a/plugins/ladspa_effect/swh/gsm/unproto.h b/plugins/ladspa_effect/swh/gsm/unproto.h new file mode 100644 index 000000000..9f5d731d6 --- /dev/null +++ b/plugins/ladspa_effect/swh/gsm/unproto.h @@ -0,0 +1,23 @@ +/* + * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische + * Universitaet Berlin. See the accompanying file "COPYRIGHT" for + * details. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE. + */ + +/*$Header: /home/cvs/giga/ladspa-swh/gsm/unproto.h,v 1.1 2001/06/10 21:36:51 swh Exp $*/ + +#ifdef PROTO_H /* sic */ +#undef PROTO_H + +#undef P +#undef P0 +#undef P1 +#undef P2 +#undef P3 +#undef P4 +#undef P5 +#undef P6 +#undef P7 +#undef P8 + +#endif /* PROTO_H */ diff --git a/plugins/ladspa_effect/swh/gsm_1215.c b/plugins/ladspa_effect/swh/gsm_1215.c new file mode 100644 index 000000000..b2ed56c5d --- /dev/null +++ b/plugins/ladspa_effect/swh/gsm_1215.c @@ -0,0 +1,504 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + +#line 9 "gsm_1215.xml" + +#include +#include "ladspa-util.h" +#include "gsm/gsm.h" +#include "util/biquad.h" + +#define SCALE 32768.0f +#define SCALE_R 0.0000305175f + +int bits[] = {0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80}; + +#define GSM_DRYWET 0 +#define GSM_PASSES 1 +#define GSM_ERROR 2 +#define GSM_INPUT 3 +#define GSM_OUTPUT 4 +#define GSM_LATENCY 5 + +static LADSPA_Descriptor *gsmDescriptor = NULL; + +typedef struct { + LADSPA_Data *drywet; + LADSPA_Data *passes; + LADSPA_Data *error; + LADSPA_Data *input; + LADSPA_Data *output; + LADSPA_Data *latency; + biquad * blf; + int count; + LADSPA_Data *dry; + gsm_signal * dst; + float fs; + gsm handle; + int resamp; + float rsf; + gsm_signal * src; + LADSPA_Data run_adding_gain; +} Gsm; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return gsmDescriptor; + default: + return NULL; + } +} + +static void activateGsm(LADSPA_Handle instance) { + Gsm *plugin_data = (Gsm *)instance; + biquad *blf = plugin_data->blf; + int count = plugin_data->count; + LADSPA_Data *dry = plugin_data->dry; + gsm_signal *dst = plugin_data->dst; + float fs = plugin_data->fs; + gsm handle = plugin_data->handle; + int resamp = plugin_data->resamp; + float rsf = plugin_data->rsf; + gsm_signal *src = plugin_data->src; +#line 41 "gsm_1215.xml" + count = 0; + memset(src, 0, sizeof(gsm_signal) * 160); + memset(dst, 0, sizeof(gsm_signal) * 163); + memset(dry, 0, sizeof(LADSPA_Data) * 160 * resamp); + handle = gsm_create(); + biquad_init(blf); + hs_set_params(blf, 3500.0f, -50.0f, 0.7f, fs); + plugin_data->blf = blf; + plugin_data->count = count; + plugin_data->dry = dry; + plugin_data->dst = dst; + plugin_data->fs = fs; + plugin_data->handle = handle; + plugin_data->resamp = resamp; + plugin_data->rsf = rsf; + plugin_data->src = src; + +} + +static void cleanupGsm(LADSPA_Handle instance) { +#line 51 "gsm_1215.xml" + Gsm *plugin_data = (Gsm *)instance; + free(plugin_data->src); + free(plugin_data->dst); + free(plugin_data->dry); + free(plugin_data->blf); + if (plugin_data->handle) { + gsm_destroy(plugin_data->handle); + } + free(instance); +} + +static void connectPortGsm( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + Gsm *plugin; + + plugin = (Gsm *)instance; + switch (port) { + case GSM_DRYWET: + plugin->drywet = data; + break; + case GSM_PASSES: + plugin->passes = data; + break; + case GSM_ERROR: + plugin->error = data; + break; + case GSM_INPUT: + plugin->input = data; + break; + case GSM_OUTPUT: + plugin->output = data; + break; + case GSM_LATENCY: + plugin->latency = data; + break; + } +} + +static LADSPA_Handle instantiateGsm( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + Gsm *plugin_data = (Gsm *)malloc(sizeof(Gsm)); + biquad *blf = NULL; + int count; + LADSPA_Data *dry = NULL; + gsm_signal *dst = NULL; + float fs; + gsm handle; + int resamp; + float rsf; + gsm_signal *src = NULL; + +#line 27 "gsm_1215.xml" + count = 0; + resamp = s_rate / 8000; + fs = s_rate; + rsf = SCALE / (float)resamp; + src = malloc(sizeof(gsm_signal) * 160); + dst = malloc(sizeof(gsm_signal) * 163); + dry = malloc(sizeof(LADSPA_Data) * 160 * resamp); + handle = NULL; + + blf = malloc(sizeof(biquad)); + biquad_init(blf); + + plugin_data->blf = blf; + plugin_data->count = count; + plugin_data->dry = dry; + plugin_data->dst = dst; + plugin_data->fs = fs; + plugin_data->handle = handle; + plugin_data->resamp = resamp; + plugin_data->rsf = rsf; + plugin_data->src = src; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runGsm(LADSPA_Handle instance, unsigned long sample_count) { + Gsm *plugin_data = (Gsm *)instance; + + /* Dry/wet mix (float value) */ + const LADSPA_Data drywet = *(plugin_data->drywet); + + /* Number of passes (float value) */ + const LADSPA_Data passes = *(plugin_data->passes); + + /* Error rate (bits/block) (float value) */ + const LADSPA_Data error = *(plugin_data->error); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + biquad * blf = plugin_data->blf; + int count = plugin_data->count; + LADSPA_Data * dry = plugin_data->dry; + gsm_signal * dst = plugin_data->dst; + float fs = plugin_data->fs; + gsm handle = plugin_data->handle; + int resamp = plugin_data->resamp; + float rsf = plugin_data->rsf; + gsm_signal * src = plugin_data->src; + +#line 61 "gsm_1215.xml" + unsigned long pos; + gsm_frame frame; + int samp; + float part; + int error_rate = f_round(error); + int num_passes = f_round(passes); + + fs = fs; // So gcc doesn't think it's unused + + for (pos = 0; pos < sample_count; pos++) { + + // oversample into buffer down to aprox 8kHz, 13bit + src[count / resamp] += f_round(biquad_run(blf, input[pos]) * rsf); + + // interpolate output, so it doesn't sound totaly awful + samp = count / resamp; + part = (float)count / (float)resamp - (float)samp; + buffer_write(output[pos], cube_interp(part, dst[samp], dst[samp+1], dst[samp+2], dst[samp+3]) * SCALE_R * drywet + dry[count] * (1.0f - drywet)); + + // Maintain delayed, dry buffer. + dry[count] = input[pos]; + + count++; + + // If we have a full, downsampled buffer then run the encode + + // decode process. + if (count >= 160 * resamp) { + int i, j; + gsm_signal *in; + + count = 0; + dst[0] = dst[160]; + dst[1] = dst[161]; + dst[2] = dst[162]; + + in = src; + for (j=0; jcount = count; + + *(plugin_data->latency) = 160 * resamp; +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainGsm(LADSPA_Handle instance, LADSPA_Data gain) { + ((Gsm *)instance)->run_adding_gain = gain; +} + +static void runAddingGsm(LADSPA_Handle instance, unsigned long sample_count) { + Gsm *plugin_data = (Gsm *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Dry/wet mix (float value) */ + const LADSPA_Data drywet = *(plugin_data->drywet); + + /* Number of passes (float value) */ + const LADSPA_Data passes = *(plugin_data->passes); + + /* Error rate (bits/block) (float value) */ + const LADSPA_Data error = *(plugin_data->error); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + biquad * blf = plugin_data->blf; + int count = plugin_data->count; + LADSPA_Data * dry = plugin_data->dry; + gsm_signal * dst = plugin_data->dst; + float fs = plugin_data->fs; + gsm handle = plugin_data->handle; + int resamp = plugin_data->resamp; + float rsf = plugin_data->rsf; + gsm_signal * src = plugin_data->src; + +#line 61 "gsm_1215.xml" + unsigned long pos; + gsm_frame frame; + int samp; + float part; + int error_rate = f_round(error); + int num_passes = f_round(passes); + + fs = fs; // So gcc doesn't think it's unused + + for (pos = 0; pos < sample_count; pos++) { + + // oversample into buffer down to aprox 8kHz, 13bit + src[count / resamp] += f_round(biquad_run(blf, input[pos]) * rsf); + + // interpolate output, so it doesn't sound totaly awful + samp = count / resamp; + part = (float)count / (float)resamp - (float)samp; + buffer_write(output[pos], cube_interp(part, dst[samp], dst[samp+1], dst[samp+2], dst[samp+3]) * SCALE_R * drywet + dry[count] * (1.0f - drywet)); + + // Maintain delayed, dry buffer. + dry[count] = input[pos]; + + count++; + + // If we have a full, downsampled buffer then run the encode + + // decode process. + if (count >= 160 * resamp) { + int i, j; + gsm_signal *in; + + count = 0; + dst[0] = dst[160]; + dst[1] = dst[161]; + dst[2] = dst[162]; + + in = src; + for (j=0; jcount = count; + + *(plugin_data->latency) = 160 * resamp; +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + gsmDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (gsmDescriptor) { + gsmDescriptor->UniqueID = 1215; + gsmDescriptor->Label = "gsm"; + gsmDescriptor->Properties = + 0; + gsmDescriptor->Name = + D_("GSM simulator"); + gsmDescriptor->Maker = + "Steve Harris "; + gsmDescriptor->Copyright = + "GPL"; + gsmDescriptor->PortCount = 6; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(6, + sizeof(LADSPA_PortDescriptor)); + gsmDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(6, + sizeof(LADSPA_PortRangeHint)); + gsmDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(6, sizeof(char*)); + gsmDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Dry/wet mix */ + port_descriptors[GSM_DRYWET] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[GSM_DRYWET] = + D_("Dry/wet mix"); + port_range_hints[GSM_DRYWET].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_1; + port_range_hints[GSM_DRYWET].LowerBound = 0; + port_range_hints[GSM_DRYWET].UpperBound = 1; + + /* Parameters for Number of passes */ + port_descriptors[GSM_PASSES] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[GSM_PASSES] = + D_("Number of passes"); + port_range_hints[GSM_PASSES].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_INTEGER | LADSPA_HINT_DEFAULT_1; + port_range_hints[GSM_PASSES].LowerBound = 0; + port_range_hints[GSM_PASSES].UpperBound = 10; + + /* Parameters for Error rate (bits/block) */ + port_descriptors[GSM_ERROR] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[GSM_ERROR] = + D_("Error rate (bits/block)"); + port_range_hints[GSM_ERROR].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[GSM_ERROR].LowerBound = 0; + port_range_hints[GSM_ERROR].UpperBound = 30; + + /* Parameters for Input */ + port_descriptors[GSM_INPUT] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[GSM_INPUT] = + D_("Input"); + port_range_hints[GSM_INPUT].HintDescriptor = 0; + + /* Parameters for Output */ + port_descriptors[GSM_OUTPUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[GSM_OUTPUT] = + D_("Output"); + port_range_hints[GSM_OUTPUT].HintDescriptor = 0; + + /* Parameters for latency */ + port_descriptors[GSM_LATENCY] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_CONTROL; + port_names[GSM_LATENCY] = + D_("latency"); + port_range_hints[GSM_LATENCY].HintDescriptor = 0; + + gsmDescriptor->activate = activateGsm; + gsmDescriptor->cleanup = cleanupGsm; + gsmDescriptor->connect_port = connectPortGsm; + gsmDescriptor->deactivate = NULL; + gsmDescriptor->instantiate = instantiateGsm; + gsmDescriptor->run = runGsm; + gsmDescriptor->run_adding = runAddingGsm; + gsmDescriptor->set_run_adding_gain = setRunAddingGainGsm; + } +} + +void _fini() { + if (gsmDescriptor) { + free((LADSPA_PortDescriptor *)gsmDescriptor->PortDescriptors); + free((char **)gsmDescriptor->PortNames); + free((LADSPA_PortRangeHint *)gsmDescriptor->PortRangeHints); + free(gsmDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/gverb/gverb.c b/plugins/ladspa_effect/swh/gverb/gverb.c new file mode 100644 index 000000000..a64496ab1 --- /dev/null +++ b/plugins/ladspa_effect/swh/gverb/gverb.c @@ -0,0 +1,207 @@ +/* + + Copyright (C) 1999 Juhana Sadeharju + kouhia at nic.funet.fi + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + + */ + + +#include +#include +#include +#include +#include "gverbdsp.h" +#include "gverb.h" +#include "../ladspa-util.h" + +ty_gverb *gverb_new(int srate, float maxroomsize, float roomsize, + float revtime, + float damping, float spread, + float inputbandwidth, float earlylevel, + float taillevel) +{ + ty_gverb *p; + float ga,gb,gt; + int i,n; + float r; + float diffscale; + int a,b,c,cc,d,dd,e; + float spread1,spread2; + + p = (ty_gverb *)malloc(sizeof(ty_gverb)); + p->rate = srate; + p->fdndamping = damping; + p->maxroomsize = maxroomsize; + p->roomsize = roomsize; + p->revtime = revtime; + p->earlylevel = earlylevel; + p->taillevel = taillevel; + + p->maxdelay = p->rate*p->maxroomsize/340.0; + p->largestdelay = p->rate*p->roomsize/340.0; + + + /* Input damper */ + + p->inputbandwidth = inputbandwidth; + p->inputdamper = damper_make(1.0 - p->inputbandwidth); + + + /* FDN section */ + + + p->fdndels = (ty_fixeddelay **)calloc(FDNORDER, sizeof(ty_fixeddelay *)); + for(i = 0; i < FDNORDER; i++) { + p->fdndels[i] = fixeddelay_make((int)p->maxdelay+1000); + } + p->fdngains = (float *)calloc(FDNORDER, sizeof(float)); + p->fdnlens = (int *)calloc(FDNORDER, sizeof(int)); + + p->fdndamps = (ty_damper **)calloc(FDNORDER, sizeof(ty_damper *)); + for(i = 0; i < FDNORDER; i++) { + p->fdndamps[i] = damper_make(p->fdndamping); + } + + ga = 60.0; + gt = p->revtime; + ga = powf(10.0f,-ga/20.0f); + n = p->rate*gt; + p->alpha = pow((double)ga, 1.0/(double)n); + + gb = 0.0; + for(i = 0; i < FDNORDER; i++) { + if (i == 0) gb = 1.000000*p->largestdelay; + if (i == 1) gb = 0.816490*p->largestdelay; + if (i == 2) gb = 0.707100*p->largestdelay; + if (i == 3) gb = 0.632450*p->largestdelay; + +#if 0 + p->fdnlens[i] = nearest_prime((int)gb, 0.5); +#else + p->fdnlens[i] = f_round(gb); +#endif + p->fdngains[i] = -powf((float)p->alpha,p->fdnlens[i]); + } + + p->d = (float *)calloc(FDNORDER, sizeof(float)); + p->u = (float *)calloc(FDNORDER, sizeof(float)); + p->f = (float *)calloc(FDNORDER, sizeof(float)); + + /* Diffuser section */ + + diffscale = (float)p->fdnlens[3]/(210+159+562+410); + spread1 = spread; + spread2 = 3.0*spread; + + b = 210; + r = 0.125541; + a = spread1*r; + c = 210+159+a; + cc = c-b; + r = 0.854046; + a = spread2*r; + d = 210+159+562+a; + dd = d-c; + e = 1341-d; + + p->ldifs = (ty_diffuser **)calloc(4, sizeof(ty_diffuser *)); + p->ldifs[0] = diffuser_make((int)(diffscale*b),0.75); + p->ldifs[1] = diffuser_make((int)(diffscale*cc),0.75); + p->ldifs[2] = diffuser_make((int)(diffscale*dd),0.625); + p->ldifs[3] = diffuser_make((int)(diffscale*e),0.625); + + b = 210; + r = -0.568366; + a = spread1*r; + c = 210+159+a; + cc = c-b; + r = -0.126815; + a = spread2*r; + d = 210+159+562+a; + dd = d-c; + e = 1341-d; + + p->rdifs = (ty_diffuser **)calloc(4, sizeof(ty_diffuser *)); + p->rdifs[0] = diffuser_make((int)(diffscale*b),0.75); + p->rdifs[1] = diffuser_make((int)(diffscale*cc),0.75); + p->rdifs[2] = diffuser_make((int)(diffscale*dd),0.625); + p->rdifs[3] = diffuser_make((int)(diffscale*e),0.625); + + + + /* Tapped delay section */ + + p->tapdelay = fixeddelay_make(44000); + p->taps = (int *)calloc(FDNORDER, sizeof(int)); + p->tapgains = (float *)calloc(FDNORDER, sizeof(float)); + + p->taps[0] = 5+0.410*p->largestdelay; + p->taps[1] = 5+0.300*p->largestdelay; + p->taps[2] = 5+0.155*p->largestdelay; + p->taps[3] = 5+0.000*p->largestdelay; + + for(i = 0; i < FDNORDER; i++) { + p->tapgains[i] = pow(p->alpha,(double)p->taps[i]); + } + + return(p); +} + +void gverb_free(ty_gverb *p) +{ + int i; + + damper_free(p->inputdamper); + for(i = 0; i < FDNORDER; i++) { + fixeddelay_free(p->fdndels[i]); + damper_free(p->fdndamps[i]); + diffuser_free(p->ldifs[i]); + diffuser_free(p->rdifs[i]); + } + free(p->fdndels); + free(p->fdngains); + free(p->fdnlens); + free(p->fdndamps); + free(p->d); + free(p->u); + free(p->f); + free(p->ldifs); + free(p->rdifs); + free(p->taps); + free(p->tapgains); + fixeddelay_free(p->tapdelay); + free(p); +} + +void gverb_flush(ty_gverb *p) +{ + int i; + + damper_flush(p->inputdamper); + for(i = 0; i < FDNORDER; i++) { + fixeddelay_flush(p->fdndels[i]); + damper_flush(p->fdndamps[i]); + diffuser_flush(p->ldifs[i]); + diffuser_flush(p->rdifs[i]); + } + memset(p->d, 0, FDNORDER * sizeof(float)); + memset(p->u, 0, FDNORDER * sizeof(float)); + memset(p->f, 0, FDNORDER * sizeof(float)); + fixeddelay_flush(p->tapdelay); +} + +/* swh: other functions are now in the .h file for inlining */ diff --git a/plugins/ladspa_effect/swh/gverb/gverb.h b/plugins/ladspa_effect/swh/gverb/gverb.h new file mode 100644 index 000000000..302e74090 --- /dev/null +++ b/plugins/ladspa_effect/swh/gverb/gverb.h @@ -0,0 +1,234 @@ +/* + + Copyright (C) 1999 Juhana Sadeharju + kouhia at nic.funet.fi + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + + */ + +#ifndef GVERB_H +#define GVERB_H + +#include +#include +#include +#include "gverbdsp.h" +#include "gverb.h" +#include "../ladspa-util.h" + +#define FDNORDER 4 + +typedef struct { + int rate; + float inputbandwidth; + float taillevel; + float earlylevel; + ty_damper *inputdamper; + float maxroomsize; + float roomsize; + float revtime; + float maxdelay; + float largestdelay; + ty_fixeddelay **fdndels; + float *fdngains; + int *fdnlens; + ty_damper **fdndamps; + float fdndamping; + ty_diffuser **ldifs; + ty_diffuser **rdifs; + ty_fixeddelay *tapdelay; + int *taps; + float *tapgains; + float *d; + float *u; + float *f; + double alpha; +} ty_gverb; + + +ty_gverb *gverb_new(int, float, float, float, float, float, float, float, float); +void gverb_free(ty_gverb *); +void gverb_flush(ty_gverb *); +static void gverb_do(ty_gverb *, float, float *, float *); +static void gverb_set_roomsize(ty_gverb *, float); +static void gverb_set_revtime(ty_gverb *, float); +static void gverb_set_damping(ty_gverb *, float); +static void gverb_set_inputbandwidth(ty_gverb *, float); +static void gverb_set_earlylevel(ty_gverb *, float); +static void gverb_set_taillevel(ty_gverb *, float); + +/* + * This FDN reverb can be made smoother by setting matrix elements at the + * diagonal and near of it to zero or nearly zero. By setting diagonals to zero + * means we remove the effect of the parallel comb structure from the + * reverberation. A comb generates uniform impulse stream to the reverberation + * impulse response, and thus it is not good. By setting near diagonal elements + * to zero means we remove delay sequences having consequtive delays of the + * similar lenths, when the delays are in sorted in length with respect to + * matrix element index. The matrix described here could be generated by + * differencing Rocchesso's circulant matrix at max diffuse value and at low + * diffuse value (approaching parallel combs). + * + * Example 1: + * Set a(k,k), for all k, equal to 0. + * + * Example 2: + * Set a(k,k), a(k,k-1) and a(k,k+1) equal to 0. + * + * Example 3: The transition to zero gains could be smooth as well. + * a(k,k-1) and a(k,k+1) could be 0.3, and a(k,k-2) and a(k,k+2) could + * be 0.5, say. + */ + +static inline void gverb_fdnmatrix(float *a, float *b) +{ + const float dl0 = a[0], dl1 = a[1], dl2 = a[2], dl3 = a[3]; + + b[0] = 0.5f*(+dl0 + dl1 - dl2 - dl3); + b[1] = 0.5f*(+dl0 - dl1 - dl2 + dl3); + b[2] = 0.5f*(-dl0 + dl1 - dl2 + dl3); + b[3] = 0.5f*(+dl0 + dl1 + dl2 + dl3); +} + +static inline void gverb_do(ty_gverb *p, float x, float *yl, float *yr) +{ + float z; + unsigned int i; + float lsum,rsum,sum,sign; + + if (isnan(x) || fabsf(x) > 100000.0f) { + x = 0.0f; + } + + z = damper_do(p->inputdamper, x); + + z = diffuser_do(p->ldifs[0],z); + + for(i = 0; i < FDNORDER; i++) { + p->u[i] = p->tapgains[i]*fixeddelay_read(p->tapdelay,p->taps[i]); + } + fixeddelay_write(p->tapdelay,z); + + for(i = 0; i < FDNORDER; i++) { + p->d[i] = damper_do(p->fdndamps[i], + p->fdngains[i]*fixeddelay_read(p->fdndels[i], + p->fdnlens[i])); + } + + sum = 0.0f; + sign = 1.0f; + for(i = 0; i < FDNORDER; i++) { + sum += sign*(p->taillevel*p->d[i] + p->earlylevel*p->u[i]); + sign = -sign; + } + sum += x*p->earlylevel; + lsum = sum; + rsum = sum; + + gverb_fdnmatrix(p->d,p->f); + + for(i = 0; i < FDNORDER; i++) { + fixeddelay_write(p->fdndels[i],p->u[i]+p->f[i]); + } + + lsum = diffuser_do(p->ldifs[1],lsum); + lsum = diffuser_do(p->ldifs[2],lsum); + lsum = diffuser_do(p->ldifs[3],lsum); + rsum = diffuser_do(p->rdifs[1],rsum); + rsum = diffuser_do(p->rdifs[2],rsum); + rsum = diffuser_do(p->rdifs[3],rsum); + + *yl = lsum; + *yr = rsum; +} + +static inline void gverb_set_roomsize(ty_gverb *p, const float a) +{ + unsigned int i; + + if (a <= 1.0 || isnan(a)) { + p->roomsize = 1.0; + } else { + p->roomsize = a; + } + p->largestdelay = p->rate * p->roomsize * 0.00294f; + + p->fdnlens[0] = f_round(1.000000f*p->largestdelay); + p->fdnlens[1] = f_round(0.816490f*p->largestdelay); + p->fdnlens[2] = f_round(0.707100f*p->largestdelay); + p->fdnlens[3] = f_round(0.632450f*p->largestdelay); + for(i = 0; i < FDNORDER; i++) { + p->fdngains[i] = -powf((float)p->alpha, p->fdnlens[i]); + } + + p->taps[0] = 5+f_round(0.410f*p->largestdelay); + p->taps[1] = 5+f_round(0.300f*p->largestdelay); + p->taps[2] = 5+f_round(0.155f*p->largestdelay); + p->taps[3] = 5+f_round(0.000f*p->largestdelay); + + for(i = 0; i < FDNORDER; i++) { + p->tapgains[i] = powf((float)p->alpha, p->taps[i]); + } + +} + +static inline void gverb_set_revtime(ty_gverb *p,float a) +{ + float ga,gt; + double n; + unsigned int i; + + p->revtime = a; + + ga = 60.0; + gt = p->revtime; + ga = powf(10.0f,-ga/20.0f); + n = p->rate*gt; + p->alpha = (double)powf(ga,1.0f/n); + + for(i = 0; i < FDNORDER; i++) { + p->fdngains[i] = -powf((float)p->alpha, p->fdnlens[i]); + } + +} + +static inline void gverb_set_damping(ty_gverb *p,float a) +{ + unsigned int i; + + p->fdndamping = a; + for(i = 0; i < FDNORDER; i++) { + damper_set(p->fdndamps[i],p->fdndamping); + } +} + +static inline void gverb_set_inputbandwidth(ty_gverb *p,float a) +{ + p->inputbandwidth = a; + damper_set(p->inputdamper,1.0 - p->inputbandwidth); +} + +static inline void gverb_set_earlylevel(ty_gverb *p,float a) +{ + p->earlylevel = a; +} + +static inline void gverb_set_taillevel(ty_gverb *p,float a) +{ + p->taillevel = a; +} + +#endif diff --git a/plugins/ladspa_effect/swh/gverb/gverbdsp.c b/plugins/ladspa_effect/swh/gverb/gverbdsp.c new file mode 100644 index 000000000..05a90f897 --- /dev/null +++ b/plugins/ladspa_effect/swh/gverb/gverbdsp.c @@ -0,0 +1,130 @@ + + +/* + + Copyright (C) 1999 Juhana Sadeharju + kouhia at nic.funet.fi + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + + */ + +#include +#include +#include +#include + +#include "gverbdsp.h" + +#define TRUE 1 +#define FALSE 0 + +ty_diffuser *diffuser_make(int size, float coeff) +{ + ty_diffuser *p; + int i; + + p = (ty_diffuser *)malloc(sizeof(ty_diffuser)); + p->size = size; + p->coeff = coeff; + p->idx = 0; + p->buf = (float *)malloc(size*sizeof(float)); + for (i = 0; i < size; i++) p->buf[i] = 0.0; + return(p); +} + +void diffuser_free(ty_diffuser *p) +{ + free(p->buf); + free(p); +} + +void diffuser_flush(ty_diffuser *p) +{ + memset(p->buf, 0, p->size * sizeof(float)); +} + +ty_damper *damper_make(float damping) +{ + ty_damper *p; + + p = (ty_damper *)malloc(sizeof(ty_damper)); + p->damping = damping; + p->delay = 0.0f; + return(p); +} + +void damper_free(ty_damper *p) +{ + free(p); +} + +void damper_flush(ty_damper *p) +{ + p->delay = 0.0f; +} + +ty_fixeddelay *fixeddelay_make(int size) +{ + ty_fixeddelay *p; + int i; + + p = (ty_fixeddelay *)malloc(sizeof(ty_fixeddelay)); + p->size = size; + p->idx = 0; + p->buf = (float *)malloc(size*sizeof(float)); + for (i = 0; i < size; i++) p->buf[i] = 0.0; + return(p); +} + +void fixeddelay_free(ty_fixeddelay *p) +{ + free(p->buf); + free(p); +} + +void fixeddelay_flush(ty_fixeddelay *p) +{ + memset(p->buf, 0, p->size * sizeof(float)); +} + +int isprime(int n) +{ + unsigned int i; + const unsigned int lim = (int)sqrtf((float)n); + + if (n == 2) return(TRUE); + if ((n & 1) == 0) return(FALSE); + for(i = 3; i <= lim; i += 2) + if ((n % i) == 0) return(FALSE); + return(TRUE); +} + +int nearest_prime(int n, float rerror) + /* relative error; new prime will be in range + * [n-n*rerror, n+n*rerror]; + */ +{ + int bound,k; + + if (isprime(n)) return(n); + /* assume n is large enough and n*rerror enough smaller than n */ + bound = n*rerror; + for(k = 1; k <= bound; k++) { + if (isprime(n+k)) return(n+k); + if (isprime(n-k)) return(n-k); + } + return(-1); +} diff --git a/plugins/ladspa_effect/swh/gverb/gverbdsp.h b/plugins/ladspa_effect/swh/gverb/gverbdsp.h new file mode 100644 index 000000000..b0cec5e20 --- /dev/null +++ b/plugins/ladspa_effect/swh/gverb/gverbdsp.h @@ -0,0 +1,85 @@ + +#ifndef GVERBDSP_H +#define GVERBDSP_H + +#include "../ladspa-util.h" + +typedef struct { + int size; + int idx; + float *buf; +} ty_fixeddelay; + +typedef struct { + int size; + float coeff; + int idx; + float *buf; +} ty_diffuser; + +typedef struct { + float damping; + float delay; +} ty_damper; + +ty_diffuser *diffuser_make(int, float); +void diffuser_free(ty_diffuser *); +void diffuser_flush(ty_diffuser *); +//float diffuser_do(ty_diffuser *, float); + +ty_damper *damper_make(float); +void damper_free(ty_damper *); +void damper_flush(ty_damper *); +//void damper_set(ty_damper *, float); +//float damper_do(ty_damper *, float); + +ty_fixeddelay *fixeddelay_make(int); +void fixeddelay_free(ty_fixeddelay *); +void fixeddelay_flush(ty_fixeddelay *); +//float fixeddelay_read(ty_fixeddelay *, int); +//void fixeddelay_write(ty_fixeddelay *, float); + +int isprime(int); +int nearest_prime(int, float); + +static inline float diffuser_do(ty_diffuser *p, float x) +{ + float y,w; + + w = x - p->buf[p->idx]*p->coeff; + w = flush_to_zero(w); + y = p->buf[p->idx] + w*p->coeff; + p->buf[p->idx] = w; + p->idx = (p->idx + 1) % p->size; + return(y); +} + +static inline float fixeddelay_read(ty_fixeddelay *p, int n) +{ + int i; + + i = (p->idx - n + p->size) % p->size; + return(p->buf[i]); +} + +static inline void fixeddelay_write(ty_fixeddelay *p, float x) +{ + p->buf[p->idx] = x; + p->idx = (p->idx + 1) % p->size; +} + +static inline void damper_set(ty_damper *p, float damping) +{ + p->damping = damping; +} + +static inline float damper_do(ty_damper *p, float x) +{ + float y; + + y = x*(1.0-p->damping) + p->delay*p->damping; + p->delay = y; + return(y); +} + +#endif diff --git a/plugins/ladspa_effect/swh/gverb_1216.c b/plugins/ladspa_effect/swh/gverb_1216.c new file mode 100644 index 000000000..0bf339fd7 --- /dev/null +++ b/plugins/ladspa_effect/swh/gverb_1216.c @@ -0,0 +1,440 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + +#line 10 "gverb_1216.xml" + +/* + +GVerb algorithm designed and implemented by Juhana Sadeharju. +LADSPA implementation and GVerb speeds ups by Steve Harris. + +Comments and suggestions should be mailed to Juhana Sadeharju +(kouhia at nic funet fi). + +*/ + +#include "ladspa-util.h" +#include "gverb/gverbdsp.h" +#include "gverb/gverb.h" + +#define GVERB_ROOMSIZE 0 +#define GVERB_REVTIME 1 +#define GVERB_DAMPING 2 +#define GVERB_INPUTBANDWIDTH 3 +#define GVERB_DRYLEVEL 4 +#define GVERB_EARLYLEVEL 5 +#define GVERB_TAILLEVEL 6 +#define GVERB_INPUT 7 +#define GVERB_OUTL 8 +#define GVERB_OUTR 9 + +static LADSPA_Descriptor *gverbDescriptor = NULL; + +typedef struct { + LADSPA_Data *roomsize; + LADSPA_Data *revtime; + LADSPA_Data *damping; + LADSPA_Data *inputbandwidth; + LADSPA_Data *drylevel; + LADSPA_Data *earlylevel; + LADSPA_Data *taillevel; + LADSPA_Data *input; + LADSPA_Data *outl; + LADSPA_Data *outr; + ty_gverb * verb; + LADSPA_Data run_adding_gain; +} Gverb; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return gverbDescriptor; + default: + return NULL; + } +} + +static void activateGverb(LADSPA_Handle instance) { + Gverb *plugin_data = (Gverb *)instance; + ty_gverb *verb = plugin_data->verb; +#line 54 "gverb_1216.xml" + gverb_flush(plugin_data->verb); + plugin_data->verb = verb; + +} + +static void cleanupGverb(LADSPA_Handle instance) { +#line 58 "gverb_1216.xml" + Gverb *plugin_data = (Gverb *)instance; + gverb_free(plugin_data->verb); + free(instance); +} + +static void connectPortGverb( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + Gverb *plugin; + + plugin = (Gverb *)instance; + switch (port) { + case GVERB_ROOMSIZE: + plugin->roomsize = data; + break; + case GVERB_REVTIME: + plugin->revtime = data; + break; + case GVERB_DAMPING: + plugin->damping = data; + break; + case GVERB_INPUTBANDWIDTH: + plugin->inputbandwidth = data; + break; + case GVERB_DRYLEVEL: + plugin->drylevel = data; + break; + case GVERB_EARLYLEVEL: + plugin->earlylevel = data; + break; + case GVERB_TAILLEVEL: + plugin->taillevel = data; + break; + case GVERB_INPUT: + plugin->input = data; + break; + case GVERB_OUTL: + plugin->outl = data; + break; + case GVERB_OUTR: + plugin->outr = data; + break; + } +} + +static LADSPA_Handle instantiateGverb( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + Gverb *plugin_data = (Gverb *)malloc(sizeof(Gverb)); + ty_gverb *verb = NULL; + +#line 50 "gverb_1216.xml" + verb = gverb_new(s_rate, 300.0f, 50.0f, 7.0f, 0.5f, 15.0f, 0.5f, 0.5f, 0.5f); + + plugin_data->verb = verb; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runGverb(LADSPA_Handle instance, unsigned long sample_count) { + Gverb *plugin_data = (Gverb *)instance; + + /* Roomsize (m) (float value) */ + const LADSPA_Data roomsize = *(plugin_data->roomsize); + + /* Reverb time (s) (float value) */ + const LADSPA_Data revtime = *(plugin_data->revtime); + + /* Damping (float value) */ + const LADSPA_Data damping = *(plugin_data->damping); + + /* Input bandwidth (float value) */ + const LADSPA_Data inputbandwidth = *(plugin_data->inputbandwidth); + + /* Dry signal level (dB) (float value) */ + const LADSPA_Data drylevel = *(plugin_data->drylevel); + + /* Early reflection level (dB) (float value) */ + const LADSPA_Data earlylevel = *(plugin_data->earlylevel); + + /* Tail level (dB) (float value) */ + const LADSPA_Data taillevel = *(plugin_data->taillevel); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Left output (array of floats of length sample_count) */ + LADSPA_Data * const outl = plugin_data->outl; + + /* Right output (array of floats of length sample_count) */ + LADSPA_Data * const outr = plugin_data->outr; + ty_gverb * verb = plugin_data->verb; + +#line 62 "gverb_1216.xml" + unsigned long pos; + float l, r; + float dryc = DB_CO(drylevel); + + gverb_set_roomsize(verb, roomsize); + gverb_set_revtime(verb, revtime); + gverb_set_damping(verb, damping); + gverb_set_inputbandwidth(verb, inputbandwidth); + gverb_set_earlylevel(verb, DB_CO(earlylevel)); + gverb_set_taillevel(verb, DB_CO(taillevel)); + + for (pos = 0; pos < sample_count; pos++) { + gverb_do(verb, input[pos], &l, &r); + buffer_write(outl[pos], l + input[pos] * dryc); + buffer_write(outr[pos], r + input[pos] * dryc); + } +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainGverb(LADSPA_Handle instance, LADSPA_Data gain) { + ((Gverb *)instance)->run_adding_gain = gain; +} + +static void runAddingGverb(LADSPA_Handle instance, unsigned long sample_count) { + Gverb *plugin_data = (Gverb *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Roomsize (m) (float value) */ + const LADSPA_Data roomsize = *(plugin_data->roomsize); + + /* Reverb time (s) (float value) */ + const LADSPA_Data revtime = *(plugin_data->revtime); + + /* Damping (float value) */ + const LADSPA_Data damping = *(plugin_data->damping); + + /* Input bandwidth (float value) */ + const LADSPA_Data inputbandwidth = *(plugin_data->inputbandwidth); + + /* Dry signal level (dB) (float value) */ + const LADSPA_Data drylevel = *(plugin_data->drylevel); + + /* Early reflection level (dB) (float value) */ + const LADSPA_Data earlylevel = *(plugin_data->earlylevel); + + /* Tail level (dB) (float value) */ + const LADSPA_Data taillevel = *(plugin_data->taillevel); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Left output (array of floats of length sample_count) */ + LADSPA_Data * const outl = plugin_data->outl; + + /* Right output (array of floats of length sample_count) */ + LADSPA_Data * const outr = plugin_data->outr; + ty_gverb * verb = plugin_data->verb; + +#line 62 "gverb_1216.xml" + unsigned long pos; + float l, r; + float dryc = DB_CO(drylevel); + + gverb_set_roomsize(verb, roomsize); + gverb_set_revtime(verb, revtime); + gverb_set_damping(verb, damping); + gverb_set_inputbandwidth(verb, inputbandwidth); + gverb_set_earlylevel(verb, DB_CO(earlylevel)); + gverb_set_taillevel(verb, DB_CO(taillevel)); + + for (pos = 0; pos < sample_count; pos++) { + gverb_do(verb, input[pos], &l, &r); + buffer_write(outl[pos], l + input[pos] * dryc); + buffer_write(outr[pos], r + input[pos] * dryc); + } +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + gverbDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (gverbDescriptor) { + gverbDescriptor->UniqueID = 1216; + gverbDescriptor->Label = "gverb"; + gverbDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + gverbDescriptor->Name = + D_("GVerb"); + gverbDescriptor->Maker = + "Juhana Sadeharju , LADSPAification by Steve Harris "; + gverbDescriptor->Copyright = + "GPL"; + gverbDescriptor->PortCount = 10; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(10, + sizeof(LADSPA_PortDescriptor)); + gverbDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(10, + sizeof(LADSPA_PortRangeHint)); + gverbDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(10, sizeof(char*)); + gverbDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Roomsize (m) */ + port_descriptors[GVERB_ROOMSIZE] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[GVERB_ROOMSIZE] = + D_("Roomsize (m)"); + port_range_hints[GVERB_ROOMSIZE].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_LOW; + port_range_hints[GVERB_ROOMSIZE].LowerBound = 1; + port_range_hints[GVERB_ROOMSIZE].UpperBound = 300; + + /* Parameters for Reverb time (s) */ + port_descriptors[GVERB_REVTIME] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[GVERB_REVTIME] = + D_("Reverb time (s)"); + port_range_hints[GVERB_REVTIME].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_LOW; + port_range_hints[GVERB_REVTIME].LowerBound = 0.1; + port_range_hints[GVERB_REVTIME].UpperBound = 30; + + /* Parameters for Damping */ + port_descriptors[GVERB_DAMPING] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[GVERB_DAMPING] = + D_("Damping"); + port_range_hints[GVERB_DAMPING].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MIDDLE; + port_range_hints[GVERB_DAMPING].LowerBound = 0; + port_range_hints[GVERB_DAMPING].UpperBound = 1; + + /* Parameters for Input bandwidth */ + port_descriptors[GVERB_INPUTBANDWIDTH] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[GVERB_INPUTBANDWIDTH] = + D_("Input bandwidth"); + port_range_hints[GVERB_INPUTBANDWIDTH].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_HIGH; + port_range_hints[GVERB_INPUTBANDWIDTH].LowerBound = 0; + port_range_hints[GVERB_INPUTBANDWIDTH].UpperBound = 1; + + /* Parameters for Dry signal level (dB) */ + port_descriptors[GVERB_DRYLEVEL] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[GVERB_DRYLEVEL] = + D_("Dry signal level (dB)"); + port_range_hints[GVERB_DRYLEVEL].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MINIMUM; + port_range_hints[GVERB_DRYLEVEL].LowerBound = -70; + port_range_hints[GVERB_DRYLEVEL].UpperBound = 0; + + /* Parameters for Early reflection level (dB) */ + port_descriptors[GVERB_EARLYLEVEL] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[GVERB_EARLYLEVEL] = + D_("Early reflection level (dB)"); + port_range_hints[GVERB_EARLYLEVEL].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[GVERB_EARLYLEVEL].LowerBound = -70; + port_range_hints[GVERB_EARLYLEVEL].UpperBound = 0; + + /* Parameters for Tail level (dB) */ + port_descriptors[GVERB_TAILLEVEL] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[GVERB_TAILLEVEL] = + D_("Tail level (dB)"); + port_range_hints[GVERB_TAILLEVEL].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_HIGH; + port_range_hints[GVERB_TAILLEVEL].LowerBound = -70; + port_range_hints[GVERB_TAILLEVEL].UpperBound = 0; + + /* Parameters for Input */ + port_descriptors[GVERB_INPUT] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[GVERB_INPUT] = + D_("Input"); + port_range_hints[GVERB_INPUT].HintDescriptor = 0; + + /* Parameters for Left output */ + port_descriptors[GVERB_OUTL] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[GVERB_OUTL] = + D_("Left output"); + port_range_hints[GVERB_OUTL].HintDescriptor = 0; + + /* Parameters for Right output */ + port_descriptors[GVERB_OUTR] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[GVERB_OUTR] = + D_("Right output"); + port_range_hints[GVERB_OUTR].HintDescriptor = 0; + + gverbDescriptor->activate = activateGverb; + gverbDescriptor->cleanup = cleanupGverb; + gverbDescriptor->connect_port = connectPortGverb; + gverbDescriptor->deactivate = NULL; + gverbDescriptor->instantiate = instantiateGverb; + gverbDescriptor->run = runGverb; + gverbDescriptor->run_adding = runAddingGverb; + gverbDescriptor->set_run_adding_gain = setRunAddingGainGverb; + } +} + +void _fini() { + if (gverbDescriptor) { + free((LADSPA_PortDescriptor *)gverbDescriptor->PortDescriptors); + free((char **)gverbDescriptor->PortNames); + free((LADSPA_PortRangeHint *)gverbDescriptor->PortRangeHints); + free(gverbDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/hard_limiter_1413.c b/plugins/ladspa_effect/swh/hard_limiter_1413.c new file mode 100644 index 000000000..ba958b442 --- /dev/null +++ b/plugins/ladspa_effect/swh/hard_limiter_1413.c @@ -0,0 +1,297 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + +#line 10 "hard_limiter_1413.xml" + +#include +#include "ladspa-util.h" + +#define HARDLIMITER_LIMIT_DB 0 +#define HARDLIMITER_WET_GAIN 1 +#define HARDLIMITER_RES_GAIN 2 +#define HARDLIMITER_INPUT 3 +#define HARDLIMITER_OUTPUT 4 + +static LADSPA_Descriptor *hardLimiterDescriptor = NULL; + +typedef struct { + LADSPA_Data *limit_db; + LADSPA_Data *wet_gain; + LADSPA_Data *res_gain; + LADSPA_Data *input; + LADSPA_Data *output; + LADSPA_Data run_adding_gain; +} HardLimiter; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return hardLimiterDescriptor; + default: + return NULL; + } +} + +static void cleanupHardLimiter(LADSPA_Handle instance) { + free(instance); +} + +static void connectPortHardLimiter( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + HardLimiter *plugin; + + plugin = (HardLimiter *)instance; + switch (port) { + case HARDLIMITER_LIMIT_DB: + plugin->limit_db = data; + break; + case HARDLIMITER_WET_GAIN: + plugin->wet_gain = data; + break; + case HARDLIMITER_RES_GAIN: + plugin->res_gain = data; + break; + case HARDLIMITER_INPUT: + plugin->input = data; + break; + case HARDLIMITER_OUTPUT: + plugin->output = data; + break; + } +} + +static LADSPA_Handle instantiateHardLimiter( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + HardLimiter *plugin_data = (HardLimiter *)malloc(sizeof(HardLimiter)); + plugin_data->run_adding_gain = 1.0f; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runHardLimiter(LADSPA_Handle instance, unsigned long sample_count) { + HardLimiter *plugin_data = (HardLimiter *)instance; + + /* dB limit (float value) */ + const LADSPA_Data limit_db = *(plugin_data->limit_db); + + /* Wet level (float value) */ + const LADSPA_Data wet_gain = *(plugin_data->wet_gain); + + /* Residue level (float value) */ + const LADSPA_Data res_gain = *(plugin_data->res_gain); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + +#line 21 "hard_limiter_1413.xml" + unsigned long i; + for (i = 0; i < sample_count; i++) + { + float limit_g = pow(10, limit_db / 20); + float sign = input[i] < 0.0 ? -1.0 : 1.0; + float data = input[i] * sign; + float residue = data > limit_g ? data - limit_g : 0.0; + data -= residue; + buffer_write(output[i], + sign * (wet_gain * data + res_gain * residue)); + } +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainHardLimiter(LADSPA_Handle instance, LADSPA_Data gain) { + ((HardLimiter *)instance)->run_adding_gain = gain; +} + +static void runAddingHardLimiter(LADSPA_Handle instance, unsigned long sample_count) { + HardLimiter *plugin_data = (HardLimiter *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* dB limit (float value) */ + const LADSPA_Data limit_db = *(plugin_data->limit_db); + + /* Wet level (float value) */ + const LADSPA_Data wet_gain = *(plugin_data->wet_gain); + + /* Residue level (float value) */ + const LADSPA_Data res_gain = *(plugin_data->res_gain); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + +#line 21 "hard_limiter_1413.xml" + unsigned long i; + for (i = 0; i < sample_count; i++) + { + float limit_g = pow(10, limit_db / 20); + float sign = input[i] < 0.0 ? -1.0 : 1.0; + float data = input[i] * sign; + float residue = data > limit_g ? data - limit_g : 0.0; + data -= residue; + buffer_write(output[i], + sign * (wet_gain * data + res_gain * residue)); + } +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + hardLimiterDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (hardLimiterDescriptor) { + hardLimiterDescriptor->UniqueID = 1413; + hardLimiterDescriptor->Label = "hardLimiter"; + hardLimiterDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + hardLimiterDescriptor->Name = + D_("Hard Limiter"); + hardLimiterDescriptor->Maker = + "Marcus Andersson"; + hardLimiterDescriptor->Copyright = + "GPL"; + hardLimiterDescriptor->PortCount = 5; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(5, + sizeof(LADSPA_PortDescriptor)); + hardLimiterDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(5, + sizeof(LADSPA_PortRangeHint)); + hardLimiterDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(5, sizeof(char*)); + hardLimiterDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for dB limit */ + port_descriptors[HARDLIMITER_LIMIT_DB] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[HARDLIMITER_LIMIT_DB] = + D_("dB limit"); + port_range_hints[HARDLIMITER_LIMIT_DB].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[HARDLIMITER_LIMIT_DB].LowerBound = -50.0; + port_range_hints[HARDLIMITER_LIMIT_DB].UpperBound = 0.0; + + /* Parameters for Wet level */ + port_descriptors[HARDLIMITER_WET_GAIN] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[HARDLIMITER_WET_GAIN] = + D_("Wet level"); + port_range_hints[HARDLIMITER_WET_GAIN].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_1; + port_range_hints[HARDLIMITER_WET_GAIN].LowerBound = 0.0; + port_range_hints[HARDLIMITER_WET_GAIN].UpperBound = 1.0; + + /* Parameters for Residue level */ + port_descriptors[HARDLIMITER_RES_GAIN] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[HARDLIMITER_RES_GAIN] = + D_("Residue level"); + port_range_hints[HARDLIMITER_RES_GAIN].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[HARDLIMITER_RES_GAIN].LowerBound = 0.0; + port_range_hints[HARDLIMITER_RES_GAIN].UpperBound = 1.0; + + /* Parameters for Input */ + port_descriptors[HARDLIMITER_INPUT] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[HARDLIMITER_INPUT] = + D_("Input"); + port_range_hints[HARDLIMITER_INPUT].HintDescriptor = 0; + + /* Parameters for Output */ + port_descriptors[HARDLIMITER_OUTPUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[HARDLIMITER_OUTPUT] = + D_("Output"); + port_range_hints[HARDLIMITER_OUTPUT].HintDescriptor = 0; + + hardLimiterDescriptor->activate = NULL; + hardLimiterDescriptor->cleanup = cleanupHardLimiter; + hardLimiterDescriptor->connect_port = connectPortHardLimiter; + hardLimiterDescriptor->deactivate = NULL; + hardLimiterDescriptor->instantiate = instantiateHardLimiter; + hardLimiterDescriptor->run = runHardLimiter; + hardLimiterDescriptor->run_adding = runAddingHardLimiter; + hardLimiterDescriptor->set_run_adding_gain = setRunAddingGainHardLimiter; + } +} + +void _fini() { + if (hardLimiterDescriptor) { + free((LADSPA_PortDescriptor *)hardLimiterDescriptor->PortDescriptors); + free((char **)hardLimiterDescriptor->PortNames); + free((LADSPA_PortRangeHint *)hardLimiterDescriptor->PortRangeHints); + free(hardLimiterDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/harmonic_gen_1220.c b/plugins/ladspa_effect/swh/harmonic_gen_1220.c new file mode 100644 index 000000000..9509a5b55 --- /dev/null +++ b/plugins/ladspa_effect/swh/harmonic_gen_1220.c @@ -0,0 +1,553 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + +#line 10 "harmonic_gen_1220.xml" + +#define HARMONICS 11 + +/* Calculate Chebychev coefficents from partial magnitudes, adapted from + * example in Num. Rec. */ +void chebpc(float c[], float d[]) +{ + int k, j; + float sv, dd[HARMONICS]; + + for (j = 0; j < HARMONICS; j++) { + d[j] = dd[j] = 0.0; + } + + d[0] = c[HARMONICS - 1]; + + for (j = HARMONICS - 2; j >= 1; j--) { + for (k = HARMONICS - j; k >= 1; k--) { + sv = d[k]; + d[k] = 2.0 * d[k - 1] - dd[k]; + dd[k] = sv; + } + sv = d[0]; + d[0] = -dd[0] + c[j]; + dd[0] = sv; + } + + for (j = HARMONICS - 1; j >= 1; j--) { + d[j] = d[j - 1] - dd[j]; + } + d[0] = -dd[0] + 0.5 * c[0]; +} + +#define HARMONICGEN_MAG_1 0 +#define HARMONICGEN_MAG_2 1 +#define HARMONICGEN_MAG_3 2 +#define HARMONICGEN_MAG_4 3 +#define HARMONICGEN_MAG_5 4 +#define HARMONICGEN_MAG_6 5 +#define HARMONICGEN_MAG_7 6 +#define HARMONICGEN_MAG_8 7 +#define HARMONICGEN_MAG_9 8 +#define HARMONICGEN_MAG_10 9 +#define HARMONICGEN_INPUT 10 +#define HARMONICGEN_OUTPUT 11 + +static LADSPA_Descriptor *harmonicGenDescriptor = NULL; + +typedef struct { + LADSPA_Data *mag_1; + LADSPA_Data *mag_2; + LADSPA_Data *mag_3; + LADSPA_Data *mag_4; + LADSPA_Data *mag_5; + LADSPA_Data *mag_6; + LADSPA_Data *mag_7; + LADSPA_Data *mag_8; + LADSPA_Data *mag_9; + LADSPA_Data *mag_10; + LADSPA_Data *input; + LADSPA_Data *output; + float itm1; + float otm1; + LADSPA_Data run_adding_gain; +} HarmonicGen; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return harmonicGenDescriptor; + default: + return NULL; + } +} + +static void activateHarmonicGen(LADSPA_Handle instance) { + HarmonicGen *plugin_data = (HarmonicGen *)instance; + float itm1 = plugin_data->itm1; + float otm1 = plugin_data->otm1; +#line 56 "harmonic_gen_1220.xml" + itm1 = 0.0f; + otm1 = 0.0f; + plugin_data->itm1 = itm1; + plugin_data->otm1 = otm1; + +} + +static void cleanupHarmonicGen(LADSPA_Handle instance) { + free(instance); +} + +static void connectPortHarmonicGen( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + HarmonicGen *plugin; + + plugin = (HarmonicGen *)instance; + switch (port) { + case HARMONICGEN_MAG_1: + plugin->mag_1 = data; + break; + case HARMONICGEN_MAG_2: + plugin->mag_2 = data; + break; + case HARMONICGEN_MAG_3: + plugin->mag_3 = data; + break; + case HARMONICGEN_MAG_4: + plugin->mag_4 = data; + break; + case HARMONICGEN_MAG_5: + plugin->mag_5 = data; + break; + case HARMONICGEN_MAG_6: + plugin->mag_6 = data; + break; + case HARMONICGEN_MAG_7: + plugin->mag_7 = data; + break; + case HARMONICGEN_MAG_8: + plugin->mag_8 = data; + break; + case HARMONICGEN_MAG_9: + plugin->mag_9 = data; + break; + case HARMONICGEN_MAG_10: + plugin->mag_10 = data; + break; + case HARMONICGEN_INPUT: + plugin->input = data; + break; + case HARMONICGEN_OUTPUT: + plugin->output = data; + break; + } +} + +static LADSPA_Handle instantiateHarmonicGen( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + HarmonicGen *plugin_data = (HarmonicGen *)malloc(sizeof(HarmonicGen)); + plugin_data->run_adding_gain = 1.0f; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runHarmonicGen(LADSPA_Handle instance, unsigned long sample_count) { + HarmonicGen *plugin_data = (HarmonicGen *)instance; + + /* Fundamental magnitude (float value) */ + const LADSPA_Data mag_1 = *(plugin_data->mag_1); + + /* 2nd harmonic magnitude (float value) */ + const LADSPA_Data mag_2 = *(plugin_data->mag_2); + + /* 3rd harmonic magnitude (float value) */ + const LADSPA_Data mag_3 = *(plugin_data->mag_3); + + /* 4th harmonic magnitude (float value) */ + const LADSPA_Data mag_4 = *(plugin_data->mag_4); + + /* 5th harmonic magnitude (float value) */ + const LADSPA_Data mag_5 = *(plugin_data->mag_5); + + /* 6th harmonic magnitude (float value) */ + const LADSPA_Data mag_6 = *(plugin_data->mag_6); + + /* 7th harmonic magnitude (float value) */ + const LADSPA_Data mag_7 = *(plugin_data->mag_7); + + /* 8th harmonic magnitude (float value) */ + const LADSPA_Data mag_8 = *(plugin_data->mag_8); + + /* 9th harmonic magnitude (float value) */ + const LADSPA_Data mag_9 = *(plugin_data->mag_9); + + /* 10th harmonic magnitude (float value) */ + const LADSPA_Data mag_10 = *(plugin_data->mag_10); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + float itm1 = plugin_data->itm1; + float otm1 = plugin_data->otm1; + +#line 61 "harmonic_gen_1220.xml" + unsigned long pos, i; + float mag_fix; + float mag[HARMONICS] = {0.0f, mag_1, mag_2, mag_3, mag_4, mag_5, mag_6, + mag_7, mag_8, mag_9, mag_10}; + float p[HARMONICS]; + + // Normalise magnitudes + mag_fix = (fabs(mag_1) + fabs(mag_2) + fabs(mag_3) + fabs(mag_4) + + fabs(mag_5) + fabs(mag_6) + fabs(mag_7) + fabs(mag_8) + + fabs(mag_9) + fabs(mag_10)); + if (mag_fix < 1.0f) { + mag_fix = 1.0f; + } else { + mag_fix = 1.0f / mag_fix; + } + for (i=0; iitm1 = itm1; + plugin_data->otm1 = otm1; +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainHarmonicGen(LADSPA_Handle instance, LADSPA_Data gain) { + ((HarmonicGen *)instance)->run_adding_gain = gain; +} + +static void runAddingHarmonicGen(LADSPA_Handle instance, unsigned long sample_count) { + HarmonicGen *plugin_data = (HarmonicGen *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Fundamental magnitude (float value) */ + const LADSPA_Data mag_1 = *(plugin_data->mag_1); + + /* 2nd harmonic magnitude (float value) */ + const LADSPA_Data mag_2 = *(plugin_data->mag_2); + + /* 3rd harmonic magnitude (float value) */ + const LADSPA_Data mag_3 = *(plugin_data->mag_3); + + /* 4th harmonic magnitude (float value) */ + const LADSPA_Data mag_4 = *(plugin_data->mag_4); + + /* 5th harmonic magnitude (float value) */ + const LADSPA_Data mag_5 = *(plugin_data->mag_5); + + /* 6th harmonic magnitude (float value) */ + const LADSPA_Data mag_6 = *(plugin_data->mag_6); + + /* 7th harmonic magnitude (float value) */ + const LADSPA_Data mag_7 = *(plugin_data->mag_7); + + /* 8th harmonic magnitude (float value) */ + const LADSPA_Data mag_8 = *(plugin_data->mag_8); + + /* 9th harmonic magnitude (float value) */ + const LADSPA_Data mag_9 = *(plugin_data->mag_9); + + /* 10th harmonic magnitude (float value) */ + const LADSPA_Data mag_10 = *(plugin_data->mag_10); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + float itm1 = plugin_data->itm1; + float otm1 = plugin_data->otm1; + +#line 61 "harmonic_gen_1220.xml" + unsigned long pos, i; + float mag_fix; + float mag[HARMONICS] = {0.0f, mag_1, mag_2, mag_3, mag_4, mag_5, mag_6, + mag_7, mag_8, mag_9, mag_10}; + float p[HARMONICS]; + + // Normalise magnitudes + mag_fix = (fabs(mag_1) + fabs(mag_2) + fabs(mag_3) + fabs(mag_4) + + fabs(mag_5) + fabs(mag_6) + fabs(mag_7) + fabs(mag_8) + + fabs(mag_9) + fabs(mag_10)); + if (mag_fix < 1.0f) { + mag_fix = 1.0f; + } else { + mag_fix = 1.0f / mag_fix; + } + for (i=0; iitm1 = itm1; + plugin_data->otm1 = otm1; +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + harmonicGenDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (harmonicGenDescriptor) { + harmonicGenDescriptor->UniqueID = 1220; + harmonicGenDescriptor->Label = "harmonicGen"; + harmonicGenDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + harmonicGenDescriptor->Name = + D_("Harmonic generator"); + harmonicGenDescriptor->Maker = + "Steve Harris "; + harmonicGenDescriptor->Copyright = + "GPL"; + harmonicGenDescriptor->PortCount = 12; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(12, + sizeof(LADSPA_PortDescriptor)); + harmonicGenDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(12, + sizeof(LADSPA_PortRangeHint)); + harmonicGenDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(12, sizeof(char*)); + harmonicGenDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Fundamental magnitude */ + port_descriptors[HARMONICGEN_MAG_1] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[HARMONICGEN_MAG_1] = + D_("Fundamental magnitude"); + port_range_hints[HARMONICGEN_MAG_1].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_1; + port_range_hints[HARMONICGEN_MAG_1].LowerBound = -1; + port_range_hints[HARMONICGEN_MAG_1].UpperBound = +1; + + /* Parameters for 2nd harmonic magnitude */ + port_descriptors[HARMONICGEN_MAG_2] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[HARMONICGEN_MAG_2] = + D_("2nd harmonic magnitude"); + port_range_hints[HARMONICGEN_MAG_2].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[HARMONICGEN_MAG_2].LowerBound = -1; + port_range_hints[HARMONICGEN_MAG_2].UpperBound = +1; + + /* Parameters for 3rd harmonic magnitude */ + port_descriptors[HARMONICGEN_MAG_3] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[HARMONICGEN_MAG_3] = + D_("3rd harmonic magnitude"); + port_range_hints[HARMONICGEN_MAG_3].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[HARMONICGEN_MAG_3].LowerBound = -1; + port_range_hints[HARMONICGEN_MAG_3].UpperBound = +1; + + /* Parameters for 4th harmonic magnitude */ + port_descriptors[HARMONICGEN_MAG_4] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[HARMONICGEN_MAG_4] = + D_("4th harmonic magnitude"); + port_range_hints[HARMONICGEN_MAG_4].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[HARMONICGEN_MAG_4].LowerBound = -1; + port_range_hints[HARMONICGEN_MAG_4].UpperBound = +1; + + /* Parameters for 5th harmonic magnitude */ + port_descriptors[HARMONICGEN_MAG_5] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[HARMONICGEN_MAG_5] = + D_("5th harmonic magnitude"); + port_range_hints[HARMONICGEN_MAG_5].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[HARMONICGEN_MAG_5].LowerBound = -1; + port_range_hints[HARMONICGEN_MAG_5].UpperBound = +1; + + /* Parameters for 6th harmonic magnitude */ + port_descriptors[HARMONICGEN_MAG_6] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[HARMONICGEN_MAG_6] = + D_("6th harmonic magnitude"); + port_range_hints[HARMONICGEN_MAG_6].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[HARMONICGEN_MAG_6].LowerBound = -1; + port_range_hints[HARMONICGEN_MAG_6].UpperBound = +1; + + /* Parameters for 7th harmonic magnitude */ + port_descriptors[HARMONICGEN_MAG_7] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[HARMONICGEN_MAG_7] = + D_("7th harmonic magnitude"); + port_range_hints[HARMONICGEN_MAG_7].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[HARMONICGEN_MAG_7].LowerBound = -1; + port_range_hints[HARMONICGEN_MAG_7].UpperBound = +1; + + /* Parameters for 8th harmonic magnitude */ + port_descriptors[HARMONICGEN_MAG_8] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[HARMONICGEN_MAG_8] = + D_("8th harmonic magnitude"); + port_range_hints[HARMONICGEN_MAG_8].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[HARMONICGEN_MAG_8].LowerBound = -1; + port_range_hints[HARMONICGEN_MAG_8].UpperBound = +1; + + /* Parameters for 9th harmonic magnitude */ + port_descriptors[HARMONICGEN_MAG_9] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[HARMONICGEN_MAG_9] = + D_("9th harmonic magnitude"); + port_range_hints[HARMONICGEN_MAG_9].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[HARMONICGEN_MAG_9].LowerBound = -1; + port_range_hints[HARMONICGEN_MAG_9].UpperBound = +1; + + /* Parameters for 10th harmonic magnitude */ + port_descriptors[HARMONICGEN_MAG_10] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[HARMONICGEN_MAG_10] = + D_("10th harmonic magnitude"); + port_range_hints[HARMONICGEN_MAG_10].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[HARMONICGEN_MAG_10].LowerBound = -1; + port_range_hints[HARMONICGEN_MAG_10].UpperBound = +1; + + /* Parameters for Input */ + port_descriptors[HARMONICGEN_INPUT] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[HARMONICGEN_INPUT] = + D_("Input"); + port_range_hints[HARMONICGEN_INPUT].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE; + port_range_hints[HARMONICGEN_INPUT].LowerBound = -1; + port_range_hints[HARMONICGEN_INPUT].UpperBound = +1; + + /* Parameters for Output */ + port_descriptors[HARMONICGEN_OUTPUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[HARMONICGEN_OUTPUT] = + D_("Output"); + port_range_hints[HARMONICGEN_OUTPUT].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE; + port_range_hints[HARMONICGEN_OUTPUT].LowerBound = -1; + port_range_hints[HARMONICGEN_OUTPUT].UpperBound = +1; + + harmonicGenDescriptor->activate = activateHarmonicGen; + harmonicGenDescriptor->cleanup = cleanupHarmonicGen; + harmonicGenDescriptor->connect_port = connectPortHarmonicGen; + harmonicGenDescriptor->deactivate = NULL; + harmonicGenDescriptor->instantiate = instantiateHarmonicGen; + harmonicGenDescriptor->run = runHarmonicGen; + harmonicGenDescriptor->run_adding = runAddingHarmonicGen; + harmonicGenDescriptor->set_run_adding_gain = setRunAddingGainHarmonicGen; + } +} + +void _fini() { + if (harmonicGenDescriptor) { + free((LADSPA_PortDescriptor *)harmonicGenDescriptor->PortDescriptors); + free((char **)harmonicGenDescriptor->PortNames); + free((LADSPA_PortRangeHint *)harmonicGenDescriptor->PortRangeHints); + free(harmonicGenDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/highpass_iir_1890.c b/plugins/ladspa_effect/swh/highpass_iir_1890.c new file mode 100644 index 000000000..ac0929b3f --- /dev/null +++ b/plugins/ladspa_effect/swh/highpass_iir_1890.c @@ -0,0 +1,296 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + +#line 9 "highpass_iir_1890.xml" + +#include "config.h" +#include "util/iir.h" + +#define HIGHPASS_IIR_CUTOFF 0 +#define HIGHPASS_IIR_STAGES 1 +#define HIGHPASS_IIR_INPUT 2 +#define HIGHPASS_IIR_OUTPUT 3 + +static LADSPA_Descriptor *highpass_iirDescriptor = NULL; + +typedef struct { + LADSPA_Data *cutoff; + LADSPA_Data *stages; + LADSPA_Data *input; + LADSPA_Data *output; + iir_stage_t* gt; + iirf_t* iirf; + long sample_rate; + LADSPA_Data run_adding_gain; +} Highpass_iir; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return highpass_iirDescriptor; + default: + return NULL; + } +} + +static void activateHighpass_iir(LADSPA_Handle instance) { + Highpass_iir *plugin_data = (Highpass_iir *)instance; + iir_stage_t*gt = plugin_data->gt; + iirf_t*iirf = plugin_data->iirf; + long sample_rate = plugin_data->sample_rate; +#line 32 "highpass_iir_1890.xml" + + gt = init_iir_stage(IIR_STAGE_HIGHPASS,10,3,2); + iirf = init_iirf_t(gt); + chebyshev(iirf, gt, 2*CLAMP((int)(*(plugin_data->stages)),1,10), IIR_STAGE_HIGHPASS, *(plugin_data->cutoff)/(float)sample_rate, 0.5f); + plugin_data->gt = gt; + plugin_data->iirf = iirf; + plugin_data->sample_rate = sample_rate; + +} + +static void cleanupHighpass_iir(LADSPA_Handle instance) { +#line 38 "highpass_iir_1890.xml" + Highpass_iir *plugin_data = (Highpass_iir *)instance; + free_iirf_t(plugin_data->iirf, plugin_data->gt); + free_iir_stage(plugin_data->gt); + free(instance); +} + +static void connectPortHighpass_iir( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + Highpass_iir *plugin; + + plugin = (Highpass_iir *)instance; + switch (port) { + case HIGHPASS_IIR_CUTOFF: + plugin->cutoff = data; + break; + case HIGHPASS_IIR_STAGES: + plugin->stages = data; + break; + case HIGHPASS_IIR_INPUT: + plugin->input = data; + break; + case HIGHPASS_IIR_OUTPUT: + plugin->output = data; + break; + } +} + +static LADSPA_Handle instantiateHighpass_iir( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + Highpass_iir *plugin_data = (Highpass_iir *)malloc(sizeof(Highpass_iir)); + iir_stage_t*gt = NULL; + iirf_t*iirf = NULL; + long sample_rate; + +#line 24 "highpass_iir_1890.xml" + sample_rate = s_rate; + + plugin_data->gt = gt; + plugin_data->iirf = iirf; + plugin_data->sample_rate = sample_rate; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runHighpass_iir(LADSPA_Handle instance, unsigned long sample_count) { + Highpass_iir *plugin_data = (Highpass_iir *)instance; + + /* Cutoff Frequency (float value) */ + const LADSPA_Data cutoff = *(plugin_data->cutoff); + + /* Stages(2 poles per stage) (float value) */ + const LADSPA_Data stages = *(plugin_data->stages); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + iir_stage_t* gt = plugin_data->gt; + iirf_t* iirf = plugin_data->iirf; + long sample_rate = plugin_data->sample_rate; + +#line 27 "highpass_iir_1890.xml" + chebyshev(iirf, gt, 2*CLAMP((int)stages,1,10), IIR_STAGE_HIGHPASS, cutoff/(float)sample_rate, 0.5f); + iir_process_buffer_ns_5(iirf, gt, input, output, sample_count,RUN_ADDING); +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainHighpass_iir(LADSPA_Handle instance, LADSPA_Data gain) { + ((Highpass_iir *)instance)->run_adding_gain = gain; +} + +static void runAddingHighpass_iir(LADSPA_Handle instance, unsigned long sample_count) { + Highpass_iir *plugin_data = (Highpass_iir *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Cutoff Frequency (float value) */ + const LADSPA_Data cutoff = *(plugin_data->cutoff); + + /* Stages(2 poles per stage) (float value) */ + const LADSPA_Data stages = *(plugin_data->stages); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + iir_stage_t* gt = plugin_data->gt; + iirf_t* iirf = plugin_data->iirf; + long sample_rate = plugin_data->sample_rate; + +#line 27 "highpass_iir_1890.xml" + chebyshev(iirf, gt, 2*CLAMP((int)stages,1,10), IIR_STAGE_HIGHPASS, cutoff/(float)sample_rate, 0.5f); + iir_process_buffer_ns_5(iirf, gt, input, output, sample_count,RUN_ADDING); +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + highpass_iirDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (highpass_iirDescriptor) { + highpass_iirDescriptor->UniqueID = 1890; + highpass_iirDescriptor->Label = "highpass_iir"; + highpass_iirDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + highpass_iirDescriptor->Name = + D_("Glame Highpass Filter"); + highpass_iirDescriptor->Maker = + "Alexander Ehlert "; + highpass_iirDescriptor->Copyright = + "GPL"; + highpass_iirDescriptor->PortCount = 4; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(4, + sizeof(LADSPA_PortDescriptor)); + highpass_iirDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(4, + sizeof(LADSPA_PortRangeHint)); + highpass_iirDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(4, sizeof(char*)); + highpass_iirDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Cutoff Frequency */ + port_descriptors[HIGHPASS_IIR_CUTOFF] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[HIGHPASS_IIR_CUTOFF] = + D_("Cutoff Frequency"); + port_range_hints[HIGHPASS_IIR_CUTOFF].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_LOW | LADSPA_HINT_SAMPLE_RATE | LADSPA_HINT_LOGARITHMIC; + port_range_hints[HIGHPASS_IIR_CUTOFF].LowerBound = 0.0001; + port_range_hints[HIGHPASS_IIR_CUTOFF].UpperBound = 0.45; + + /* Parameters for Stages(2 poles per stage) */ + port_descriptors[HIGHPASS_IIR_STAGES] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[HIGHPASS_IIR_STAGES] = + D_("Stages(2 poles per stage)"); + port_range_hints[HIGHPASS_IIR_STAGES].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_1 | LADSPA_HINT_INTEGER; + port_range_hints[HIGHPASS_IIR_STAGES].LowerBound = 1.0; + port_range_hints[HIGHPASS_IIR_STAGES].UpperBound = 10.0; + + /* Parameters for Input */ + port_descriptors[HIGHPASS_IIR_INPUT] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[HIGHPASS_IIR_INPUT] = + D_("Input"); + port_range_hints[HIGHPASS_IIR_INPUT].HintDescriptor = 0; + + /* Parameters for Output */ + port_descriptors[HIGHPASS_IIR_OUTPUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[HIGHPASS_IIR_OUTPUT] = + D_("Output"); + port_range_hints[HIGHPASS_IIR_OUTPUT].HintDescriptor = 0; + + highpass_iirDescriptor->activate = activateHighpass_iir; + highpass_iirDescriptor->cleanup = cleanupHighpass_iir; + highpass_iirDescriptor->connect_port = connectPortHighpass_iir; + highpass_iirDescriptor->deactivate = NULL; + highpass_iirDescriptor->instantiate = instantiateHighpass_iir; + highpass_iirDescriptor->run = runHighpass_iir; + highpass_iirDescriptor->run_adding = runAddingHighpass_iir; + highpass_iirDescriptor->set_run_adding_gain = setRunAddingGainHighpass_iir; + } +} + +void _fini() { + if (highpass_iirDescriptor) { + free((LADSPA_PortDescriptor *)highpass_iirDescriptor->PortDescriptors); + free((char **)highpass_iirDescriptor->PortNames); + free((LADSPA_PortRangeHint *)highpass_iirDescriptor->PortRangeHints); + free(highpass_iirDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/hilbert_1440.c b/plugins/ladspa_effect/swh/hilbert_1440.c new file mode 100644 index 000000000..0009d7948 --- /dev/null +++ b/plugins/ladspa_effect/swh/hilbert_1440.c @@ -0,0 +1,327 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + +#line 10 "hilbert_1440.xml" + +#include "ladspa-util.h" + +#define D_SIZE 256 +#define NZEROS 200 + +/* The non-zero taps of the Hilbert transformer */ +static float xcoeffs[] = { + +0.0008103736f, +0.0008457886f, +0.0009017196f, +0.0009793364f, + +0.0010798341f, +0.0012044365f, +0.0013544008f, +0.0015310235f, + +0.0017356466f, +0.0019696659f, +0.0022345404f, +0.0025318040f, + +0.0028630784f, +0.0032300896f, +0.0036346867f, +0.0040788644f, + +0.0045647903f, +0.0050948365f, +0.0056716186f, +0.0062980419f, + +0.0069773575f, +0.0077132300f, +0.0085098208f, +0.0093718901f, + +0.0103049226f, +0.0113152847f, +0.0124104218f, +0.0135991079f, + +0.0148917649f, +0.0163008758f, +0.0178415242f, +0.0195321089f, + +0.0213953037f, +0.0234593652f, +0.0257599469f, +0.0283426636f, + +0.0312667947f, +0.0346107648f, +0.0384804823f, +0.0430224431f, + +0.0484451086f, +0.0550553725f, +0.0633242001f, +0.0740128560f, + +0.0884368322f, +0.1090816773f, +0.1412745301f, +0.1988673273f, + +0.3326528346f, +0.9997730178f, -0.9997730178f, -0.3326528346f, + -0.1988673273f, -0.1412745301f, -0.1090816773f, -0.0884368322f, + -0.0740128560f, -0.0633242001f, -0.0550553725f, -0.0484451086f, + -0.0430224431f, -0.0384804823f, -0.0346107648f, -0.0312667947f, + -0.0283426636f, -0.0257599469f, -0.0234593652f, -0.0213953037f, + -0.0195321089f, -0.0178415242f, -0.0163008758f, -0.0148917649f, + -0.0135991079f, -0.0124104218f, -0.0113152847f, -0.0103049226f, + -0.0093718901f, -0.0085098208f, -0.0077132300f, -0.0069773575f, + -0.0062980419f, -0.0056716186f, -0.0050948365f, -0.0045647903f, + -0.0040788644f, -0.0036346867f, -0.0032300896f, -0.0028630784f, + -0.0025318040f, -0.0022345404f, -0.0019696659f, -0.0017356466f, + -0.0015310235f, -0.0013544008f, -0.0012044365f, -0.0010798341f, + -0.0009793364f, -0.0009017196f, -0.0008457886f, -0.0008103736f, +}; + +#define HILBERT_INPUT 0 +#define HILBERT_OUTPUT0 1 +#define HILBERT_OUTPUT90 2 +#define HILBERT_LATENCY 3 + +static LADSPA_Descriptor *hilbertDescriptor = NULL; + +typedef struct { + LADSPA_Data *input; + LADSPA_Data *output0; + LADSPA_Data *output90; + LADSPA_Data *latency; + LADSPA_Data *delay; + unsigned int dptr; + LADSPA_Data run_adding_gain; +} Hilbert; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return hilbertDescriptor; + default: + return NULL; + } +} + +static void cleanupHilbert(LADSPA_Handle instance) { +#line 59 "hilbert_1440.xml" + Hilbert *plugin_data = (Hilbert *)instance; + free(plugin_data->delay); + free(instance); +} + +static void connectPortHilbert( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + Hilbert *plugin; + + plugin = (Hilbert *)instance; + switch (port) { + case HILBERT_INPUT: + plugin->input = data; + break; + case HILBERT_OUTPUT0: + plugin->output0 = data; + break; + case HILBERT_OUTPUT90: + plugin->output90 = data; + break; + case HILBERT_LATENCY: + plugin->latency = data; + break; + } +} + +static LADSPA_Handle instantiateHilbert( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + Hilbert *plugin_data = (Hilbert *)malloc(sizeof(Hilbert)); + LADSPA_Data *delay = NULL; + unsigned int dptr; + +#line 53 "hilbert_1440.xml" + delay = calloc(D_SIZE, sizeof(LADSPA_Data)); + + dptr = 0; + + plugin_data->delay = delay; + plugin_data->dptr = dptr; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runHilbert(LADSPA_Handle instance, unsigned long sample_count) { + Hilbert *plugin_data = (Hilbert *)instance; + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* 0deg output (array of floats of length sample_count) */ + LADSPA_Data * const output0 = plugin_data->output0; + + /* 90deg output (array of floats of length sample_count) */ + LADSPA_Data * const output90 = plugin_data->output90; + LADSPA_Data * delay = plugin_data->delay; + unsigned int dptr = plugin_data->dptr; + +#line 63 "hilbert_1440.xml" + unsigned long pos; + unsigned int i; + float hilb; + + for (pos = 0; pos < sample_count; pos++) { + delay[dptr] = input[pos]; + hilb = 0.0f; + for (i = 0; i < NZEROS/2; i++) { + hilb += (xcoeffs[i] * delay[(dptr - i*2) & (D_SIZE - 1)]); + } + buffer_write(output0[pos], delay[(dptr - 99) & (D_SIZE - 1)]); + buffer_write(output90[pos], hilb); + dptr = (dptr + 1) & (D_SIZE - 1); + } + + plugin_data->dptr = dptr; + + *(plugin_data->latency) = 99; +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainHilbert(LADSPA_Handle instance, LADSPA_Data gain) { + ((Hilbert *)instance)->run_adding_gain = gain; +} + +static void runAddingHilbert(LADSPA_Handle instance, unsigned long sample_count) { + Hilbert *plugin_data = (Hilbert *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* 0deg output (array of floats of length sample_count) */ + LADSPA_Data * const output0 = plugin_data->output0; + + /* 90deg output (array of floats of length sample_count) */ + LADSPA_Data * const output90 = plugin_data->output90; + LADSPA_Data * delay = plugin_data->delay; + unsigned int dptr = plugin_data->dptr; + +#line 63 "hilbert_1440.xml" + unsigned long pos; + unsigned int i; + float hilb; + + for (pos = 0; pos < sample_count; pos++) { + delay[dptr] = input[pos]; + hilb = 0.0f; + for (i = 0; i < NZEROS/2; i++) { + hilb += (xcoeffs[i] * delay[(dptr - i*2) & (D_SIZE - 1)]); + } + buffer_write(output0[pos], delay[(dptr - 99) & (D_SIZE - 1)]); + buffer_write(output90[pos], hilb); + dptr = (dptr + 1) & (D_SIZE - 1); + } + + plugin_data->dptr = dptr; + + *(plugin_data->latency) = 99; +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + hilbertDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (hilbertDescriptor) { + hilbertDescriptor->UniqueID = 1440; + hilbertDescriptor->Label = "hilbert"; + hilbertDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + hilbertDescriptor->Name = + D_("Hilbert transformer"); + hilbertDescriptor->Maker = + "Steve Harris "; + hilbertDescriptor->Copyright = + "GPL"; + hilbertDescriptor->PortCount = 4; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(4, + sizeof(LADSPA_PortDescriptor)); + hilbertDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(4, + sizeof(LADSPA_PortRangeHint)); + hilbertDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(4, sizeof(char*)); + hilbertDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Input */ + port_descriptors[HILBERT_INPUT] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[HILBERT_INPUT] = + D_("Input"); + port_range_hints[HILBERT_INPUT].HintDescriptor = 0; + + /* Parameters for 0deg output */ + port_descriptors[HILBERT_OUTPUT0] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[HILBERT_OUTPUT0] = + D_("0deg output"); + port_range_hints[HILBERT_OUTPUT0].HintDescriptor = 0; + + /* Parameters for 90deg output */ + port_descriptors[HILBERT_OUTPUT90] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[HILBERT_OUTPUT90] = + D_("90deg output"); + port_range_hints[HILBERT_OUTPUT90].HintDescriptor = 0; + + /* Parameters for latency */ + port_descriptors[HILBERT_LATENCY] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_CONTROL; + port_names[HILBERT_LATENCY] = + D_("latency"); + port_range_hints[HILBERT_LATENCY].HintDescriptor = 0; + + hilbertDescriptor->activate = NULL; + hilbertDescriptor->cleanup = cleanupHilbert; + hilbertDescriptor->connect_port = connectPortHilbert; + hilbertDescriptor->deactivate = NULL; + hilbertDescriptor->instantiate = instantiateHilbert; + hilbertDescriptor->run = runHilbert; + hilbertDescriptor->run_adding = runAddingHilbert; + hilbertDescriptor->set_run_adding_gain = setRunAddingGainHilbert; + } +} + +void _fini() { + if (hilbertDescriptor) { + free((LADSPA_PortDescriptor *)hilbertDescriptor->PortDescriptors); + free((char **)hilbertDescriptor->PortNames); + free((LADSPA_PortRangeHint *)hilbertDescriptor->PortRangeHints); + free(hilbertDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/imp_1199.c b/plugins/ladspa_effect/swh/imp_1199.c new file mode 100644 index 000000000..599bedb81 --- /dev/null +++ b/plugins/ladspa_effect/swh/imp_1199.c @@ -0,0 +1,637 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + +#line 9 "imp_1199.xml" + +#include + +#include "config.h" + +#ifdef FFTW3 + +#include + +typedef fftwf_plan fft_plan; +typedef float fftw_real; +#define local_malloc(s) fftwf_malloc(s) +#define local_free(s) fftwf_free(s) + +#else + +#ifdef EXPLICIT_S +#include +#else +#include +#endif //EXPLICIT_S + +typedef rfftw_plan fft_plan; +#define local_malloc(s) malloc(s) +#define local_free(s) free(s) + +#endif //FFTW3 + +#include "ladspa-util.h" + +#define MAX_FFT_LENGTH 16384 +#define SEG_LENGTH 128 + +#define IMP_LENGTH(a) (sizeof(a) / sizeof(float)) + +#define MK_IMP(i) impulse2freq(c, i, IMP_LENGTH(i), impulse_freq[c]); c++ + +inline void impulse2freq(int id, float *imp, unsigned int length, fftw_real *out); + +#include "impulses/all.h" + +fft_plan plan_rc[IMPULSES], + plan_cr[IMPULSES]; + +static fftw_real *real_in, *real_out, *comp_in, *comp_out; + +unsigned int fft_length[IMPULSES]; + +inline void impulse2freq(int id, float *imp, unsigned int length, fftw_real *out) +{ + fftw_real impulse_time[MAX_FFT_LENGTH]; +#ifdef FFTW3 + fft_plan tmp_plan; +#endif + unsigned int i, fftl = 128; + + while (fftl < length+SEG_LENGTH) { + fftl *= 2; + } + + fft_length[id] = fftl; +#ifdef FFTW3 + plan_rc[id] = fftwf_plan_r2r_1d(fftl, real_in, comp_out, FFTW_R2HC, FFTW_MEASURE); + plan_cr[id] = fftwf_plan_r2r_1d(fftl, comp_in, real_out, FFTW_HC2R, FFTW_MEASURE); + tmp_plan = fftwf_plan_r2r_1d(fftl, impulse_time, out, FFTW_R2HC, FFTW_MEASURE); +#else + plan_rc[id] = rfftw_create_plan(fftl, FFTW_REAL_TO_COMPLEX, FFTW_ESTIMATE); + plan_cr[id] = rfftw_create_plan(fftl, FFTW_COMPLEX_TO_REAL, FFTW_ESTIMATE); +#endif + + for (i=0; iblock_freq; + fftw_real *block_time = plugin_data->block_time; + unsigned int count = plugin_data->count; + fftw_real **impulse_freq = plugin_data->impulse_freq; + unsigned long in_ptr = plugin_data->in_ptr; + fftw_real *op = plugin_data->op; + LADSPA_Data *opc = plugin_data->opc; + unsigned long out_ptr = plugin_data->out_ptr; + LADSPA_Data *overlap = plugin_data->overlap; +#line 161 "imp_1199.xml" + memset(block_time, 0, MAX_FFT_LENGTH * sizeof(fftw_real)); + memset(block_freq, 0, MAX_FFT_LENGTH * sizeof(fftw_real)); + memset(op, 0, MAX_FFT_LENGTH * sizeof(fftw_real)); + memset(overlap, 0, (MAX_FFT_LENGTH - SEG_LENGTH) * sizeof(float)); + memset(opc, 0, SEG_LENGTH * sizeof(LADSPA_Data)); + + in_ptr = 0; + out_ptr = 0; + count = 0; + plugin_data->block_freq = block_freq; + plugin_data->block_time = block_time; + plugin_data->count = count; + plugin_data->impulse_freq = impulse_freq; + plugin_data->in_ptr = in_ptr; + plugin_data->op = op; + plugin_data->opc = opc; + plugin_data->out_ptr = out_ptr; + plugin_data->overlap = overlap; + +} + +static void cleanupImp(LADSPA_Handle instance) { +#line 173 "imp_1199.xml" + Imp *plugin_data = (Imp *)instance; + local_free(plugin_data->block_time); + local_free(plugin_data->block_freq); + local_free(plugin_data->op); + local_free(plugin_data->overlap); + local_free(plugin_data->opc); + free(instance); +} + +static void connectPortImp( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + Imp *plugin; + + plugin = (Imp *)instance; + switch (port) { + case IMP_IMPULSE: + plugin->impulse = data; + break; + case IMP_HIGH_LAT: + plugin->high_lat = data; + break; + case IMP_GAIN: + plugin->gain = data; + break; + case IMP_INPUT: + plugin->input = data; + break; + case IMP_OUTPUT: + plugin->output = data; + break; + case IMP_LATENCY: + plugin->latency = data; + break; + } +} + +static LADSPA_Handle instantiateImp( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + Imp *plugin_data = (Imp *)malloc(sizeof(Imp)); + fftw_real *block_freq = NULL; + fftw_real *block_time = NULL; + unsigned int count; + fftw_real **impulse_freq = NULL; + unsigned long in_ptr; + fftw_real *op = NULL; + LADSPA_Data *opc = NULL; + unsigned long out_ptr; + LADSPA_Data *overlap = NULL; + +#line 135 "imp_1199.xml" + unsigned int i; + + impulse_freq = local_malloc(IMPULSES * sizeof(fftw_real *)); + for (i=0; iblock_freq = block_freq; + plugin_data->block_time = block_time; + plugin_data->count = count; + plugin_data->impulse_freq = impulse_freq; + plugin_data->in_ptr = in_ptr; + plugin_data->op = op; + plugin_data->opc = opc; + plugin_data->out_ptr = out_ptr; + plugin_data->overlap = overlap; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runImp(LADSPA_Handle instance, unsigned long sample_count) { + Imp *plugin_data = (Imp *)instance; + + /* Impulse ID (float value) */ + const LADSPA_Data impulse = *(plugin_data->impulse); + + /* High latency mode (float value) */ + const LADSPA_Data high_lat = *(plugin_data->high_lat); + + /* Gain (dB) (float value) */ + const LADSPA_Data gain = *(plugin_data->gain); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + fftw_real * block_freq = plugin_data->block_freq; + fftw_real * block_time = plugin_data->block_time; + unsigned int count = plugin_data->count; + fftw_real ** impulse_freq = plugin_data->impulse_freq; + unsigned long in_ptr = plugin_data->in_ptr; + fftw_real * op = plugin_data->op; + LADSPA_Data * opc = plugin_data->opc; + unsigned long out_ptr = plugin_data->out_ptr; + LADSPA_Data * overlap = plugin_data->overlap; + +#line 181 "imp_1199.xml" + unsigned long i, pos, ipos, limit; + unsigned int im; + unsigned int len; + fftw_real tmp; + fftw_real *imp_freq; + float coef; + + im = f_round(impulse) - 1; + if (im >= IMPULSES) { + im = 0; + } + + coef = pow(10.0f, gain * 0.05f) / (float)fft_length[im]; + + imp_freq = impulse_freq[im]; + + for (pos = 0; pos < sample_count; pos += SEG_LENGTH) { + limit = pos + SEG_LENGTH; + + for (ipos = pos; ipos < sample_count && iposcount = 1; + out_ptr = 0; + } + } + } + + for (ipos = pos; ipos < sample_count && iposin_ptr = in_ptr; + plugin_data->out_ptr = out_ptr; + + *(plugin_data->latency) = SEG_LENGTH; +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainImp(LADSPA_Handle instance, LADSPA_Data gain) { + ((Imp *)instance)->run_adding_gain = gain; +} + +static void runAddingImp(LADSPA_Handle instance, unsigned long sample_count) { + Imp *plugin_data = (Imp *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Impulse ID (float value) */ + const LADSPA_Data impulse = *(plugin_data->impulse); + + /* High latency mode (float value) */ + const LADSPA_Data high_lat = *(plugin_data->high_lat); + + /* Gain (dB) (float value) */ + const LADSPA_Data gain = *(plugin_data->gain); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + fftw_real * block_freq = plugin_data->block_freq; + fftw_real * block_time = plugin_data->block_time; + unsigned int count = plugin_data->count; + fftw_real ** impulse_freq = plugin_data->impulse_freq; + unsigned long in_ptr = plugin_data->in_ptr; + fftw_real * op = plugin_data->op; + LADSPA_Data * opc = plugin_data->opc; + unsigned long out_ptr = plugin_data->out_ptr; + LADSPA_Data * overlap = plugin_data->overlap; + +#line 181 "imp_1199.xml" + unsigned long i, pos, ipos, limit; + unsigned int im; + unsigned int len; + fftw_real tmp; + fftw_real *imp_freq; + float coef; + + im = f_round(impulse) - 1; + if (im >= IMPULSES) { + im = 0; + } + + coef = pow(10.0f, gain * 0.05f) / (float)fft_length[im]; + + imp_freq = impulse_freq[im]; + + for (pos = 0; pos < sample_count; pos += SEG_LENGTH) { + limit = pos + SEG_LENGTH; + + for (ipos = pos; ipos < sample_count && iposcount = 1; + out_ptr = 0; + } + } + } + + for (ipos = pos; ipos < sample_count && iposin_ptr = in_ptr; + plugin_data->out_ptr = out_ptr; + + *(plugin_data->latency) = SEG_LENGTH; +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + impDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (impDescriptor) { + impDescriptor->UniqueID = 1199; + impDescriptor->Label = "imp"; + impDescriptor->Properties = + 0; + impDescriptor->Name = + D_("Impulse convolver"); + impDescriptor->Maker = + "Steve Harris "; + impDescriptor->Copyright = + "GPL"; + impDescriptor->PortCount = 6; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(6, + sizeof(LADSPA_PortDescriptor)); + impDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(6, + sizeof(LADSPA_PortRangeHint)); + impDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(6, sizeof(char*)); + impDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Impulse ID */ + port_descriptors[IMP_IMPULSE] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[IMP_IMPULSE] = + D_("Impulse ID"); + port_range_hints[IMP_IMPULSE].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_INTEGER | LADSPA_HINT_DEFAULT_1; + port_range_hints[IMP_IMPULSE].LowerBound = 1; + port_range_hints[IMP_IMPULSE].UpperBound = IMPULSES; + + /* Parameters for High latency mode */ + port_descriptors[IMP_HIGH_LAT] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[IMP_HIGH_LAT] = + D_("High latency mode"); + port_range_hints[IMP_HIGH_LAT].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_INTEGER | LADSPA_HINT_DEFAULT_0; + port_range_hints[IMP_HIGH_LAT].LowerBound = 0; + port_range_hints[IMP_HIGH_LAT].UpperBound = 1; + + /* Parameters for Gain (dB) */ + port_descriptors[IMP_GAIN] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[IMP_GAIN] = + D_("Gain (dB)"); + port_range_hints[IMP_GAIN].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[IMP_GAIN].LowerBound = -90; + port_range_hints[IMP_GAIN].UpperBound = +24; + + /* Parameters for Input */ + port_descriptors[IMP_INPUT] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[IMP_INPUT] = + D_("Input"); + port_range_hints[IMP_INPUT].HintDescriptor = 0; + + /* Parameters for Output */ + port_descriptors[IMP_OUTPUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[IMP_OUTPUT] = + D_("Output"); + port_range_hints[IMP_OUTPUT].HintDescriptor = 0; + + /* Parameters for latency */ + port_descriptors[IMP_LATENCY] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_CONTROL; + port_names[IMP_LATENCY] = + D_("latency"); + port_range_hints[IMP_LATENCY].HintDescriptor = 0; + + impDescriptor->activate = activateImp; + impDescriptor->cleanup = cleanupImp; + impDescriptor->connect_port = connectPortImp; + impDescriptor->deactivate = NULL; + impDescriptor->instantiate = instantiateImp; + impDescriptor->run = runImp; + impDescriptor->run_adding = runAddingImp; + impDescriptor->set_run_adding_gain = setRunAddingGainImp; + } +} + +void _fini() { + if (impDescriptor) { + free((LADSPA_PortDescriptor *)impDescriptor->PortDescriptors); + free((char **)impDescriptor->PortNames); + free((LADSPA_PortRangeHint *)impDescriptor->PortRangeHints); + free(impDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/impulse_1885.c b/plugins/ladspa_effect/swh/impulse_1885.c new file mode 100644 index 000000000..398aea098 --- /dev/null +++ b/plugins/ladspa_effect/swh/impulse_1885.c @@ -0,0 +1,268 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + +#line 10 "impulse_1885.xml" + +#include "ladspa-util.h" + +#define LOG001 -6.9077552789f + +#define IMPULSE_FC_FREQUENCY 0 +#define IMPULSE_FC_OUT 1 + +static LADSPA_Descriptor *impulse_fcDescriptor = NULL; + +typedef struct { + LADSPA_Data *frequency; + LADSPA_Data *out; + float phase; + LADSPA_Data sample_rate; + LADSPA_Data run_adding_gain; +} Impulse_fc; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return impulse_fcDescriptor; + default: + return NULL; + } +} + +static void activateImpulse_fc(LADSPA_Handle instance) { + Impulse_fc *plugin_data = (Impulse_fc *)instance; + float phase = plugin_data->phase; + LADSPA_Data sample_rate = plugin_data->sample_rate; +#line 29 "impulse_1885.xml" + phase = 0.f; + plugin_data->phase = phase; + plugin_data->sample_rate = sample_rate; + +} + +static void cleanupImpulse_fc(LADSPA_Handle instance) { + free(instance); +} + +static void connectPortImpulse_fc( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + Impulse_fc *plugin; + + plugin = (Impulse_fc *)instance; + switch (port) { + case IMPULSE_FC_FREQUENCY: + plugin->frequency = data; + break; + case IMPULSE_FC_OUT: + plugin->out = data; + break; + } +} + +static LADSPA_Handle instantiateImpulse_fc( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + Impulse_fc *plugin_data = (Impulse_fc *)malloc(sizeof(Impulse_fc)); + float phase; + LADSPA_Data sample_rate; + +#line 24 "impulse_1885.xml" + sample_rate = s_rate; + phase = 0.f; + + plugin_data->phase = phase; + plugin_data->sample_rate = sample_rate; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runImpulse_fc(LADSPA_Handle instance, unsigned long sample_count) { + Impulse_fc *plugin_data = (Impulse_fc *)instance; + + /* Frequency (Hz) (float value) */ + const LADSPA_Data frequency = *(plugin_data->frequency); + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const out = plugin_data->out; + float phase = plugin_data->phase; + LADSPA_Data sample_rate = plugin_data->sample_rate; + +#line 33 "impulse_1885.xml" + int i; + float phase_step = frequency / sample_rate; + + for (i=0; i 1.f) { + phase -= 1.f; + buffer_write(out[i], 1.f); + } else { + buffer_write(out[i], 0.f); + } + phase += phase_step; + } + + plugin_data->phase = phase; +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainImpulse_fc(LADSPA_Handle instance, LADSPA_Data gain) { + ((Impulse_fc *)instance)->run_adding_gain = gain; +} + +static void runAddingImpulse_fc(LADSPA_Handle instance, unsigned long sample_count) { + Impulse_fc *plugin_data = (Impulse_fc *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Frequency (Hz) (float value) */ + const LADSPA_Data frequency = *(plugin_data->frequency); + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const out = plugin_data->out; + float phase = plugin_data->phase; + LADSPA_Data sample_rate = plugin_data->sample_rate; + +#line 33 "impulse_1885.xml" + int i; + float phase_step = frequency / sample_rate; + + for (i=0; i 1.f) { + phase -= 1.f; + buffer_write(out[i], 1.f); + } else { + buffer_write(out[i], 0.f); + } + phase += phase_step; + } + + plugin_data->phase = phase; +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + impulse_fcDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (impulse_fcDescriptor) { + impulse_fcDescriptor->UniqueID = 1885; + impulse_fcDescriptor->Label = "impulse_fc"; + impulse_fcDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + impulse_fcDescriptor->Name = + D_("Nonbandlimited single-sample impulses (Frequency: Control)"); + impulse_fcDescriptor->Maker = + "Andy Wingo "; + impulse_fcDescriptor->Copyright = + "GPL"; + impulse_fcDescriptor->PortCount = 2; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(2, + sizeof(LADSPA_PortDescriptor)); + impulse_fcDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(2, + sizeof(LADSPA_PortRangeHint)); + impulse_fcDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(2, sizeof(char*)); + impulse_fcDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Frequency (Hz) */ + port_descriptors[IMPULSE_FC_FREQUENCY] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[IMPULSE_FC_FREQUENCY] = + D_("Frequency (Hz)"); + port_range_hints[IMPULSE_FC_FREQUENCY].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW; + port_range_hints[IMPULSE_FC_FREQUENCY].LowerBound = 0; + + /* Parameters for Output */ + port_descriptors[IMPULSE_FC_OUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[IMPULSE_FC_OUT] = + D_("Output"); + port_range_hints[IMPULSE_FC_OUT].HintDescriptor = 0; + + impulse_fcDescriptor->activate = activateImpulse_fc; + impulse_fcDescriptor->cleanup = cleanupImpulse_fc; + impulse_fcDescriptor->connect_port = connectPortImpulse_fc; + impulse_fcDescriptor->deactivate = NULL; + impulse_fcDescriptor->instantiate = instantiateImpulse_fc; + impulse_fcDescriptor->run = runImpulse_fc; + impulse_fcDescriptor->run_adding = runAddingImpulse_fc; + impulse_fcDescriptor->set_run_adding_gain = setRunAddingGainImpulse_fc; + } +} + +void _fini() { + if (impulse_fcDescriptor) { + free((LADSPA_PortDescriptor *)impulse_fcDescriptor->PortDescriptors); + free((char **)impulse_fcDescriptor->PortNames); + free((LADSPA_PortRangeHint *)impulse_fcDescriptor->PortRangeHints); + free(impulse_fcDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/impulses/01-unit.h b/plugins/ladspa_effect/swh/impulses/01-unit.h new file mode 100644 index 000000000..653bbbfd6 --- /dev/null +++ b/plugins/ladspa_effect/swh/impulses/01-unit.h @@ -0,0 +1 @@ +float unit[] = { 1.0f }; diff --git a/plugins/ladspa_effect/swh/impulses/02-steves-flat.h b/plugins/ladspa_effect/swh/impulses/02-steves-flat.h new file mode 100644 index 000000000..3ac42c65e --- /dev/null +++ b/plugins/ladspa_effect/swh/impulses/02-steves-flat.h @@ -0,0 +1,452 @@ +float steves_flat[] = { + -0.0000747256300, +0.0004581413362, -0.0004988051100, +0.0080212860617, + +0.0409775662455, +0.0272593302189, -0.0347729749807, +0.0206228755550, + +0.0830415514680, +0.0981127192346, +0.1165879969154, +0.0534580725429, + -0.0129770915478, -0.0194366926723, +0.0335325785381, +0.0388072508561, + -0.0213017054305, -0.0292409720411, +0.0075425029238, +0.0147545640387, + -0.0226343413216, -0.0257136599758, -0.0429779903773, -0.0507456071427, + -0.0301750856554, -0.0044625067799, +0.0074273297400, -0.0128299178065, + -0.0208570418077, -0.0048472053918, +0.0133211840459, -0.0247062189553, + -0.0180474936312, +0.0028139734788, +0.0078072570979, +0.0109728907727, + +0.0216466772225, +0.0407098426493, +0.0143495984063, -0.0056788739734, + -0.0043740007291, -0.0220882416929, -0.0512888670834, -0.0431623827872, + -0.0180879555998, -0.0222443669420, -0.0285499617727, -0.0158642771161, + -0.0133201606034, -0.0127702266735, -0.0090371884921, -0.0166105820447, + -0.0185939680423, -0.0080760329637, +0.0117406879686, +0.0131132236554, + -0.0026151664027, -0.0020506304148, +0.0098572965115, +0.0150237291004, + +0.0066948773059, -0.0022852435224, -0.0017129380290, +0.0013233096022, + -0.0018295526796, -0.0109795215200, -0.0199344166820, -0.0208222303881, + -0.0166376527884, -0.0175138915175, -0.0247779607485, -0.0277080299492, + -0.0245018478174, -0.0221699872648, -0.0199550440689, -0.0164751994994, + -0.0121488969008, -0.0113359097267, -0.0116449457557, -0.0095046272878, + -0.0111194014401, -0.0032949332310, +0.0129679526493, +0.0263678263579, + +0.0308535119214, +0.0248421204281, +0.0204144394813, +0.0190867045768, + +0.0219311074160, +0.0156608429323, +0.0037536223253, -0.0030656247219, + -0.0042825540871, -0.0021690468972, -0.0038422869371, -0.0138509230290, + -0.0235538240496, -0.0229926610943, -0.0196150165079, -0.0135943131403, + -0.0107564689746, -0.0127025354015, -0.0145724203168, -0.0171933814148, + -0.0138159530484, -0.0098164597618, -0.0087455221354, -0.0064264473918, + -0.0074598348126, -0.0121645223990, -0.0126989461487, -0.0097513631294, + -0.0067988070496, -0.0041353226856, -0.0043423317074, -0.0043674564704, + -0.0042041094728, -0.0019608702878, +0.0039238018742, +0.0101425627557, + +0.0102753362455, -0.0001845221427, -0.0073682584377, -0.0037386166578, + -0.0014888908730, -0.0020602161681, -0.0015174030822, +0.0007402363543, + +0.0053005178150, +0.0095026236493, +0.0096782375272, +0.0012873738392, + -0.0065135408053, -0.0044955596094, -0.0018158443313, -0.0040755883096, + -0.0083392303543, -0.0100848320169, -0.0083145812745, -0.0083637785308, + -0.0106060663470, -0.0145516776119, -0.0176741826058, -0.0173162520290, + -0.0160623778742, -0.0133682911741, -0.0081434215284, -0.0041882245115, + -0.0008310055067, +0.0048951197424, +0.0074982066542, +0.0052300877557, + +0.0007194071608, -0.0022146981451, -0.0038053565623, -0.0023047321511, + +0.0034375951826, +0.0083622505756, +0.0096198581294, +0.0133878518767, + +0.0194724842890, +0.0199918879565, +0.0158011264643, +0.0082251094414, + +0.0032514297690, +0.0029124112346, +0.0047323781608, +0.0047874710145, + +0.0029745240314, +0.0026771350520, +0.0030138472406, +0.0034298400919, + +0.0052113486892, +0.0017789716155, -0.0037898607956, -0.0057119988767, + -0.0046561534051, -0.0026514913615, +0.0001813941596, +0.0039354200955, + +0.0059624969456, +0.0080446810641, +0.0094737078283, +0.0084286012842, + +0.0058381560351, +0.0058541130701, +0.0100478007400, +0.0152600575526, + +0.0183627856252, +0.0187877732285, +0.0182146316856, +0.0176063327727, + +0.0157871009940, +0.0123767495296, +0.0075541788029, +0.0102779164716, + +0.0156277036143, +0.0113348574559, +0.0059646591451, +0.0026247377412, + +0.0011803881862, +0.0007245676119, -0.0023045880036, -0.0055248676796, + -0.0073599555901, -0.0046368665816, -0.0018872113446, +0.0023064763253, + +0.0029218095961, +0.0000173408440, -0.0015071398404, +0.0007385642527, + +0.0051101721475, +0.0005332994063, -0.0027207250036, +0.0007673215115, + +0.0019155073337, +0.0005625467630, +0.0038801975091, +0.0080619786638, + +0.0101137622527, +0.0115505873507, +0.0122711332709, +0.0097186562515, + +0.0040092952600, +0.0020222767666, +0.0011850873676, -0.0003067729262, + +0.0031021370713, +0.0066621848428, +0.0034938556252, +0.0013637715695, + +0.0059936326252, +0.0090966634051, +0.0103580331862, +0.0138644439855, + +0.0122683368259, +0.0051846238984, +0.0018034765478, +0.0035777345683, + +0.0070538745683, +0.0106506364958, +0.0122065988102, +0.0037282525127, + -0.0097867799637, -0.0191162978863, -0.0160759997340, -0.0059400965538, + +0.0007624637690, +0.0021018313096, -0.0012120572080, -0.0009874334643, + +0.0035154632092, +0.0026084779976, -0.0023815911511, -0.0018048459407, + +0.0015878619710, +0.0115002657509, +0.0151442933688, +0.0055393400048, + -0.0045969235417, -0.0052492592612, +0.0039214666977, +0.0093624266058, + +0.0107736656711, +0.0118124874208, +0.0079349854547, +0.0072958103253, + +0.0103136648428, +0.0080157508295, +0.0028874306179, -0.0016525261632, + -0.0005321318174, -0.0001136019843, -0.0043761485139, -0.0086800795514, + -0.0102800930859, -0.0076825846493, -0.0080295744946, -0.0099791869287, + -0.0068291066784, +0.0014600182963, +0.0084357221294, +0.0083239508077, + +0.0105090556433, +0.0209676743712, +0.0155793135804, -0.0057499238634, + -0.0117800400073, -0.0010136537424, +0.0205021238960, +0.0214418880593, + +0.0047571281427, -0.0013221275998, -0.0028140167231, +0.0035838463857, + +0.0027972812950, -0.0005072953482, -0.0061055625079, -0.0190592302237, + -0.0219839515828, -0.0133021999299, -0.0048697787582, -0.0140393515453, + -0.0313880365732, -0.0322599220738, -0.0222278621487, -0.0185733694837, + -0.0202459320339, -0.0219478572588, -0.0174627050375, -0.0110820962842, + -0.0042020625901, +0.0016826095719, -0.0021050025357, -0.0088914418017, + -0.0064301231318, +0.0049224643640, +0.0134595071826, +0.0118207758549, + +0.0002952411935, -0.0065936863495, -0.0085117450798, -0.0083368951778, + -0.0089617853724, -0.0143826512358, -0.0198868194547, -0.0229201985671, + -0.0210879791753, -0.0166534224329, -0.0129672463313, -0.0137536816904, + -0.0146976693507, -0.0094222618851, -0.0008786171499, +0.0055761983059, + +0.0032591560302, -0.0042438795369, -0.0064698643664, -0.0012681158452, + +0.0030560101391, -0.0009312883398, -0.0098521937195, -0.0142323206820, + -0.0130993279178, -0.0097967404982, -0.0036743416602, -0.0035161983579, + -0.0096935603180, -0.0169815290653, -0.0206942569819, -0.0170324560810, + -0.0137159873386, -0.0152915824281, -0.0178534433942, -0.0172026788742, + -0.0112864530073, -0.0078368071632, -0.0092339486856, -0.0084639172164, + -0.0059688538138, -0.0063049894148, -0.0084049468174, -0.0051594558912, + -0.0027000255417, -0.0042830874293, -0.0049426881403, -0.0025534139722, + -0.0001873474172, -0.0033615578186, -0.0071660206711, -0.0086420104172, + -0.0086939608742, -0.0076917667920, -0.0092880757570, -0.0133662731209, + -0.0171444003785, -0.0175337981717, -0.0124645060181, -0.0072337119444, + -0.0054154171185, -0.0091645132382, -0.0130219644039, -0.0103368580411, + -0.0069447987896, -0.0041669772926, -0.0047664111874, -0.0075998588803, + -0.0075558941487, -0.0055831173458, -0.0036531376868, -0.0052074999734, + -0.0109020859323, -0.0157361883930, -0.0172222539903, -0.0132375501524, + -0.0073726981560, -0.0039935544438, -0.0017452701258, -0.0045152500435, + -0.0077802295985, -0.0073526761838, -0.0040718693253, -0.0033338384160, + -0.0062312295671, -0.0082092388936, -0.0062941063410, -0.0002929348464, + +0.0062345161112, +0.0112047939226, +0.0105847326421, +0.0061261034075, + +0.0013483334619, -0.0012494920967, -0.0021418608380, -0.0017150569855, + -0.0013053633422, -0.0042484057424, -0.0095094562007, -0.0152183559238, + -0.0173283747630, -0.0166015008053, -0.0156999643362, -0.0152454122527, + -0.0136559646687, -0.0100450619528, -0.0046197563736, -0.0007542329952, + +0.0005524420822, +0.0011462686711, +0.0022597439782, +0.0067100415357, + +0.0091015643918, +0.0071974014002, +0.0028650158114, -0.0008570528089, + -0.0032883889734, -0.0042249530810, -0.0054351796264, -0.0063627778114, + -0.0045259024813, -0.0001674119335, +0.0021612341487, -0.0010521841451, + -0.0036361139661, -0.0042102357062, -0.0033228832696, -0.0043576544982, + -0.0077593427473, -0.0134104973168, -0.0186017375466, -0.0169262632346, + -0.0093301521681, -0.0030828070036, -0.0003904933071, +0.0013699122177, + +0.0039354489250, +0.0071919814849, +0.0131733183990, +0.0198125118501, + +0.0211508847787, +0.0178021271826, +0.0087791515526, -0.0019948024123, + -0.0066499467920, +0.0002749885877, +0.0121399021499, +0.0178126931330, + +0.0139416201088, +0.0038776172842, +0.0020008133289, +0.0095989280339, + +0.0162674841596, +0.0141164411802, +0.0050923556203, -0.0037555250605, + -0.0062519434426, +0.0001227985417, +0.0053736578307, +0.0025464228597, + -0.0019400555103, +0.0007114070218, +0.0095546029359, +0.0180404160302, + +0.0205341676989, +0.0131460314365, +0.0017651335357, -0.0021776524534, + +0.0021499907086, +0.0080382809528, +0.0064767545768, -0.0005905400447, + -0.0056409922297, -0.0057271342757, -0.0010248971826, +0.0001965295586, + -0.0016733409420, -0.0041532112866, -0.0048168336892, -0.0004342274051, + +0.0046055146832, +0.0059345901511, +0.0035574098888, +0.0035169479202, + +0.0042726223821, +0.0035716804075, +0.0063788069202, +0.0102540601983, + +0.0099536153108, +0.0069103044933, +0.0051097541221, +0.0102746875865, + +0.0167526818247, +0.0172246468259, +0.0113766599879, +0.0052510322660, + +0.0074379389347, +0.0136055854099, +0.0139783198489, +0.0088761622563, + +0.0036880932527, +0.0014514559843, +0.0044967560266, +0.0082283815707, + +0.0044520849758, -0.0028727564873, -0.0044896784256, +0.0009698043277, + +0.0073500815441, +0.0074535356034, -0.0004922752660, -0.0079106102539, + -0.0085194136820, -0.0001654659541, +0.0077844819250, +0.0062742429311, + +0.0033696732757, +0.0047521694970, +0.0086698163096, +0.0097220581125, + +0.0086553439843, +0.0097692084861, +0.0108593176179, +0.0076238737146, + +0.0007481355913, -0.0043912118404, -0.0026930200145, +0.0024288280121, + +0.0053480285538, +0.0054991375006, +0.0035035711100, +0.0035630171935, + +0.0057042293712, +0.0101991259057, +0.0127147013797, +0.0076009976385, + +0.0010203565623, -0.0001680461790, +0.0049075307703, +0.0106729792285, + +0.0125028778597, +0.0112498685840, +0.0075985903894, +0.0056879119686, + +0.0070147531644, +0.0077355441330, +0.0051466124232, +0.0038549430133, + +0.0067380636457, +0.0126514786530, +0.0161628192684, +0.0139460886554, + +0.0092421650459, +0.0056117016288, +0.0070535286167, +0.0114364808537, + +0.0131186003265, +0.0097553271620, +0.0075059040859, +0.0059946560653, + +0.0036953726590, +0.0036144487231, +0.0059943245284, +0.0052993790556, + +0.0005088377170, -0.0016146876651, -0.0013390360024, -0.0022557511149, + -0.0036896932805, -0.0032728643773, -0.0017285635272, +0.0000136218597, + -0.0015652021161, -0.0027440191040, -0.0008943291354, +0.0010105690036, + +0.0016489369117, +0.0001165425768, +0.0000480584970, +0.0023770649456, + +0.0070233587195, +0.0107160646651, +0.0102371950387, +0.0077407045840, + +0.0053095269807, +0.0051501151874, +0.0069093963688, +0.0080905052890, + +0.0057846055502, +0.0027135609141, +0.0028974199819, +0.0049991071439, + +0.0057285613277, +0.0039797740230, +0.0024058510339, +0.0023427868694, + +0.0012131959674, -0.0003557972056, -0.0000877853168, +0.0006679323881, + +0.0009092627304, -0.0021226028428, -0.0055329398924, -0.0054007429891, + -0.0038617034921, -0.0017439439770, +0.0014234338730, +0.0027731223144, + +0.0019790471826, +0.0000038054716, -0.0009416092406, -0.0005184378851, + -0.0023182819371, -0.0036341824002, -0.0023393273495, -0.0012571462842, + -0.0015296123047, -0.0029763979371, -0.0035542386614, -0.0026193754849, + -0.0020068674885, -0.0022936184426, -0.0036060449722, -0.0044930658718, + -0.0035938789940, -0.0034391231378, -0.0044602580919, -0.0044104410060, + -0.0027260872588, -0.0023267577606, -0.0007445463386, +0.0014639246711, + +0.0014658562358, +0.0000063856977, +0.0005639449855, +0.0039736477896, + +0.0051974385369, +0.0026448029565, -0.0009916713761, -0.0021272587799, + -0.0021297669323, -0.0028823566554, -0.0053606269722, -0.0089441994800, + -0.0103258164075, -0.0078037543337, -0.0038114539661, -0.0041416939686, + -0.0077367549649, -0.0093767691983, -0.0049238914160, +0.0003043656771, + +0.0001129100798, -0.0036184848295, -0.0057568284885, -0.0027392046046, + +0.0005968824982, +0.0009122033216, -0.0021714685623, -0.0062496226820, + -0.0061561724002, -0.0004889166481, +0.0049314302866, +0.0043125510073, + -0.0003473790411, -0.0025395470629, -0.0013720167594, -0.0005259190967, + -0.0017093776070, -0.0045928297775, -0.0071139693120, -0.0087535366904, + -0.0096900431391, -0.0110237601306, -0.0129355340653, -0.0138453445526, + -0.0132649524329, -0.0104173783664, -0.0064308871088, -0.0045004317666, + -0.0052939591415, -0.0071689756784, -0.0067878807328, -0.0048131867787, + -0.0042411984099, -0.0051894528114, -0.0075691412261, -0.0084582810822, + -0.0058850325296, -0.0035841923386, -0.0038244704099, -0.0069623558525, + -0.0100728245998, -0.0098737292310, -0.0070272362648, -0.0038863525719, + -0.0040507806687, -0.0070519862467, -0.0083977827279, -0.0079154247533, + -0.0060595508936, -0.0045879864486, -0.0052839841923, -0.0070780912080, + -0.0070135135030, -0.0030664607727, +0.0015887556808, +0.0033065946965, + +0.0003601071911, -0.0035770426638, -0.0033092037509, +0.0005350435804, + +0.0020688793821, -0.0000537234607, -0.0025886578307, -0.0040806622721, + -0.0041601591560, -0.0025284045260, -0.0024950922334, -0.0062667617195, + -0.0087170820000, -0.0056856632805, -0.0010811576239, -0.0014468432914, + -0.0051189218501, -0.0076374379154, -0.0073133962189, -0.0039924733434, + -0.0012206483495, -0.0015230248017, -0.0029420910314, -0.0042203980459, + -0.0040218792624, -0.0029184509794, -0.0018115775901, -0.0014781231173, + -0.0015003793615, +0.0012770529383, +0.0043077365091, +0.0045503065115, + +0.0034476998646, +0.0026506408960, +0.0023141593422, +0.0018534954401, + -0.0000894430036, -0.0026278657231, -0.0045251096747, -0.0036073422926, + -0.0003843238307, +0.0026418335345, +0.0042104230967, +0.0029565201125, + +0.0021220550859, +0.0029113445490, +0.0050072226010, +0.0053226587412, + +0.0025999733446, -0.0009697466687, -0.0025950291137, -0.0010905704015, + +0.0019591549432, +0.0038280884909, +0.0019455330834, -0.0007281568634, + -0.0010698997703, +0.0009943813337, +0.0020717046566, +0.0005126287739, + -0.0013075543712, -0.0017547982201, +0.0009649898295, +0.0055851930568, + +0.0079210320580, +0.0063426261076, +0.0030034542660, +0.0025351650048, + +0.0044688204039, +0.0048071470339, +0.0022986491620, -0.0005660495272, + -0.0018098622455, -0.0006422886965, +0.0012945379287, +0.0020593224583, + +0.0016145435187, +0.0012885414268, +0.0024348965865, +0.0049348321475, + +0.0067883564172, +0.0056932165659, +0.0028044886288, +0.0007815055429, + +0.0011305566856, +0.0014630453761, +0.0011665501076, +0.0015016910967, + +0.0028065787545, +0.0054792596759, +0.0087719874631, +0.0120228406457, + +0.0135962735357, +0.0137770046203, +0.0119019448392, +0.0096385683664, + +0.0110317170266, +0.0123311415260, +0.0111144283809, +0.0085588377932, + +0.0070326705937, +0.0070931257037, +0.0065731598646, +0.0063079300060, + +0.0058184800157, +0.0048052875417, +0.0047790096058, +0.0061594012854, + +0.0086919572358, +0.0103546024958, +0.0107134700254, +0.0092432029008, + +0.0072884588464, +0.0054407869311, +0.0034426259021, +0.0034245066663, + +0.0029076688089, +0.0023881786542, +0.0028031192346, +0.0037894139407, + +0.0069190974389, +0.0097940449565, +0.0104857903724, +0.0087359652116, + +0.0063516929335, +0.0061562733035, +0.0055411274232, +0.0037322597896, + +0.0020101540326, +0.0019343328875, +0.0036089134909, +0.0060746718779, + +0.0091017950254, +0.0082511711584, +0.0021507114426, -0.0019754146868, + +0.0018929339661, +0.0086581836735, +0.0081004802370, +0.0025738972128, + -0.0008139241270, -0.0007002356554, +0.0033556622201, +0.0075122321245, + +0.0080494234897, +0.0048872493337, +0.0013343512358, +0.0040446976796, + +0.0101389735042, +0.0143418721451, +0.0120999302805, +0.0055178477364, + +0.0026746845586, +0.0037804768476, +0.0060732736554, +0.0071600962430, + +0.0063961333495, +0.0057587023942, +0.0069891527170, +0.0104688963833, + +0.0129541722285, +0.0110105130520, +0.0074211026046, +0.0051097685369, + +0.0042494147690, +0.0028874306179, +0.0008414417255, +0.0000516189202, + +0.0015505424002, +0.0032787311463, +0.0044769646904, +0.0063625327618, + +0.0081126894595, +0.0083391438658, +0.0069201352950, +0.0052288769238, + +0.0049338951935, +0.0061401288767, +0.0081555298476, +0.0084563639323, + +0.0053476105296, +0.0018247093519, +0.0021899337497, +0.0060935118464, + +0.0099533414317, +0.0101412798501, +0.0063866629129, +0.0023150818815, + +0.0010860874401, +0.0030231735296, +0.0056132872418, +0.0057434228489, + +0.0038067115405, +0.0022620935683, +0.0037833165369, +0.0069945726312, + +0.0056246604135, +0.0002037368924, -0.0019557819117, +0.0014063957376, + +0.0057861767485, +0.0071906985804, +0.0049572901971, +0.0027254097690, + +0.0026091122430, +0.0057198548694, +0.0096820574148, +0.0101045368658, + +0.0069566908888, +0.0011590112370, -0.0020920437509, -0.0021247506288, + +0.0011814116276, +0.0054561673797, +0.0082199634063, +0.0076318306094, + +0.0029954685405, -0.0022127809952, -0.0060975911971, -0.0073766766034, + -0.0050588847654, -0.0033399790629, -0.0043015958609, -0.0041356253942, + -0.0030925080738, -0.0009980138295, +0.0014213005030, +0.0031680120955, + +0.0051382375018, +0.0060889423978, +0.0046977108888, +0.0025613708682, + +0.0018127740073, +0.0020081359794, +0.0009294288476, -0.0002107135901, + +0.0004109333047, +0.0015992783869, +0.0025257666421, +0.0015188733785, + -0.0003108666917, -0.0030349935562, -0.0043888910798, -0.0044862044909, + -0.0056074925466, -0.0063104381584, -0.0070704370193, -0.0069093675393, + -0.0064474639758, -0.0065124885345, -0.0071510005889, -0.0079914909468, + -0.0094096922963, -0.0099729021342, -0.0070438852044, -0.0025929389867, + -0.0016253401028, -0.0030569038489, -0.0037136216264, -0.0020782200859, + +0.0011658726179, +0.0029954541258, +0.0014782960931, -0.0035454168863, + -0.0061423775647, -0.0038470005320, -0.0011946154619, -0.0008877992914, + -0.0026542157328, -0.0032678624885, -0.0021232370883, -0.0000268401088, + +0.0017074172128, +0.0015192914039, +0.0013691338259, +0.0000969674595, + -0.0038607953676, -0.0051298049226, -0.0037118918658, -0.0034207156082, + -0.0048109669202, -0.0055778704075, -0.0050492125236, -0.0040507806687, + -0.0010503823120, +0.0023977499915, +0.0019033269407, -0.0019003142757, + -0.0048720418609, -0.0051566450314, -0.0024253252479, -0.0004952446868, + -0.0013819628791, -0.0023835659601, -0.0029509560520, -0.0012064931475, + +0.0004683325054, +0.0002549666155, -0.0006755145030, -0.0016286843059, + -0.0004755686675, +0.0021845138343, +0.0037515610278, +0.0034383447461, + +0.0021229632104, -0.0003199191016, -0.0030101859154, -0.0036932681173, + -0.0026251990097, -0.0021491834873, -0.0038137747267, -0.0054088152019, + -0.0046503154655, -0.0026782593966, -0.0008273585961, -0.0004635035925, + -0.0027871045405, -0.0059286801391, -0.0074347821221, -0.0057865227001, + -0.0035256832080, -0.0035032684027, -0.0031558749468, -0.0022848543265, + -0.0023997968742, -0.0024703710798, -0.0007829181802, +0.0004592656796, + -0.0011415694909, -0.0038754406687, -0.0042796711536, -0.0046060047823, + -0.0052900095224, -0.0044586292346, -0.0035621378984, -0.0029484767291, + -0.0029673743567, -0.0025392443555, -0.0022078944232, -0.0026867496348, + -0.0027547003712, -0.0025515688948, -0.0022191378634, -0.0026753332189, + -0.0021186532249, -0.0008557122455, -0.0010612221415, -0.0030778051149, + -0.0048290140822, -0.0046190788839, -0.0038990663071, -0.0025585888380, + -0.0013334575272, -0.0023617998138, -0.0046174500266, -0.0053816723857, + -0.0047013722140, -0.0042101348041, -0.0034755634135, -0.0017596559625, + -0.0007275946917, -0.0002008107146, +0.0013827268561, +0.0026901082515, + +0.0030221068440, +0.0026806666457, +0.0028967569069, +0.0038974951088, + +0.0036616567545, +0.0020765912285, -0.0001378330387, -0.0014561984099, + -0.0010542454426, -0.0009030788380, -0.0015282284970, -0.0024805766638, + -0.0023634286723, -0.0015071830846, -0.0004817381451, -0.0000909565441, + -0.0015917395163, -0.0027659293966, -0.0021020187001, -0.0011193132455, + -0.0012485839722, -0.0016790779782, -0.0004732046626, +0.0028757403241, + +0.0044769646904, +0.0041658961935, +0.0037679216735, +0.0041947687690, + +0.0051953916542, +0.0055461148972, +0.0037587683603, +0.0002758967110, + -0.0013863881814, -0.0002137550846, +0.0023300875490, +0.0026673330798, + +0.0006402418150, -0.0010760115889, -0.0018001611753, -0.0012621625877, + -0.0001944106034, +0.0010012427146, +0.0019943988017, +0.0022958383023, + +0.0022132999226, +0.0026976327074, +0.0031392115925, +0.0039377985151, + +0.0046998442588, +0.0052801066469, +0.0054009159649, +0.0038541934510, + +0.0039433049178, +0.0060203718307, +0.0065066073507, +0.0048411368174, + +0.0015419800883, -0.0008067600387, +0.0005492996856, +0.0026299414353, + +0.0033266166675, +0.0020148387993, -0.0007572312455, -0.0009581428634, + +0.0013949793229, +0.0030889332370, +0.0029678932842, +0.0020170586578, + -0.0000780265877, -0.0011707736046, -0.0004250596771, +0.0017072730653, + +0.0025711872551, +0.0000076253579, -0.0013139256542, +0.0000081587013, + +0.0044425857110, +0.0080615750532, +0.0070084107110, +0.0052879626409, + +0.0073393137884, +0.0092122546131, +0.0088441040375, +0.0068184542394, + +0.0034810698162, +0.0040748964051, +0.0079912170677, +0.0119434590786, + +0.0112605786808, +0.0051408898005, +0.0008626456989, +0.0000044108875, + +0.0018431745393, +0.0047054803930, +0.0053481871161, +0.0032021604401, + +0.0002677668392, -0.0017107037557, -0.0012368648489, -0.0011649356638, + -0.0034584099613, -0.0036001782031, -0.0012919288730, -0.0003377644583, + -0.0014651499178, -0.0017030783978, -0.0006543970169, +0.0002879762019, + +0.0021887085030, +0.0052418357086, +0.0056273127122, +0.0031077011318, + +0.0035685956699, +0.0067161965973, +0.0067470295683, +0.0052833355320, + +0.0057989913869, +0.0078575498682, +0.0083648163869, +0.0075770837074, + +0.0062297304426, +0.0029323178888, +0.0025319361197, +0.0040996175574, + +0.0055590448525, +0.0094595670411, +0.0126728700181, +0.0100440529262, + +0.0063612786856, +0.0058777531233, +0.0055040817304, +0.0007885399008, + -0.0028604751923, -0.0020346301354, +0.0006546564800, +0.0011162573362, + -0.0028205753954, -0.0044932244329, -0.0054969608851, -0.0053094837364, + -0.0009529535828, +0.0021590719492, +0.0005345534813, -0.0011826512890, + +0.0021510285647, +0.0064310168416, +0.0055308785949, +0.0017727588948, + +0.0010098194414, +0.0037083746880, +0.0064332943579, +0.0057021392443, + +0.0028010435236, +0.0019837175345, +0.0049146516143, +0.0085302390955, + +0.0101661595635, +0.0081879484317, +0.0045285836094, +0.0029148473132, + +0.0033690246155, +0.0059736971415, +0.0054985032551, +0.0029185518827, + +0.0006962860363, +0.0018849338271, +0.0050919520085, +0.0048357457316, + +0.0032076235985, +0.0055642917920, +0.0092209610713, +0.0081516667170, + +0.0045814133615, -0.0001052558924, -0.0036940609238, -0.0011177852914, + +0.0040940679117, +0.0046536740834, +0.0006280614208, -0.0013320593047, + +0.0004906752382, -0.0005134071669, -0.0012806998489, +0.0006573520230, + +0.0008897308573, +0.0005528601076, +0.0018375960629, +0.0021069917594, + +0.0000977314365, +0.0018047162092, +0.0070357985768, +0.0086593224317, + +0.0058038347146, +0.0027150023809, +0.0040623268162, +0.0093885459807, + +0.0117805012769, +0.0098612461294, +0.0078271060931, +0.0074667394377, + +0.0068778859081, +0.0064553199686, +0.0054319795707, +0.0016061397678, + -0.0032690444909, -0.0051601045514, -0.0028359702600, -0.0006244865840, + -0.0015503550097, -0.0022392751511, +0.0002094595151, +0.0036620027062, + +0.0049601154716, +0.0023878903603, -0.0014587498053, -0.0026545184414, + -0.0032621831100, -0.0029044687533, -0.0017744021669, -0.0024749981886, + -0.0027128545949, -0.0010972011475, +0.0006625701318, +0.0005290903229, + -0.0003213029093, +0.0003172523881, +0.0010285152636, -0.0005378976844, + -0.0029964487388, -0.0033829491838, -0.0022598737098, -0.0014111669927, + -0.0012192789565, -0.0013258754123, -0.0009644853156, -0.0015323799202, + -0.0027946434111, -0.0020415635901, -0.0012803250677, -0.0021430860846, + -0.0021094422527, -0.0017409601403, -0.0025211107050, -0.0036333175212, + -0.0042878730992, -0.0037045259722, -0.0028295269033, -0.0024896434885, + -0.0027795080121, -0.0046296448343, -0.0061291881451, -0.0070849814184, + -0.0071450617461, -0.0058743945054, -0.0043933740411, -0.0029293772963, + -0.0028740105635, -0.0040214324087, -0.0058031428102, -0.0060093590254, + -0.0036428312007, -0.0007608781560, +0.0011561283035, +0.0004037115562, + -0.0015397746445, -0.0026872397328, -0.0026414299238, -0.0018088388041, + -0.0024139520762, -0.0035568188875, -0.0039857416953, -0.0034252706433, + -0.0028839422684, -0.0042517643591, -0.0066552658041, -0.0076718313083, + -0.0061797980387, -0.0027978578815, -0.0008907687134, -0.0024543708005, + -0.0058142132745, -0.0079417747630, -0.0061119337896, -0.0047158445381, + -0.0062481091415, -0.0085857643906, -0.0105078880556, -0.0100740930907, + -0.0077852170726, -0.0057107880447, -0.0057628682334, -0.0072461229710, + -0.0072934895647, -0.0054676414547, -0.0047329547473, -0.0063348566034, + -0.0076989308815, -0.0071287011004, -0.0053808075054, -0.0029713239746, + -0.0016836906723, -0.0018713984559, -0.0025371542285, -0.0015544343603, + +0.0003901041112, +0.0000118920992, -0.0032592136880, -0.0056350966324, + -0.0038027042636, -0.0004022556747, +0.0011369423821, -0.0007093457243, + -0.0049737085018, -0.0077899018392, -0.0066428980193, -0.0048741752322, + -0.0052199686602, -0.0073149818319, -0.0081908025357, -0.0076032607412, + -0.0072567033362, -0.0067036125937, -0.0066689453216, -0.0061082003918, + -0.0052906149383, -0.0039157584909, -0.0028012453289, -0.0039611502745, + -0.0058281955006, -0.0055459851657, -0.0043841918984, -0.0039997383362, + -0.0046870007908, -0.0051153614268, -0.0042438795369, -0.0029151644353, + -0.0020310264692, -0.0021762686457, -0.0032332672890, -0.0047935828331, + -0.0045325043990, -0.0035315643918, -0.0042793107872, -0.0055943319553, + -0.0058948200871, -0.0053009070109, -0.0048205238440, -0.0038113242334, + -0.0015755518464, +0.0004595828029, +0.0003215479589, -0.0021622720048, + -0.0054096944970, -0.0068500656022, -0.0052460592056, -0.0016374051790, + -0.0005417608150, -0.0014177544946, -0.0023037087098, -0.0010475282080, + +0.0013461136046, +0.0023819226880, +0.0014698923422, -0.0010225043470, + -0.0018161470399, -0.0010028859867, +0.0007229099250, +0.0020640792987, + +0.0017642686566, +0.0011484308718, +0.0003239840375, +0.0003106216421, + +0.0005080449105, +0.0005269281233, +0.0002412582684, -0.0005021781415, + -0.0005523555949, -0.0012510200508, -0.0035050702358, -0.0054122458924, + -0.0054369238005, -0.0038430509141, -0.0033699471548, -0.0039295965695, + -0.0045771466203, -0.0049478630060, -0.0047697842189, -0.0036756389807, + -0.0016000135345, -0.0008085186276, -0.0011065706808, +0.0002817346505, + +0.0023111610919, +0.0034973151451, +0.0028689942600, +0.0008982499250, + -0.0000219535369, -0.0003541251052, +0.0004929815840, +0.0016320717521, + +0.0014637661100, +0.0014520902297, +0.0019098567848, +0.0033662425852, + +0.0042354469577, +0.0045176572926, +0.0046223942576, +0.0035891653978, + +0.0014096246227, -0.0004519430290, -0.0004662279637, +0.0010730709964, + +0.0023721351306, +0.0019239110846, +0.0005069349819, -0.0010489408452, + -0.0008821919867, +0.0023395435695, +0.0065296275732, +0.0071227478428, + +0.0036543052745, +0.0005514186409, +0.0006263316614, +0.0025835117956, + +0.0031195355732, +0.0027077518029, +0.0007961364293, -0.0020149829456, + -0.0017861212902, +0.0015652453591, +0.0032082001850, +0.0024514446239, + +0.0018557008839, +0.0035016251306, +0.0047309366941, +0.0034913618875, + +0.0015764455550, -0.0000556117823, -0.0006048249794, -0.0000167786711, + +0.0016657011681, +0.0031739221088, +0.0021161450726, +0.0012962388585, + +0.0031905998779, +0.0047842421294, +0.0044332882515, +0.0048715373482, + +0.0067858482648, +0.0073585717823, +0.0060907874752, +0.0052361563301, + +0.0056625421560, +0.0057112781427, +0.0055786199698, +0.0049617299141, + +0.0036091441258, +0.0018223165163, +0.0004653342539, +0.0004115387207, + +0.0019849571959, +0.0032562875115, +0.0037392509033, +0.0038166432455, + +0.0035702821850, +0.0027705420895, +0.0022551601137, +0.0028131374281, + +0.0041858460907, +0.0041370092019, +0.0035052432116, +0.0045875107654, + +0.0057061176929, +0.0081336916288, +0.0103184505127, +0.0104456022830, + +0.0087169234377, +0.0065468675139, +0.0061459668174, +0.0056310605248, + +0.0045202663470, +0.0039058267848, +0.0030250762648, +0.0018411709008, + +0.0010014733495, +0.0015390539117, +0.0024990562660, +0.0027889496179, + +0.0026068779698, +0.0028327269601, +0.0028903712092, +0.0027406172418, + +0.0033766499746, +0.0034872681221, +0.0026820648682, +0.0007115223386, + -0.0016852042116, -0.0015938296433, +0.0006516870593, +0.0025180259674, + +0.0036139874534, +0.0033915403241, +0.0018413871197, +0.0009754260484, + +0.0014144102926, +0.0030693581197, +0.0039772802854, +0.0034584820339, + +0.0016045829843, -0.0008033870060, -0.0016275743761, -0.0003146865780, + +0.0018860725852, +0.0039725666904, +0.0048708598585, +0.0046268051451, + +0.0036899239154, +0.0031196508900, +0.0022871895018, +0.0015972315042, + +0.0004982285224, -0.0003417717364, +0.0004924194123, +0.0017690110810, + +0.0030292853482, +0.0028826737775, +0.0009529824123, -0.0014794492660, + -0.0023717747630, -0.0010929632358, +0.0007350903180, +0.0004518421270, + -0.0014590813434, -0.0027666933736, -0.0028125752563, -0.0019024332322, + -0.0017323401705, -0.0031735473277, -0.0041915398839, -0.0036079044643, + -0.0013763844027, +0.0005498041983, -0.0000257734232, -0.0014357728283, + -0.0019112550073, -0.0013689464353, -0.0009183583845, -0.0013372774135, + -0.0013229924788, -0.0002723362890, +0.0002510169976, +0.0005312525236, + -0.0000553523180, -0.0012255349214, -0.0014278880048, -0.0007677107074, + -0.0005120377727, -0.0010415317074, -0.0020583278464, -0.0022086872297, + -0.0021272731947, -0.0024494842285, -0.0029081300786, -0.0032820897642, + -0.0029915621669, -0.0019692019649, -0.0009035112781, -0.0009204485103, + -0.0011844242926, -0.0011501029722, -0.0017737246771, -0.0020200136638, + -0.0026528175103, -0.0036242506953, -0.0038688387521, -0.0032731815006, + -0.0022627854728, -0.0019497854099, -0.0023965391596, -0.0036547665441, + -0.0040688278307, -0.0038201604244, -0.0036714587279, -0.0029563759661, + -0.0014739572781, +0.0004532115200, +0.0008079564559, -0.0006303965973, + -0.0026696105961, -0.0048818294196, -0.0063380566590, -0.0063812429988, + -0.0063158580726, -0.0064129840943, -0.0064989819927, -0.0053292606590, + -0.0033192796022, -0.0024800433216, -0.0033668480012, -0.0046607949287, + -0.0054964275429, -0.0054233019407, -0.0040425931378, -0.0026504246759, + -0.0021486069008, -0.0020621477328, -0.0011171798755, +0.0010216971258, + +0.0022364354619, +0.0017884564655, -0.0001448097364, -0.0022585908041, + -0.0031739365236, -0.0035135172297, -0.0050673461741, -0.0060172294329, + -0.0064332367001, -0.0065363448077, -0.0053445113761, -0.0043335964196, + -0.0047003055284, -0.0051328031729, -0.0045949199033, -0.0036535557122, + -0.0045797124305, -0.0067704245719, -0.0083307112866, -0.0088638088863, + -0.0078616580484, -0.0061673293519, -0.0053339021814, -0.0054644558138, + -0.0052421960750, -0.0038404851040, -0.0029712374873, -0.0039177909589, + -0.0050570685175, -0.0052598684559, -0.0051042044752, -0.0055861155961, + -0.0071543015478, -0.0084897915429, -0.0087608593410, -0.0064509090810, + -0.0021723911004, -0.0013004911850, -0.0038964860822, -0.0065515522805, + -0.0050643190943, -0.0010404361923, +0.0005490258065, -0.0009182574813, + -0.0045209438368, -0.0059731637981, -0.0033365483724, -0.0007178071330, + -0.0007913363458, -0.0032826807654, -0.0055908580218, -0.0059035842044, + -0.0051865410484, -0.0048713355429, -0.0055233108960, -0.0067591378888, + -0.0078800367473, -0.0089603583216, -0.0087173558779, -0.0066204976288, + -0.0056189810351, -0.0051540648053, -0.0048854042576, -0.0051940799190, + -0.0049613263035, -0.0031184977170, -0.0003840931959, +0.0002538278573, + -0.0012115094510, -0.0014209401366, -0.0002817346505, +0.0004490456820, + +0.0003253390157, -0.0000320005586, -0.0001438151245, -0.0009419119492, + -0.0019514286820, -0.0027267647485, -0.0046419117158, -0.0063352025550, + -0.0059981588295, -0.0049923322503, -0.0039264397582, -0.0035244291318, + -0.0045467172600, -0.0055329398924, -0.0060490137727, -0.0061963460750, + -0.0058135501995, -0.0057162079589, -0.0053102044704, -0.0054654792539, + -0.0057007842660, -0.0048351259008, -0.0025973066312, -0.0006517158888, + -0.0004654639867, -0.0016486918622, -0.0030242546300 +}; diff --git a/plugins/ladspa_effect/swh/impulses/03-stk-m1.h b/plugins/ladspa_effect/swh/impulses/03-stk-m1.h new file mode 100644 index 000000000..65593586f --- /dev/null +++ b/plugins/ladspa_effect/swh/impulses/03-stk-m1.h @@ -0,0 +1,302 @@ +float stk_m1[] = { + -0.0078354283852, -0.0305904437564, -0.0544448647061, -0.0654778659204, + -0.0493025333033, +0.0057999367459, +0.0697043517155, +0.1049470287295, + +0.1062267837260, +0.0866926526019, +0.0628288791663, +0.0440187979075, + +0.0317299114731, +0.0240030835890, +0.0188275299251, +0.0151256208396, + +0.0124967349496, +0.0107776923255, +0.0098134092201, +0.0094201860714, + +0.0094193485363, +0.0096668404215, +0.0100590864450, +0.0105258731710, + +0.0110197402272, +0.0115077445328, +0.0119674122026, +0.0123829696440, + +0.0127452039602, +0.0130483919895, +0.0132901607131, +0.0134696725937, + +0.0135874859906, +0.0136454155632, +0.0136451363841, +0.0135893006511, + +0.0134801417939, +0.0133203120082, +0.0131127426721, +0.0128596672131, + +0.0125634586499, +0.0122264900023, +0.0118511342892, +0.0114392061698, + +0.0109927994859, +0.0105137288993, +0.0100040882482, +0.0094655526042, + +0.0088999366311, +0.0083090549895, +0.0050828663466, -0.0031392244883, + -0.0117486757190, -0.0161038628782, -0.0114075193923, +0.0062480185012, + +0.0268223693279, +0.0378285693899, +0.0375009532272, +0.0302240217600, + +0.0214935465773, +0.0144385621475, +0.0095493062037, +0.0061736173876, + +0.0036425836194, +0.0015980186733, -0.0000926873162, -0.0014832762424, + -0.0026241398525, -0.0035754411511, -0.0043959472447, -0.0051326997389, + -0.0058197584309, -0.0064797367927, -0.0071275708829, -0.0077730319543, + -0.0084232390621, -0.0090827986557, -0.0097539441651, -0.0104376527131, + -0.0111346222482, -0.0118441548220, -0.0125656920796, -0.0132981173044, + -0.0140398950152, -0.0147899084965, -0.0155469014438, -0.0163094779649, + -0.0170759629871, -0.0178455189742, -0.0186167500340, -0.0193885394508, + -0.0201599100995, -0.0209300244438, -0.0216973470023, -0.0224610402377, + -0.0232202666148, -0.0239740490070, -0.0247215498806, -0.0254617921089, + -0.0261943569227, -0.0269185463770, -0.0276336625258, -0.0283391470094, + -0.0290338831148, -0.0297175916628, -0.0303895747073, -0.0310496926593, + -0.0316973871593, -0.0323319602623, -0.0329527140222, -0.0335593692588, + -0.0341516467951, -0.0347291278618, -0.0352913936909, -0.0358384442834, + -0.0363698608700, -0.0368852246838, -0.0373842565457, -0.0378665376885, + -0.0383317889321, -0.0387800102775, -0.0392109225445, -0.0396250840925, + -0.0400219365644, -0.0404010611897, -0.0407623183806, -0.0411058477272, + -0.0414313700492, -0.0417388853478, -0.0420285332119, -0.0423004532307, + -0.0425546454040, -0.0427911097330, -0.0430097066265, -0.0432102964965, + -0.0433928793431, -0.0435577343443, -0.0437051406792, -0.0438345399895, + -0.0439469094016, -0.0440422489157, -0.0441206981206, -0.0441821174262, + -0.0442265068337, -0.0442535871639, -0.0442643355433, -0.0442590311487, + -0.0442373948021, -0.0442001244508, -0.0441470805035, -0.0440782629637, + -0.0439940905960, -0.0438949821710, -0.0437810772752, -0.0436529342681, + -0.0435106927389, -0.0433544922763, -0.0431844724707, -0.0430009124988, + -0.0428038123618, -0.0425935908279, -0.0423702478970, -0.0421346211042, + -0.0418865708618, -0.0416269347037, -0.0413561313993, -0.0410743005386, + -0.0407815817084, -0.0404783936803, -0.0401644572717, -0.0398397724859, + -0.0395057352143, -0.0391627642248, -0.0388107199297, -0.0384496023279, + -0.0380796905984, -0.0377019618653, -0.0373165557201, -0.0369236117506, + -0.0365231299567, -0.0361155291077, -0.0357010883806, -0.0352800869555, + -0.0348528040094, -0.0344199374906, -0.0339820457564, -0.0335391288056, + -0.0330910470504, -0.0326383588466, -0.0321813433735, -0.0317198610422, + -0.0312544702084, -0.0307854500527, -0.0303132193431, -0.0298374988993, + -0.0293588470796, -0.0288781014204, -0.0283949827424, -0.0279096306347, + -0.0274230222237, -0.0269352970972, -0.0264460364883, -0.0259555195761, + -0.0254644443056, -0.0249728106780, -0.0244806186932, -0.0239882871194, + -0.0234960951347, -0.0230041823290, -0.0225128278794, -0.0220218921991, + -0.0215317940539, -0.0210426730351, -0.0205549479087, -0.0200691770340, + -0.0195846624625, -0.0191018229625, -0.0186206585351, -0.0181413087693, + -0.0176640528431, -0.0171893095246, -0.0167174975820, -0.0162490357834, + -0.0157830865937, -0.0153197896007, -0.0148592843946, -0.0144025480995, + -0.0139493015386, -0.0134991259426, -0.0130521609016, -0.0126089647728, + -0.0121695375550, -0.0117344376077, -0.0113032461604, -0.0108755444473, + -0.0104517512354, -0.0100327040609, -0.0096185425129, -0.0092082894660, + -0.0088023636885, -0.0084007651803, -0.0080036335304, -0.0076112479180, + -0.0072233291639, -0.0068402960375, -0.0064628464836, -0.0060900033782, + -0.0057206500047, -0.0053560426698, -0.0049970189075, -0.0046432995410, + -0.0042943262108, -0.0039502385070, -0.0036108968407, -0.0032763012119, + -0.0029474287459, -0.0026237210843, -0.0023050386393, -0.0019912418208, + -0.0016823306300, -0.0013784446534, -0.0010793047155, -0.0007846316358, + -0.0004954025398, -0.0002118966066, +0.0000671424684, +0.0003411563279, + +0.0006102845597, +0.0008743875761, +0.0011338841440, +0.0013883554965, + +0.0016373828642, +0.0018813850176, +0.0021211994895, +0.0023561283349, + +0.0025856131967, +0.0028100728431, +0.0030304843981, +0.0032464290948, + +0.0034576277541, +0.0036642199660, +0.0038667640867, +0.0040653997061, + +0.0042595684672, +0.0044485724227, +0.0046328303407, +0.0048126214005, + +0.0049886435480, +0.0051603384262, +0.0053277060351, +0.0054911651429, + +0.0056502969813, +0.0058048223724, +0.0059557184403, +0.0061028455960, + +0.0062457850726, +0.0063850952260, +0.0065207760562, +0.0066526879754, + +0.0067805518033, +0.0069046467190, +0.0070251123126, +0.0071419485843, + +0.0072554347108, +0.0073654311042, +0.0074723565328, +0.0075760714063, + +0.0076760173677, +0.0077730319543, +0.0078669755749, +0.0079572898724, + +0.0080448123829, +0.0081299618759, +0.0082119008138, +0.0082902104286, + +0.0083655886686, +0.0084387334789, +0.0085089469122, +0.0085758102026, + +0.0086400212951, +0.0087022781370, +0.0087621619602, +0.0088198123548, + +0.0088743917834, +0.0089256210679, +0.0089740585667, +0.0090209605820, + +0.0090661875258, +0.0091094602190, +0.0091503598934, +0.0091891657272, + +0.0092253193642, +0.0092588208044, +0.0092902284040, +0.0093202401101, + +0.0093485767447, +0.0093753778958, +0.0094005039766, +0.0094236758056, + +0.0094450329731, +0.0094647150691, +0.0094824429133, +0.0094983560972, + +0.0095127337986, +0.0095255760176, +0.0095370223431, +0.0095467935960, + +0.0095551689555, +0.0095621484227, +0.0095675924063, +0.0095717800867, + +0.0095747114625, +0.0095762469450, +0.0095765261241, +0.0095756885878, + +0.0095738739262, +0.0095709425504, +0.0095667548700, +0.0095614504754, + +0.0095551689555, +0.0095477707213, +0.0095392557717, +0.0095301824660, + +0.0095201320340, +0.0095088252974, +0.0094966810258, +0.0094839783970, + +0.0094704382319, +0.0094557813513, +0.0094402869356, +0.0094243737518, + +0.0094079022108, +0.0093907327225, +0.0093727256991, +0.0093537415504, + +0.0093340594543, +0.0093140981792, +0.0092935785480, +0.0092726401475, + +0.0092517017482, +0.0092311821159, +0.0092098249485, +0.0091867927084, + +0.0091626437541, +0.0091379364426, +0.0091129499520, +0.0090876842834, + +0.0090621394356, +0.0090363154087, +0.0090100726148, +0.0089835506417, + +0.0089567494895, +0.0089295295703, +0.0089020304719, +0.0088748105515, + +0.0088484281674, +0.0088216270164, +0.0087935695609, +0.0087645349789, + +0.0087349420410, +0.0087050699239, +0.0086751978068, +0.0086450465105, + +0.0086148952155, +0.0085846043302, +0.0085543134450, +0.0085238829707, + +0.0084938712646, +0.0084646970937, +0.0084353833349, +0.0084049528595, + +0.0083736848501, +0.0083421376604, +0.0083104508817, +0.0082786245141, + +0.0082469377365, +0.0082152509578, +0.0081835641792, +0.0081518774005, + +0.0081208885691, +0.0080907372740, +0.0080605859778, +0.0080293179672, + +0.0079974915995, +0.0079652464637, +0.0079330013279, +0.0079007561932, + +0.0078685110574, +0.0078365450995, +0.0078047187319, +0.0077740090796, + +0.0077442765515, +0.0077141252553, +0.0076828572459, +0.0076508912881, + +0.0076186461522, +0.0075864010176, +0.0075542954707, +0.0075223295141, + +0.0074905031464, +0.0074588163677, +0.0074279671253, +0.0073982345972, + +0.0073683624801, +0.0073379320059, +0.0073072223525, +0.0072760939321, + +0.0072448259215, +0.0072132787330, +0.0071818711323, +0.0071507427119, + +0.0071196142904, +0.0070893234052, +0.0070602888244, +0.0070311146546, + +0.0070012425375, +0.0069706724731, +0.0069402419988, +0.0069099511136, + +0.0068797998185, +0.0068496485222, +0.0068193576370, +0.0067892063419, + +0.0067597529930, +0.0067315559473, +0.0067033589028, +0.0066744639110, + +0.0066448709719, +0.0066151384450, +0.0065855455059, +0.0065565109251, + +0.0065276159333, +0.0064987209415, +0.0064696863607, +0.0064413497260, + +0.0064142693958, +0.0063871890656, +0.0063591316101, +0.0063306553864, + +0.0063018999836, +0.0062735633489, +0.0062456454824, +0.0062178672061, + +0.0061899493396, +0.0061627294192, +0.0061366262143, +0.0061105230094, + +0.0060835822681, +0.0060560831698, +0.0060283048934, +0.0060006662049, + +0.0059734462857, +0.0059466451335, +0.0059201231604, +0.0058934615984, + +0.0058673583934, +0.0058425114918, +0.0058175250012, +0.0057915613852, + +0.0057651790023, +0.0057385174391, +0.0057118558770, +0.0056857526721, + +0.0056600682354, +0.0056345233876, +0.0056089785398, +0.0055839920492, + +0.0055601222728, +0.0055362524977, +0.0055114055960, +0.0054860003384, + +0.0054604554906, +0.0054349106429, +0.0054097845632, +0.0053852168407, + +0.0053607887073, +0.0053362209848, +0.0053123512084, +0.0052897377377, + +0.0052669846756, +0.0052432544895, +0.0052189659461, +0.0051943982237, + +0.0051698305012, +0.0051456815468, +0.0051220909496, +0.0050986399415, + +0.0050750493443, +0.0050521566944, +0.0050303807588, +0.0050086048220, + +0.0049858517611, +0.0049625403431, +0.0049389497459, +0.0049156383279, + +0.0048928852658, +0.0048704113841, +0.0048476583232, +0.0048249052611, + +0.0048028501475, +0.0047820513361, +0.0047612525258, +0.0047396161792, + +0.0047172818864, +0.0046946684145, +0.0046724737108, +0.0046506977752, + +0.0046290614286, +0.0046072854930, +0.0045855095574, +0.0045637336218, + +0.0045427952213, +0.0045231131253, +0.0045034310293, +0.0044827718091, + +0.0044615542307, +0.0044403366522, +0.0044193982518, +0.0043985994415, + +0.0043776610422, +0.0043567226417, +0.0043356446522, +0.0043155437892, + +0.0042966992295, +0.0042778546698, +0.0042581725738, +0.0042377925304, + +0.0042174124883, +0.0041973116253, +0.0041774899391, +0.0041575286651, + +0.0041372882119, +0.0041173269379, +0.0040980636101, +0.0040800565855, + +0.0040621891511, +0.0040432050023, +0.0040236624953, +0.0040041199895, + +0.0039849962506, +0.0039658725117, +0.0039466091838, +0.0039274854461, + +0.0039082221183, +0.0038890983794, +0.0038709517670, +0.0038540614567, + +0.0038371711475, +0.0038193037131, +0.0038010175105, +0.0037827313091, + +0.0037644451066, +0.0037460193138, +0.0037274539333, +0.0037090281417, + +0.0036906023489, +0.0036724557365, +0.0036552862482, +0.0036392334754, + +0.0036233202916, +0.0036062903934, +0.0035888417260, +0.0035715326487, + +0.0035540839824, +0.0035364957272, +0.0035189074707, +0.0035013192155, + +0.0034837309590, +0.0034671198290, +0.0034519045913, +0.0034365497646, + +0.0034203574028, +0.0034036066827, +0.0033869955527, +0.0033703844215, + +0.0033533545234, +0.0033364642143, +0.0033195739052, +0.0033028231850, + +0.0032862120550, +0.0032698801030, +0.0032543856874, +0.0032400079859, + +0.0032260490527, +0.0032112525831, +0.0031958977564, +0.0031797053946, + +0.0031632338536, +0.0031467623115, +0.0031305699496, +0.0031145171756, + +0.0030987435820, +0.0030829699871, +0.0030685922857, +0.0030558896569, + +0.0030433266171, +0.0030296468618, +0.0030148503934, +0.0029992163876, + +0.0029834427939, +0.0029675296101, +0.0029518956042, +0.0029365407775, + +0.0029213255410, +0.0029063894824, +0.0028924305492, +0.0028797279192, + +0.0028671648794, +0.0028540434824, +0.0028400845492, +0.0028255672588, + +0.0028106312002, +0.0027958347307, +0.0027810382623, +0.0027665209719, + +0.0027521432705, +0.0027380447482, +0.0027247837611, +0.0027130582576, + +0.0027017515211, +0.0026893280703, +0.0026756483162, +0.0026615497939, + +0.0026473116815, +0.0026330735703, +0.0026191146370, +0.0026054348817, + +0.0025917551276, +0.0025783545515, +0.0025657915117, +0.0025546243653, + +0.0025435968080, +0.0025318713044, +0.0025193082646, +0.0025060472775, + +0.0024926467026, +0.0024791065363, +0.0024657059614, +0.0024525845632, + +0.0024396027553, +0.0024267605375, +0.0024140579075, +0.0024021928150, + +0.0023921423829, +0.0023825107190, +0.0023716227506, +0.0023594784789, + +0.0023466362611, +0.0023336544532, +0.0023206726452, +0.0023079700152, + +0.0022954069754, +0.0022831231148, +0.0022709788431, +0.0022591137494, + +0.0022482257822, +0.0022391524754, +0.0022299395796, +0.0022191912002, + +0.0022073261077, +0.0021951818349, +0.0021828979742, +0.0021706141136, + +0.0021587490199, +0.0021470235164, +0.0021355771909, +0.0021241308653, + +0.0021139408443, +0.0021054258946, +0.0020967713560, +0.0020867209239, + +0.0020755537775, +0.0020639678630, +0.0020522423595, +0.0020406564450, + +0.0020293497084, +0.0020183221522, +0.0020074341838, +0.0019966858056, + +0.0019863561944, +0.0019771432986, +0.0019693262963, +0.0019610905258, + +0.0019513192728, +0.0019407104836, +0.0019296829262, +0.0019186553689, + +0.0019077674005, +0.0018970190222, +0.0018865498220, +0.0018762202119, + +0.0018660301909, +0.0018562589368, +0.0018470460410, +0.0018385310925, + +0.0018309932681, +0.0018230366768, +0.0018138237799, +0.0018037733489, + +0.0017934437377, +0.0017831141276, +0.0017729241066, +0.0017628736745, + +0.0017529628314, +0.0017433311674, +0.0017339786827, +0.0017253241440, + +0.0017173675515, +0.0017103880855, +0.0017029898513, +0.0016943353126, + +0.0016848432377, +0.0016750719848, +0.0016653007307, +0.0016556690667, + +0.0016461769930, +0.0016368245070, +0.0016280303794, +0.0016196550199, + +0.0016114192494, +0.0016036022459, +0.0015969019578, +0.0015899224918, + +0.0015818263103, +0.0015727530035, +0.0015635401077, +0.0015543272119, + +0.0015452539052, +0.0015363201885, +0.0015275260609, +0.0015192902892, + +0.0015114732869, +0.0015037958735, +0.0014956996932, +0.0014883014578, + +0.0014821595269, +0.0014758780070, +0.0014683401838, +0.0014599648232, + +0.0014511706956, +0.0014423765679, +0.0014338616183, +0.0014253466698, + +0.0014171108993, +0.0014092938958, +0.0014020352506, +0.0013947766054, + +0.0013879367283, +0.0013823531546, +0.0013763508138, +0.0013692317576, + +0.0013612751663, +0.0013530393958, +0.0013446640351, +0.0013365678536, + +0.0013286112623, +0.0013207942600, +0.0013133960246, +0.0013066957365, + +0.0012998558595, +0.0012927368044, +0.0012863156944, +0.0012810112998, + +0.0012755673162, +0.0012688670281, +0.0012614687939, +0.0012536517904, + +0.0012458347881, +0.0012381573747, +0.0012307591405, +0.0012237796733, + +0.0012172189754, +0.0012107978665, +0.0012040975785, +0.0011972577002, + +0.0011909761803, +0.0011862301440, +0.0011812049274, +0.0011750629965, + +0.0011682231194, +0.0011609644742, +0.0011535662400, +0.0011464471838, + +0.0011394677178, +0.0011329070187, +0.0011269046780, +0.0011210419251, + +0.0011148999953, +0.0011083392963, +0.0011017785972, +0.0010961950246, + +0.0010918677553, +0.0010874008970, +0.0010818173232, +0.0010753962143, + +0.0010685563372, +0.0010618560492, +0.0010554349391, +0.0010494325984, + +0.0010437094356, +0.0010377070948, +0.0010315651639, +0.0010252836440, + +0.0010191417131, +0.0010139769075, +0.0010100684063, +0.0010060203162, + +0.0010008555105, +0.0009949927588, +0.0009885716499, +0.0009822901300, + +0.0009761481991, +0.0009707042155, +0.0009653998208, +0.0009598162471, + +0.0009540930843, +0.0009482303326, +0.0009425071698, +0.0009367840070, + +0.0009320379696, +0.0009286878255, +0.0009250585035, +0.0009204520550, + +0.0009148684824, +0.0009090057307, +0.0009031429778, +0.0008979781733, + +0.0008929529567, +0.0008875089731, +0.0008820649895, +0.0008764814157, + +0.0008710374321, +0.0008657330375, +0.0008612661792, +0.0008581952131, + +0.0008551242482, +0.0008506573899, +0.0008454925843, +0.0008399090105, + +0.0008343254379, +0.0008290210433, +0.0008244145948, +0.0008198081475, + +0.0008149225199, +0.0008098973044, +0.0008047324988, +0.0007997072834, + +0.0007948216569, +0.0007907735656, +0.0007879817799, +0.0007851899930, + +0.0007812814918, +0.0007763958642, +0.0007710914696, +0.0007660662541, + +0.0007617389848, +0.0007572721265, +0.0007526656780, +0.0007477800515, + +0.0007428944251, +0.0007381483876, +0.0007334023501, +0.0007287959028, + +0.0007251665796, +0.0007227935609, +0.0007204205422, +0.0007167912201, + +0.0007121847717, +0.0007072991452, +0.0007025531077, +0.0006983654286, + +0.0006943173372, +0.0006899900679, +0.0006855232096, +0.0006809167611, + +0.0006764499028, +0.0006721226335, +0.0006676557752, +0.0006634680948, + +0.0006601179508, +0.0006581637002, +0.0006560698607, +0.0006527197166, + +0.0006488112155, +0.0006449027143, +0.0006408546230, +0.0006366669438, + +0.0006320604953, +0.0006275936370, +0.0006232663677, +0.0006189390984, + +0.0006148910070, +0.0006108429169, +0.0006069344157, +0.0006038634508, + +0.0006023279672, +0.0006007924848, +0.0005977215199, +0.0005940921967, + +0.0005903232857, +0.0005864147834, +0.0005822271042, +0.0005778998349, + +0.0005735725656, +0.0005693848852, +0.0005653367951, +0.0005614282939, + +0.0005576593817, +0.0005538904696, +0.0005502611464, +0.0005474693607, + +0.0005460734672, +0.0005445379848, +0.0005420253759, +0.0005389544110, + +0.0005356042670, +0.0005316957658, +0.0005275080855, +0.0005233204063, + +0.0005194119040, +0.0005155034028, +0.0005117344906, +0.0005081051686, + +0.0005047550246, +0.0005012652916, +0.0004977755585, +0.0004952629496, + +0.0004941462354, +0.0004928899309, +0.0004906565023, +0.0004878647155, + +0.0004846541604, +0.0004808852494, +0.0004769767471, +0.0004730682459, + +0.0004692993337, +0.0004656700117, +0.0004621802787, +0.0004588301347, + +0.0004554799906, +0.0004524090246, +0.0004491984707, +0.0004469650410, + +0.0004459879157, +0.0004452899696, +0.0004437544859, +0.0004412418782, + +0.0004377521452, +0.0004339832330, +0.0004300747319, +0.0004263058197, + +0.0004226764977, +0.0004191867646, +0.0004159762096, +0.0004127656546, + +0.0004096946897, +0.0004067633138, +0.0004036923478, +0.0004007609719, + +0.0003988067213, +0.0003983879532, +0.0003982483642, +0.0003968524707, + +0.0003940606838, +0.0003904313618, +0.0003868020386, +0.0003830331276, + +0.0003795433934, +0.0003761932494, +0.0003731222845, +0.0003701909087, + +0.0003671199438, +0.0003643281569, +0.0003615363700, +0.0003588841721, + +0.0003569299215, +0.0003567903326, +0.0003569299215, +0.0003556736183, + +0.0003530214204, +0.0003496712763, +0.0003460419543, +0.0003426918103, + +0.0003393416663, +0.0003362707014, +0.0003333393244, +0.0003305475386, + +0.0003277557518, +0.0003251035539, +0.0003225909461, +0.0003200783384, + +0.0003175657307, +0.0003161698372, +0.0003165886054, +0.0003168677834, + +0.0003153323009, +0.0003126801042, +0.0003093299602, +0.0003058402260, + +0.0003026296721, +0.0002995587061, +0.0002966273302, +0.0002938355445, + +0.0002913229356, +0.0002888103279, +0.0002862977201, +0.0002839247014, + +0.0002815516827, +0.0002791786639, +0.0002780619496, +0.0002787598958, + +0.0002791786639, +0.0002777827705, +0.0002751305738, +0.0002720596077, + +0.0002688490539, +0.0002656384988, +0.0002628467119, +0.0002600549251, + +0.0002575423173, +0.0002550297096, +0.0002527962799, +0.0002504232611, + +0.0002483294215, +0.0002460959918, +0.0002441417412, +0.0002427458489, + +0.0002421874906, +0.0002424666698, +0.0002423270808, +0.0002407915972, + +0.0002382789895, +0.0002352080246, +0.0002322766487, +0.0002294848618, + +0.0002268326651, +0.0002243200562, +0.0002219470375, +0.0002198531979, + +0.0002176197681, +0.0002156655176, +0.0002135716780, +0.0002118966066, + +0.0002106403021, +0.0002102215340, +0.0002107798911, +0.0002107798911, + +0.0002093839977, +0.0002070109789, +0.0002042191932, +0.0002014274063, + +0.0001986356194, +0.0001962626007, +0.0001938895820, +0.0001917957424, + +0.0001897019016, +0.0001877476511, +0.0001859329906, +0.0001839787400, + +0.0001825828466, +0.0001814661311, +0.0001803494169, +0.0001799306487, + +0.0001813265422, +0.0001823036674, +0.0001811869532, +0.0001789535234, + +0.0001761617365, +0.0001732303607, +0.0001704385749, +0.0001679259660, + +0.0001656925375, +0.0001635986967, +0.0001616444461, +0.0001598297857, + +0.0001580151241, +0.0001563400515, +0.0001549441581, +0.0001541066230, + +0.0001532690867, +0.0001527107295, +0.0001534086756, +0.0001536878548, + +0.0001525711393, +0.0001506168888, +0.0001481042810, +0.0001457312623, + +0.0001434978337, +0.0001414039930, +0.0001393101534, +0.0001376350808, + +0.0001358204204, +0.0001342849379, +0.0001327494543, +0.0001314931511, + +0.0001307952037, +0.0001299576686, +0.0001288409532, +0.0001273054707, + +0.0001264679344, +0.0001270262916, +0.0001275846499, +0.0001267471136, + +0.0001249324520, +0.0001228386124, +0.0001206051827, +0.0001183717541, + +0.0001165570925, +0.0001147424309, +0.0001130673595, +0.0001115318759, + +0.0001101359824, +0.0001090192681, +0.0001087400902, +0.0001083213220, + +0.0001073441967, +0.0001059483033, +0.0001042732307, +0.0001035752845, + +0.0001042732307, +0.0001046919988, +0.0001039940527, +0.0001024585703, + +0.0001005043185, +0.0000984104789, +0.0000964562283, +0.0000946415667, + +0.0000929664953, +0.0000914310129, +0.0000900351194, +0.0000890579941, + +0.0000884996370, +0.0000879412787, +0.0000871037436, +0.0000858474391, + +0.0000844515457, +0.0000830556522, +0.0000826368841, +0.0000836140094, + +0.0000843119567, +0.0000838931885, +0.0000824972951, +0.0000806826335, + +0.0000787283829, +0.0000769137225, +0.0000752386499, +0.0000737031674, + +0.0000724468630, +0.0000710509696, +0.0000702134344, +0.0000697946663, + +0.0000693758981, +0.0000686779508, +0.0000675612365, +0.0000661653431, + +0.0000650486288, +0.0000646298607, +0.0000657465749 +}; diff --git a/plugins/ladspa_effect/swh/impulses/04-fender-68-vibrolux-sm57.h b/plugins/ladspa_effect/swh/impulses/04-fender-68-vibrolux-sm57.h new file mode 100644 index 000000000..8e4cfaae9 --- /dev/null +++ b/plugins/ladspa_effect/swh/impulses/04-fender-68-vibrolux-sm57.h @@ -0,0 +1,1154 @@ +float fender_68_vibrolux_sm57[] = { + +0.0000000000000, +0.0000061913321, +0.0000061913321, +0.0000000000000, + +0.0000000000000, -0.0000183742760, -0.0000730976633, -0.0000974635510, + -0.0000671060515, -0.0000183742760, +0.0000487317755, +0.0001402037148, + +0.0001461953265, +0.0001036548832, +0.0000427401638, -0.0000487317755, + -0.0001036548832, -0.0000974635510, -0.0001523866587, -0.0002316756541, + -0.0002133013781, -0.0001096464949, +0.0000183742760, +0.0002133013781, + +0.0003475134811, +0.0002925903735, +0.0001523866587, +0.0000305572199, + -0.0001096464949, -0.0001829438786, -0.0001523866587, -0.0000974635510, + -0.0001158378270, -0.0000974635510, -0.0000243658878, +0.0000792889954, + +0.0002438585980, +0.0003656880367, +0.0003047733174, +0.0001340123827, + -0.0000609147194, -0.0002560415418, -0.0003413221490, -0.0002498502097, + -0.0001280207709, -0.0001158378270, -0.0000792889954, +0.0000121829439, + +0.0000730976633, +0.0002073097663, +0.0003656880367, +0.0003107649291, + +0.0000852806071, -0.0001280207709, -0.0003535050929, -0.0004631515878, + -0.0002863990413, -0.0000243658878, +0.0000792889954, +0.0001340123827, + +0.0001951268224, +0.0002376672658, +0.0003596964250, +0.0004387857000, + +0.0003229478730, +0.0000671060515, -0.0001951268224, -0.0005118833633, + -0.0006582784102, -0.0003778709806, +0.0000609147194, +0.0002254843219, + +0.0003291392051, +0.0003475134811, +0.0002254843219, +0.0001402037148, + +0.0002804074296, +0.0001280207709, -0.0001705612143, -0.0005058917515, + -0.0006339125225, -0.0008228480128, -0.0003778709806, +0.0000305572199, + +0.0006764529658, +0.0005058917515, +0.0008715797883, -0.0002925903735, + +0.0007070101857, -0.0001158378270, -0.0003535050929, +0.0006095466347, + -0.0003596964250, -0.0009386858398, -0.0009508687837, -0.0001705612143, + +0.0005546235271, +0.0012067106052, +0.0010239664470, +0.0011214299980, + +0.0002254843219, +0.0001280207709, -0.0003656880367, -0.0002438585980, + -0.0004449770322, -0.0004815258638, -0.0009690433393, -0.0013652885960, + -0.0006826442980, +0.0009265028959, +0.0019320950669, +0.0019015378470, + +0.0010970641102, -0.0001645696026, -0.0009203115638, -0.0006033553026, + -0.0006460954663, -0.0010848811664, -0.0004693429199, -0.0004022368684, + -0.0014933093669, -0.0022552426603, +0.0010726982225, +0.0125190732974, + +0.0051258238466, -0.0314317954863, -0.0373013780707, +0.0362652286798, + +0.1530511284202, +0.1628701817456, -0.0260621130417, -0.1997020171760, + -0.1606942280807, -0.0844216097464, -0.0949780307569, -0.0449870181746, + +0.0905592170961, +0.1607551428001, +0.1115320551228, +0.0124337926902, + -0.0394711404034, -0.0241971240264, -0.0250015977631, -0.0405194727382, + -0.0221551827442, +0.0141404034352, +0.0177485520272, -0.0056317155982, + -0.0091364090274, +0.0046442979828, +0.0022184941082, -0.0105198721789, + -0.0022246854404, +0.0198270421410, +0.0181142400639, -0.0172488516077, + -0.0203023766727, +0.0083744757340, +0.0245628120631, +0.0209790293589, + +0.0021881366087, -0.0257635310565, -0.0325044937088, -0.0036265228680, + +0.0255624126223, +0.0260621130417, +0.0148352306771, +0.0107821050529, + -0.0041751547833, -0.0144451767525, +0.0067531455962, +0.0327727181945, + +0.0328336329139, +0.0142927900939, -0.0124337926902, -0.0314927102057, + -0.0242458558019, -0.0071493908528, +0.0106113441182, +0.0287499500699, + +0.0182666267226, -0.0132079089275, -0.0200403435191, -0.0085999600559, + -0.0060461354104, +0.0020906730577, +0.0184799281007, +0.0230635110845, + +0.0064789294987, -0.0109770321550, -0.0128665867785, -0.0016335130817, + +0.0088254443779, +0.0131589774316, +0.0150728979429, +0.0108368284402, + -0.0038703814659, -0.0179802276812, -0.0205034951069, -0.0130433393249, + -0.0006948272419, +0.0103553025764, +0.0109770321550, +0.0042907928900, + +0.0000792889954, -0.0025416417016, -0.0053818653885, -0.0022674256042, + +0.0040531256241, +0.0073139604554, +0.0078625923707, +0.0063752746155, + +0.0021697623327, -0.0027731176353, -0.0044859197124, -0.0048699820252, + -0.0055220691033, -0.0016822448572, +0.0081733572998, +0.0157982824046, + +0.0130980627122, +0.0014933093669, -0.0105260635111, -0.0152009187138, + -0.0122508488117, -0.0048394248053, +0.0038703814659, +0.0091607749151, + +0.0067287797084, +0.0008166566806, -0.0017126023567, +0.0003656880367, + +0.0036081485920, +0.0039678450170, +0.0006948272419, -0.0029560615139, + -0.0063083682844, -0.0069298981426, -0.0014202117036, +0.0067593369283, + +0.0093618933493, +0.0052356700619, -0.0015114839225, -0.0080515278610, + -0.0125799880168, -0.0111294188137, -0.0024319952067, +0.0069544637507, + +0.0091913321350, +0.0040287597364, -0.0029500699021, -0.0063692830038, + -0.0060217695227, -0.0054062312762, -0.0040409426802, +0.0001767525464, + +0.0038092670262, +0.0035715997603, +0.0016760535251, +0.0001829438786, + -0.0009265028959, -0.0026452965848, -0.0039800279609, -0.0031206311164, + -0.0007741162373, -0.0000730976633, -0.0014383862592, -0.0025416417016, + -0.0028158577991, -0.0033826642700, -0.0037727181945, -0.0035899740363, + -0.0021332135011, +0.0012372678250, +0.0037970840823, +0.0031390053925, + +0.0005851807470, -0.0024441781506, -0.0044371879369, -0.0038398242461, + -0.0011823447174, +0.0011032554424, +0.0018040742960, +0.0008837627322, + -0.0019992011184, -0.0053209506691, -0.0064607549431, -0.0041689634512, + -0.0001767525464, +0.0021453964450, +0.0016700619133, +0.0013531056521, + +0.0017737167965, +0.0013347313761, +0.0005180746954, -0.0003962452566, + -0.0025050928700, -0.0039984022369, -0.0032668264430, -0.0018771719593, + -0.0006033553026, +0.0008350309567, +0.0012800079888, +0.0000000000000, + -0.0009021370082, -0.0011823447174, -0.0016029558618, -0.0013896544837, + +0.0000792889954, +0.0001402037148, -0.0020417415618, -0.0033339324945, + -0.0014080287597, +0.0013225484322, +0.0016395046934, -0.0002804074296, + -0.0020539245057, -0.0022796085480, -0.0011154383863, +0.0001461953265, + +0.0003413221490, -0.0006460954663, -0.0016456960256, -0.0007862991811, + +0.0007375674056, +0.0013103654883, +0.0010667066107, +0.0001645696026, + -0.0007375674056, +0.0001583782704, +0.0015785899740, +0.0014445775914, + -0.0004022368684, -0.0019930097863, -0.0025903734771, -0.0014445775914, + +0.0007741162373, +0.0012981825444, +0.0003962452566, +0.0001461953265, + +0.0003535050929, +0.0006826442980, +0.0013958458159, +0.0018589974036, + +0.0017004194128, +0.0003596964250, -0.0011032554424, -0.0006520870781, + +0.0006582784102, +0.0002316756541, -0.0004875174755, +0.0005546235271, + +0.0018955462353, +0.0017309766327, +0.0014627521470, +0.0014933093669, + +0.0002073097663, -0.0016638705812, -0.0014383862592, -0.0002985819852, + -0.0005851807470, -0.0007497503495, +0.0005302576393, +0.0020906730577, + +0.0027183942481, +0.0021941282205, +0.0012007189934, +0.0007922907929, + +0.0009324945077, +0.0009752346715, +0.0005851807470, -0.0002863990413, + -0.0008715797883, -0.0006704613541, +0.0000061913321, -0.0000305572199, + -0.0008288396245, -0.0008532055123, -0.0003107649291, -0.0003351308169, + -0.0000305572199, +0.0013469143200, +0.0020906730577, +0.0019992011184, + +0.0014383862592, +0.0003718793689, -0.0003291392051, -0.0001158378270, + +0.0001158378270, -0.0000792889954, -0.0003291392051, +0.0001461953265, + +0.0007679249051, +0.0007191931296, +0.0009508687837, +0.0011457958858, + +0.0008472139005, +0.0005424405832, +0.0008837627322, +0.0015664070302, + +0.0014080287597, +0.0004753345317, -0.0002438585980, -0.0009081286199, + -0.0014993009786, -0.0014811264230, -0.0008837627322, -0.0004206111444, + -0.0003535050929, -0.0002985819852, -0.0001340123827, +0.0002011184342, + +0.0012190932694, +0.0021150389455, +0.0025232674256, +0.0025660075894, + +0.0010483323347, -0.0008350309567, -0.0004327940883, +0.0003475134811, + -0.0006155382465, -0.0017187936888, -0.0013165568205, -0.0000730976633, + +0.0001523866587, -0.0002498502097, +0.0000730976633, +0.0011092470541, + +0.0015969642500, +0.0005180746954, -0.0007010185740, -0.0004022368684, + -0.0001218294388, -0.0002742160975, +0.0001889354903, +0.0011032554424, + +0.0021819452766, +0.0022125024965, +0.0005789894148, -0.0009630517276, + -0.0017493509087, -0.0021759536649, -0.0018162572399, -0.0000183742760, + +0.0015542240863, +0.0007497503495, -0.0007313760735, -0.0007070101857, + +0.0000305572199, +0.0005058917515, +0.0010299580587, +0.0011701617735, + +0.0003535050929, -0.0007922907929, -0.0012434591572, -0.0010848811664, + -0.0002863990413, +0.0008228480128, +0.0009324945077, -0.0004509686439, + -0.0017737167965, -0.0014567605353, -0.0006704613541, -0.0006642700220, + -0.0007679249051, -0.0004084282005, +0.0003351308169, +0.0006399041342, + -0.0000061913321, -0.0004571599760, -0.0001036548832, +0.0002682244857, + +0.0002682244857, +0.0001096464949, +0.0004084282005, +0.0003107649291, + -0.0002376672658, -0.0000914719393, +0.0001340123827, -0.0001461953265, + -0.0002498502097, -0.0000061913321, +0.0008837627322, +0.0017615338526, + +0.0012678250449, +0.0001583782704, -0.0010910724985, -0.0022977831037, + -0.0026940283603, -0.0022490513281, -0.0008593968444, +0.0007313760735, + +0.0010177751148, +0.0004509686439, +0.0003778709806, +0.0009203115638, + +0.0012129019373, +0.0006948272419, +0.0000243658878, -0.0002438585980, + +0.0000000000000, +0.0002985819852, -0.0000609147194, -0.0005851807470, + -0.0010788895546, -0.0014323946475, -0.0009508687837, +0.0002438585980, + +0.0010117835031, +0.0011336129419, +0.0008653884562, +0.0005729978031, + +0.0003596964250, -0.0001461953265, -0.0001829438786, +0.0005180746954, + +0.0005668064709, -0.0000427401638, -0.0001767525464, -0.0000549231076, + -0.0001461953265, -0.0001523866587, -0.0001402037148, +0.0000000000000, + +0.0002620331536, +0.0002498502097, +0.0004449770322, +0.0009386858398, + +0.0005851807470, -0.0003962452566, -0.0010970641102, -0.0017797084082, + -0.0023221489914, -0.0019015378470, -0.0004997004194, +0.0009081286199, + +0.0015664070302, +0.0017309766327, +0.0019442780108, +0.0017371679648, + +0.0006520870781, -0.0000549231076, +0.0002133013781, +0.0006033553026, + +0.0004997004194, +0.0002925903735, +0.0004997004194, +0.0009630517276, + +0.0006217295786, -0.0002985819852, -0.0006582784102, -0.0006642700220, + -0.0007191931296, -0.0004937088077, -0.0003962452566, -0.0005364489714, + -0.0002620331536, +0.0002073097663, +0.0002682244857, +0.0002073097663, + +0.0004266027561, +0.0009324945077, +0.0012616337128, +0.0011945276613, + +0.0009630517276, +0.0012250848812, +0.0011945276613, +0.0000000000000, + -0.0009996005592, -0.0008777711204, -0.0007313760735, -0.0004327940883, + +0.0004875174755, +0.0007557419613, +0.0000305572199, -0.0006277211903, + -0.0003840623128, +0.0002376672658, +0.0005486319153, +0.0002194927102, + +0.0001583782704, +0.0005180746954, +0.0002073097663, -0.0003535050929, + -0.0000365488316, +0.0004266027561, +0.0004631515878, +0.0005242660276, + +0.0007010185740, +0.0009143199521, +0.0010423407230, +0.0006095466347, + -0.0000730976633, -0.0005486319153, -0.0005546235271, -0.0001523866587, + +0.0001705612143, +0.0001951268224, +0.0001461953265, +0.0000974635510, + +0.0000487317755, +0.0001218294388, +0.0001829438786, +0.0004022368684, + +0.0007191931296, +0.0007191931296, +0.0003413221490, +0.0000487317755, + +0.0002073097663, +0.0005118833633, +0.0003656880367, -0.0002011184342, + -0.0003900539245, +0.0000121829439, +0.0001829438786, -0.0002011184342, + -0.0003413221490, +0.0000305572199, +0.0005242660276, +0.0004144198123, + -0.0002620331536, -0.0005973636908, -0.0003229478730, +0.0002011184342, + +0.0002620331536, +0.0000730976633, +0.0004815258638, +0.0012007189934, + +0.0008410225684, -0.0002316756541, -0.0006217295786, +0.0001583782704, + +0.0007191931296, +0.0002073097663, -0.0002376672658, -0.0000427401638, + +0.0000549231076, +0.0000121829439, -0.0000365488316, +0.0000000000000, + -0.0000365488316, -0.0001096464949, +0.0000121829439, -0.0000365488316, + -0.0003778709806, -0.0003840623128, -0.0000061913321, +0.0005424405832, + +0.0011092470541, +0.0012738166567, +0.0011579788296, +0.0008044737368, + -0.0004631515878, -0.0020417415618, -0.0022977831037, -0.0015542240863, + -0.0008593968444, +0.0000000000000, +0.0007922907929, +0.0008410225684, + +0.0006033553026, +0.0003900539245, +0.0004997004194, +0.0008044737368, + +0.0004084282005, -0.0006095466347, -0.0016395046934, -0.0019015378470, + -0.0013774715398, -0.0002863990413, +0.0008837627322, +0.0012250848812, + +0.0005911723587, -0.0000243658878, -0.0003535050929, -0.0002498502097, + +0.0000914719393, +0.0000061913321, -0.0002863990413, -0.0003169562612, + -0.0001096464949, +0.0000427401638, -0.0002742160975, -0.0012556421011, + -0.0018468144598, -0.0010910724985, +0.0002985819852, +0.0013834631516, + +0.0015725983623, +0.0008653884562, +0.0000730976633, -0.0003535050929, + -0.0006642700220, -0.0008777711204, -0.0011457958858, -0.0012616337128, + -0.0008044737368, -0.0001583782704, +0.0007313760735, +0.0011214299980, + +0.0003596964250, -0.0006277211903, -0.0014140203715, -0.0019382863990, + -0.0012800079888, +0.0001951268224, +0.0008288396245, +0.0005302576393, + +0.0004327940883, +0.0001767525464, -0.0005608148592, -0.0007191931296, + -0.0004449770322, -0.0004022368684, -0.0003778709806, -0.0002438585980, + -0.0001461953265, -0.0001340123827, -0.0002560415418, -0.0003778709806, + -0.0005180746954, -0.0006095466347, -0.0004084282005, -0.0001705612143, + -0.0002376672658, -0.0002376672658, -0.0001036548832, -0.0001096464949, + +0.0000609147194, +0.0000121829439, -0.0007132015179, -0.0014933093669, + -0.0014933093669, -0.0009081286199, -0.0002863990413, +0.0002620331536, + +0.0008106650689, +0.0008899540643, +0.0002498502097, -0.0002620331536, + -0.0002073097663, +0.0001829438786, +0.0002620331536, -0.0001218294388, + -0.0004449770322, -0.0003718793689, -0.0003047733174, -0.0002011184342, + +0.0001158378270, +0.0004144198123, +0.0004449770322, +0.0002804074296, + -0.0001218294388, -0.0005364489714, -0.0005424405832, -0.0004022368684, + -0.0004327940883, -0.0003900539245, -0.0000183742760, +0.0003229478730, + +0.0006460954663, +0.0007862991811, +0.0004753345317, +0.0002316756541, + +0.0001218294388, -0.0002376672658, -0.0003351308169, -0.0000305572199, + +0.0001036548832, -0.0000852806071, -0.0005118833633, -0.0005058917515, + -0.0000121829439, +0.0003475134811, +0.0003475134811, +0.0003047733174, + +0.0004022368684, +0.0003535050929, -0.0001280207709, -0.0006033553026, + -0.0005364489714, -0.0002863990413, -0.0000730976633, +0.0002194927102, + +0.0002742160975, +0.0000730976633, +0.0003413221490, +0.0006704613541, + +0.0003718793689, -0.0004327940883, -0.0007801078490, -0.0002682244857, + +0.0002194927102, +0.0002194927102, +0.0006460954663, +0.0012434591572, + +0.0010177751148, +0.0001951268224, -0.0006217295786, -0.0009630517276, + -0.0004387857000, +0.0003596964250, +0.0008106650689, +0.0008106650689, + +0.0003718793689, -0.0001402037148, -0.0005546235271, -0.0007313760735, + -0.0004875174755, -0.0001645696026, +0.0002194927102, +0.0008777711204, + +0.0011579788296, +0.0005911723587, -0.0001889354903, -0.0004387857000, + -0.0001340123827, +0.0000974635510, +0.0000487317755, +0.0002011184342, + +0.0004631515878, +0.0002498502097, -0.0001705612143, -0.0002498502097, + +0.0000792889954, +0.0003778709806, +0.0002073097663, -0.0000305572199, + -0.0001280207709, -0.0003656880367, -0.0003656880367, +0.0000183742760, + +0.0003656880367, +0.0002438585980, -0.0001096464949, -0.0002742160975, + -0.0000792889954, +0.0001096464949, +0.0001402037148, +0.0001583782704, + +0.0002925903735, +0.0005242660276, +0.0005486319153, +0.0000730976633, + -0.0003778709806, -0.0001402037148, +0.0002376672658, +0.0001583782704, + -0.0001889354903, -0.0002438585980, -0.0000914719393, -0.0002498502097, + -0.0003778709806, -0.0001829438786, +0.0001218294388, +0.0002133013781, + +0.0000730976633, +0.0000792889954, -0.0000183742760, -0.0004266027561, + -0.0002682244857, +0.0002863990413, +0.0004875174755, +0.0004693429199, + +0.0002254843219, -0.0000792889954, -0.0000121829439, +0.0000183742760, + -0.0003169562612, -0.0007375674056, -0.0008350309567, -0.0004206111444, + +0.0002438585980, +0.0007313760735, +0.0008106650689, +0.0006095466347, + +0.0002925903735, -0.0003351308169, -0.0008593968444, -0.0007375674056, + -0.0000852806071, +0.0006886359097, +0.0009690433393, +0.0005851807470, + +0.0001829438786, -0.0001280207709, -0.0004206111444, -0.0004084282005, + -0.0001096464949, +0.0001951268224, +0.0002194927102, +0.0000792889954, + -0.0000792889954, -0.0002560415418, -0.0003229478730, -0.0001523866587, + +0.0001096464949, +0.0003778709806, +0.0003778709806, -0.0002254843219, + -0.0008593968444, -0.0008044737368, -0.0003107649291, +0.0000792889954, + +0.0003291392051, +0.0003656880367, +0.0001583782704, -0.0000792889954, + -0.0002254843219, -0.0001889354903, +0.0000671060515, +0.0002376672658, + +0.0001158378270, +0.0000061913321, -0.0000365488316, -0.0000730976633, + -0.0002011184342, -0.0006095466347, -0.0008899540643, -0.0007619332934, + -0.0004327940883, +0.0000183742760, +0.0004509686439, +0.0004571599760, + +0.0002925903735, +0.0002804074296, +0.0003047733174, +0.0001036548832, + -0.0000427401638, -0.0000487317755, +0.0000061913321, +0.0000549231076, + -0.0001583782704, -0.0002682244857, +0.0000792889954, +0.0002438585980, + -0.0000305572199, -0.0003047733174, -0.0002133013781, -0.0000183742760, + -0.0000487317755, -0.0002254843219, -0.0001280207709, +0.0000792889954, + +0.0000000000000, -0.0001218294388, +0.0000549231076, +0.0001829438786, + +0.0000549231076, -0.0000730976633, -0.0001829438786, -0.0002742160975, + -0.0002804074296, -0.0000609147194, +0.0002133013781, +0.0002438585980, + +0.0001829438786, +0.0001889354903, +0.0003778709806, +0.0004327940883, + +0.0001829438786, +0.0000243658878, -0.0000549231076, -0.0002985819852, + -0.0006217295786, -0.0007984821250, -0.0005118833633, +0.0000609147194, + +0.0004631515878, +0.0005729978031, +0.0004387857000, +0.0003107649291, + +0.0002376672658, +0.0001461953265, +0.0001218294388, +0.0002498502097, + +0.0003596964250, +0.0004266027561, +0.0004387857000, +0.0002316756541, + -0.0003475134811, -0.0009934092271, -0.0010483323347, -0.0002863990413, + +0.0006095466347, +0.0009324945077, +0.0006217295786, +0.0001218294388, + -0.0002376672658, -0.0002316756541, -0.0001218294388, -0.0001096464949, + -0.0001829438786, -0.0001523866587, +0.0000427401638, +0.0002804074296, + +0.0003778709806, +0.0002804074296, +0.0001767525464, +0.0001096464949, + -0.0001583782704, -0.0003718793689, -0.0001158378270, +0.0001705612143, + +0.0001889354903, +0.0000427401638, -0.0000914719393, -0.0001767525464, + -0.0002254843219, -0.0000852806071, -0.0000730976633, -0.0002194927102, + -0.0001402037148, +0.0000730976633, +0.0000852806071, -0.0000305572199, + -0.0001705612143, -0.0000852806071, +0.0003107649291, +0.0008044737368, + +0.0009690433393, +0.0007557419613, +0.0003535050929, -0.0000427401638, + -0.0002316756541, -0.0003229478730, -0.0004449770322, -0.0002925903735, + +0.0001583782704, +0.0003778709806, +0.0000671060515, -0.0002620331536, + -0.0003107649291, -0.0002438585980, -0.0000974635510, +0.0002498502097, + +0.0005364489714, +0.0004449770322, +0.0002376672658, +0.0002316756541, + +0.0002133013781, -0.0000730976633, -0.0003351308169, -0.0001523866587, + +0.0003596964250, +0.0005302576393, +0.0000549231076, -0.0002254843219, + +0.0000305572199, +0.0000609147194, -0.0003718793689, -0.0005789894148, + -0.0002742160975, +0.0001461953265, +0.0003169562612, +0.0002316756541, + -0.0000792889954, -0.0003962452566, -0.0004022368684, +0.0000000000000, + +0.0005058917515, +0.0006582784102, +0.0003047733174, -0.0004449770322, + -0.0011457958858, -0.0008532055123, +0.0002804074296, +0.0010667066107, + +0.0010239664470, +0.0006399041342, +0.0002742160975, -0.0002438585980, + -0.0008593968444, -0.0011092470541, -0.0007375674056, -0.0001705612143, + +0.0001523866587, +0.0003107649291, +0.0006095466347, +0.0008472139005, + +0.0005911723587, -0.0001402037148, -0.0005302576393, -0.0001402037148, + +0.0002682244857, +0.0000914719393, -0.0000792889954, +0.0001036548832, + +0.0000974635510, +0.0000121829439, +0.0002863990413, +0.0006033553026, + +0.0004693429199, +0.0000609147194, -0.0002742160975, -0.0003778709806, + -0.0003351308169, -0.0001705612143, +0.0000487317755, +0.0002560415418, + +0.0000914719393, -0.0005180746954, -0.0007435590174, -0.0003351308169, + +0.0002194927102, +0.0006033553026, +0.0004937088077, +0.0000974635510, + -0.0002254843219, -0.0004509686439, -0.0004571599760, -0.0001951268224, + +0.0002560415418, +0.0005973636908, +0.0002985819852, -0.0002073097663, + -0.0001158378270, +0.0002254843219, +0.0000792889954, -0.0005424405832, + -0.0008288396245, -0.0004997004194, -0.0000852806071, +0.0003351308169, + +0.0008166566806, +0.0010055921710, +0.0007010185740, +0.0001951268224, + -0.0000305572199, -0.0002620331536, -0.0008593968444, -0.0010483323347, + -0.0001705612143, +0.0009690433393, +0.0012616337128, +0.0005608148592, + -0.0004144198123, -0.0009446774516, -0.0008044737368, -0.0005242660276, + -0.0001036548832, +0.0004753345317, +0.0007191931296, +0.0006217295786, + +0.0003475134811, -0.0004387857000, -0.0009996005592, -0.0007619332934, + -0.0001889354903, +0.0003107649291, +0.0005546235271, +0.0005851807470, + +0.0005668064709, +0.0003900539245, -0.0000427401638, -0.0005424405832, + -0.0005973636908, -0.0001036548832, +0.0002073097663, +0.0000852806071, + -0.0000792889954, -0.0002011184342, -0.0001889354903, +0.0001158378270, + +0.0007801078490, +0.0011092470541, +0.0002438585980, -0.0012494507689, + -0.0017187936888, -0.0007070101857, +0.0005302576393, +0.0009265028959, + +0.0005608148592, +0.0001645696026, -0.0000974635510, -0.0001705612143, + +0.0001461953265, +0.0006460954663, +0.0006704613541, -0.0000549231076, + -0.0010299580587, -0.0016091471939, -0.0013896544837, -0.0005302576393, + +0.0004753345317, +0.0009874176153, +0.0010726982225, +0.0009996005592, + +0.0007497503495, +0.0001158378270, -0.0005486319153, -0.0009203115638, + -0.0010055921710, -0.0006826442980, -0.0002316756541, +0.0000365488316, + +0.0001767525464, +0.0001218294388, -0.0001829438786, -0.0003840623128, + +0.0000183742760, +0.0007741162373, +0.0008532055123, +0.0001523866587, + -0.0002985819852, -0.0002925903735, -0.0002376672658, -0.0001218294388, + -0.0000671060515, -0.0003840623128, -0.0009446774516, -0.0011945276613, + -0.0007801078490, +0.0001402037148, +0.0009690433393, +0.0011336129419, + +0.0004693429199, -0.0003900539245, -0.0006642700220, -0.0005486319153, + -0.0003900539245, +0.0000000000000, +0.0004144198123, +0.0005608148592, + +0.0003169562612, -0.0002620331536, -0.0005364489714, -0.0001218294388, + +0.0002925903735, +0.0005058917515, +0.0007070101857, +0.0007862991811, + +0.0005789894148, +0.0000730976633, -0.0006460954663, -0.0009934092271, + -0.0006886359097, -0.0003047733174, -0.0002742160975, -0.0003962452566, + -0.0001705612143, +0.0003778709806, +0.0006582784102, +0.0006399041342, + +0.0005789894148, +0.0002804074296, -0.0002498502097, -0.0007557419613, + -0.0008350309567, -0.0002254843219, +0.0006704613541, +0.0011579788296, + +0.0007862991811, -0.0001340123827, -0.0006277211903, -0.0004084282005, + -0.0002133013781, -0.0003413221490, -0.0002985819852, +0.0001218294388, + +0.0004206111444, +0.0004571599760, +0.0003413221490, -0.0000121829439, + -0.0003718793689, -0.0004509686439, -0.0003962452566, -0.0002376672658, + +0.0000000000000, +0.0002925903735, +0.0006582784102, +0.0008532055123, + +0.0008593968444, +0.0007497503495, +0.0003413221490, -0.0005911723587, + -0.0014811264230, -0.0011641701618, +0.0002925903735, +0.0014871180348, + +0.0014080287597, +0.0003900539245, -0.0004327940883, -0.0006764529658, + -0.0008837627322, -0.0009690433393, -0.0004875174755, +0.0003351308169, + +0.0006217295786, +0.0002316756541, +0.0001645696026, +0.0008959456761, + +0.0014749350909, +0.0010299580587, -0.0000487317755, -0.0008288396245, + -0.0011885360495, -0.0012921909327, -0.0009934092271, -0.0002316756541, + +0.0004875174755, +0.0006948272419, +0.0004144198123, +0.0000609147194, + -0.0000427401638, -0.0000549231076, -0.0004815258638, -0.0011579788296, + -0.0010055921710, -0.0000243658878, +0.0006277211903, +0.0004144198123, + +0.0000609147194, +0.0000974635510, +0.0003475134811, +0.0004084282005, + +0.0002011184342, +0.0000243658878, -0.0001705612143, -0.0003413221490, + +0.0000671060515, +0.0004997004194, +0.0004631515878, +0.0002804074296, + -0.0004022368684, -0.0015176752546, -0.0018955462353, -0.0012921909327, + -0.0004144198123, +0.0004693429199, +0.0012129019373, +0.0015664070302, + +0.0015969642500, +0.0012738166567, +0.0004571599760, -0.0002376672658, + -0.0005668064709, -0.0009874176153, -0.0012556421011, -0.0008106650689, + +0.0001218294388, +0.0006460954663, +0.0007497503495, +0.0009446774516, + +0.0010970641102, +0.0005424405832, -0.0002804074296, -0.0010726982225, + -0.0017797084082, -0.0017004194128, -0.0005608148592, +0.0008410225684, + +0.0017493509087, +0.0017737167965, +0.0008350309567, -0.0002620331536, + -0.0007679249051, -0.0005789894148, -0.0001645696026, -0.0001036548832, + -0.0002863990413, +0.0000121829439, +0.0006155382465, +0.0009812262832, + +0.0010299580587, +0.0006582784102, +0.0001829438786, -0.0000549231076, + -0.0004815258638, -0.0009874176153, -0.0009021370082, -0.0005364489714, + -0.0006095466347, -0.0007497503495, -0.0002133013781, +0.0004815258638, + +0.0005789894148, +0.0007191931296, +0.0012800079888, +0.0015480327541, + +0.0011823447174, +0.0003351308169, -0.0005180746954, -0.0010483323347, + -0.0011214299980, -0.0006886359097, -0.0000549231076, +0.0003962452566, + +0.0008410225684, +0.0010055921710, +0.0006399041342, +0.0000852806071, + -0.0002376672658, -0.0007191931296, -0.0011519872179, -0.0007191931296, + +0.0002498502097, +0.0008106650689, +0.0007375674056, +0.0002011184342, + -0.0002742160975, -0.0002925903735, -0.0003107649291, -0.0004693429199, + -0.0005302576393, -0.0002376672658, +0.0003413221490, +0.0007132015179, + +0.0007132015179, +0.0004387857000, -0.0002620331536, -0.0009324945077, + -0.0008593968444, -0.0004509686439, -0.0000549231076, +0.0006399041342, + +0.0012067106052, +0.0008288396245, -0.0000730976633, -0.0007070101857, + -0.0010117835031, -0.0009446774516, -0.0002925903735, +0.0005058917515, + +0.0009265028959, +0.0008959456761, +0.0004693429199, +0.0000183742760, + -0.0000792889954, +0.0000852806071, +0.0001951268224, +0.0000852806071, + +0.0000061913321, +0.0002742160975, +0.0004084282005, +0.0000671060515, + -0.0003413221490, -0.0006399041342, -0.0007557419613, -0.0004815258638, + -0.0002863990413, -0.0004266027561, -0.0002011184342, +0.0005546235271, + +0.0010970641102, +0.0010788895546, +0.0006704613541, +0.0001036548832, + -0.0003351308169, -0.0005424405832, -0.0005180746954, -0.0002254843219, + -0.0001036548832, -0.0003047733174, -0.0002742160975, +0.0000000000000, + +0.0002985819852, +0.0004571599760, +0.0000609147194, -0.0004631515878, + -0.0004631515878, -0.0003475134811, -0.0003778709806, -0.0003351308169, + -0.0004084282005, -0.0006399041342, -0.0006642700220, -0.0002194927102, + +0.0004815258638, +0.0008350309567, +0.0004937088077, -0.0001645696026, + -0.0005729978031, -0.0006826442980, -0.0006339125225, -0.0002742160975, + +0.0003596964250, +0.0006948272419, +0.0004084282005, +0.0000974635510, + -0.0000183742760, -0.0003351308169, -0.0006277211903, -0.0005729978031, + -0.0003291392051, -0.0001461953265, -0.0004266027561, -0.0007375674056, + -0.0004266027561, -0.0000730976633, +0.0000000000000, +0.0002620331536, + +0.0005851807470, +0.0004022368684, -0.0000121829439, -0.0002498502097, + -0.0001280207709, +0.0001218294388, +0.0002682244857, +0.0004206111444, + +0.0006095466347, +0.0002985819852, -0.0002560415418, -0.0003900539245, + -0.0001705612143, +0.0001461953265, +0.0002073097663, -0.0000914719393, + -0.0000792889954, +0.0003107649291, +0.0003291392051, +0.0000487317755, + -0.0001340123827, -0.0001523866587, -0.0001829438786, -0.0002316756541, + -0.0000730976633, +0.0001096464949, +0.0002682244857, +0.0004815258638, + +0.0004327940883, -0.0000427401638, -0.0003413221490, -0.0000427401638, + +0.0003596964250, +0.0002742160975, -0.0000365488316, +0.0000000000000, + +0.0002254843219, +0.0000427401638, -0.0004875174755, -0.0006033553026, + -0.0002560415418, +0.0000914719393, +0.0004144198123, +0.0005789894148, + +0.0004875174755, +0.0003169562612, +0.0001951268224, +0.0000121829439, + -0.0002011184342, -0.0001461953265, -0.0000183742760, -0.0001218294388, + -0.0000609147194, +0.0004266027561, +0.0009386858398, +0.0011092470541, + +0.0008288396245, +0.0001280207709, -0.0006642700220, -0.0010910724985, + -0.0010605152786, -0.0008593968444, -0.0003718793689, +0.0005118833633, + +0.0010726982225, +0.0007922907929, +0.0002804074296, +0.0000427401638, + +0.0000121829439, -0.0000852806071, -0.0001829438786, +0.0000671060515, + +0.0005364489714, +0.0008837627322, +0.0007801078490, +0.0002438585980, + -0.0000792889954, -0.0000243658878, -0.0000974635510, -0.0003718793689, + -0.0003778709806, -0.0001705612143, -0.0002133013781, -0.0002985819852, + -0.0001767525464, -0.0000121829439, +0.0000549231076, +0.0000000000000, + -0.0001218294388, -0.0000671060515, +0.0002316756541, +0.0006155382465, + +0.0006642700220, +0.0001158378270, -0.0004206111444, -0.0004206111444, + -0.0001889354903, -0.0001889354903, -0.0002804074296, -0.0001280207709, + +0.0000852806071, +0.0000427401638, -0.0000305572199, +0.0001340123827, + +0.0002011184342, -0.0000914719393, -0.0004266027561, -0.0004509686439, + -0.0001340123827, +0.0003351308169, +0.0004206111444, -0.0000852806071, + -0.0005486319153, -0.0006642700220, -0.0006704613541, -0.0003169562612, + +0.0002804074296, +0.0004509686439, +0.0003229478730, +0.0002560415418, + +0.0000792889954, -0.0001340123827, -0.0000914719393, +0.0001158378270, + +0.0000974635510, +0.0000243658878, +0.0001645696026, +0.0001645696026, + -0.0000549231076, -0.0001096464949, -0.0000487317755, -0.0002620331536, + -0.0006764529658, -0.0007557419613, -0.0003413221490, +0.0000305572199, + +0.0001705612143, +0.0004387857000, +0.0006764529658, +0.0006826442980, + +0.0005424405832, +0.0003413221490, +0.0000487317755, -0.0003291392051, + -0.0005973636908, -0.0004387857000, -0.0000914719393, -0.0000974635510, + -0.0004144198123, -0.0003962452566, +0.0000000000000, +0.0002804074296, + +0.0003229478730, +0.0003840623128, +0.0004693429199, +0.0002316756541, + -0.0002804074296, -0.0005789894148, -0.0005118833633, -0.0001645696026, + +0.0001767525464, +0.0001767525464, -0.0000121829439, +0.0000914719393, + +0.0003107649291, +0.0001583782704, -0.0000305572199, -0.0000305572199, + -0.0002133013781, -0.0003962452566, -0.0001583782704, +0.0002863990413, + +0.0006095466347, +0.0006095466347, +0.0002863990413, -0.0002376672658, + -0.0007010185740, -0.0007132015179, -0.0003475134811, -0.0001461953265, + -0.0000792889954, +0.0002011184342, +0.0005851807470, +0.0005364489714, + +0.0001705612143, +0.0000914719393, +0.0000974635510, -0.0001705612143, + -0.0003840623128, -0.0002498502097, +0.0000671060515, +0.0002804074296, + +0.0002073097663, -0.0000121829439, -0.0001767525464, -0.0002560415418, + -0.0001889354903, +0.0000852806071, +0.0002498502097, +0.0002376672658, + +0.0002498502097, +0.0000974635510, -0.0002438585980, -0.0004631515878, + -0.0003475134811, -0.0000549231076, +0.0000427401638, -0.0000305572199, + +0.0000974635510, +0.0003229478730, +0.0001645696026, -0.0003413221490, + -0.0005118833633, -0.0002985819852, -0.0002985819852, -0.0002985819852, + +0.0001889354903, +0.0006704613541, +0.0005364489714, -0.0000487317755, + -0.0005118833633, -0.0005302576393, -0.0004144198123, -0.0005180746954, + -0.0004327940883, +0.0000974635510, +0.0005242660276, +0.0004631515878, + +0.0001340123827, -0.0000974635510, -0.0001340123827, -0.0000852806071, + -0.0001523866587, -0.0001705612143, +0.0000852806071, +0.0004631515878, + +0.0004144198123, +0.0000243658878, -0.0001829438786, -0.0000730976633, + +0.0000609147194, -0.0000671060515, -0.0003047733174, -0.0001523866587, + +0.0001889354903, +0.0001523866587, -0.0001218294388, -0.0002073097663, + +0.0000121829439, +0.0002133013781, +0.0002316756541, +0.0002620331536, + +0.0003475134811, +0.0003351308169, +0.0000427401638, -0.0003291392051, + -0.0003656880367, -0.0001402037148, -0.0000305572199, +0.0000549231076, + +0.0001705612143, +0.0001340123827, +0.0001036548832, +0.0000000000000, + -0.0002316756541, -0.0002863990413, -0.0002316756541, -0.0003656880367, + -0.0004327940883, +0.0000061913321, +0.0007253844618, +0.0010483323347, + +0.0006704613541, +0.0000792889954, -0.0002133013781, -0.0002498502097, + -0.0003107649291, -0.0002682244857, -0.0000914719393, -0.0001280207709, + -0.0001767525464, +0.0000183742760, +0.0000852806071, +0.0000852806071, + +0.0003107649291, +0.0004327940883, +0.0004266027561, +0.0003107649291, + -0.0000974635510, -0.0004937088077, -0.0005424405832, -0.0003962452566, + -0.0002498502097, +0.0001705612143, +0.0006704613541, +0.0005118833633, + -0.0000183742760, -0.0002133013781, -0.0002742160975, -0.0003169562612, + -0.0000549231076, +0.0003900539245, +0.0007070101857, +0.0006033553026, + +0.0002073097663, -0.0000121829439, -0.0000914719393, -0.0002925903735, + -0.0005058917515, -0.0003840623128, +0.0001583782704, +0.0006826442980, + +0.0007862991811, +0.0005608148592, +0.0001705612143, -0.0002438585980, + -0.0003962452566, -0.0002376672658, -0.0000487317755, +0.0000243658878, + +0.0000365488316, -0.0000671060515, -0.0001280207709, +0.0000427401638, + +0.0002925903735, +0.0004144198123, +0.0004084282005, +0.0000974635510, + -0.0003413221490, -0.0003962452566, -0.0001036548832, +0.0000852806071, + +0.0000852806071, +0.0001280207709, +0.0003656880367, +0.0005118833633, + +0.0002742160975, -0.0000549231076, -0.0000914719393, -0.0000792889954, + -0.0002560415418, -0.0002254843219, +0.0000914719393, +0.0001829438786, + +0.0000061913321, -0.0000305572199, +0.0000487317755, +0.0000427401638, + -0.0000549231076, -0.0000487317755, +0.0001461953265, +0.0001829438786, + -0.0000243658878, -0.0000549231076, +0.0000305572199, -0.0001705612143, + -0.0004144198123, -0.0003413221490, -0.0001889354903, -0.0001583782704, + -0.0000243658878, +0.0002133013781, +0.0002742160975, +0.0002011184342, + +0.0003047733174, +0.0003596964250, +0.0001645696026, -0.0000914719393, + -0.0002620331536, -0.0003169562612, -0.0003229478730, -0.0002925903735, + -0.0002316756541, -0.0001461953265, +0.0000549231076, +0.0003840623128, + +0.0005424405832, +0.0004631515878, +0.0002376672658, -0.0000609147194, + -0.0002560415418, -0.0002498502097, -0.0002985819852, -0.0003840623128, + -0.0002133013781, +0.0000427401638, +0.0000549231076, -0.0000852806071, + -0.0000671060515, +0.0002804074296, +0.0004997004194, +0.0001461953265, + -0.0002073097663, -0.0000183742760, +0.0001889354903, -0.0001645696026, + -0.0006826442980, -0.0007313760735, -0.0004509686439, -0.0002011184342, + +0.0000183742760, +0.0002682244857, +0.0003169562612, +0.0001461953265, + +0.0001523866587, +0.0003656880367, +0.0003962452566, +0.0002560415418, + +0.0000671060515, -0.0001829438786, -0.0003413221490, -0.0003596964250, + -0.0002925903735, -0.0002011184342, -0.0001158378270, -0.0000730976633, + -0.0000549231076, -0.0000061913321, -0.0000121829439, -0.0001340123827, + -0.0002073097663, -0.0000914719393, +0.0001951268224, +0.0003169562612, + +0.0000549231076, -0.0001280207709, -0.0000671060515, -0.0000487317755, + -0.0000730976633, -0.0000487317755, -0.0000792889954, -0.0001523866587, + -0.0002073097663, -0.0002620331536, -0.0001096464949, +0.0002620331536, + +0.0003962452566, +0.0001705612143, -0.0000549231076, -0.0002620331536, + -0.0003840623128, -0.0003107649291, -0.0002133013781, -0.0002376672658, + -0.0001158378270, +0.0002073097663, +0.0003229478730, +0.0000852806071, + -0.0001523866587, -0.0002316756541, -0.0001889354903, -0.0000183742760, + +0.0001767525464, +0.0002863990413, +0.0002254843219, +0.0000609147194, + -0.0000243658878, +0.0000000000000, +0.0000305572199, +0.0000121829439, + +0.0000000000000, -0.0000243658878, +0.0000305572199, +0.0002376672658, + +0.0003718793689, +0.0001645696026, -0.0002498502097, -0.0005364489714, + -0.0004937088077, -0.0002498502097, +0.0000549231076, +0.0003107649291, + +0.0003718793689, +0.0003107649291, +0.0001951268224, +0.0001340123827, + +0.0002133013781, +0.0002620331536, +0.0001705612143, +0.0000183742760, + -0.0002254843219, -0.0004144198123, -0.0003656880367, -0.0001951268224, + -0.0000365488316, +0.0000852806071, +0.0002804074296, +0.0004875174755, + +0.0004753345317, +0.0002804074296, +0.0000609147194, -0.0001767525464, + -0.0003169562612, -0.0002863990413, -0.0002194927102, -0.0001461953265, + +0.0000000000000, +0.0001829438786, +0.0002804074296, +0.0002560415418, + +0.0003047733174, +0.0004206111444, +0.0003047733174, +0.0000000000000, + -0.0001461953265, -0.0000609147194, +0.0000730976633, +0.0002254843219, + +0.0002742160975, +0.0000609147194, -0.0003351308169, -0.0006033553026, + -0.0005424405832, -0.0002194927102, +0.0001583782704, +0.0004753345317, + +0.0006582784102, +0.0006460954663, +0.0005118833633, +0.0002560415418, + -0.0001645696026, -0.0005973636908, -0.0006582784102, -0.0003047733174, + +0.0000671060515, +0.0002804074296, +0.0003718793689, +0.0004266027561, + +0.0004631515878, +0.0003718793689, +0.0001218294388, -0.0001402037148, + -0.0003107649291, -0.0004084282005, -0.0003962452566, -0.0002376672658, + -0.0000974635510, -0.0000730976633, -0.0000061913321, +0.0001583782704, + +0.0002376672658, +0.0002133013781, +0.0002254843219, +0.0002438585980, + +0.0001158378270, -0.0002073097663, -0.0004266027561, -0.0002073097663, + +0.0001645696026, +0.0002985819852, +0.0001951268224, -0.0000121829439, + -0.0001402037148, -0.0001583782704, -0.0001218294388, +0.0000183742760, + +0.0001583782704, +0.0000914719393, -0.0001158378270, -0.0002804074296, + -0.0002620331536, -0.0000792889954, +0.0002316756541, +0.0004753345317, + +0.0003351308169, -0.0000671060515, -0.0003718793689, -0.0004327940883, + -0.0002376672658, +0.0000671060515, +0.0002742160975, +0.0002804074296, + +0.0001645696026, +0.0000365488316, -0.0001036548832, -0.0003475134811, + -0.0003900539245, -0.0000243658878, +0.0003229478730, +0.0002133013781, + -0.0000792889954, -0.0001280207709, +0.0000061913321, +0.0000487317755, + -0.0001218294388, -0.0003107649291, -0.0002254843219, -0.0000061913321, + +0.0001340123827, +0.0002254843219, +0.0002438585980, +0.0001583782704, + +0.0000121829439, -0.0000730976633, -0.0000305572199, -0.0000183742760, + -0.0001705612143, -0.0003169562612, -0.0003229478730, -0.0001829438786, + +0.0000000000000, +0.0000974635510, +0.0001158378270, +0.0000974635510, + -0.0000243658878, -0.0000549231076, +0.0000487317755, +0.0000121829439, + -0.0001280207709, -0.0001705612143, -0.0001096464949, +0.0000487317755, + +0.0002438585980, +0.0002620331536, +0.0001096464949, -0.0000061913321, + -0.0000609147194, -0.0000671060515, -0.0001340123827, -0.0003962452566, + -0.0006642700220, -0.0005851807470, -0.0002682244857, +0.0000671060515, + +0.0004022368684, +0.0005973636908, +0.0005424405832, +0.0004753345317, + +0.0004144198123, +0.0001340123827, -0.0002254843219, -0.0003656880367, + -0.0002863990413, -0.0000792889954, +0.0000609147194, -0.0000121829439, + -0.0000914719393, -0.0000914719393, -0.0002498502097, -0.0003047733174, + -0.0000792889954, +0.0001645696026, +0.0004084282005, +0.0005546235271, + +0.0003656880367, +0.0000061913321, -0.0002804074296, -0.0004266027561, + -0.0004449770322, -0.0004693429199, -0.0004206111444, -0.0000730976633, + +0.0004327940883, +0.0005911723587, +0.0002863990413, -0.0000427401638, + -0.0001951268224, -0.0002682244857, -0.0002438585980, -0.0000974635510, + +0.0000427401638, +0.0000609147194, -0.0000183742760, -0.0000427401638, + +0.0000183742760, -0.0000549231076, -0.0003351308169, -0.0004266027561, + -0.0000549231076, +0.0003351308169, +0.0003718793689, +0.0002194927102, + +0.0000609147194, -0.0000487317755, -0.0001036548832, -0.0001583782704, + -0.0001583782704, -0.0000121829439, +0.0001829438786, +0.0001402037148, + -0.0002133013781, -0.0005180746954, -0.0004937088077, -0.0001951268224, + +0.0002560415418, +0.0004997004194, +0.0003291392051, +0.0000305572199, + -0.0001402037148, -0.0001889354903, -0.0001218294388, -0.0000121829439, + +0.0001340123827, +0.0003656880367, +0.0004327940883, +0.0002073097663, + -0.0000183742760, -0.0001523866587, -0.0002925903735, -0.0003840623128, + -0.0002863990413, -0.0000243658878, +0.0001829438786, +0.0001461953265, + -0.0000609147194, -0.0001705612143, +0.0000487317755, +0.0002804074296, + +0.0001461953265, -0.0000852806071, -0.0001645696026, -0.0001645696026, + +0.0000183742760, +0.0003107649291, +0.0003107649291, -0.0000549231076, + -0.0004815258638, -0.0005973636908, -0.0004327940883, -0.0002254843219, + +0.0000549231076, +0.0004266027561, +0.0004266027561, -0.0000121829439, + -0.0002925903735, -0.0001280207709, +0.0000671060515, +0.0000792889954, + +0.0000549231076, +0.0002194927102, +0.0004387857000, +0.0002620331536, + -0.0003169562612, -0.0005058917515, +0.0000671060515, +0.0006399041342, + +0.0006217295786, +0.0003962452566, +0.0002863990413, +0.0001523866587, + -0.0000974635510, -0.0002682244857, -0.0001583782704, -0.0000549231076, + -0.0002620331536, -0.0005242660276, -0.0003718793689, +0.0002498502097, + +0.0007984821250, +0.0007741162373, +0.0004753345317, +0.0003778709806, + +0.0003291392051, -0.0000549231076, -0.0004937088077, -0.0004937088077, + -0.0002254843219, -0.0000121829439, +0.0002254843219, +0.0004815258638, + +0.0006399041342, +0.0006277211903, +0.0002985819852, -0.0001583782704, + -0.0003291392051, -0.0004266027561, -0.0007010185740, -0.0008106650689, + -0.0005302576393, -0.0001096464949, +0.0002073097663, +0.0004997004194, + +0.0008044737368, +0.0007557419613, +0.0002438585980, -0.0001829438786, + -0.0001829438786, -0.0000671060515, -0.0002194927102, -0.0004509686439, + -0.0001705612143, +0.0004753345317, +0.0007435590174, +0.0003962452566, + -0.0000121829439, -0.0001218294388, -0.0001158378270, -0.0001340123827, + -0.0000487317755, -0.0000427401638, -0.0002560415418, -0.0004144198123, + -0.0003229478730, -0.0000183742760, +0.0003475134811, +0.0004753345317, + +0.0002560415418, -0.0000792889954, -0.0004084282005, -0.0005486319153, + -0.0001402037148, +0.0006095466347, +0.0008350309567, +0.0003229478730, + -0.0001951268224, -0.0003107649291, -0.0004022368684, -0.0005789894148, + -0.0003656880367, +0.0004084282005, +0.0010423407230, +0.0008837627322, + +0.0002682244857, -0.0001036548832, -0.0002925903735, -0.0005058917515, + -0.0004937088077, +0.0000061913321, +0.0006033553026, +0.0007679249051, + +0.0004022368684, -0.0001158378270, -0.0003900539245, -0.0002498502097, + +0.0000243658878, +0.0001461953265, +0.0001645696026, +0.0002133013781, + +0.0000974635510, -0.0002804074296, -0.0004571599760, -0.0001036548832, + +0.0001705612143, -0.0000671060515, -0.0003291392051, -0.0001829438786, + +0.0000671060515, +0.0000305572199, -0.0002925903735, -0.0004022368684, + -0.0000792889954, +0.0001889354903, +0.0001461953265, -0.0000365488316, + -0.0001523866587, -0.0000914719393, -0.0000121829439, -0.0001461953265, + -0.0004084282005, -0.0004631515878, -0.0001767525464, +0.0000852806071, + +0.0001583782704, +0.0000974635510, -0.0000061913321, -0.0002254843219, + -0.0004815258638, -0.0002985819852, +0.0002316756541, +0.0005364489714, + +0.0005118833633, +0.0002682244857, -0.0000792889954, -0.0003778709806, + -0.0005118833633, -0.0002254843219, +0.0004266027561, +0.0007497503495, + +0.0003900539245, -0.0002985819852, -0.0009021370082, -0.0012067106052, + -0.0009568603954, -0.0002194927102, +0.0004753345317, +0.0007741162373, + +0.0006704613541, +0.0002804074296, -0.0002438585980, -0.0008593968444, + -0.0012067106052, -0.0008044737368, +0.0001523866587, +0.0010848811664, + +0.0016638705812, +0.0017371679648, +0.0012067106052, +0.0001645696026, + -0.0009386858398, -0.0015602156980, -0.0014933093669, -0.0008959456761, + -0.0002011184342, +0.0003596964250, +0.0007435590174, +0.0008106650689, + +0.0005302576393, +0.0001402037148, -0.0003351308169, -0.0009021370082, + -0.0011154383863, -0.0005242660276, +0.0004084282005, +0.0008350309567, + +0.0005911723587, +0.0001340123827, -0.0002742160975, -0.0003900539245, + +0.0000121829439, +0.0005424405832, +0.0005546235271, +0.0001461953265, + -0.0002073097663, -0.0002438585980, -0.0000914719393, +0.0000000000000, + +0.0000427401638, +0.0000730976633, +0.0000121829439, -0.0000792889954, + -0.0002073097663, -0.0003962452566, -0.0005729978031, -0.0005180746954, + -0.0001523866587, +0.0003718793689, +0.0006642700220, +0.0005424405832, + +0.0003047733174, +0.0001461953265, +0.0000121829439, -0.0000183742760, + -0.0000243658878, -0.0000121829439, +0.0001158378270, +0.0001218294388, + -0.0002376672658, -0.0006339125225, -0.0006339125225, -0.0002133013781, + +0.0002742160975, +0.0005118833633, +0.0004693429199, +0.0001829438786, + -0.0000549231076, +0.0000671060515, +0.0002863990413, +0.0002985819852, + +0.0002316756541, +0.0003107649291, +0.0004693429199, +0.0001829438786, + -0.0005546235271, -0.0009446774516, -0.0005973636908, +0.0000000000000, + +0.0004144198123, +0.0006095466347, +0.0006886359097, +0.0005851807470, + +0.0002376672658, -0.0001767525464, -0.0003229478730, -0.0001340123827, + +0.0000061913321, -0.0001402037148, -0.0003169562612, -0.0002804074296, + -0.0000183742760, +0.0002560415418, +0.0004022368684, +0.0003778709806, + +0.0003169562612, +0.0002194927102, +0.0001218294388, +0.0001829438786, + +0.0002560415418, +0.0000305572199, -0.0002804074296, -0.0003107649291, + -0.0001340123827, +0.0000183742760, +0.0000914719393, +0.0000671060515, + -0.0000243658878, -0.0000549231076, +0.0001402037148, +0.0003107649291, + +0.0001829438786, -0.0000365488316, -0.0001523866587, -0.0002316756541, + -0.0002682244857, -0.0002498502097, -0.0001889354903, -0.0000243658878, + +0.0001705612143, +0.0003535050929, +0.0005242660276, +0.0006339125225, + +0.0004206111444, -0.0000549231076, -0.0004266027561, -0.0004266027561, + -0.0001523866587, +0.0001096464949, +0.0001583782704, +0.0001280207709, + +0.0001767525464, +0.0002316756541, +0.0001705612143, +0.0001523866587, + +0.0000852806071, -0.0001036548832, -0.0002133013781, -0.0001036548832, + +0.0000427401638, +0.0001096464949, +0.0000243658878, -0.0002194927102, + -0.0004266027561, -0.0004144198123, -0.0003291392051, -0.0001951268224, + +0.0001096464949, +0.0004327940883, +0.0004937088077, +0.0002133013781, + -0.0001767525464, -0.0004144198123, -0.0004144198123, -0.0002560415418, + -0.0000243658878, +0.0001280207709, +0.0000974635510, -0.0000609147194, + -0.0001705612143, -0.0001461953265, -0.0000914719393, +0.0000549231076, + +0.0003778709806, +0.0005668064709, +0.0002254843219, -0.0004693429199, + -0.0007375674056, -0.0003047733174, +0.0002438585980, +0.0004571599760, + +0.0004206111444, +0.0002316756541, +0.0000000000000, -0.0002254843219, + -0.0003351308169, -0.0002682244857, -0.0001402037148, -0.0000914719393, + -0.0000609147194, -0.0000427401638, -0.0000305572199, -0.0000365488316, + -0.0000852806071, -0.0001340123827, -0.0000609147194, +0.0000549231076, + +0.0001889354903, +0.0002804074296, +0.0001645696026, -0.0000549231076, + -0.0002011184342, -0.0003413221490, -0.0004449770322, -0.0002925903735, + +0.0000305572199, +0.0003047733174, +0.0004022368684, +0.0003291392051, + +0.0000974635510, -0.0002742160975, -0.0006217295786, -0.0006642700220, + -0.0003778709806, -0.0000427401638, +0.0001402037148, +0.0002985819852, + +0.0004022368684, +0.0002804074296, -0.0000852806071, -0.0004631515878, + -0.0004449770322, +0.0000487317755, +0.0004571599760, +0.0004206111444, + +0.0001829438786, +0.0000549231076, -0.0000061913321, -0.0001645696026, + -0.0003229478730, -0.0002438585980, +0.0000549231076, +0.0003535050929, + +0.0003718793689, +0.0000671060515, -0.0003107649291, -0.0004753345317, + -0.0003169562612, -0.0000671060515, -0.0000121829439, -0.0001158378270, + -0.0000974635510, +0.0001218294388, +0.0003047733174, +0.0002011184342, + -0.0000183742760, -0.0000730976633, +0.0000671060515, +0.0002376672658, + +0.0002194927102, -0.0000427401638, -0.0003656880367, -0.0004571599760, + -0.0002194927102, +0.0000365488316, +0.0000549231076, -0.0000487317755, + +0.0000000000000, +0.0002133013781, +0.0003778709806, +0.0004022368684, + +0.0003596964250, +0.0002438585980, +0.0000549231076, -0.0001523866587, + -0.0002620331536, -0.0002438585980, -0.0001461953265, -0.0000549231076, + +0.0000365488316, +0.0001158378270, +0.0001829438786, +0.0002011184342, + +0.0001523866587, +0.0000609147194, -0.0000609147194, -0.0001402037148, + +0.0000061913321, +0.0002620331536, +0.0002682244857, -0.0000609147194, + -0.0003962452566, -0.0003962452566, -0.0001705612143, +0.0000549231076, + +0.0002254843219, +0.0003291392051, +0.0003351308169, +0.0001951268224, + -0.0000487317755, -0.0002133013781, -0.0002194927102, -0.0001645696026, + +0.0000121829439, +0.0003291392051, +0.0004144198123, +0.0002316756541, + +0.0000305572199, -0.0000487317755, -0.0000974635510, -0.0001218294388, + -0.0001767525464, -0.0001523866587, -0.0000061913321, +0.0000549231076, + -0.0001036548832, -0.0002742160975, -0.0001767525464, +0.0001583782704, + +0.0004266027561, +0.0004875174755, +0.0003047733174, -0.0001340123827, + -0.0006217295786, -0.0007801078490, -0.0005364489714, -0.0000852806071, + +0.0002863990413, +0.0004815258638, +0.0004327940883, +0.0002011184342, + -0.0000183742760, -0.0001461953265, -0.0001889354903, -0.0001523866587, + -0.0000183742760, +0.0001889354903, +0.0003778709806, +0.0002925903735, + -0.0000852806071, -0.0004631515878, -0.0005546235271, -0.0004022368684, + -0.0002194927102, -0.0000061913321, +0.0003229478730, +0.0005424405832, + +0.0004387857000, +0.0001340123827, -0.0001767525464, -0.0004206111444, + -0.0004753345317, -0.0003535050929, -0.0000914719393, +0.0002133013781, + +0.0003656880367, +0.0002316756541, +0.0001280207709, +0.0002011184342, + +0.0002133013781, +0.0000061913321, -0.0002498502097, -0.0003475134811, + -0.0002133013781, -0.0000061913321, +0.0001158378270, +0.0001218294388, + +0.0000000000000, -0.0003107649291, -0.0005424405832, -0.0003535050929, + +0.0001340123827, +0.0004022368684, +0.0003413221490, +0.0002498502097, + +0.0002254843219, +0.0000852806071, -0.0001951268224, -0.0003962452566, + -0.0002133013781, +0.0001340123827, +0.0002498502097, +0.0001829438786, + +0.0002133013781, +0.0003351308169, +0.0003656880367, +0.0001705612143, + -0.0000914719393, -0.0001889354903, -0.0002133013781, -0.0002560415418, + -0.0002254843219, -0.0000487317755, +0.0002254843219, +0.0004815258638, + +0.0004631515878, +0.0002073097663, -0.0000427401638, -0.0001705612143, + -0.0002011184342, -0.0001218294388, +0.0000609147194, +0.0002498502097, + +0.0002194927102, +0.0000243658878, -0.0000852806071, +0.0000183742760, + +0.0002073097663, +0.0001767525464, -0.0000974635510, -0.0002925903735, + -0.0002620331536, -0.0001583782704, -0.0001096464949, -0.0000427401638, + +0.0001280207709, +0.0002804074296, +0.0001951268224, +0.0000305572199, + +0.0000427401638, +0.0001829438786, +0.0002011184342, +0.0000671060515, + -0.0000121829439, +0.0000609147194, +0.0001889354903, +0.0001645696026, + -0.0000121829439, -0.0001829438786, -0.0002498502097, -0.0002073097663, + -0.0001340123827, -0.0001767525464, -0.0001829438786, -0.0000487317755, + +0.0001340123827, +0.0002316756541, +0.0002073097663, +0.0000609147194, + -0.0000365488316, -0.0000243658878, -0.0000183742760, -0.0000974635510, + -0.0000609147194, +0.0000852806071, +0.0002498502097, +0.0002376672658, + -0.0000183742760, -0.0002438585980, -0.0001461953265, +0.0000183742760, + +0.0000609147194, +0.0000427401638, -0.0000427401638, -0.0002073097663, + -0.0002133013781, +0.0000000000000, +0.0002742160975, +0.0003656880367, + +0.0001767525464, -0.0000852806071, -0.0001583782704, -0.0000305572199, + +0.0001340123827, +0.0002194927102, +0.0001280207709, -0.0000671060515, + -0.0002682244857, -0.0002985819852, -0.0000487317755, +0.0002254843219, + +0.0002376672658, +0.0001402037148, +0.0000792889954, -0.0000305572199, + -0.0002133013781, -0.0003169562612, -0.0002254843219, +0.0000243658878, + +0.0002682244857, +0.0003475134811, +0.0001280207709, -0.0002254843219, + -0.0004084282005, -0.0003229478730, -0.0001951268224, -0.0000974635510, + +0.0000000000000, +0.0000914719393, +0.0001096464949, +0.0000487317755, + -0.0000549231076, -0.0001402037148, -0.0001645696026, -0.0000061913321, + +0.0002254843219, +0.0002742160975, +0.0000792889954, -0.0001280207709, + -0.0002560415418, -0.0002682244857, -0.0001461953265, +0.0000243658878, + +0.0001340123827, +0.0001158378270, -0.0000305572199, -0.0001218294388, + +0.0000487317755, +0.0002438585980, +0.0001523866587, -0.0001280207709, + -0.0003351308169, -0.0004022368684, -0.0002985819852, -0.0000914719393, + +0.0001645696026, +0.0003656880367, +0.0003718793689, +0.0001461953265, + -0.0002194927102, -0.0004875174755, -0.0003840623128, -0.0000121829439, + +0.0003169562612, +0.0004144198123, +0.0002498502097, -0.0000061913321, + -0.0001096464949, -0.0000730976633, -0.0000671060515, -0.0001523866587, + -0.0002254843219, -0.0001705612143, -0.0000061913321, +0.0000914719393, + +0.0000974635510, +0.0000671060515, +0.0000305572199, +0.0000609147194, + +0.0001461953265, +0.0001705612143, +0.0000974635510, -0.0000427401638, + -0.0001583782704, -0.0001340123827, +0.0000121829439, +0.0001951268224, + +0.0002560415418, +0.0001767525464, +0.0000487317755, -0.0000305572199, + -0.0000730976633, -0.0000671060515, -0.0000792889954, -0.0001705612143, + -0.0003291392051, -0.0003778709806, -0.0002194927102, +0.0000305572199, + +0.0002682244857, +0.0004571599760, +0.0004327940883, +0.0001705612143, + -0.0000609147194, -0.0001280207709, -0.0001461953265, -0.0001096464949, + +0.0000061913321, +0.0001158378270, +0.0001889354903, +0.0002498502097, + +0.0002011184342, +0.0000427401638, -0.0001036548832, -0.0001829438786, + -0.0001829438786, -0.0001096464949, +0.0000183742760, +0.0000671060515, + -0.0000792889954, -0.0002742160975, -0.0002560415418, -0.0000427401638, + +0.0001583782704, +0.0002254843219, +0.0001829438786, +0.0000974635510, + +0.0000671060515, +0.0001218294388, +0.0001705612143, +0.0000974635510, + +0.0000000000000, -0.0001096464949, -0.0001951268224, -0.0001402037148, + +0.0000487317755, +0.0001645696026, +0.0001705612143, +0.0000671060515, + -0.0001583782704, -0.0003475134811, -0.0002498502097, +0.0000243658878, + +0.0001705612143, +0.0001583782704, +0.0001705612143, +0.0001951268224, + +0.0001583782704, +0.0000609147194, -0.0000305572199, -0.0001036548832, + -0.0001889354903, -0.0002560415418, -0.0002073097663, -0.0000609147194, + +0.0001158378270, +0.0003047733174, +0.0003169562612, +0.0000852806071, + -0.0001829438786, -0.0003229478730, -0.0002742160975, +0.0000183742760, + +0.0003229478730, +0.0003169562612, +0.0000914719393, +0.0000000000000, + +0.0000000000000, -0.0000852806071, -0.0002133013781, -0.0001705612143, + -0.0000487317755, -0.0000061913321, -0.0000183742760, +0.0000000000000, + +0.0000974635510, +0.0002376672658, +0.0002620331536, +0.0000914719393, + -0.0001340123827, -0.0002073097663, -0.0001096464949, +0.0000609147194, + +0.0001829438786, +0.0001280207709, -0.0000609147194, -0.0002804074296, + -0.0004449770322, -0.0004144198123, -0.0000914719393, +0.0003169562612, + +0.0005242660276, +0.0004509686439, +0.0002376672658, +0.0000121829439, + -0.0001767525464, -0.0002560415418, -0.0000671060515, +0.0001829438786, + +0.0001767525464, -0.0000365488316, -0.0001036548832, +0.0000121829439, + +0.0000609147194, -0.0000427401638, -0.0001158378270, -0.0000365488316, + +0.0001523866587, +0.0003047733174, +0.0002804074296, +0.0001280207709, + +0.0000243658878, +0.0000000000000, -0.0000549231076, -0.0001645696026, + -0.0001523866587, -0.0000183742760, +0.0000427401638, -0.0000549231076, + -0.0001705612143, -0.0001951268224, -0.0001280207709, +0.0000000000000, + +0.0001096464949, +0.0000792889954, +0.0000061913321, +0.0000183742760, + +0.0000549231076, +0.0000671060515, +0.0000852806071, +0.0000792889954, + +0.0000427401638, +0.0000974635510, +0.0001645696026, +0.0000730976633, + -0.0001889354903, -0.0003900539245, -0.0003169562612, -0.0000671060515, + +0.0001280207709, +0.0002742160975, +0.0002985819852, +0.0001218294388, + -0.0001583782704, -0.0002985819852, -0.0002073097663, +0.0000305572199, + +0.0002073097663, +0.0002316756541, +0.0001829438786, +0.0000974635510, + -0.0000914719393, -0.0002560415418, -0.0002011184342, -0.0000061913321, + +0.0001461953265, +0.0002133013781, +0.0002194927102, +0.0001218294388, + -0.0000974635510, -0.0002742160975, -0.0002438585980, -0.0000609147194, + +0.0000792889954, +0.0000852806071, +0.0000305572199, +0.0000000000000, + -0.0000427401638, -0.0001158378270, -0.0000792889954, +0.0000305572199, + +0.0001218294388, +0.0001583782704, +0.0001951268224, +0.0001583782704, + +0.0000000000000, -0.0001461953265, -0.0001829438786, -0.0002011184342, + -0.0002133013781, -0.0001280207709, +0.0000305572199, +0.0000974635510, + +0.0000121829439, -0.0000549231076, +0.0000183742760, +0.0001158378270, + +0.0000852806071, +0.0000000000000, +0.0000671060515, +0.0001583782704, + +0.0000183742760, -0.0002254843219, -0.0002863990413, -0.0001461953265, + +0.0000427401638, +0.0001767525464, +0.0002438585980, +0.0002682244857, + +0.0001705612143, -0.0000792889954, -0.0003351308169, -0.0004022368684, + -0.0002560415418, +0.0000000000000, +0.0002011184342, +0.0002133013781, + +0.0000427401638, -0.0001280207709, -0.0001829438786, -0.0000792889954, + +0.0000671060515, +0.0001340123827, +0.0000852806071, +0.0000243658878, + -0.0000305572199, -0.0000792889954, -0.0001036548832, -0.0000609147194, + +0.0000487317755, +0.0001461953265, +0.0001036548832, -0.0000243658878, + -0.0001461953265, -0.0001523866587, -0.0000730976633, +0.0000243658878, + +0.0001280207709, +0.0002133013781, +0.0002011184342, +0.0001158378270, + +0.0000427401638, -0.0000183742760, -0.0000852806071, -0.0000914719393, + -0.0000305572199, +0.0000852806071, +0.0002011184342, +0.0001340123827, + -0.0000549231076, -0.0001645696026, -0.0001461953265, -0.0002011184342, + -0.0002985819852, -0.0002316756541, +0.0000061913321, +0.0001461953265, + +0.0000792889954, -0.0000305572199, -0.0000609147194, -0.0000671060515, + -0.0000792889954, -0.0000305572199, +0.0000852806071, +0.0000730976633, + -0.0000671060515, -0.0001036548832, +0.0000609147194, +0.0001280207709, + -0.0000427401638, -0.0002254843219, -0.0002011184342, -0.0001036548832, + -0.0000427401638, -0.0000121829439, -0.0000365488316, -0.0000243658878, + +0.0000914719393, +0.0002073097663, +0.0002011184342, +0.0000487317755, + -0.0001523866587, -0.0002316756541, -0.0001951268224, -0.0000792889954, + +0.0001036548832, +0.0002682244857, +0.0002804074296, +0.0002011184342, + +0.0000427401638, -0.0001158378270, -0.0002073097663, -0.0001645696026, + -0.0000427401638, +0.0000792889954, +0.0002194927102, +0.0003107649291, + +0.0001402037148, -0.0002011184342, -0.0004206111444, -0.0003169562612, + -0.0000487317755, +0.0001461953265, +0.0002254843219, +0.0002498502097, + +0.0001767525464, +0.0000365488316, -0.0000487317755, +0.0000061913321, + +0.0001523866587, +0.0001583782704, -0.0000730976633, -0.0002438585980, + -0.0001096464949, +0.0000974635510, +0.0001402037148, +0.0001218294388, + +0.0001280207709, +0.0000549231076, -0.0001829438786, -0.0004084282005, + -0.0004144198123, -0.0002560415418, -0.0000243658878, +0.0001951268224, + +0.0003596964250, +0.0003840623128, +0.0002560415418, +0.0000671060515, + -0.0000427401638, -0.0001158378270, -0.0001158378270, -0.0000549231076, + +0.0000061913321, +0.0000549231076, +0.0001096464949, +0.0000549231076, + -0.0000609147194, -0.0001036548832, -0.0000852806071, -0.0000852806071, + -0.0000852806071, -0.0000549231076, +0.0000487317755, +0.0002254843219, + +0.0003047733174, +0.0001767525464, -0.0000487317755, -0.0002073097663, + -0.0002073097663, -0.0000852806071, +0.0000914719393, +0.0002804074296, + +0.0003656880367, +0.0002925903735, +0.0000609147194, -0.0002011184342, + -0.0003107649291, -0.0001829438786, +0.0000121829439, +0.0001705612143, + +0.0002620331536, +0.0002438585980, +0.0000549231076, -0.0001096464949, + -0.0001340123827, -0.0000974635510, -0.0000730976633, -0.0000121829439, + +0.0000183742760, -0.0000609147194, -0.0001402037148, -0.0000549231076, + +0.0000792889954, +0.0000730976633, -0.0000852806071, -0.0001829438786, + -0.0000730976633, +0.0001523866587, +0.0003169562612, +0.0003047733174, + +0.0001036548832, -0.0001523866587, -0.0002682244857, -0.0002073097663, + -0.0001158378270, -0.0001218294388, -0.0001402037148, -0.0000609147194, + +0.0000730976633, +0.0001158378270, +0.0000487317755, +0.0000243658878, + +0.0000671060515, +0.0000914719393, +0.0000914719393, +0.0000487317755, + +0.0000305572199, +0.0000609147194, +0.0000609147194, +0.0000121829439, + -0.0000061913321, -0.0000365488316, -0.0000974635510, -0.0001158378270, + -0.0000061913321, +0.0000914719393, -0.0000121829439, -0.0002011184342, + -0.0001461953265, +0.0000730976633, +0.0001889354903, +0.0001705612143, + +0.0001461953265, +0.0000671060515, -0.0001096464949, -0.0002133013781, + -0.0001218294388, +0.0000852806071, +0.0002316756541, +0.0002376672658, + +0.0002316756541, +0.0003107649291, +0.0002742160975, +0.0000487317755, + -0.0001951268224, -0.0002498502097, -0.0001523866587, -0.0001036548832, + -0.0001461953265, -0.0000671060515, +0.0001218294388, +0.0002376672658, + +0.0001280207709, -0.0000549231076, -0.0000914719393, +0.0000365488316, + +0.0001461953265, +0.0000609147194, -0.0001583782704, -0.0002985819852, + -0.0002254843219, -0.0000061913321, +0.0002011184342, +0.0002985819852, + +0.0001951268224, -0.0000061913321, -0.0001158378270, -0.0000609147194, + +0.0000487317755, +0.0001158378270, +0.0001096464949, +0.0000000000000, + -0.0001645696026, -0.0002925903735, -0.0002925903735, -0.0001583782704, + +0.0001402037148, +0.0004266027561, +0.0004509686439, +0.0001583782704, + -0.0002073097663, -0.0004509686439, -0.0004631515878, -0.0002498502097, + +0.0000914719393, +0.0004266027561, +0.0006277211903, +0.0004875174755, + +0.0000427401638, -0.0003900539245, -0.0005364489714, -0.0004084282005, + -0.0001218294388, +0.0001158378270, +0.0002376672658, +0.0002438585980, + +0.0001705612143, +0.0000305572199, -0.0000792889954, -0.0001096464949, + -0.0001461953265, -0.0002254843219, -0.0002620331536, -0.0001583782704, + +0.0000549231076, +0.0002133013781, +0.0001889354903, +0.0000974635510, + -0.0000061913321, -0.0001767525464, -0.0003107649291, -0.0002376672658, + -0.0000852806071, +0.0000000000000, +0.0000609147194, +0.0001767525464, + +0.0002073097663, +0.0001096464949, -0.0000427401638, -0.0001583782704, + -0.0001951268224, -0.0000914719393, +0.0000852806071, +0.0002316756541, + +0.0002316756541, +0.0001280207709, -0.0000121829439, -0.0001583782704, + -0.0002804074296, -0.0002620331536, -0.0000427401638, +0.0002560415418, + +0.0004266027561, +0.0003840623128, +0.0002438585980, +0.0000609147194, + -0.0001705612143, -0.0003291392051, -0.0002863990413, -0.0001402037148, + -0.0000243658878, +0.0000609147194, +0.0001767525464, +0.0002133013781, + +0.0001096464949, -0.0000427401638, -0.0001340123827, -0.0001340123827, + -0.0000852806071, -0.0000852806071, -0.0001158378270, -0.0000487317755, + +0.0000365488316, -0.0000121829439, -0.0001523866587, -0.0001889354903, + -0.0000487317755, +0.0001583782704, +0.0003107649291, +0.0003291392051, + +0.0002073097663, -0.0000121829439, -0.0002560415418, -0.0003475134811, + -0.0002073097663, +0.0000365488316, +0.0001829438786, +0.0001218294388, + -0.0000243658878, -0.0000487317755, -0.0000121829439, +0.0000061913321, + +0.0000121829439, +0.0000243658878, +0.0000000000000, -0.0000549231076, + -0.0000974635510, -0.0000671060515, -0.0000365488316, -0.0000061913321, + +0.0000914719393, +0.0001889354903, +0.0001340123827, +0.0000305572199, + +0.0000365488316, +0.0001340123827, +0.0001280207709, -0.0000365488316, + -0.0001951268224, -0.0001583782704, +0.0000243658878, +0.0002254843219, + +0.0002863990413, +0.0002073097663, +0.0000974635510, -0.0000792889954, + -0.0002682244857, -0.0002560415418, -0.0000305572199, +0.0001583782704, + +0.0002316756541, +0.0002133013781, +0.0001583782704, +0.0000487317755, + -0.0000730976633, -0.0001705612143, -0.0001096464949, +0.0000852806071, + +0.0002925903735, +0.0003413221490, +0.0002316756541, +0.0000671060515, + -0.0000671060515, -0.0001705612143, -0.0001705612143, -0.0001036548832, + -0.0000427401638, -0.0000183742760, -0.0000183742760, -0.0000487317755, + -0.0000427401638, +0.0000183742760, +0.0000792889954, +0.0000609147194, + -0.0000365488316, -0.0002133013781, -0.0003047733174, -0.0001767525464, + +0.0000305572199, +0.0002011184342, +0.0003229478730, +0.0003351308169, + +0.0001951268224, +0.0000061913321, -0.0001340123827, -0.0001829438786, + -0.0002073097663, -0.0002011184342, -0.0000974635510, +0.0000792889954, + +0.0001829438786, +0.0002073097663, +0.0001645696026, +0.0000243658878, + -0.0001889354903, -0.0003229478730, -0.0003291392051, -0.0002742160975, + -0.0001645696026, +0.0000305572199, +0.0002376672658, +0.0003475134811, + +0.0003596964250, +0.0002985819852, +0.0001583782704, -0.0000974635510, + -0.0003718793689, -0.0004206111444, -0.0002316756541, +0.0000243658878, + +0.0001951268224, +0.0002316756541, +0.0001889354903, +0.0001158378270, + +0.0000061913321, -0.0001036548832, -0.0001218294388, -0.0000792889954, + -0.0000852806071, -0.0000974635510, +0.0000243658878, +0.0001829438786, + +0.0001461953265, -0.0000730976633, -0.0002133013781, -0.0002254843219, + -0.0001645696026, -0.0000121829439, +0.0002011184342, +0.0003169562612, + +0.0002560415418, +0.0000609147194, -0.0001036548832, -0.0001645696026, + -0.0000974635510, +0.0000305572199, +0.0001096464949, +0.0000061913321, + -0.0001889354903, -0.0002742160975, -0.0001461953265, +0.0000974635510, + +0.0002985819852, +0.0003351308169, +0.0001767525464, -0.0000427401638, + -0.0002073097663, -0.0002254843219, -0.0001402037148, -0.0000487317755, + -0.0000365488316, -0.0000121829439, +0.0001036548832, +0.0002254843219, + +0.0002316756541, +0.0001523866587, +0.0000609147194, +0.0000121829439, + -0.0000852806071, -0.0002438585980, -0.0003535050929, -0.0002925903735, + -0.0001402037148, -0.0000121829439, +0.0000852806071, +0.0001951268224, + +0.0002985819852, +0.0002620331536, +0.0000792889954, -0.0000549231076, + -0.0000730976633, -0.0000549231076, -0.0000609147194, -0.0000792889954, + -0.0001096464949, -0.0001461953265, -0.0001523866587, -0.0000914719393, + +0.0000061913321, +0.0000914719393, +0.0001645696026, +0.0001767525464, + +0.0001340123827, +0.0000487317755, -0.0000487317755, -0.0000852806071, + +0.0000000000000, +0.0000974635510, +0.0001218294388, +0.0000609147194, + -0.0000365488316, -0.0001036548832, -0.0001036548832, -0.0001036548832, + -0.0001280207709, -0.0001402037148, -0.0001218294388, -0.0000365488316, + +0.0000914719393, +0.0001889354903, +0.0002376672658, +0.0002316756541, + +0.0001280207709, +0.0000000000000, -0.0000792889954, -0.0000974635510, + -0.0000914719393, -0.0000609147194, -0.0000061913321, +0.0000427401638, + +0.0001158378270, +0.0001280207709, -0.0000121829439, -0.0001218294388, + -0.0000671060515, +0.0000305572199, +0.0000730976633, +0.0000792889954, + +0.0000730976633, +0.0000243658878, -0.0001036548832, -0.0001889354903, + -0.0001461953265, -0.0000487317755, -0.0000121829439, -0.0000305572199, + -0.0000487317755, +0.0000121829439, +0.0001523866587, +0.0002133013781, + +0.0001218294388, +0.0000183742760, +0.0000000000000, -0.0000121829439, + -0.0000121829439, +0.0000061913321, +0.0000000000000, -0.0000792889954, + -0.0001951268224, -0.0002498502097, -0.0001402037148, +0.0000305572199, + +0.0001036548832, +0.0000487317755, +0.0000243658878, +0.0001218294388, + +0.0001889354903, +0.0000549231076, -0.0001340123827, -0.0001767525464, + -0.0001402037148, -0.0001280207709, -0.0000730976633, +0.0000305572199, + +0.0001218294388, +0.0001583782704, +0.0001645696026, +0.0001280207709, + -0.0000061913321, -0.0001767525464, -0.0002620331536, -0.0002316756541, + -0.0001645696026, -0.0000487317755, +0.0000974635510, +0.0002620331536, + +0.0003351308169, +0.0002498502097, +0.0000427401638, -0.0001280207709, + -0.0002133013781, -0.0002194927102, -0.0001523866587, +0.0000000000000, + +0.0001340123827, +0.0001645696026, +0.0001158378270, +0.0001036548832, + +0.0001218294388, +0.0001280207709, +0.0000792889954, -0.0000365488316, + -0.0001583782704, -0.0001829438786, -0.0001036548832, +0.0000183742760, + +0.0001218294388, +0.0001402037148, +0.0001096464949, +0.0000243658878, + -0.0001096464949, -0.0002011184342, -0.0001705612143, -0.0000183742760, + +0.0001645696026, +0.0002254843219, +0.0001340123827, -0.0000183742760, + -0.0001767525464, -0.0002376672658, -0.0001218294388, +0.0001096464949, + +0.0003535050929, +0.0004387857000, +0.0003047733174, +0.0000243658878, + -0.0002376672658, -0.0004509686439, -0.0005242660276, -0.0003840623128, + -0.0000914719393, +0.0001705612143, +0.0002742160975, +0.0001829438786, + +0.0000487317755, +0.0000061913321, +0.0000183742760, +0.0000000000000, + -0.0000061913321, +0.0000427401638, +0.0000852806071, +0.0000730976633, + +0.0000305572199, -0.0000121829439, -0.0000427401638, -0.0000427401638, + -0.0000487317755, -0.0000243658878, +0.0000487317755, +0.0001218294388, + +0.0000671060515, -0.0000305572199, -0.0000792889954, -0.0000183742760, + +0.0000365488316, +0.0000243658878, -0.0000305572199, -0.0000427401638, + -0.0000061913321, +0.0000427401638, +0.0000730976633, +0.0001158378270, + +0.0002073097663, +0.0002620331536, +0.0001889354903, +0.0000914719393, + +0.0000549231076, -0.0000183742760, -0.0001402037148, -0.0001705612143, + -0.0000730976633, +0.0000365488316, +0.0000914719393, +0.0001158378270, + +0.0001583782704, +0.0001402037148, +0.0000487317755, -0.0000609147194, + -0.0001218294388, -0.0001340123827, -0.0000852806071, -0.0000183742760, + +0.0000671060515, +0.0001645696026, +0.0002133013781, +0.0001402037148, + +0.0000243658878, -0.0000487317755, -0.0000609147194, -0.0000061913321, + +0.0000852806071, +0.0001402037148, +0.0001158378270, +0.0000000000000, + -0.0001340123827, -0.0001889354903, -0.0001280207709, -0.0000792889954, + -0.0000852806071, -0.0000549231076, +0.0000305572199, +0.0001096464949, + +0.0001218294388, +0.0000730976633, +0.0000061913321, -0.0000243658878, + -0.0000671060515, -0.0000671060515, +0.0000183742760, +0.0001402037148, + +0.0001523866587, +0.0000305572199, -0.0001158378270, -0.0001461953265, + -0.0000671060515, +0.0000671060515, +0.0001767525464, +0.0001583782704, + +0.0000183742760, -0.0001036548832, -0.0001829438786, -0.0002133013781, + -0.0001889354903, -0.0000852806071, +0.0000792889954, +0.0002438585980, + +0.0002985819852, +0.0001829438786, +0.0000121829439, -0.0000671060515, + -0.0000792889954, -0.0000792889954, -0.0000730976633, -0.0000305572199, + +0.0000487317755, +0.0000852806071, +0.0000487317755, +0.0000061913321, + -0.0000061913321, -0.0000852806071, -0.0002376672658, -0.0003169562612, + -0.0002498502097, -0.0001402037148, -0.0000609147194, +0.0000183742760, + +0.0000609147194, +0.0000121829439, -0.0000487317755, -0.0000183742760, + +0.0000852806071, +0.0001461953265, +0.0001036548832, +0.0000183742760, + -0.0000427401638, -0.0000792889954, -0.0001096464949, -0.0001402037148, + -0.0000914719393, +0.0000243658878, +0.0001218294388, +0.0000914719393, + -0.0000427401638, -0.0001645696026, -0.0001829438786, -0.0000914719393, + +0.0000609147194, +0.0001523866587, +0.0000974635510, +0.0000061913321, + -0.0000852806071, -0.0001889354903, -0.0002376672658, -0.0001583782704, + +0.0000000000000, +0.0001523866587, +0.0002073097663, +0.0001645696026, + +0.0000671060515, +0.0000000000000, +0.0000000000000, +0.0000061913321, + -0.0000305572199, -0.0000852806071, -0.0001158378270, -0.0001340123827, + -0.0001096464949, -0.0000549231076, -0.0000121829439, +0.0000000000000, + +0.0000243658878, +0.0000671060515, +0.0000852806071, +0.0000549231076, + +0.0000305572199, +0.0000427401638, +0.0000549231076, +0.0000061913321, + -0.0000792889954, -0.0001340123827, -0.0000974635510, +0.0000243658878, + +0.0001583782704, +0.0001705612143, +0.0000730976633, +0.0000000000000, + -0.0000183742760, -0.0000243658878, -0.0000305572199, -0.0000183742760, + +0.0000061913321, +0.0000305572199, +0.0000061913321, -0.0000305572199, + -0.0000609147194, -0.0000549231076, -0.0000243658878, +0.0000183742760, + +0.0000243658878, +0.0000121829439, +0.0000487317755, +0.0001402037148, + +0.0001218294388, -0.0000365488316, -0.0001767525464, -0.0001583782704, + -0.0000365488316, +0.0000671060515, +0.0001280207709, +0.0001402037148, + +0.0000671060515, -0.0000671060515, -0.0001645696026, -0.0001096464949, + +0.0000365488316, +0.0001280207709, +0.0000671060515, -0.0000427401638, + -0.0000792889954, -0.0000487317755, -0.0000061913321, +0.0000730976633, + +0.0001461953265, +0.0001402037148, +0.0000671060515, +0.0000000000000, + -0.0000427401638, -0.0000671060515, -0.0000730976633, -0.0000183742760, + +0.0001036548832, +0.0001767525464, +0.0000974635510, -0.0000549231076, + -0.0001523866587, -0.0001523866587, -0.0000792889954, +0.0000121829439, + +0.0001158378270, +0.0001889354903, +0.0001889354903, +0.0000730976633, + -0.0000609147194, -0.0001158378270, -0.0000609147194, +0.0000243658878, + +0.0001218294388, +0.0001889354903, +0.0001767525464, +0.0000852806071, + -0.0000365488316, -0.0001402037148, -0.0001523866587, -0.0000730976633, + +0.0000183742760, +0.0001096464949, +0.0001951268224, +0.0002316756541, + +0.0001645696026, +0.0000549231076, -0.0000305572199, -0.0000914719393, + -0.0001280207709, -0.0001096464949, -0.0000365488316, +0.0000549231076, + +0.0001158378270, +0.0001158378270, +0.0000609147194, +0.0000061913321, + -0.0000487317755, -0.0000914719393, -0.0000365488316, +0.0000852806071, + +0.0001523866587, +0.0000974635510, -0.0000243658878, -0.0001158378270, + -0.0001280207709, -0.0001036548832, -0.0000305572199, +0.0000183742760, + +0.0000000000000, -0.0000671060515, -0.0000792889954, -0.0000121829439, + +0.0000792889954, +0.0001583782704, +0.0001767525464, +0.0001036548832, + -0.0000061913321, -0.0000730976633, -0.0000487317755, +0.0000000000000, + +0.0000365488316, +0.0000183742760, -0.0000243658878, -0.0000730976633, + -0.0000792889954, -0.0000365488316, +0.0000243658878, +0.0000609147194, + +0.0000121829439, -0.0000549231076, -0.0000792889954, -0.0000974635510, + -0.0001218294388, -0.0000730976633, +0.0000183742760, +0.0000974635510, + +0.0001218294388, +0.0001096464949, +0.0000730976633, +0.0000305572199, + -0.0000243658878, -0.0000365488316, +0.0000061913321, +0.0000730976633, + +0.0000852806071, +0.0000243658878, -0.0000427401638, -0.0000974635510, + -0.0001280207709, -0.0000914719393, +0.0000000000000, +0.0000671060515, + +0.0000852806071, +0.0000852806071, +0.0000609147194, -0.0000243658878, + -0.0001036548832, -0.0000974635510, -0.0000243658878, +0.0000305572199, + +0.0000427401638, +0.0000121829439, -0.0000121829439, -0.0000183742760, + +0.0000549231076, +0.0001705612143, +0.0001889354903, +0.0000549231076, + -0.0000914719393, -0.0001158378270, -0.0000792889954, -0.0001036548832, + -0.0001218294388, -0.0000549231076, +0.0000183742760, +0.0000427401638, + +0.0000183742760, +0.0000000000000, +0.0000000000000, +0.0000000000000, + -0.0000487317755, -0.0000852806071, -0.0000852806071, -0.0000427401638, + +0.0000365488316, +0.0001340123827, +0.0002011184342, +0.0001829438786, + +0.0001158378270, +0.0000365488316, -0.0000730976633, -0.0002376672658, + -0.0003291392051, -0.0002194927102, +0.0000000000000, +0.0001583782704, + +0.0001951268224, +0.0001523866587, +0.0000609147194, -0.0000549231076, + -0.0001523866587, -0.0001645696026, -0.0001096464949, -0.0000121829439, + +0.0000792889954, +0.0001461953265, +0.0001523866587, +0.0000974635510, + -0.0000243658878, -0.0001583782704, -0.0002073097663, -0.0001036548832, + +0.0000671060515, +0.0001523866587, +0.0001461953265, +0.0001218294388, + +0.0000974635510, +0.0000487317755, -0.0000243658878, -0.0000974635510, + -0.0001158378270, -0.0000792889954, -0.0000305572199, +0.0000183742760, + +0.0000549231076, +0.0000671060515, +0.0001158378270, +0.0001829438786, + +0.0001767525464, +0.0000671060515, -0.0000792889954, -0.0001767525464, + -0.0002011184342, -0.0001705612143, -0.0000730976633, +0.0000974635510, + +0.0002376672658, +0.0002316756541, +0.0001523866587, +0.0000852806071, + +0.0000365488316, -0.0000243658878, -0.0001158378270, -0.0001705612143, + -0.0001340123827, -0.0000365488316, +0.0000061913321, +0.0000243658878, + +0.0000730976633, +0.0000914719393, +0.0000243658878, -0.0000549231076, + -0.0000914719393, -0.0000487317755, -0.0000061913321, -0.0000121829439, + -0.0000427401638, -0.0000365488316, +0.0000000000000, +0.0000121829439, + +0.0000000000000, -0.0000427401638, -0.0000792889954, -0.0000914719393, + -0.0000671060515, -0.0000061913321, +0.0000365488316, +0.0000549231076, + +0.0000427401638, +0.0000183742760, +0.0000000000000, -0.0000183742760, + -0.0000243658878, -0.0000487317755, -0.0000730976633, -0.0000792889954, + -0.0000427401638, +0.0000183742760, +0.0000427401638, +0.0000183742760, + +0.0000000000000, -0.0000061913321, +0.0000000000000, +0.0000121829439, + +0.0000000000000, -0.0000427401638, -0.0000243658878, +0.0000243658878, + +0.0000487317755, +0.0000549231076, +0.0000549231076, +0.0000061913321, + -0.0000549231076, -0.0000549231076, +0.0000365488316, +0.0001218294388, + +0.0000792889954, -0.0000305572199, -0.0000852806071, -0.0000487317755, + +0.0000061913321, +0.0000427401638, +0.0000671060515, +0.0001096464949, + +0.0001096464949, +0.0000243658878, -0.0000974635510, -0.0001340123827, + -0.0001036548832, -0.0000671060515, +0.0000000000000, +0.0001218294388, + +0.0002620331536, +0.0003047733174, +0.0002133013781, +0.0000487317755, + -0.0000974635510, -0.0002254843219, -0.0002863990413, -0.0002620331536, + -0.0001645696026, -0.0000487317755, +0.0000852806071, +0.0002011184342, + +0.0002376672658, +0.0001645696026, +0.0000549231076, +0.0000061913321, + +0.0000121829439, -0.0000243658878, -0.0001158378270, -0.0001523866587, + -0.0000609147194, +0.0000427401638, +0.0000852806071, +0.0000730976633, + +0.0000487317755, +0.0000121829439, -0.0000243658878, -0.0000730976633, + -0.0000974635510, -0.0000730976633, -0.0000243658878, +0.0000000000000, + +0.0000243658878, +0.0000487317755, +0.0000305572199, +0.0000000000000, + +0.0000121829439, +0.0000365488316, +0.0000183742760, +0.0000000000000, + -0.0000183742760, +0.0000000000000, +0.0000427401638, +0.0000852806071, + +0.0000974635510, +0.0000974635510, +0.0000609147194, -0.0000121829439, + -0.0001218294388, -0.0001829438786, -0.0001583782704, -0.0000365488316, + +0.0001218294388, +0.0002438585980, +0.0002194927102, +0.0000549231076, + -0.0001280207709, -0.0002133013781, -0.0001280207709, +0.0000427401638, + +0.0001829438786, +0.0002073097663, +0.0001705612143, +0.0001096464949, + +0.0000305572199, -0.0000427401638, -0.0000730976633, -0.0000914719393, + -0.0001036548832, -0.0000671060515, +0.0000305572199, +0.0001340123827, + +0.0001705612143, +0.0000730976633, -0.0000609147194, -0.0000914719393, + -0.0000061913321, +0.0000487317755, +0.0000243658878, -0.0000305572199, + -0.0000671060515, -0.0000671060515, -0.0000183742760, +0.0000549231076, + +0.0001096464949, +0.0001096464949, +0.0000549231076, -0.0000121829439, + -0.0000671060515, -0.0000609147194, -0.0000183742760, +0.0000549231076, + +0.0001096464949, +0.0001280207709, +0.0000609147194, -0.0000487317755, + -0.0002073097663, -0.0003107649291, -0.0002682244857, -0.0000730976633, + +0.0001158378270, +0.0002011184342, +0.0001767525464, +0.0001096464949, + +0.0000183742760, -0.0001036548832, -0.0002133013781, -0.0001951268224, + -0.0000549231076, +0.0000974635510, +0.0001829438786, +0.0001158378270, + -0.0000487317755, -0.0001829438786, -0.0002254843219, -0.0001705612143, + -0.0000183742760, +0.0001461953265, +0.0002254843219, +0.0001461953265, + +0.0000183742760, -0.0000487317755, -0.0000671060515, -0.0000914719393, + -0.0000852806071, -0.0000183742760, +0.0000487317755, +0.0000730976633, + +0.0000609147194, +0.0000609147194, +0.0000487317755, -0.0000061913321, + -0.0000730976633, -0.0000671060515, +0.0000183742760, +0.0000852806071, + +0.0000609147194, +0.0000000000000, -0.0000305572199, -0.0000061913321, + +0.0000183742760, +0.0000121829439, -0.0000121829439, +0.0000000000000, + +0.0000365488316, +0.0000427401638, +0.0000061913321, -0.0000183742760, + -0.0000305572199, -0.0000549231076, -0.0001036548832, -0.0001036548832, + -0.0000061913321, +0.0001218294388, +0.0002011184342, +0.0001951268224, + +0.0001280207709, +0.0000183742760, -0.0000914719393, -0.0001767525464, + -0.0002073097663, -0.0001583782704, -0.0000427401638, +0.0000427401638, + +0.0000487317755, +0.0000061913321, +0.0000183742760, +0.0000671060515, + +0.0000730976633, +0.0000061913321, -0.0000243658878, +0.0000000000000, + -0.0000061913321, -0.0000974635510, -0.0001705612143, -0.0001340123827, + +0.0000000000000, +0.0000730976633, +0.0000305572199, -0.0000365488316, + -0.0000671060515, -0.0000730976633, -0.0000730976633, -0.0000487317755, + +0.0000549231076, +0.0002073097663, +0.0002742160975, +0.0002011184342, + +0.0000061913321, -0.0001583782704, -0.0002073097663, -0.0001461953265, + -0.0000730976633, -0.0000061913321, +0.0000365488316, +0.0000365488316, + -0.0000121829439, -0.0000305572199, +0.0000365488316, +0.0001583782704, + +0.0001889354903, +0.0001036548832, -0.0000305572199, -0.0001402037148, + -0.0001829438786, -0.0001340123827, -0.0000061913321, +0.0001218294388, + +0.0001767525464, +0.0001340123827, +0.0000549231076, +0.0000121829439, + +0.0000061913321, -0.0000305572199, -0.0001096464949, -0.0001280207709, + -0.0000183742760, +0.0000730976633, +0.0000671060515, +0.0000365488316, + +0.0000914719393, +0.0001523866587, +0.0001096464949, -0.0000427401638, + -0.0001951268224, -0.0002560415418, -0.0001889354903, -0.0000305572199, + +0.0001583782704, +0.0002560415418, +0.0002133013781, +0.0001036548832, + +0.0000000000000, -0.0000974635510, -0.0001402037148, -0.0001096464949, + -0.0000243658878, +0.0000487317755, +0.0000852806071, +0.0000549231076, + -0.0000305572199, -0.0000792889954, -0.0000549231076, +0.0000061913321, + +0.0000671060515, +0.0000792889954, +0.0000000000000, -0.0000852806071, + -0.0000852806071, +0.0000061913321, +0.0001158378270, +0.0001767525464, + +0.0001645696026, +0.0000671060515, -0.0000914719393, -0.0001951268224, + -0.0001340123827, +0.0000121829439, +0.0000852806071, +0.0000365488316, + -0.0000365488316, -0.0000730976633, -0.0000427401638, +0.0000365488316, + +0.0001340123827, +0.0001645696026, +0.0000914719393, -0.0000243658878, + -0.0000852806071, -0.0000671060515, -0.0000183742760, +0.0000000000000, + -0.0000305572199, -0.0000609147194, +0.0000061913321, +0.0000792889954, + +0.0000671060515, -0.0000121829439, -0.0000305572199, +0.0000183742760, + +0.0000487317755, +0.0000183742760, +0.0000000000000, -0.0000061913321, + -0.0000365488316, -0.0000914719393, -0.0001340123827, -0.0001158378270, + -0.0000487317755, +0.0000061913321, +0.0000365488316, +0.0000609147194, + +0.0000852806071, +0.0001158378270, +0.0001158378270, +0.0000852806071, + +0.0000000000000, -0.0000974635510, -0.0001158378270, -0.0000183742760, + +0.0000609147194, +0.0000730976633, +0.0000609147194, +0.0000549231076, + +0.0000365488316, -0.0000305572199, -0.0000914719393, -0.0000671060515, + +0.0000121829439, +0.0000852806071, +0.0001461953265, +0.0001705612143, + +0.0001340123827, +0.0000549231076, -0.0000121829439, -0.0000609147194, + -0.0000792889954, -0.0000852806071, -0.0000730976633, -0.0000487317755, + +0.0000243658878, +0.0001036548832, +0.0001280207709, +0.0001036548832, + +0.0000487317755, -0.0000365488316, -0.0001218294388, -0.0001461953265, + -0.0000914719393, +0.0000000000000, +0.0000792889954, +0.0001340123827, + +0.0001036548832, +0.0000061913321, -0.0000427401638, -0.0000305572199, + -0.0000365488316, -0.0000792889954, -0.0000974635510, -0.0000365488316, + +0.0000305572199, +0.0000487317755, +0.0000121829439, +0.0000000000000, + +0.0000000000000, +0.0000121829439, +0.0000000000000, -0.0000183742760, + -0.0000427401638, -0.0000365488316, -0.0000243658878, -0.0000121829439, + -0.0000121829439, -0.0000305572199, -0.0000121829439, +0.0000365488316, + +0.0000730976633, +0.0000852806071, +0.0001096464949, +0.0001340123827, + +0.0001158378270, +0.0000061913321, -0.0001280207709, -0.0001951268224, + -0.0001280207709, -0.0000305572199, +0.0000365488316, +0.0000730976633, + +0.0000974635510, +0.0000671060515, +0.0000000000000, -0.0000549231076, + -0.0000427401638, +0.0000183742760, +0.0000852806071, +0.0000914719393, + +0.0000549231076, +0.0000121829439, -0.0000305572199, -0.0000730976633, + -0.0001036548832, -0.0000914719393, -0.0000365488316, +0.0000427401638, + +0.0001036548832, +0.0001096464949, +0.0000609147194, +0.0000061913321, + -0.0000183742760 +}; diff --git a/plugins/ladspa_effect/swh/impulses/05-fender-68-vibrolux-sm57-off.h b/plugins/ladspa_effect/swh/impulses/05-fender-68-vibrolux-sm57-off.h new file mode 100644 index 000000000..3c995b1a0 --- /dev/null +++ b/plugins/ladspa_effect/swh/impulses/05-fender-68-vibrolux-sm57-off.h @@ -0,0 +1,1300 @@ +float fender_68_vibrolux_sm57_off[] = { + +0.0000000000000, +0.0000000000000, +0.0000000000000, +0.0000000000000, + +0.0000000000000, +0.0000058490566, +0.0000115094340, +0.0000115094340, + +0.0000058490566, +0.0000000000000, +0.0000000000000, -0.0000173584906, + -0.0000288679245, -0.0000173584906, -0.0000058490566, +0.0000000000000, + +0.0000058490566, +0.0000230188679, +0.0000288679245, +0.0000173584906, + +0.0000115094340, +0.0000115094340, +0.0000058490566, -0.0000115094340, + -0.0000345283019, -0.0000230188679, +0.0000000000000, +0.0000058490566, + +0.0000230188679, +0.0000518867925, +0.0000633962264, +0.0000288679245, + -0.0000058490566, -0.0000173584906, -0.0000230188679, -0.0000690566038, + -0.0001035849057, -0.0000749056604, -0.0000518867925, -0.0000288679245, + +0.0000173584906, +0.0000979245283, +0.0001439622642, +0.0001209433962, + +0.0000575471698, +0.0000288679245, +0.0000115094340, -0.0000518867925, + -0.0000864150943, -0.0000633962264, -0.0000690566038, -0.0000749056604, + -0.0000345283019, +0.0000460377358, +0.0001035849057, +0.0000749056604, + +0.0000173584906, +0.0000000000000, -0.0000518867925, -0.0001266037736, + -0.0001496226415, -0.0000864150943, -0.0000288679245, -0.0000058490566, + +0.0000403773585, +0.0001496226415, +0.0002188679245, +0.0002073584906, + +0.0001496226415, +0.0001094339623, -0.0000058490566, -0.0002073584906, + -0.0002935849057, -0.0002360377358, -0.0001843396226, -0.0001728301887, + -0.0000864150943, +0.0000518867925, +0.0001381132075, +0.0001324528302, + +0.0001324528302, +0.0001611320755, +0.0000920754717, -0.0000690566038, + -0.0001728301887, -0.0001324528302, -0.0000690566038, -0.0000345283019, + +0.0000460377358, +0.0001843396226, +0.0002360377358, +0.0001496226415, + +0.0000690566038, +0.0000518867925, -0.0000230188679, -0.0002188679245, + -0.0003109433962, -0.0002820754717, -0.0002590566038, -0.0002360377358, + -0.0000864150943, +0.0001669811321, +0.0003050943396, +0.0002705660377, + +0.0002533962264, +0.0002649056604, +0.0001496226415, -0.0000575471698, + -0.0001554716981, -0.0001094339623, -0.0001611320755, -0.0002764150943, + -0.0001784905660, +0.0000575471698, +0.0001784905660, +0.0001439622642, + +0.0001381132075, +0.0001324528302, -0.0000403773585, -0.0002764150943, + -0.0002705660377, -0.0001843396226, -0.0001728301887, -0.0001784905660, + +0.0000173584906, +0.0002590566038, +0.0003513207547, +0.0003684905660, + +0.0004664150943, +0.0004145283019, +0.0001381132075, -0.0001843396226, + -0.0003339622642, -0.0003800000000, -0.0003915094340, -0.0003743396226, + -0.0002360377358, -0.0000345283019, +0.0001209433962, +0.0001611320755, + +0.0003454716981, +0.0004088679245, +0.0002705660377, -0.0000173584906, + -0.0002015094340, -0.0002935849057, -0.0002705660377, -0.0001669811321, + +0.0000690566038, +0.0002245283019, +0.0003915094340, +0.0002994339623, + +0.0002360377358, +0.0003513207547, +0.0002590566038, -0.0002820754717, + -0.0005239622642, -0.0005930188679, -0.0006679245283, -0.0007083018868, + -0.0003109433962, +0.0002073584906, +0.0006390566038, +0.0005584905660, + +0.0005988679245, +0.0007139622642, +0.0007369811321, +0.0002820754717, + +0.0000805660377, -0.0001554716981, -0.0006218867925, -0.0005700000000, + -0.0014222641509, +0.0012494339623, -0.0011054716981, +0.0006505660377, + +0.0012839622642, +0.0004720754717, -0.0003339622642, -0.0003109433962, + -0.0004145283019, +0.0001209433962, -0.0005354716981, -0.0007945283019, + -0.0006390566038, -0.0001150943396, +0.0014509433962, +0.0018311320755, + +0.0025967924528, +0.0020843396226, +0.0011977358491, -0.0000058490566, + -0.0001496226415, -0.0004490566038, -0.0015662264151, -0.0021937735849, + -0.0020843396226, -0.0022167924528, -0.0020843396226, -0.0009788679245, + +0.0102262264151, +0.0023666037736, -0.0383369811321, -0.0203432075472, + +0.0619162264151, +0.1230203773585, +0.1472445283019, +0.0346230188679, + -0.1634301886792, -0.1886618867925, -0.1050035849057, -0.0972762264151, + -0.0602809433962, +0.0353083018868, +0.0883224528302, +0.1019000000000, + +0.0746586792453, -0.0028962264151, -0.0535266037736, -0.0531984905660, + -0.0456554716981, -0.0065986792453, +0.0382794339623, +0.0257441509434, + +0.0106811320755, +0.0023320754717, -0.0163298113208, -0.0001150943396, + +0.0238324528302, +0.0151435849057, +0.0106350943396, -0.0045200000000, + -0.0224850943396, -0.0252490566038, -0.0104220754717, +0.0157769811321, + +0.0307249056604, +0.0190418867925, -0.0186560377358, -0.0411700000000, + -0.0182530188679, +0.0223181132075, +0.0430183018868, +0.0362698113208, + +0.0010364150943, -0.0170898113208, -0.0084067924528, +0.0088039622642, + +0.0251281132075, +0.0365405660377, +0.0253871698113, -0.0071975471698, + -0.0337247169811, -0.0364311320755, -0.0246501886792, +0.0083318867925, + +0.0403466037736, +0.0369377358491, +0.0125179245283, -0.0131167924528, + -0.0334254716981, -0.0265156603774, -0.0011918867925, +0.0154603773585, + +0.0179707547170, +0.0134277358491, +0.0044913207547, +0.0026660377358, + +0.0049692452830, +0.0030516981132, +0.0074450943396, +0.0240858490566, + +0.0263315094340, +0.0106350943396, -0.0040939622642, -0.0194735849057, + -0.0261760377358, -0.0106811320755, +0.0057118867925, +0.0090862264151, + +0.0086658490566, +0.0080728301887, +0.0015833962264, -0.0133241509434, + -0.0236079245283, -0.0144469811321, +0.0055679245283, +0.0180226415094, + +0.0169458490566, +0.0124430188679, +0.0145447169811, +0.0171647169811, + +0.0096332075472, -0.0062013207547, -0.0143316981132, -0.0084124528302, + +0.0010883018868, +0.0097311320755, +0.0186675471698, +0.0175966037736, + +0.0010364150943, -0.0192260377358, -0.0258592452830, -0.0158805660377, + -0.0031439622642, +0.0029366037736, +0.0032130188679, +0.0014739622642, + +0.0000805660377, -0.0000864150943, +0.0035066037736, +0.0091841509434, + +0.0091092452830, +0.0035815094340, -0.0011862264151, -0.0036390566038, + -0.0035009433962, -0.0012264150943, +0.0026315094340, +0.0059422641509, + +0.0035469811321, -0.0040709433962, -0.0078884905660, -0.0055796226415, + -0.0055564150943, -0.0102090566038, -0.0132492452830, -0.0104796226415, + -0.0024298113208, +0.0062935849057, +0.0110900000000, +0.0114815094340, + +0.0079864150943, +0.0010133962264, -0.0070650943396, -0.0125639622642, + -0.0127483018868, -0.0057696226415, +0.0039384905660, +0.0075315094340, + +0.0040075471698, +0.0003166037736, -0.0011458490566, -0.0015258490566, + -0.0009558490566, -0.0019116981132, -0.0037139622642, -0.0043300000000, + -0.0059941509434, -0.0079230188679, -0.0079058490566, -0.0068692452830, + -0.0040824528302, -0.0007658490566, +0.0014913207547, +0.0017964150943, + -0.0001784905660, -0.0029481132075, -0.0048598113208, -0.0052224528302, + -0.0040133962264, -0.0023722641509, +0.0000749056604, +0.0019922641509, + +0.0024126415094, +0.0021822641509, +0.0009962264151, -0.0019577358491, + -0.0046639622642, -0.0052743396226, -0.0051418867925, -0.0055047169811, + -0.0046467924528, -0.0021650943396, +0.0000230188679, +0.0017447169811, + +0.0016411320755, -0.0012322641509, -0.0043013207547, -0.0043300000000, + -0.0013532075472, +0.0017447169811, +0.0026775471698, +0.0023952830189, + +0.0009558490566, -0.0016467924528, -0.0041113207547, -0.0052513207547, + -0.0047388679245, -0.0028445283019, -0.0008694339623, +0.0005873584906, + +0.0011747169811, +0.0006737735849, +0.0007139622642, +0.0005009433962, + -0.0008233962264, -0.0012667924528, -0.0005009433962, -0.0012552830189, + -0.0025967924528, -0.0023320754717, -0.0016813207547, -0.0017447169811, + -0.0010998113208, +0.0008003773585, +0.0025450943396, +0.0027120754717, + +0.0005413207547, -0.0021420754717, -0.0028100000000, -0.0017101886792, + -0.0013069811321, -0.0015373584906, -0.0011169811321, -0.0007830188679, + -0.0012092452830, -0.0005584905660, +0.0016352830189, +0.0032994339623, + +0.0032360377358, +0.0017273584906, -0.0003684905660, -0.0020211320755, + -0.0031611320755, -0.0029711320755, -0.0011632075472, +0.0007773584906, + +0.0015662264151, +0.0017907547170, +0.0018022641509, +0.0008637735849, + -0.0005873584906, -0.0004490566038, +0.0012437735849, +0.0016756603774, + +0.0007428301887, +0.0005009433962, +0.0011977358491, +0.0021650943396, + +0.0024816981132, +0.0021016981132, +0.0013877358491, +0.0004605660377, + -0.0004088679245, -0.0009098113208, -0.0008867924528, -0.0000749056604, + +0.0009903773585, +0.0008694339623, -0.0000633962264, -0.0004664150943, + +0.0006505660377, +0.0020728301887, +0.0021881132075, +0.0015662264151, + +0.0012552830189, +0.0019058490566, +0.0025852830189, +0.0018771698113, + +0.0006505660377, -0.0001324528302, -0.0009500000000, -0.0010249056604, + -0.0001554716981, +0.0003224528302, +0.0003109433962, +0.0006275471698, + +0.0009788679245, +0.0009328301887, +0.0016583018868, +0.0023262264151, + +0.0011918867925, -0.0000403773585, +0.0000749056604, +0.0006275471698, + +0.0013588679245, +0.0019692452830, +0.0014798113208, -0.0000518867925, + -0.0012033962264, -0.0012667924528, -0.0009903773585, -0.0006564150943, + +0.0001324528302, +0.0011977358491, +0.0018943396226, +0.0014913207547, + +0.0008233962264, +0.0010998113208, +0.0009788679245, +0.0004030188679, + -0.0004894339623, -0.0011284905660, -0.0004375471698, +0.0008292452830, + +0.0014222641509, +0.0009788679245, +0.0004605660377, +0.0007024528302, + +0.0002649056604, -0.0011054716981, -0.0011688679245, -0.0000864150943, + +0.0006622641509, +0.0002015094340, -0.0007024528302, -0.0000920754717, + +0.0007945283019, +0.0004835849057, +0.0001611320755, +0.0004779245283, + +0.0012783018868, +0.0013588679245, -0.0003628301887, -0.0012724528302, + -0.0003800000000, +0.0007773584906, +0.0012379245283, +0.0007139622642, + +0.0005067924528, +0.0011688679245, +0.0007715094340, -0.0006737735849, + -0.0008233962264, +0.0004779245283, +0.0007715094340, -0.0009328301887, + -0.0025105660377, -0.0030171698113, -0.0023320754717, -0.0009730188679, + -0.0000864150943, +0.0010479245283, +0.0016007547170, +0.0002533962264, + -0.0005930188679, -0.0007600000000, -0.0000403773585, +0.0014107547170, + +0.0013877358491, +0.0003743396226, +0.0005354716981, +0.0008349056604, + +0.0000000000000, -0.0007313207547, -0.0009673584906, -0.0018656603774, + -0.0028790566038, -0.0018311320755, +0.0001784905660, +0.0005988679245, + -0.0001324528302, -0.0004720754717, +0.0000173584906, +0.0005988679245, + +0.0007830188679, +0.0007945283019, +0.0007658490566, -0.0004433962264, + -0.0014913207547, -0.0004720754717, +0.0006218867925, +0.0006045283019, + +0.0005413207547, +0.0004318867925, -0.0004835849057, -0.0010998113208, + -0.0000633962264, +0.0007083018868, -0.0008579245283, -0.0019866037736, + -0.0010422641509, -0.0001728301887, +0.0004260377358, +0.0007888679245, + +0.0007543396226, +0.0002820754717, -0.0004835849057, -0.0004720754717, + +0.0000345283019, +0.0004260377358, +0.0008924528302, +0.0010939622642, + +0.0005758490566, -0.0006103773585, -0.0015662264151, -0.0007428301887, + +0.0004433962264, +0.0004490566038, +0.0005298113208, +0.0009500000000, + +0.0006045283019, +0.0003743396226, +0.0004433962264, +0.0003858490566, + +0.0005354716981, +0.0003283018868, -0.0005528301887, -0.0007313207547, + -0.0003628301887, -0.0005298113208, -0.0006852830189, -0.0001843396226, + +0.0006218867925, +0.0006737735849, +0.0002303773585, +0.0006333962264, + +0.0012494339623, +0.0005528301887, -0.0008175471698, -0.0015143396226, + -0.0007428301887, +0.0002015094340, +0.0002590566038, +0.0007254716981, + +0.0022686792453, +0.0026716981132, +0.0013069811321, +0.0004720754717, + +0.0008983018868, +0.0008118867925, -0.0002879245283, -0.0013358490566, + -0.0010998113208, -0.0001035849057, +0.0002188679245, +0.0003339622642, + +0.0011343396226, +0.0013933962264, +0.0008694339623, +0.0007945283019, + +0.0009039622642, +0.0005643396226, -0.0001035849057, -0.0004952830189, + -0.0001324528302, +0.0009500000000, +0.0015833962264, +0.0011458490566, + +0.0002245283019, -0.0002245283019, -0.0002533962264, +0.0001209433962, + +0.0011977358491, +0.0016583018868, +0.0009443396226, +0.0006103773585, + +0.0006103773585, +0.0001439622642, -0.0002418867925, -0.0001843396226, + +0.0000920754717, +0.0005643396226, +0.0013358490566, +0.0016641509434, + +0.0011169811321, +0.0003454716981, -0.0004664150943, -0.0009039622642, + -0.0004605660377, +0.0002935849057, +0.0010018867925, +0.0016467924528, + +0.0013588679245, +0.0007543396226, +0.0003915094340, -0.0004088679245, + -0.0012264150943, -0.0011400000000, -0.0005758490566, +0.0003858490566, + +0.0014567924528, +0.0018196226415, +0.0016698113208, +0.0009328301887, + -0.0003858490566, -0.0013762264151, -0.0015488679245, -0.0011228301887, + -0.0000288679245, +0.0015662264151, +0.0023837735849, +0.0014222641509, + +0.0004835849057, +0.0005815094340, +0.0004318867925, -0.0002418867925, + -0.0003224528302, +0.0004318867925, +0.0012092452830, +0.0013069811321, + +0.0010537735849, +0.0008522641509, +0.0003166037736, -0.0006967924528, + -0.0010709433962, -0.0004260377358, -0.0002764150943, -0.0008983018868, + -0.0009443396226, +0.0001209433962, +0.0009903773585, +0.0009154716981, + +0.0006564150943, +0.0006909433962, +0.0009788679245, +0.0011400000000, + +0.0009500000000, +0.0006794339623, -0.0000575471698, -0.0014222641509, + -0.0018311320755, -0.0007313207547, +0.0003800000000, +0.0005183018868, + +0.0004203773585, +0.0009384905660, +0.0012724528302, +0.0008522641509, + +0.0007024528302, +0.0007773584906, -0.0000115094340, -0.0012898113208, + -0.0014913207547, -0.0004549056604, +0.0004318867925, +0.0003858490566, + -0.0001381132075, -0.0003398113208, -0.0000575471698, +0.0002649056604, + +0.0006160377358, +0.0006794339623, +0.0001439622642, -0.0005067924528, + -0.0009788679245, -0.0012898113208, -0.0013069811321, -0.0009673584906, + -0.0001381132075, +0.0004835849057, +0.0001094339623, -0.0005354716981, + -0.0007600000000, -0.0003224528302, +0.0004720754717, +0.0008983018868, + +0.0010709433962, +0.0010594339623, -0.0000575471698, -0.0017503773585, + -0.0023205660377, -0.0018137735849, -0.0009213207547, +0.0000920754717, + +0.0008407547170, +0.0007945283019, +0.0000749056604, -0.0008407547170, + -0.0010018867925, -0.0004375471698, -0.0001209433962, -0.0000230188679, + +0.0000115094340, -0.0004894339623, -0.0009384905660, -0.0009788679245, + -0.0005815094340, +0.0001554716981, +0.0004549056604, +0.0000000000000, + -0.0005124528302, -0.0008233962264, -0.0011862264151, -0.0013703773585, + -0.0009154716981, -0.0001209433962, +0.0004145283019, +0.0000230188679, + -0.0012322641509, -0.0016179245283, -0.0010192452830, -0.0008292452830, + -0.0003858490566, +0.0007484905660, +0.0015028301887, +0.0012724528302, + +0.0000000000000, -0.0012839622642, -0.0016411320755, -0.0014971698113, + -0.0011169811321, -0.0007830188679, -0.0006045283019, -0.0002705660377, + +0.0000690566038, +0.0002303773585, +0.0001669811321, -0.0002360377358, + -0.0007484905660, -0.0007945283019, -0.0003166037736, -0.0001209433962, + -0.0005815094340, -0.0008694339623, -0.0006333962264, -0.0004088679245, + -0.0004720754717, -0.0004203773585, -0.0002879245283, -0.0002418867925, + -0.0000460377358, +0.0000288679245, -0.0002188679245, -0.0005988679245, + -0.0008579245283, -0.0008118867925, -0.0005584905660, -0.0002994339623, + -0.0001324528302, -0.0001784905660, -0.0003109433962, -0.0004894339623, + -0.0006909433962, -0.0007024528302, -0.0008522641509, -0.0010824528302, + -0.0007198113208, +0.0001324528302, +0.0009730188679, +0.0014164150943, + +0.0013128301887, +0.0008752830189, +0.0000058490566, -0.0009213207547, + -0.0012379245283, -0.0010939622642, -0.0009328301887, -0.0008809433962, + -0.0007369811321, -0.0002418867925, +0.0002475471698, +0.0002820754717, + +0.0002590566038, +0.0004952830189, +0.0004779245283, -0.0001843396226, + -0.0007484905660, -0.0005124528302, +0.0000115094340, -0.0001669811321, + -0.0006160377358, -0.0005067924528, +0.0000173584906, +0.0004664150943, + +0.0005009433962, +0.0003454716981, +0.0004145283019, +0.0002533962264, + -0.0005354716981, -0.0008924528302, -0.0003224528302, +0.0002879245283, + +0.0004894339623, +0.0006967924528, +0.0007484905660, +0.0002015094340, + -0.0005873584906, -0.0007198113208, -0.0002073584906, +0.0000000000000, + -0.0001669811321, +0.0000115094340, +0.0006160377358, +0.0008809433962, + +0.0006794339623, +0.0007543396226, +0.0008407547170, +0.0004433962264, + -0.0002533962264, -0.0006275471698, -0.0005009433962, -0.0001381132075, + -0.0001150943396, -0.0002073584906, -0.0001035849057, -0.0000749056604, + -0.0003628301887, -0.0003973584906, +0.0001784905660, +0.0007600000000, + +0.0010594339623, +0.0012149056604, +0.0011573584906, +0.0007254716981, + -0.0001035849057, -0.0008233962264, -0.0009098113208, -0.0004549056604, + -0.0001094339623, -0.0000173584906, +0.0001784905660, +0.0003684905660, + +0.0003050943396, +0.0002935849057, +0.0003684905660, +0.0002303773585, + -0.0002245283019, -0.0004835849057, -0.0002533962264, -0.0001094339623, + -0.0000460377358, +0.0001900000000, +0.0003569811321, +0.0002705660377, + +0.0001611320755, +0.0000173584906, -0.0002188679245, -0.0003743396226, + -0.0003743396226, -0.0002188679245, -0.0000173584906, -0.0000805660377, + -0.0003166037736, -0.0002649056604, +0.0001324528302, +0.0005930188679, + +0.0007313207547, +0.0004664150943, +0.0005528301887, +0.0009098113208, + +0.0006967924528, -0.0000058490566, -0.0007254716981, -0.0011400000000, + -0.0010018867925, -0.0006333962264, -0.0002935849057, +0.0000345283019, + +0.0002015094340, +0.0002994339623, +0.0006333962264, +0.0009962264151, + +0.0011054716981, +0.0012379245283, +0.0012552830189, +0.0003628301887, + -0.0006449056604, -0.0009039622642, -0.0009384905660, -0.0011054716981, + -0.0009673584906, -0.0001496226415, +0.0007830188679, +0.0011573584906, + +0.0011688679245, +0.0009098113208, +0.0002649056604, -0.0003858490566, + -0.0007139622642, -0.0005413207547, +0.0000115094340, +0.0004952830189, + +0.0004952830189, +0.0003109433962, +0.0003224528302, +0.0002245283019, + -0.0002188679245, -0.0005873584906, -0.0003454716981, +0.0003800000000, + +0.0007254716981, +0.0004952830189, +0.0002879245283, +0.0001843396226, + +0.0001554716981, +0.0001728301887, +0.0001094339623, -0.0001611320755, + -0.0003454716981, -0.0001784905660, +0.0000805660377, +0.0000920754717, + -0.0001209433962, -0.0003050943396, -0.0002188679245, -0.0002764150943, + -0.0004318867925, -0.0001554716981, +0.0003743396226, +0.0004952830189, + -0.0000460377358, -0.0007024528302, -0.0006564150943, -0.0001958490566, + +0.0000345283019, +0.0001958490566, +0.0005124528302, +0.0005584905660, + +0.0000288679245, -0.0006909433962, -0.0008637735849, -0.0004605660377, + +0.0000403773585, +0.0001843396226, +0.0001611320755, +0.0002705660377, + +0.0000749056604, -0.0006564150943, -0.0008637735849, -0.0000633962264, + +0.0005584905660, +0.0003109433962, -0.0001784905660, -0.0003858490566, + -0.0003743396226, -0.0004433962264, -0.0005758490566, -0.0003858490566, + +0.0001669811321, +0.0002533962264, +0.0000230188679, +0.0002130188679, + +0.0001496226415, -0.0002879245283, -0.0000805660377, +0.0004664150943, + +0.0004720754717, +0.0001324528302, -0.0002360377358, -0.0005239622642, + -0.0005988679245, -0.0003283018868, +0.0001150943396, +0.0003973584906, + +0.0004549056604, +0.0006045283019, +0.0007369811321, +0.0005469811321, + +0.0002820754717, -0.0000288679245, -0.0003224528302, -0.0002820754717, + +0.0000749056604, +0.0003224528302, +0.0004145283019, +0.0002820754717, + +0.0001150943396, +0.0000058490566, -0.0001784905660, -0.0003858490566, + -0.0002245283019, +0.0001324528302, +0.0003684905660, +0.0005413207547, + +0.0007024528302, +0.0004203773585, -0.0002360377358, -0.0005413207547, + -0.0002475471698, +0.0003050943396, +0.0006967924528, +0.0007313207547, + +0.0003973584906, -0.0001900000000, -0.0006218867925, -0.0006045283019, + -0.0002820754717, +0.0002590566038, +0.0005528301887, +0.0002879245283, + -0.0000058490566, -0.0000575471698, -0.0000864150943, +0.0000230188679, + +0.0002475471698, +0.0003283018868, +0.0002994339623, +0.0001324528302, + -0.0002015094340, -0.0003339622642, -0.0001611320755, -0.0000403773585, + +0.0000518867925, +0.0000690566038, -0.0001439622642, -0.0002418867925, + -0.0002245283019, -0.0002533962264, -0.0001094339623, +0.0001209433962, + +0.0004375471698, +0.0007139622642, +0.0003513207547, -0.0002533962264, + -0.0003628301887, -0.0001728301887, +0.0000000000000, +0.0003454716981, + +0.0004835849057, +0.0001958490566, -0.0001611320755, -0.0002245283019, + -0.0000633962264, -0.0000345283019, -0.0001496226415, +0.0000403773585, + +0.0003684905660, +0.0004433962264, +0.0003569811321, +0.0002649056604, + +0.0001324528302, -0.0000864150943, -0.0002418867925, -0.0002649056604, + -0.0002360377358, +0.0001266037736, +0.0005469811321, +0.0004260377358, + +0.0000000000000, -0.0005124528302, -0.0008983018868, -0.0005815094340, + +0.0000000000000, +0.0001843396226, +0.0001209433962, +0.0003224528302, + +0.0006160377358, +0.0004203773585, -0.0001266037736, -0.0002590566038, + -0.0002188679245, -0.0003915094340, -0.0003398113208, +0.0002705660377, + +0.0007830188679, +0.0005528301887, -0.0003283018868, -0.0008983018868, + -0.0007600000000, -0.0003050943396, +0.0000749056604, +0.0004720754717, + +0.0007369811321, +0.0005584905660, -0.0001554716981, -0.0005815094340, + -0.0002764150943, +0.0001439622642, +0.0002994339623, +0.0001958490566, + -0.0000920754717, -0.0003109433962, -0.0004952830189, -0.0006679245283, + -0.0002705660377, +0.0005700000000, +0.0012322641509, +0.0014624528302, + +0.0006679245283, -0.0007715094340, -0.0014164150943, -0.0010077358491, + -0.0003224528302, +0.0005584905660, +0.0013416981132, +0.0013358490566, + +0.0004894339623, -0.0004835849057, -0.0010594339623, -0.0010307547170, + -0.0004720754717, -0.0000575471698, +0.0000690566038, +0.0006333962264, + +0.0011862264151, +0.0009788679245, +0.0003973584906, -0.0000690566038, + -0.0004318867925, -0.0004664150943, -0.0003454716981, -0.0000115094340, + +0.0007139622642, +0.0010767924528, +0.0004145283019, -0.0005815094340, + -0.0011458490566, -0.0010594339623, -0.0007313207547, -0.0003628301887, + +0.0002303773585, +0.0007600000000, +0.0008694339623, +0.0005413207547, + +0.0001900000000, +0.0000230188679, -0.0002935849057, -0.0006045283019, + -0.0002130188679, +0.0004203773585, +0.0005009433962, +0.0000979245283, + -0.0000575471698, +0.0004203773585, +0.0006852830189, +0.0000288679245, + -0.0005067924528, -0.0002820754717, -0.0000230188679, +0.0000173584906, + +0.0000288679245, +0.0001496226415, +0.0001381132075, -0.0002590566038, + -0.0004894339623, -0.0001958490566, +0.0002418867925, +0.0004952830189, + +0.0003569811321, -0.0000575471698, -0.0001496226415, +0.0001266037736, + +0.0001958490566, -0.0000749056604, -0.0001843396226, +0.0000000000000, + +0.0001150943396, -0.0002705660377, -0.0005873584906, -0.0000345283019, + +0.0006679245283, +0.0003569811321, -0.0001728301887, -0.0001035849057, + +0.0002130188679, +0.0000518867925, -0.0002188679245, +0.0000575471698, + +0.0006333962264, +0.0005700000000, +0.0000058490566, -0.0003398113208, + -0.0003398113208, -0.0002418867925, -0.0002015094340, +0.0001209433962, + +0.0007888679245, +0.0011343396226, +0.0009039622642, +0.0004549056604, + -0.0004720754717, -0.0015028301887, -0.0014452830189, -0.0003398113208, + +0.0005183018868, +0.0004952830189, -0.0000979245283, -0.0005413207547, + -0.0000690566038, +0.0009328301887, +0.0011458490566, +0.0004088679245, + -0.0002360377358, -0.0008233962264, -0.0013703773585, -0.0013877358491, + -0.0011803773585, -0.0006794339623, +0.0003800000000, +0.0013933962264, + +0.0016698113208, +0.0012667924528, +0.0003800000000, -0.0006794339623, + -0.0012494339623, -0.0011632075472, -0.0010479245283, -0.0008118867925, + -0.0001728301887, +0.0003050943396, +0.0005584905660, +0.0007369811321, + +0.0005930188679, -0.0000920754717, -0.0009328301887, -0.0012207547170, + -0.0008060377358, -0.0000979245283, +0.0006218867925, +0.0012494339623, + +0.0013473584906, +0.0001784905660, -0.0015258490566, -0.0019866037736, + -0.0012322641509, -0.0005815094340, -0.0002360377358, +0.0001728301887, + +0.0007139622642, +0.0007658490566, +0.0003915094340, +0.0000805660377, + -0.0003569811321, -0.0010709433962, -0.0012839622642, -0.0004203773585, + +0.0008579245283, +0.0012092452830, +0.0006218867925, +0.0002130188679, + -0.0001784905660, -0.0008407547170, -0.0009269811321, -0.0003454716981, + -0.0000518867925, -0.0002188679245, -0.0002533962264, +0.0001669811321, + +0.0005700000000, +0.0002418867925, -0.0000920754717, +0.0002649056604, + +0.0005413207547, +0.0002360377358, +0.0000460377358, +0.0000288679245, + -0.0003973584906, -0.0011169811321, -0.0015603773585, -0.0009558490566, + +0.0002820754717, +0.0007773584906, +0.0003454716981, +0.0002820754717, + +0.0006449056604, +0.0003339622642, -0.0004779245283, -0.0007600000000, + -0.0007254716981, -0.0009098113208, -0.0006794339623, +0.0002303773585, + +0.0009384905660, +0.0011458490566, +0.0014452830189, +0.0013473584906, + +0.0005354716981, -0.0003743396226, -0.0015373584906, -0.0024298113208, + -0.0020383018868, -0.0008118867925, +0.0004835849057, +0.0015086792453, + +0.0018598113208, +0.0015086792453, +0.0006333962264, -0.0002418867925, + -0.0003628301887, +0.0001669811321, +0.0006564150943, +0.0008924528302, + +0.0009154716981, +0.0003915094340, -0.0005584905660, -0.0012149056604, + -0.0013069811321, -0.0011228301887, -0.0011228301887, -0.0009039622642, + +0.0001381132075, +0.0014337735849, +0.0017733962264, +0.0013473584906, + +0.0008003773585, +0.0001958490566, -0.0003513207547, -0.0000749056604, + +0.0007484905660, +0.0011169811321, +0.0008003773585, -0.0002015094340, + -0.0016986792453, -0.0027407547170, -0.0029654716981, -0.0021937735849, + -0.0006160377358, +0.0008637735849, +0.0014798113208, +0.0013762264151, + +0.0008867924528, +0.0004375471698, +0.0004145283019, +0.0007658490566, + +0.0010824528302, +0.0013473584906, +0.0012264150943, +0.0002649056604, + -0.0009847169811, -0.0017733962264, -0.0019577358491, -0.0016813207547, + -0.0008809433962, +0.0003109433962, +0.0009213207547, +0.0005298113208, + +0.0000288679245, +0.0000230188679, +0.0002188679245, +0.0002475471698, + +0.0001843396226, +0.0002015094340, +0.0003339622642, +0.0005298113208, + +0.0005815094340, +0.0006909433962, +0.0005758490566, -0.0004664150943, + -0.0016467924528, -0.0018137735849, -0.0012379245283, -0.0005183018868, + +0.0004260377358, +0.0014164150943, +0.0019001886792, +0.0014279245283, + +0.0002994339623, -0.0006737735849, -0.0008983018868, -0.0005067924528, + -0.0001150943396, -0.0000403773585, +0.0000000000000, +0.0000805660377, + +0.0000345283019, +0.0000805660377, +0.0001266037736, -0.0001324528302, + +0.0001439622642, +0.0008867924528, +0.0008118867925, +0.0002935849057, + +0.0006103773585, +0.0010133962264, +0.0005183018868, -0.0003858490566, + -0.0006622641509, -0.0002820754717, +0.0000575471698, +0.0001900000000, + +0.0004549056604, +0.0009098113208, +0.0011977358491, +0.0005873584906, + -0.0007888679245, -0.0014107547170, -0.0004720754717, +0.0006390566038, + +0.0009558490566, +0.0010537735849, +0.0012033962264, +0.0007198113208, + -0.0003050943396, -0.0010767924528, -0.0009962264151, -0.0002475471698, + +0.0005354716981, +0.0008924528302, +0.0006622641509, -0.0001324528302, + -0.0010998113208, -0.0015432075472, -0.0010767924528, -0.0000805660377, + +0.0008752830189, +0.0012033962264, +0.0006333962264, -0.0002073584906, + -0.0006103773585, -0.0005183018868, +0.0000920754717, +0.0008809433962, + +0.0011054716981, +0.0006449056604, -0.0001958490566, -0.0007198113208, + -0.0004952830189, -0.0000749056604, +0.0001669811321, +0.0003050943396, + +0.0004835849057, +0.0005873584906, +0.0001266037736, -0.0004145283019, + -0.0002705660377, -0.0002245283019, -0.0006390566038, -0.0003858490566, + +0.0004260377358, +0.0006737735849, +0.0004203773585, +0.0003050943396, + +0.0002475471698, +0.0000115094340, -0.0001150943396, -0.0000518867925, + -0.0001611320755, -0.0004549056604, -0.0005528301887, -0.0001611320755, + +0.0002935849057, +0.0006679245283, +0.0011113207547, +0.0011054716981, + +0.0002590566038, -0.0004088679245, -0.0003398113208, -0.0000920754717, + -0.0000518867925, -0.0002188679245, -0.0005700000000, -0.0007369811321, + -0.0004835849057, -0.0000288679245, +0.0003454716981, +0.0005873584906, + +0.0006045283019, +0.0003858490566, +0.0000230188679, -0.0001381132075, + -0.0001381132075, -0.0002245283019, -0.0003166037736, -0.0003628301887, + -0.0003569811321, -0.0001554716981, -0.0001784905660, -0.0002245283019, + +0.0001439622642, +0.0004433962264, +0.0002705660377, -0.0001900000000, + -0.0006333962264, -0.0005930188679, -0.0004779245283, -0.0004894339623, + -0.0000230188679, +0.0004664150943, +0.0000000000000, -0.0008579245283, + -0.0010077358491, -0.0004952830189, +0.0000690566038, +0.0004664150943, + +0.0005298113208, +0.0003166037736, +0.0000633962264, -0.0001035849057, + -0.0001094339623, +0.0000345283019, +0.0000173584906, -0.0003858490566, + -0.0007024528302, -0.0003166037736, +0.0001209433962, -0.0000058490566, + -0.0002764150943, -0.0005239622642, -0.0006737735849, -0.0005930188679, + -0.0002879245283, +0.0000345283019, +0.0003569811321, +0.0005643396226, + +0.0004145283019, -0.0000864150943, -0.0002649056604, -0.0000345283019, + -0.0000575471698, -0.0002303773585, -0.0000230188679, +0.0002820754717, + +0.0002015094340, +0.0000288679245, -0.0000403773585, -0.0001900000000, + -0.0005988679245, -0.0011054716981, -0.0009269811321, +0.0000805660377, + +0.0008118867925, +0.0007600000000, +0.0005930188679, +0.0005124528302, + +0.0002994339623, -0.0002130188679, -0.0005758490566, -0.0004549056604, + -0.0000633962264, +0.0002879245283, +0.0007428301887, +0.0008407547170, + +0.0003283018868, -0.0001958490566, -0.0004720754717, -0.0006160377358, + -0.0002994339623, +0.0003513207547, +0.0009098113208, +0.0011284905660, + +0.0006275471698, -0.0003915094340, -0.0010479245283, -0.0008694339623, + -0.0004088679245, +0.0000000000000, +0.0006103773585, +0.0009213207547, + +0.0006333962264, +0.0002360377358, -0.0001035849057, -0.0002879245283, + -0.0001094339623, +0.0000518867925, +0.0000633962264, +0.0001784905660, + +0.0002303773585, -0.0001266037736, -0.0005584905660, -0.0004260377358, + -0.0000288679245, +0.0000633962264, +0.0000000000000, +0.0000518867925, + +0.0002073584906, +0.0004145283019, +0.0005758490566, +0.0005930188679, + +0.0007083018868, +0.0009615094340, +0.0006679245283, -0.0001611320755, + -0.0006449056604, -0.0004490566038, -0.0001554716981, -0.0001439622642, + -0.0002935849057, -0.0001150943396, +0.0003915094340, +0.0007715094340, + +0.0007024528302, +0.0006333962264, +0.0005009433962, +0.0000000000000, + -0.0004720754717, -0.0006275471698, -0.0005700000000, -0.0002590566038, + +0.0000805660377, +0.0004260377358, +0.0003973584906, -0.0003684905660, + -0.0009730188679, -0.0007254716981, -0.0002475471698, +0.0001094339623, + +0.0004835849057, +0.0006679245283, +0.0003513207547, -0.0000749056604, + -0.0001958490566, -0.0001035849057, -0.0001611320755, -0.0001669811321, + +0.0000230188679, +0.0000115094340, -0.0003398113208, -0.0002303773585, + +0.0002935849057, +0.0004664150943, +0.0002418867925, -0.0000575471698, + -0.0002820754717, -0.0003513207547, -0.0003628301887, -0.0003398113208, + -0.0003513207547, -0.0002245283019, +0.0000920754717, +0.0003454716981, + +0.0004835849057, +0.0004720754717, +0.0000518867925, -0.0003743396226, + -0.0004894339623, -0.0004720754717, -0.0004490566038, -0.0002360377358, + +0.0001728301887, +0.0004952830189, +0.0002705660377, -0.0003973584906, + -0.0006852830189, -0.0002764150943, +0.0002188679245, +0.0003109433962, + -0.0001209433962, -0.0004952830189, -0.0003109433962, -0.0001150943396, + -0.0001035849057, +0.0000749056604, +0.0002360377358, +0.0003973584906, + +0.0006564150943, +0.0006852830189, +0.0004088679245, -0.0000920754717, + -0.0006737735849, -0.0009558490566, -0.0006622641509, -0.0000690566038, + +0.0003569811321, +0.0003339622642, -0.0000575471698, -0.0004260377358, + -0.0002879245283, +0.0001324528302, +0.0001900000000, -0.0000920754717, + -0.0001439622642, -0.0000173584906, -0.0000058490566, -0.0000403773585, + +0.0001496226415, +0.0003569811321, +0.0002188679245, -0.0000460377358, + -0.0002130188679, -0.0004145283019, -0.0004260377358, -0.0001843396226, + +0.0000460377358, +0.0001496226415, +0.0002994339623, +0.0004894339623, + +0.0004375471698, +0.0001958490566, +0.0003398113208, +0.0003800000000, + -0.0001381132075, -0.0003858490566, -0.0000230188679, +0.0002649056604, + +0.0002820754717, +0.0000690566038, +0.0000460377358, +0.0002764150943, + +0.0000345283019, -0.0003973584906, -0.0002705660377, -0.0000173584906, + -0.0000460377358, -0.0000288679245, +0.0001669811321, +0.0002820754717, + +0.0002533962264, +0.0000979245283, -0.0000058490566, -0.0000288679245, + -0.0000403773585, -0.0003800000000, -0.0009500000000, -0.0009730188679, + -0.0003398113208, +0.0001209433962, +0.0001728301887, +0.0002015094340, + +0.0003628301887, +0.0002705660377, -0.0002418867925, -0.0004605660377, + -0.0001496226415, +0.0000518867925, +0.0000173584906, +0.0004145283019, + +0.0009384905660, +0.0008349056604, +0.0001843396226, -0.0007313207547, + -0.0013818867925, -0.0010998113208, -0.0005643396226, -0.0002073584906, + +0.0004203773585, +0.0009903773585, +0.0006679245283, -0.0002935849057, + -0.0008867924528, -0.0006909433962, -0.0001554716981, +0.0003973584906, + +0.0007428301887, +0.0007658490566, +0.0004779245283, -0.0000460377358, + -0.0004203773585, -0.0003800000000, -0.0003166037736, -0.0001728301887, + +0.0000633962264, +0.0000979245283, +0.0000518867925, +0.0000288679245, + -0.0002764150943, -0.0003915094340, -0.0001150943396, +0.0001900000000, + +0.0004835849057, +0.0003800000000, -0.0002994339623, -0.0005067924528, + -0.0000749056604, +0.0001439622642, +0.0000979245283, +0.0001381132075, + -0.0000864150943, -0.0007083018868, -0.0009443396226, -0.0004779245283, + +0.0002073584906, +0.0006218867925, +0.0004779245283, +0.0001784905660, + +0.0001669811321, +0.0001958490566, +0.0000403773585, -0.0002015094340, + -0.0003628301887, -0.0000345283019, +0.0003166037736, +0.0001035849057, + -0.0002533962264, -0.0003109433962, -0.0003800000000, -0.0004375471698, + -0.0001958490566, +0.0003454716981, +0.0008060377358, +0.0007888679245, + +0.0003339622642, -0.0000979245283, -0.0002130188679, -0.0002303773585, + -0.0004664150943, -0.0006103773585, -0.0000920754717, +0.0004835849057, + +0.0003166037736, -0.0002360377358, -0.0001958490566, +0.0001900000000, + +0.0000979245283, -0.0002935849057, -0.0002649056604, -0.0001035849057, + -0.0001150943396, +0.0000000000000, +0.0003743396226, +0.0008175471698, + +0.0010824528302, +0.0008060377358, +0.0002649056604, -0.0001094339623, + -0.0004490566038, -0.0007600000000, -0.0004835849057, +0.0003050943396, + +0.0007830188679, +0.0004605660377, -0.0001554716981, -0.0006160377358, + -0.0007600000000, -0.0005298113208, -0.0000979245283, +0.0002879245283, + +0.0005239622642, +0.0005354716981, +0.0006737735849, +0.0008809433962, + +0.0007024528302, +0.0002188679245, -0.0001669811321, -0.0002303773585, + -0.0001728301887, -0.0003513207547, -0.0003684905660, +0.0001381132075, + +0.0006449056604, +0.0005298113208, +0.0000979245283, +0.0000345283019, + +0.0002994339623, +0.0002820754717, -0.0000518867925, -0.0000403773585, + +0.0004088679245, +0.0006218867925, +0.0004664150943, +0.0003858490566, + +0.0002649056604, -0.0000058490566, -0.0002245283019, -0.0002994339623, + -0.0003398113208, -0.0001784905660, +0.0002015094340, +0.0004490566038, + +0.0003684905660, +0.0001843396226, -0.0000805660377, -0.0002245283019, + -0.0000690566038, +0.0001439622642, +0.0002360377358, +0.0002935849057, + +0.0001266037736, -0.0001324528302, -0.0002994339623, -0.0004720754717, + -0.0006449056604, -0.0005124528302, -0.0002303773585, -0.0000345283019, + +0.0002073584906, +0.0004490566038, +0.0003050943396, +0.0001439622642, + +0.0000805660377, +0.0000345283019, +0.0000230188679, +0.0000058490566, + -0.0000230188679, -0.0000690566038, -0.0003283018868, -0.0006390566038, + -0.0005815094340, +0.0000173584906, +0.0005413207547, +0.0004490566038, + +0.0001094339623, -0.0001439622642, -0.0003973584906, -0.0004375471698, + -0.0002015094340, +0.0001669811321, +0.0005413207547, +0.0007083018868, + +0.0004260377358, -0.0001094339623, -0.0005067924528, -0.0005815094340, + -0.0004664150943, -0.0002705660377, -0.0000288679245, +0.0001728301887, + +0.0003283018868, +0.0003569811321, +0.0001900000000, -0.0001381132075, + -0.0003513207547, -0.0002764150943, -0.0001728301887, -0.0001958490566, + +0.0000288679245, +0.0004375471698, +0.0005298113208, +0.0002705660377, + +0.0000000000000, -0.0002820754717, -0.0004375471698, -0.0003109433962, + -0.0000979245283, +0.0000690566038, +0.0002475471698, +0.0001150943396, + -0.0001439622642, -0.0002475471698, -0.0002015094340, -0.0000920754717, + -0.0001094339623, -0.0002994339623, -0.0003050943396, -0.0002590566038, + -0.0004549056604, -0.0004605660377, +0.0000460377358, +0.0003800000000, + +0.0002360377358, +0.0001554716981, +0.0001611320755, -0.0001150943396, + -0.0004375471698, -0.0005183018868, -0.0001784905660, +0.0003454716981, + +0.0005413207547, +0.0002590566038, -0.0000230188679, -0.0002475471698, + -0.0004203773585, -0.0004260377358, -0.0004145283019, -0.0004549056604, + -0.0002303773585, +0.0002015094340, +0.0004549056604, +0.0003283018868, + +0.0000115094340, -0.0002188679245, -0.0003398113208, -0.0002879245283, + +0.0000288679245, +0.0001611320755, -0.0000920754717, -0.0002994339623, + -0.0003224528302, -0.0001266037736, +0.0002590566038, +0.0004088679245, + +0.0002360377358, +0.0000460377358, -0.0000230188679, +0.0000288679245, + -0.0000288679245, -0.0002820754717, -0.0002994339623, +0.0001900000000, + +0.0005298113208, +0.0003224528302, -0.0000518867925, -0.0000173584906, + +0.0001439622642, +0.0001150943396, -0.0000518867925, -0.0002245283019, + -0.0002764150943, -0.0001035849057, -0.0001035849057, -0.0002073584906, + +0.0001784905660, +0.0008060377358, +0.0008637735849, +0.0002188679245, + -0.0005643396226, -0.0008233962264, -0.0006103773585, -0.0001496226415, + +0.0003743396226, +0.0006852830189, +0.0005354716981, +0.0002705660377, + +0.0000173584906, -0.0004030188679, -0.0007139622642, -0.0004779245283, + +0.0000920754717, +0.0005298113208, +0.0006505660377, +0.0005183018868, + +0.0002188679245, -0.0001150943396, -0.0002245283019, -0.0001554716981, + -0.0002015094340, -0.0003166037736, -0.0002360377358, +0.0001266037736, + +0.0004664150943, +0.0005239622642, +0.0004779245283, +0.0003398113208, + -0.0000805660377, -0.0005413207547, -0.0006390566038, -0.0003513207547, + +0.0001266037736, +0.0004835849057, +0.0005930188679, +0.0006333962264, + +0.0005758490566, +0.0002360377358, -0.0001496226415, -0.0002245283019, + +0.0000173584906, +0.0002360377358, +0.0003224528302, +0.0003166037736, + +0.0002360377358, +0.0001094339623, +0.0001324528302, +0.0000864150943, + +0.0001209433962, +0.0003569811321, +0.0003454716981, -0.0000058490566, + -0.0000288679245, +0.0001209433962, +0.0001439622642, +0.0001611320755, + +0.0002590566038, +0.0001900000000, +0.0000115094340, -0.0001496226415, + -0.0001496226415, +0.0000288679245, +0.0002245283019, +0.0002015094340, + +0.0000920754717, +0.0001381132075, +0.0002073584906, +0.0000749056604, + -0.0000633962264, -0.0001094339623, -0.0000749056604, -0.0001324528302, + -0.0002705660377, -0.0002303773585, -0.0000575471698, -0.0000979245283, + -0.0000864150943, +0.0001266037736, +0.0002303773585, +0.0000518867925, + -0.0002590566038, -0.0003743396226, -0.0000749056604, +0.0002649056604, + +0.0002303773585, +0.0000864150943, +0.0000288679245, -0.0001784905660, + -0.0004145283019, -0.0003166037736, +0.0000690566038, +0.0005469811321, + +0.0007139622642, +0.0004490566038, -0.0000115094340, -0.0003050943396, + -0.0004088679245, -0.0004664150943, -0.0003339622642, +0.0000575471698, + +0.0001554716981, -0.0000345283019, -0.0000575471698, +0.0001094339623, + +0.0000633962264, +0.0000058490566, +0.0001209433962, +0.0000230188679, + -0.0003513207547, -0.0004203773585, -0.0002418867925, -0.0000518867925, + +0.0001381132075, +0.0002303773585, +0.0001439622642, +0.0001669811321, + +0.0001784905660, -0.0000115094340, -0.0002533962264, -0.0003339622642, + -0.0004088679245, -0.0003513207547, -0.0000864150943, +0.0000288679245, + -0.0001728301887, -0.0002705660377, -0.0001843396226, -0.0001554716981, + -0.0002533962264, -0.0002764150943, -0.0000979245283, +0.0001554716981, + +0.0003858490566, +0.0006045283019, +0.0004433962264, -0.0001439622642, + -0.0005239622642, -0.0004433962264, -0.0004605660377, -0.0006333962264, + -0.0004318867925, +0.0000288679245, +0.0002590566038, +0.0001381132075, + -0.0000403773585, -0.0001094339623, -0.0001324528302, -0.0001266037736, + -0.0000749056604, -0.0002590566038, -0.0004605660377, -0.0002994339623, + +0.0001496226415, +0.0004835849057, +0.0003513207547, -0.0002073584906, + -0.0005815094340, -0.0003858490566, +0.0001209433962, +0.0002994339623, + +0.0000920754717, -0.0001035849057, -0.0000345283019, +0.0000058490566, + -0.0000288679245, -0.0001669811321, -0.0003050943396, -0.0004260377358, + -0.0003743396226, -0.0001439622642, +0.0001094339623, +0.0001381132075, + +0.0000115094340, -0.0000864150943, -0.0000460377358, -0.0000173584906, + -0.0000749056604, -0.0000518867925, +0.0001439622642, +0.0001611320755, + -0.0001150943396, -0.0002994339623, -0.0001150943396, +0.0000805660377, + +0.0001324528302, +0.0001209433962, +0.0000805660377, +0.0001209433962, + +0.0001439622642, +0.0000000000000, -0.0002533962264, -0.0005183018868, + -0.0006564150943, -0.0003800000000, +0.0001784905660, +0.0006218867925, + +0.0007198113208, +0.0005354716981, +0.0000920754717, -0.0003858490566, + -0.0005643396226, -0.0004318867925, -0.0002649056604, -0.0000058490566, + +0.0002935849057, +0.0004260377358, +0.0001784905660, -0.0001900000000, + -0.0003684905660, -0.0003800000000, -0.0004490566038, -0.0003569811321, + -0.0001035849057, +0.0000805660377, +0.0002475471698, +0.0004605660377, + +0.0003915094340, +0.0000115094340, -0.0004894339623, -0.0007083018868, + -0.0004433962264, -0.0000173584906, +0.0003166037736, +0.0005873584906, + +0.0005643396226, +0.0002303773585, -0.0002073584906, -0.0005413207547, + -0.0005354716981, -0.0001958490566, -0.0000173584906, -0.0001496226415, + -0.0001439622642, +0.0000115094340, +0.0000518867925, +0.0002820754717, + +0.0005239622642, +0.0002590566038, -0.0002705660377, -0.0006737735849, + -0.0008579245283, -0.0006390566038, -0.0000403773585, +0.0005988679245, + +0.0009154716981, +0.0007313207547, +0.0002130188679, -0.0001958490566, + -0.0002130188679, -0.0000633962264, +0.0002015094340, +0.0006160377358, + +0.0008579245283, +0.0005815094340, +0.0000460377358, -0.0003569811321, + -0.0004490566038, -0.0003454716981, -0.0000460377358, +0.0003743396226, + +0.0005873584906, +0.0003398113208, +0.0000288679245, +0.0000805660377, + +0.0004088679245, +0.0006103773585, +0.0006103773585, +0.0002994339623, + -0.0002015094340, -0.0005700000000, -0.0005469811321, -0.0002073584906, + +0.0002649056604, +0.0006333962264, +0.0008407547170, +0.0007600000000, + +0.0002879245283, -0.0003339622642, -0.0006909433962, -0.0006045283019, + -0.0001209433962, +0.0004490566038, +0.0007313207547, +0.0004952830189, + -0.0000575471698, -0.0004145283019, -0.0002764150943, +0.0001611320755, + +0.0005469811321, +0.0007484905660, +0.0006622641509, +0.0001900000000, + -0.0003454716981, -0.0004952830189, -0.0001669811321, +0.0002820754717, + +0.0002820754717, -0.0001669811321, -0.0003973584906, -0.0001669811321, + -0.0000230188679, -0.0001094339623, +0.0000230188679, +0.0004779245283, + +0.0007254716981, +0.0006218867925, +0.0003224528302, +0.0000058490566, + -0.0002130188679, -0.0003050943396, -0.0003050943396, +0.0000000000000, + +0.0003743396226, +0.0004203773585, +0.0001094339623, -0.0001843396226, + -0.0003513207547, -0.0004260377358, -0.0004664150943, -0.0003283018868, + +0.0000518867925, +0.0005584905660, +0.0008292452830, +0.0006103773585, + +0.0001209433962, -0.0002649056604, -0.0006045283019, -0.0007600000000, + -0.0005067924528, +0.0000288679245, +0.0003973584906, +0.0003628301887, + +0.0001900000000, +0.0001843396226, +0.0003166037736, +0.0004894339623, + +0.0006505660377, +0.0006160377358, +0.0003569811321, +0.0001035849057, + +0.0000518867925, +0.0000173584906, -0.0003915094340, -0.0010652830189, + -0.0011054716981, -0.0002303773585, +0.0006679245283, +0.0007428301887, + +0.0003283018868, +0.0002533962264, +0.0005009433962, +0.0003858490566, + +0.0000633962264, +0.0000345283019, -0.0000230188679, -0.0006218867925, + -0.0011113207547, -0.0009443396226, -0.0004490566038, -0.0001209433962, + -0.0001324528302, -0.0004779245283, -0.0007600000000, -0.0006275471698, + -0.0000518867925, +0.0004894339623, +0.0006505660377, +0.0005009433962, + +0.0001784905660, -0.0003569811321, -0.0007254716981, -0.0005413207547, + +0.0001150943396, +0.0006045283019, +0.0005413207547, +0.0001496226415, + -0.0001611320755, -0.0002879245283, -0.0002245283019, -0.0001324528302, + -0.0001150943396, -0.0001554716981, -0.0002360377358, -0.0003513207547, + -0.0002590566038, +0.0001728301887, +0.0005413207547, +0.0005528301887, + +0.0001958490566, -0.0003339622642, -0.0007313207547, -0.0008175471698, + -0.0007543396226, -0.0006275471698, -0.0003283018868, +0.0003398113208, + +0.0008292452830, +0.0005528301887, -0.0001035849057, -0.0005758490566, + -0.0005584905660, -0.0000805660377, +0.0002820754717, +0.0003973584906, + +0.0003454716981, +0.0000403773585, -0.0004088679245, -0.0006564150943, + -0.0004835849057, +0.0001035849057, +0.0007715094340, +0.0010998113208, + +0.0008522641509, +0.0002590566038, -0.0003858490566, -0.0009213207547, + -0.0012149056604, -0.0011113207547, -0.0006852830189, -0.0000749056604, + +0.0005183018868, +0.0009903773585, +0.0010537735849, +0.0005815094340, + -0.0001611320755, -0.0006333962264, -0.0008003773585, -0.0007543396226, + -0.0004203773585, +0.0000345283019, +0.0003166037736, +0.0003339622642, + +0.0002475471698, +0.0001439622642, +0.0000518867925, -0.0000403773585, + -0.0001496226415, -0.0002245283019, -0.0000690566038, +0.0000633962264, + -0.0000173584906, +0.0000115094340, +0.0003050943396, +0.0003166037736, + +0.0001324528302, +0.0001843396226, +0.0003628301887, +0.0004433962264, + +0.0004490566038, +0.0001439622642, -0.0004318867925, -0.0010364150943, + -0.0012207547170, -0.0007024528302, +0.0001784905660, +0.0007945283019, + +0.0012149056604, +0.0014107547170, +0.0008983018868, -0.0002073584906, + -0.0010652830189, -0.0011977358491, -0.0008579245283, -0.0005239622642, + -0.0001900000000, +0.0003166037736, +0.0007830188679, +0.0008233962264, + +0.0004720754717, +0.0000000000000, -0.0002764150943, -0.0002590566038, + -0.0001266037736, -0.0000749056604, +0.0000575471698, +0.0003628301887, + +0.0005584905660, +0.0005584905660, +0.0003684905660, +0.0000115094340, + -0.0003569811321, -0.0005469811321, -0.0004664150943, -0.0000920754717, + +0.0003858490566, +0.0007484905660, +0.0007428301887, +0.0004779245283, + +0.0001496226415, -0.0002130188679, -0.0005183018868, -0.0004375471698, + +0.0000518867925, +0.0005239622642, +0.0005643396226, +0.0005067924528, + +0.0006160377358, +0.0005067924528, +0.0000000000000, -0.0003973584906, + -0.0005183018868, -0.0005815094340, -0.0005124528302, +0.0000288679245, + +0.0006218867925, +0.0007658490566, +0.0004433962264, +0.0000633962264, + -0.0001324528302, -0.0003050943396, -0.0005354716981, -0.0004318867925, + +0.0000173584906, +0.0004203773585, +0.0004952830189, +0.0003224528302, + +0.0002015094340, +0.0000633962264, -0.0001324528302, -0.0001094339623, + +0.0000058490566, -0.0000403773585, -0.0000403773585, +0.0001439622642, + +0.0003166037736, +0.0002764150943, +0.0002130188679, +0.0001784905660, + +0.0000920754717, -0.0000864150943, -0.0002879245283, -0.0004030188679, + -0.0002533962264, +0.0000000000000, +0.0004030188679, +0.0007830188679, + +0.0008060377358, +0.0004835849057, +0.0000633962264, -0.0003800000000, + -0.0007198113208, -0.0008407547170, -0.0007369811321, -0.0005354716981, + -0.0001094339623, +0.0003743396226, +0.0005469811321, +0.0004664150943, + +0.0004835849057, +0.0004145283019, +0.0000805660377, -0.0003915094340, + -0.0006275471698, -0.0005354716981, -0.0002015094340, +0.0001266037736, + +0.0001843396226, +0.0000173584906, -0.0001150943396, -0.0002705660377, + -0.0003398113208, -0.0000345283019, +0.0003628301887, +0.0003339622642, + -0.0000690566038, -0.0003339622642, -0.0002360377358, -0.0000230188679, + +0.0000633962264, +0.0000864150943, +0.0000690566038, +0.0001266037736, + +0.0003166037736, +0.0004203773585, +0.0001728301887, -0.0002475471698, + -0.0006160377358, -0.0006794339623, -0.0005298113208, -0.0002879245283, + -0.0000920754717, +0.0001150943396, +0.0003513207547, +0.0004894339623, + +0.0004030188679, +0.0003743396226, +0.0003628301887, +0.0000403773585, + -0.0004835849057, -0.0005528301887, -0.0001958490566, +0.0000345283019, + -0.0000633962264, -0.0001150943396, -0.0000403773585, -0.0000575471698, + -0.0001094339623, +0.0000460377358, +0.0002015094340, +0.0000575471698, + -0.0001266037736, -0.0000920754717, -0.0000345283019, -0.0000864150943, + -0.0002130188679, -0.0002935849057, -0.0002130188679, -0.0000518867925, + +0.0000920754717, +0.0002590566038, +0.0002705660377, -0.0001035849057, + -0.0005239622642, -0.0005067924528, -0.0001843396226, +0.0000690566038, + +0.0003109433962, +0.0004260377358, +0.0003109433962, -0.0000460377358, + -0.0003569811321, -0.0003973584906, -0.0002073584906, -0.0000518867925, + +0.0000403773585, +0.0000805660377, +0.0001035849057, -0.0000345283019, + -0.0002705660377, -0.0004720754717, -0.0005124528302, -0.0002994339623, + +0.0000920754717, +0.0001496226415, +0.0000000000000, +0.0000805660377, + +0.0002935849057, +0.0002188679245, +0.0001209433962, +0.0002130188679, + +0.0002705660377, +0.0000403773585, -0.0003569811321, -0.0005988679245, + -0.0002705660377, +0.0003628301887, +0.0006449056604, +0.0003224528302, + -0.0001900000000, -0.0004894339623, -0.0005413207547, -0.0003973584906, + +0.0000173584906, +0.0005469811321, +0.0006390566038, +0.0002303773585, + -0.0001381132075, -0.0001728301887, -0.0000575471698, +0.0000460377358, + +0.0000403773585, +0.0000000000000, +0.0000518867925, +0.0001035849057, + -0.0000173584906, -0.0000920754717, +0.0000288679245, +0.0002705660377, + +0.0004145283019, +0.0004664150943, +0.0003224528302, +0.0000460377358, + -0.0003283018868, -0.0005988679245, -0.0005873584906, -0.0003224528302, + +0.0000000000000, +0.0003684905660, +0.0005067924528, +0.0003050943396, + +0.0000403773585, -0.0000518867925, -0.0000575471698, -0.0000345283019, + -0.0001209433962, -0.0002245283019, -0.0001900000000, +0.0000173584906, + +0.0002475471698, +0.0003569811321, +0.0002994339623, +0.0000749056604, + -0.0001554716981, -0.0002533962264, -0.0002303773585, -0.0001150943396, + +0.0000058490566, -0.0000115094340, -0.0000230188679, +0.0000805660377, + +0.0001611320755, +0.0000749056604, -0.0001209433962, -0.0003166037736, + -0.0002130188679, +0.0000690566038, +0.0002073584906, +0.0002188679245, + +0.0002649056604, +0.0000460377358, -0.0002705660377, -0.0003915094340, + -0.0003050943396, -0.0002188679245, -0.0001035849057, -0.0000345283019, + -0.0000058490566, +0.0000230188679, +0.0001669811321, +0.0003109433962, + +0.0003398113208, +0.0002188679245, +0.0000805660377, -0.0000690566038, + -0.0003628301887, -0.0006218867925, -0.0005298113208, -0.0002073584906, + +0.0001496226415, +0.0004952830189, +0.0006333962264, +0.0004318867925, + -0.0000403773585, -0.0005528301887, -0.0007369811321, -0.0004260377358, + +0.0000345283019, +0.0002879245283, +0.0004030188679, +0.0005009433962, + +0.0003915094340, +0.0001209433962, -0.0001035849057, -0.0003224528302, + -0.0005873584906, -0.0005758490566, -0.0002705660377, +0.0001669811321, + +0.0005009433962, +0.0005584905660, +0.0003166037736, +0.0000805660377, + -0.0000749056604, -0.0002015094340, -0.0002935849057, -0.0001611320755, + +0.0001035849057, +0.0002533962264, +0.0001784905660, +0.0002188679245, + +0.0004318867925, +0.0005067924528, +0.0003109433962, +0.0000575471698, + -0.0002245283019, -0.0003973584906, -0.0002360377358, +0.0001381132075, + +0.0003513207547, +0.0002533962264, -0.0000230188679, -0.0002705660377, + -0.0003684905660, -0.0002475471698, +0.0000749056604, +0.0003283018868, + +0.0002764150943, +0.0000173584906, -0.0001554716981, -0.0000864150943, + +0.0001554716981, +0.0002764150943, +0.0002303773585, +0.0002073584906, + +0.0002245283019, +0.0000518867925, -0.0002245283019, -0.0002879245283, + +0.0000230188679, +0.0003398113208, +0.0003743396226, +0.0002073584906, + +0.0001035849057, +0.0000000000000, -0.0001209433962, -0.0001728301887, + +0.0000230188679, +0.0003166037736, +0.0004030188679, +0.0001439622642, + -0.0001900000000, -0.0003454716981, -0.0003283018868, -0.0002418867925, + -0.0001150943396, +0.0000690566038, +0.0002879245283, +0.0003858490566, + +0.0002879245283, +0.0000518867925, -0.0001266037736, -0.0001324528302, + -0.0000345283019, +0.0000864150943, +0.0001496226415, +0.0000115094340, + -0.0002705660377, -0.0004549056604, -0.0003973584906, -0.0001150943396, + +0.0001669811321, +0.0003224528302, +0.0003339622642, +0.0002015094340, + -0.0000230188679, -0.0000979245283, -0.0000460377358, +0.0000173584906, + +0.0000288679245, -0.0000403773585, -0.0001900000000, -0.0002303773585, + -0.0001094339623, +0.0001381132075, +0.0002705660377, +0.0001266037736, + -0.0001843396226, -0.0002015094340, +0.0000864150943, +0.0003800000000, + +0.0004894339623, +0.0003858490566, +0.0001094339623, -0.0000979245283, + -0.0001669811321, -0.0001554716981, -0.0001094339623, +0.0000115094340, + +0.0001496226415, +0.0001150943396, -0.0001150943396, -0.0002820754717, + -0.0002073584906, +0.0000058490566, +0.0001266037736, +0.0000230188679, + -0.0000805660377, +0.0000288679245, +0.0002418867925, +0.0001900000000, + -0.0000460377358, -0.0001958490566, -0.0001035849057, +0.0000058490566, + -0.0000690566038, -0.0002764150943, -0.0003224528302, -0.0002073584906, + -0.0000403773585, +0.0000000000000, -0.0000173584906, +0.0000575471698, + +0.0001728301887, +0.0000805660377, -0.0000575471698, -0.0000979245283, + -0.0001266037736, -0.0001958490566, -0.0001381132075, +0.0000000000000, + +0.0000460377358, -0.0000749056604, -0.0002245283019, -0.0002475471698, + -0.0001554716981, -0.0000749056604, -0.0000115094340, -0.0000230188679, + -0.0000575471698, -0.0000403773585, +0.0000345283019, +0.0002073584906, + +0.0003224528302, +0.0001209433962, -0.0001381132075, -0.0001035849057, + -0.0000460377358, -0.0000979245283, -0.0000690566038, -0.0000115094340, + -0.0000575471698, -0.0000749056604, -0.0001035849057, -0.0000979245283, + -0.0000058490566, +0.0002130188679, +0.0003628301887, +0.0002705660377, + +0.0000403773585, -0.0000173584906, -0.0000460377358, -0.0001554716981, + -0.0002073584906, -0.0000173584906, +0.0002245283019, +0.0002879245283, + +0.0000864150943, -0.0002015094340, -0.0004088679245, -0.0004318867925, + -0.0002418867925, +0.0001150943396, +0.0004088679245, +0.0004720754717, + +0.0002188679245, -0.0001843396226, -0.0004779245283, -0.0005239622642, + -0.0002418867925, +0.0001900000000, +0.0003684905660, +0.0001843396226, + -0.0001324528302, -0.0003454716981, -0.0002764150943, -0.0000749056604, + +0.0000805660377, +0.0000518867925, -0.0000920754717, -0.0002015094340, + -0.0000979245283, +0.0001611320755, +0.0004260377358, +0.0004088679245, + +0.0001324528302, -0.0001381132075, -0.0001611320755, -0.0000749056604, + +0.0000345283019, +0.0001150943396, +0.0001611320755, +0.0000230188679, + -0.0002360377358, -0.0003339622642, -0.0001669811321, -0.0000115094340, + +0.0000920754717, +0.0002418867925, +0.0003973584906, +0.0003398113208, + +0.0000979245283, -0.0000920754717, -0.0001554716981, -0.0000633962264, + +0.0001496226415, +0.0002245283019, +0.0000460377358, -0.0000805660377, + -0.0001266037736, -0.0002015094340, -0.0002130188679, +0.0000288679245, + +0.0003915094340, +0.0005930188679, +0.0003743396226, -0.0000633962264, + -0.0003973584906, -0.0004720754717, -0.0003743396226, -0.0001784905660, + -0.0000230188679, +0.0001843396226, +0.0003743396226, +0.0003569811321, + +0.0001094339623, -0.0000979245283, -0.0001669811321, -0.0001439622642, + -0.0001266037736, -0.0000690566038, -0.0000518867925, -0.0000173584906, + +0.0000920754717, +0.0001554716981, +0.0000690566038, -0.0000058490566, + -0.0000173584906, +0.0000230188679, +0.0000920754717, +0.0001669811321, + +0.0002015094340, +0.0000805660377, -0.0001843396226, -0.0002649056604, + -0.0000920754717, +0.0000173584906, +0.0001150943396, +0.0002360377358, + +0.0002130188679, +0.0000749056604, +0.0000000000000, -0.0001324528302, + -0.0002533962264, -0.0002015094340, +0.0000575471698, +0.0003050943396, + +0.0003569811321, +0.0000979245283, -0.0001554716981, -0.0001496226415, + +0.0000115094340, +0.0000749056604, +0.0001209433962, +0.0001843396226, + +0.0000920754717, -0.0001843396226, -0.0003166037736, -0.0002188679245, + -0.0000115094340, +0.0001209433962, +0.0002245283019, +0.0004088679245, + +0.0005124528302, +0.0002303773585, -0.0001958490566, -0.0003283018868, + -0.0002303773585, -0.0001728301887, -0.0000864150943, +0.0000749056604, + +0.0001094339623, -0.0000173584906, -0.0001900000000, -0.0001209433962, + +0.0001381132075, +0.0003283018868, +0.0003800000000, +0.0004549056604, + +0.0004030188679, +0.0002130188679, -0.0000230188679, -0.0002073584906, + -0.0003743396226, -0.0004145283019, -0.0002879245283, -0.0000115094340, + +0.0001843396226, +0.0002245283019, +0.0001843396226, +0.0001843396226, + +0.0001496226415, +0.0000979245283, -0.0000230188679, -0.0002130188679, + -0.0003398113208, -0.0002764150943, -0.0001611320755, +0.0000000000000, + +0.0001900000000, +0.0002649056604, +0.0000633962264, -0.0002475471698, + -0.0003915094340, -0.0002130188679, +0.0000690566038, +0.0001611320755, + +0.0001669811321, +0.0002303773585, +0.0001958490566, -0.0000518867925, + -0.0002820754717, -0.0002303773585, +0.0000460377358, +0.0001266037736, + -0.0000288679245, -0.0001439622642, -0.0000518867925, +0.0000575471698, + +0.0001324528302, +0.0001496226415, +0.0001381132075, +0.0000058490566, + -0.0001209433962, -0.0001150943396, +0.0000173584906, -0.0000058490566, + -0.0001209433962, -0.0000575471698, +0.0001439622642, +0.0001728301887, + +0.0000115094340, -0.0001496226415, -0.0001439622642, -0.0001381132075, + -0.0002245283019, -0.0001728301887, +0.0000920754717, +0.0003166037736, + +0.0003398113208, +0.0001958490566, -0.0000115094340, -0.0002245283019, + -0.0003166037736, -0.0001784905660, -0.0000115094340, +0.0000230188679, + +0.0000000000000, -0.0000058490566, -0.0000864150943, -0.0001843396226, + -0.0001669811321, -0.0000115094340, +0.0000575471698, +0.0000979245283, + +0.0000864150943, +0.0000000000000, -0.0001439622642, -0.0002188679245, + -0.0002994339623, -0.0002820754717, -0.0000864150943, +0.0001958490566, + +0.0002418867925, +0.0000920754717, +0.0000000000000, +0.0001094339623, + +0.0002303773585, +0.0001611320755, -0.0000920754717, -0.0002649056604, + -0.0002130188679, -0.0000690566038, -0.0000058490566, +0.0000345283019, + +0.0000403773585, -0.0001209433962, -0.0003166037736, -0.0002533962264, + +0.0000288679245, +0.0003109433962, +0.0004030188679, +0.0002303773585, + +0.0000230188679, -0.0001094339623, -0.0002360377358, -0.0003513207547, + -0.0002879245283, -0.0000749056604, +0.0002188679245, +0.0003684905660, + +0.0003743396226, +0.0002705660377, +0.0000403773585, -0.0002590566038, + -0.0002590566038, -0.0000864150943, -0.0000058490566, +0.0000230188679, + +0.0001554716981, +0.0001728301887, +0.0001381132075, +0.0001381132075, + +0.0000864150943, -0.0000633962264, -0.0001843396226, -0.0002188679245, + -0.0001554716981, -0.0000920754717, -0.0000345283019, +0.0000749056604, + +0.0002130188679, +0.0001784905660, +0.0000460377358, +0.0000000000000, + -0.0000345283019, -0.0000805660377, -0.0000690566038, -0.0000633962264, + -0.0001669811321, -0.0002705660377, -0.0003166037736, -0.0002360377358, + -0.0000690566038, +0.0000864150943, +0.0001728301887, +0.0002303773585, + +0.0001324528302, -0.0000460377358, -0.0001843396226, -0.0002015094340, + -0.0001958490566, -0.0001381132075, -0.0000460377358, +0.0001035849057, + +0.0001900000000, +0.0001669811321, +0.0000749056604, +0.0000633962264, + +0.0000633962264, -0.0000230188679, -0.0001728301887, -0.0001439622642, + -0.0000690566038, -0.0001439622642, -0.0002303773585, -0.0001324528302, + +0.0000345283019, +0.0000920754717, +0.0000403773585, +0.0000000000000, + +0.0000173584906, +0.0000345283019, +0.0000173584906, -0.0000173584906, + -0.0000058490566, +0.0000460377358, +0.0001094339623, +0.0000979245283, + +0.0000345283019, -0.0000460377358, -0.0000864150943, -0.0000403773585, + +0.0001094339623, +0.0001900000000, +0.0001381132075, +0.0000230188679, + -0.0000288679245, -0.0000575471698, -0.0000173584906, +0.0000518867925, + +0.0001094339623, +0.0001209433962, +0.0000575471698, -0.0000979245283, + -0.0001035849057, +0.0000690566038, +0.0001843396226, +0.0001554716981, + +0.0000864150943, +0.0000633962264, +0.0000749056604, -0.0000403773585, + -0.0002303773585, -0.0001784905660, +0.0000115094340, +0.0000864150943, + +0.0000805660377, +0.0000864150943, +0.0000864150943, +0.0000920754717, + +0.0000345283019, -0.0000173584906, +0.0000288679245, +0.0001209433962, + +0.0001209433962, +0.0000633962264, -0.0000864150943, -0.0001784905660, + -0.0000518867925, +0.0001669811321, +0.0002303773585, +0.0001728301887, + +0.0001266037736, +0.0001209433962, +0.0000460377358, -0.0001035849057, + -0.0002130188679, -0.0001611320755, -0.0000460377358, +0.0000749056604, + +0.0002705660377, +0.0004664150943, +0.0004375471698, +0.0001496226415, + -0.0001094339623, -0.0001784905660, -0.0001669811321, -0.0002073584906, + -0.0002130188679, -0.0000920754717, +0.0001094339623, +0.0002130188679, + +0.0002073584906, +0.0001554716981, +0.0000979245283, -0.0000173584906, + -0.0001439622642, -0.0002073584906, -0.0000979245283, +0.0001209433962, + +0.0003224528302, +0.0003684905660, +0.0002188679245, -0.0000690566038, + -0.0003224528302, -0.0003973584906, -0.0002533962264, -0.0000575471698, + +0.0000288679245, +0.0000115094340, +0.0000173584906, +0.0000345283019, + +0.0000230188679, -0.0000345283019, -0.0000749056604, -0.0000115094340, + +0.0000749056604, +0.0000575471698, -0.0000575471698, -0.0001784905660, + -0.0002418867925, -0.0002188679245, -0.0000749056604, +0.0001784905660, + +0.0003800000000, +0.0003743396226, +0.0001266037736, -0.0000864150943, + -0.0001266037736, -0.0000979245283, -0.0001439622642, -0.0001439622642, + -0.0001209433962, -0.0000979245283, -0.0000288679245, +0.0001784905660, + +0.0003166037736, +0.0002303773585, -0.0000115094340, -0.0001381132075, + -0.0000864150943, +0.0000000000000, -0.0000115094340, -0.0000173584906, + +0.0000288679245, +0.0001035849057, +0.0000979245283, +0.0000115094340, + -0.0000460377358, +0.0000230188679, +0.0001381132075, +0.0001150943396, + +0.0000000000000, -0.0000288679245, +0.0000230188679, +0.0000518867925, + +0.0000749056604, +0.0000230188679, -0.0000633962264, -0.0001669811321, + -0.0002705660377, -0.0003050943396, -0.0001784905660, -0.0000288679245, + +0.0000805660377, +0.0001900000000, +0.0003684905660, +0.0004433962264, + +0.0002820754717, +0.0000518867925, -0.0000749056604, -0.0002649056604, + -0.0004835849057, -0.0005183018868, -0.0002533962264, +0.0000575471698, + +0.0001728301887, +0.0001209433962, +0.0000633962264, +0.0000000000000, + -0.0000864150943, -0.0001150943396, -0.0000690566038, +0.0000403773585, + +0.0002073584906, +0.0002935849057, +0.0002015094340, +0.0000749056604, + +0.0000115094340, +0.0000058490566, -0.0000749056604, -0.0002475471698, + -0.0003454716981, -0.0002188679245, -0.0000575471698, +0.0000000000000, + +0.0000058490566, +0.0000920754717, +0.0001669811321, +0.0001209433962, + -0.0000403773585, -0.0001381132075, -0.0000690566038, +0.0000518867925, + +0.0000633962264, +0.0000115094340, -0.0000230188679, -0.0000288679245, + +0.0000518867925, +0.0001958490566, +0.0002188679245, +0.0000518867925, + -0.0001900000000, -0.0003050943396, -0.0002303773585, -0.0000633962264, + +0.0000460377358, +0.0000575471698, +0.0001035849057, +0.0002475471698, + +0.0002879245283, +0.0001094339623, -0.0000749056604, -0.0001784905660, + -0.0001843396226, -0.0001324528302, -0.0000575471698, +0.0000000000000, + +0.0001381132075, +0.0002015094340, +0.0000690566038, -0.0001094339623, + -0.0001554716981, -0.0000920754717, +0.0000920754717, +0.0003050943396, + +0.0004030188679, +0.0002705660377, -0.0000058490566, -0.0002590566038, + -0.0003569811321, -0.0004145283019, -0.0004203773585, -0.0002015094340, + +0.0002245283019, +0.0005239622642, +0.0005009433962, +0.0003454716981, + +0.0001611320755, -0.0000690566038, -0.0002245283019, -0.0001784905660, + -0.0001094339623, -0.0001035849057, -0.0001611320755, -0.0001381132075, + +0.0000345283019, +0.0001958490566, +0.0000575471698, -0.0001900000000, + -0.0002475471698, -0.0000518867925, +0.0000690566038, +0.0000403773585, + -0.0000058490566, +0.0000058490566, -0.0000288679245, -0.0000979245283, + -0.0001554716981, -0.0001324528302, +0.0000460377358, +0.0002879245283, + +0.0003339622642, +0.0002130188679, +0.0000690566038, -0.0001094339623, + -0.0002935849057, -0.0003454716981, -0.0002590566038, -0.0001496226415, + -0.0000633962264, +0.0000288679245, +0.0001266037736, +0.0001900000000, + +0.0002764150943, +0.0003166037736, +0.0002418867925, +0.0000000000000, + -0.0003166037736, -0.0005354716981, -0.0004490566038, -0.0001035849057, + +0.0003513207547, +0.0005700000000, +0.0004145283019, +0.0000633962264, + -0.0001209433962, -0.0001439622642, -0.0001209433962, -0.0001035849057, + +0.0000288679245, +0.0001728301887, +0.0002015094340, +0.0001554716981, + +0.0001784905660, +0.0001611320755, -0.0000230188679, -0.0002188679245, + -0.0002130188679, -0.0000920754717, +0.0000000000000, +0.0001266037736, + +0.0003224528302, +0.0004260377358, +0.0002935849057, +0.0001035849057, + -0.0000690566038, -0.0002015094340, -0.0002015094340, -0.0000345283019, + +0.0000920754717, +0.0001496226415, +0.0001035849057, +0.0000345283019, + -0.0000115094340, -0.0000058490566, -0.0000345283019, -0.0000288679245, + +0.0000000000000, +0.0000230188679, -0.0000690566038, -0.0002188679245, + -0.0002590566038, -0.0001150943396, +0.0000230188679, +0.0001439622642, + +0.0002705660377, +0.0003398113208, +0.0002879245283, +0.0001958490566, + +0.0000345283019, -0.0002130188679, -0.0004203773585, -0.0003628301887, + -0.0001150943396, +0.0000403773585, +0.0000288679245, -0.0000173584906, + -0.0000115094340, +0.0000749056604, +0.0002705660377, +0.0003743396226, + +0.0002994339623, +0.0000345283019, -0.0002820754717, -0.0004835849057, + -0.0003743396226, -0.0001094339623, +0.0001843396226, +0.0003454716981, + +0.0002820754717, +0.0000633962264, -0.0000058490566, +0.0000633962264, + +0.0000864150943, -0.0000345283019, -0.0000979245283, -0.0000864150943, + -0.0001439622642, -0.0003166037736, -0.0003973584906, -0.0002820754717, + -0.0000115094340, +0.0002073584906, +0.0002935849057, +0.0002935849057, + +0.0001958490566, -0.0000403773585, -0.0002820754717, -0.0002303773585, + +0.0000575471698, +0.0003109433962, +0.0003628301887, +0.0003283018868, + +0.0002130188679, -0.0000173584906, -0.0002935849057, -0.0004088679245, + -0.0003915094340, -0.0003454716981, -0.0002820754717, -0.0000920754717, + +0.0001150943396, +0.0002935849057, +0.0003109433962, +0.0001266037736, + -0.0000345283019, +0.0000230188679, +0.0000805660377, +0.0000575471698, + +0.0000345283019, +0.0000000000000, -0.0001266037736, -0.0003283018868, + -0.0003109433962, +0.0000979245283, +0.0005183018868, +0.0004952830189, + +0.0001496226415, -0.0001266037736, -0.0002015094340, -0.0001900000000, + -0.0001266037736, -0.0000518867925, -0.0000345283019, -0.0000633962264, + -0.0000345283019, +0.0000058490566, -0.0000173584906, -0.0001728301887, + -0.0002764150943, -0.0001728301887, +0.0000403773585, +0.0001784905660, + +0.0002418867925, +0.0002303773585, +0.0001843396226, +0.0001035849057, + +0.0000115094340, -0.0000749056604, -0.0001324528302, -0.0001669811321, + -0.0002188679245, -0.0002360377358, -0.0001150943396, +0.0000518867925, + +0.0001381132075, +0.0001266037736, +0.0000633962264, -0.0000403773585, + -0.0001843396226, -0.0002649056604, -0.0002245283019, -0.0000749056604, + +0.0000749056604, +0.0001728301887, +0.0001728301887, +0.0001324528302, + +0.0000979245283, +0.0001324528302, +0.0001381132075, +0.0000575471698, + -0.0000403773585, -0.0001035849057, -0.0001728301887, -0.0002073584906, + -0.0001843396226, -0.0000805660377, +0.0000575471698, +0.0001035849057, + +0.0000000000000, -0.0000864150943, -0.0000518867925, -0.0000633962264, + -0.0002015094340, -0.0002073584906, +0.0001094339623, +0.0005067924528, + +0.0006103773585, +0.0003513207547, -0.0000345283019, -0.0002994339623, + -0.0003569811321, -0.0002533962264, -0.0000633962264, +0.0001150943396, + +0.0002764150943, +0.0003513207547, +0.0002533962264, +0.0000230188679, + -0.0001439622642, -0.0002418867925, -0.0002820754717, -0.0002533962264, + -0.0000920754717, +0.0001209433962, +0.0002245283019, +0.0001209433962, + -0.0000230188679, -0.0000633962264, +0.0000000000000, +0.0000230188679, + -0.0000690566038, -0.0001728301887, -0.0001094339623, +0.0000345283019, + +0.0001496226415, +0.0002533962264, +0.0002935849057, +0.0001669811321, + -0.0001035849057, -0.0003398113208, -0.0003513207547, -0.0001784905660, + +0.0000173584906, +0.0001728301887, +0.0001554716981, +0.0000000000000, + -0.0001728301887, -0.0002073584906, -0.0001266037736, -0.0000058490566, + +0.0000749056604, +0.0001669811321, +0.0001958490566, +0.0001324528302, + +0.0000749056604, +0.0000864150943, +0.0000979245283, +0.0000000000000, + -0.0001784905660, -0.0002303773585, -0.0000805660377, +0.0000749056604, + +0.0001094339623, +0.0000920754717, +0.0001035849057, +0.0001035849057, + +0.0000288679245, -0.0001150943396, -0.0002475471698, -0.0002590566038, + -0.0000749056604, +0.0001554716981, +0.0002590566038, +0.0002418867925, + +0.0002418867925, +0.0001900000000, +0.0000518867925, -0.0001209433962, + -0.0001843396226, -0.0001035849057, -0.0000230188679, -0.0000115094340, + +0.0000403773585, +0.0000864150943, +0.0000115094340, -0.0000575471698, + +0.0000115094340, +0.0001784905660, +0.0002764150943, +0.0002188679245, + +0.0000288679245, -0.0001728301887, -0.0002764150943, -0.0002188679245, + -0.0000518867925, +0.0001209433962, +0.0002188679245, +0.0001843396226, + -0.0000058490566, -0.0001900000000, -0.0002188679245, -0.0001381132075, + -0.0000690566038, -0.0000115094340, +0.0000288679245, +0.0001150943396, + +0.0001900000000, +0.0001611320755, -0.0000173584906, -0.0001728301887, + -0.0001611320755, -0.0000575471698, -0.0000575471698, -0.0001381132075, + -0.0002130188679, -0.0002360377358, -0.0001843396226, -0.0000575471698, + +0.0000633962264, +0.0001784905660, +0.0002475471698, +0.0002764150943, + +0.0002188679245, +0.0000230188679, -0.0001784905660, -0.0002360377358, + -0.0000749056604, +0.0001094339623, +0.0001554716981, +0.0001381132075, + +0.0002188679245, +0.0002418867925, +0.0000805660377, -0.0001496226415, + -0.0002764150943, -0.0002820754717, -0.0001784905660, +0.0000000000000, + +0.0002360377358, +0.0003800000000, +0.0003743396226, +0.0002649056604, + +0.0001611320755, +0.0000460377358, -0.0001035849057, -0.0002130188679, + -0.0001669811321, -0.0000230188679, +0.0001381132075, +0.0002475471698, + +0.0002245283019, +0.0001035849057, -0.0000288679245, -0.0000633962264, + +0.0000000000000, +0.0000633962264, +0.0000403773585, +0.0000230188679, + +0.0000518867925, +0.0000920754717, +0.0000173584906, -0.0000864150943, + -0.0001209433962, -0.0000864150943, -0.0000920754717, -0.0000979245283, + -0.0000173584906, +0.0001496226415, +0.0002360377358, +0.0002073584906, + +0.0001266037736, +0.0000864150943, +0.0000460377358, -0.0000115094340, + -0.0000864150943, -0.0001266037736, -0.0001554716981, -0.0001381132075, + -0.0000633962264, -0.0000173584906, -0.0000115094340, +0.0000000000000, + +0.0000864150943, +0.0001324528302, +0.0000864150943, -0.0000288679245, + -0.0001266037736, -0.0001209433962, +0.0000000000000, +0.0001150943396, + +0.0001843396226, +0.0001266037736, -0.0000115094340, -0.0001728301887, + -0.0002705660377, -0.0002073584906, +0.0000288679245, +0.0002245283019, + +0.0002303773585, +0.0000749056604, -0.0000864150943, -0.0001784905660, + -0.0001784905660, -0.0001209433962, -0.0000230188679, +0.0000864150943, + +0.0001496226415, +0.0001209433962, +0.0000345283019, -0.0000345283019, + -0.0000403773585, +0.0000230188679, +0.0000460377358, +0.0000115094340, + +0.0000000000000, +0.0000173584906, +0.0000173584906, -0.0000230188679, + -0.0001035849057, -0.0001611320755, -0.0001958490566, -0.0002303773585, + -0.0002245283019, -0.0001035849057, -0.0000058490566, -0.0000115094340, + -0.0000288679245, +0.0000058490566, +0.0000230188679, +0.0000173584906, + -0.0000173584906, -0.0000864150943, -0.0001035849057, -0.0000403773585, + +0.0000230188679, +0.0000460377358, +0.0000288679245, -0.0000403773585, + -0.0001094339623, -0.0000345283019, +0.0001439622642, +0.0002188679245, + +0.0001035849057, -0.0001094339623, -0.0002418867925, -0.0002590566038, + -0.0001958490566, -0.0000518867925, +0.0001209433962, +0.0001900000000, + +0.0001669811321, +0.0001094339623, +0.0000058490566, -0.0001209433962, + -0.0001843396226, -0.0001611320755, -0.0000920754717, -0.0000173584906, + +0.0000920754717, +0.0001843396226, +0.0001554716981, +0.0000173584906, + -0.0000864150943, -0.0001611320755, -0.0001900000000, -0.0000805660377, + +0.0001150943396, +0.0002303773585, +0.0001439622642, -0.0000345283019, + -0.0001496226415, -0.0001209433962, -0.0000749056604, -0.0001094339623, + -0.0001094339623, +0.0000575471698, +0.0002015094340, +0.0001669811321, + +0.0000460377358, -0.0000058490566, -0.0000518867925, -0.0000460377358, + +0.0000518867925, +0.0002015094340, +0.0002188679245, +0.0000749056604, + -0.0000920754717, -0.0001728301887, -0.0001611320755, -0.0000749056604, + +0.0000518867925, +0.0002073584906, +0.0002820754717, +0.0001554716981, + -0.0001094339623, -0.0002590566038, -0.0001266037736, +0.0001035849057, + +0.0001843396226, +0.0000920754717, -0.0000288679245, -0.0001324528302, + -0.0001900000000, -0.0001324528302, +0.0000115094340, +0.0000864150943, + +0.0000460377358, -0.0000058490566, -0.0000230188679, -0.0000979245283, + -0.0001958490566, -0.0001900000000, -0.0000288679245, +0.0001669811321, + +0.0002590566038, +0.0001611320755, -0.0000173584906, -0.0001381132075, + -0.0001496226415, -0.0000749056604, +0.0000173584906, +0.0001094339623, + +0.0001150943396, +0.0000000000000, -0.0001266037736, -0.0001324528302, + -0.0000403773585, +0.0000230188679, +0.0000230188679, +0.0000864150943, + +0.0002130188679, +0.0002475471698, +0.0001094339623, -0.0000575471698, + -0.0001209433962, -0.0000805660377, -0.0000920754717, -0.0001324528302, + -0.0000690566038, +0.0001094339623, +0.0002073584906, +0.0001209433962, + +0.0000173584906, +0.0000460377358, +0.0001094339623, +0.0000864150943, + +0.0000288679245, +0.0000979245283, +0.0002360377358, +0.0002245283019, + +0.0000575471698, -0.0000690566038, -0.0000864150943, -0.0000749056604, + -0.0000518867925, -0.0000115094340, +0.0000345283019, +0.0000690566038, + +0.0000979245283, +0.0001266037736, +0.0001611320755, +0.0001496226415, + +0.0001209433962, +0.0000690566038, -0.0000403773585, -0.0001784905660, + -0.0002418867925, -0.0002188679245, -0.0000920754717, +0.0000690566038, + +0.0001324528302, +0.0000920754717, +0.0000920754717, +0.0001209433962, + +0.0000633962264, -0.0000230188679, -0.0000288679245, +0.0000403773585, + +0.0000575471698, -0.0000345283019, -0.0001611320755, -0.0002130188679, + -0.0001669811321, -0.0000633962264, +0.0000690566038, +0.0001784905660, + +0.0001439622642, +0.0000058490566, -0.0000749056604, -0.0000115094340, + +0.0001035849057, +0.0001496226415, +0.0001035849057, +0.0000115094340, + -0.0000864150943, -0.0001611320755, -0.0001496226415, -0.0000345283019, + +0.0000749056604, +0.0000979245283, +0.0000230188679, -0.0000518867925, + -0.0000633962264, -0.0000403773585, -0.0000115094340, +0.0000345283019, + +0.0001439622642, +0.0002188679245, +0.0001324528302, -0.0000633962264, + -0.0002015094340, -0.0002303773585, -0.0001669811321, +0.0000000000000, + +0.0002303773585, +0.0003628301887, +0.0002994339623, +0.0000749056604, + -0.0001266037736, -0.0001900000000, -0.0000864150943, +0.0000288679245, + +0.0000288679245, -0.0000345283019, -0.0000633962264, -0.0000575471698, + -0.0000345283019, +0.0000115094340, +0.0000920754717, +0.0001439622642, + +0.0000979245283, +0.0000000000000, -0.0000805660377, -0.0001209433962, + -0.0000979245283, +0.0000000000000, +0.0000690566038, +0.0000575471698, + +0.0000345283019, +0.0000460377358, +0.0000058490566, -0.0000864150943, + -0.0001900000000, -0.0002015094340, -0.0000920754717, +0.0000518867925, + +0.0000864150943, +0.0000058490566, -0.0001035849057, -0.0001381132075, + -0.0000345283019, +0.0001209433962, +0.0001439622642, -0.0000058490566, + -0.0001728301887, -0.0001958490566, -0.0001209433962, -0.0000403773585, + +0.0000230188679, +0.0001094339623, +0.0001554716981, +0.0001035849057, + -0.0000058490566, -0.0000518867925, -0.0000345283019, -0.0000460377358, + -0.0000864150943, -0.0001035849057, -0.0000518867925, +0.0000230188679, + +0.0000633962264, +0.0000690566038, +0.0000690566038, +0.0000690566038, + +0.0000403773585, -0.0000230188679, -0.0000749056604, -0.0000979245283, + -0.0001094339623, -0.0000805660377, -0.0000115094340, +0.0000518867925, + +0.0000979245283, +0.0001209433962, +0.0000979245283, +0.0000345283019, + -0.0000518867925, -0.0001266037736, -0.0001150943396, -0.0000173584906, + +0.0000690566038, +0.0000920754717, +0.0000575471698, +0.0000000000000, + -0.0000460377358, -0.0000690566038, -0.0000749056604, -0.0000230188679, + +0.0000749056604, +0.0001439622642, +0.0001094339623, -0.0000058490566, + -0.0001035849057, -0.0001094339623, -0.0000288679245, +0.0000633962264, + +0.0001324528302, +0.0001381132075, +0.0001035849057, +0.0000805660377, + +0.0000920754717, +0.0000575471698, -0.0000403773585, -0.0001611320755, + -0.0002073584906, -0.0001900000000, -0.0000979245283, +0.0000173584906, + +0.0001094339623, +0.0002130188679, +0.0003109433962, +0.0002475471698, + +0.0000115094340, -0.0002188679245, -0.0003166037736, -0.0002764150943, + -0.0001496226415, +0.0000000000000, +0.0001381132075, +0.0002533962264, + +0.0002533962264, +0.0001324528302, -0.0000058490566, -0.0000864150943, + -0.0001150943396, -0.0000979245283, -0.0000575471698, -0.0000288679245, + -0.0000345283019, -0.0000460377358, -0.0000345283019, +0.0000000000000, + +0.0000345283019, +0.0000403773585, +0.0000000000000, -0.0000345283019, + -0.0000633962264, -0.0000518867925, -0.0000115094340, +0.0000173584906, + +0.0000058490566, -0.0000115094340, -0.0000058490566, +0.0000403773585, + +0.0000518867925, +0.0000000000000, -0.0000805660377, -0.0001381132075, + -0.0000749056604, +0.0000749056604, +0.0001958490566, +0.0001784905660, + +0.0000864150943, -0.0000058490566, -0.0000864150943, -0.0001209433962, + -0.0000575471698, +0.0000058490566, +0.0000230188679, +0.0000288679245, + +0.0000805660377, +0.0001209433962, +0.0001035849057, +0.0000288679245, + -0.0000288679245, -0.0000345283019, -0.0000058490566, +0.0000000000000, + +0.0000345283019, +0.0001150943396, +0.0001439622642, +0.0000460377358, + -0.0000749056604, -0.0001439622642, -0.0001324528302, -0.0000979245283, + -0.0000460377358, +0.0000173584906, +0.0000805660377, +0.0001381132075, + +0.0001439622642, +0.0000864150943, +0.0000173584906, +0.0000058490566, + +0.0000000000000, -0.0000058490566, -0.0000058490566, +0.0000058490566, + -0.0000058490566, -0.0000403773585, -0.0000633962264, -0.0000288679245, + +0.0000690566038, +0.0001669811321, +0.0001266037736, -0.0000115094340, + -0.0001496226415, -0.0002130188679, -0.0002303773585, -0.0001266037736, + +0.0000690566038, +0.0002303773585, +0.0002188679245, +0.0000575471698, + -0.0000805660377, -0.0001266037736, -0.0001381132075, -0.0001266037736, + -0.0000403773585, +0.0000749056604, +0.0001554716981, +0.0001496226415, + +0.0001094339623, +0.0000690566038, +0.0000230188679, -0.0000575471698, + -0.0001439622642, -0.0001554716981, -0.0000805660377, -0.0000058490566, + +0.0000230188679, +0.0000633962264, +0.0001150943396, +0.0001209433962, + +0.0000920754717, +0.0000749056604, +0.0000864150943, +0.0000518867925, + +0.0000173584906, +0.0000288679245, +0.0000173584906, -0.0000403773585, + -0.0000575471698, -0.0000058490566, +0.0000690566038, +0.0001266037736, + +0.0001150943396, +0.0000575471698, +0.0000403773585, +0.0000575471698, + +0.0000403773585, +0.0000288679245, +0.0000749056604, +0.0001209433962, + +0.0000633962264, -0.0000749056604, -0.0001958490566, -0.0002130188679, + -0.0001611320755, -0.0000920754717, -0.0000230188679, +0.0000864150943, + +0.0001900000000, +0.0002303773585, +0.0001669811321, +0.0000518867925, + -0.0000518867925, -0.0001266037736, -0.0002015094340, -0.0002533962264, + -0.0002073584906, -0.0000805660377, +0.0000460377358, +0.0001496226415, + +0.0002130188679, +0.0001728301887, +0.0000633962264, +0.0000000000000, + -0.0000345283019, -0.0000920754717, -0.0001554716981, -0.0001784905660, + -0.0001554716981, -0.0000805660377, +0.0000230188679, +0.0001150943396, + +0.0001324528302, +0.0000749056604, +0.0000000000000, -0.0000749056604, + -0.0001381132075, -0.0001439622642, -0.0000749056604, +0.0000288679245, + +0.0000979245283, +0.0000575471698, +0.0000000000000, +0.0000000000000, + +0.0000000000000, -0.0000749056604, -0.0001784905660, -0.0002130188679, + -0.0001209433962, +0.0000230188679, +0.0001209433962, +0.0001094339623, + +0.0000575471698, +0.0000115094340, -0.0000460377358, -0.0001094339623, + -0.0001094339623, -0.0000058490566, +0.0001324528302, +0.0002188679245, + +0.0002245283019, +0.0001728301887, +0.0000979245283, +0.0000115094340, + -0.0000920754717, -0.0001843396226, -0.0001784905660, -0.0001266037736, + -0.0001150943396, -0.0000690566038, +0.0000690566038, +0.0002015094340, + +0.0001611320755, +0.0000173584906, -0.0000690566038, -0.0000690566038, + -0.0000518867925, -0.0000460377358, +0.0000000000000, +0.0000805660377, + +0.0001266037736, +0.0000805660377, +0.0000115094340, -0.0000288679245, + -0.0000633962264, -0.0001150943396, -0.0001439622642, -0.0001035849057, + +0.0000000000000, +0.0000920754717, +0.0001324528302, +0.0001035849057, + +0.0000288679245, -0.0000403773585, -0.0000690566038, -0.0000403773585, + +0.0000058490566, +0.0000058490566, -0.0000690566038, -0.0001324528302, + -0.0000864150943, -0.0000230188679, -0.0000115094340, +0.0000000000000, + +0.0000575471698, +0.0000920754717, +0.0000460377358, -0.0000058490566, + +0.0000058490566, +0.0000460377358, +0.0000230188679, -0.0000288679245, + -0.0000288679245, +0.0000345283019, +0.0000690566038, +0.0000403773585, + -0.0000403773585, -0.0001554716981, -0.0002130188679, -0.0001496226415, + +0.0000000000000, +0.0001324528302, +0.0001958490566, +0.0001669811321, + +0.0000979245283, +0.0000575471698, +0.0000460377358, +0.0000230188679, + +0.0000000000000, +0.0000000000000, +0.0000173584906, +0.0000288679245, + -0.0000173584906, -0.0000979245283, -0.0001209433962, -0.0000805660377, + -0.0000173584906, +0.0000633962264, +0.0001266037736, +0.0001496226415, + +0.0001266037736, +0.0000864150943, +0.0000575471698, +0.0000403773585, + +0.0000000000000, -0.0000575471698, -0.0000690566038, -0.0000115094340, + +0.0000115094340, -0.0000115094340, -0.0000173584906, +0.0000345283019, + +0.0000864150943, +0.0000805660377, +0.0000575471698, +0.0000575471698, + +0.0000288679245, -0.0000749056604, -0.0001669811321, -0.0001094339623, + +0.0000403773585, +0.0001209433962, +0.0000518867925, -0.0000575471698, + -0.0001094339623, -0.0000920754717, -0.0000633962264, -0.0000288679245, + +0.0000288679245, +0.0001150943396, +0.0001611320755, +0.0001150943396, + +0.0000000000000, -0.0001324528302, -0.0002073584906, -0.0001439622642, + +0.0000058490566, +0.0001266037736, +0.0001266037736, +0.0000518867925, + -0.0000058490566, -0.0000518867925, -0.0000690566038, -0.0000460377358, + +0.0000000000000, -0.0000173584906, -0.0000864150943, -0.0001150943396, + -0.0000230188679, +0.0001266037736, +0.0002073584906, +0.0001611320755, + +0.0000805660377, -0.0000173584906, -0.0001728301887, -0.0002879245283, + -0.0002418867925, -0.0000575471698, +0.0000979245283, +0.0001554716981, + +0.0001496226415, +0.0001266037736, +0.0000518867925, -0.0000518867925, + -0.0000979245283, -0.0000403773585, +0.0000690566038, +0.0001324528302, + +0.0001035849057, +0.0000288679245, -0.0000805660377, -0.0001958490566, + -0.0002073584906, -0.0000575471698, +0.0001035849057, +0.0001266037736, + +0.0000403773585, +0.0000115094340, +0.0000633962264, +0.0000690566038, + +0.0000000000000, -0.0000575471698, -0.0000518867925, -0.0000345283019, + -0.0000345283019, -0.0000345283019, -0.0000173584906, +0.0000000000000, + +0.0000173584906, +0.0000460377358, +0.0000920754717, +0.0001209433962, + +0.0000979245283, +0.0000345283019, -0.0000115094340, -0.0000173584906, + -0.0000345283019, -0.0000575471698, -0.0000288679245, +0.0000403773585, + +0.0000805660377, +0.0000518867925, -0.0000058490566, -0.0000460377358, + -0.0000518867925, -0.0000288679245, +0.0000230188679, +0.0000805660377, + +0.0000805660377, +0.0000173584906, -0.0000403773585, -0.0000518867925, + -0.0000575471698, -0.0000805660377, -0.0000518867925, +0.0000690566038, + +0.0001900000000, +0.0001728301887, +0.0000864150943, +0.0000345283019, + +0.0000115094340, -0.0000403773585, -0.0001209433962, -0.0001381132075, + -0.0000805660377, -0.0000115094340, +0.0000345283019, +0.0000749056604, + +0.0001209433962, +0.0001324528302, +0.0000633962264, -0.0000575471698, + -0.0001439622642, -0.0001209433962, -0.0000690566038, -0.0000345283019, + +0.0000000000000, +0.0000460377358, +0.0000690566038, +0.0000805660377, + +0.0000749056604, +0.0000518867925, +0.0000345283019, +0.0000000000000, + -0.0000230188679, -0.0000518867925, -0.0000920754717, -0.0001381132075, + -0.0001324528302, -0.0000518867925, +0.0000288679245, +0.0000749056604, + +0.0000460377358, -0.0000173584906, -0.0000460377358, -0.0000230188679, + +0.0000000000000, +0.0000000000000, -0.0000173584906, +0.0000000000000, + +0.0000518867925, +0.0000690566038, +0.0000460377358, +0.0000460377358, + +0.0000805660377, +0.0000979245283, +0.0000403773585, -0.0000633962264, + -0.0001209433962, -0.0000805660377, +0.0000115094340, +0.0000805660377, + +0.0000920754717, +0.0000749056604, +0.0000403773585, +0.0000058490566, + -0.0000345283019, -0.0000864150943, -0.0001209433962, -0.0000805660377, + +0.0000000000000, +0.0000518867925, +0.0000979245283, +0.0001266037736, + +0.0001381132075, +0.0000979245283, +0.0000173584906, -0.0000805660377, + -0.0001611320755, -0.0001669811321, -0.0000633962264, +0.0000518867925, + +0.0001094339623, +0.0001035849057, +0.0000920754717, +0.0000633962264, + -0.0000058490566, -0.0000920754717, -0.0001094339623, -0.0000403773585, + +0.0000575471698, +0.0001266037736, +0.0001266037736, +0.0000345283019, + -0.0000805660377, -0.0001381132075, -0.0000920754717, -0.0000058490566, + +0.0000749056604, +0.0001439622642, +0.0001439622642, +0.0000749056604, + +0.0000000000000, -0.0000115094340, +0.0000460377358, +0.0000979245283, + +0.0000230188679, -0.0000864150943, -0.0001035849057, -0.0000403773585, + +0.0000000000000, +0.0000000000000, +0.0000000000000, +0.0000000000000, + +0.0000173584906, +0.0000575471698, +0.0000633962264, +0.0000000000000, + -0.0000979245283, -0.0001150943396, -0.0000345283019, +0.0000460377358, + +0.0000345283019, -0.0000230188679, -0.0000345283019, -0.0000345283019, + -0.0000690566038, -0.0001094339623, -0.0000979245283, -0.0000403773585, + +0.0000000000000, +0.0000173584906, +0.0000173584906, -0.0000173584906, + -0.0000690566038, -0.0000749056604, +0.0000000000000, +0.0001150943396, + +0.0001554716981, +0.0000460377358, -0.0000920754717, -0.0001496226415, + -0.0001324528302, -0.0000979245283, -0.0000690566038, -0.0000173584906, + +0.0000403773585, +0.0001094339623, +0.0001439622642, +0.0001035849057, + -0.0000173584906, -0.0001728301887, -0.0002418867925, -0.0001496226415, + +0.0000230188679, +0.0001669811321, +0.0001958490566, +0.0001094339623, + -0.0000460377358, -0.0002015094340, -0.0002764150943, -0.0001958490566, + +0.0000173584906, +0.0002245283019, +0.0002820754717, +0.0002015094340, + +0.0000690566038, -0.0000403773585, -0.0000979245283, -0.0001209433962, + -0.0001324528302, -0.0001209433962, -0.0000403773585, +0.0000749056604, + +0.0001728301887, +0.0001900000000, +0.0001209433962, +0.0000000000000, + -0.0001035849057, -0.0000979245283, +0.0000000000000, +0.0000920754717, + +0.0001324528302, +0.0001266037736, +0.0000864150943, +0.0000345283019, + -0.0000288679245, -0.0001150943396, -0.0001439622642, -0.0000805660377, + -0.0000173584906, -0.0000115094340, -0.0000115094340, +0.0000115094340, + +0.0000345283019, +0.0000288679245, +0.0000173584906, +0.0000345283019, + +0.0000288679245, -0.0000173584906, -0.0000690566038, -0.0000749056604, + -0.0000575471698, -0.0000230188679, +0.0000403773585, +0.0001094339623, + +0.0001094339623, +0.0000633962264, +0.0000230188679, +0.0000000000000, + -0.0000173584906, -0.0000288679245, -0.0000288679245, -0.0000230188679, + -0.0000058490566, +0.0000058490566, +0.0000000000000, -0.0000230188679, + -0.0000345283019, -0.0000345283019, -0.0000115094340, +0.0000230188679, + +0.0000633962264, +0.0000920754717, +0.0000920754717, +0.0000749056604, + +0.0000633962264, +0.0000230188679, -0.0000173584906, -0.0000518867925, + -0.0000690566038, -0.0000690566038, -0.0000749056604, -0.0000749056604, + -0.0000518867925, +0.0000115094340, +0.0001035849057, +0.0001843396226, + +0.0002073584906, +0.0001611320755, +0.0000690566038, -0.0000518867925, + -0.0001843396226, -0.0002590566038, -0.0002188679245, -0.0000518867925, + +0.0001150943396, +0.0001958490566, +0.0001843396226, +0.0001150943396, + +0.0000288679245, -0.0000230188679, -0.0000690566038, -0.0000864150943, + -0.0000288679245, +0.0000633962264, +0.0001209433962, +0.0001381132075, + +0.0001209433962, +0.0000403773585, -0.0000633962264, -0.0001035849057, + -0.0000575471698, -0.0000173584906, -0.0000345283019, -0.0000749056604, + -0.0000518867925, +0.0000115094340, +0.0000575471698, +0.0000805660377, + +0.0001035849057, +0.0000979245283, +0.0000575471698, +0.0000230188679, + +0.0000058490566, -0.0000115094340, -0.0000518867925, -0.0000864150943, + -0.0000979245283, -0.0000518867925, +0.0000058490566, +0.0000345283019, + +0.0000345283019, +0.0000518867925, +0.0000460377358, +0.0000403773585, + +0.0000460377358, +0.0000288679245, -0.0000230188679, -0.0000805660377, + -0.0001035849057, -0.0000749056604, -0.0000403773585, -0.0000230188679, + +0.0000115094340, +0.0000518867925, +0.0000403773585, +0.0000115094340, + +0.0000058490566, +0.0000288679245, +0.0000460377358, +0.0000345283019, + +0.0000058490566, -0.0000403773585, -0.0000920754717, -0.0001035849057, + -0.0000749056604, -0.0000518867925, +0.0000000000000, +0.0000633962264, + +0.0001150943396, +0.0000805660377, +0.0000000000000, -0.0000633962264, + -0.0000805660377, -0.0000864150943, -0.0000690566038, -0.0000403773585, + +0.0000000000000, +0.0000230188679, +0.0000288679245, +0.0000345283019, + +0.0000575471698, +0.0000690566038, +0.0000230188679, -0.0000403773585, + -0.0000979245283, -0.0001324528302, -0.0001381132075, -0.0000920754717, + -0.0000230188679, +0.0000460377358, +0.0001035849057, +0.0001266037736, + +0.0000864150943, +0.0000403773585, +0.0000000000000, -0.0000575471698, + -0.0001266037736, -0.0001324528302, -0.0000460377358, +0.0000749056604, + +0.0001728301887, +0.0001900000000, +0.0001381132075, +0.0000518867925, + -0.0000403773585, -0.0001266037736, -0.0001324528302, -0.0000575471698, + +0.0000288679245, +0.0000690566038, +0.0000749056604, +0.0000575471698, + +0.0000460377358, +0.0000173584906, -0.0000230188679, -0.0000805660377, + -0.0000979245283, -0.0000749056604, -0.0000058490566, +0.0000864150943, + +0.0001381132075, +0.0001035849057, +0.0000518867925, +0.0000000000000, + -0.0000518867925, -0.0001209433962, -0.0001496226415, -0.0000979245283, + +0.0000000000000, +0.0000864150943, +0.0001324528302, +0.0001554716981, + +0.0001439622642, +0.0000920754717, +0.0000000000000, -0.0000805660377, + -0.0000864150943, -0.0000518867925, -0.0000518867925, -0.0000518867925, + +0.0000000000000, +0.0000518867925, +0.0000288679245, -0.0000230188679, + -0.0000230188679, +0.0000115094340, +0.0000403773585, +0.0000403773585, + +0.0000345283019, +0.0000345283019, +0.0000403773585, +0.0000115094340, + -0.0000173584906, -0.0000633962264, -0.0001150943396, -0.0001439622642, + -0.0001035849057, -0.0000173584906, +0.0000690566038, +0.0001150943396, + +0.0000864150943, +0.0000058490566, -0.0000633962264, -0.0000920754717, + -0.0000690566038, -0.0000288679245, +0.0000173584906, +0.0000403773585, + +0.0000288679245, -0.0000058490566, -0.0000518867925, -0.0000633962264, + -0.0000115094340, +0.0000633962264, +0.0001381132075, +0.0001611320755, + +0.0001094339623, +0.0000000000000, -0.0001381132075, -0.0002130188679, + -0.0001496226415, +0.0000000000000, +0.0001381132075, +0.0001728301887, + +0.0001209433962, +0.0000518867925, +0.0000000000000, -0.0000633962264, + -0.0001324528302, -0.0001381132075, -0.0000749056604, +0.0000000000000, + +0.0000518867925, +0.0000749056604, +0.0000805660377, +0.0000575471698, + +0.0000000000000, -0.0000403773585, -0.0000460377358, -0.0000345283019, + -0.0000288679245, -0.0000173584906, +0.0000460377358, +0.0001266037736, + +0.0001324528302, +0.0000403773585, -0.0000288679245, -0.0000345283019, + +0.0000000000000, +0.0000058490566, +0.0000000000000, -0.0000058490566, + -0.0000230188679, -0.0000460377358, -0.0000403773585, +0.0000000000000, + +0.0000575471698, +0.0000805660377, +0.0000518867925, +0.0000230188679, + +0.0000115094340, +0.0000230188679, +0.0000173584906, +0.0000058490566, + +0.0000058490566, +0.0000173584906, +0.0000288679245, +0.0000460377358, + +0.0000288679245, -0.0000058490566, -0.0000403773585, -0.0000345283019, + -0.0000058490566, +0.0000058490566, +0.0000173584906, +0.0000230188679, + +0.0000115094340, +0.0000000000000, +0.0000000000000, +0.0000058490566, + +0.0000288679245, +0.0000345283019, +0.0000460377358, +0.0000403773585, + +0.0000173584906, +0.0000000000000, -0.0000058490566, -0.0000288679245, + -0.0000518867925, -0.0000403773585, +0.0000000000000, +0.0000173584906, + +0.0000288679245, +0.0000230188679, +0.0000288679245, +0.0000345283019, + +0.0000230188679, +0.0000058490566, +0.0000000000000, -0.0000115094340, + -0.0000345283019, -0.0000403773585, -0.0000288679245, +0.0000000000000, + +0.0000173584906, +0.0000403773585, +0.0000345283019, +0.0000345283019, + +0.0000173584906, +0.0000058490566, +0.0000000000000, +0.0000058490566, + +0.0000058490566, +0.0000000000000, -0.0000173584906, -0.0000230188679, + -0.0000115094340, +0.0000000000000, +0.0000115094340, +0.0000115094340, + +0.0000058490566, -0.0000058490566, -0.0000230188679, -0.0000230188679, + +0.0000000000000, +0.0000115094340, +0.0000230188679, +0.0000115094340, + +0.0000000000000, +0.0000000000000, +0.0000000000000, +0.0000000000000, + +0.0000000000000, +0.0000000000000, +0.0000058490566, +0.0000058490566, + +0.0000058490566, +0.0000058490566, +0.0000000000000, -0.0000058490566, + -0.0000173584906, -0.0000173584906, -0.0000058490566, +0.0000000000000, + +0.0000058490566, +0.0000115094340, +0.0000058490566, +0.0000058490566, + +0.0000000000000, +0.0000000000000, +0.0000000000000, +0.0000000000000, + -0.0000058490566, +0.0000000000000, +0.0000000000000, +0.0000000000000, + +0.0000058490566, +0.0000058490566, +0.0000000000000, +0.0000000000000, + +0.0000000000000, +0.0000000000000, +0.0000000000000, +0.0000000000000, + +0.0000000000000, +0.0000000000000 +}; diff --git a/plugins/ladspa_effect/swh/impulses/06-fender-68-vibrolux-at4050.h b/plugins/ladspa_effect/swh/impulses/06-fender-68-vibrolux-at4050.h new file mode 100644 index 000000000..cb84ad009 --- /dev/null +++ b/plugins/ladspa_effect/swh/impulses/06-fender-68-vibrolux-at4050.h @@ -0,0 +1,1156 @@ +float fender_68_vibrolux_at4050[] = { + +0.0000000000000, -0.0000082228117, -0.0000244031830, +0.0000000000000, + +0.0000485411141, +0.0000485411141, +0.0000082228117, -0.0000082228117, + +0.0000000000000, +0.0000405835544, +0.0000405835544, +0.0000000000000, + -0.0000082228117, -0.0000567639257, -0.0001376657825, -0.0001294429708, + +0.0000000000000, +0.0001376657825, +0.0001779840849, +0.0000809018568, + -0.0000485411141, -0.0000729442971, -0.0000082228117, -0.0000809018568, + -0.0001376657825, +0.0000729442971, +0.0003641909814, +0.0003156498674, + -0.0000647214854, -0.0004450928382, -0.0003885941645, +0.0001132625995, + +0.0005100795756, +0.0002832891247, -0.0002832891247, -0.0005100795756, + -0.0002185676393, +0.0001132625995, +0.0003156498674, +0.0002591511936, + -0.0000567639257, -0.0003724137931, -0.0004615384615, -0.0002185676393, + +0.0004615384615, +0.0011413793103, +0.0008580901857, -0.0001456233422, + -0.0007042440318, -0.0005503978780, -0.0002265251989, -0.0001214854111, + -0.0002509283820, -0.0002994694960, +0.0001618037135, +0.0006312997347, + +0.0001456233422, -0.0005100795756, -0.0001941644562, +0.0004938992042, + +0.0006718832891, +0.0002103448276, -0.0005748010610, -0.0009228116711, + -0.0002509283820, +0.0007042440318, +0.0009389920424, +0.0004938992042, + +0.0000000000000, -0.0007366047745, -0.0012628647215, -0.0005989389920, + +0.0006151193634, +0.0011819628647, +0.0006474801061, -0.0005989389920, + -0.0014246684350, -0.0006798408488, +0.0008257294430, +0.0010119363395, + +0.0001132625995, -0.0002591511936, -0.0000809018568, +0.0002915119363, + +0.0006233421751, +0.0002429708223, -0.0003156498674, -0.0000970822281, + +0.0000891246684, -0.0007204244032, -0.0013599469496, -0.0007366047745, + +0.0002753315650, +0.0008904509284, +0.0012546419098, +0.0008742705570, + -0.0001779840849, -0.0008257294430, -0.0009472148541, -0.0006151193634, + +0.0006395225464, +0.0018700265252, +0.0009389920424, -0.0010360742706, + -0.0016594164456, -0.0004127320955, +0.0013355437666, +0.0019588859416, + +0.0002103448276, -0.0021856763926, -0.0021936339523, -0.0002103448276, + +0.0008660477454, +0.0007610079576, +0.0007527851459, +0.0002509283820, + -0.0005503978780, -0.0005100795756, -0.0003885941645, +0.0001132625995, + +0.0015785145889, +0.0020236074271, +0.0004856763926, -0.0007851458886, + -0.0005748010610, -0.0009957559682, -0.0018294429708, -0.0011169761273, + +0.0001862068966, +0.0011737400531, +0.0011251989390, -0.0010604774536, + -0.0025419098143, +0.0003318302387, +0.0043549071618, +0.0036750663130, + -0.0003965517241, -0.0037156498674, -0.0040960212202, -0.0007610079576, + +0.0039665782493, +0.0045087533156, +0.0013437665782, -0.0011413793103, + -0.0022259946950, -0.0030679045093, -0.0015299734748, +0.0016026525199, + +0.0022259946950, -0.0002753315650, -0.0022907161804, -0.0034482758621, + -0.0005827586207, +0.0042336870027, +0.0048326259947, +0.0003318302387, + -0.0006557029178, +0.0017000000000, +0.0019265251989, -0.0013437665782, + -0.0021936339523, +0.0003156498674, +0.0074795755968, +0.0089042440318, + -0.0048649867374, -0.0242846153846, -0.0174928381963, -0.0015541114058, + +0.0344920424403, +0.0311408488064, -0.0519283819629, -0.0749501326260, + +0.0397538461538, +0.2236769230769, +0.2119068965517, -0.1057673740053, + -0.2652275862069, -0.1026750663130, -0.0213702917772, -0.0821870026525, + -0.0352450928382, +0.0840488063660, +0.0248026525199, -0.0184482758621, + +0.0613265251989, +0.0332132625995, -0.0287771883289, -0.0204474801061, + -0.0253368700265, +0.0206013262599, +0.0287042440318, -0.0096084880637, + -0.0008904509284, -0.0020318302387, -0.0093251989390, -0.0075525198939, + -0.0052453580902, +0.0042901856764, +0.0016514588859, +0.0039259946950, + +0.0060710875332, +0.0001053050398, +0.0083135278515, +0.0241469496021, + +0.0221718832891, +0.0038450928382, -0.0323389920424, -0.0445864721485, + +0.0038127320955, +0.0431697612732, +0.0243896551724, +0.0110819628647, + +0.0172257294430, -0.0093172413793, -0.0178005305040, +0.0070021220159, + +0.0309546419098, +0.0365644562334, +0.0222283819629, +0.0112275862069, + -0.0119721485411, -0.0250374005305, -0.0311246684350, -0.0166511936340, + +0.0101185676393, +0.0108145888594, -0.0145222811671, +0.0043145888594, + +0.0244708222812, -0.0067753315650, -0.0299509283820, -0.0077466843501, + +0.0253854111406, +0.0201562334218, +0.0094466843501, +0.0008498673740, + -0.0031732095491, -0.0022745358090, +0.0009795755968, +0.0141175066313, + +0.0250291777188, +0.0096005305040, -0.0124419098143, -0.0226413793103, + -0.0237180371353, -0.0110575596817, +0.0044925729443, +0.0035456233422, + -0.0108310344828, -0.0059334217507, +0.0018132625995, -0.0014408488064, + +0.0024689655172, +0.0080543766578, +0.0093496021220, +0.0146193633952, + +0.0227546419098, +0.0212732095491, +0.0039015915119, -0.0078114058355, + -0.0043954907162, -0.0066782493369, -0.0080949602122, +0.0017403183024, + +0.0110819628647, +0.0095923076923, -0.0003238726790, -0.0059984084881, + -0.0082000000000, -0.0066376657825, +0.0003238726790, +0.0009633952255, + -0.0013031830239, +0.0018374005305, +0.0011493368700, -0.0033917771883, + -0.0011413793103, +0.0040798408488, +0.0046787798408, +0.0003076923077, + -0.0032217506631, -0.0038206896552, +0.0030517241379, +0.0060307692308, + +0.0033594164456, -0.0014246684350, -0.0057554376658, -0.0049379310345, + -0.0082729442971, -0.0140363395225, -0.0044198938992, +0.0077628647215, + +0.0059740053050, +0.0027278514589, -0.0024042440318, -0.0039583554377, + +0.0032299734748, +0.0044763925729, -0.0022259946950, -0.0051644562334, + -0.0028007957560, +0.0018862068966, +0.0011493368700, -0.0052374005305, + -0.0065405835544, -0.0034647214854, -0.0013761273210, -0.0014005305040, + +0.0002994694960, +0.0020641909814, +0.0012222811671, +0.0011169761273, + -0.0008013262599, -0.0070183023873, -0.0067188328912, -0.0004127320955, + +0.0019265251989, +0.0015055702918, +0.0025419098143, -0.0008095490716, + -0.0046708222812, +0.0006474801061, +0.0067026525199, +0.0019103448276, + -0.0037480106101, -0.0038774535809, -0.0031488063660, -0.0042740053050, + -0.0030761273210, +0.0000000000000, -0.0021533156499, -0.0054559681698, + -0.0030114058355, +0.0023395225464, +0.0005180371353, -0.0035294429708, + +0.0003400530504, +0.0037559681698, +0.0007689655172, -0.0014976127321, + -0.0019750663130, -0.0044602122016, -0.0028816976127, -0.0004856763926, + -0.0062331564987, -0.0080625994695, -0.0011090185676, +0.0018050397878, + +0.0000891246684, +0.0024122015915, +0.0022259946950, -0.0026307692308, + -0.0017970822281, +0.0027846153846, -0.0007448275862, -0.0051482758621, + -0.0030761273210, +0.0001941644562, -0.0018941644562, -0.0075363395225, + -0.0048732095491, +0.0050997347480, +0.0066944297082, +0.0006636604775, + +0.0001214854111, +0.0016190981432, +0.0003965517241, +0.0025742705570, + +0.0043631299735, -0.0014328912467, -0.0041769230769, -0.0008660477454, + -0.0012546419098, -0.0031488063660, +0.0003238726790, +0.0029708222812, + +0.0005909814324, +0.0014732095491, +0.0032461538462, +0.0007851458886, + -0.0000970822281, +0.0015055702918, +0.0013679045093, +0.0009228116711, + +0.0007042440318, +0.0015217506631, +0.0013517241379, +0.0016432360743, + +0.0036265251989, +0.0025742705570, -0.0024607427056, -0.0065729442971, + -0.0049297082228, -0.0021533156499, -0.0015864721485, -0.0014084880637, + +0.0014570291777, +0.0043793103448, +0.0032702917772, +0.0032135278515, + +0.0039665782493, +0.0012222811671, -0.0011090185676, -0.0005424403183, + -0.0000729442971, -0.0002023872679, +0.0000244031830, -0.0009633952255, + -0.0029302387268, -0.0007448275862, +0.0018700265252, +0.0003400530504, + +0.0002994694960, +0.0000244031830, -0.0008904509284, +0.0007448275862, + +0.0021612732095, +0.0017241379310, -0.0000161803714, +0.0011493368700, + +0.0039259946950, -0.0008822281167, -0.0050188328912, -0.0011657824934, + +0.0010846153846, -0.0015541114058, -0.0002915119363, +0.0007366047745, + -0.0002753315650, +0.0028978779841, +0.0050755968170, +0.0030517241379, + +0.0003724137931, -0.0009472148541, -0.0002023872679, -0.0016270557029, + -0.0040312997347, -0.0017000000000, -0.0013923076923, -0.0017888594164, + +0.0012546419098, +0.0040877984085, +0.0058848806366, +0.0032785145889, + -0.0024042440318, -0.0028251989390, +0.0005180371353, +0.0028655172414, + +0.0010037135279, -0.0031084880637, -0.0018456233422, +0.0006474801061, + +0.0014893899204, +0.0000082228117, -0.0050267904509, -0.0041039787798, + +0.0022421750663, +0.0028816976127, +0.0011169761273, +0.0004533156499, + +0.0020803713528, +0.0024851458886, -0.0005503978780, -0.0016026525199, + -0.0012546419098, -0.0028899204244, -0.0001294429708, +0.0046222811671, + +0.0021209549072, -0.0027522546419, -0.0032623342175, -0.0007689655172, + +0.0020480106101, +0.0039421750663, +0.0005586206897, -0.0021533156499, + +0.0022098143236, +0.0046708222812, -0.0005989389920, -0.0052129973475, + -0.0032623342175, +0.0005909814324, +0.0013923076923, -0.0014167108753, + -0.0027684350133, -0.0008822281167, -0.0009551724138, +0.0001376657825, + +0.0048973474801, +0.0040312997347, -0.0013599469496, -0.0027360742706, + +0.0007933687003, +0.0028413793103, -0.0002753315650, -0.0022180371353, + -0.0014246684350, -0.0011657824934, -0.0014490716180, -0.0005748010610, + +0.0009795755968, +0.0004289124668, -0.0008580901857, +0.0006636604775, + +0.0002915119363, -0.0024607427056, -0.0005503978780, -0.0002347480106, + -0.0021371352785, -0.0012061007958, -0.0014570291777, +0.0008742705570, + +0.0038854111406, +0.0013193633952, +0.0000405835544, +0.0024527851459, + +0.0008580901857, -0.0025742705570, -0.0035859416446, -0.0020641909814, + -0.0006636604775, -0.0005586206897, +0.0005180371353, +0.0010928381963, + +0.0002832891247, +0.0002185676393, +0.0004856763926, +0.0011169761273, + +0.0027602122016, +0.0012061007958, -0.0003965517241, -0.0004533156499, + -0.0004450928382, +0.0001214854111, -0.0013599469496, -0.0032299734748, + -0.0008822281167, +0.0016917771883, +0.0013679045093, +0.0009875331565, + +0.0008095490716, +0.0005018567639, -0.0012061007958, -0.0015379310345, + +0.0004209549072, -0.0009551724138, -0.0030761273210, -0.0009145888594, + +0.0027360742706, +0.0032623342175, +0.0005503978780, -0.0006151193634, + -0.0002185676393, -0.0003156498674, -0.0005018567639, -0.0009228116711, + -0.0005342175066, +0.0007204244032, +0.0013517241379, -0.0007204244032, + -0.0016676392573, +0.0012952254642, +0.0015055702918, -0.0013114058355, + -0.0011331564987, -0.0006233421751, -0.0019185676393, -0.0008419098143, + +0.0014814323607, +0.0016026525199, +0.0006312997347, +0.0005586206897, + -0.0009066312997, -0.0012222811671, -0.0005262599469, -0.0012384615385, + +0.0003076923077, +0.0004209549072, -0.0014084880637, +0.0006233421751, + +0.0021047745358, +0.0012952254642, +0.0004289124668, -0.0015785145889, + -0.0008095490716, +0.0021371352785, +0.0021856763926, -0.0008984084881, + -0.0018538461538, +0.0000405835544, +0.0000485411141, +0.0004938992042, + +0.0007527851459, -0.0005748010610, -0.0001132625995, +0.0010442970822, + +0.0003400530504, -0.0020803713528, -0.0024366047745, -0.0008498673740, + -0.0008336870027, +0.0006312997347, +0.0014167108753, +0.0009551724138, + +0.0030437665782, +0.0035456233422, +0.0019912466844, +0.0014328912467, + -0.0002671087533, -0.0026307692308, -0.0031811671088, -0.0006962864721, + +0.0011331564987, -0.0008175066313, -0.0017241379310, -0.0000891246684, + +0.0013517241379, +0.0008984084881, +0.0000082228117, -0.0002671087533, + -0.0017161803714, -0.0018212201592, +0.0004127320955, +0.0009310344828, + +0.0018294429708, +0.0035374005305, +0.0016026525199, -0.0008822281167, + +0.0005180371353, +0.0019103448276, +0.0010198938992, -0.0013275862069, + -0.0033997347480, -0.0021774535809, -0.0008580901857, -0.0010766578249, + +0.0018456233422, +0.0039907161804, +0.0012790450928, +0.0002023872679, + +0.0014893899204, -0.0000891246684, -0.0008580901857, +0.0015623342175, + +0.0007933687003, -0.0013517241379, -0.0010684350133, -0.0000891246684, + +0.0003076923077, +0.0001456233422, -0.0005018567639, -0.0003156498674, + +0.0018538461538, +0.0034564986737, +0.0026469496021, +0.0010442970822, + +0.0006395225464, +0.0005827586207, +0.0007286472149, -0.0003076923077, + -0.0012952254642, +0.0003562334218, +0.0011331564987, -0.0009228116711, + -0.0011169761273, -0.0000567639257, -0.0004209549072, -0.0000485411141, + +0.0001456233422, -0.0000809018568, +0.0000082228117, +0.0016026525199, + +0.0032379310345, +0.0018456233422, -0.0005100795756, +0.0004209549072, + +0.0013923076923, +0.0003238726790, -0.0006474801061, +0.0001053050398, + +0.0003480106101, -0.0008984084881, -0.0001376657825, +0.0002347480106, + -0.0014408488064, -0.0006312997347, +0.0011331564987, +0.0015217506631, + +0.0027522546419, +0.0021936339523, -0.0000244031830, -0.0013437665782, + -0.0013355437666, +0.0001214854111, +0.0003238726790, -0.0002753315650, + -0.0004450928382, -0.0020480106101, -0.0031732095491, -0.0019832891247, + +0.0010119363395, +0.0033188328912, +0.0030923076923, +0.0014084880637, + +0.0006880636605, +0.0011737400531, +0.0005827586207, -0.0021127320955, + -0.0025175066313, -0.0003480106101, +0.0003885941645, -0.0016917771883, + -0.0020397877984, +0.0005180371353, -0.0003724137931, -0.0011169761273, + +0.0014893899204, +0.0025498673740, +0.0009472148541, +0.0009310344828, + +0.0014976127321, +0.0000970822281, -0.0019588859416, -0.0011981432361, + +0.0001456233422, -0.0008095490716, -0.0019347480106, -0.0014814323607, + -0.0004533156499, -0.0012628647215, -0.0013923076923, +0.0009875331565, + +0.0022827586207, +0.0009713527851, -0.0000323607427, -0.0001214854111, + -0.0003641909814, -0.0008336870027, -0.0016755968170, -0.0018132625995, + -0.0001376657825, +0.0006312997347, -0.0018374005305, -0.0035212201592, + -0.0021774535809, -0.0004450928382, -0.0006474801061, -0.0009957559682, + +0.0008660477454, +0.0035212201592, +0.0031246684350, +0.0000161803714, + -0.0029061007958, -0.0029384615385, +0.0003156498674, +0.0025984084881, + +0.0007933687003, -0.0015702917772, -0.0020885941645, -0.0014814323607, + -0.0015217506631, -0.0020559681698, -0.0012790450928, +0.0000970822281, + +0.0012305039788, +0.0010198938992, +0.0001700265252, +0.0008175066313, + +0.0010766578249, -0.0004371352785, -0.0011819628647, -0.0012061007958, + -0.0013193633952, -0.0004615384615, +0.0012061007958, +0.0011657824934, + +0.0005262599469, -0.0006233421751, -0.0021127320955, -0.0014328912467, + -0.0005180371353, -0.0001053050398, +0.0009795755968, +0.0023880636605, + +0.0027440318302, +0.0010281167109, -0.0004615384615, +0.0002429708223, + -0.0002994694960, -0.0023636604775, -0.0025580901857, -0.0007933687003, + +0.0011090185676, +0.0016026525199, +0.0003156498674, -0.0006798408488, + -0.0000970822281, -0.0000647214854, +0.0005827586207, +0.0020318302387, + +0.0017241379310, +0.0008498673740, -0.0004856763926, -0.0025984084881, + -0.0023071618037, +0.0006557029178, +0.0005827586207, -0.0013031830239, + -0.0000891246684, +0.0014167108753, -0.0004938992042, -0.0015217506631, + +0.0005342175066, +0.0012222811671, -0.0000647214854, -0.0004938992042, + -0.0006474801061, +0.0005989389920, +0.0031732095491, +0.0029787798408, + +0.0005989389920, -0.0013031830239, -0.0005586206897, +0.0006798408488, + -0.0006071618037, -0.0024931034483, -0.0013599469496, +0.0013843501326, + +0.0019750663130, -0.0008904509284, -0.0021612732095, -0.0002347480106, + +0.0013114058355, +0.0008336870027, +0.0001456233422, +0.0016352785146, + +0.0019832891247, +0.0000567639257, -0.0004127320955, -0.0000161803714, + -0.0011007957560, -0.0018538461538, -0.0010198938992, +0.0001376657825, + +0.0008175066313, +0.0009875331565, +0.0013843501326, +0.0023960212202, + +0.0027198938992, +0.0012870026525, -0.0003318302387, -0.0012061007958, + -0.0015541114058, -0.0014246684350, -0.0015217506631, -0.0013275862069, + -0.0002994694960, +0.0007124668435, +0.0007448275862, -0.0004938992042, + -0.0010281167109, +0.0005827586207, +0.0013355437666, +0.0011737400531, + +0.0011819628647, +0.0011251989390, +0.0019023872679, +0.0017323607427, + +0.0000970822281, -0.0007042440318, -0.0009957559682, -0.0008904509284, + -0.0003885941645, -0.0003803713528, -0.0002671087533, -0.0003400530504, + +0.0004615384615, +0.0015623342175, +0.0014328912467, +0.0005262599469, + +0.0001862068966, +0.0002671087533, -0.0001294429708, -0.0000161803714, + +0.0008742705570, +0.0012790450928, +0.0007851458886, -0.0005018567639, + -0.0010846153846, -0.0001053050398, +0.0008257294430, -0.0003318302387, + -0.0022342175066, -0.0019671087533, +0.0000000000000, +0.0015702917772, + +0.0014976127321, -0.0001941644562, -0.0013599469496, -0.0000970822281, + +0.0011657824934, +0.0005424403183, -0.0008742705570, -0.0016755968170, + -0.0005586206897, +0.0005503978780, -0.0001053050398, +0.0000485411141, + +0.0004856763926, -0.0005989389920, -0.0003480106101, +0.0002994694960, + -0.0004450928382, -0.0011413793103, -0.0012143236074, -0.0001294429708, + +0.0010604774536, +0.0013275862069, +0.0005748010610, -0.0007851458886, + -0.0014976127321, -0.0011737400531, +0.0000000000000, +0.0009472148541, + -0.0001618037135, -0.0018212201592, -0.0016190981432, +0.0000647214854, + +0.0017888594164, +0.0013193633952, -0.0003156498674, -0.0008175066313, + +0.0003318302387, +0.0022098143236, +0.0030840848806, +0.0015137931034, + -0.0008742705570, -0.0017485411141, -0.0013843501326, -0.0011169761273, + -0.0012628647215, -0.0007610079576, +0.0002753315650, +0.0000809018568, + -0.0013275862069, -0.0015217506631, -0.0000485411141, +0.0025904509284, + +0.0029302387268, -0.0007448275862, -0.0032623342175, -0.0014732095491, + +0.0006151193634, +0.0000161803714, -0.0018862068966, -0.0013599469496, + +0.0013031830239, +0.0026389920424, +0.0018941644562, +0.0004127320955, + -0.0010928381963, -0.0015864721485, -0.0004856763926, +0.0005180371353, + -0.0001779840849, -0.0015055702918, -0.0011251989390, +0.0006798408488, + +0.0020641909814, +0.0017241379310, +0.0000647214854, -0.0001779840849, + +0.0007527851459, +0.0000809018568, -0.0014814323607, -0.0014976127321, + -0.0007933687003, -0.0003885941645, +0.0007689655172, +0.0016270557029, + +0.0009551724138, +0.0002832891247, -0.0000809018568, -0.0006233421751, + -0.0006312997347, +0.0002753315650, +0.0005018567639, -0.0004371352785, + -0.0005827586207, +0.0000244031830, +0.0002671087533, +0.0011331564987, + +0.0010037135279, +0.0000244031830, -0.0008419098143, -0.0011007957560, + -0.0000405835544, +0.0006557029178, -0.0007366047745, -0.0013517241379, + +0.0003238726790, +0.0018779840849, +0.0013517241379, -0.0001214854111, + -0.0005424403183, -0.0001700265252, -0.0000082228117, -0.0003965517241, + -0.0008419098143, -0.0000970822281, +0.0006880636605, -0.0003400530504, + -0.0011575596817, -0.0006636604775, -0.0006962864721, -0.0004777188329, + +0.0006071618037, +0.0014814323607, +0.0008822281167, -0.0001941644562, + -0.0000485411141, +0.0002347480106, -0.0001862068966, -0.0005989389920, + +0.0002429708223, +0.0013031830239, +0.0006798408488, +0.0004127320955, + +0.0009795755968, +0.0003724137931, -0.0007689655172, -0.0012143236074, + -0.0007689655172, +0.0001779840849, +0.0007204244032, +0.0008984084881, + +0.0000405835544, -0.0014005305040, -0.0017888594164, -0.0011575596817, + -0.0003156498674, +0.0003885941645, +0.0006395225464, +0.0001941644562, + -0.0001538461538, +0.0007610079576, +0.0017000000000, +0.0009795755968, + -0.0000809018568, -0.0002915119363, -0.0006151193634, -0.0008580901857, + -0.0001214854111, +0.0007124668435, +0.0001862068966, -0.0008498673740, + -0.0008175066313, -0.0002753315650, +0.0000082228117, -0.0004694960212, + -0.0013031830239, -0.0003641909814, +0.0010198938992, +0.0006474801061, + -0.0001214854111, -0.0002429708223, +0.0001618037135, +0.0003156498674, + -0.0008419098143, -0.0009472148541, +0.0004450928382, +0.0006312997347, + +0.0003238726790, +0.0007610079576, +0.0008175066313, -0.0000809018568, + -0.0006962864721, -0.0007286472149, -0.0007851458886, -0.0002753315650, + +0.0004127320955, +0.0004450928382, +0.0006071618037, +0.0003724137931, + -0.0006312997347, -0.0009310344828, +0.0001294429708, +0.0013843501326, + +0.0012546419098, -0.0003885941645, -0.0010928381963, +0.0000567639257, + +0.0010037135279, +0.0003641909814, -0.0002429708223, -0.0002832891247, + -0.0004289124668, -0.0002671087533, +0.0006636604775, +0.0009145888594, + -0.0002347480106, -0.0010522546419, -0.0002671087533, +0.0007448275862, + +0.0001456233422, -0.0008904509284, -0.0009145888594, -0.0013114058355, + -0.0014976127321, +0.0001214854111, +0.0018294429708, +0.0019671087533, + +0.0008660477454, -0.0001779840849, +0.0000405835544, -0.0005180371353, + -0.0020236074271, -0.0015864721485, -0.0002023872679, +0.0005586206897, + +0.0017485411141, +0.0016432360743, +0.0001618037135, +0.0002265251989, + +0.0009389920424, -0.0002753315650, -0.0020721485411, -0.0023557029178, + -0.0009875331565, +0.0009633952255, +0.0011899204244, -0.0002671087533, + -0.0005909814324, +0.0008742705570, +0.0015864721485, +0.0006395225464, + +0.0002591511936, +0.0000161803714, -0.0001376657825, +0.0002347480106, + +0.0005180371353, -0.0004450928382, -0.0009957559682, -0.0001941644562, + -0.0002994694960, -0.0011899204244, -0.0000567639257, +0.0015946949602, + +0.0018132625995, +0.0008336870027, -0.0002185676393, +0.0002103448276, + -0.0003965517241, -0.0017485411141, -0.0003885941645, +0.0005018567639, + -0.0003724137931, +0.0000082228117, +0.0013275862069, +0.0016594164456, + +0.0004533156499, -0.0013843501326, -0.0026954907162, -0.0022018567639, + +0.0002265251989, +0.0014893899204, +0.0011251989390, +0.0016026525199, + +0.0020397877984, +0.0008580901857, -0.0005748010610, -0.0004047745358, + +0.0002671087533, -0.0005909814324, -0.0012546419098, -0.0007204244032, + -0.0006312997347, -0.0005586206897, +0.0009389920424, +0.0021127320955, + +0.0006395225464, -0.0009875331565, -0.0009389920424, -0.0004127320955, + +0.0002915119363, +0.0001618037135, -0.0001538461538, +0.0006718832891, + +0.0005827586207, -0.0000161803714, -0.0003156498674, -0.0007042440318, + -0.0000567639257, +0.0006718832891, +0.0001700265252, -0.0001376657825, + +0.0006557029178, +0.0010198938992, +0.0003318302387, -0.0007851458886, + -0.0016352785146, -0.0015946949602, -0.0007286472149, +0.0003480106101, + +0.0003480106101, +0.0000323607427, +0.0008336870027, +0.0006880636605, + -0.0000161803714, +0.0001941644562, +0.0002347480106, +0.0002915119363, + -0.0006798408488, -0.0028655172414, -0.0028169761273, -0.0008580901857, + +0.0004533156499, +0.0025984084881, +0.0053588859416, +0.0054559681698, + +0.0013517241379, -0.0029952254642, -0.0041931034483, -0.0034970822281, + -0.0035941644562, -0.0026145888594, -0.0001053050398, +0.0005180371353, + +0.0011657824934, +0.0029302387268, +0.0029061007958, +0.0013355437666, + -0.0002915119363, -0.0011819628647, -0.0008984084881, -0.0008257294430, + -0.0008660477454, -0.0008498673740, +0.0000485411141, +0.0021371352785, + +0.0022098143236, +0.0007124668435, -0.0010846153846, -0.0023395225464, + -0.0013679045093, +0.0000647214854, +0.0003400530504, -0.0001456233422, + -0.0014167108753, -0.0000161803714, +0.0023798408488, +0.0021694960212, + +0.0008257294430, -0.0008336870027, -0.0017564986737, -0.0013923076923, + -0.0018618037135, -0.0012222811671, +0.0007610079576, +0.0018862068966, + +0.0025580901857, +0.0018294429708, +0.0002509283820, -0.0008175066313, + -0.0011090185676, -0.0003724137931, -0.0005909814324, -0.0023395225464, + -0.0020641909814, +0.0008336870027, +0.0018538461538, -0.0004856763926, + -0.0014246684350, +0.0021289124668, +0.0035535809019, +0.0003238726790, + -0.0014893899204, -0.0005827586207, -0.0001618037135, -0.0005342175066, + -0.0018456233422, -0.0021450928382, -0.0009389920424, +0.0001779840849, + +0.0017485411141, +0.0035535809019, +0.0037641909814, +0.0016432360743, + -0.0009551724138, -0.0025419098143, -0.0026145888594, -0.0017970822281, + -0.0012466843501, -0.0004450928382, +0.0011413793103, +0.0023071618037, + +0.0028493368700, +0.0023474801061, +0.0006557029178, -0.0010604774536, + -0.0023718832891, -0.0016676392573, +0.0000567639257, +0.0005018567639, + +0.0000161803714, -0.0010846153846, -0.0012628647215, +0.0003238726790, + +0.0013437665782, +0.0009310344828, +0.0005180371353, -0.0000567639257, + -0.0009389920424, -0.0013679045093, -0.0006636604775, +0.0000567639257, + -0.0002265251989, -0.0004533156499, -0.0001376657825, +0.0002429708223, + +0.0000323607427, -0.0004694960212, -0.0001214854111, +0.0005342175066, + +0.0011331564987, +0.0015541114058, +0.0013355437666, +0.0011090185676, + +0.0010604774536, -0.0001294429708, -0.0009066312997, +0.0005665782493, + +0.0012870026525, -0.0004856763926, -0.0009875331565, -0.0005665782493, + -0.0022421750663, -0.0036750663130, -0.0033835543767, -0.0021047745358, + +0.0000323607427, +0.0020559681698, +0.0035132625995, +0.0045169761273, + +0.0036265251989, +0.0009228116711, -0.0003803713528, -0.0000082228117, + -0.0006880636605, -0.0024527851459, -0.0023312997347, -0.0003238726790, + +0.0008498673740, -0.0003562334218, -0.0010928381963, +0.0000567639257, + +0.0000244031830, -0.0017323607427, -0.0014976127321, -0.0001538461538, + +0.0005262599469, +0.0012143236074, +0.0011169761273, +0.0002671087533, + +0.0005665782493, +0.0014084880637, +0.0013599469496, +0.0006962864721, + +0.0000000000000, -0.0008580901857, -0.0012952254642, -0.0007933687003, + -0.0016190981432, -0.0022907161804, -0.0000729442971, +0.0018700265252, + +0.0012870026525, +0.0010846153846, +0.0020885941645, +0.0025175066313, + +0.0011007957560, -0.0013355437666, -0.0022583554377, -0.0010037135279, + -0.0004127320955, -0.0018618037135, -0.0021289124668, +0.0004127320955, + +0.0025742705570, +0.0022018567639, -0.0015217506631, -0.0055045092838, + -0.0016190981432, +0.0062331564987, +0.0057148541114, -0.0002429708223, + -0.0020965517241, +0.0006962864721, +0.0024689655172, +0.0002265251989, + -0.0018941644562, -0.0013517241379, -0.0010442970822, -0.0017000000000, + -0.0007771883289, -0.0003803713528, -0.0031246684350, -0.0039421750663, + -0.0010846153846, +0.0027684350133, +0.0067106100796, +0.0069615384615, + +0.0039827586207, +0.0021936339523, +0.0004694960212, -0.0012870026525, + -0.0019103448276, -0.0021612732095, -0.0013599469496, -0.0008904509284, + -0.0018212201592, -0.0023151193634, -0.0014490716180, +0.0005342175066, + +0.0012952254642, +0.0007366047745, +0.0005018567639, +0.0000082228117, + +0.0006395225464, +0.0022989389920, +0.0020318302387, -0.0003885941645, + -0.0035132625995, -0.0034482758621, -0.0009066312997, +0.0001456233422, + +0.0009310344828, +0.0014570291777, +0.0008580901857, +0.0005100795756, + +0.0004371352785, +0.0006151193634, +0.0001862068966, -0.0009228116711, + -0.0012708222812, -0.0012466843501, +0.0002915119363, +0.0028090185676, + +0.0021127320955, -0.0017079575597, -0.0033432360743, -0.0017241379310, + -0.0004533156499, +0.0005586206897, +0.0022665782493, +0.0021694960212, + +0.0011090185676, +0.0008660477454, -0.0005586206897, -0.0008904509284, + +0.0005909814324, +0.0002023872679, -0.0025660477454, -0.0025336870027, + +0.0014570291777, +0.0039098143236, +0.0017809018568, -0.0013923076923, + -0.0023636604775, -0.0006636604775, +0.0007448275862, -0.0001941644562, + -0.0015055702918, -0.0019185676393, -0.0010037135279, +0.0013517241379, + +0.0033270557029, +0.0021209549072, -0.0007689655172, -0.0016026525199, + -0.0001053050398, +0.0010928381963, +0.0004127320955, -0.0015541114058, + -0.0015299734748, +0.0003562334218, +0.0010119363395, -0.0000485411141, + -0.0011251989390, -0.0011899204244, -0.0002915119363, +0.0001862068966, + -0.0004777188329, -0.0006798408488, -0.0000485411141, +0.0004289124668, + -0.0000323607427, -0.0015785145889, -0.0016676392573, +0.0000970822281, + +0.0011575596817, +0.0017970822281, +0.0032299734748, +0.0029787798408, + -0.0002023872679, -0.0029302387268, -0.0018538461538, -0.0000244031830, + +0.0001700265252, -0.0007204244032, -0.0016352785146, -0.0012870026525, + -0.0003724137931, -0.0000647214854, -0.0004533156499, -0.0012708222812, + -0.0010846153846, +0.0001456233422, +0.0011251989390, +0.0019265251989, + +0.0015541114058, +0.0009389920424, +0.0016594164456, +0.0017564986737, + -0.0001618037135, -0.0024769230769, -0.0036103448276, -0.0028737400531, + -0.0005424403183, +0.0012305039788, +0.0014490716180, +0.0013114058355, + +0.0004450928382, -0.0003965517241, +0.0004047745358, -0.0002265251989, + -0.0025580901857, -0.0026389920424, -0.0008660477454, +0.0000082228117, + +0.0010360742706, +0.0020156498674, +0.0009551724138, +0.0001456233422, + +0.0010928381963, +0.0013843501326, +0.0008257294430, -0.0001941644562, + -0.0010766578249, -0.0002671087533, +0.0009145888594, +0.0008013262599, + -0.0001618037135, +0.0000647214854, +0.0014976127321, +0.0007851458886, + -0.0012708222812, -0.0013275862069, -0.0008984084881, -0.0012628647215, + -0.0008336870027, +0.0013679045093, +0.0035779840849, +0.0026631299735, + +0.0002103448276, +0.0001456233422, +0.0005018567639, -0.0009713527851, + -0.0022180371353, -0.0015055702918, +0.0006151193634, +0.0027116710875, + +0.0031649867374, +0.0014167108753, -0.0009066312997, -0.0013923076923, + -0.0005018567639, +0.0000647214854, -0.0000161803714, -0.0004694960212, + -0.0003724137931, +0.0004127320955, +0.0008095490716, -0.0007610079576, + -0.0030840848806, -0.0028251989390, -0.0007204244032, +0.0013275862069, + +0.0026066312997, +0.0020803713528, +0.0010846153846, +0.0014893899204, + +0.0007042440318, -0.0007610079576, +0.0000647214854, +0.0010604774536, + -0.0007689655172, -0.0025013262599, -0.0016352785146, -0.0007771883289, + -0.0001779840849, +0.0011981432361, +0.0017079575597, +0.0005989389920, + -0.0013193633952, -0.0022342175066, -0.0008660477454, +0.0007527851459, + +0.0011169761273, +0.0005586206897, -0.0002915119363, +0.0000729442971, + +0.0010198938992, +0.0008336870027, -0.0006151193634, -0.0013517241379, + -0.0002347480106, +0.0003965517241, -0.0006718832891, -0.0014814323607, + -0.0007933687003, +0.0009957559682, +0.0015217506631, +0.0002753315650, + +0.0000891246684, +0.0006312997347, +0.0007851458886, +0.0007610079576, + -0.0012708222812, -0.0036103448276, -0.0026389920424, +0.0001214854111, + +0.0015299734748, +0.0009472148541, +0.0000891246684, -0.0003724137931, + -0.0008742705570, -0.0005909814324, +0.0002429708223, +0.0007527851459, + +0.0007366047745, -0.0000485411141, +0.0002994694960, +0.0012790450928, + +0.0003724137931, -0.0008175066313, -0.0013437665782, -0.0015946949602, + -0.0007124668435, -0.0001376657825, -0.0001941644562, +0.0008175066313, + +0.0016917771883, +0.0011331564987, -0.0001862068966, -0.0000891246684, + +0.0011090185676, +0.0005342175066, -0.0008498673740, -0.0004938992042, + +0.0002915119363, +0.0005586206897, +0.0008498673740, +0.0008013262599, + +0.0001618037135, -0.0009389920424, -0.0017647214854, -0.0019427055703, + -0.0014976127321, -0.0002994694960, +0.0005909814324, +0.0003724137931, + +0.0008660477454, +0.0012466843501, -0.0000567639257, -0.0014814323607, + -0.0010928381963, -0.0002753315650, -0.0008175066313, -0.0009310344828, + +0.0009875331565, +0.0019750663130, +0.0005665782493, -0.0003400530504, + -0.0002023872679, -0.0001294429708, -0.0004047745358, -0.0003641909814, + -0.0002265251989, -0.0005180371353, -0.0000809018568, +0.0009633952255, + +0.0008742705570, -0.0002591511936, -0.0005665782493, +0.0003238726790, + +0.0014167108753, +0.0012870026525, +0.0003641909814, -0.0008336870027, + -0.0012708222812, -0.0005503978780, -0.0005909814324, -0.0008580901857, + +0.0003400530504, +0.0013679045093, +0.0005018567639, -0.0005018567639, + -0.0004289124668, +0.0006798408488, +0.0010119363395, +0.0001456233422, + -0.0006312997347, -0.0004615384615, +0.0000405835544, +0.0004209549072, + +0.0010846153846, +0.0015541114058, +0.0003156498674, -0.0010928381963, + -0.0004694960212, +0.0006880636605, +0.0003480106101, -0.0006557029178, + -0.0005342175066, -0.0001132625995, +0.0001700265252, +0.0006880636605, + +0.0004289124668, -0.0002591511936, -0.0001862068966, -0.0001294429708, + -0.0003803713528, -0.0000244031830, +0.0005424403183, +0.0007851458886, + +0.0007933687003, -0.0001376657825, -0.0010766578249, +0.0001941644562, + +0.0012870026525, +0.0000809018568, -0.0011899204244, -0.0014652519894, + -0.0011169761273, -0.0004371352785, +0.0002509283820, +0.0009145888594, + +0.0007448275862, +0.0003724137931, +0.0001456233422, -0.0001700265252, + +0.0001214854111, -0.0001456233422, -0.0010119363395, -0.0006233421751, + -0.0003238726790, -0.0008013262599, -0.0012222811671, -0.0003885941645, + +0.0012061007958, +0.0008419098143, -0.0007366047745, -0.0005503978780, + +0.0006395225464, +0.0007933687003, -0.0002591511936, -0.0007933687003, + +0.0000323607427, +0.0013517241379, +0.0016755968170, +0.0007366047745, + -0.0003318302387, -0.0011007957560, -0.0011657824934, -0.0002832891247, + +0.0001700265252, -0.0003400530504, -0.0006798408488, +0.0000000000000, + +0.0008257294430, +0.0008013262599, +0.0007366047745, +0.0010846153846, + +0.0003724137931, -0.0010522546419, -0.0008257294430, +0.0001862068966, + +0.0000000000000, -0.0009795755968, -0.0008419098143, +0.0004209549072, + +0.0015055702918, +0.0012305039788, +0.0002915119363, -0.0004615384615, + -0.0007366047745, -0.0009145888594, -0.0009389920424, -0.0001618037135, + +0.0009472148541, +0.0009551724138, +0.0002509283820, +0.0002832891247, + +0.0001214854111, -0.0010684350133, -0.0007527851459, +0.0007771883289, + +0.0003885941645, -0.0005180371353, -0.0002429708223, +0.0000161803714, + -0.0004047745358, -0.0013355437666, -0.0014490716180, +0.0003318302387, + +0.0024445623342, +0.0024769230769, +0.0012143236074, +0.0013114058355, + +0.0017079575597, -0.0000244031830, -0.0018212201592, -0.0016755968170, + -0.0009472148541, -0.0010604774536, -0.0013355437666, -0.0002671087533, + +0.0009145888594, +0.0008419098143, +0.0009633952255, +0.0013843501326, + +0.0008175066313, -0.0001376657825, -0.0005342175066, -0.0000405835544, + +0.0008419098143, +0.0013275862069, +0.0010604774536, +0.0003238726790, + -0.0002753315650, +0.0001538461538, +0.0007933687003, +0.0001700265252, + -0.0011169761273, -0.0012790450928, -0.0003641909814, +0.0005827586207, + +0.0005748010610, +0.0002347480106, +0.0004209549072, +0.0000809018568, + -0.0006395225464, -0.0006395225464, -0.0002994694960, -0.0003480106101, + -0.0007448275862, -0.0004777188329, +0.0007610079576, +0.0015137931034, + +0.0009228116711, +0.0000485411141, -0.0002509283820, +0.0001053050398, + +0.0005424403183, -0.0001618037135, -0.0013923076923, -0.0011007957560, + -0.0008822281167, -0.0011413793103, -0.0001618037135, +0.0004938992042, + +0.0005424403183, +0.0009875331565, +0.0012466843501, +0.0014005305040, + +0.0005748010610, -0.0009389920424, -0.0011899204244, -0.0004450928382, + -0.0002185676393, -0.0003724137931, -0.0000244031830, +0.0008013262599, + +0.0008742705570, +0.0004289124668, +0.0003965517241, -0.0000161803714, + -0.0005503978780, -0.0003076923077, +0.0002832891247, +0.0005665782493, + -0.0001618037135, -0.0015299734748, -0.0015785145889, -0.0002832891247, + +0.0007610079576, +0.0009633952255, +0.0005989389920, +0.0002347480106, + +0.0004209549072, +0.0007851458886, +0.0004450928382, -0.0003318302387, + -0.0010442970822, -0.0014084880637, -0.0010198938992, -0.0003641909814, + -0.0001132625995, -0.0004533156499, -0.0007933687003, -0.0009472148541, + -0.0006071618037, +0.0007610079576, +0.0017726790451, +0.0007366047745, + -0.0001132625995, -0.0002509283820, -0.0007689655172, -0.0006071618037, + +0.0004615384615, +0.0009310344828, +0.0002994694960, -0.0010522546419, + -0.0016514588859, -0.0007771883289, -0.0000567639257, +0.0002509283820, + +0.0007204244032, +0.0007527851459, +0.0006557029178, +0.0004450928382, + -0.0004777188329, -0.0013437665782, -0.0009713527851, -0.0001214854111, + +0.0007204244032, +0.0011657824934, +0.0004371352785, -0.0004533156499, + -0.0001941644562, +0.0003238726790, +0.0004047745358, -0.0000729442971, + -0.0004289124668, +0.0000485411141, +0.0002994694960, +0.0003400530504, + +0.0003724137931, -0.0003641909814, -0.0008095490716, -0.0000161803714, + +0.0006071618037, -0.0000161803714, -0.0012546419098, -0.0010360742706, + +0.0004533156499, +0.0012628647215, +0.0011169761273, +0.0000567639257, + -0.0007042440318, +0.0000567639257, +0.0007933687003, -0.0000161803714, + -0.0012870026525, -0.0015055702918, -0.0005909814324, +0.0003641909814, + +0.0003400530504, -0.0000405835544, +0.0004533156499, +0.0012384615385, + +0.0008013262599, -0.0002347480106, -0.0010442970822, -0.0007366047745, + -0.0001132625995, -0.0001538461538, -0.0003562334218, -0.0002103448276, + -0.0002429708223, -0.0004533156499, -0.0003562334218, -0.0000567639257, + -0.0001132625995, +0.0002265251989, +0.0008742705570, +0.0002265251989, + -0.0006151193634, -0.0002429708223, +0.0005665782493, +0.0007286472149, + +0.0001053050398, -0.0003238726790, -0.0003318302387, -0.0002915119363, + -0.0000729442971, +0.0003400530504, +0.0004777188329, -0.0000244031830, + -0.0005827586207, +0.0000244031830, +0.0007366047745, +0.0003400530504, + -0.0006395225464, -0.0012870026525, -0.0006233421751, +0.0007042440318, + +0.0013517241379, +0.0014408488064, +0.0011413793103, +0.0009713527851, + +0.0008336870027, -0.0003641909814, -0.0018538461538, -0.0018700265252, + -0.0005342175066, +0.0003076923077, +0.0002429708223, +0.0007286472149, + +0.0015137931034, +0.0013517241379, +0.0007286472149, +0.0003400530504, + +0.0004615384615, +0.0000647214854, -0.0009875331565, -0.0009472148541, + +0.0001132625995, +0.0006880636605, +0.0001941644562, -0.0005424403183, + -0.0005018567639, -0.0002103448276, +0.0000082228117, +0.0000567639257, + +0.0000323607427, +0.0003965517241, +0.0006962864721, +0.0011575596817, + +0.0016594164456, +0.0005989389920, -0.0008175066313, -0.0009633952255, + -0.0004856763926, +0.0000323607427, -0.0000809018568, -0.0009713527851, + -0.0010522546419, -0.0005180371353, -0.0000647214854, +0.0005424403183, + +0.0007448275862, +0.0005342175066, +0.0007771883289, +0.0007042440318, + -0.0003156498674, -0.0012466843501, -0.0009551724138, +0.0002023872679, + +0.0003803713528, -0.0003480106101, -0.0002023872679, +0.0001294429708, + -0.0002915119363, -0.0005262599469, -0.0004047745358, -0.0002994694960, + -0.0000970822281, +0.0002915119363, +0.0005748010610, +0.0002265251989, + +0.0000000000000, +0.0001214854111, -0.0001779840849, -0.0005503978780, + -0.0001294429708, +0.0003724137931, +0.0005665782493, +0.0008498673740, + +0.0007610079576, -0.0004127320955, -0.0014005305040, -0.0008257294430, + -0.0000405835544, +0.0003156498674, +0.0004209549072, +0.0000809018568, + -0.0002023872679, +0.0002429708223, +0.0009551724138, +0.0010037135279, + +0.0000000000000, -0.0006233421751, -0.0004450928382, -0.0002023872679, + -0.0003480106101, -0.0010442970822, -0.0007610079576, +0.0006636604775, + +0.0010198938992, +0.0005424403183, +0.0003641909814, +0.0000891246684, + -0.0004371352785, -0.0005989389920, -0.0004533156499, -0.0003641909814, + -0.0003965517241, +0.0001053050398, +0.0010442970822, +0.0007933687003, + -0.0003076923077, -0.0003238726790, +0.0002103448276, +0.0000244031830, + -0.0004777188329, -0.0005586206897, -0.0005100795756, -0.0002509283820, + +0.0004450928382, +0.0005503978780, -0.0001862068966, -0.0007933687003, + -0.0007448275862, +0.0004209549072, +0.0017079575597, +0.0012546419098, + -0.0004694960212, -0.0019347480106, -0.0018618037135, -0.0002832891247, + +0.0010198938992, +0.0007933687003, -0.0000647214854, -0.0003480106101, + +0.0003480106101, +0.0014005305040, +0.0014893899204, +0.0003076923077, + -0.0010766578249, -0.0011090185676, +0.0000970822281, +0.0002591511936, + -0.0007042440318, -0.0013355437666, -0.0011981432361, -0.0004371352785, + +0.0003724137931, +0.0010928381963, +0.0017161803714, +0.0014490716180, + +0.0005342175066, -0.0002591511936, -0.0004047745358, -0.0000809018568, + +0.0000323607427, +0.0000809018568, -0.0004209549072, -0.0014490716180, + -0.0009472148541, +0.0008742705570, +0.0015379310345, +0.0007124668435, + +0.0000567639257, +0.0001862068966, +0.0004289124668, +0.0002509283820, + -0.0003480106101, -0.0007610079576, -0.0005018567639, -0.0001456233422, + -0.0002915119363, -0.0005748010610, -0.0001376657825, +0.0007204244032, + +0.0008660477454, +0.0003400530504, -0.0005342175066, -0.0011657824934, + -0.0004615384615, +0.0005586206897, +0.0003562334218, -0.0005424403183, + -0.0003965517241, +0.0013599469496, +0.0018779840849, -0.0002023872679, + -0.0017161803714, -0.0010604774536, -0.0000323607427, +0.0003318302387, + +0.0000485411141, -0.0004615384615, -0.0005665782493, -0.0002429708223, + -0.0001618037135, -0.0006557029178, -0.0008257294430, -0.0001779840849, + +0.0006880636605, +0.0009389920424, +0.0002103448276, -0.0003480106101, + +0.0002347480106, +0.0009957559682, +0.0004533156499, -0.0010846153846, + -0.0019103448276, -0.0006880636605, +0.0010928381963, +0.0012061007958, + +0.0001294429708, -0.0000082228117, +0.0003803713528, +0.0000082228117, + -0.0004938992042, -0.0007689655172, -0.0009875331565, -0.0004450928382, + +0.0007933687003, +0.0011090185676, +0.0002509283820, -0.0002429708223, + -0.0000405835544, +0.0000405835544, +0.0001538461538, +0.0000323607427, + -0.0002265251989, +0.0000970822281, +0.0004450928382, +0.0005262599469, + +0.0004371352785, -0.0001700265252, -0.0005748010610, -0.0000082228117, + +0.0003480106101, -0.0004777188329, -0.0011981432361, -0.0005909814324, + +0.0003400530504, +0.0007610079576, +0.0007851458886, +0.0000000000000, + -0.0010119363395, -0.0011737400531, +0.0000000000000, +0.0010604774536, + +0.0006395225464, -0.0003076923077, -0.0005342175066, +0.0001214854111, + +0.0005586206897, -0.0003885941645, -0.0011331564987, -0.0001700265252, + +0.0007771883289, -0.0001618037135, -0.0016917771883, -0.0011981432361, + +0.0008013262599, +0.0015217506631, +0.0008904509284, +0.0006636604775, + +0.0006636604775, -0.0000323607427, -0.0007448275862, -0.0009633952255, + -0.0013679045093, -0.0017564986737, -0.0006395225464, +0.0013843501326, + +0.0021936339523, +0.0017970822281, +0.0010522546419, +0.0000567639257, + -0.0004938992042, -0.0005342175066, -0.0005180371353, +0.0000405835544, + +0.0006395225464, +0.0006880636605, +0.0002994694960, -0.0002591511936, + -0.0004289124668, -0.0002591511936, -0.0002023872679, -0.0001779840849, + -0.0001132625995, +0.0000000000000, +0.0003885941645, +0.0009713527851, + +0.0008984084881, +0.0001779840849, +0.0000567639257, +0.0005586206897, + +0.0006557029178, +0.0000000000000, -0.0007610079576, -0.0004938992042, + +0.0002832891247, +0.0004450928382, +0.0001618037135, +0.0000244031830, + -0.0003318302387, -0.0009145888594, -0.0009145888594, +0.0000891246684, + +0.0009389920424, +0.0008257294430, +0.0005100795756, +0.0003480106101, + +0.0004450928382, +0.0005180371353, -0.0001779840849, -0.0008013262599, + -0.0007527851459, -0.0007124668435, -0.0005262599469, -0.0000647214854, + +0.0000000000000, -0.0005503978780, -0.0011657824934, -0.0009713527851, + +0.0000647214854, +0.0006962864721, +0.0006718832891, +0.0006962864721, + +0.0010360742706, +0.0008984084881, +0.0002265251989, -0.0002347480106, + -0.0001294429708, +0.0006151193634, +0.0006395225464, -0.0011575596817, + -0.0019994694960, -0.0000647214854, +0.0022503978780, +0.0015946949602, + -0.0013923076923, -0.0021612732095, +0.0006880636605, +0.0020721485411, + +0.0000244031830, -0.0012305039788, +0.0001214854111, +0.0007204244032, + -0.0000891246684, -0.0006395225464, -0.0006233421751, +0.0005827586207, + +0.0011819628647, +0.0001456233422, -0.0002753315650, +0.0011169761273, + +0.0010846153846, -0.0005586206897, -0.0009795755968, -0.0001294429708, + +0.0005909814324, +0.0009633952255, +0.0005503978780, +0.0002832891247, + +0.0010037135279, +0.0005342175066, -0.0010119363395, -0.0018862068966, + -0.0019347480106, -0.0009875331565, +0.0006718832891, +0.0007851458886, + +0.0001053050398, +0.0007689655172, +0.0010522546419, -0.0002185676393, + -0.0011493368700, -0.0007610079576, -0.0001053050398, +0.0002671087533, + +0.0002265251989, +0.0003400530504, +0.0003238726790, -0.0007042440318, + -0.0018456233422, -0.0014652519894, +0.0002347480106, +0.0014570291777, + +0.0012870026525, +0.0003803713528, -0.0006395225464, -0.0014490716180, + -0.0014246684350, +0.0000970822281, +0.0011575596817, -0.0003724137931, + -0.0019832891247, -0.0005180371353, +0.0010928381963, +0.0006474801061, + -0.0003803713528, -0.0007527851459, -0.0004209549072, +0.0002103448276, + +0.0009472148541, +0.0009145888594, +0.0001779840849, -0.0000891246684, + -0.0010766578249, -0.0024931034483, -0.0016108753316, +0.0004371352785, + +0.0007689655172, -0.0001214854111, -0.0000647214854, +0.0009145888594, + +0.0008660477454, +0.0003885941645, +0.0008336870027, +0.0010442970822, + -0.0002915119363, -0.0012790450928, -0.0002265251989, +0.0010522546419, + +0.0011657824934, +0.0003641909814, -0.0002429708223, -0.0002509283820, + -0.0000405835544, +0.0001053050398, -0.0004127320955, -0.0012628647215, + -0.0010037135279, -0.0000485411141, +0.0009228116711, +0.0011575596817, + +0.0002185676393, -0.0008336870027, -0.0013761273210, -0.0008984084881, + +0.0002915119363, +0.0009310344828, +0.0010846153846, +0.0006962864721, + -0.0003641909814, -0.0011493368700, -0.0014005305040, -0.0014005305040, + -0.0013275862069, -0.0011575596817, +0.0000323607427, +0.0019185676393, + +0.0021289124668, +0.0005665782493, -0.0003156498674, +0.0000970822281, + +0.0006474801061, +0.0004938992042, -0.0002023872679, -0.0006880636605, + -0.0008175066313, -0.0009066312997, -0.0007286472149, -0.0004127320955, + +0.0000809018568, +0.0005503978780, +0.0010037135279, +0.0015217506631, + +0.0012870026525, +0.0005342175066, +0.0003965517241, +0.0006312997347, + +0.0002265251989, -0.0008013262599, -0.0015299734748, -0.0008419098143, + +0.0003318302387, +0.0006151193634, -0.0000567639257, -0.0008175066313, + -0.0005018567639, +0.0004047745358, +0.0005018567639, +0.0000891246684, + +0.0000405835544, +0.0003724137931, +0.0011899204244, +0.0022342175066, + +0.0019750663130, -0.0005424403183, -0.0025175066313, -0.0014408488064, + -0.0004938992042, -0.0009875331565, -0.0008660477454, +0.0003076923077, + +0.0012790450928, +0.0009795755968, +0.0002429708223, +0.0003238726790, + +0.0003965517241, +0.0000567639257, +0.0000244031830, +0.0007042440318, + +0.0010604774536, +0.0004209549072, +0.0000000000000, -0.0000485411141, + -0.0005262599469, -0.0009389920424, -0.0008984084881, -0.0007448275862, + -0.0006474801061, -0.0002994694960, +0.0003238726790, +0.0009875331565, + +0.0018132625995, +0.0020480106101, +0.0008095490716, -0.0009310344828, + -0.0015623342175, -0.0015055702918, -0.0013517241379, -0.0007771883289, + +0.0000729442971, +0.0007448275862, +0.0013355437666, +0.0011981432361, + +0.0007851458886, +0.0007124668435, +0.0000244031830, -0.0009551724138, + -0.0011737400531, -0.0010360742706, -0.0006557029178, +0.0005100795756, + +0.0020156498674, +0.0022342175066, +0.0003400530504, -0.0018862068966, + -0.0019994694960, -0.0004371352785, +0.0006151193634, +0.0004289124668, + -0.0000567639257, -0.0002265251989, +0.0005262599469, +0.0015623342175, + +0.0011981432361, -0.0001618037135, -0.0008904509284, -0.0006395225464, + +0.0001132625995, +0.0002347480106, -0.0001700265252, +0.0002265251989, + +0.0009145888594, +0.0006962864721, -0.0003641909814, -0.0012384615385, + -0.0009875331565, -0.0000405835544, +0.0003641909814, -0.0000970822281, + -0.0009875331565, -0.0013843501326, -0.0002265251989, +0.0015217506631, + +0.0012708222812, -0.0002671087533, -0.0007042440318, -0.0004615384615, + -0.0000485411141, +0.0006636604775, +0.0008175066313, +0.0007610079576, + +0.0006071618037, +0.0000082228117, -0.0005018567639, -0.0006557029178, + -0.0006233421751, -0.0006798408488, -0.0008742705570, -0.0003803713528, + +0.0005909814324, +0.0012305039788, +0.0010766578249, +0.0001294429708, + -0.0008257294430, -0.0011413793103, -0.0008498673740, -0.0004777188329, + -0.0004209549072, -0.0001618037135, +0.0004533156499, +0.0009145888594, + +0.0009228116711, +0.0006474801061, +0.0001456233422, -0.0005342175066, + -0.0011493368700, -0.0013517241379, -0.0005989389920, +0.0005018567639, + +0.0008822281167, +0.0005342175066, -0.0000244031830, -0.0004371352785, + -0.0003641909814, -0.0001538461538, -0.0001132625995, -0.0001538461538, + +0.0001618037135, +0.0005424403183, +0.0003400530504, +0.0000244031830, + +0.0004533156499, +0.0008257294430, +0.0002671087533, -0.0003562334218, + -0.0000405835544, +0.0003562334218, -0.0005262599469, -0.0016676392573, + -0.0011657824934, +0.0001700265252, +0.0010198938992, +0.0009472148541, + +0.0004371352785, +0.0003076923077, +0.0002832891247, -0.0000485411141, + -0.0000970822281, +0.0000000000000, -0.0001862068966, -0.0002994694960, + -0.0002591511936, -0.0004777188329, -0.0006962864721, -0.0003156498674, + +0.0003156498674, +0.0007124668435, +0.0007124668435, +0.0002023872679, + -0.0001214854111, +0.0001376657825, +0.0000082228117, -0.0005748010610, + -0.0004777188329, +0.0000405835544, +0.0002832891247, +0.0004371352785, + +0.0004777188329, +0.0002671087533, -0.0004450928382, -0.0010766578249, + -0.0009066312997, -0.0003400530504, +0.0002103448276, +0.0008984084881, + +0.0009472148541, -0.0000891246684, -0.0009228116711, +0.0000000000000, + +0.0011169761273, +0.0004777188329, -0.0006233421751, -0.0003562334218, + +0.0005665782493, +0.0008175066313, +0.0001779840849, -0.0006071618037, + -0.0007527851459, -0.0000970822281, +0.0003318302387, +0.0000000000000, + -0.0002753315650, +0.0002915119363, +0.0008660477454, +0.0005018567639, + -0.0004127320955, -0.0009472148541, -0.0009066312997, -0.0005748010610, + -0.0002509283820, -0.0004209549072, -0.0005827586207, -0.0000567639257, + +0.0006962864721, +0.0011007957560, +0.0010684350133, +0.0006557029178, + +0.0004371352785, +0.0001456233422, -0.0003641909814, -0.0008013262599, + -0.0012628647215, -0.0015055702918, -0.0007204244032, +0.0006880636605, + +0.0016676392573, +0.0015946949602, +0.0007366047745, +0.0000000000000, + -0.0002671087533, -0.0003885941645, -0.0002994694960, -0.0001618037135, + -0.0000485411141, +0.0003400530504, +0.0005989389920, -0.0000161803714, + -0.0006636604775, -0.0003724137931, +0.0000970822281, -0.0002832891247, + -0.0007689655172, -0.0006880636605, -0.0006474801061, -0.0004450928382, + +0.0003238726790, +0.0008984084881, +0.0007610079576, +0.0003724137931, + +0.0003076923077, +0.0004615384615, +0.0000161803714, -0.0010360742706, + -0.0014652519894, -0.0008013262599, +0.0000244031830, +0.0004209549072, + +0.0004047745358, +0.0000970822281, -0.0001456233422, -0.0000891246684, + +0.0003641909814, +0.0004856763926, -0.0004694960212, -0.0012305039788, + -0.0005748010610, +0.0007366047745, +0.0013517241379, +0.0008822281167, + +0.0000244031830, -0.0004450928382, -0.0004371352785, +0.0001294429708, + +0.0004450928382, -0.0002994694960, -0.0014005305040, -0.0013114058355, + +0.0000485411141, +0.0011899204244, +0.0011981432361, +0.0005018567639, + -0.0002185676393, -0.0003965517241, -0.0002265251989, -0.0001941644562, + -0.0002103448276, -0.0003400530504, -0.0000729442971, +0.0004127320955, + +0.0004694960212, +0.0003641909814, +0.0001294429708, -0.0002023872679, + -0.0004127320955, -0.0004777188329, -0.0002347480106, +0.0001538461538, + +0.0004777188329, +0.0006395225464, +0.0001214854111, -0.0005665782493, + -0.0006312997347, -0.0003724137931, -0.0002832891247, -0.0003400530504, + +0.0001214854111, +0.0009633952255, +0.0014570291777, +0.0009551724138, + -0.0002509283820, -0.0008660477454, -0.0005586206897, -0.0000891246684, + +0.0002832891247, +0.0000891246684, -0.0003400530504, -0.0002429708223, + +0.0003562334218, +0.0007771883289, +0.0003238726790, -0.0004856763926, + -0.0005748010610, -0.0000082228117, +0.0006557029178, +0.0009875331565, + +0.0007042440318, +0.0001700265252, -0.0001294429708, -0.0002185676393, + -0.0004533156499, -0.0007771883289, -0.0007286472149, -0.0002429708223, + +0.0005748010610, +0.0010442970822, +0.0006474801061, +0.0003965517241, + +0.0005342175066, +0.0002671087533, -0.0004615384615, -0.0008822281167, + -0.0005909814324, -0.0001132625995, +0.0000567639257, +0.0002671087533, + +0.0005180371353, +0.0005909814324, +0.0005100795756, +0.0003724137931, + -0.0000485411141, -0.0007448275862, -0.0012466843501, -0.0010198938992, + +0.0000809018568, +0.0012466843501, +0.0014490716180, +0.0007933687003, + -0.0000891246684, -0.0002753315650, +0.0000567639257, +0.0000809018568, + -0.0001132625995, -0.0005180371353, -0.0007286472149, -0.0002023872679, + +0.0002671087533, +0.0004289124668, +0.0004127320955, +0.0000323607427, + -0.0000244031830, +0.0003724137931, +0.0003400530504, -0.0003238726790, + -0.0007527851459, -0.0005424403183, -0.0001214854111, +0.0003076923077, + +0.0004450928382, -0.0002509283820, -0.0006798408488, +0.0002347480106, + +0.0009472148541, +0.0002429708223, -0.0006474801061, -0.0007042440318, + -0.0001053050398, +0.0003641909814, +0.0002671087533, +0.0002023872679, + +0.0005018567639, +0.0002429708223, -0.0002832891247, -0.0004615384615, + -0.0005180371353, -0.0003641909814, +0.0002429708223, +0.0008095490716, + +0.0007689655172, -0.0001132625995, -0.0007366047745, -0.0003076923077, + +0.0000729442971, -0.0002832891247, -0.0007527851459, -0.0003803713528, + +0.0006557029178, +0.0007286472149, -0.0001053050398, -0.0000567639257, + +0.0005424403183, +0.0005180371353, +0.0000161803714, -0.0003400530504, + -0.0003480106101, -0.0002185676393, -0.0001779840849, +0.0000244031830, + +0.0003238726790, +0.0000647214854, -0.0006395225464, -0.0007366047745, + -0.0002994694960, -0.0001456233422, -0.0002023872679, +0.0000082228117, + +0.0002832891247, +0.0002671087533, +0.0000891246684, +0.0000000000000, + -0.0000244031830, -0.0000485411141, -0.0002591511936, -0.0001538461538, + +0.0003803713528, +0.0004938992042, +0.0000323607427, -0.0001862068966, + +0.0001294429708, +0.0004777188329, +0.0004856763926, +0.0003803713528, + -0.0001779840849, -0.0010360742706, -0.0010928381963, -0.0003803713528, + +0.0001053050398, +0.0001214854111, +0.0000647214854, +0.0001618037135, + +0.0002509283820, +0.0000485411141, -0.0002753315650, -0.0001779840849, + +0.0002509283820, +0.0005018567639, +0.0004615384615, +0.0003318302387, + +0.0001941644562, -0.0001862068966, -0.0005586206897, -0.0003724137931, + +0.0000809018568, +0.0002265251989, +0.0003238726790, +0.0004047745358, + +0.0003641909814, +0.0001376657825, -0.0002994694960, -0.0004533156499, + +0.0000647214854, +0.0004127320955, +0.0000891246684, -0.0005503978780, + -0.0009551724138, -0.0005018567639, +0.0003641909814, +0.0004938992042, + +0.0000891246684, -0.0000244031830, +0.0002103448276, +0.0002185676393, + -0.0003156498674, -0.0005503978780, -0.0000161803714, +0.0003803713528, + +0.0002347480106, -0.0001214854111, -0.0002591511936, -0.0002185676393, + -0.0003480106101, -0.0004127320955, -0.0002671087533, -0.0002103448276, + -0.0002832891247, +0.0000244031830, +0.0006636604775, +0.0008580901857, + +0.0003562334218, +0.0000405835544, +0.0002753315650, +0.0002753315650, + -0.0003076923077, -0.0005989389920, -0.0003965517241, +0.0001376657825, + +0.0008257294430, +0.0008498673740, +0.0002509283820, -0.0002023872679, + -0.0004047745358, -0.0005503978780, -0.0005503978780, -0.0001053050398, + +0.0003480106101, +0.0003076923077, +0.0000082228117, -0.0000567639257, + +0.0003076923077, +0.0003803713528, -0.0003480106101, -0.0006233421751, + +0.0001294429708, +0.0006071618037, +0.0001700265252, -0.0002591511936, + +0.0001214854111, +0.0008336870027, +0.0007610079576, +0.0000000000000, + -0.0004533156499, -0.0004209549072, -0.0003724137931, -0.0003562334218, + -0.0002103448276, -0.0000809018568, +0.0000647214854, +0.0002671087533, + +0.0002671087533, +0.0000485411141, +0.0000323607427, -0.0000647214854, + -0.0005586206897, -0.0007124668435, -0.0000647214854, +0.0005665782493, + +0.0007124668435, +0.0006880636605, +0.0004450928382, -0.0001376657825, + -0.0003480106101, -0.0002103448276, -0.0003400530504, -0.0006151193634, + -0.0003803713528, +0.0002832891247, +0.0005665782493, +0.0004289124668, + +0.0003965517241, +0.0004209549072, +0.0002185676393, +0.0001376657825, + +0.0001862068966, +0.0001053050398, -0.0001053050398, -0.0002185676393, + -0.0003076923077, -0.0005424403183, -0.0008095490716, -0.0005586206897, + +0.0002265251989, +0.0007933687003, +0.0005342175066, -0.0001941644562, + -0.0005424403183, -0.0002429708223, +0.0000082228117, +0.0001376657825, + +0.0003965517241, +0.0004450928382, -0.0001538461538, -0.0004938992042, + +0.0000647214854, +0.0005018567639, -0.0001053050398, -0.0007851458886, + -0.0005262599469, +0.0000729442971, +0.0002671087533, +0.0001538461538, + +0.0000082228117, +0.0004047745358, +0.0008660477454, +0.0002429708223, + -0.0005909814324, -0.0005586206897, -0.0000244031830, +0.0002915119363, + +0.0000567639257, -0.0003400530504, -0.0002832891247, +0.0001053050398, + +0.0004371352785, +0.0003400530504, -0.0000891246684, -0.0003724137931, + -0.0001941644562, +0.0002023872679, +0.0003724137931, +0.0002671087533, + +0.0003562334218, +0.0001618037135, -0.0003562334218, -0.0002185676393, + +0.0004533156499, +0.0003562334218, -0.0004856763926, -0.0011493368700, + -0.0007527851459, +0.0004209549072, +0.0010846153846, +0.0005342175066, + -0.0002347480106, -0.0000891246684, +0.0005748010610, +0.0005665782493, + -0.0001376657825, -0.0003724137931, +0.0002103448276, +0.0004694960212, + -0.0000809018568, -0.0005018567639, -0.0003885941645, -0.0001294429708, + +0.0001456233422, +0.0000891246684, -0.0004289124668, -0.0008984084881, + -0.0006880636605, +0.0003480106101, +0.0012790450928, +0.0013679045093, + +0.0006798408488, -0.0001214854111, -0.0003562334218, -0.0002994694960, + -0.0006798408488, -0.0011169761273, -0.0010684350133, -0.0001214854111, + +0.0010604774536, +0.0013923076923, +0.0008822281167, -0.0000244031830, + -0.0007933687003, -0.0005989389920, +0.0000323607427, +0.0001779840849, + -0.0001132625995, -0.0001941644562, +0.0002265251989, +0.0005989389920, + +0.0004209549072, +0.0000244031830, -0.0003156498674, -0.0002994694960, + -0.0002185676393, -0.0004371352785, -0.0005100795756, -0.0001862068966, + +0.0001941644562, +0.0002994694960, +0.0002103448276, +0.0003238726790, + +0.0004777188329, +0.0005586206897, +0.0006474801061, +0.0003076923077, + -0.0000891246684, -0.0003641909814, -0.0004938992042, -0.0004694960212, + -0.0003641909814, -0.0001618037135, -0.0001941644562, -0.0004777188329, + -0.0001862068966, +0.0002347480106, +0.0003238726790, +0.0003076923077, + +0.0002265251989, +0.0002023872679, +0.0002832891247, +0.0002023872679, + -0.0000082228117, -0.0002671087533, -0.0003400530504, -0.0003562334218, + -0.0004938992042, -0.0006474801061, -0.0005748010610, -0.0002671087533, + +0.0000809018568, +0.0003238726790, +0.0004127320955, +0.0005180371353, + +0.0006798408488, +0.0004694960212, -0.0000405835544, -0.0002429708223, + -0.0000891246684, +0.0001700265252, -0.0001132625995, -0.0008498673740, + -0.0008904509284, -0.0001700265252, +0.0003400530504, +0.0003562334218, + +0.0000970822281, +0.0000323607427, +0.0001294429708, +0.0001214854111, + -0.0001294429708, -0.0001294429708, +0.0003885941645, +0.0005909814324, + +0.0001376657825, -0.0000161803714, +0.0000891246684, -0.0000405835544, + -0.0003156498674, -0.0006962864721, -0.0010846153846, -0.0009145888594, + -0.0001538461538, +0.0005827586207, +0.0006962864721, +0.0002591511936, + +0.0000000000000, +0.0001862068966, +0.0004533156499, +0.0003076923077, + -0.0001779840849, -0.0004856763926, -0.0003480106101, +0.0001294429708, + +0.0004615384615, +0.0002429708223, +0.0000485411141, -0.0000323607427, + -0.0004450928382, -0.0008822281167, -0.0007286472149, -0.0000405835544, + +0.0005989389920, +0.0005989389920, -0.0000082228117, -0.0003641909814, + +0.0000809018568, +0.0003400530504, -0.0000729442971, -0.0004615384615, + -0.0003562334218, +0.0001862068966, +0.0007689655172, +0.0008013262599, + +0.0003076923077, -0.0003480106101, -0.0009713527851, -0.0013031830239, + -0.0009551724138, -0.0001214854111, +0.0003238726790, +0.0005827586207, + +0.0009795755968, +0.0010198938992, +0.0007042440318, +0.0004533156499, + +0.0002509283820, -0.0001214854111, -0.0005827586207, -0.0005424403183, + -0.0002103448276, -0.0002103448276, -0.0003803713528, -0.0004371352785, + -0.0002832891247, +0.0000082228117, +0.0002994694960, +0.0007042440318, + +0.0007366047745, +0.0002265251989, -0.0000647214854, +0.0001132625995, + +0.0001053050398, -0.0004371352785, -0.0008498673740, -0.0005342175066, + +0.0000323607427, +0.0001294429708, -0.0001132625995, -0.0000405835544, + +0.0002429708223, +0.0001618037135, -0.0000485411141, +0.0000000000000, + +0.0002103448276, +0.0002429708223, -0.0001618037135, -0.0006798408488, + -0.0005100795756, +0.0001941644562, +0.0008095490716, +0.0008336870027, + +0.0001700265252, -0.0005424403183, -0.0004694960212, +0.0000323607427, + +0.0000809018568, -0.0003641909814, -0.0007851458886, -0.0005909814324, + +0.0004209549072, +0.0012061007958, +0.0008742705570, +0.0001618037135, + -0.0000244031830, +0.0002265251989, +0.0003076923077, -0.0001376657825, + -0.0005424403183, -0.0005100795756, -0.0002023872679, +0.0000000000000, + +0.0000729442971, +0.0002671087533, +0.0006233421751, +0.0007366047745, + +0.0002591511936, -0.0002753315650, -0.0002753315650, -0.0001294429708, + -0.0002347480106, -0.0003400530504, -0.0002591511936, -0.0000891246684, + -0.0000809018568, +0.0001376657825, +0.0004777188329, +0.0003400530504, + +0.0000000000000, +0.0000000000000, +0.0001538461538, +0.0001456233422, + -0.0002103448276, -0.0003480106101, -0.0001294429708, -0.0001376657825, + -0.0004289124668, -0.0005989389920, -0.0003480106101, +0.0000647214854, + +0.0003238726790, +0.0004047745358, +0.0002429708223, +0.0000891246684, + +0.0001214854111, +0.0002915119363, +0.0003641909814, +0.0000082228117, + -0.0002103448276, +0.0001132625995, +0.0001132625995, -0.0002429708223, + -0.0002915119363, -0.0002832891247, -0.0003641909814, -0.0002347480106, + +0.0001456233422, +0.0004777188329, +0.0004127320955, +0.0000809018568, + +0.0002023872679, +0.0005586206897, +0.0002429708223, -0.0004615384615, + -0.0005262599469, -0.0001862068966, +0.0000000000000, +0.0000161803714, + +0.0000000000000, +0.0001214854111, +0.0006474801061, +0.0007851458886, + +0.0001214854111, -0.0004856763926, -0.0004127320955, -0.0001538461538, + -0.0001862068966, -0.0002509283820, +0.0000405835544, +0.0005100795756, + +0.0007366047745, +0.0005503978780, +0.0003156498674, +0.0003076923077, + -0.0001618037135, -0.0010766578249, -0.0013517241379, -0.0006395225464, + +0.0001941644562, +0.0003562334218, +0.0001053050398, +0.0001700265252, + +0.0002429708223, +0.0002832891247, +0.0004371352785, +0.0004371352785, + -0.0000729442971, -0.0006636604775, -0.0004856763926, +0.0001456233422, + +0.0001053050398, -0.0001779840849, +0.0000323607427, +0.0004047745358, + +0.0001700265252, -0.0005586206897, -0.0006395225464, +0.0000809018568, + +0.0002832891247, -0.0001538461538, -0.0001376657825, +0.0004047745358, + +0.0005827586207, +0.0001779840849, -0.0002265251989, -0.0003400530504, + -0.0003885941645, -0.0005018567639, -0.0004615384615, -0.0001618037135, + +0.0000244031830, +0.0001941644562, +0.0005748010610, +0.0005748010610, + +0.0000891246684, -0.0003480106101, -0.0002915119363, +0.0000970822281, + +0.0002103448276, -0.0000891246684, -0.0003641909814, -0.0005018567639, + -0.0003318302387, +0.0001456233422, +0.0004694960212, +0.0002265251989, + -0.0000809018568, +0.0000323607427, +0.0003238726790, +0.0003076923077, + +0.0000485411141, -0.0001214854111, -0.0000970822281, -0.0003238726790, + -0.0004289124668, +0.0000647214854, +0.0005180371353, +0.0002753315650, + -0.0002429708223, -0.0003562334218, -0.0001779840849, -0.0002671087533, + -0.0003885941645, -0.0000161803714, +0.0006071618037, +0.0009066312997, + +0.0006071618037, +0.0001294429708, -0.0003238726790, -0.0004371352785, + -0.0002023872679, -0.0001376657825, -0.0003400530504, -0.0002509283820, + +0.0000323607427, +0.0002509283820, +0.0005100795756, +0.0007124668435, + +0.0005100795756, +0.0001618037135, -0.0000809018568, -0.0003724137931, + -0.0006474801061, -0.0004047745358, +0.0002753315650, +0.0005503978780, + +0.0001132625995, -0.0002591511936, -0.0002671087533, -0.0001456233422, + -0.0001862068966, -0.0003965517241, -0.0005342175066, -0.0004371352785, + -0.0000082228117, +0.0004533156499, +0.0006233421751, +0.0004127320955, + +0.0000244031830, -0.0003480106101, -0.0005424403183, -0.0004450928382, + -0.0004047745358, -0.0006151193634, -0.0003400530504, +0.0003885941645, + +0.0007933687003, +0.0007933687003, +0.0005909814324, +0.0001941644562, + +0.0000161803714, +0.0001294429708, +0.0000729442971, -0.0004209549072, + -0.0008904509284, -0.0005909814324, +0.0002832891247, +0.0007366047745, + +0.0003318302387, -0.0003885941645, -0.0005989389920, -0.0003318302387, + -0.0001376657825, +0.0000729442971, +0.0004127320955, +0.0007204244032, + +0.0007851458886, +0.0002591511936, -0.0003641909814, -0.0000567639257, + +0.0005665782493, +0.0006071618037, +0.0003318302387, +0.0000485411141, + -0.0004047745358, -0.0006557029178, -0.0006798408488, -0.0002832891247, + +0.0005909814324, +0.0011007957560, +0.0007851458886, +0.0003400530504, + +0.0001132625995, -0.0001618037135, -0.0006071618037, -0.0007851458886, + -0.0003803713528, +0.0001862068966, +0.0003318302387, +0.0000729442971, + -0.0003318302387, -0.0006557029178, -0.0004533156499, +0.0004694960212, + +0.0014084880637, +0.0014490716180, +0.0006880636605, +0.0000244031830, + -0.0001700265252, -0.0005424403183, -0.0010604774536, -0.0010037135279, + -0.0002832891247, +0.0001538461538, +0.0000970822281, +0.0001618037135, + +0.0003965517241, +0.0002591511936, -0.0000244031830, -0.0003076923077, + -0.0006395225464, -0.0007286472149, -0.0004289124668, +0.0001862068966, + +0.0009145888594, +0.0009795755968, +0.0004533156499, +0.0001941644562, + +0.0002023872679, -0.0001214854111, -0.0006557029178, -0.0008498673740, + -0.0004777188329, -0.0001294429708, -0.0001214854111, -0.0000891246684, + +0.0000970822281, +0.0003885941645, +0.0004289124668, +0.0002023872679, + +0.0000161803714, -0.0001779840849, -0.0004047745358, -0.0002103448276, + +0.0001538461538, +0.0002753315650, +0.0002023872679, +0.0003156498674, + +0.0005989389920, +0.0006071618037, +0.0001053050398, -0.0002994694960, + -0.0002509283820, -0.0001214854111, -0.0003480106101, -0.0007204244032, + -0.0007286472149, -0.0001053050398, +0.0004371352785, +0.0003562334218, + +0.0000970822281, +0.0001053050398, +0.0003400530504, +0.0003724137931, + -0.0000809018568, -0.0004694960212, -0.0003238726790, -0.0002023872679, + -0.0002023872679, +0.0001538461538, +0.0004127320955, +0.0000000000000, + -0.0004371352785, -0.0002753315650, +0.0002023872679, +0.0004209549072, + +0.0002023872679, -0.0001779840849, -0.0001941644562, +0.0001214854111, + +0.0003885941645, +0.0003803713528, +0.0002753315650, +0.0003156498674, + +0.0002753315650, -0.0002509283820, -0.0006151193634, -0.0003724137931, + +0.0000323607427, +0.0001941644562, +0.0000891246684, -0.0000323607427, + -0.0000567639257, -0.0000485411141, +0.0001132625995, +0.0003238726790, + +0.0003724137931, +0.0003562334218, +0.0001132625995, -0.0002103448276, + -0.0001862068966, +0.0000729442971, -0.0001132625995, -0.0006395225464, + -0.0006962864721, -0.0002509283820, +0.0000970822281, +0.0002429708223, + +0.0003318302387, +0.0004047745358, +0.0002347480106, +0.0000647214854, + -0.0000082228117, -0.0002994694960, -0.0004533156499, -0.0000970822281, + +0.0002509283820, +0.0002429708223, -0.0000970822281, -0.0003803713528, + -0.0002429708223, -0.0000323607427, -0.0001618037135, -0.0002591511936, + +0.0001294429708, +0.0005748010610, +0.0004856763926, +0.0001618037135, + -0.0001053050398, -0.0003318302387, -0.0003238726790, -0.0001941644562, + -0.0001132625995, +0.0000000000000, +0.0001053050398, +0.0000485411141, + -0.0000244031830, +0.0000891246684, +0.0003076923077, +0.0001941644562, + -0.0001941644562, -0.0004856763926, -0.0003238726790, +0.0000647214854, + +0.0002347480106, +0.0000891246684, -0.0001294429708, -0.0002023872679, + +0.0000405835544, +0.0003965517241, +0.0006798408488, +0.0006233421751, + +0.0000647214854, -0.0003885941645, -0.0003156498674, -0.0001618037135, + -0.0003076923077, -0.0004694960212, -0.0003238726790, +0.0000082228117, + +0.0003480106101, +0.0007042440318, +0.0007124668435, +0.0001941644562, + -0.0003724137931, -0.0004450928382, -0.0001053050398, +0.0001294429708, + -0.0002023872679, -0.0007527851459, -0.0006557029178, +0.0001700265252, + +0.0008336870027, +0.0006718832891, +0.0000244031830, -0.0002915119363, + -0.0000647214854, +0.0002915119363, +0.0001779840849, -0.0003238726790, + -0.0004371352785, -0.0000567639257, +0.0000809018568, -0.0002103448276, + -0.0004856763926, -0.0003562334218, -0.0000809018568, -0.0001294429708, + -0.0002023872679, +0.0000567639257, +0.0003641909814, +0.0003803713528, + +0.0003238726790, +0.0002429708223, -0.0000485411141, -0.0004047745358, + -0.0003238726790, -0.0000485411141, +0.0000729442971, -0.0000082228117, + -0.0002103448276, -0.0002671087533, -0.0000970822281, +0.0000323607427, + +0.0001132625995, +0.0002185676393, +0.0003400530504, +0.0003318302387, + +0.0003562334218, +0.0003562334218, -0.0000729442971, -0.0007042440318, + -0.0007851458886, -0.0001538461538, +0.0004450928382, +0.0003238726790, + -0.0000405835544, +0.0001538461538, +0.0005586206897, +0.0004209549072, + -0.0001700265252, -0.0005748010610, -0.0005262599469, -0.0003562334218, + -0.0001862068966, +0.0002429708223, +0.0007366047745, +0.0007610079576, + +0.0001618037135, -0.0003238726790, -0.0002753315650, -0.0000323607427, + +0.0000082228117, +0.0000405835544, +0.0000244031830, -0.0001294429708, + -0.0001538461538, +0.0001132625995, +0.0001053050398, -0.0003156498674, + -0.0004615384615, -0.0000647214854, +0.0002671087533, +0.0000970822281, + -0.0001132625995, +0.0000809018568, +0.0003562334218, +0.0004047745358, + +0.0003562334218, +0.0002347480106, +0.0000485411141, -0.0002671087533, + -0.0004615384615, -0.0004047745358, -0.0003641909814, -0.0003724137931, + -0.0000647214854, +0.0003318302387, +0.0004615384615, +0.0003480106101, + +0.0004371352785, +0.0005989389920, +0.0004615384615, -0.0000647214854, + -0.0006395225464, -0.0007204244032, -0.0004209549072, -0.0001941644562, + +0.0000405835544, +0.0002429708223, +0.0003076923077, +0.0003965517241, + +0.0003480106101, +0.0000729442971, -0.0001456233422, -0.0000891246684, + +0.0001376657825, +0.0004371352785, +0.0005180371353, +0.0001618037135, + -0.0002023872679, -0.0001779840849, -0.0002347480106, -0.0004289124668, + -0.0004047745358, -0.0001941644562, -0.0000244031830, +0.0003156498674, + +0.0007689655172, +0.0008257294430, +0.0003803713528, +0.0000729442971, + +0.0000405835544, +0.0000485411141, -0.0000970822281, -0.0003724137931, + -0.0004777188329, -0.0002591511936, +0.0000485411141, +0.0002265251989, + +0.0001538461538, -0.0000891246684, -0.0002347480106, -0.0000567639257, + +0.0002753315650, +0.0003641909814, +0.0003156498674, +0.0003724137931, + +0.0003885941645, -0.0000082228117, -0.0005180371353, -0.0004938992042, + -0.0000323607427, -0.0000405835544, -0.0004938992042, -0.0004856763926, + +0.0001294429708, +0.0005586206897, +0.0005827586207, +0.0004615384615, + +0.0001941644562, -0.0002023872679, -0.0003724137931, -0.0000970822281, + +0.0003885941645, +0.0005342175066, +0.0000729442971, -0.0005748010610, + -0.0007689655172, -0.0003965517241, -0.0000323607427, -0.0001376657825, + -0.0004371352785, -0.0004209549072, -0.0000082228117, +0.0005100795756, + +0.0007042440318, +0.0004127320955, +0.0000161803714, -0.0000567639257, + -0.0002103448276, -0.0005262599469, -0.0005909814324, -0.0003400530504, + -0.0001618037135, +0.0000000000000, +0.0003400530504, +0.0007527851459, + +0.0007689655172, +0.0004615384615, -0.0000244031830, -0.0005665782493, + -0.0007204244032, -0.0003965517241, -0.0000323607427, +0.0000485411141, + +0.0000647214854, +0.0003400530504, +0.0005100795756, +0.0002832891247, + +0.0000485411141, -0.0001941644562, -0.0004777188329, -0.0004371352785, + -0.0000244031830, +0.0003724137931, +0.0005424403183, +0.0003076923077, + -0.0001214854111, -0.0005262599469, -0.0006557029178, -0.0004450928382, + -0.0000567639257, +0.0002023872679, +0.0002509283820, +0.0000647214854, + -0.0001456233422, -0.0001618037135, +0.0000647214854, +0.0002185676393, + +0.0000891246684, -0.0001376657825, -0.0002994694960, -0.0003318302387, + -0.0000405835544, +0.0002347480106, +0.0000405835544, -0.0002429708223, + -0.0001779840849, +0.0000485411141, +0.0001214854111, +0.0000567639257, + -0.0000485411141, -0.0000647214854, +0.0000000000000, +0.0000000000000, + -0.0001294429708, -0.0001618037135, -0.0000647214854, +0.0000970822281, + +0.0002591511936, +0.0002671087533, +0.0000082228117, -0.0000891246684, + -0.0000082228117, -0.0001132625995, -0.0002429708223, -0.0000323607427, + +0.0002185676393, +0.0001132625995, -0.0001214854111, -0.0000809018568, + -0.0000729442971, -0.0002915119363, -0.0001700265252, +0.0003156498674, + +0.0004938992042, +0.0000970822281, -0.0002185676393, -0.0000405835544, + +0.0001700265252, -0.0000567639257, -0.0002509283820, -0.0000970822281, + -0.0000647214854, -0.0004371352785, -0.0005827586207, -0.0001294429708, + +0.0005262599469, +0.0006557029178, +0.0003965517241, +0.0002591511936, + +0.0002509283820, +0.0000000000000, -0.0004127320955, -0.0005262599469, + -0.0002671087533, -0.0001779840849, -0.0001294429708, +0.0002185676393, + +0.0004856763926, +0.0002429708223, -0.0002185676393, -0.0003238726790, + -0.0000647214854, +0.0000970822281, -0.0000647214854, -0.0002185676393, + +0.0000244031830, +0.0005665782493, +0.0006880636605, +0.0002591511936, + -0.0001941644562, -0.0002185676393, +0.0000000000000, +0.0000567639257, + +0.0000000000000, +0.0000729442971, +0.0001294429708, +0.0001376657825, + +0.0002103448276, +0.0002265251989, -0.0000161803714, -0.0004127320955, + -0.0006233421751, -0.0003885941645, +0.0000161803714, +0.0001941644562, + +0.0002671087533, +0.0004289124668, +0.0004450928382, +0.0002591511936, + -0.0000161803714, -0.0002509283820, -0.0002265251989, -0.0001538461538, + -0.0001132625995, -0.0000161803714, +0.0000244031830, -0.0000485411141, + -0.0000405835544, +0.0001214854111, +0.0002753315650, +0.0000729442971, + -0.0002103448276, -0.0001618037135, +0.0001456233422, +0.0002103448276, + +0.0000082228117, -0.0000970822281, +0.0000970822281, +0.0002429708223, + +0.0000970822281, -0.0000809018568, +0.0000000000000, +0.0000567639257, + -0.0000647214854, -0.0001538461538, +0.0000000000000, +0.0002591511936, + +0.0003724137931, +0.0003318302387, +0.0001779840849, +0.0000000000000, + -0.0001376657825, -0.0001376657825, -0.0000405835544, +0.0000000000000, + -0.0002265251989, -0.0004694960212, -0.0003400530504, +0.0000567639257, + +0.0002509283820, +0.0001456233422, +0.0000323607427, +0.0001618037135, + +0.0002185676393, +0.0000809018568, -0.0000244031830, +0.0000161803714, + +0.0000161803714, -0.0000485411141, -0.0000647214854, -0.0000647214854, + -0.0001456233422, -0.0001132625995, +0.0000161803714, +0.0000000000000, + -0.0000485411141, +0.0000082228117, +0.0001618037135, +0.0001862068966, + +0.0000161803714, -0.0002753315650, -0.0003803713528, -0.0001376657825, + +0.0002023872679, +0.0001700265252, -0.0001214854111, -0.0002185676393, + -0.0000729442971, +0.0000405835544, +0.0001376657825, +0.0001132625995, + +0.0000323607427, +0.0000729442971, +0.0000809018568, -0.0000891246684, + -0.0002591511936, -0.0002023872679, +0.0000405835544, +0.0002185676393, + +0.0001214854111, +0.0000000000000, +0.0000567639257, +0.0000970822281, + +0.0000161803714, +0.0000244031830, +0.0000970822281, +0.0001456233422, + +0.0000323607427, -0.0001779840849, -0.0002994694960, -0.0000891246684, + +0.0000000000000, -0.0002591511936, -0.0003562334218, +0.0000485411141, + +0.0003885941645, +0.0002915119363, +0.0000647214854, +0.0002103448276, + +0.0006395225464, +0.0007124668435, +0.0000970822281, -0.0005342175066, + -0.0004938992042, -0.0000891246684, -0.0001132625995, -0.0004371352785, + -0.0002591511936, +0.0002994694960, +0.0004777188329, +0.0002185676393, + +0.0000244031830, -0.0000485411141, -0.0000405835544, +0.0000323607427, + +0.0001700265252, +0.0001700265252, +0.0000405835544, -0.0001700265252, + -0.0004127320955, -0.0005100795756, -0.0002671087533, -0.0000082228117, + +0.0000485411141, +0.0000323607427, +0.0000891246684, +0.0001214854111, + +0.0001214854111, +0.0001456233422, +0.0001538461538, +0.0000567639257, + -0.0000891246684, -0.0002429708223, -0.0003076923077, -0.0001376657825, + +0.0001214854111, +0.0002103448276, +0.0000891246684, +0.0000323607427, + -0.0000082228117, -0.0000161803714, +0.0000567639257, +0.0000405835544, + +0.0000000000000, +0.0000891246684, +0.0000405835544, -0.0001132625995, + -0.0001456233422, +0.0000000000000, +0.0000647214854, -0.0001456233422, + -0.0004533156499, -0.0004209549072, +0.0000323607427, +0.0005586206897, + +0.0006880636605, +0.0003965517241, +0.0000405835544, -0.0001618037135, + -0.0001700265252, -0.0000970822281, -0.0000809018568, -0.0000891246684, + -0.0000809018568, -0.0001294429708, -0.0001538461538, -0.0001053050398, + +0.0001214854111, +0.0003965517241, +0.0004856763926, +0.0004047745358, + +0.0002185676393, -0.0001538461538, -0.0003965517241, -0.0002915119363, + -0.0000161803714, +0.0000567639257, -0.0000485411141, -0.0000161803714, + +0.0001862068966, +0.0001779840849, -0.0000891246684, -0.0001779840849, + +0.0000244031830, +0.0001941644562, +0.0001294429708, +0.0000161803714, + -0.0000244031830, +0.0000647214854, +0.0002429708223, +0.0002591511936, + -0.0000567639257, -0.0002265251989, -0.0000485411141, +0.0001132625995, + -0.0000244031830, -0.0002429708223, -0.0002429708223, -0.0000161803714, + +0.0000809018568, -0.0000244031830, -0.0002509283820, -0.0003238726790, + -0.0001700265252, -0.0000244031830, -0.0000405835544, +0.0000405835544, + +0.0002509283820, +0.0002753315650, +0.0000323607427, -0.0000485411141, + +0.0001294429708, +0.0001538461538, +0.0000082228117, -0.0001294429708, + -0.0002103448276, -0.0002103448276, -0.0001700265252, -0.0001456233422, + -0.0000244031830, -0.0000082228117, +0.0000000000000, +0.0001376657825, + +0.0002347480106, +0.0000809018568, +0.0000161803714, +0.0000729442971, + +0.0000323607427, -0.0000405835544, +0.0000244031830, +0.0000000000000, + -0.0001376657825, -0.0000891246684, +0.0000729442971, +0.0000000000000, + -0.0002832891247, -0.0002753315650, +0.0000567639257, +0.0002915119363, + +0.0001862068966, +0.0000244031830, -0.0000323607427, -0.0000405835544, + -0.0000485411141, +0.0000000000000, +0.0000000000000, +0.0000244031830, + +0.0001376657825, +0.0002994694960, +0.0003318302387, +0.0002509283820, + +0.0000405835544, -0.0002185676393, -0.0002994694960, -0.0000082228117, + +0.0002023872679, +0.0001053050398, -0.0001053050398, -0.0001700265252, + -0.0000485411141, +0.0000567639257, -0.0000323607427, -0.0002347480106, + -0.0001862068966, +0.0001456233422, +0.0004209549072, +0.0002671087533, + -0.0000323607427, -0.0001132625995, +0.0000323607427, +0.0000405835544, + -0.0001053050398, -0.0002023872679, -0.0001294429708, -0.0000809018568, + -0.0000323607427, +0.0000323607427, +0.0000891246684, +0.0000729442971, + +0.0001214854111, +0.0002103448276, +0.0002671087533, +0.0001618037135, + -0.0000244031830, -0.0002509283820, -0.0003965517241, -0.0003480106101, + -0.0000891246684, +0.0001862068966, +0.0003400530504, +0.0003885941645, + +0.0003562334218, +0.0001700265252, -0.0001538461538, -0.0003400530504, + -0.0002994694960, -0.0001538461538, -0.0000161803714, +0.0001700265252, + +0.0002994694960, +0.0002994694960, +0.0000405835544, -0.0002671087533, + -0.0003156498674, -0.0000567639257, +0.0001700265252, +0.0002103448276, + +0.0000647214854, -0.0000485411141, -0.0000891246684, -0.0000082228117, + +0.0001294429708, +0.0001941644562, +0.0002265251989, +0.0002994694960, + +0.0002023872679, -0.0000082228117, -0.0001132625995, -0.0001132625995, + -0.0000729442971, -0.0000970822281, -0.0000405835544, +0.0000891246684, + +0.0001053050398, -0.0000485411141, -0.0001294429708, -0.0000405835544, + +0.0000729442971, +0.0000809018568, +0.0001538461538, +0.0001456233422, + +0.0000082228117, -0.0000082228117, +0.0001294429708, +0.0000647214854, + -0.0001700265252, -0.0001456233422, +0.0001700265252, +0.0002429708223, + -0.0000729442971, -0.0003238726790, -0.0002023872679, +0.0000082228117, + +0.0000000000000, -0.0001376657825, -0.0002265251989, -0.0001862068966, + -0.0000244031830, +0.0002185676393, +0.0002915119363, +0.0001053050398, + -0.0000970822281, -0.0000405835544, +0.0001618037135, +0.0001538461538, + -0.0001376657825, -0.0002832891247, -0.0000405835544, +0.0002429708223, + +0.0001700265252, -0.0001376657825, -0.0003156498674, -0.0002429708223, + -0.0001132625995, -0.0000405835544, -0.0000323607427, +0.0000567639257, + +0.0002347480106, +0.0001618037135, -0.0001941644562, -0.0005665782493, + -0.0004856763926, +0.0000082228117, +0.0003724137931, +0.0002915119363, + +0.0001294429708, +0.0001053050398, +0.0001214854111, +0.0000485411141, + +0.0000000000000, -0.0000729442971, -0.0002265251989, -0.0002753315650, + -0.0000323607427, +0.0002265251989, +0.0002915119363, +0.0001862068966, + +0.0000647214854, +0.0000485411141, +0.0000485411141, -0.0000161803714, + -0.0001132625995, -0.0001700265252, -0.0001779840849, -0.0000405835544, + +0.0001538461538, +0.0001941644562, +0.0001294429708, +0.0001941644562, + +0.0001618037135, -0.0000970822281, -0.0002753315650, -0.0001779840849, + -0.0000405835544, +0.0000405835544, -0.0000082228117, -0.0000405835544, + +0.0000891246684, +0.0002429708223, +0.0002265251989, +0.0001456233422, + -0.0000323607427, -0.0002832891247, -0.0002832891247, +0.0000000000000, + +0.0003156498674, +0.0003238726790, +0.0000082228117, -0.0002509283820, + -0.0002753315650, -0.0002753315650, -0.0002591511936, -0.0002023872679, + -0.0000323607427, +0.0002023872679, +0.0004289124668, +0.0003400530504, + -0.0000161803714, -0.0001941644562, +0.0000000000000, +0.0000809018568, + -0.0000729442971, -0.0002509283820, -0.0002347480106, -0.0001294429708, + -0.0000082228117, +0.0000000000000, +0.0000000000000, +0.0000000000000, + +0.0000000000000, +0.0000000000000, +0.0000000000000, +0.0000000000000, + +0.0000000000000, +0.0000000000000, +0.0000000000000, +0.0000000000000, + +0.0000000000000, +0.0000082228117, +0.0000082228117, +0.0000082228117, + +0.0000000000000, +0.0000000000000, -0.0000244031830, -0.0000323607427, + -0.0000082228117, +0.0000161803714, +0.0000244031830, +0.0000082228117, + +0.0000244031830, +0.0000485411141, +0.0000244031830, -0.0000161803714, + -0.0000405835544, +0.0000000000000, +0.0000323607427, +0.0000244031830, + -0.0000082228117, -0.0000244031830, +0.0000000000000, +0.0000082228117, + +0.0000244031830, +0.0000000000000, +0.0000000000000, +0.0000161803714, + +0.0000405835544, +0.0000000000000, -0.0000729442971, -0.0000323607427, + +0.0000970822281, +0.0001862068966, +0.0001132625995, +0.0000000000000, + -0.0000405835544, -0.0000323607427, +0.0000000000000, +0.0000082228117, + -0.0000323607427, -0.0000809018568, -0.0000405835544, +0.0000082228117, + +0.0000405835544, +0.0000405835544, +0.0000323607427, +0.0000082228117, + -0.0000082228117, -0.0000244031830, -0.0000082228117, +0.0000161803714, + +0.0000485411141, +0.0000567639257, +0.0000323607427, +0.0000000000000, + +0.0000082228117, +0.0000485411141, +0.0000244031830, -0.0000082228117, + +0.0000000000000, -0.0000161803714, -0.0001294429708, -0.0001294429708, + +0.0000000000000, +0.0000970822281, +0.0000729442971, +0.0000000000000, + -0.0000485411141, -0.0000567639257, -0.0000729442971, -0.0001294429708, + -0.0000970822281, +0.0000082228117, +0.0001294429708, +0.0001618037135, + +0.0000891246684, -0.0000567639257, -0.0001456233422, -0.0001132625995, + -0.0000323607427, -0.0000161803714, -0.0000244031830, +0.0000000000000, + +0.0000970822281, +0.0001941644562, +0.0001376657825, -0.0000082228117, + -0.0001214854111, -0.0001538461538, -0.0000970822281, +0.0000244031830, + +0.0000729442971, +0.0000244031830, +0.0000000000000, +0.0000729442971, + +0.0001294429708, +0.0000082228117, -0.0001456233422, -0.0001214854111, + +0.0000161803714, +0.0001132625995, +0.0000000000000, -0.0001294429708, + -0.0000891246684, +0.0000485411141, +0.0001456233422, +0.0001941644562, + +0.0001779840849, +0.0000729442971, -0.0000405835544, -0.0000567639257, + -0.0000161803714, -0.0000405835544, -0.0000809018568, +0.0000000000000, + +0.0001456233422, +0.0000970822281, -0.0000647214854, -0.0001053050398, + +0.0000485411141, +0.0001862068966, +0.0001376657825, -0.0000244031830, + -0.0001214854111, -0.0001538461538, -0.0001376657825, -0.0001053050398, + -0.0000082228117, +0.0000485411141, +0.0001376657825, +0.0002347480106, + +0.0001779840849, -0.0000323607427, -0.0001214854111, -0.0000970822281, + -0.0001700265252, -0.0001779840849, +0.0000000000000, +0.0001538461538, + +0.0002185676393, +0.0002185676393, +0.0001294429708, -0.0000244031830, + -0.0002509283820, -0.0004371352785, -0.0003803713528, -0.0001053050398, + +0.0000809018568, +0.0001862068966, +0.0002023872679, +0.0001941644562, + +0.0001132625995, -0.0000485411141, -0.0001862068966, -0.0001294429708, + +0.0000000000000, +0.0001538461538, +0.0002347480106 +}; diff --git a/plugins/ladspa_effect/swh/impulses/07-fender-68-vibrolux-ui87.h b/plugins/ladspa_effect/swh/impulses/07-fender-68-vibrolux-ui87.h new file mode 100644 index 000000000..db4b417a5 --- /dev/null +++ b/plugins/ladspa_effect/swh/impulses/07-fender-68-vibrolux-ui87.h @@ -0,0 +1,1226 @@ +float fender_68_vibrolux_ui87[] = { + +0.0000000000000, +0.0000000000000, +0.0000000000000, +0.0000000000000, + +0.0000000000000, +0.0000000000000, +0.0000065400844, +0.0000194092827, + +0.0000128691983, +0.0000000000000, -0.0000194092827, +0.0000000000000, + +0.0000128691983, +0.0000000000000, -0.0000128691983, -0.0000065400844, + +0.0000000000000, +0.0000000000000, -0.0000128691983, +0.0000322784810, + +0.0000708860759, +0.0000514767932, +0.0000000000000, -0.0000257383966, + -0.0000065400844, +0.0000065400844, -0.0000065400844, -0.0000322784810, + -0.0000257383966, -0.0000065400844, -0.0000322784810, -0.0000322784810, + +0.0000194092827, +0.0000900843882, +0.0000837552743, +0.0000194092827, + -0.0000257383966, +0.0000000000000, +0.0000128691983, -0.0000065400844, + -0.0000708860759, -0.0000386075949, +0.0000322784810, +0.0000000000000, + -0.0000643459916, +0.0000000000000, +0.0001094936709, +0.0001223628692, + +0.0000000000000, -0.0000322784810, +0.0000194092827, +0.0000000000000, + -0.0001158227848, -0.0001672995781, -0.0000580168776, +0.0000900843882, + +0.0000257383966, -0.0000514767932, +0.0000194092827, +0.0001481012658, + +0.0001223628692, +0.0000451476793, +0.0000451476793, +0.0000837552743, + +0.0000000000000, -0.0002124472574, -0.0002962025316, -0.0001094936709, + +0.0000837552743, +0.0000900843882, -0.0000386075949, -0.0000386075949, + +0.0000966244726, +0.0001029535865, +0.0000257383966, +0.0001223628692, + +0.0001932489451, +0.0000514767932, -0.0002704641350, -0.0004120253165, + -0.0001672995781, +0.0001867088608, +0.0002253164557, +0.0000386075949, + -0.0000322784810, +0.0000580168776, +0.0000837552743, -0.0000322784810, + +0.0000451476793, +0.0002767932489, +0.0001094936709, -0.0004185654008, + -0.0006888185654, -0.0002833333333, +0.0002189873418, +0.0003282700422, + +0.0001029535865, +0.0000643459916, +0.0002124472574, +0.0001415611814, + -0.0000643459916, +0.0001801687764, +0.0004700421941, +0.0001738396624, + -0.0005343881857, -0.0007210970464, -0.0003991561181, +0.0000257383966, + +0.0002381856540, +0.0001094936709, +0.0000708860759, +0.0002061181435, + +0.0000643459916, -0.0000322784810, +0.0000772151899, +0.0004185654008, + +0.0003348101266, -0.0003219409283, -0.0007597046414, -0.0003154008439, + +0.0001738396624, +0.0003025316456, +0.0000643459916, +0.0001801687764, + +0.0003670886076, +0.0001481012658, -0.0002253164557, -0.0002124472574, + +0.0004185654008, +0.0003219409283, -0.0005795358650, -0.0007725738397, + -0.0002896624473, +0.0001158227848, +0.0000708860759, +0.0000000000000, + +0.0004314345992, +0.0007597046414, +0.0004892405063, +0.0001158227848, + -0.0001544303797, +0.0002124472574, +0.0001995780591, -0.0004892405063, + -0.0008434599156, -0.0004120253165, +0.0000451476793, -0.0002767932489, + -0.0005215189873, +0.0001544303797, +0.0009400843882, +0.0009141350211, + +0.0001995780591, -0.0004377637131, +0.0001352320675, +0.0002962025316, + -0.0004506329114, -0.0005729957806, +0.0003605485232, +0.0005086497890, + -0.0004700421941, -0.0009721518987, +0.0002575949367, +0.0014164556962, + +0.0014873417722, +0.0000643459916, -0.0004314345992, -0.0004056962025, + -0.0004506329114, -0.0011717299578, -0.0006630801688, +0.0005278481013, + +0.0012360759494, -0.0012297468354, -0.0018027426160, +0.0000900843882, + +0.0035860759494, +0.0036504219409, +0.0017770042194, -0.0007274261603, + -0.0002704641350, -0.0008177215190, -0.0009978902954, -0.0018478902954, + +0.0014356540084, +0.0023951476793, -0.0014485232068, -0.0087947257384, + -0.0035088607595, +0.0029938818565, +0.0382048523207, -0.0170358649789, + -0.0791267932489, -0.0187677215190, +0.1161018987342, +0.2109575949367, + +0.0768926160338, -0.1636681434599, -0.1423253164557, -0.0362476793249, + -0.1131016877637, -0.1276717299578, +0.0162373417722, +0.1233514767932, + +0.0506244725738, +0.0418103375527, +0.0046871308017, +0.0040818565401, + -0.0304725738397, -0.0581829113924, -0.0086531645570, +0.0347540084388, + -0.0397565400844, -0.0239827004219, +0.0140419831224, -0.0147565400844, + +0.0023500000000, +0.0165978902954, +0.0268476793249, +0.0005601265823, + +0.0065219409283, -0.0127027426160, -0.0094386075949, -0.0036375527426, + +0.0008755274262, +0.0146987341772, +0.0315542194093, +0.0068696202532, + -0.0237573839662, -0.0308265822785, +0.0000708860759, +0.0435808016878, + +0.0116597046414, -0.0014227848101, +0.0102175105485, +0.0030582278481, + +0.0103850210970, +0.0295839662447, +0.0237122362869, +0.0107198312236, + +0.0059232067511, +0.0065542194093, +0.0049639240506, -0.0121105485232, + -0.0175894514768, -0.0126512658228, +0.0062774261603, +0.0028907172996, + -0.0068504219409, +0.0145955696203, +0.0169327004219, -0.0029293248945, + -0.0143510548523, -0.0012554852321, +0.0147694092827, +0.0110223628692, + +0.0034959915612, +0.0069468354430, -0.0007405063291, -0.0051892405063, + +0.0082088607595, +0.0120782700422, +0.0077774261603, -0.0025044303797, + -0.0091037974684, -0.0043265822785, +0.0036183544304, -0.0032641350211, + -0.0069856540084, -0.0007983122363, -0.0050605485232, -0.0077774261603, + -0.0017704641350, +0.0045453586498, +0.0033864978903, +0.0017255274262, + +0.0028972573840, +0.0074362869198, +0.0102820675105, +0.0064833333333, + +0.0083054852321, +0.0126578059072, +0.0042814345992, -0.0046162447257, + -0.0026075949367, +0.0031419831224, +0.0079770042194, +0.0061421940928, + +0.0000065400844, -0.0034831223629, -0.0041398734177, -0.0053630801688, + -0.0066508438819, -0.0029873417722, -0.0009850210970, +0.0007016877637, + +0.0061356540084, +0.0073719409283, +0.0060841772152, +0.0016031645570, + -0.0032449367089, -0.0050476793249, -0.0027105485232, -0.0027877637131, + +0.0014164556962, +0.0061936708861, +0.0087753164557, +0.0023628691983, + -0.0053373417722, -0.0070242616034, -0.0061421940928, -0.0072367088608, + -0.0083504219409, -0.0071335443038, -0.0057430379747, -0.0002575949367, + +0.0027040084388, +0.0021181434599, -0.0009272151899, +0.0005537974684, + +0.0001801687764, +0.0009529535865, +0.0005601265823, -0.0015708860759, + -0.0028135021097, -0.0067537974684, -0.0057301687764, -0.0010816455696, + +0.0020280590717, +0.0009012658228, -0.0007082278481, +0.0006244725738, + -0.0025172995781, -0.0088398734177, -0.0076358649789, -0.0044166666667, + -0.0046677215190, -0.0033158227848, -0.0016094936709, -0.0012489451477, + -0.0001867088608, +0.0020280590717, +0.0022276371308, +0.0016160337553, + -0.0012554852321, -0.0034831223629, -0.0026782700422, +0.0005858649789, + +0.0036054852321, -0.0007854430380, -0.0062065400844, -0.0047514767932, + -0.0028715189873, -0.0028135021097, -0.0045196202532, -0.0019765822785, + +0.0034508438819, +0.0025947257384, -0.0027943037975, -0.0043008438819, + -0.0039660337553, -0.0067343881857, -0.0037407172996, +0.0013907172996, + -0.0009335443038, -0.0010945147679, +0.0026976793249, +0.0003991561181, + -0.0037407172996, -0.0050605485232, -0.0034508438819, -0.0031677215190, + -0.0037470464135, -0.0020409282700, -0.0012554852321, +0.0009850210970, + +0.0008626582278, -0.0014613924051, -0.0040689873418, -0.0055369198312, + -0.0011139240506, +0.0024786919831, -0.0008305907173, -0.0010430379747, + +0.0000900843882, -0.0011073839662, -0.0012426160338, -0.0000451476793, + +0.0016869198312, +0.0000257383966, +0.0003734177215, +0.0018670886076, + +0.0000000000000, -0.0007274261603, +0.0007854430380, +0.0004120253165, + -0.0018864978903, -0.0012877637131, +0.0007016877637, +0.0026719409283, + +0.0042299578059, +0.0026010548523, -0.0001544303797, +0.0007016877637, + +0.0010236286920, +0.0013392405063, +0.0005215189873, +0.0007919831224, + +0.0043137130802, +0.0029293248945, -0.0006567510549, +0.0001223628692, + +0.0004185654008, -0.0010172995781, -0.0001995780591, -0.0007983122363, + -0.0012489451477, +0.0026139240506, +0.0035926160338, +0.0009400843882, + +0.0002061181435, -0.0005086497890, -0.0000772151899, +0.0006116033755, + -0.0010493670886, -0.0010172995781, +0.0009529535865, +0.0015774261603, + -0.0002124472574, -0.0004957805907, +0.0008883966245, +0.0023757383966, + +0.0036246835443, +0.0017512658228, +0.0021118143460, +0.0031097046414, + -0.0013006329114, -0.0032449367089, -0.0011845991561, -0.0003928270042, + +0.0007533755274, +0.0008883966245, +0.0000708860759, +0.0000000000000, + -0.0002061181435, -0.0010107594937, +0.0005407172996, +0.0021632911392, + +0.0031548523207, +0.0039145569620, +0.0008434599156, -0.0010879746835, + +0.0003282700422, +0.0009141350211, +0.0003090717300, +0.0001223628692, + +0.0001158227848, +0.0006696202532, -0.0001415611814, -0.0000386075949, + -0.0003670886076, -0.0005666666667, +0.0009592827004, +0.0007533755274, + +0.0013841772152, +0.0025495780591, +0.0011717299578, +0.0003991561181, + -0.0000257383966, -0.0010172995781, -0.0015902953586, -0.0015130801688, + +0.0019637130802, +0.0021118143460, -0.0004829113924, +0.0009658227848, + +0.0001801687764, -0.0009978902954, -0.0012940928270, -0.0029744725738, + -0.0007082278481, +0.0030067510549, +0.0033930379747, +0.0022791139241, + +0.0000194092827, -0.0016417721519, -0.0011459915612, -0.0005215189873, + -0.0007405063291, -0.0014613924051, -0.0007274261603, +0.0005795358650, + +0.0016740506329, +0.0017061181435, +0.0000322784810, -0.0008305907173, + +0.0015516877637, +0.0017318565401, -0.0003411392405, +0.0009850210970, + +0.0014164556962, +0.0000000000000, +0.0002447257384, -0.0011654008439, + -0.0014356540084, -0.0004443037975, -0.0020086497890, -0.0016546413502, + -0.0003862869198, -0.0006502109705, -0.0005215189873, -0.0004635021097, + +0.0012489451477, +0.0023434599156, -0.0008949367089, -0.0004892405063, + +0.0015966244726, +0.0008563291139, -0.0023305907173, -0.0039466244726, + -0.0010687763713, +0.0013069620253, +0.0004892405063, -0.0006567510549, + +0.0005086497890, +0.0010751054852, +0.0011588607595, -0.0001672995781, + -0.0009400843882, -0.0012489451477, -0.0011073839662, +0.0003799578059, + -0.0008755274262, -0.0024014767932, -0.0005987341772, +0.0006373417722, + -0.0002575949367, +0.0000837552743, +0.0003476793249, +0.0004829113924, + -0.0004314345992, -0.0006438818565, +0.0007274261603, -0.0004957805907, + -0.0023628691983, -0.0027685654008, -0.0023242616034, +0.0006630801688, + +0.0025624472574, +0.0014421940928, +0.0018928270042, +0.0024915611814, + +0.0022662447257, +0.0011331223629, -0.0011267932489, -0.0016932489451, + -0.0007016877637, -0.0012683544304, -0.0006696202532, -0.0000643459916, + -0.0004377637131, +0.0000580168776, -0.0002704641350, -0.0005086497890, + +0.0009206751055, +0.0010816455696, +0.0003670886076, -0.0001415611814, + -0.0005149789030, -0.0003734177215, -0.0009915611814, +0.0005407172996, + +0.0010687763713, -0.0013455696203, -0.0014099156118, +0.0000322784810, + +0.0001995780591, -0.0002575949367, -0.0011010548523, -0.0010044303797, + +0.0007082278481, +0.0008820675105, +0.0000128691983, -0.0000514767932, + +0.0004892405063, +0.0011974683544, +0.0013135021097, +0.0002896624473, + -0.0003991561181, +0.0001223628692, -0.0004635021097, -0.0018090717300, + -0.0020474683544, -0.0019894514768, -0.0006630801688, +0.0015130801688, + +0.0018219409283, +0.0005407172996, -0.0005795358650, -0.0002833333333, + +0.0001867088608, -0.0003476793249, +0.0002962025316, +0.0007016877637, + +0.0000900843882, -0.0006888185654, -0.0018478902954, -0.0013006329114, + +0.0000580168776, +0.0014164556962, +0.0035540084388, +0.0032835443038, + +0.0010751054852, -0.0009012658228, -0.0028586497890, -0.0024658227848, + -0.0007919831224, -0.0002767932489, +0.0005537974684, +0.0010172995781, + +0.0006824894515, -0.0005343881857, -0.0009206751055, +0.0008305907173, + +0.0012940928270, +0.0004443037975, +0.0007082278481, +0.0002575949367, + +0.0000772151899, +0.0002575949367, +0.0000643459916, +0.0008949367089, + +0.0023563291139, +0.0011010548523, -0.0005729957806, +0.0008949367089, + +0.0011073839662, -0.0011396624473, -0.0018219409283, -0.0020023206751, + -0.0023242616034, -0.0004443037975, -0.0001223628692, -0.0000322784810, + +0.0019122362869, +0.0023113924051, +0.0002639240506, -0.0006373417722, + -0.0003734177215, -0.0009012658228, -0.0006888185654, +0.0006888185654, + +0.0011396624473, +0.0002061181435, -0.0000128691983, +0.0005343881857, + +0.0015516877637, +0.0027168776371, +0.0022018987342, -0.0000257383966, + +0.0001158227848, +0.0000580168776, -0.0023886075949, -0.0024466244726, + -0.0006759493671, +0.0001481012658, +0.0000128691983, +0.0003799578059, + +0.0014679324895, +0.0018799578059, +0.0010430379747, +0.0007854430380, + +0.0009658227848, +0.0005795358650, +0.0004763713080, +0.0005795358650, + +0.0010622362869, +0.0021890295359, +0.0012618143460, +0.0003282700422, + +0.0013778481013, +0.0009721518987, -0.0002381856540, +0.0002767932489, + +0.0000580168776, -0.0011010548523, -0.0001672995781, +0.0012489451477, + +0.0007468354430, +0.0000000000000, -0.0003476793249, -0.0000772151899, + +0.0009915611814, +0.0008755274262, +0.0008305907173, +0.0016997890295, + +0.0007082278481, -0.0004571729958, -0.0000128691983, +0.0011073839662, + +0.0017447257384, +0.0004571729958, +0.0002318565401, +0.0007082278481, + -0.0000128691983, +0.0006502109705, +0.0008111814346, -0.0003670886076, + -0.0004056962025, +0.0002962025316, -0.0003025316456, -0.0007662447257, + -0.0005215189873, -0.0007854430380, -0.0006244725738, +0.0004377637131, + +0.0005086497890, +0.0008369198312, +0.0017447257384, +0.0007597046414, + -0.0009915611814, -0.0018993670886, -0.0019829113924, -0.0006824894515, + +0.0005729957806, +0.0010430379747, +0.0008434599156, +0.0012103375527, + +0.0006824894515, -0.0008048523207, -0.0011202531646, -0.0014613924051, + -0.0019251054852, -0.0010622362869, -0.0000514767932, +0.0008691983122, + +0.0021696202532, +0.0014936708861, +0.0006888185654, -0.0002833333333, + -0.0006759493671, -0.0009012658228, -0.0006244725738, +0.0001158227848, + +0.0002575949367, -0.0004506329114, -0.0005021097046, +0.0001995780591, + +0.0003734177215, +0.0000386075949, -0.0011267932489, -0.0016675105485, + -0.0014744725738, -0.0008305907173, -0.0010044303797, -0.0001094936709, + +0.0007082278481, -0.0009786919831, -0.0017447257384, -0.0001801687764, + +0.0000837552743, -0.0012683544304, -0.0016289029536, -0.0009400843882, + +0.0002447257384, +0.0001094936709, -0.0005343881857, -0.0006630801688, + -0.0007725738397, -0.0013327004219, -0.0009206751055, +0.0003540084388, + +0.0004314345992, -0.0004506329114, -0.0007854430380, -0.0011588607595, + -0.0018993670886, -0.0014164556962, -0.0005215189873, +0.0000451476793, + +0.0002639240506, +0.0000837552743, +0.0001352320675, -0.0006116033755, + -0.0021567510549, -0.0021118143460, -0.0010559071730, -0.0000257383966, + +0.0003282700422, +0.0003991561181, +0.0012103375527, +0.0007145569620, + -0.0001286919831, +0.0004443037975, +0.0000643459916, -0.0011073839662, + -0.0019508438819, -0.0021052742616, -0.0014485232068, -0.0002962025316, + +0.0004571729958, -0.0000451476793, -0.0012812236287, -0.0012103375527, + -0.0000194092827, +0.0012618143460, +0.0019056962025, +0.0019185654008, + +0.0021504219409, +0.0014613924051, -0.0002189873418, -0.0011845991561, + -0.0003605485232, +0.0002318565401, +0.0004892405063, +0.0005987341772, + +0.0000451476793, -0.0010816455696, -0.0009272151899, -0.0004314345992, + -0.0003670886076, +0.0000837552743, +0.0010751054852, +0.0009400843882, + +0.0001223628692, +0.0001223628692, +0.0003862869198, +0.0009721518987, + +0.0014808016878, +0.0009141350211, +0.0000643459916, -0.0009206751055, + -0.0013327004219, -0.0007210970464, -0.0006630801688, -0.0003219409283, + +0.0002833333333, +0.0001672995781, +0.0000194092827, -0.0006310126582, + -0.0006567510549, +0.0011974683544, +0.0030902953586, +0.0025238396624, + +0.0006888185654, -0.0005666666667, -0.0011396624473, -0.0014164556962, + -0.0008048523207, -0.0001352320675, +0.0005795358650, +0.0013327004219, + +0.0007145569620, -0.0004314345992, -0.0000900843882, +0.0015388185654, + +0.0017383966245, +0.0007145569620, +0.0003862869198, -0.0001029535865, + -0.0001481012658, +0.0000580168776, -0.0002962025316, +0.0000900843882, + +0.0006567510549, -0.0001415611814, -0.0000580168776, +0.0003348101266, + +0.0001932489451, +0.0006824894515, +0.0010559071730, +0.0004120253165, + +0.0002767932489, +0.0000322784810, -0.0005666666667, -0.0009400843882, + -0.0009335443038, +0.0000837552743, +0.0008626582278, +0.0003411392405, + +0.0001672995781, +0.0011459915612, +0.0017189873418, +0.0012040084388, + +0.0007210970464, -0.0002704641350, -0.0011267932489, -0.0011073839662, + -0.0012297468354, -0.0009915611814, +0.0007597046414, +0.0021310126582, + +0.0015322784810, +0.0007854430380, +0.0002189873418, -0.0003991561181, + -0.0010172995781, -0.0010493670886, -0.0003799578059, +0.0007210970464, + +0.0009335443038, +0.0004635021097, +0.0002253164557, +0.0001801687764, + -0.0002189873418, -0.0003799578059, +0.0003476793249, +0.0007405063291, + +0.0006759493671, +0.0008111814346, +0.0010687763713, +0.0001029535865, + -0.0010493670886, -0.0006630801688, -0.0004314345992, -0.0007145569620, + -0.0000966244726, +0.0004377637131, -0.0003219409283, +0.0000451476793, + +0.0004763713080, -0.0006373417722, -0.0011588607595, -0.0003799578059, + +0.0001672995781, +0.0001286919831, -0.0001481012658, +0.0000772151899, + +0.0005021097046, +0.0000451476793, -0.0002253164557, +0.0001481012658, + +0.0002381856540, +0.0001932489451, +0.0003348101266, -0.0003090717300, + -0.0012812236287, -0.0011845991561, -0.0002704641350, -0.0003605485232, + -0.0003991561181, +0.0000580168776, -0.0003282700422, -0.0007854430380, + -0.0000643459916, +0.0004957805907, -0.0001029535865, -0.0007016877637, + -0.0002447257384, -0.0002318565401, -0.0010430379747, -0.0002704641350, + +0.0011845991561, +0.0016675105485, +0.0013907172996, +0.0005987341772, + +0.0002575949367, +0.0003219409283, -0.0005666666667, -0.0007725738397, + -0.0002575949367, -0.0005924050633, -0.0012232067511, -0.0012554852321, + -0.0010816455696, +0.0001158227848, +0.0012232067511, +0.0009078059072, + -0.0001481012658, -0.0001609704641, +0.0003928270042, +0.0000708860759, + -0.0008305907173, -0.0009786919831, -0.0007533755274, -0.0007854430380, + -0.0003862869198, +0.0000837552743, -0.0003154008439, -0.0005343881857, + +0.0001932489451, +0.0008048523207, +0.0003605485232, -0.0001481012658, + -0.0006502109705, -0.0007533755274, -0.0006953586498, -0.0002447257384, + +0.0001672995781, +0.0003799578059, +0.0005729957806, +0.0004185654008, + -0.0001801687764, +0.0000966244726, +0.0008305907173, +0.0006373417722, + -0.0000322784810, +0.0000837552743, +0.0001867088608, -0.0005149789030, + -0.0007405063291, -0.0004248945148, -0.0006310126582, -0.0000322784810, + +0.0006244725738, +0.0003991561181, +0.0003991561181, +0.0010044303797, + +0.0011073839662, +0.0008111814346, +0.0000900843882, -0.0005407172996, + -0.0008111814346, -0.0005537974684, -0.0004377637131, -0.0003219409283, + +0.0004443037975, +0.0009978902954, +0.0000514767932, -0.0007468354430, + +0.0002510548523, +0.0013392405063, +0.0009978902954, +0.0004957805907, + +0.0000966244726, +0.0001801687764, +0.0002639240506, -0.0000128691983, + +0.0002124472574, +0.0007339662447, +0.0002061181435, -0.0000580168776, + -0.0005858649789, -0.0016160337553, -0.0017383966245, -0.0003219409283, + +0.0005021097046, +0.0002447257384, +0.0000514767932, -0.0003734177215, + -0.0002767932489, +0.0002189873418, +0.0002189873418, -0.0000194092827, + +0.0000386075949, +0.0003605485232, +0.0005666666667, +0.0006438818565, + +0.0006116033755, +0.0005343881857, +0.0004377637131, +0.0006888185654, + +0.0001801687764, -0.0004571729958, -0.0004506329114, -0.0000322784810, + +0.0001094936709, -0.0001158227848, -0.0003540084388, -0.0003219409283, + +0.0000708860759, +0.0000708860759, -0.0004248945148, -0.0002189873418, + +0.0004443037975, -0.0001801687764, -0.0009786919831, -0.0004892405063, + +0.0003862869198, +0.0001223628692, -0.0003219409283, +0.0001738396624, + +0.0005795358650, +0.0004056962025, -0.0000194092827, -0.0004185654008, + -0.0005472573840, -0.0002767932489, -0.0001672995781, -0.0004957805907, + +0.0000065400844, +0.0004056962025, +0.0000128691983, -0.0005858649789, + -0.0010751054852, -0.0012360759494, -0.0001867088608, +0.0005343881857, + +0.0004763713080, +0.0003154008439, -0.0000257383966, -0.0004635021097, + -0.0008434599156, -0.0003540084388, +0.0008111814346, +0.0009078059072, + +0.0001544303797, -0.0004185654008, -0.0000966244726, +0.0001609704641, + -0.0003025316456, -0.0005278481013, -0.0003219409283, -0.0007597046414, + -0.0002447257384, +0.0000900843882, +0.0000386075949, +0.0005021097046, + +0.0006310126582, +0.0001481012658, +0.0001932489451, +0.0004506329114, + +0.0005278481013, +0.0003219409283, +0.0001415611814, -0.0002639240506, + -0.0003090717300, -0.0001029535865, -0.0001672995781, -0.0003282700422, + +0.0001738396624, +0.0000065400844, +0.0003025316456, +0.0006696202532, + +0.0004120253165, +0.0003154008439, +0.0002253164557, -0.0002124472574, + -0.0004829113924, -0.0006244725738, -0.0010687763713, -0.0015580168776, + -0.0006310126582, +0.0008691983122, +0.0018928270042, +0.0014679324895, + +0.0000772151899, -0.0001738396624, +0.0001932489451, -0.0011974683544, + -0.0019637130802, -0.0011525316456, +0.0002381856540, +0.0005924050633, + +0.0003605485232, +0.0002767932489, +0.0007533755274, +0.0011782700422, + +0.0011845991561, +0.0000900843882, -0.0016417721519, -0.0021890295359, + -0.0006759493671, +0.0000580168776, -0.0003411392405, -0.0003476793249, + +0.0002124472574, +0.0008497890295, +0.0007662447257, +0.0006244725738, + +0.0001158227848, -0.0002253164557, +0.0002833333333, -0.0004829113924, + -0.0012618143460, -0.0003862869198, +0.0005086497890, +0.0011459915612, + +0.0011139240506, -0.0003605485232, -0.0007210970464, -0.0003991561181, + -0.0001801687764, +0.0002124472574, +0.0003928270042, -0.0004571729958, + -0.0009850210970, +0.0002189873418, +0.0012103375527, +0.0007725738397, + -0.0000772151899, -0.0004571729958, +0.0004571729958, +0.0008949367089, + -0.0003991561181, -0.0011459915612, -0.0005472573840, -0.0002318565401, + +0.0001672995781, +0.0009978902954, +0.0010879746835, +0.0007919831224, + +0.0006630801688, +0.0003411392405, +0.0002061181435, +0.0005666666667, + -0.0000514767932, -0.0013327004219, -0.0009721518987, +0.0001867088608, + +0.0003154008439, -0.0000900843882, -0.0000900843882, +0.0005343881857, + +0.0003219409283, -0.0005987341772, -0.0006116033755, +0.0008434599156, + +0.0011073839662, +0.0002318565401, -0.0004056962025, -0.0005666666667, + -0.0005729957806, -0.0003090717300, -0.0001995780591, +0.0000708860759, + +0.0009658227848, +0.0014679324895, +0.0007662447257, +0.0000708860759, + +0.0005278481013, +0.0000900843882, -0.0013392405063, -0.0009206751055, + -0.0003928270042, -0.0008177215190, -0.0006824894515, +0.0003605485232, + +0.0000837552743, +0.0000065400844, -0.0001481012658, +0.0003991561181, + +0.0011267932489, +0.0011654008439, +0.0004571729958, -0.0007597046414, + -0.0026204641350, -0.0024080168776, -0.0005987341772, +0.0008048523207, + +0.0016094936709, +0.0017447257384, +0.0017575949367, +0.0012040084388, + +0.0005729957806, -0.0012618143460, -0.0027491561181, -0.0021118143460, + -0.0005924050633, -0.0001223628692, -0.0002767932489, -0.0000514767932, + +0.0002767932489, +0.0001738396624, -0.0004635021097, +0.0005086497890, + +0.0011073839662, +0.0009400843882, -0.0001094936709, -0.0006310126582, + -0.0011073839662, -0.0014679324895, -0.0000322784810, +0.0011396624473, + +0.0011459915612, +0.0006630801688, -0.0000322784810, +0.0001995780591, + +0.0001801687764, -0.0001094936709, -0.0003282700422, -0.0006567510549, + -0.0006116033755, +0.0000000000000, -0.0008177215190, -0.0013970464135, + -0.0014164556962, -0.0003670886076, +0.0007791139241, +0.0011202531646, + +0.0015130801688, +0.0011331223629, +0.0002253164557, -0.0002253164557, + +0.0002896624473, +0.0008820675105, +0.0005021097046, -0.0004829113924, + -0.0011525316456, -0.0015388185654, -0.0016352320675, -0.0008626582278, + +0.0003219409283, +0.0008111814346, +0.0000065400844, -0.0004443037975, + -0.0000966244726, +0.0008434599156, +0.0016031645570, +0.0008177215190, + +0.0000900843882, -0.0000772151899, -0.0005537974684, -0.0007405063291, + -0.0002510548523, -0.0005278481013, -0.0012554852321, -0.0007983122363, + +0.0004120253165, +0.0011588607595, +0.0015388185654, +0.0008434599156, + -0.0005537974684, -0.0009012658228, -0.0007725738397, +0.0001995780591, + +0.0015322784810, +0.0005858649789, -0.0004185654008, +0.0004185654008, + +0.0010301687764, +0.0006310126582, -0.0003219409283, -0.0008497890295, + -0.0004443037975, +0.0000514767932, -0.0000451476793, -0.0002833333333, + -0.0000772151899, +0.0002704641350, +0.0001609704641, -0.0005537974684, + +0.0002318565401, +0.0018670886076, +0.0020345991561, -0.0004314345992, + -0.0025559071730, -0.0023951476793, -0.0005215189873, +0.0003282700422, + +0.0000000000000, -0.0007791139241, -0.0007919831224, -0.0001481012658, + +0.0002704641350, +0.0006181434599, +0.0009978902954, +0.0007854430380, + +0.0012877637131, +0.0020345991561, +0.0014164556962, +0.0002896624473, + +0.0001481012658, +0.0005987341772, +0.0007082278481, -0.0004443037975, + -0.0019571729958, -0.0021890295359, -0.0017641350211, -0.0024466244726, + -0.0021438818565, -0.0007791139241, +0.0003605485232, +0.0010430379747, + +0.0015902953586, +0.0021953586498, +0.0028907172996, +0.0027297468354, + +0.0019122362869, +0.0008048523207, +0.0000386075949, -0.0012812236287, + -0.0031097046414, -0.0034251054852, -0.0014293248945, +0.0003090717300, + +0.0009464135021, +0.0000837552743, -0.0008177215190, -0.0011782700422, + -0.0012940928270, -0.0007016877637, +0.0008305907173, +0.0018864978903, + +0.0014485232068, +0.0001544303797, -0.0002962025316, +0.0001738396624, + +0.0003862869198, +0.0006696202532, +0.0009335443038, +0.0007791139241, + -0.0003154008439, -0.0015645569620, -0.0013198312236, -0.0011654008439, + -0.0013263713080, -0.0002318565401, +0.0012168776371, +0.0018993670886, + +0.0020151898734, +0.0011331223629, +0.0002061181435, -0.0002447257384, + +0.0001223628692, +0.0009978902954, +0.0006824894515, -0.0008305907173, + -0.0024143459916, -0.0026654008439, -0.0019508438819, -0.0004957805907, + +0.0011654008439, +0.0017318565401, +0.0000194092827, -0.0015774261603, + +0.0001932489451, +0.0039531645570, +0.0044938818565, +0.0007725738397, + -0.0017962025316, -0.0022213080169, -0.0021181434599, -0.0005987341772, + +0.0005215189873, +0.0001352320675, -0.0006116033755, -0.0016094936709, + -0.0019251054852, -0.0003476793249, +0.0006373417722, +0.0007145569620, + +0.0013649789030, +0.0031677215190, +0.0032320675105, +0.0024658227848, + +0.0017704641350, +0.0001481012658, -0.0010044303797, -0.0008626582278, + -0.0008691983122, -0.0003282700422, -0.0002253164557, -0.0015774261603, + -0.0008305907173, +0.0007919831224, +0.0004635021097, +0.0001738396624, + +0.0010301687764, +0.0012103375527, +0.0004829113924, +0.0000514767932, + +0.0001672995781, +0.0005666666667, -0.0004377637131, -0.0018090717300, + -0.0017833333333, -0.0011331223629, -0.0014808016878, -0.0007791139241, + +0.0009272151899, +0.0026782700422, +0.0020474683544, -0.0002639240506, + -0.0009850210970, -0.0005021097046, -0.0004506329114, -0.0004185654008, + +0.0001286919831, +0.0015259493671, +0.0018864978903, +0.0008691983122, + -0.0005537974684, -0.0020924050633, -0.0022147679325, -0.0012618143460, + -0.0004185654008, +0.0010816455696, +0.0021310126582, +0.0005858649789, + -0.0008434599156, -0.0001738396624, +0.0003282700422, +0.0000966244726, + +0.0005149789030, +0.0012168776371, +0.0009658227848, +0.0000514767932, + -0.0006696202532, -0.0008691983122, -0.0006373417722, -0.0002510548523, + +0.0000194092827, +0.0000837552743, -0.0008883966245, -0.0017383966245, + -0.0009012658228, -0.0000451476793, +0.0005278481013, +0.0018350210970, + +0.0026525316456, +0.0015130801688, +0.0003282700422, -0.0004443037975, + -0.0009915611814, -0.0016094936709, -0.0015451476793, -0.0001738396624, + +0.0008434599156, +0.0003411392405, -0.0000900843882, -0.0004829113924, + -0.0009141350211, -0.0007082278481, -0.0007919831224, -0.0010816455696, + -0.0005278481013, +0.0007662447257, +0.0008563291139, -0.0003411392405, + -0.0004248945148, -0.0003025316456, -0.0009850210970, -0.0007016877637, + +0.0008369198312, +0.0013069620253, +0.0010301687764, +0.0010107594937, + +0.0009400843882, -0.0006373417722, -0.0022276371308, -0.0018928270042, + -0.0006502109705, +0.0000643459916, -0.0005278481013, -0.0011654008439, + +0.0000194092827, +0.0011396624473, +0.0007791139241, -0.0003605485232, + -0.0008949367089, -0.0006310126582, -0.0002575949367, +0.0004957805907, + +0.0018542194093, +0.0021696202532, +0.0006630801688, -0.0022213080169, + -0.0027748945148, -0.0005987341772, +0.0007983122363, +0.0007791139241, + +0.0000000000000, -0.0003154008439, +0.0002381856540, +0.0001995780591, + -0.0003734177215, -0.0008883966245, -0.0015388185654, -0.0013135021097, + +0.0003734177215, +0.0011396624473, +0.0000772151899, -0.0007016877637, + -0.0008369198312, -0.0009206751055, -0.0007468354430, -0.0001609704641, + +0.0013392405063, +0.0024981012658, +0.0019765822785, +0.0008755274262, + -0.0003282700422, -0.0010107594937, -0.0003670886076, +0.0006759493671, + +0.0003670886076, -0.0000322784810, +0.0002767932489, +0.0001738396624, + +0.0000386075949, +0.0000772151899, -0.0000128691983, -0.0000322784810, + +0.0001094936709, +0.0003670886076, +0.0004635021097, +0.0006824894515, + +0.0009529535865, +0.0004829113924, -0.0003025316456, -0.0006759493671, + -0.0005086497890, -0.0000580168776, +0.0003734177215, +0.0014936708861, + +0.0016031645570, +0.0007662447257, +0.0004443037975, +0.0004056962025, + +0.0003670886076, +0.0004892405063, +0.0005021097046, -0.0000772151899, + -0.0012360759494, -0.0009400843882, +0.0001672995781, -0.0002253164557, + -0.0006244725738, +0.0001481012658, +0.0005215189873, +0.0003411392405, + +0.0003991561181, +0.0002704641350, -0.0000514767932, +0.0003411392405, + +0.0010044303797, +0.0010236286920, +0.0001352320675, -0.0004957805907, + -0.0000514767932, +0.0005795358650, +0.0002253164557, -0.0003734177215, + -0.0003605485232, +0.0001932489451, +0.0004763713080, +0.0003670886076, + -0.0003605485232, -0.0011525316456, -0.0009464135021, +0.0000000000000, + +0.0003605485232, -0.0001029535865, -0.0001609704641, +0.0000000000000, + -0.0000322784810, +0.0000386075949, -0.0001672995781, -0.0009915611814, + -0.0011654008439, -0.0010622362869, -0.0007405063291, -0.0004120253165, + +0.0002381856540, +0.0010172995781, +0.0010044303797, -0.0000065400844, + -0.0007725738397, -0.0005215189873, -0.0003154008439, -0.0003025316456, + +0.0005278481013, +0.0007210970464, -0.0003476793249, -0.0009978902954, + -0.0014550632911, -0.0016611814346, -0.0010364978903, -0.0004185654008, + +0.0001415611814, +0.0003476793249, +0.0004957805907, +0.0008177215190, + +0.0000257383966, -0.0010172995781, -0.0002833333333, +0.0003928270042, + +0.0004120253165, +0.0005666666667, +0.0004377637131, +0.0000128691983, + +0.0000514767932, +0.0004185654008, +0.0005601265823, -0.0001801687764, + -0.0005924050633, +0.0000837552743, +0.0004763713080, +0.0000514767932, + -0.0001867088608, -0.0003862869198, +0.0000194092827, +0.0006502109705, + +0.0002447257384, +0.0004377637131, +0.0013327004219, +0.0010107594937, + -0.0001223628692, -0.0012103375527, -0.0013521097046, -0.0011525316456, + -0.0011588607595, -0.0002318565401, +0.0007533755274, +0.0006310126582, + +0.0001995780591, +0.0000900843882, -0.0001738396624, -0.0006116033755, + -0.0005537974684, -0.0001223628692, +0.0001867088608, +0.0004120253165, + -0.0000514767932, -0.0007597046414, -0.0009592827004, -0.0009141350211, + -0.0002962025316, +0.0003219409283, +0.0003090717300, +0.0003991561181, + +0.0003476793249, -0.0002833333333, -0.0002575949367, +0.0005407172996, + +0.0008626582278, +0.0007145569620, +0.0003411392405, -0.0001609704641, + -0.0006438818565, -0.0001415611814, +0.0001801687764, -0.0002124472574, + -0.0002767932489, -0.0000065400844, +0.0000708860759, +0.0007210970464, + +0.0008497890295, +0.0004377637131, +0.0002639240506, +0.0001029535865, + -0.0002962025316, -0.0007274261603, -0.0004314345992, +0.0006567510549, + +0.0008434599156, +0.0000966244726, -0.0002318565401, -0.0000966244726, + -0.0003154008439, -0.0000194092827, +0.0004763713080, +0.0003090717300, + +0.0002896624473, +0.0006438818565, +0.0004120253165, +0.0000643459916, + +0.0000451476793, +0.0000580168776, -0.0004248945148, -0.0004957805907, + +0.0005666666667, +0.0008883966245, -0.0002639240506, -0.0003282700422, + +0.0001158227848, +0.0001609704641, -0.0000451476793, +0.0000837552743, + +0.0004571729958, +0.0001995780591, -0.0004957805907, -0.0003928270042, + +0.0000000000000, +0.0001158227848, -0.0001867088608, -0.0004443037975, + -0.0003282700422, -0.0003799578059, -0.0000966244726, +0.0003219409283, + +0.0003348101266, +0.0000194092827, -0.0003282700422, -0.0003670886076, + -0.0001223628692, +0.0000708860759, +0.0007210970464, +0.0008111814346, + -0.0005343881857, -0.0015966244726, -0.0013263713080, -0.0008755274262, + -0.0005858649789, -0.0000257383966, +0.0006630801688, +0.0007854430380, + +0.0006502109705, +0.0005149789030, +0.0005149789030, +0.0001158227848, + -0.0005086497890, -0.0006888185654, -0.0003862869198, -0.0004185654008, + -0.0004443037975, -0.0002124472574, +0.0005086497890, +0.0006373417722, + -0.0003540084388, -0.0002639240506, +0.0013778481013, +0.0015194092827, + +0.0001609704641, -0.0004120253165, -0.0000128691983, -0.0002639240506, + -0.0006888185654, -0.0006696202532, -0.0006244725738, -0.0010107594937, + -0.0007405063291, +0.0003540084388, +0.0012940928270, +0.0010301687764, + +0.0005021097046, -0.0000257383966, -0.0003991561181, -0.0002318565401, + +0.0004892405063, +0.0007533755274, +0.0003411392405, -0.0004314345992, + -0.0007339662447, +0.0001738396624, +0.0009978902954, +0.0008434599156, + +0.0001029535865, -0.0009012658228, -0.0012746835443, -0.0010559071730, + -0.0005666666667, +0.0003348101266, +0.0003670886076, -0.0001801687764, + -0.0001158227848, +0.0001481012658, +0.0006310126582, +0.0008369198312, + +0.0006759493671, +0.0009141350211, +0.0011588607595, +0.0008305907173, + +0.0000000000000, -0.0003862869198, -0.0002318565401, -0.0002896624473, + -0.0007210970464, -0.0006953586498, -0.0002833333333, +0.0003476793249, + +0.0004571729958, +0.0000322784810, -0.0003282700422, -0.0001415611814, + +0.0004957805907, +0.0011911392405, +0.0009915611814, +0.0004443037975, + -0.0001544303797, -0.0000514767932, +0.0004377637131, +0.0001158227848, + -0.0004248945148, +0.0003282700422, +0.0007016877637, +0.0001352320675, + -0.0002253164557, +0.0003862869198, +0.0012877637131, +0.0011396624473, + +0.0003282700422, +0.0000900843882, -0.0003411392405, -0.0006438818565, + -0.0007533755274, -0.0009786919831, -0.0005924050633, +0.0002575949367, + +0.0004700421941, +0.0003282700422, +0.0004314345992, +0.0005795358650, + -0.0001223628692, -0.0009978902954, -0.0010044303797, -0.0002767932489, + +0.0008369198312, +0.0011845991561, +0.0007016877637, +0.0001867088608, + -0.0002896624473, -0.0001029535865, +0.0003154008439, -0.0001223628692, + -0.0004829113924, -0.0003734177215, -0.0006116033755, -0.0007339662447, + -0.0002189873418, -0.0000772151899, -0.0005407172996, -0.0001995780591, + +0.0002124472574, +0.0000000000000, +0.0005278481013, +0.0013455696203, + +0.0012168776371, +0.0003670886076, +0.0001029535865, +0.0003154008439, + +0.0000322784810, -0.0005021097046, -0.0004892405063, -0.0004377637131, + -0.0003348101266, -0.0004829113924, -0.0005407172996, -0.0004957805907, + -0.0006567510549, -0.0005537974684, -0.0001352320675, +0.0005215189873, + +0.0014485232068, +0.0007145569620, -0.0005666666667, -0.0007016877637, + -0.0003605485232, -0.0002447257384, +0.0000386075949, -0.0000708860759, + -0.0005407172996, -0.0006824894515, -0.0003025316456, -0.0004248945148, + -0.0004443037975, -0.0002061181435, -0.0000837552743, -0.0002189873418, + -0.0003025316456, -0.0000643459916, +0.0002189873418, +0.0001995780591, + +0.0002510548523, +0.0002061181435, -0.0003411392405, -0.0012554852321, + -0.0011717299578, -0.0005537974684, +0.0000322784810, +0.0009206751055, + +0.0012554852321, +0.0007983122363, +0.0002061181435, -0.0003991561181, + -0.0007597046414, -0.0006630801688, -0.0002833333333, +0.0000128691983, + +0.0004700421941, +0.0005537974684, +0.0000772151899, -0.0001801687764, + -0.0003154008439, -0.0004571729958, -0.0001544303797, +0.0000386075949, + +0.0001223628692, +0.0005278481013, +0.0005472573840, +0.0003282700422, + +0.0001738396624, +0.0000772151899, -0.0000128691983, +0.0002575949367, + +0.0002318565401, -0.0000900843882, -0.0004957805907, -0.0005472573840, + -0.0004248945148, -0.0001738396624, +0.0003282700422, +0.0006438818565, + +0.0000000000000, -0.0002189873418, -0.0001932489451, -0.0005666666667, + -0.0005343881857, +0.0001094936709, +0.0003928270042, +0.0001286919831, + +0.0000322784810, +0.0004377637131, -0.0001094936709, -0.0005729957806, + +0.0000386075949, +0.0005795358650, +0.0000643459916, -0.0003862869198, + -0.0004635021097, -0.0005343881857, -0.0008820675105, -0.0009400843882, + -0.0003991561181, +0.0000322784810, -0.0001801687764, -0.0001995780591, + +0.0006116033755, +0.0012683544304, +0.0007725738397, -0.0001544303797, + -0.0003862869198, -0.0000966244726, -0.0005278481013, -0.0008755274262, + -0.0004571729958, +0.0000900843882, +0.0003928270042, +0.0002962025316, + -0.0000772151899, +0.0001029535865, +0.0007405063291, +0.0007210970464, + +0.0002381856540, -0.0005858649789, -0.0008820675105, -0.0004056962025, + +0.0001158227848, +0.0004763713080, +0.0004571729958, -0.0002189873418, + -0.0004185654008, +0.0000451476793, +0.0004377637131, +0.0004829113924, + +0.0006116033755, +0.0008691983122, +0.0007339662447, -0.0000837552743, + -0.0005666666667, -0.0004763713080, +0.0000772151899, +0.0006181434599, + +0.0009721518987, +0.0006759493671, -0.0000322784810, -0.0002447257384, + +0.0005343881857, +0.0007274261603, +0.0002639240506, -0.0000386075949, + +0.0001094936709, +0.0001738396624, +0.0000257383966, -0.0000643459916, + +0.0000643459916, -0.0000772151899, -0.0001352320675, -0.0001738396624, + +0.0000128691983, +0.0002639240506, -0.0000643459916, -0.0007533755274, + -0.0006116033755, +0.0004377637131, +0.0009915611814, +0.0006824894515, + +0.0006373417722, +0.0006824894515, +0.0004957805907, +0.0001544303797, + -0.0005021097046, -0.0008755274262, -0.0006181434599, -0.0005086497890, + -0.0003670886076, +0.0000772151899, +0.0007405063291, +0.0011717299578, + +0.0009141350211, +0.0002704641350, -0.0004185654008, -0.0009012658228, + -0.0012040084388, -0.0010687763713, -0.0005086497890, +0.0001158227848, + +0.0002124472574, +0.0001352320675, -0.0001995780591, -0.0002061181435, + -0.0000257383966, -0.0000065400844, +0.0003025316456, +0.0008434599156, + +0.0005086497890, +0.0001932489451, -0.0000772151899, -0.0004763713080, + -0.0005858649789, -0.0006116033755, -0.0008177215190, -0.0002061181435, + +0.0006373417722, +0.0009978902954, +0.0007210970464, +0.0003540084388, + -0.0001672995781, -0.0004056962025, -0.0003025316456, +0.0000065400844, + +0.0002381856540, +0.0001801687764, -0.0003219409283, -0.0002833333333, + +0.0003540084388, +0.0003862869198, -0.0003928270042, -0.0008369198312, + -0.0004763713080, -0.0000451476793, +0.0003282700422, +0.0009272151899, + +0.0011459915612, +0.0009786919831, +0.0004892405063, -0.0005407172996, + -0.0013455696203, -0.0013778481013, -0.0008434599156, -0.0000643459916, + +0.0004700421941, +0.0008111814346, +0.0009592827004, +0.0008563291139, + +0.0004185654008, -0.0003411392405, -0.0008626582278, -0.0009272151899, + -0.0007210970464, -0.0005666666667, -0.0002896624473, +0.0000257383966, + +0.0002510548523, +0.0003154008439, +0.0004443037975, +0.0003862869198, + +0.0004829113924, +0.0003348101266, -0.0000708860759, -0.0004700421941, + -0.0003348101266, -0.0000966244726, -0.0002189873418, -0.0006244725738, + -0.0007983122363, -0.0007919831224, -0.0000065400844, +0.0008048523207, + +0.0009721518987, +0.0005729957806, +0.0002704641350, +0.0002124472574, + +0.0001867088608, -0.0002833333333, -0.0003282700422, +0.0000000000000, + -0.0001223628692, -0.0006116033755, -0.0007725738397, -0.0005343881857, + +0.0000837552743, +0.0004829113924, +0.0008820675105, +0.0008949367089, + +0.0003090717300, +0.0000580168776, +0.0002447257384, +0.0001481012658, + +0.0002189873418, +0.0001867088608, -0.0001995780591, -0.0005343881857, + -0.0008949367089, -0.0010751054852, -0.0005278481013, +0.0002896624473, + +0.0004892405063, +0.0005987341772, +0.0008240506329, +0.0006696202532, + +0.0001544303797, -0.0001223628692, -0.0000837552743, +0.0003540084388, + +0.0004957805907, -0.0000837552743, -0.0005666666667, -0.0001867088608, + -0.0003799578059, -0.0005924050633, -0.0000322784810, -0.0001481012658, + -0.0008177215190, -0.0003540084388, +0.0004763713080, +0.0008691983122, + +0.0003862869198, -0.0003090717300, -0.0006438818565, -0.0005278481013, + -0.0002575949367, +0.0001158227848, +0.0001672995781, +0.0001352320675, + +0.0002124472574, +0.0001544303797, -0.0002510548523, -0.0004314345992, + -0.0003090717300, -0.0000065400844, -0.0001672995781, -0.0003348101266, + -0.0000514767932, +0.0002381856540, +0.0002061181435, +0.0001029535865, + -0.0001867088608, -0.0006373417722, -0.0008883966245, -0.0003154008439, + +0.0001995780591, +0.0002896624473, +0.0005343881857, +0.0004120253165, + -0.0000386075949, -0.0001609704641, -0.0001223628692, -0.0001223628692, + -0.0000580168776, +0.0000451476793, +0.0004248945148, +0.0004635021097, + +0.0001672995781, -0.0002833333333, -0.0006181434599, -0.0007662447257, + -0.0007983122363, -0.0004571729958, +0.0004314345992, +0.0009915611814, + +0.0008949367089, +0.0005086497890, -0.0001352320675, -0.0008883966245, + -0.0007468354430, -0.0001544303797, +0.0005343881857, +0.0007016877637, + +0.0003476793249, +0.0000322784810, -0.0001223628692, -0.0006244725738, + -0.0008177215190, -0.0006502109705, -0.0002447257384, +0.0001352320675, + +0.0006116033755, +0.0007405063291, +0.0005472573840, -0.0000065400844, + -0.0008369198312, -0.0015002109705, -0.0011782700422, -0.0002381856540, + +0.0003670886076, +0.0002767932489, +0.0003862869198, +0.0005472573840, + +0.0001352320675, -0.0004571729958, -0.0005858649789, -0.0001223628692, + -0.0001801687764, -0.0006567510549, -0.0004120253165, +0.0002639240506, + +0.0004829113924, +0.0002253164557, +0.0000837552743, +0.0001995780591, + -0.0002124472574, -0.0008111814346, -0.0005149789030, +0.0006310126582, + +0.0014808016878, +0.0013907172996, +0.0008369198312, +0.0002767932489, + -0.0003219409283, -0.0003670886076, -0.0002061181435, -0.0003090717300, + -0.0003154008439, +0.0001738396624, +0.0004892405063, +0.0004763713080, + +0.0003025316456, -0.0000194092827, -0.0004120253165, -0.0000708860759, + +0.0002896624473, +0.0005086497890, +0.0007854430380, +0.0009592827004, + +0.0007983122363, +0.0007210970464, +0.0003154008439, -0.0000900843882, + -0.0001801687764, -0.0000643459916, -0.0002124472574, -0.0001995780591, + +0.0000837552743, +0.0004185654008, +0.0005924050633, +0.0003090717300, + -0.0002639240506, -0.0004185654008, -0.0003928270042, -0.0003991561181, + +0.0001286919831, +0.0009786919831, +0.0011331223629, +0.0008305907173, + +0.0004635021097, -0.0001286919831, -0.0008369198312, -0.0011331223629, + -0.0008883966245, -0.0003282700422, +0.0001481012658, +0.0000900843882, + +0.0000194092827, +0.0002575949367, +0.0001094936709, -0.0002124472574, + -0.0002189873418, -0.0005472573840, -0.0005021097046, +0.0003090717300, + +0.0014035864979, +0.0016740506329, +0.0005795358650, -0.0005729957806, + -0.0001932489451, +0.0000708860759, -0.0004829113924, -0.0009400843882, + -0.0004700421941, +0.0006116033755, +0.0013907172996, +0.0007468354430, + -0.0003862869198, -0.0009721518987, -0.0007662447257, -0.0000451476793, + +0.0007339662447, +0.0007791139241, +0.0003090717300, -0.0001932489451, + -0.0001544303797, -0.0004377637131, -0.0006181434599, +0.0005729957806, + +0.0017833333333, +0.0013327004219, +0.0003928270042, +0.0002510548523, + +0.0003154008439, +0.0000514767932, -0.0004892405063, -0.0004829113924, + -0.0001609704641, -0.0005021097046, -0.0009141350211, -0.0000386075949, + +0.0013135021097, +0.0011267932489, -0.0001481012658, -0.0006888185654, + -0.0009078059072, -0.0007597046414, +0.0000194092827, +0.0002575949367, + +0.0002189873418, +0.0006696202532, +0.0006953586498, -0.0000194092827, + -0.0013135021097, -0.0018219409283, -0.0004506329114, +0.0009464135021, + +0.0000194092827, -0.0012554852321, -0.0009464135021, +0.0000000000000, + +0.0002189873418, +0.0000128691983, -0.0003219409283, -0.0003540084388, + -0.0004763713080, -0.0003799578059, -0.0001801687764, -0.0000580168776, + -0.0001223628692, +0.0000000000000, -0.0001158227848, -0.0002061181435, + -0.0004957805907, -0.0004377637131, -0.0000966244726, +0.0003605485232, + +0.0003348101266, -0.0007983122363, -0.0016223628692, -0.0008048523207, + -0.0000128691983, +0.0001481012658, +0.0004571729958, +0.0000000000000, + -0.0008755274262, -0.0009335443038, -0.0005987341772, -0.0008626582278, + -0.0008177215190, +0.0000772151899, +0.0014873417722, +0.0019443037975, + +0.0010236286920, -0.0003025316456, -0.0004763713080, -0.0000322784810, + +0.0004248945148, +0.0008755274262, +0.0009335443038, +0.0005215189873, + -0.0000257383966, -0.0007854430380, -0.0011010548523, -0.0005537974684, + +0.0002510548523, +0.0003734177215, -0.0000386075949, -0.0002575949367, + -0.0001995780591, +0.0000000000000, +0.0007339662447, +0.0010622362869, + +0.0008177215190, +0.0001544303797, -0.0006567510549, -0.0010107594937, + -0.0004829113924, +0.0000772151899, +0.0001609704641, -0.0000128691983, + -0.0000580168776, -0.0002447257384, -0.0006310126582, -0.0008497890295, + -0.0008177215190, -0.0003991561181, +0.0003540084388, +0.0005472573840, + +0.0001801687764, +0.0002318565401, +0.0006696202532, +0.0005343881857, + -0.0001544303797, -0.0006052742616, -0.0005729957806, -0.0004120253165, + -0.0004120253165, -0.0003799578059, -0.0002510548523, +0.0002767932489, + +0.0007145569620, +0.0010364978903, +0.0010816455696, +0.0006502109705, + +0.0002061181435, +0.0000900843882, -0.0002510548523, -0.0001995780591, + +0.0000257383966, -0.0001352320675, -0.0001286919831, +0.0002639240506, + +0.0002447257384, -0.0000322784810, +0.0001286919831, +0.0002962025316, + -0.0001609704641, +0.0000386075949, +0.0005278481013, +0.0004377637131, + +0.0002381856540, +0.0002896624473, +0.0003799578059, +0.0008434599156, + +0.0005086497890, -0.0004185654008, -0.0005086497890, +0.0000643459916, + +0.0000000000000, -0.0004248945148, -0.0003991561181, -0.0002833333333, + -0.0003799578059, -0.0003154008439, +0.0000128691983, +0.0003348101266, + +0.0006888185654, +0.0009721518987, +0.0010751054852, +0.0009978902954, + +0.0005537974684, -0.0000900843882, +0.0000065400844, +0.0001867088608, + -0.0004185654008, -0.0008240506329, -0.0001867088608, +0.0002896624473, + +0.0001158227848, -0.0004700421941, -0.0007725738397, -0.0004314345992, + +0.0001223628692, +0.0000128691983, -0.0000580168776, +0.0003219409283, + +0.0005795358650, +0.0001352320675, -0.0002447257384, -0.0003670886076, + -0.0001094936709, +0.0002447257384, +0.0000514767932, -0.0000257383966, + +0.0007016877637, +0.0008563291139, +0.0003411392405, +0.0001286919831, + +0.0002510548523, +0.0002124472574, -0.0002704641350, -0.0012360759494, + -0.0013198312236, -0.0001801687764, +0.0009335443038, +0.0010493670886, + +0.0005149789030, -0.0000194092827, -0.0001738396624, -0.0003282700422, + -0.0003605485232, +0.0004248945148, +0.0011267932489, +0.0010364978903, + +0.0005987341772, +0.0002510548523, -0.0002575949367, -0.0004571729958, + -0.0002447257384, -0.0001352320675, -0.0005472573840, -0.0006310126582, + -0.0002447257384, +0.0000580168776, -0.0001481012658, -0.0001672995781, + -0.0000386075949, -0.0001352320675, -0.0006373417722, -0.0007597046414, + -0.0004443037975, -0.0000580168776, +0.0000386075949, +0.0002061181435, + +0.0003282700422, +0.0006310126582, +0.0007662447257, +0.0002704641350, + -0.0004443037975, -0.0005407172996, -0.0006696202532, -0.0008883966245, + -0.0006567510549, +0.0000000000000, +0.0007016877637, +0.0010107594937, + +0.0005472573840, -0.0002253164557, -0.0009658227848, -0.0013263713080, + -0.0008949367089, +0.0001286919831, +0.0008755274262, +0.0010816455696, + +0.0008883966245, +0.0001223628692, -0.0004377637131, -0.0003154008439, + -0.0001415611814, -0.0003991561181, -0.0004571729958, -0.0004248945148, + -0.0004314345992, -0.0003025316456, +0.0002510548523, +0.0005472573840, + +0.0006502109705, +0.0002962025316, -0.0003670886076, -0.0005987341772, + -0.0001223628692, +0.0001544303797, +0.0000386075949, -0.0004957805907, + -0.0006824894515, -0.0004443037975, +0.0000322784810, +0.0003799578059, + +0.0005472573840, +0.0004571729958, +0.0005407172996, +0.0003991561181, + +0.0003282700422, +0.0001672995781, -0.0002510548523, -0.0005729957806, + -0.0004506329114, -0.0001995780591, +0.0000386075949, +0.0000708860759, + +0.0000386075949, -0.0000386075949, +0.0000580168776, +0.0000708860759, + +0.0000900843882, +0.0006438818565, +0.0010430379747, +0.0006438818565, + -0.0000580168776, -0.0004829113924, -0.0004635021097, -0.0002639240506, + -0.0001867088608, -0.0001352320675, -0.0003411392405, -0.0004443037975, + -0.0007082278481, -0.0005472573840, +0.0003411392405, +0.0010301687764, + +0.0009012658228, +0.0003862869198, -0.0002318565401, -0.0002767932489, + -0.0000643459916, +0.0001932489451, +0.0001932489451, -0.0001094936709, + -0.0004506329114, -0.0003025316456, -0.0000065400844, +0.0002124472574, + -0.0000708860759, -0.0001932489451, -0.0000451476793, +0.0003928270042, + +0.0005666666667, +0.0001544303797, -0.0001801687764, +0.0003154008439, + +0.0003799578059, -0.0002381856540, -0.0005795358650, -0.0004120253165, + -0.0002704641350, -0.0000257383966, +0.0004314345992, +0.0006502109705, + +0.0005021097046, +0.0002124472574, -0.0001995780591, -0.0005149789030, + -0.0001481012658, +0.0003540084388, +0.0002896624473, -0.0001352320675, + -0.0002896624473, -0.0003219409283, -0.0005987341772, -0.0008949367089, + -0.0005924050633, -0.0000772151899, +0.0002447257384, +0.0004314345992, + +0.0006310126582, +0.0003219409283, -0.0001544303797, -0.0003411392405, + +0.0001932489451, +0.0004248945148, +0.0002767932489, -0.0000194092827, + -0.0001352320675, -0.0004443037975, -0.0006630801688, -0.0004377637131, + +0.0000708860759, +0.0002510548523, +0.0003411392405, +0.0001223628692, + -0.0000322784810, +0.0001415611814, +0.0003799578059, +0.0004571729958, + +0.0004185654008, +0.0000580168776, -0.0002639240506, -0.0004185654008, + -0.0002061181435, -0.0001223628692, -0.0002189873418, +0.0000000000000, + +0.0001801687764, +0.0002124472574, +0.0001672995781, +0.0000065400844, + -0.0001158227848, -0.0001609704641, -0.0003670886076, -0.0001672995781, + +0.0000643459916, -0.0001609704641, -0.0004248945148, -0.0001352320675, + +0.0001158227848, +0.0001286919831, -0.0000643459916, -0.0000580168776, + +0.0000772151899, -0.0000257383966, -0.0004443037975, -0.0003799578059, + -0.0002318565401, +0.0001094936709, +0.0002962025316, +0.0000580168776, + -0.0000900843882, +0.0001867088608, +0.0000580168776, -0.0002124472574, + -0.0002189873418, +0.0000643459916, +0.0001481012658, +0.0002447257384, + +0.0003090717300, +0.0000708860759, -0.0002124472574, -0.0003862869198, + -0.0007210970464, -0.0006438818565, -0.0001094936709, -0.0000194092827, + -0.0003605485232, -0.0003476793249, +0.0002767932489, +0.0007210970464, + +0.0006052742616, +0.0002575949367, -0.0000065400844, -0.0003282700422, + -0.0004957805907, -0.0003540084388, +0.0001544303797, +0.0005601265823, + +0.0007210970464, +0.0004763713080, +0.0000966244726, -0.0001672995781, + -0.0000386075949, -0.0000772151899, -0.0004056962025, -0.0007533755274, + -0.0004377637131, +0.0001609704641, +0.0005472573840, +0.0004506329114, + +0.0002575949367, -0.0000322784810, -0.0000580168776, +0.0002189873418, + +0.0003476793249, -0.0001481012658, -0.0004377637131, -0.0003282700422, + -0.0001029535865, +0.0000386075949, +0.0002833333333, +0.0005472573840, + +0.0006438818565, +0.0005601265823, +0.0002896624473, -0.0001094936709, + -0.0005021097046, -0.0003928270042, +0.0003605485232, +0.0007597046414, + +0.0003411392405, +0.0000322784810, -0.0003411392405, -0.0007791139241, + -0.0007082278481, -0.0001352320675, +0.0003928270042, +0.0008626582278, + +0.0008691983122, +0.0007016877637, +0.0003991561181, +0.0000643459916, + -0.0003540084388, -0.0003862869198, -0.0001867088608, +0.0001672995781, + +0.0003219409283, +0.0001352320675, -0.0001029535865, -0.0001094936709, + -0.0001544303797, -0.0000580168776, -0.0002575949367, -0.0003799578059, + +0.0001672995781, +0.0007274261603, +0.0005924050633, +0.0004571729958, + +0.0003540084388, -0.0000643459916, -0.0003670886076, -0.0000514767932, + +0.0001286919831, +0.0000194092827, +0.0002639240506, +0.0004056962025, + +0.0000580168776, -0.0001867088608, +0.0000000000000, +0.0002704641350, + +0.0003090717300, +0.0000837552743, +0.0000514767932, -0.0000837552743, + -0.0002510548523, -0.0003282700422, -0.0002704641350, -0.0003476793249, + -0.0002381856540, -0.0000900843882, -0.0000257383966, -0.0001801687764, + -0.0000065400844, +0.0003025316456, +0.0001738396624, -0.0003090717300, + -0.0003862869198, -0.0003411392405, -0.0001672995781, +0.0002833333333, + +0.0005149789030, +0.0003928270042, +0.0005601265823, +0.0005149789030, + +0.0002639240506, -0.0001738396624, -0.0004892405063, -0.0004120253165, + -0.0002767932489, -0.0005729957806, -0.0006373417722, -0.0003670886076, + +0.0000065400844, +0.0002318565401, +0.0000966244726, +0.0000065400844, + +0.0002447257384, +0.0004506329114, +0.0000772151899, -0.0001801687764, + -0.0001029535865, +0.0000643459916, +0.0001544303797, +0.0001995780591, + -0.0000451476793, -0.0001415611814, -0.0001672995781, -0.0001094936709, + -0.0000708860759, -0.0000194092827, -0.0000772151899, +0.0000451476793, + +0.0002704641350, +0.0003734177215, -0.0000900843882, -0.0003928270042, + -0.0002447257384, +0.0000128691983, -0.0000772151899, -0.0003219409283, + -0.0004635021097, -0.0002253164557, -0.0002061181435, -0.0001223628692, + +0.0001672995781, +0.0002962025316, +0.0003154008439, +0.0004443037975, + +0.0003348101266, +0.0002061181435, +0.0000966244726, -0.0001738396624, + -0.0003154008439, -0.0000580168776, +0.0002510548523, +0.0001995780591, + -0.0000322784810, -0.0001672995781, -0.0000514767932, -0.0001029535865, + -0.0003862869198, -0.0004314345992, +0.0000257383966, +0.0001932489451, + +0.0001481012658, +0.0000000000000, -0.0001544303797, -0.0002767932489, + -0.0001609704641, -0.0000837552743, +0.0002381856540, +0.0004763713080, + +0.0005795358650, +0.0004443037975, +0.0002189873418, -0.0000900843882, + -0.0001738396624, -0.0002189873418, -0.0002381856540, -0.0002767932489, + -0.0001609704641, -0.0001609704641, -0.0001029535865, -0.0001481012658, + -0.0002896624473, -0.0001609704641, +0.0002767932489, +0.0003799578059, + +0.0002253164557, -0.0000451476793, -0.0004248945148, -0.0003734177215, + -0.0000386075949, +0.0000386075949, +0.0000194092827, +0.0000772151899, + -0.0001738396624, -0.0004700421941, -0.0005407172996, -0.0002510548523, + +0.0000772151899, +0.0001415611814, -0.0002253164557, -0.0002833333333, + -0.0001029535865, +0.0000194092827, +0.0000514767932, +0.0004506329114, + +0.0006244725738, +0.0004635021097, +0.0001352320675, -0.0001995780591, + -0.0007274261603, -0.0008434599156, -0.0003991561181, +0.0002575949367, + +0.0006373417722, +0.0007725738397, +0.0006052742616, +0.0002704641350, + -0.0002061181435, -0.0002962025316, +0.0001672995781, +0.0006373417722, + +0.0005537974684, +0.0001609704641, -0.0001609704641, -0.0002124472574, + -0.0001995780591, -0.0004506329114, -0.0005278481013, -0.0003862869198, + -0.0001481012658, +0.0002962025316, +0.0008497890295, +0.0007597046414, + +0.0000643459916, -0.0004763713080, -0.0002704641350, +0.0000900843882, + +0.0003282700422, +0.0003476793249, +0.0003348101266, +0.0002061181435, + -0.0000451476793, -0.0003928270042, -0.0001672995781, +0.0001158227848, + +0.0001481012658, -0.0000194092827, -0.0001544303797, -0.0003282700422, + -0.0001481012658, +0.0001094936709, +0.0002767932489, +0.0001286919831, + -0.0002896624473, -0.0003219409283, +0.0003025316456, +0.0003799578059, + -0.0000386075949, -0.0002189873418, -0.0001415611814, +0.0001932489451, + +0.0003090717300, +0.0000451476793, +0.0000900843882, +0.0001932489451, + -0.0001352320675, -0.0002639240506, -0.0001415611814, +0.0001415611814, + +0.0001801687764, +0.0000065400844, +0.0000451476793, +0.0004957805907, + +0.0006052742616, +0.0003862869198, +0.0000643459916, -0.0001223628692, + -0.0005278481013, -0.0006052742616, -0.0003025316456, -0.0000128691983, + -0.0001223628692, -0.0001286919831, +0.0000000000000, +0.0001738396624, + +0.0000580168776, +0.0000900843882, +0.0002189873418, +0.0001094936709, + -0.0001738396624, -0.0000257383966, +0.0002447257384, +0.0001094936709, + -0.0003605485232, -0.0004443037975, -0.0001029535865, +0.0001995780591, + +0.0002061181435, +0.0000065400844, -0.0000966244726, -0.0001223628692, + -0.0001738396624, -0.0001867088608, +0.0000065400844, +0.0000580168776, + +0.0002124472574, +0.0004185654008, +0.0005537974684, +0.0003090717300, + +0.0001352320675, +0.0000000000000, -0.0003025316456, -0.0007854430380, + -0.0005215189873, -0.0000257383966, +0.0002124472574, +0.0001544303797, + +0.0001094936709, +0.0000128691983, +0.0001672995781, +0.0001415611814, + -0.0000194092827, -0.0002253164557, +0.0000128691983, +0.0003605485232, + +0.0003090717300, -0.0001544303797, -0.0003476793249, -0.0003734177215, + -0.0003348101266, -0.0001415611814, +0.0002189873418, +0.0005086497890, + +0.0004120253165, +0.0002575949367, +0.0003154008439, +0.0002767932489, + +0.0000194092827, +0.0000194092827, -0.0000386075949, -0.0001932489451, + -0.0001672995781, +0.0001415611814, +0.0001415611814, +0.0000000000000, + -0.0001094936709, +0.0001867088608, +0.0003025316456, +0.0001481012658, + -0.0001867088608, -0.0001223628692, -0.0000194092827, -0.0000708860759, + -0.0003348101266, -0.0001544303797, +0.0000000000000, -0.0000451476793, + -0.0001995780591, -0.0000772151899, +0.0001738396624, +0.0004635021097, + +0.0005601265823, +0.0006052742616, +0.0002124472574, -0.0003476793249, + -0.0005666666667, -0.0003025316456, +0.0001223628692, +0.0003219409283, + +0.0001158227848, -0.0000772151899, -0.0001481012658, -0.0001738396624, + -0.0000966244726, -0.0000386075949, +0.0001738396624, +0.0002381856540, + +0.0001094936709, -0.0002061181435, -0.0002510548523, -0.0002124472574, + -0.0002767932489, -0.0002318565401, +0.0004314345992, +0.0006630801688, + +0.0003090717300, -0.0001672995781, -0.0001415611814, -0.0000580168776, + -0.0000065400844, -0.0001223628692, -0.0001094936709, -0.0001223628692, + +0.0000643459916, +0.0000837552743, -0.0001029535865, -0.0003476793249, + -0.0000708860759, +0.0002189873418, +0.0001932489451, +0.0000128691983, + +0.0000065400844, +0.0000128691983, -0.0000065400844, -0.0000966244726, + -0.0000772151899, -0.0000386075949, -0.0000708860759, -0.0001223628692, + -0.0002381856540, -0.0001223628692, -0.0001223628692, -0.0004248945148, + -0.0006116033755, -0.0000514767932, +0.0005924050633, +0.0008755274262, + +0.0006116033755, +0.0001932489451, -0.0004120253165, -0.0006824894515, + -0.0006759493671, -0.0003605485232, +0.0000322784810, +0.0003605485232, + +0.0000386075949, -0.0002896624473, -0.0002318565401, +0.0000837552743, + +0.0000708860759, +0.0000065400844, -0.0001415611814, -0.0000580168776, + +0.0000708860759, +0.0001544303797, +0.0001158227848, +0.0001544303797, + +0.0000708860759, -0.0000966244726, -0.0000708860759, +0.0000772151899, + +0.0000000000000, -0.0000580168776, +0.0000386075949, -0.0000837552743, + -0.0002253164557, -0.0002639240506, -0.0000772151899, +0.0000322784810, + +0.0000837552743, -0.0000514767932, -0.0000772151899, -0.0000772151899, + -0.0001158227848, -0.0002575949367, -0.0001867088608, -0.0001932489451, + +0.0001158227848, +0.0004443037975, +0.0005215189873, +0.0003799578059, + +0.0002510548523, -0.0001286919831, -0.0004248945148, -0.0005215189873, + -0.0002318565401, -0.0000514767932, +0.0000257383966, -0.0000386075949, + -0.0001029535865, -0.0000643459916, +0.0001609704641, +0.0002510548523, + +0.0000900843882, -0.0001932489451, -0.0001867088608, +0.0000451476793, + +0.0000000000000, -0.0001609704641, -0.0002639240506, -0.0002381856540, + -0.0001544303797, +0.0000322784810, +0.0001158227848, +0.0000708860759, + -0.0001544303797, -0.0001094936709, +0.0000451476793, +0.0002704641350, + +0.0002253164557, +0.0001672995781, +0.0001672995781, +0.0002575949367, + +0.0001481012658, +0.0000065400844, -0.0001352320675, -0.0000514767932, + -0.0000065400844, +0.0000322784810, -0.0002189873418, -0.0004506329114, + -0.0003282700422, -0.0000837552743, -0.0001415611814, -0.0001801687764, + -0.0001544303797, -0.0000966244726, -0.0000257383966, +0.0000451476793, + +0.0001672995781, +0.0002639240506, +0.0003154008439, +0.0002124472574, + +0.0000128691983, -0.0001286919831, +0.0000194092827, +0.0001158227848, + +0.0000451476793, -0.0000708860759, +0.0001094936709, +0.0002189873418, + +0.0001738396624, +0.0000386075949, +0.0000257383966, -0.0001544303797, + -0.0001609704641, -0.0000708860759, +0.0001932489451, +0.0002124472574, + +0.0001286919831, +0.0000966244726, +0.0000772151899, -0.0001995780591, + -0.0001801687764, +0.0000900843882, +0.0002447257384, +0.0001352320675, + +0.0001867088608, +0.0003476793249, +0.0003670886076, +0.0003540084388, + +0.0003090717300, +0.0001415611814, -0.0000386075949, -0.0001995780591, + -0.0003540084388, -0.0002704641350, +0.0000257383966, +0.0003734177215, + +0.0004185654008, +0.0003090717300, +0.0000128691983, -0.0003734177215, + -0.0007983122363, -0.0006310126582, -0.0000451476793, +0.0004635021097, + +0.0004056962025, +0.0002962025316, +0.0002318565401, +0.0002510548523, + +0.0000386075949, -0.0001609704641, -0.0002253164557, +0.0000386075949, + +0.0000900843882, -0.0000514767932, -0.0001995780591, -0.0002833333333, + -0.0004829113924, -0.0004248945148, -0.0002381856540, -0.0000643459916, + +0.0001352320675, +0.0003476793249, +0.0002962025316, +0.0000386075949, + -0.0000128691983, +0.0001801687764, +0.0003605485232, +0.0003991561181, + +0.0003799578059, +0.0000194092827, -0.0002833333333, -0.0005149789030, + -0.0005021097046, -0.0002962025316, +0.0001352320675, +0.0002704641350, + +0.0002896624473, +0.0001158227848, +0.0000194092827, -0.0001094936709, + +0.0000514767932, +0.0003411392405, +0.0004571729958, +0.0001029535865, + -0.0001995780591, -0.0003154008439, -0.0001738396624, -0.0000257383966, + -0.0000128691983, -0.0000837552743, +0.0000386075949, +0.0000386075949, + +0.0000194092827, +0.0000194092827, +0.0000451476793, +0.0001932489451, + +0.0001995780591, +0.0000065400844, +0.0000386075949, +0.0002447257384, + +0.0001995780591, +0.0000451476793, -0.0002189873418, -0.0003411392405, + -0.0004185654008, -0.0002061181435, -0.0000065400844, +0.0000451476793, + -0.0000643459916, -0.0000580168776, -0.0001995780591, +0.0000065400844, + +0.0002253164557, +0.0001609704641, -0.0000386075949, +0.0000708860759, + +0.0000514767932, -0.0000065400844, -0.0000772151899, +0.0000708860759, + -0.0000257383966, -0.0003282700422, -0.0004185654008, -0.0001544303797, + +0.0002189873418, +0.0005343881857, +0.0004892405063, +0.0002061181435, + -0.0000065400844, -0.0001867088608, -0.0003928270042, -0.0004248945148, + +0.0000065400844, +0.0002639240506, +0.0000966244726, -0.0000966244726, + +0.0001544303797, +0.0003734177215, +0.0002962025316, -0.0000257383966, + -0.0003605485232, -0.0007597046414, -0.0006244725738, -0.0000194092827, + +0.0005666666667, +0.0003862869198, +0.0000386075949, -0.0002896624473, + -0.0003540084388, -0.0001801687764, +0.0001352320675, +0.0001932489451, + +0.0001867088608, +0.0000451476793, -0.0001158227848, -0.0003348101266, + -0.0002575949367, -0.0000194092827, -0.0000643459916, -0.0000900843882, + +0.0001544303797, +0.0002253164557, +0.0000000000000, -0.0000451476793, + +0.0000000000000, -0.0000386075949, -0.0003154008439, -0.0004571729958, + -0.0002189873418, +0.0002704641350, +0.0003670886076, +0.0001932489451, + +0.0000194092827, +0.0001609704641, +0.0000837552743, -0.0001672995781, + -0.0004443037975, -0.0003799578059, -0.0001672995781, +0.0001609704641, + +0.0003348101266, +0.0004763713080, +0.0002896624473, +0.0001223628692, + -0.0000194092827, -0.0001094936709, -0.0000065400844, +0.0003411392405, + +0.0003025316456, -0.0001094936709, -0.0004957805907, -0.0004571729958, + -0.0000837552743, +0.0002124472574, +0.0003540084388, +0.0003282700422, + +0.0002253164557, +0.0000708860759, +0.0000257383966, -0.0001481012658, + -0.0001415611814, -0.0000772151899, -0.0000643459916, -0.0002767932489, + -0.0001544303797, -0.0000322784810, +0.0000580168776, +0.0000322784810, + +0.0000128691983, -0.0002575949367, -0.0004056962025, -0.0004700421941, + -0.0004377637131, -0.0004120253165, +0.0000451476793, +0.0005795358650, + +0.0007016877637, +0.0002639240506, -0.0001352320675, -0.0003154008439, + -0.0002381856540, -0.0002833333333, -0.0003348101266, -0.0000580168776, + +0.0002962025316, +0.0003991561181, +0.0003605485232, +0.0002896624473, + +0.0000194092827, -0.0001094936709, -0.0002639240506, -0.0004056962025, + -0.0005729957806, -0.0003348101266, +0.0001286919831, +0.0006888185654, + +0.0007339662447, +0.0004571729958, +0.0000643459916, +0.0001352320675, + +0.0002510548523, +0.0003670886076, +0.0002962025316, +0.0003540084388, + +0.0002061181435, -0.0002061181435, -0.0005987341772, -0.0002510548523, + +0.0003411392405, +0.0007339662447, +0.0006953586498, +0.0005537974684, + +0.0003670886076, +0.0000000000000, -0.0003670886076, -0.0002833333333, + +0.0000000000000, -0.0000194092827, -0.0001867088608, -0.0000772151899, + +0.0003476793249, +0.0006116033755, +0.0006052742616, +0.0001995780591, + -0.0001158227848, -0.0004248945148, -0.0004957805907, -0.0003734177215, + +0.0000966244726, +0.0002447257384, +0.0002253164557, +0.0000900843882, + +0.0000708860759, -0.0001158227848, -0.0000837552743, -0.0001801687764, + -0.0001544303797, -0.0000900843882, -0.0001286919831, -0.0003540084388, + -0.0004056962025, -0.0003799578059, -0.0000643459916, +0.0003411392405, + +0.0004571729958, +0.0003025316456, +0.0003540084388, +0.0003154008439, + -0.0001352320675, -0.0004120253165, -0.0003090717300, -0.0001094936709, + -0.0000128691983, -0.0002124472574, -0.0006696202532, -0.0006116033755, + -0.0002704641350, +0.0003090717300, +0.0007082278481, +0.0006502109705, + +0.0000708860759, -0.0002253164557, -0.0002767932489, -0.0001029535865, + -0.0001544303797, -0.0000386075949, +0.0000966244726, +0.0003090717300, + +0.0002896624473, +0.0002833333333, +0.0001801687764, +0.0000837552743, + -0.0000900843882, +0.0000000000000, +0.0000322784810, -0.0000514767932, + -0.0001609704641, -0.0002962025316, -0.0004185654008, -0.0002318565401, + +0.0001158227848, +0.0002381856540, +0.0002639240506, +0.0001544303797, + -0.0000451476793, -0.0001995780591, -0.0000837552743, -0.0001672995781, + -0.0002124472574, -0.0003090717300, -0.0001286919831, +0.0001995780591, + +0.0003991561181, +0.0001415611814, +0.0001609704641, +0.0001223628692, + -0.0000322784810, -0.0001867088608, -0.0000065400844, +0.0000065400844, + +0.0000386075949, +0.0000000000000, -0.0000837552743, -0.0001738396624, + -0.0000451476793, +0.0000000000000, +0.0001352320675, +0.0002896624473, + +0.0003025316456, +0.0001029535865, -0.0002381856540, -0.0004377637131, + -0.0002447257384, +0.0001286919831, +0.0001932489451, +0.0001481012658, + +0.0001672995781, +0.0003348101266, +0.0002124472574, -0.0000514767932, + -0.0002962025316, -0.0001544303797, -0.0001286919831, -0.0002253164557, + -0.0002767932489, +0.0000451476793, +0.0001801687764, +0.0001544303797, + +0.0000000000000, +0.0000128691983, -0.0000386075949, -0.0001029535865, + -0.0001481012658, +0.0000580168776, +0.0001352320675, +0.0001609704641, + +0.0002124472574, +0.0002318565401, +0.0000194092827, -0.0001672995781, + -0.0002061181435, -0.0001481012658, -0.0001481012658, -0.0002833333333, + -0.0003025316456, -0.0001738396624, +0.0000837552743, +0.0001867088608, + +0.0003476793249, +0.0004635021097, +0.0004443037975, +0.0000514767932, + -0.0002896624473, -0.0004763713080, -0.0002767932489, -0.0001029535865, + +0.0000000000000, -0.0000322784810, +0.0000837552743, +0.0001029535865, + +0.0001223628692, +0.0000451476793, +0.0000451476793, +0.0000643459916, + +0.0002639240506, +0.0002189873418, +0.0000322784810, -0.0000643459916, + -0.0000772151899, -0.0001672995781, -0.0002767932489, -0.0001672995781, + +0.0000772151899, +0.0001481012658, -0.0000194092827, -0.0000514767932, + -0.0000708860759, -0.0000322784810, -0.0000322784810, +0.0001029535865, + +0.0001609704641, +0.0002061181435, +0.0001094936709, +0.0000900843882, + -0.0000580168776, -0.0001609704641, -0.0003154008439, -0.0003540084388, + -0.0003090717300, +0.0000000000000, +0.0001609704641, +0.0002318565401, + +0.0001672995781, +0.0001672995781, +0.0001738396624, +0.0001415611814, + -0.0000580168776, -0.0002447257384, -0.0003540084388, -0.0003862869198, + -0.0002833333333, -0.0000194092827, +0.0002767932489, +0.0003282700422, + +0.0002381856540, +0.0000194092827, -0.0000514767932, -0.0001223628692, + -0.0001609704641, -0.0002381856540, -0.0000257383966, +0.0002061181435, + +0.0003219409283, +0.0000580168776, -0.0001544303797, -0.0003348101266, + -0.0002767932489, -0.0003090717300, -0.0003476793249, -0.0003605485232, + -0.0000900843882, +0.0001995780591, +0.0003411392405, +0.0001738396624, + +0.0000000000000, -0.0001415611814, -0.0000643459916, +0.0001158227848, + +0.0001995780591, +0.0001286919831, -0.0000708860759, -0.0001801687764, + -0.0000128691983, +0.0001995780591, +0.0001094936709, +0.0000772151899, + +0.0000451476793, +0.0000580168776, -0.0000322784810, -0.0000966244726, + -0.0002896624473, -0.0002962025316, -0.0002962025316, -0.0000580168776, + +0.0001352320675, +0.0003219409283, +0.0002767932489, +0.0002510548523, + +0.0001932489451, +0.0001094936709, -0.0001867088608, -0.0002381856540, + -0.0000643459916, +0.0002318565401, +0.0004056962025, +0.0003348101266, + +0.0000643459916, -0.0001029535865, -0.0001995780591, -0.0003154008439, + -0.0003540084388, -0.0002639240506, -0.0000257383966, +0.0000386075949, + +0.0001094936709, +0.0001995780591, +0.0003154008439, +0.0000128691983, + -0.0002510548523, -0.0002704641350, +0.0000000000000, +0.0000900843882, + +0.0001801687764, +0.0000580168776, -0.0000065400844, -0.0001481012658, + -0.0001738396624, -0.0000900843882, +0.0001094936709, +0.0001094936709, + +0.0002962025316, +0.0004829113924, +0.0004829113924, +0.0002639240506, + +0.0000000000000, -0.0002704641350, -0.0003605485232, -0.0003540084388, + -0.0002575949367, +0.0000580168776, +0.0002124472574, +0.0001481012658, + +0.0000257383966, +0.0001094936709, +0.0001995780591, +0.0003476793249, + +0.0003090717300, +0.0002447257384, -0.0001029535865, -0.0002962025316, + -0.0002833333333, +0.0000900843882, +0.0003154008439, +0.0003605485232, + +0.0001544303797, +0.0000128691983, -0.0001609704641, -0.0000900843882, + +0.0000257383966, +0.0002704641350, +0.0003348101266, +0.0002510548523, + +0.0002447257384, +0.0003476793249, +0.0002447257384, -0.0000065400844, + -0.0001672995781, -0.0001609704641, -0.0000580168776, -0.0000257383966, + +0.0000708860759, +0.0001352320675, +0.0002189873418, +0.0002189873418, + +0.0002510548523, +0.0000772151899, -0.0000065400844, -0.0000900843882, + +0.0000257383966, -0.0000194092827, +0.0000900843882, +0.0002318565401, + +0.0003411392405, +0.0000065400844, -0.0003025316456, -0.0004700421941, + -0.0003025316456, -0.0001223628692, +0.0001672995781, +0.0002833333333, + +0.0002318565401, +0.0001544303797, +0.0000772151899, -0.0002189873418, + -0.0003862869198, -0.0001932489451, +0.0000322784810, +0.0000966244726, + +0.0001352320675, +0.0003154008439, +0.0002704641350, -0.0000322784810, + -0.0004506329114, -0.0004700421941, -0.0003219409283, -0.0000772151899, + -0.0001094936709, -0.0001352320675, -0.0001995780591, -0.0001286919831, + -0.0002510548523, -0.0002704641350, -0.0003411392405, -0.0002253164557, + -0.0000837552743, +0.0001544303797, +0.0002767932489, +0.0004571729958, + +0.0003670886076, +0.0001223628692, -0.0001094936709, -0.0001932489451, + -0.0003348101266, -0.0003928270042, -0.0001932489451, +0.0000000000000, + +0.0000772151899, +0.0001415611814, +0.0002510548523, +0.0001158227848, + -0.0000837552743, -0.0003411392405, -0.0002833333333, -0.0000837552743, + +0.0001158227848, -0.0000128691983, -0.0000451476793, -0.0000386075949, + +0.0000837552743, +0.0000065400844, -0.0000065400844, -0.0001286919831, + -0.0001286919831, -0.0001352320675, +0.0000128691983, +0.0000966244726, + +0.0001801687764, +0.0001158227848, +0.0000065400844, -0.0002381856540, + -0.0004056962025, -0.0003605485232, -0.0001481012658, +0.0000643459916, + +0.0001286919831, +0.0001223628692, -0.0000386075949, -0.0002253164557, + -0.0002896624473, +0.0000386075949, +0.0003411392405, +0.0005343881857, + +0.0003862869198, +0.0001481012658, -0.0002575949367, -0.0004185654008, + -0.0004248945148, -0.0002447257384, -0.0002189873418, +0.0000451476793, + +0.0002704641350, +0.0003862869198, +0.0002124472574, +0.0000000000000, + -0.0002253164557, -0.0001995780591, -0.0000966244726, +0.0000643459916, + +0.0000900843882, -0.0000128691983, -0.0001738396624, -0.0001801687764, + +0.0000322784810, +0.0001932489451, +0.0002381856540, +0.0001738396624, + +0.0000580168776, -0.0002253164557, -0.0003025316456, -0.0002318565401, + -0.0000580168776, -0.0000643459916, -0.0000837552743, -0.0002639240506, + -0.0001867088608, -0.0001932489451, -0.0001415611814, +0.0000128691983, + +0.0003090717300, +0.0004120253165, +0.0004377637131, +0.0001609704641, + +0.0000000000000, -0.0001286919831, -0.0001995780591, -0.0001415611814, + +0.0000257383966, +0.0000966244726, +0.0000451476793, +0.0000257383966, + +0.0001352320675, +0.0001932489451, +0.0000580168776, -0.0000128691983, + -0.0001481012658, -0.0001029535865, +0.0000065400844, +0.0000643459916, + -0.0001352320675, -0.0001995780591, -0.0001867088608, +0.0001672995781, + +0.0005021097046, +0.0006567510549, +0.0004700421941, +0.0003090717300, + +0.0000708860759, -0.0000322784810, -0.0001738396624, -0.0000966244726, + +0.0000451476793, +0.0001286919831, +0.0000322784810, -0.0000065400844, + +0.0000257383966, +0.0000194092827, -0.0000580168776, -0.0000643459916, + +0.0000837552743, +0.0002124472574, +0.0002253164557, +0.0000000000000, + -0.0001158227848, -0.0002253164557, -0.0001415611814, -0.0000065400844, + +0.0002510548523, +0.0002639240506, +0.0001415611814, -0.0001094936709, + -0.0001672995781, -0.0002381856540, -0.0001286919831, -0.0000451476793, + +0.0001286919831, +0.0001801687764, +0.0001672995781, -0.0000128691983, + -0.0001352320675, -0.0002061181435, -0.0000966244726, +0.0000580168776, + +0.0001415611814, +0.0000772151899, +0.0000065400844, +0.0000643459916, + +0.0001158227848, +0.0001995780591, +0.0001352320675, +0.0000257383966, + -0.0000708860759, +0.0000000000000, -0.0000257383966, +0.0000386075949, + +0.0000451476793, +0.0000643459916, -0.0001158227848, -0.0000900843882, + +0.0000194092827, +0.0001158227848, -0.0000837552743, -0.0001672995781, + -0.0001544303797, +0.0000580168776, +0.0001672995781, +0.0001481012658, + +0.0000000000000, -0.0000257383966, +0.0000128691983, +0.0001995780591, + +0.0003090717300, +0.0001609704641, -0.0000708860759, -0.0002833333333, + -0.0003282700422, -0.0001481012658, +0.0001352320675, +0.0001029535865, + +0.0000643459916, -0.0000643459916, -0.0001867088608, -0.0003154008439, + -0.0001352320675, +0.0000065400844, +0.0001801687764, +0.0001094936709, + +0.0000386075949, -0.0001544303797, -0.0002833333333, -0.0002962025316, + -0.0000837552743, -0.0000194092827, +0.0000966244726, +0.0002253164557, + +0.0002639240506, +0.0001094936709, -0.0000772151899, -0.0002510548523, + -0.0003154008439, -0.0002061181435, -0.0000708860759, +0.0000643459916, + +0.0001223628692, +0.0001223628692, -0.0000194092827, -0.0000451476793, + -0.0001094936709, -0.0000128691983, +0.0000322784810, +0.0001672995781, + +0.0000900843882, -0.0000257383966, -0.0001995780591, -0.0000900843882, + -0.0000128691983, +0.0000065400844, -0.0000837552743, +0.0000000000000, + +0.0001481012658, +0.0003670886076, +0.0004443037975, +0.0003540084388, + +0.0002061181435, +0.0001801687764, +0.0001867088608, +0.0000322784810, + -0.0002833333333, -0.0005149789030, -0.0003734177215, -0.0001481012658, + +0.0001158227848, +0.0001867088608, +0.0001223628692, +0.0000065400844, + +0.0001932489451, +0.0002639240506, +0.0002510548523, +0.0001094936709, + +0.0001609704641, +0.0001029535865, -0.0000580168776, -0.0003605485232, + -0.0003476793249, -0.0002124472574, -0.0000194092827, +0.0000643459916, + +0.0000451476793, -0.0001609704641, -0.0002447257384, -0.0002189873418, + -0.0002253164557, -0.0001158227848, +0.0000966244726, +0.0003090717300, + +0.0003928270042, +0.0004443037975, +0.0002639240506, -0.0000194092827, + -0.0003154008439, -0.0002896624473, -0.0001544303797, +0.0000708860759, + +0.0000000000000, -0.0001094936709, -0.0002510548523, -0.0001352320675, + +0.0000322784810, +0.0002189873418, +0.0001223628692, +0.0000128691983, + -0.0001158227848, -0.0001029535865, -0.0000772151899, -0.0000322784810, + -0.0000194092827, +0.0000194092827, +0.0001094936709, +0.0001415611814, + +0.0000257383966, -0.0001029535865, +0.0000065400844, +0.0000322784810, + -0.0000065400844, -0.0000837552743, +0.0000322784810, +0.0001094936709, + +0.0002447257384, +0.0001352320675, +0.0000643459916, -0.0000580168776, + -0.0000966244726, -0.0001544303797, -0.0000386075949, -0.0000900843882, + -0.0001352320675, -0.0001738396624, -0.0000194092827, +0.0001223628692, + +0.0002447257384, +0.0001995780591, +0.0001094936709, +0.0000322784810, + +0.0000194092827, +0.0000451476793, +0.0000708860759, +0.0000966244726, + -0.0000322784810, -0.0001415611814, -0.0003605485232, -0.0003219409283, + -0.0001415611814, +0.0000900843882, +0.0001609704641, +0.0003605485232, + +0.0003154008439, +0.0002447257384, -0.0000065400844, -0.0002061181435, + -0.0004443037975, -0.0003090717300, -0.0000257383966, +0.0002704641350, + +0.0002061181435, +0.0000322784810, -0.0002124472574, -0.0003348101266, + -0.0003476793249, -0.0001738396624, +0.0000386075949, +0.0001223628692, + +0.0000900843882, +0.0000065400844, +0.0000194092827, +0.0000451476793, + +0.0001481012658, +0.0000386075949, +0.0000128691983, -0.0000194092827, + +0.0000000000000, -0.0001029535865, +0.0000128691983, +0.0000451476793, + +0.0001544303797, +0.0001158227848, +0.0001609704641, +0.0000966244726, + +0.0001029535865, -0.0000772151899, -0.0001544303797, -0.0002767932489, + -0.0002061181435, -0.0000065400844, +0.0002381856540, +0.0002510548523, + +0.0000772151899, -0.0001223628692, -0.0002253164557, -0.0001481012658, + +0.0000128691983, +0.0001932489451, +0.0001352320675, +0.0000772151899, + +0.0000386075949, +0.0001415611814, +0.0000194092827, -0.0000257383966, + -0.0001158227848, -0.0001029535865, -0.0002381856540, -0.0000643459916, + +0.0001223628692, +0.0003090717300, +0.0001932489451, +0.0001029535865, + -0.0001094936709, -0.0000900843882, -0.0000514767932, +0.0000065400844, + +0.0000000000000, +0.0000837552743, +0.0000451476793, -0.0001029535865, + -0.0001932489451, -0.0001286919831, +0.0000065400844, +0.0000708860759, + +0.0001415611814, +0.0001223628692, +0.0001415611814, -0.0000128691983, + -0.0000451476793, -0.0000900843882, -0.0000257383966, -0.0001029535865, + +0.0000128691983, +0.0000386075949, +0.0001544303797, +0.0001029535865, + +0.0000966244726, -0.0000194092827, +0.0000194092827, -0.0000451476793, + -0.0000643459916, -0.0000772151899, +0.0000900843882, +0.0002124472574, + +0.0002510548523, +0.0001738396624, +0.0000386075949, -0.0001094936709, + -0.0001738396624, -0.0000514767932, -0.0000065400844, +0.0000257383966, + +0.0000708860759, +0.0001481012658, +0.0000194092827, +0.0001029535865, + +0.0001158227848, +0.0001415611814, +0.0000900843882, +0.0001223628692, + -0.0000643459916, -0.0001738396624, -0.0002061181435, +0.0000966244726, + +0.0002447257384, +0.0001672995781, -0.0001223628692, -0.0001932489451, + -0.0000643459916, +0.0001158227848, +0.0000966244726, +0.0000257383966, + -0.0000643459916, -0.0000900843882, -0.0000194092827, +0.0000128691983, + +0.0001094936709, +0.0001481012658, +0.0001672995781, +0.0000837552743, + +0.0001286919831, +0.0000772151899, +0.0000643459916, +0.0000000000000, + +0.0000580168776, -0.0001158227848, -0.0002510548523, -0.0002962025316, + -0.0001415611814, -0.0000837552743, +0.0000580168776, +0.0000966244726, + +0.0001352320675, +0.0001352320675, +0.0002253164557, +0.0001995780591, + -0.0000322784810, -0.0002704641350, -0.0002575949367, -0.0000386075949, + +0.0000900843882, +0.0001094936709, -0.0000451476793, -0.0001286919831, + -0.0001609704641, -0.0001029535865, -0.0001158227848, +0.0000900843882, + +0.0002318565401, +0.0002318565401, -0.0000194092827, -0.0001223628692, + -0.0001094936709, +0.0000128691983, -0.0000900843882, -0.0001932489451, + -0.0002767932489, -0.0001609704641, +0.0000000000000, +0.0001609704641, + +0.0001029535865, -0.0000708860759, -0.0001801687764, -0.0001481012658, + +0.0000000000000, +0.0000580168776, +0.0000772151899, +0.0000708860759, + +0.0001223628692, -0.0000194092827, -0.0001672995781, -0.0003799578059, + -0.0003670886076, -0.0002575949367, -0.0000194092827, +0.0000643459916, + +0.0001867088608, +0.0001158227848, +0.0000514767932, -0.0000128691983, + +0.0000000000000, -0.0000257383966, +0.0000772151899, +0.0000966244726, + +0.0000322784810, +0.0000194092827, +0.0000386075949, +0.0000194092827, + -0.0000194092827, -0.0000257383966, -0.0000386075949, +0.0000708860759, + +0.0001223628692, +0.0002124472574, +0.0001544303797, +0.0001094936709, + +0.0000000000000, +0.0000194092827, -0.0000708860759, -0.0000966244726, + -0.0001286919831, +0.0000322784810, +0.0000966244726, +0.0001029535865, + -0.0000580168776, -0.0000772151899, -0.0000643459916, -0.0000065400844, + +0.0000322784810, +0.0001223628692, +0.0002124472574, +0.0002318565401, + +0.0001094936709, -0.0001094936709, -0.0001609704641, -0.0001158227848, + +0.0000386075949, +0.0001029535865, +0.0001286919831, +0.0000128691983, + +0.0000000000000, -0.0000772151899, -0.0000257383966, -0.0000580168776, + -0.0000514767932, -0.0001481012658, -0.0001158227848, -0.0001995780591, + -0.0001609704641, -0.0001223628692, +0.0000514767932, +0.0001415611814, + +0.0002189873418, +0.0001932489451, +0.0001158227848, -0.0000194092827, + -0.0001415611814, -0.0002253164557, -0.0003025316456, -0.0002189873418, + -0.0001029535865, +0.0000194092827, -0.0000322784810, -0.0000580168776, + -0.0001481012658, -0.0000194092827, +0.0000966244726, +0.0002767932489, + +0.0001352320675, +0.0000514767932, -0.0000708860759, -0.0001094936709, + -0.0001995780591, -0.0000580168776, +0.0000322784810, +0.0001094936709, + +0.0000708860759, +0.0000900843882, +0.0000257383966, +0.0000065400844, + +0.0000643459916, +0.0000643459916, +0.0000257383966, +0.0000322784810, + +0.0001223628692, +0.0001158227848, +0.0001801687764, +0.0001415611814, + +0.0000580168776, -0.0002318565401, -0.0003025316456, -0.0002639240506, + +0.0000386075949, +0.0001609704641, +0.0001738396624, +0.0000000000000, + +0.0000451476793, +0.0001094936709, +0.0002189873418, +0.0000772151899, + -0.0000580168776, -0.0001672995781, -0.0001544303797, -0.0000708860759, + +0.0001415611814, +0.0003928270042, +0.0004829113924, +0.0003219409283, + -0.0000257383966, -0.0002833333333, -0.0003605485232, -0.0001544303797, + -0.0000514767932, +0.0000000000000, -0.0000643459916, -0.0000194092827, + -0.0001029535865, -0.0000257383966, +0.0000065400844, +0.0001544303797, + +0.0001352320675, +0.0001738396624, +0.0001029535865, +0.0002124472574, + +0.0002833333333, +0.0002639240506, +0.0000837552743, -0.0000128691983, + -0.0001223628692, -0.0001932489451, -0.0002253164557, -0.0002381856540, + -0.0001672995781, -0.0001867088608, -0.0001544303797, -0.0000580168776, + +0.0002061181435, +0.0002896624473, +0.0002704641350, +0.0000128691983, + -0.0000966244726, -0.0002447257384, -0.0001995780591, -0.0002253164557, + -0.0000837552743, -0.0000451476793, +0.0000257383966, -0.0000194092827, + +0.0000708860759, +0.0001029535865, +0.0000451476793, -0.0001932489451, + -0.0002318565401, -0.0000514767932, +0.0000900843882, +0.0001223628692, + +0.0000451476793, -0.0000451476793, -0.0001609704641, -0.0001481012658, + -0.0001481012658, -0.0000065400844, +0.0000065400844, +0.0001158227848, + +0.0001609704641, +0.0002896624473, +0.0001867088608, +0.0001029535865, + -0.0001158227848, -0.0002318565401, -0.0003670886076, -0.0001672995781, + +0.0000772151899, +0.0003734177215, +0.0003799578059, +0.0001932489451, + -0.0000257383966, -0.0000772151899, -0.0000580168776, +0.0000000000000, + +0.0000000000000, +0.0000000000000, +0.0001094936709, +0.0000643459916, + +0.0000000000000, -0.0000257383966, +0.0000772151899, +0.0000000000000, + +0.0000386075949, +0.0000322784810, +0.0001481012658, +0.0000966244726, + +0.0000772151899, -0.0000708860759, -0.0000900843882, -0.0001801687764, + -0.0000772151899, +0.0000000000000, +0.0000900843882, +0.0000322784810, + +0.0000386075949, +0.0000128691983, -0.0000580168776, -0.0001029535865, + -0.0000708860759, +0.0000194092827, +0.0000322784810, +0.0000322784810, + -0.0000386075949, +0.0000065400844, +0.0000065400844, +0.0000772151899, + -0.0000322784810, -0.0000386075949, -0.0000386075949, +0.0001094936709, + +0.0000000000000, -0.0000643459916, -0.0001672995781, -0.0000580168776, + -0.0000708860759, -0.0000514767932, -0.0000322784810, +0.0000966244726, + +0.0000708860759, +0.0000194092827, +0.0000580168776, +0.0001223628692, + +0.0000900843882, -0.0000128691983, -0.0000194092827, -0.0000837552743, + -0.0001223628692, -0.0001672995781, -0.0000772151899, -0.0000451476793, + +0.0001223628692, +0.0001544303797, +0.0002253164557, +0.0000837552743, + -0.0000900843882, -0.0004185654008, -0.0004056962025, -0.0001738396624, + +0.0002575949367, +0.0004314345992, +0.0004571729958, +0.0003025316456, + +0.0001544303797, -0.0000386075949, -0.0001672995781, -0.0001223628692, + +0.0000580168776, +0.0002061181435, +0.0000966244726, -0.0000128691983, + -0.0001029535865, -0.0000772151899, -0.0001352320675, -0.0000708860759, + -0.0000194092827, +0.0001544303797, +0.0001223628692, +0.0000772151899, + -0.0001094936709, -0.0001415611814, -0.0001672995781, -0.0000643459916, + -0.0000065400844, +0.0001352320675, +0.0001352320675, +0.0001223628692, + +0.0000580168776, -0.0000065400844, -0.0000966244726, -0.0001029535865, + +0.0000000000000, +0.0000772151899, +0.0000772151899, -0.0001029535865, + -0.0001415611814, -0.0000772151899, +0.0000966244726, +0.0001094936709, + +0.0001481012658, -0.0000065400844, -0.0001158227848, -0.0002447257384, + -0.0001738396624, -0.0000900843882, +0.0001158227848, +0.0001481012658, + +0.0001094936709, -0.0000194092827, -0.0000322784810, +0.0000000000000, + +0.0000580168776, +0.0000966244726, +0.0001352320675, +0.0001609704641, + +0.0000772151899, +0.0000000000000, -0.0000708860759, -0.0000257383966, + -0.0000451476793, +0.0000000000000, -0.0000386075949, +0.0000065400844, + -0.0000194092827, +0.0000708860759, +0.0001223628692, +0.0002124472574, + +0.0000900843882, +0.0000000000000, -0.0001094936709, -0.0001352320675, + -0.0001995780591, -0.0001801687764, -0.0001094936709, +0.0000128691983, + +0.0000580168776, +0.0000322784810, +0.0000580168776, +0.0000580168776, + +0.0000000000000, -0.0000900843882, -0.0000065400844, +0.0000000000000, + +0.0000580168776, +0.0000580168776, +0.0000772151899, -0.0001094936709, + -0.0001801687764, -0.0001801687764, -0.0000451476793, -0.0000065400844, + +0.0000643459916, -0.0000257383966, -0.0001094936709, -0.0000966244726, + +0.0000451476793, +0.0001094936709, +0.0000643459916, -0.0000451476793, + -0.0001029535865, -0.0000580168776, -0.0000065400844, +0.0000966244726, + +0.0000708860759, +0.0000000000000, -0.0001094936709, -0.0000643459916, + -0.0000257383966, +0.0001029535865, +0.0000900843882, +0.0000580168776, + -0.0000514767932, -0.0000451476793, -0.0000580168776, -0.0000128691983, + -0.0000708860759, -0.0000514767932, +0.0000000000000, +0.0000900843882, + +0.0000900843882, +0.0000514767932, +0.0000194092827, +0.0000257383966, + +0.0000580168776, +0.0000257383966, +0.0000257383966, +0.0000322784810, + +0.0000900843882, +0.0000065400844, -0.0000194092827, -0.0000708860759, + +0.0000194092827, +0.0000257383966, +0.0000451476793, +0.0000065400844, + +0.0000514767932, +0.0000257383966, +0.0000580168776, +0.0000257383966, + +0.0000128691983, -0.0000257383966, -0.0000514767932, -0.0000643459916, + -0.0000451476793, -0.0000451476793, -0.0000514767932, -0.0000128691983, + +0.0000000000000, +0.0000257383966, +0.0000322784810, +0.0000900843882, + +0.0000708860759, +0.0000643459916, -0.0000128691983, -0.0000065400844, + -0.0000065400844, +0.0000128691983, -0.0000708860759, -0.0000772151899, + -0.0000643459916, +0.0000000000000, +0.0000000000000, +0.0000194092827, + +0.0000257383966, +0.0000580168776, +0.0000580168776, +0.0000514767932, + +0.0000128691983, +0.0000000000000, +0.0000514767932, +0.0000514767932, + +0.0000322784810, -0.0000128691983, -0.0000257383966, -0.0000386075949, + -0.0000065400844, -0.0000065400844, +0.0000128691983, -0.0000128691983, + -0.0000194092827, -0.0000451476793, +0.0000000000000, +0.0000386075949, + +0.0000900843882, +0.0000514767932, +0.0000194092827, -0.0000128691983, + -0.0000257383966, -0.0000322784810, -0.0000065400844, +0.0000065400844, + +0.0000194092827, +0.0000322784810, +0.0000128691983, +0.0000000000000, + -0.0000128691983, -0.0000194092827, -0.0000386075949, -0.0000128691983, + -0.0000065400844, +0.0000128691983, +0.0000194092827, +0.0000386075949, + +0.0000065400844, +0.0000000000000, -0.0000257383966, -0.0000257383966, + -0.0000322784810, -0.0000065400844, +0.0000000000000, +0.0000000000000, + -0.0000065400844, -0.0000065400844, +0.0000000000000, +0.0000065400844, + +0.0000065400844, +0.0000000000000, +0.0000000000000, +0.0000000000000, + +0.0000065400844, +0.0000000000000, +0.0000065400844, +0.0000000000000, + +0.0000000000000, -0.0000065400844, +0.0000000000000, +0.0000000000000, + +0.0000000000000, +0.0000000000000, +0.0000065400844, +0.0000000000000, + +0.0000000000000, +0.0000000000000, +0.0000000000000, +0.0000000000000, + +0.0000000000000, +0.0000000000000, +0.0000000000000, +0.0000000000000 +}; diff --git a/plugins/ladspa_effect/swh/impulses/08-fender-bassman-sm57.h b/plugins/ladspa_effect/swh/impulses/08-fender-bassman-sm57.h new file mode 100644 index 000000000..98eea65da --- /dev/null +++ b/plugins/ladspa_effect/swh/impulses/08-fender-bassman-sm57.h @@ -0,0 +1,681 @@ +float fender_bassman_sm57[] = { + +0.0000000000000, +0.0000449579832, +0.0000128151261, -0.0001153361345, + -0.0002693277311, -0.0003590336134, -0.0003655462185, -0.0002884453782, + -0.0001602941176, +0.0000000000000, +0.0001153361345, +0.0001859243697, + +0.0001924369748, +0.0001409663866, +0.0000640756303, -0.0000128151261, + -0.0001153361345, -0.0001859243697, -0.0002308823529, -0.0002565126050, + -0.0002500000000, -0.0002565126050, -0.0002756302521, -0.0002821428571, + -0.0002756302521, -0.0002308823529, -0.0001281512605, +0.0000256302521, + +0.0001924369748, +0.0003462184874, +0.0003334033613, +0.0002180672269, + -0.0000449579832, -0.0003012605042, -0.0005256302521, -0.0006859243697, + -0.0005962184874, -0.0003077731092, -0.0000256302521, +0.0001281512605, + +0.0001537815126, +0.0000321428571, -0.0001665966387, -0.0004359243697, + -0.0006987394958, -0.0009489495798, -0.0011348739496, -0.0012245798319, + -0.0011861344538, -0.0010705882353, -0.0009745798319, -0.0008974789916, + -0.0008974789916, -0.0009936974790, -0.0012630252101, -0.0016220588235, + -0.0021157563025, -0.0025581932773, -0.0030710084034, -0.0041800420168, + -0.0044046218487, -0.0047764705882, -0.0060266806723, -0.0043403361345, + -0.0068535714286, -0.0092002100840, +0.0065073529412, +0.0229844537815, + +0.0012758403361, -0.0708571428571, -0.1080808823529, -0.0428848739496, + +0.0436991596639, +0.1150949579832, +0.1932865546218, +0.2100712184874, + +0.1543701680672, +0.0668308823529, -0.0485075630252, -0.1251220588235, + -0.1295138655462, -0.1012529411765, -0.0552651260504, -0.0291905462185, + -0.0313831932773, -0.0201953781513, +0.0107388655462, +0.0452827731092, + +0.0654846638655, +0.0629586134454, +0.0473151260504, +0.0160987394958, + -0.0137264705882, -0.0213943277311, -0.0224073529412, -0.0183426470588, + -0.0132905462185, -0.0229201680672, -0.0319537815126, -0.0224523109244, + -0.0011605042017, +0.0215739495798, +0.0296264705882, +0.0185861344538, + +0.0064497899160, -0.0021029411765, -0.0081678571429, -0.0119953781513, + -0.0151369747899, -0.0166693277311, -0.0204006302521, -0.0228304621849, + -0.0166052521008, -0.0114632352941, -0.0075012605042, +0.0034107142857, + +0.0076165966387, +0.0018529411765, -0.0051289915966, -0.0087384453782, + -0.0112453781513, -0.0142073529412, -0.0075460084034, +0.0063214285714, + +0.0117647058824, +0.0099951680672, +0.0041800420168, -0.0043852941176, + -0.0070266806723, -0.0033338235294, +0.0031863445378, +0.0085974789916, + +0.0045840336134, -0.0054945378151, -0.0126686974790, -0.0120596638655, + -0.0082512605042, -0.0073600840336, -0.0069241596639, -0.0072831932773, + -0.0107004201681, -0.0084949579832, -0.0000897058824, +0.0078344537815, + +0.0141048319328, +0.0115081932773, +0.0023207983193, -0.0059176470588, + -0.0143163865546, -0.0163934873950, -0.0099630252101, -0.0062957983193, + -0.0034044117647, +0.0000321428571, +0.0009233193277, +0.0023336134454, + +0.0011092436975, -0.0018976890756, -0.0029619747899, -0.0069369747899, + -0.0117006302521, -0.0120081932773, -0.0109441176471, -0.0083474789916, + -0.0024042016807, +0.0054558823529, +0.0126237394958, +0.0138161764706, + +0.0075397058824, -0.0015964285714, -0.0086871848739, -0.0100207983193, + -0.0038147058824, +0.0052764705882, +0.0093861344538, +0.0071357142857, + +0.0020323529412, -0.0052186974790, -0.0128352941176, -0.0163743697479, + -0.0148676470588, -0.0108478991597, -0.0060586134454, -0.0013464285714, + +0.0022632352941, +0.0046546218487, +0.0060523109244, +0.0058726890756, + +0.0037890756303, +0.0010705882353, +0.0007886554622, +0.0030516806723, + +0.0051995798319, +0.0066804621849, +0.0071035714286, +0.0062254201681, + +0.0048724789916, +0.0021413865546, -0.0017502100840, -0.0046930672269, + -0.0066548319328, -0.0078922268908, -0.0077897058824, -0.0068472689076, + -0.0060073529412, -0.0053918067227, -0.0034684873950, +0.0000449579832, + +0.0027504201681, +0.0043340336134, +0.0054174369748, +0.0042571428571, + +0.0017117647059, +0.0009680672269, +0.0026542016807, +0.0052764705882, + +0.0065779411765, +0.0069819327731, +0.0074434873950, +0.0061739495798, + +0.0045006302521, +0.0039750000000, +0.0021348739496, -0.0001924369748, + -0.0018273109244, -0.0021029411765, +0.0002180672269, +0.0023850840336, + +0.0033338235294, +0.0053470588235, +0.0071997899160, +0.0073600840336, + +0.0065201680672, +0.0050455882353, +0.0049109243697, +0.0052636554622, + +0.0036672268908, +0.0017630252101, +0.0008655462185, +0.0005128151261, + +0.0003268907563, -0.0004102941176, +0.0003525210084, +0.0031800420168, + +0.0049046218487, +0.0054558823529, +0.0052252100840, +0.0039044117647, + +0.0031415966387, +0.0030453781513, +0.0031672268908, +0.0038081932773, + +0.0036159663866, +0.0025581932773, +0.0014361344538, -0.0002756302521, + -0.0008718487395, +0.0008334033613, +0.0035262605042, +0.0061739495798, + +0.0074884453782, +0.0069563025210, +0.0061292016807, +0.0055586134454, + +0.0046546218487, +0.0036159663866, +0.0030388655462, +0.0029170168067, + +0.0013142857143, -0.0019489495798, -0.0030260504202, -0.0006602941176, + +0.0014745798319, +0.0015002100840, +0.0010321428571, +0.0010577731092, + +0.0006539915966, +0.0003655462185, +0.0021861344538, +0.0053214285714, + +0.0066420168067, +0.0049815126050, +0.0021157563025, +0.0001346638655, + -0.0004680672269, -0.0006027310924, -0.0007052521008, -0.0001537815126, + +0.0012758403361, +0.0029363445378, +0.0039556722689, +0.0034878151261, + +0.0020836134454, +0.0002949579832, -0.0019617647059, -0.0032569327731, + -0.0021092436975, +0.0010964285714, +0.0043531512605, +0.0055201680672, + +0.0039878151261, +0.0008142857143, -0.0026478991597, -0.0042827731092, + -0.0029491596639, +0.0000193277311, +0.0021991596639, +0.0025195378151, + +0.0020516806723, +0.0016798319328, +0.0010577731092, +0.0000449579832, + -0.0005642857143, -0.0009552521008, -0.0013079831933, -0.0008655462185, + +0.0006411764706, +0.0025516806723, +0.0036800420168, +0.0029491596639, + +0.0009361344538, -0.0011861344538, -0.0027310924370, -0.0031031512605, + -0.0025451680672, -0.0024682773109, -0.0032184873950, -0.0037121848739, + -0.0030838235294, -0.0018273109244, -0.0005449579832, +0.0006155462185, + +0.0016411764706, +0.0014361344538, -0.0004487394958, -0.0026670168067, + -0.0038787815126, -0.0032441176471, -0.0010705882353, +0.0009680672269, + +0.0017502100840, +0.0010514705882, -0.0006283613445, -0.0018014705882, + -0.0017758403361, -0.0006218487395, +0.0008334033613, +0.0014424369748, + +0.0005705882353, -0.0013783613445, -0.0036672268908, -0.0051995798319, + -0.0057189075630, -0.0058663865546, -0.0049880252101, -0.0023978991597, + +0.0005834033613, +0.0025516806723, +0.0030773109244, +0.0025966386555, + +0.0018657563025, +0.0001924369748, -0.0019233193277, -0.0025838235294, + -0.0024876050420, -0.0024810924370, -0.0022054621849, -0.0018079831933, + -0.0007180672269, +0.0004102941176, -0.0000897058824, -0.0013464285714, + -0.0021991596639, -0.0027569327731, -0.0025838235294, -0.0025581932773, + -0.0025132352941, -0.0021092436975, -0.0026478991597, -0.0036350840336, + -0.0031544117647, -0.0016476890756, +0.0000000000000, +0.0012693277311, + +0.0013592436975, +0.0007630252101, +0.0000193277311, -0.0007949579832, + -0.0012823529412, -0.0012951680672, -0.0007949579832, +0.0001281512605, + +0.0004231092437, +0.0001602941176, -0.0001474789916, -0.0009552521008, + -0.0018014705882, -0.0023144957983, -0.0029235294118, -0.0032890756303, + -0.0026542016807, -0.0015514705882, -0.0007693277311, -0.0003077731092, + -0.0003205882353, -0.0006859243697, -0.0004424369748, +0.0007758403361, + +0.0020579831933, +0.0022695378151, +0.0017823529412, +0.0018336134454, + +0.0018014705882, +0.0010065126050, +0.0001537815126, -0.0004808823529, + -0.0005705882353, +0.0003140756303, +0.0012117647059, +0.0016283613445, + +0.0015323529412, +0.0005642857143, -0.0007693277311, -0.0021413865546, + -0.0031544117647, -0.0030516806723, -0.0022760504202, -0.0009745798319, + +0.0005834033613, +0.0009361344538, +0.0002308823529, -0.0003140756303, + -0.0004168067227, +0.0002565126050, +0.0013848739496, +0.0022567226891, + +0.0024235294118, +0.0015579831933, -0.0000962184874, -0.0015579831933, + -0.0020773109244, -0.0013783613445, +0.0000962184874, +0.0016283613445, + +0.0026926470588, +0.0030197478992, +0.0021285714286, +0.0002500000000, + -0.0012630252101, -0.0014617647059, -0.0004231092437, +0.0008590336134, + +0.0015707983193, +0.0013592436975, +0.0005449579832, -0.0003012605042, + -0.0010130252101, -0.0013720588235, -0.0010386554622, -0.0000897058824, + +0.0007565126050, +0.0010514705882, +0.0012245798319, +0.0014361344538, + +0.0010899159664, +0.0005000000000, +0.0003911764706, +0.0006924369748, + +0.0011668067227, +0.0014168067227, +0.0011989495798, +0.0005000000000, + -0.0002949579832, -0.0005577731092, -0.0000449579832, +0.0008655462185, + +0.0017567226891, +0.0020516806723, +0.0014552521008, -0.0000193277311, + -0.0018014705882, -0.0025451680672, -0.0019361344538, -0.0006090336134, + +0.0011155462185, +0.0023464285714, +0.0023722689076, +0.0015195378151, + +0.0001474789916, -0.0011092436975, -0.0016989495798, -0.0015771008403, + -0.0008527310924, +0.0000193277311, +0.0008077731092, +0.0016220588235, + +0.0019105042017, +0.0015964285714, +0.0010642857143, +0.0006346638655, + +0.0003397058824, -0.0002371848739, -0.0012245798319, -0.0020260504202, + -0.0022888655462, -0.0017886554622, -0.0005834033613, +0.0008911764706, + +0.0020388655462, +0.0023850840336, +0.0021029411765, +0.0015130252101, + +0.0009424369748, +0.0005384453782, -0.0000193277311, -0.0008783613445, + -0.0016411764706, -0.0016926470588, -0.0006411764706, +0.0005962184874, + +0.0013911764706, +0.0018464285714, +0.0017886554622, +0.0011283613445, + +0.0000897058824, -0.0009361344538, -0.0013464285714, -0.0010642857143, + -0.0003268907563, +0.0005962184874, +0.0010386554622, +0.0006987394958, + -0.0000512605042, -0.0008271008403, -0.0013976890756, -0.0016283613445, + -0.0015386554622, -0.0012245798319, -0.0009680672269, -0.0008911764706, + -0.0007821428571, -0.0006602941176, -0.0005065126050, -0.0000962184874, + +0.0002180672269, +0.0003077731092, +0.0003462184874, +0.0003205882353, + +0.0002565126050, +0.0000000000000, -0.0005128151261, -0.0009489495798, + -0.0014873949580, -0.0019170168067, -0.0017502100840, -0.0012565126050, + -0.0006731092437, -0.0002628151261, -0.0003525210084, -0.0008142857143, + -0.0011733193277, -0.0010834033613, -0.0008142857143, -0.0006924369748, + -0.0009233193277, -0.0016411764706, -0.0021798319328, -0.0020132352941, + -0.0012502100840, +0.0000577731092, +0.0011924369748, +0.0014873949580, + +0.0010386554622, +0.0001346638655, -0.0004871848739, -0.0007693277311, + -0.0011411764706, -0.0014168067227, -0.0014939075630, -0.0013911764706, + -0.0009617647059, -0.0008142857143, -0.0010321428571, -0.0010705882353, + -0.0012630252101, -0.0017373949580, -0.0020516806723, -0.0021285714286, + -0.0020323529412, -0.0018014705882, -0.0013464285714, -0.0005256302521, + +0.0001537815126, +0.0003974789916, +0.0004359243697, +0.0001859243697, + -0.0001346638655, -0.0001346638655, -0.0000065126050, +0.0000000000000, + -0.0001281512605, -0.0003718487395, -0.0006218487395, -0.0007436974790, + -0.0006796218487, -0.0003911764706, +0.0001409663866, +0.0007115546218, + +0.0009102941176, +0.0005514705882, -0.0003397058824, -0.0010577731092, + -0.0010642857143, -0.0009039915966, -0.0008399159664, -0.0006987394958, + -0.0005193277311, -0.0004296218487, -0.0005642857143, -0.0006796218487, + -0.0007052521008, -0.0007949579832, -0.0007308823529, -0.0005705882353, + -0.0006283613445, -0.0006539915966, -0.0005193277311, -0.0004039915966, + -0.0003140756303, -0.0001794117647, -0.0000768907563, +0.0000834033613, + +0.0005128151261, +0.0007502100840, +0.0003462184874, -0.0003077731092, + -0.0005514705882, -0.0003205882353, -0.0002884453782, -0.0005128151261, + -0.0004039915966, -0.0001987394958, -0.0002565126050, -0.0005193277311, + -0.0008846638655, -0.0009873949580, -0.0007436974790, -0.0005321428571, + -0.0004424369748, -0.0005321428571, -0.0008077731092, -0.0010002100840, + -0.0009680672269, -0.0006668067227, -0.0000640756303, +0.0005065126050, + +0.0007436974790, +0.0006090336134, +0.0001731092437, -0.0001859243697, + -0.0002371848739, -0.0000640756303, +0.0000962184874, +0.0001346638655, + -0.0000449579832, -0.0002052521008, -0.0003783613445, -0.0006796218487, + -0.0006987394958, -0.0002693277311, +0.0002821428571, +0.0006859243697, + +0.0007308823529, +0.0005256302521, +0.0003012605042, -0.0001859243697, + -0.0007502100840, -0.0007821428571, -0.0002180672269, +0.0003783613445, + +0.0003911764706, +0.0000000000000, -0.0001153361345, +0.0000705882353, + +0.0003140756303, +0.0004296218487, +0.0001924369748, -0.0000065126050, + +0.0000962184874, +0.0002052521008, +0.0001602941176, -0.0000449579832, + -0.0001474789916, +0.0001409663866, +0.0003655462185, +0.0003077731092, + +0.0002500000000, +0.0001859243697, +0.0000000000000, -0.0002371848739, + -0.0002693277311, +0.0000193277311, +0.0004168067227, +0.0007243697479, + +0.0008271008403, +0.0006027310924, +0.0003974789916, +0.0003334033613, + +0.0001474789916, +0.0001025210084, +0.0003655462185, +0.0006218487395, + +0.0004936974790, -0.0000128151261, -0.0004871848739, -0.0005256302521, + -0.0002565126050, +0.0001346638655, +0.0005193277311, +0.0008014705882, + +0.0008974789916, +0.0007758403361, +0.0005065126050, +0.0003397058824, + +0.0004296218487, +0.0007115546218, +0.0010449579832, +0.0011605042017, + +0.0008462184874, +0.0002693277311, -0.0001474789916, -0.0000705882353, + +0.0001859243697, +0.0002115546218, +0.0003525210084, +0.0007565126050, + +0.0010514705882, +0.0010193277311, +0.0006796218487, +0.0004424369748, + +0.0004552521008, +0.0004296218487, +0.0003268907563, +0.0001794117647, + +0.0000065126050, +0.0000128151261, +0.0001794117647, +0.0005128151261, + +0.0009680672269, +0.0012373949580, +0.0012502100840, +0.0010130252101, + +0.0006283613445, +0.0003846638655, +0.0003397058824, +0.0003783613445, + +0.0006796218487, +0.0011733193277, +0.0015964285714, +0.0016989495798, + +0.0014939075630, +0.0012052521008, +0.0008846638655, +0.0006218487395, + +0.0004296218487, +0.0001218487395, -0.0001731092437, -0.0002436974790, + -0.0001346638655, +0.0001537815126, +0.0003974789916, +0.0003846638655, + +0.0003846638655, +0.0004808823529, +0.0004487394958, +0.0002756302521, + +0.0001537815126, +0.0002756302521, +0.0004487394958, +0.0004168067227, + +0.0004168067227, +0.0004743697479, +0.0003655462185, +0.0001924369748, + +0.0001409663866, +0.0003077731092, +0.0006346638655, +0.0010002100840, + +0.0013079831933, +0.0012565126050, +0.0008399159664, +0.0003140756303, + -0.0001474789916, -0.0003012605042, -0.0000834033613, +0.0003140756303, + +0.0008205882353, +0.0010771008403, +0.0009361344538, +0.0006474789916, + +0.0003012605042, -0.0001409663866, -0.0004359243697, -0.0002884453782, + +0.0001665966387, +0.0005065126050, +0.0005834033613, +0.0002884453782, + -0.0002565126050, -0.0007308823529, -0.0008911764706, -0.0005899159664, + -0.0000449579832, +0.0003397058824, +0.0005962184874, +0.0008205882353, + +0.0008718487395, +0.0006796218487, +0.0003655462185, +0.0002243697479, + +0.0003268907563, +0.0004615546218, +0.0004743697479, +0.0003462184874, + -0.0000256302521, -0.0004359243697, -0.0007180672269, -0.0008974789916, + -0.0008205882353, -0.0004936974790, -0.0001025210084, +0.0002693277311, + +0.0003718487395, +0.0001090336134, -0.0003268907563, -0.0006859243697, + -0.0007052521008, -0.0004102941176, -0.0000512605042, +0.0002243697479, + +0.0001987394958, -0.0002180672269, -0.0006027310924, -0.0005705882353, + -0.0000577731092, +0.0005577731092, +0.0008590336134, +0.0006155462185, + -0.0000834033613, -0.0006796218487, -0.0005384453782, +0.0002115546218, + +0.0011027310924, +0.0015195378151, +0.0010642857143, +0.0000640756303, + -0.0009424369748, -0.0016605042017, -0.0016542016807, -0.0009489495798, + -0.0000256302521, +0.0006924369748, +0.0009424369748, +0.0007502100840, + +0.0003140756303, -0.0003140756303, -0.0008974789916, -0.0010705882353, + -0.0007243697479, -0.0002308823529, -0.0001409663866, -0.0001602941176, + +0.0000705882353, +0.0001602941176, +0.0000834033613, +0.0001474789916, + +0.0002884453782, +0.0002821428571, -0.0000897058824, -0.0006283613445, + -0.0007373949580, -0.0002308823529, +0.0004680672269, +0.0007886554622, + +0.0005771008403, +0.0000962184874, -0.0003718487395, -0.0005771008403, + -0.0004039915966, -0.0000449579832, +0.0001281512605, -0.0000512605042, + -0.0005065126050, -0.0009361344538, -0.0011027310924, -0.0008974789916, + -0.0005128151261, -0.0002565126050, -0.0001474789916, -0.0000128151261, + +0.0000962184874, +0.0000065126050, -0.0001409663866, -0.0000449579832, + +0.0004487394958, +0.0010065126050, +0.0010386554622, +0.0005193277311, + +0.0000256302521, +0.0000705882353, +0.0003718487395, +0.0004039915966, + +0.0000834033613, -0.0002308823529, -0.0004296218487, -0.0005962184874, + -0.0006155462185, -0.0001987394958, +0.0006218487395, +0.0014105042017, + +0.0016605042017, +0.0013014705882, +0.0006924369748, +0.0001090336134, + -0.0002243697479, -0.0001218487395, +0.0003525210084, +0.0007630252101, + +0.0006796218487, +0.0001025210084, -0.0005065126050, -0.0006859243697, + -0.0003974789916, -0.0000065126050, +0.0001987394958, +0.0003718487395, + +0.0007693277311, +0.0012758403361, +0.0015386554622, +0.0014361344538, + +0.0010321428571, +0.0003783613445, -0.0003205882353, -0.0007436974790, + -0.0006859243697, -0.0002115546218, +0.0003590336134, +0.0006987394958, + +0.0007052521008, +0.0005577731092, +0.0005128151261, +0.0006155462185, + +0.0005834033613, +0.0002884453782, -0.0000128151261, -0.0000577731092, + +0.0001987394958, +0.0004871848739, +0.0006155462185, +0.0006796218487, + +0.0005834033613, +0.0002821428571, +0.0000193277311, -0.0001859243697, + -0.0003974789916, -0.0004102941176, -0.0000768907563, +0.0004743697479, + +0.0009361344538, +0.0011027310924, +0.0009680672269, +0.0006668067227, + +0.0003205882353, +0.0000193277311, -0.0000640756303, +0.0000321428571, + +0.0000962184874, +0.0002052521008, +0.0004424369748, +0.0006283613445, + +0.0005962184874, +0.0005321428571, +0.0006411764706, +0.0007693277311, + +0.0007565126050, +0.0006027310924, +0.0003397058824, +0.0000256302521, + -0.0002628151261, -0.0003397058824, -0.0001409663866, +0.0000577731092, + +0.0001346638655, +0.0000449579832, -0.0000768907563, -0.0000768907563, + -0.0001153361345, -0.0000640756303, +0.0002628151261, +0.0006218487395, + +0.0007693277311, +0.0006411764706, +0.0003846638655, +0.0001474789916, + -0.0001090336134, -0.0002565126050, -0.0001409663866, +0.0001025210084, + +0.0002436974790, +0.0002115546218, +0.0001346638655, +0.0000384453782, + -0.0001409663866, -0.0003397058824, -0.0003974789916, -0.0003077731092, + -0.0002371848739, -0.0001924369748, -0.0001731092437, -0.0001731092437, + -0.0000705882353, +0.0000384453782, +0.0000193277311, -0.0000256302521, + -0.0001409663866, -0.0003334033613, -0.0004552521008, -0.0004296218487, + -0.0002436974790, -0.0000256302521, +0.0001474789916, +0.0002436974790, + +0.0001346638655, -0.0000512605042, -0.0001987394958, -0.0003205882353, + -0.0003205882353, -0.0002243697479, -0.0001474789916, -0.0000640756303, + -0.0000640756303, -0.0002052521008, -0.0004102941176, -0.0005321428571, + -0.0004424369748, -0.0002243697479, +0.0000449579832, +0.0002628151261, + +0.0002371848739, +0.0000000000000, -0.0001987394958, -0.0002693277311, + -0.0003012605042, -0.0003077731092, -0.0001859243697, -0.0000834033613, + -0.0000962184874, -0.0000962184874, -0.0000193277311, +0.0000577731092, + +0.0000321428571, -0.0000768907563, -0.0001794117647, -0.0002821428571, + -0.0004102941176, -0.0004743697479, -0.0003846638655, -0.0001987394958, + -0.0000256302521, +0.0000384453782, -0.0000705882353, -0.0003525210084, + -0.0006027310924, -0.0006346638655, -0.0004102941176, -0.0000577731092, + +0.0002693277311, +0.0004424369748, +0.0004168067227, +0.0002884453782, + +0.0001025210084, -0.0001090336134, -0.0002756302521, -0.0004552521008, + -0.0007180672269, -0.0008399159664, -0.0006731092437, -0.0002693277311, + +0.0002243697479, +0.0005256302521, +0.0005321428571, +0.0002371848739, + -0.0003268907563, -0.0008142857143, -0.0009233193277, -0.0006346638655, + -0.0000897058824, +0.0003590336134, +0.0004168067227, +0.0001987394958, + -0.0000577731092, -0.0001731092437, -0.0001409663866, -0.0001090336134, + -0.0001153361345, -0.0002693277311, -0.0006924369748, -0.0009745798319, + -0.0008205882353, -0.0004359243697, +0.0000000000000, +0.0002884453782, + +0.0002180672269, -0.0000640756303, -0.0004231092437, -0.0007052521008, + -0.0006731092437, -0.0005065126050, -0.0003077731092, -0.0001346638655, + -0.0001409663866, -0.0001281512605, -0.0000128151261, +0.0000128151261, + -0.0001090336134, -0.0004231092437, -0.0006731092437, -0.0006859243697, + -0.0006474789916, -0.0005384453782, -0.0003397058824, -0.0001346638655, + +0.0000321428571, +0.0001218487395, +0.0001859243697, +0.0002500000000, + +0.0000640756303, -0.0003655462185, -0.0007565126050, -0.0008271008403, + -0.0006346638655, -0.0003590336134, -0.0000962184874, +0.0000256302521, + -0.0000128151261, -0.0001794117647, -0.0004424369748, -0.0006218487395, + -0.0005321428571, -0.0002371848739, +0.0000705882353, +0.0001665966387, + -0.0000321428571, -0.0003655462185, -0.0006090336134, -0.0006411764706, + -0.0005065126050, -0.0003012605042, -0.0001346638655, -0.0001537815126, + -0.0003525210084, -0.0006090336134, -0.0007180672269, -0.0005384453782, + -0.0001409663866, +0.0002052521008, +0.0002821428571, +0.0001346638655, + -0.0000768907563, -0.0003140756303, -0.0003974789916, -0.0002565126050, + -0.0000768907563, +0.0000000000000, -0.0000962184874, -0.0002756302521, + -0.0003974789916, -0.0004102941176, -0.0003846638655, -0.0004296218487, + -0.0005000000000, -0.0005384453782, -0.0004936974790, -0.0002500000000, + +0.0000768907563, +0.0002052521008, +0.0001602941176, +0.0000384453782, + -0.0001602941176, -0.0004552521008, -0.0006859243697, -0.0006731092437, + -0.0003462184874, +0.0000193277311, +0.0001346638655, +0.0000000000000, + -0.0002436974790, -0.0005065126050, -0.0006090336134, -0.0005384453782, + -0.0002821428571, +0.0000577731092, +0.0002500000000, +0.0002628151261, + +0.0001859243697, +0.0000640756303, -0.0000577731092, -0.0002052521008, + -0.0003783613445, -0.0004552521008, -0.0003655462185, -0.0001602941176, + +0.0000256302521, +0.0001153361345, +0.0000705882353, -0.0000897058824, + -0.0002565126050, -0.0003012605042, -0.0002436974790, -0.0000962184874, + +0.0000512605042, +0.0001731092437, +0.0002115546218, +0.0000384453782, + -0.0002243697479, -0.0004168067227, -0.0005193277311, -0.0004359243697, + -0.0001602941176, +0.0001090336134, +0.0001859243697, +0.0000065126050, + -0.0002693277311, -0.0004743697479, -0.0005065126050, -0.0002500000000, + +0.0001537815126, +0.0003911764706, +0.0003590336134, +0.0001474789916, + -0.0001474789916, -0.0003655462185, -0.0003077731092, -0.0000128151261, + +0.0002500000000, +0.0003012605042, +0.0001346638655, -0.0000897058824, + -0.0002308823529, -0.0002628151261, -0.0001731092437, -0.0000577731092, + +0.0000000000000, -0.0000128151261, -0.0000962184874, -0.0001537815126, + -0.0001090336134, -0.0000321428571, +0.0000321428571, +0.0000449579832, + -0.0000897058824, -0.0002821428571, -0.0003462184874, -0.0002949579832, + -0.0001794117647, +0.0000065126050, +0.0002500000000, +0.0004487394958, + +0.0004936974790, +0.0004039915966, +0.0003462184874, +0.0003655462185, + +0.0003655462185, +0.0003397058824, +0.0002243697479, +0.0000000000000, + -0.0002436974790, -0.0003846638655, -0.0003718487395, -0.0002693277311, + -0.0002052521008, -0.0001474789916, -0.0000449579832, -0.0000128151261, + -0.0000834033613, -0.0001602941176, -0.0001859243697, -0.0001924369748, + -0.0001924369748, -0.0001602941176, -0.0000705882353, +0.0000128151261, + +0.0000128151261, -0.0000128151261, -0.0000449579832, -0.0000897058824, + -0.0000834033613, -0.0000065126050, +0.0000449579832, +0.0000449579832, + -0.0000321428571, -0.0001537815126, -0.0001859243697, -0.0000897058824, + +0.0000705882353, +0.0001924369748, +0.0002308823529, +0.0001665966387, + -0.0000256302521, -0.0002308823529, -0.0002308823529, -0.0000897058824, + +0.0000256302521, +0.0000640756303, -0.0000065126050, -0.0001346638655, + -0.0002052521008, -0.0002052521008, -0.0000321428571, +0.0002756302521, + +0.0005000000000, +0.0004936974790, +0.0003077731092, +0.0000962184874, + -0.0000449579832, -0.0001602941176, -0.0001924369748, -0.0000577731092, + +0.0000577731092, +0.0001090336134, +0.0001859243697, +0.0002756302521, + +0.0002756302521, +0.0002180672269, +0.0001987394958, +0.0002052521008, + +0.0001153361345, +0.0000128151261, -0.0000193277311, -0.0000449579832, + -0.0000256302521, +0.0000128151261, +0.0000384453782, +0.0000449579832, + +0.0000705882353, +0.0001794117647, +0.0002565126050, +0.0002308823529, + +0.0002180672269, +0.0002052521008, +0.0001537815126, +0.0001090336134, + +0.0000768907563, +0.0001025210084, +0.0001602941176, +0.0001409663866, + +0.0001346638655, +0.0001794117647, +0.0002308823529, +0.0002884453782, + +0.0003397058824, +0.0003525210084, +0.0002949579832, +0.0001794117647, + +0.0001346638655, +0.0001731092437, +0.0002052521008, +0.0002628151261, + +0.0003268907563, +0.0002565126050, +0.0000577731092, -0.0000384453782, + +0.0000000000000, +0.0001025210084, +0.0001665966387, +0.0001731092437, + +0.0001090336134, +0.0000256302521, -0.0000065126050, +0.0000705882353, + +0.0002052521008, +0.0002884453782, +0.0003334033613, +0.0002500000000, + +0.0000449579832, -0.0000768907563, -0.0001090336134, -0.0001025210084, + -0.0000128151261, +0.0001218487395, +0.0002115546218, +0.0002756302521, + +0.0003590336134, +0.0004168067227, +0.0003590336134, +0.0002115546218, + +0.0000834033613, +0.0000000000000, -0.0000321428571, +0.0000321428571, + +0.0001474789916, +0.0001859243697, +0.0001218487395, -0.0000768907563, + -0.0003077731092, -0.0003525210084, -0.0001924369748, +0.0000256302521, + +0.0002628151261, +0.0004424369748, +0.0005256302521, +0.0005705882353, + +0.0005514705882, +0.0004168067227, +0.0002180672269, -0.0000321428571, + -0.0003077731092, -0.0004296218487, -0.0003525210084, -0.0001474789916, + +0.0000705882353, +0.0002436974790, +0.0004039915966, +0.0005128151261, + +0.0005577731092, +0.0005771008403, +0.0005128151261, +0.0003590336134, + +0.0001474789916, -0.0000834033613, -0.0002693277311, -0.0003268907563, + -0.0002756302521, -0.0001025210084, +0.0001025210084, +0.0002628151261, + +0.0003911764706, +0.0004231092437, +0.0003077731092, +0.0002115546218, + +0.0002436974790, +0.0003140756303, +0.0003846638655, +0.0003846638655, + +0.0002565126050, +0.0000384453782, -0.0001153361345, -0.0001346638655, + -0.0000384453782, +0.0001090336134, +0.0002436974790, +0.0002436974790, + +0.0001731092437, +0.0001409663866, +0.0001409663866, +0.0001153361345, + +0.0000577731092, +0.0000193277311, +0.0000000000000, -0.0000768907563, + -0.0001218487395, -0.0000962184874, -0.0000256302521, +0.0000705882353, + +0.0000577731092, -0.0000897058824, -0.0002628151261, -0.0003590336134, + -0.0002628151261, +0.0000256302521, +0.0003590336134, +0.0006474789916, + +0.0008077731092, +0.0006796218487, +0.0002371848739, -0.0003205882353, + -0.0007052521008, -0.0007052521008, -0.0003846638655, +0.0000321428571, + +0.0003655462185, +0.0005449579832, +0.0005193277311, +0.0003012605042, + +0.0000897058824, +0.0000512605042, +0.0000897058824, +0.0000384453782, + +0.0000000000000, +0.0000384453782, +0.0001281512605, +0.0002500000000, + +0.0003525210084, +0.0003590336134, +0.0003462184874, +0.0002949579832, + +0.0001218487395, -0.0000577731092, -0.0001409663866, -0.0000640756303, + +0.0001218487395, +0.0002500000000, +0.0002308823529, +0.0001218487395, + +0.0000577731092, +0.0000768907563, +0.0000834033613, +0.0000512605042, + +0.0000512605042, +0.0001665966387, +0.0003012605042, +0.0003655462185, + +0.0004039915966, +0.0004168067227, +0.0003974789916, +0.0003655462185, + +0.0002693277311, +0.0001281512605, -0.0000065126050, -0.0001602941176, + -0.0002436974790, -0.0002115546218, -0.0000256302521, +0.0002756302521, + +0.0005193277311, +0.0005962184874, +0.0005449579832, +0.0003655462185, + +0.0001409663866, -0.0000577731092, -0.0002180672269, -0.0002884453782, + -0.0002436974790, -0.0001218487395, +0.0000640756303, +0.0003077731092, + +0.0004871848739, +0.0004936974790, +0.0003462184874, +0.0001153361345, + -0.0001409663866, -0.0003846638655, -0.0004871848739, -0.0003911764706, + -0.0001665966387, +0.0000834033613, +0.0003077731092, +0.0004231092437, + +0.0003590336134, +0.0001665966387, +0.0000193277311, -0.0000384453782, + -0.0000768907563, -0.0001090336134, -0.0001281512605, -0.0000577731092, + +0.0001218487395, +0.0002756302521, +0.0002693277311, +0.0001602941176, + +0.0000128151261, -0.0001474789916, -0.0002693277311, -0.0002180672269, + -0.0000384453782, +0.0001281512605, +0.0002756302521, +0.0003590336134, + +0.0002565126050, +0.0000384453782, -0.0000768907563, +0.0000000000000, + +0.0001537815126, +0.0001859243697, +0.0000768907563, -0.0000768907563, + -0.0002052521008, -0.0001859243697, -0.0000256302521, +0.0001409663866, + +0.0002243697479, +0.0001859243697, +0.0000768907563, +0.0000000000000, + -0.0000128151261, +0.0000065126050, +0.0000640756303, +0.0000897058824, + +0.0000705882353, +0.0000705882353, +0.0001281512605, +0.0001474789916, + +0.0000768907563, -0.0000512605042, -0.0001409663866, -0.0001602941176, + -0.0001346638655, -0.0000834033613, +0.0000000000000, +0.0000705882353, + +0.0001346638655, +0.0002180672269, +0.0003077731092, +0.0003268907563, + +0.0002371848739, +0.0000962184874, -0.0000065126050, -0.0000834033613, + -0.0001537815126, -0.0001794117647, -0.0001153361345, +0.0000065126050, + +0.0001665966387, +0.0002949579832, +0.0003718487395, +0.0003655462185, + +0.0002756302521, +0.0001153361345, -0.0001218487395, -0.0003462184874, + -0.0004231092437, -0.0003655462185, -0.0002115546218, -0.0000449579832, + +0.0000384453782, +0.0000640756303, +0.0000193277311, -0.0000768907563, + -0.0001731092437, -0.0001731092437, -0.0000768907563, +0.0000640756303, + +0.0001537815126, +0.0002052521008, +0.0002115546218, +0.0000962184874, + -0.0000897058824, -0.0002565126050, -0.0003268907563, -0.0002693277311, + -0.0001794117647, -0.0001218487395, -0.0000384453782, +0.0000321428571, + +0.0000897058824, +0.0001346638655, +0.0001025210084, -0.0000128151261, + -0.0001731092437, -0.0003334033613, -0.0004424369748, -0.0004359243697, + -0.0003012605042, -0.0000577731092, +0.0001665966387, +0.0002565126050, + +0.0002628151261, +0.0002052521008, +0.0000321428571, -0.0001987394958, + -0.0003974789916, -0.0004936974790, -0.0004359243697, -0.0002565126050, + -0.0000321428571, +0.0001025210084, +0.0000640756303, -0.0000512605042, + -0.0001924369748, -0.0003012605042, -0.0002884453782, -0.0001665966387, + -0.0000256302521, +0.0000640756303, +0.0000640756303, +0.0000128151261, + +0.0000000000000, +0.0000000000000, +0.0000000000000, -0.0000834033613, + -0.0002371848739, -0.0003590336134, -0.0003911764706, -0.0003012605042, + -0.0000834033613, +0.0001602941176, +0.0003012605042, +0.0002436974790, + -0.0000193277311, -0.0003140756303, -0.0004102941176, -0.0002949579832, + -0.0001090336134, +0.0000000000000, +0.0000000000000, -0.0000449579832, + -0.0000768907563, -0.0001281512605, -0.0001859243697, -0.0001859243697, + -0.0001474789916, -0.0001731092437, -0.0002436974790, -0.0002500000000, + -0.0001537815126, -0.0000384453782, +0.0000384453782, +0.0000962184874, + +0.0000834033613, -0.0000384453782, -0.0001794117647, -0.0002436974790, + -0.0002436974790, -0.0002500000000, -0.0002180672269, -0.0001281512605, + -0.0000449579832, -0.0000577731092, -0.0001153361345, -0.0001474789916, + -0.0001474789916, -0.0001090336134, -0.0000384453782, +0.0000193277311, + +0.0000512605042, +0.0000640756303, +0.0000384453782, -0.0000640756303, + -0.0001859243697, -0.0002821428571, -0.0003397058824, -0.0003012605042, + -0.0001602941176, +0.0000000000000, +0.0000897058824, +0.0000577731092, + -0.0000256302521, -0.0001153361345, -0.0001474789916, -0.0001537815126, + -0.0001474789916, -0.0001281512605, -0.0000640756303, -0.0000128151261, + -0.0000384453782, -0.0001218487395, -0.0001665966387, -0.0001218487395, + -0.0000512605042, -0.0000193277311, -0.0000128151261, +0.0000128151261, + +0.0000512605042, +0.0000577731092, +0.0000577731092, +0.0000512605042, + +0.0000384453782, +0.0000065126050, -0.0000768907563, -0.0002115546218, + -0.0003268907563, -0.0003846638655, -0.0003268907563, -0.0001602941176, + +0.0000256302521, +0.0001794117647, +0.0002500000000, +0.0001602941176, + -0.0000321428571, -0.0001859243697, -0.0002243697479, -0.0001794117647, + -0.0001409663866, -0.0001153361345, -0.0001218487395, -0.0001731092437, + -0.0002115546218, -0.0001987394958, -0.0001731092437, -0.0001346638655, + -0.0000640756303, +0.0000128151261, +0.0000384453782, +0.0000512605042, + +0.0000768907563, +0.0000962184874, +0.0000449579832, -0.0000962184874, + -0.0002821428571, -0.0004231092437, -0.0004871848739, -0.0004552521008, + -0.0003268907563, -0.0002115546218, -0.0001281512605, -0.0000193277311, + +0.0000640756303, +0.0000834033613, +0.0000321428571, -0.0000256302521, + +0.0000065126050, +0.0000640756303, +0.0000705882353, +0.0000193277311, + -0.0000321428571, -0.0000321428571, -0.0000065126050, -0.0000193277311, + -0.0000384453782, -0.0000384453782, -0.0000321428571, -0.0000449579832, + -0.0001218487395, -0.0002180672269, -0.0002821428571, -0.0002436974790, + -0.0001281512605, -0.0000705882353, -0.0001090336134, -0.0001665966387, + -0.0001602941176, -0.0000897058824, +0.0000000000000, +0.0001281512605, + +0.0003140756303, +0.0003718487395, +0.0002371848739, +0.0000577731092, + -0.0000962184874, -0.0001794117647, -0.0001537815126, -0.0000768907563, + -0.0000193277311, -0.0000256302521, -0.0000512605042, -0.0000384453782, + -0.0000256302521, -0.0000384453782, -0.0000512605042, -0.0000640756303, + -0.0001218487395, -0.0001665966387, -0.0001537815126, -0.0001281512605, + -0.0000834033613, +0.0000000000000, +0.0000705882353, +0.0001153361345, + +0.0001537815126, +0.0001665966387, +0.0001731092437, +0.0001474789916, + +0.0000834033613, +0.0000256302521, +0.0000000000000, +0.0000000000000, + +0.0000000000000, -0.0000512605042, -0.0001218487395, -0.0001218487395, + -0.0000834033613, -0.0000384453782, +0.0000000000000, +0.0000256302521, + +0.0000577731092, +0.0000705882353, +0.0000449579832, -0.0000065126050, + -0.0000834033613, -0.0001602941176, -0.0001602941176, -0.0001025210084, + -0.0000449579832, +0.0000065126050, +0.0000193277311, +0.0000000000000, + -0.0000065126050, -0.0000065126050, +0.0000000000000, +0.0000065126050, + -0.0000321428571, -0.0001090336134, -0.0001537815126, -0.0001346638655, + -0.0000384453782, +0.0000768907563, +0.0001346638655, +0.0001346638655, + +0.0000962184874, +0.0000512605042, +0.0000577731092, +0.0000640756303, + +0.0000512605042, +0.0000449579832, +0.0000193277311, +0.0000000000000, + +0.0000128151261, +0.0000384453782, +0.0000897058824, +0.0001281512605, + +0.0000705882353, -0.0000321428571, -0.0001090336134, -0.0001346638655, + -0.0000897058824, +0.0000000000000, +0.0001090336134, +0.0001409663866, + +0.0000705882353, -0.0000065126050, +0.0000000000000, +0.0001025210084, + +0.0001987394958, +0.0002756302521, +0.0002884453782, +0.0001924369748, + +0.0000256302521, -0.0000897058824, -0.0001665966387, -0.0002436974790, + -0.0002500000000, -0.0001537815126, -0.0000193277311, +0.0000705882353, + +0.0001090336134, +0.0001090336134, +0.0000897058824, +0.0000768907563, + +0.0000834033613, +0.0000897058824, +0.0000962184874, +0.0001153361345, + +0.0000897058824, +0.0000256302521, +0.0000000000000, -0.0000193277311, + -0.0000897058824, -0.0001537815126, -0.0001346638655, -0.0000705882353, + +0.0000065126050, +0.0000705882353, +0.0000768907563, +0.0000705882353, + +0.0000640756303, +0.0000512605042, +0.0000768907563, +0.0001090336134, + +0.0001090336134, +0.0000897058824, +0.0000834033613, +0.0000834033613, + +0.0000256302521, -0.0000834033613, -0.0001409663866, -0.0001346638655, + -0.0000897058824, -0.0000065126050, +0.0000897058824, +0.0001731092437, + +0.0002115546218, +0.0001731092437, +0.0000897058824, +0.0000640756303, + +0.0001025210084, +0.0001218487395, +0.0001090336134, +0.0001025210084, + +0.0001090336134, +0.0000768907563, +0.0000449579832, +0.0000768907563, + +0.0001474789916, +0.0001987394958, +0.0002115546218, +0.0001474789916, + +0.0000449579832, +0.0000321428571, +0.0001025210084, +0.0001409663866, + +0.0000705882353, -0.0000962184874, -0.0002243697479, -0.0002115546218, + -0.0000834033613, +0.0001218487395, +0.0002693277311, +0.0002436974790, + +0.0000962184874, -0.0000193277311, -0.0000449579832, -0.0000193277311, + +0.0000065126050, +0.0000256302521, +0.0000193277311, -0.0000321428571, + -0.0001090336134, -0.0001346638655, -0.0000897058824, -0.0000065126050, + +0.0000449579832, +0.0000577731092, +0.0000449579832, +0.0000449579832, + +0.0000577731092, +0.0000962184874, +0.0001537815126, +0.0001602941176, + +0.0001409663866, +0.0001474789916, +0.0001924369748, +0.0002115546218, + +0.0001794117647, +0.0001153361345, +0.0000193277311, -0.0000897058824, + -0.0001537815126, -0.0001153361345, -0.0000128151261, +0.0000640756303, + +0.0000640756303, +0.0000256302521, +0.0000065126050, +0.0000000000000, + -0.0000321428571, -0.0001218487395, -0.0002243697479, -0.0002628151261, + -0.0001859243697, +0.0000000000000, +0.0001924369748, +0.0002884453782, + +0.0002693277311, +0.0001731092437, +0.0000256302521, -0.0000897058824, + -0.0001537815126, -0.0001153361345, +0.0000065126050, +0.0001346638655, + +0.0002180672269, +0.0002243697479, +0.0001859243697, +0.0001281512605, + +0.0000640756303, -0.0000065126050, -0.0000962184874, -0.0001602941176, + -0.0001602941176, -0.0000897058824, +0.0000256302521, +0.0001474789916, + +0.0002308823529, +0.0002565126050, +0.0001924369748, +0.0000705882353, + +0.0000000000000, +0.0000065126050, +0.0000577731092, +0.0001025210084, + +0.0001218487395, +0.0001025210084, +0.0000512605042, -0.0000065126050, + -0.0000128151261, +0.0000193277311, +0.0000128151261, -0.0000193277311, + -0.0000256302521, +0.0000193277311, +0.0001346638655, +0.0002756302521, + +0.0003462184874, +0.0003268907563, +0.0002308823529, +0.0000640756303, + -0.0001090336134, -0.0001924369748, -0.0001153361345, +0.0000512605042, + +0.0001924369748, +0.0002180672269, +0.0001537815126, +0.0000512605042, + -0.0000065126050, +0.0000000000000, +0.0000834033613, +0.0002052521008, + +0.0002821428571, +0.0002565126050, +0.0001602941176, +0.0000000000000, + -0.0001218487395, -0.0001025210084, +0.0000256302521, +0.0001924369748, + +0.0003012605042, +0.0003205882353, +0.0002884453782, +0.0002308823529, + +0.0001731092437, +0.0001474789916, +0.0001474789916, +0.0001346638655, + +0.0000768907563, -0.0000065126050, -0.0000768907563, -0.0000834033613, + -0.0000449579832, +0.0000193277311, +0.0001025210084, +0.0001602941176, + +0.0001474789916, +0.0000193277311, -0.0001474789916, -0.0002371848739, + -0.0001924369748, -0.0000065126050, +0.0002180672269, +0.0003783613445, + +0.0003783613445, +0.0002180672269, +0.0000321428571, -0.0000768907563, + -0.0000834033613, -0.0000449579832, -0.0000321428571, -0.0000128151261, + +0.0000193277311, +0.0000834033613, +0.0001731092437, +0.0002565126050, + +0.0002756302521, +0.0001987394958, +0.0000577731092, -0.0000640756303, + -0.0000962184874, -0.0000449579832, +0.0000512605042, +0.0001090336134, + +0.0000768907563, +0.0000000000000, -0.0000577731092, -0.0000384453782, + +0.0000256302521, +0.0000768907563, +0.0000834033613, +0.0000193277311, + -0.0000834033613, -0.0001474789916, -0.0001153361345, +0.0000000000000, + +0.0001025210084, +0.0001281512605, +0.0000834033613, +0.0000193277311, + -0.0000128151261, +0.0000000000000, +0.0000193277311, +0.0000128151261, + -0.0000321428571, -0.0001090336134, -0.0001474789916, -0.0001281512605, + -0.0000768907563, -0.0000065126050, +0.0000768907563, +0.0001218487395, + +0.0000705882353, -0.0000065126050, -0.0000834033613, -0.0001346638655, + -0.0001665966387, -0.0001859243697, -0.0001987394958, -0.0001794117647, + -0.0001153361345, -0.0000128151261, +0.0000321428571, +0.0000449579832, + +0.0000321428571, +0.0000000000000, -0.0000065126050, -0.0000065126050, + +0.0000000000000, +0.0000065126050, -0.0000193277311, -0.0001090336134, + -0.0001859243697, -0.0002180672269, -0.0001665966387, -0.0000577731092, + +0.0000256302521, +0.0000577731092, +0.0000384453782, -0.0000065126050, + -0.0000577731092, -0.0000640756303, -0.0000321428571, +0.0000000000000, + +0.0000193277311, +0.0000000000000, -0.0000577731092, -0.0001218487395, + -0.0001218487395, -0.0000705882353, -0.0000128151261, +0.0000065126050, + -0.0000256302521, -0.0000834033613, -0.0001409663866, -0.0001859243697, + -0.0001987394958, -0.0001731092437, -0.0001281512605, -0.0000640756303, + -0.0000065126050, +0.0000193277311, +0.0000065126050, -0.0000065126050, + +0.0000000000000, +0.0000065126050, -0.0000193277311, -0.0000834033613, + -0.0001474789916, -0.0001409663866, -0.0000449579832, +0.0000577731092, + +0.0001153361345, +0.0001218487395, +0.0000768907563, +0.0000000000000, + -0.0000834033613, -0.0000962184874, +0.0000000000000, +0.0000962184874, + +0.0000834033613, +0.0000000000000, -0.0001025210084, -0.0001731092437, + -0.0001409663866, -0.0000256302521, +0.0001025210084, +0.0002180672269, + +0.0002693277311, +0.0002052521008, +0.0000705882353, -0.0000065126050, + -0.0000128151261, -0.0000128151261, -0.0000128151261, +0.0000065126050, + +0.0000256302521, +0.0000128151261, +0.0000193277311, +0.0000577731092, + +0.0000705882353, +0.0000512605042, +0.0000256302521, +0.0000065126050, + +0.0000193277311, +0.0000640756303, +0.0001537815126, +0.0002115546218, + +0.0001602941176, +0.0000449579832, -0.0000640756303, -0.0001346638655, + -0.0000962184874, +0.0000000000000, +0.0000193277311, -0.0000384453782, + -0.0001474789916, -0.0001924369748, -0.0001090336134, +0.0000384453782, + +0.0001859243697, +0.0002756302521, +0.0002628151261, +0.0001346638655, + -0.0000128151261, -0.0001025210084, -0.0000768907563, -0.0000065126050, + +0.0000321428571, +0.0000000000000, -0.0000512605042, -0.0000834033613, + -0.0000640756303, -0.0000128151261, +0.0000449579832, +0.0000962184874, + +0.0001090336134, +0.0000577731092, -0.0000128151261, -0.0000512605042, + -0.0000256302521, +0.0000193277311, +0.0000512605042, +0.0000834033613, + +0.0000962184874, +0.0000512605042, -0.0000512605042, -0.0001665966387, + -0.0002052521008, -0.0001281512605, +0.0000321428571, +0.0002052521008, + +0.0002500000000, +0.0001537815126, +0.0000000000000, -0.0001474789916, + -0.0002371848739, -0.0001987394958, -0.0001025210084, -0.0000065126050, + +0.0000321428571, +0.0000193277311, -0.0000193277311, -0.0000640756303, + -0.0000768907563, -0.0000768907563, -0.0000640756303, -0.0000384453782, + -0.0000128151261, -0.0000193277311, -0.0000193277311, -0.0000065126050, + +0.0000000000000, -0.0000193277311, -0.0000128151261, +0.0000065126050, + +0.0000193277311, +0.0000256302521, +0.0000256302521, +0.0000000000000, + -0.0000512605042, -0.0001153361345, -0.0001602941176, -0.0001474789916, + -0.0000897058824, +0.0000000000000, +0.0000962184874, +0.0001346638655, + +0.0000834033613, -0.0000128151261, -0.0000897058824, -0.0000834033613, + -0.0000193277311, +0.0000128151261, +0.0000321428571, +0.0000384453782, + +0.0000000000000, -0.0000640756303, -0.0001025210084, -0.0000897058824, + -0.0000640756303, -0.0000512605042, -0.0000512605042, -0.0000577731092, + -0.0000768907563, -0.0000705882353, -0.0000256302521, +0.0000128151261, + +0.0000256302521, +0.0000000000000, -0.0000321428571, -0.0000640756303, + -0.0000897058824, -0.0001153361345, -0.0001346638655, -0.0001281512605, + -0.0000640756303, +0.0000065126050, +0.0000384453782, +0.0000193277311, + -0.0000256302521, -0.0001025210084, -0.0001409663866, -0.0001153361345, + -0.0000640756303, -0.0000193277311, +0.0000128151261, +0.0000384453782, + +0.0000193277311, -0.0000193277311, -0.0000640756303, -0.0000834033613, + -0.0000834033613, -0.0000577731092, +0.0000065126050, +0.0001025210084, + +0.0001537815126, +0.0001346638655, +0.0000640756303, -0.0000321428571, + -0.0000897058824, -0.0000834033613, -0.0000512605042, -0.0000640756303, + -0.0000962184874, -0.0001218487395, -0.0001153361345, -0.0000768907563, + -0.0000193277311, +0.0000256302521, +0.0000193277311, -0.0000512605042, + -0.0001218487395, -0.0001474789916, -0.0001090336134, -0.0000321428571, + +0.0000256302521, +0.0000512605042, +0.0000384453782, +0.0000000000000, + -0.0000449579832, -0.0000705882353, -0.0000768907563, -0.0000768907563, + -0.0000897058824, -0.0000962184874, -0.0000640756303, +0.0000065126050, + +0.0001153361345, +0.0001731092437, +0.0001409663866, +0.0000705882353, + -0.0000193277311, -0.0001090336134, -0.0001474789916, -0.0001218487395, + -0.0000449579832, +0.0000193277311, +0.0000321428571, +0.0000000000000, + -0.0000321428571, -0.0000384453782, -0.0000128151261, +0.0000321428571, + +0.0000577731092, +0.0000577731092, +0.0000000000000, -0.0000962184874, + -0.0001731092437, -0.0001924369748, -0.0001346638655, -0.0000193277311, + +0.0000834033613, +0.0001218487395, +0.0000577731092, -0.0000321428571, + -0.0001153361345, -0.0001537815126, -0.0001218487395, -0.0000321428571, + +0.0000640756303, +0.0001090336134, +0.0000577731092, -0.0000321428571, + -0.0001090336134, -0.0001218487395, -0.0000897058824, -0.0000384453782, + +0.0000321428571, +0.0000768907563, +0.0000449579832, +0.0000065126050, + +0.0000000000000, -0.0000065126050, -0.0000128151261, -0.0000256302521, + -0.0000577731092, -0.0001090336134, -0.0001602941176, -0.0001537815126, + -0.0000834033613, +0.0000000000000, +0.0000705882353, +0.0001090336134, + +0.0001218487395, +0.0001025210084, +0.0000384453782, -0.0000449579832, + -0.0001474789916, -0.0002180672269, -0.0002436974790, -0.0001987394958, + -0.0000897058824, +0.0000384453782, +0.0001346638655, +0.0001346638655, + +0.0000449579832, -0.0000449579832, -0.0000449579832, +0.0000128151261, + +0.0001025210084, +0.0001537815126, +0.0001281512605, +0.0000193277311, + -0.0000962184874, -0.0001665966387, -0.0001537815126, -0.0000577731092, + +0.0000640756303, +0.0001665966387, +0.0001987394958, +0.0001665966387, + +0.0001090336134, +0.0000577731092, +0.0000128151261, -0.0000193277311, + -0.0000321428571, -0.0000256302521, -0.0000321428571, -0.0000384453782, + -0.0000128151261, +0.0000705882353, +0.0001665966387, +0.0001987394958, + +0.0001025210084, -0.0000640756303, -0.0002115546218, -0.0002371848739, + -0.0001474789916, +0.0000000000000, +0.0001090336134, +0.0001537815126, + +0.0001281512605, +0.0000834033613, +0.0000577731092, +0.0000768907563, + +0.0001025210084, +0.0000834033613, +0.0000321428571, -0.0000193277311, + -0.0000256302521, -0.0000065126050, +0.0000193277311, +0.0000449579832, + +0.0000384453782, +0.0000065126050, +0.0000000000000, +0.0000193277311, + +0.0000384453782, +0.0000321428571, +0.0000000000000, -0.0000384453782, + -0.0000449579832, -0.0000384453782, -0.0000065126050, +0.0000065126050, + +0.0000065126050, -0.0000065126050, -0.0000256302521, -0.0000128151261, + +0.0000065126050, +0.0000193277311, +0.0000193277311, +0.0000128151261, + -0.0000065126050, -0.0000321428571, -0.0000640756303, -0.0000640756303, + +0.0000000000000, +0.0001025210084, +0.0001794117647, +0.0001731092437, + +0.0000897058824, -0.0000193277311, -0.0000962184874, -0.0001346638655, + -0.0000768907563, +0.0000384453782, +0.0001537815126, +0.0001794117647, + +0.0001346638655, +0.0000640756303, +0.0000321428571, +0.0000128151261, + +0.0000000000000, -0.0000384453782, -0.0001025210084, -0.0001602941176, + -0.0001602941176, -0.0001153361345, -0.0000256302521, +0.0000640756303, + +0.0001281512605, +0.0001346638655, +0.0001090336134, +0.0000834033613, + +0.0000768907563, +0.0000834033613, +0.0000577731092, +0.0000193277311, + -0.0000256302521, -0.0000897058824, -0.0001090336134, -0.0000768907563, + +0.0000065126050, +0.0001025210084, +0.0001474789916, +0.0001409663866, + +0.0000897058824, -0.0000193277311, -0.0001153361345, -0.0001346638655, + -0.0001090336134, -0.0000640756303, -0.0000065126050, +0.0000577731092, + +0.0001281512605, +0.0001409663866, +0.0001218487395, +0.0001153361345, + +0.0001281512605, +0.0001281512605, +0.0000962184874, +0.0000384453782, + +0.0000000000000, -0.0000128151261, -0.0000065126050, +0.0000128151261, + +0.0000512605042, +0.0000577731092, +0.0000449579832, +0.0000193277311, + +0.0000128151261, +0.0000256302521, +0.0000512605042, +0.0000705882353, + +0.0000640756303, +0.0000128151261, -0.0000256302521, -0.0000193277311, + +0.0000065126050, +0.0000321428571, +0.0000512605042, +0.0000321428571, + -0.0000384453782, -0.0001474789916, -0.0002371848739, -0.0002371848739, + -0.0001409663866, +0.0000256302521, +0.0002115546218, +0.0003205882353, + +0.0003077731092, +0.0002308823529, +0.0001025210084, -0.0000321428571, + -0.0001346638655, -0.0001537815126, -0.0001025210084, -0.0000256302521, + +0.0000512605042, +0.0001025210084, +0.0001090336134, +0.0000768907563, + +0.0000193277311, -0.0000384453782, -0.0000640756303, -0.0000512605042, + -0.0000065126050, +0.0000705882353, +0.0001602941176, +0.0002052521008, + +0.0001474789916, +0.0000577731092, -0.0000128151261, -0.0000640756303, + -0.0000834033613, -0.0000512605042, +0.0000000000000, +0.0000834033613, + +0.0001090336134, +0.0000897058824, +0.0000321428571, -0.0000256302521, + -0.0000768907563, -0.0000640756303, +0.0000000000000, +0.0000512605042, + +0.0000834033613, +0.0000834033613, +0.0000512605042, +0.0000000000000, + -0.0000193277311, -0.0000256302521, +0.0000000000000, +0.0000384453782, + +0.0000768907563, +0.0000768907563, +0.0000384453782, +0.0000000000000, + -0.0000321428571, -0.0000384453782, -0.0000256302521, -0.0000065126050, + -0.0000065126050, -0.0000128151261, -0.0000321428571, -0.0000321428571, + -0.0000193277311, +0.0000000000000, +0.0000193277311, +0.0000193277311, + +0.0000128151261, +0.0000065126050, +0.0000000000000, +0.0000000000000, + +0.0000000000000, +0.0000000000000 +}; diff --git a/plugins/ladspa_effect/swh/impulses/09-fender-bassman-sm57-off.h b/plugins/ladspa_effect/swh/impulses/09-fender-bassman-sm57-off.h new file mode 100644 index 000000000..6ee1384d0 --- /dev/null +++ b/plugins/ladspa_effect/swh/impulses/09-fender-bassman-sm57-off.h @@ -0,0 +1,636 @@ +float fender_bassman_sm57_off[] = { + +0.0000000000000, -0.0000430082256, -0.0000933019976, -0.0001003525264, + -0.0000072855464, +0.0001433607521, +0.0002726204465, +0.0003370152761, + +0.0002940070505, +0.0001576968273, -0.0000359576968, -0.0002366627497, + -0.0003656874266, -0.0003586368978, -0.0002079905993, +0.0000359576968, + +0.0003012925969, +0.0004806110458, +0.0004949471210, +0.0003299647474, + +0.0000216216216, -0.0003156286722, -0.0005666274971, -0.0006383078731, + -0.0005019976498, -0.0001863689777, +0.0001863689777, +0.0005092831962, + +0.0006669800235, +0.0006169212691, +0.0003656874266, +0.0000000000000, + -0.0003873090482, -0.0006742655699, -0.0007673325499, -0.0006526439483, + -0.0003513513514, +0.0000143360752, +0.0003513513514, +0.0005306698002, + +0.0005163337250, +0.0003156286722, +0.0000143360752, -0.0002726204465, + -0.0004662749706, -0.0005092831962, -0.0003943595770, -0.0001936545241, + +0.0000216216216, +0.0001793184489, +0.0002296122209, +0.0001649823737, + +0.0000072855464, -0.0001720329025, -0.0003226792009, -0.0003943595770, + -0.0003586368978, -0.0002079905993, +0.0000072855464, +0.0002509988249, + +0.0004232667450, +0.0004589894242, +0.0003370152761, +0.0000573443008, + -0.0002726204465, -0.0005736780259, -0.0007459459459, -0.0007459459459, + -0.0005666274971, -0.0002940070505, -0.0000072855464, +0.0002007050529, + +0.0003299647474, +0.0003513513514, +0.0003156286722, +0.0002152761457, + +0.0000933019976, -0.0000789659224, -0.0002726204465, -0.0005019976498, + -0.0006742655699, -0.0007673325499, -0.0007099882491, -0.0004232667450, + -0.0003083431257, +0.0002869565217, +0.0004589894242, +0.0002296122209, + +0.0002152761457, +0.0001863689777, -0.0001363102233, -0.0006239717979, + -0.0010615746181, -0.0012766157462, -0.0012622796710, -0.0011189189189, + -0.0008893066980, -0.0008749706228, -0.0009969447709, -0.0014345475911, + -0.0019292596945, -0.0024385428907, -0.0026968272620, -0.0026752056404, + -0.0023595769683, -0.0020296122209, -0.0019652173913, -0.0024242068155, + -0.0032991774383, -0.0051066980024, -0.0045257344301, -0.0081546415981, + -0.0166465334900, -0.0039661574618, +0.0215666274971, +0.0261856639248, + -0.0202399529965, -0.1034658049354, -0.1210662749706, -0.0300441833137, + +0.0768928319624, +0.1659710928320, +0.2350032902468, +0.2266836662750, + +0.1336893066980, +0.0007243243243, -0.1124740305523, -0.1539793184489, + -0.1287259694477, -0.0698928319624, -0.0160871915394, +0.0026681551116, + +0.0083052878966, +0.0236035252644, +0.0398843713278, +0.0491292596945, + +0.0443454759107, +0.0173278495887, -0.0154272620447, -0.0377471210341, + -0.0380627497062, -0.0175287896592, +0.0042601645123, +0.0149396004700, + +0.0137276145711, -0.0024528789659, -0.0160011750881, -0.0101055229142, + -0.0045901292597, -0.0075236192714, -0.0086855464160, -0.0066126909518, + -0.0025819036428, +0.0086065804935, +0.0185760282021, +0.0136556991774, + -0.0019149236193, -0.0162878965922, -0.0242634547591, -0.0263146886016, + -0.0233381903643, -0.0158792009401, -0.0041097532315, +0.0044467685076, + +0.0059386603995, +0.0008032902468, -0.0064907168038, -0.0114037602820, + -0.0178371327850, -0.0234028202115, -0.0192070505288, -0.0031915393655, + +0.0126157461810, +0.0178014101058, +0.0142152761457, +0.0099334900118, + +0.0054794359577, +0.0025388954172, +0.0040235017626, +0.0065913043478, + +0.0047264394830, -0.0047981198590, -0.0182387779083, -0.0285882491187, + -0.0299941245593, -0.0223125734430, -0.0112460634548, -0.0021515863690, + +0.0062110458284, +0.0113964747356, +0.0107654524089, +0.0061896592244, + -0.0007386603995, -0.0063546415981, -0.0092235017626, -0.0102491186839, + -0.0102274970623, -0.0104211515864, -0.0081762632197, -0.0005236192714, + +0.0060030552291, +0.0073945945946, +0.0050420681551, -0.0012049353702, + -0.0071146886016, -0.0116333725029, -0.0146455934195, -0.0123003525264, + -0.0065840188014, -0.0004446533490, +0.0060603995300, +0.0090512338425, + +0.0065913043478, +0.0006599294947, -0.0062183313749, -0.0120277320799, + -0.0167757931845, -0.0191856639248, -0.0157215041128, -0.0060820211516, + +0.0057950646298, +0.0149325499412, +0.0182747356052, +0.0156495887192, + +0.0074519388954, -0.0037654524089, -0.0128526439483, -0.0182387779083, + -0.0192430082256, -0.0148462984724, -0.0067419506463, +0.0027971797885, + +0.0110881316099, +0.0155205640423, +0.0145452408931, +0.0082839012926, + +0.0005736780259, -0.0043534665100, -0.0052500587544, -0.0025245593420, + +0.0032777908343, +0.0096178613396, +0.0129743830787, +0.0115327849589, + +0.0072509988249, +0.0012766157462, -0.0044970622797, -0.0076096357227, + -0.0088719153937, -0.0090942420682, -0.0079539365452, -0.0058667450059, + -0.0030481786134, -0.0009396004700, +0.0000502937720, +0.0013412455934, + +0.0020009400705, +0.0013913043478, -0.0002223266745, -0.0020942420682, + -0.0025318448884, -0.0022376028202, -0.0021945945946, -0.0002940070505, + +0.0020585193890, +0.0029764982374, +0.0032777908343, +0.0029478260870, + +0.0017499412456, +0.0006383078731, +0.0004232667450, +0.0022018801410, + +0.0053433607521, +0.0077459459459, +0.0082982373678, +0.0079466509988, + +0.0075666274971, +0.0064907168038, +0.0036721504113, -0.0004733254994, + -0.0045327849589, -0.0069786133960, -0.0068780258519, -0.0039374853114, + -0.0003156286722, +0.0025819036428, +0.0060603995300, +0.0090585193890, + +0.0100481786134, +0.0104284371328, +0.0109374853114, +0.0110737955347, + +0.0100768507638, +0.0071363102233, +0.0036291421857, +0.0005880141011, + -0.0005952996475, +0.0014559341951, +0.0050061104583, +0.0073873090482, + +0.0075163337250, +0.0053504112808, +0.0033278495887, +0.0024745005875, + +0.0017499412456, +0.0019365452409, +0.0024958871915, +0.0020871915394, + +0.0017212690952, +0.0013196239718, +0.0007529964747, +0.0008606345476, + +0.0008535840188, +0.0006669800235, +0.0009753231492, +0.0012265569918, + +0.0015849588719, +0.0022376028202, +0.0025748531140, +0.0025962397180, + +0.0031628672150, +0.0051424206816, +0.0069856639248, +0.0067130434783, + +0.0047767332550, +0.0030195064630, +0.0018002350176, +0.0003299647474, + -0.0019435957697, -0.0035287896592, -0.0030481786134, -0.0006239717979, + +0.0029334900118, +0.0069139835488, +0.0096752056404, +0.0094745005875, + +0.0055584018801, -0.0003156286722, -0.0046404230317, -0.0056230317274, + -0.0028258519389, +0.0024455934195, +0.0070286721504, +0.0089292596945, + +0.0074376028202, +0.0031271445358, -0.0009252643948, -0.0036578143361, + -0.0055010575793, -0.0053074030552, -0.0032058754407, -0.0003943595770, + +0.0023595769683, +0.0046474735605, +0.0064907168038, +0.0070286721504, + +0.0054364277321, +0.0032202115159, +0.0012192714454, -0.0005019976498, + -0.0010902467685, -0.0005236192714, -0.0002079905993, -0.0009179788484, + -0.0022808460635, -0.0033924794360, -0.0033135135135, -0.0019938895417, + -0.0003513513514, +0.0007316098707, +0.0009252643948, +0.0006383078731, + +0.0009396004700, +0.0012192714454, +0.0010686251469, +0.0003226792009, + -0.0010759106933, -0.0019722679201, -0.0023165687427, -0.0025675675676, + -0.0024601645123, -0.0023381903643, -0.0019222091657, -0.0010542890717, + -0.0002152761457, +0.0005880141011, +0.0007889541716, +0.0005306698002, + +0.0003083431257, +0.0000430082256, -0.0001863689777, -0.0006096357227, + -0.0013052878966, -0.0018359576968, -0.0022162162162, -0.0021588719154, + -0.0013125734430, -0.0000072855464, +0.0009753231492, +0.0011116333725, + +0.0004446533490, -0.0002796709753, -0.0009179788484, -0.0015992949471, + -0.0020728554642, -0.0024815511163, -0.0026968272620, -0.0020441833137, + -0.0009252643948, +0.0001506462985, +0.0009036427732, +0.0007172737955, + +0.0000860164512, +0.0000072855464, +0.0003656874266, +0.0006383078731, + -0.0000072855464, -0.0013913043478, -0.0026608695652, -0.0033995299647, + -0.0029908343126, -0.0016925969448, -0.0003800235018, +0.0005880141011, + +0.0011259694477, +0.0013913043478, +0.0008319623972, -0.0012839012926, + -0.0038371327850, -0.0058166862515, -0.0068709753231, -0.0066773207991, + -0.0048554641598, -0.0015349001175, +0.0019508813161, +0.0039518213866, + +0.0039374853114, +0.0024888366627, +0.0004806110458, -0.0015922444183, + -0.0030051703878, -0.0035717978848, -0.0033708578143, -0.0024745005875, + -0.0016425381904, -0.0009969447709, -0.0004159811986, -0.0006886016451, + -0.0016136310223, -0.0023668625147, -0.0027111633373, -0.0022735605170, + -0.0010542890717, +0.0003586368978, +0.0014632197415, +0.0018145710928, + +0.0014702702703, +0.0009539365452, +0.0003873090482, -0.0002007050529, + -0.0004016451234, -0.0001793184489, +0.0001363102233, +0.0002653349001, + -0.0000860164512, -0.0006669800235, -0.0006742655699, -0.0000789659224, + +0.0007816686251, +0.0018289071680, +0.0023882491187, +0.0020009400705, + +0.0011332549941, +0.0002366627497, -0.0003083431257, -0.0005092831962, + -0.0009682726204, -0.0016925969448, -0.0024169212691, -0.0029118683901, + -0.0027541715629, -0.0021085781434, -0.0014488836663, -0.0006169212691, + +0.0005236192714, +0.0020225616921, +0.0030051703878, +0.0030408930670, + +0.0024601645123, +0.0012839012926, -0.0000860164512, -0.0007172737955, + -0.0004876615746, +0.0003729729730, +0.0013913043478, +0.0018216216216, + +0.0016136310223, +0.0008176263220, -0.0003083431257, -0.0011905992949, + -0.0011976498237, -0.0004089306698, +0.0002869565217, +0.0004806110458, + +0.0005880141011, +0.0006455934195, +0.0004446533490, +0.0001649823737, + +0.0000430082256, +0.0003873090482, +0.0010399529965, +0.0014488836663, + +0.0014775558167, +0.0009252643948, -0.0003873090482, -0.0016712103408, + -0.0022232667450, -0.0019508813161, -0.0006383078731, +0.0012552291422, + +0.0029908343126, +0.0042314923619, +0.0041741480611, +0.0028329024677, + +0.0010615746181, -0.0008679200940, -0.0021515863690, -0.0020942420682, + -0.0011619271445, +0.0000573443008, +0.0009179788484, +0.0011546415981, + +0.0009539365452, +0.0000573443008, -0.0012909518214, -0.0020728554642, + -0.0020082256169, -0.0013052878966, -0.0001936545241, +0.0009323149236, + +0.0014989424207, +0.0012408930670, +0.0006526439483, +0.0002079905993, + -0.0000502937720, -0.0000716803760, +0.0000000000000, -0.0000789659224, + -0.0005809635723, -0.0012909518214, -0.0014488836663, -0.0009609870740, + -0.0001363102233, +0.0007316098707, +0.0013339600470, +0.0017285546416, + +0.0018648648649, +0.0014702702703, +0.0006813160987, -0.0001003525264, + -0.0004733254994, -0.0003943595770, -0.0001793184489, -0.0000933019976, + -0.0001290246769, -0.0000860164512, -0.0000072855464, +0.0000000000000, + +0.0001363102233, +0.0005593419506, +0.0009609870740, +0.0008535840188, + +0.0001076380729, -0.0007459459459, -0.0013482961222, -0.0016136310223, + -0.0011762632197, -0.0002079905993, +0.0006383078731, +0.0011259694477, + +0.0012049353702, +0.0004876615746, -0.0007243243243, -0.0016352526439, + -0.0018935370153, -0.0016279670975, -0.0011332549941, -0.0007243243243, + -0.0003656874266, -0.0000143360752, +0.0001433607521, +0.0002439482961, + +0.0003299647474, +0.0000286721504, -0.0006813160987, -0.0015992949471, + -0.0023882491187, -0.0025175088132, -0.0021301997650, -0.0015349001175, + -0.0006383078731, -0.0000216216216, +0.0001506462985, +0.0001793184489, + -0.0001219741481, -0.0004733254994, -0.0006312573443, -0.0010112808461, + -0.0016425381904, -0.0022665099882, -0.0024958871915, -0.0020512338425, + -0.0012192714454, -0.0003156286722, +0.0003800235018, +0.0006383078731, + +0.0004876615746, +0.0000000000000, -0.0005809635723, -0.0009396004700, + -0.0009969447709, -0.0008462984724, -0.0006312573443, -0.0004733254994, + -0.0004806110458, -0.0006383078731, -0.0007889541716, -0.0008893066980, + -0.0009826086957, -0.0012336075206, -0.0016712103408, -0.0018792009401, + -0.0018432432432, -0.0017212690952, -0.0013412455934, -0.0008606345476, + -0.0007029377203, -0.0008319623972, -0.0009109283196, -0.0008606345476, + -0.0011116333725, -0.0015349001175, -0.0016998824912, -0.0017642773208, + -0.0017499412456, -0.0015562867215, -0.0010686251469, -0.0004662749706, + -0.0001290246769, +0.0001506462985, +0.0004806110458, +0.0006813160987, + +0.0008893066980, +0.0007529964747, +0.0002582843713, -0.0002796709753, + -0.0009396004700, -0.0013482961222, -0.0012622796710, -0.0011116333725, + -0.0008965922444, -0.0007243243243, -0.0008893066980, -0.0011475910693, + -0.0013842538190, -0.0015492361927, -0.0013626321974, -0.0010183313749, + -0.0007099882491, -0.0002223266745, +0.0002223266745, +0.0005809635723, + +0.0007172737955, +0.0002582843713, -0.0007099882491, -0.0014632197415, + -0.0016568742656, -0.0015562867215, -0.0013913043478, -0.0009826086957, + -0.0003729729730, -0.0000430082256, +0.0000430082256, +0.0001290246769, + +0.0001720329025, +0.0003729729730, +0.0007673325499, +0.0006526439483, + +0.0000502937720, -0.0005809635723, -0.0010256169213, -0.0011259694477, + -0.0012336075206, -0.0014056404230, -0.0015062279671, -0.0016209165687, + -0.0015706227967, -0.0013052878966, -0.0011762632197, -0.0010615746181, + -0.0009753231492, -0.0009682726204, -0.0007889541716, -0.0003299647474, + +0.0001219741481, +0.0003656874266, +0.0005092831962, +0.0006383078731, + +0.0004089306698, -0.0001363102233, -0.0005379553467, -0.0005736780259, + -0.0004876615746, -0.0004949471210, -0.0004519388954, -0.0002509988249, + +0.0000716803760, +0.0003729729730, +0.0004806110458, +0.0004303172738, + +0.0002726204465, +0.0000646298472, -0.0001649823737, -0.0003083431257, + -0.0002439482961, -0.0001219741481, -0.0000933019976, -0.0001793184489, + -0.0003156286722, -0.0003586368978, -0.0003012925969, +0.0000359576968, + +0.0008176263220, +0.0014775558167, +0.0015706227967, +0.0010472385429, + +0.0002940070505, -0.0002439482961, -0.0005163337250, -0.0005736780259, + -0.0001863689777, +0.0004519388954, +0.0010399529965, +0.0014559341951, + +0.0015849588719, +0.0011762632197, +0.0003226792009, -0.0004519388954, + -0.0008176263220, -0.0007029377203, -0.0002582843713, +0.0002582843713, + +0.0006526439483, +0.0006383078731, +0.0003370152761, +0.0003156286722, + +0.0004446533490, +0.0003083431257, -0.0000072855464, -0.0003083431257, + -0.0004733254994, -0.0005092831962, -0.0002726204465, +0.0002796709753, + +0.0007602820212, +0.0009753231492, +0.0010686251469, +0.0009826086957, + +0.0009396004700, +0.0011833137485, +0.0012552291422, +0.0009179788484, + +0.0003943595770, -0.0001793184489, -0.0005952996475, -0.0006669800235, + -0.0003943595770, +0.0002152761457, +0.0009682726204, +0.0014918918919, + +0.0017642773208, +0.0018289071680, +0.0016209165687, +0.0012622796710, + +0.0009969447709, +0.0008606345476, +0.0007529964747, +0.0005880141011, + +0.0004232667450, +0.0003443008226, +0.0002726204465, +0.0002509988249, + +0.0003729729730, +0.0005092831962, +0.0006886016451, +0.0009896592244, + +0.0011546415981, +0.0010183313749, +0.0007029377203, +0.0003800235018, + +0.0003083431257, +0.0006455934195, +0.0011905992949, +0.0016568742656, + +0.0016712103408, +0.0012622796710, +0.0008319623972, +0.0006023501763, + +0.0005163337250, +0.0005092831962, +0.0005163337250, +0.0005809635723, + +0.0006239717979, +0.0006813160987, +0.0007172737955, +0.0005736780259, + +0.0004662749706, +0.0005952996475, +0.0007673325499, +0.0008392479436, + +0.0008679200940, +0.0008606345476, +0.0007816686251, +0.0005163337250, + +0.0001576968273, -0.0001720329025, -0.0003586368978, -0.0002366627497, + +0.0000860164512, +0.0004016451234, +0.0006669800235, +0.0008822561692, + +0.0009252643948, +0.0007960047004, +0.0007172737955, +0.0007386603995, + +0.0008535840188, +0.0011045828437, +0.0012479435958, +0.0011403055229, + +0.0009179788484, +0.0005593419506, +0.0002869565217, +0.0002152761457, + +0.0001720329025, +0.0002582843713, +0.0004089306698, +0.0003943595770, + +0.0002796709753, +0.0002582843713, +0.0003299647474, +0.0003299647474, + +0.0003083431257, +0.0003513513514, +0.0003800235018, +0.0003729729730, + +0.0003943595770, +0.0003729729730, +0.0003943595770, +0.0004806110458, + +0.0005522914219, +0.0003586368978, -0.0001146886016, -0.0004806110458, + -0.0004949471210, -0.0002509988249, +0.0001793184489, +0.0007029377203, + +0.0010829612221, +0.0012049353702, +0.0009826086957, +0.0005666274971, + +0.0002439482961, +0.0000286721504, -0.0000502937720, +0.0000072855464, + +0.0000430082256, -0.0000646298472, -0.0002796709753, -0.0005163337250, + -0.0006526439483, -0.0006669800235, -0.0005163337250, -0.0001793184489, + +0.0001576968273, +0.0003873090482, +0.0004662749706, +0.0002869565217, + -0.0000359576968, -0.0002439482961, -0.0003083431257, -0.0004446533490, + -0.0006383078731, -0.0007889541716, -0.0007529964747, -0.0002653349001, + +0.0005880141011, +0.0015205640423, +0.0021445358402, +0.0018862514689, + +0.0006526439483, -0.0009396004700, -0.0020942420682, -0.0022735605170, + -0.0015492361927, -0.0004016451234, +0.0006886016451, +0.0013626321974, + +0.0013842538190, +0.0008822561692, +0.0001146886016, -0.0006742655699, + -0.0011332549941, -0.0011546415981, -0.0009466509988, -0.0005163337250, + +0.0000072855464, +0.0004303172738, +0.0007029377203, +0.0006886016451, + +0.0003656874266, -0.0000430082256, -0.0004662749706, -0.0007243243243, + -0.0007602820212, -0.0006599294947, -0.0003873090482, -0.0002007050529, + -0.0002439482961, -0.0002079905993, -0.0001219741481, -0.0001290246769, + +0.0000000000000, +0.0001363102233, +0.0001506462985, +0.0001720329025, + +0.0000860164512, +0.0000646298472, +0.0002582843713, +0.0002007050529, + -0.0001649823737, -0.0006312573443, -0.0010183313749, -0.0008965922444, + -0.0005809635723, -0.0004303172738, -0.0001363102233, +0.0002582843713, + +0.0005092831962, +0.0005379553467, +0.0003370152761, +0.0003083431257, + +0.0003943595770, +0.0001003525264, -0.0002296122209, -0.0001290246769, + +0.0002223266745, +0.0005163337250, +0.0006599294947, +0.0006312573443, + +0.0004303172738, +0.0001146886016, -0.0003226792009, -0.0006239717979, + -0.0002726204465, +0.0004376028202, +0.0008032902468, +0.0008965922444, + +0.0009109283196, +0.0008319623972, +0.0006455934195, +0.0003083431257, + -0.0001576968273, -0.0006239717979, -0.0007816686251, -0.0005236192714, + -0.0000359576968, +0.0003083431257, +0.0004159811986, +0.0003729729730, + +0.0003156286722, +0.0003083431257, +0.0003586368978, +0.0004016451234, + +0.0004589894242, +0.0005809635723, +0.0007673325499, +0.0008535840188, + +0.0006813160987, +0.0004089306698, +0.0001076380729, -0.0001219741481, + -0.0000716803760, +0.0002509988249, +0.0006455934195, +0.0008535840188, + +0.0009179788484, +0.0009396004700, +0.0006813160987, +0.0002509988249, + +0.0000933019976, +0.0001863689777, +0.0003729729730, +0.0004806110458, + +0.0003943595770, +0.0004232667450, +0.0005163337250, +0.0004589894242, + +0.0003800235018, +0.0003226792009, +0.0001863689777, +0.0000430082256, + -0.0000286721504, +0.0000573443008, +0.0002653349001, +0.0004376028202, + +0.0007029377203, +0.0009609870740, +0.0010542890717, +0.0010615746181, + +0.0009109283196, +0.0006239717979, +0.0002796709753, -0.0000933019976, + -0.0002366627497, -0.0000789659224, +0.0001649823737, +0.0003943595770, + +0.0003943595770, +0.0002653349001, +0.0001936545241, +0.0001793184489, + +0.0002726204465, +0.0006169212691, +0.0009896592244, +0.0011332549941, + +0.0009252643948, +0.0005019976498, +0.0002152761457, +0.0001576968273, + +0.0001649823737, +0.0001219741481, +0.0000216216216, -0.0000646298472, + -0.0000789659224, -0.0000072855464, +0.0001720329025, +0.0002940070505, + +0.0002796709753, +0.0003083431257, +0.0004446533490, +0.0005666274971, + +0.0005952996475, +0.0004519388954, +0.0001793184489, -0.0001433607521, + -0.0004016451234, -0.0003443008226, -0.0000286721504, +0.0002509988249, + +0.0003800235018, +0.0002869565217, +0.0000573443008, -0.0001720329025, + -0.0003443008226, -0.0002940070505, -0.0000430082256, +0.0002439482961, + +0.0005236192714, +0.0006813160987, +0.0006239717979, +0.0004232667450, + +0.0001219741481, -0.0002869565217, -0.0006455934195, -0.0008032902468, + -0.0007243243243, -0.0004662749706, -0.0001793184489, +0.0000000000000, + +0.0000000000000, -0.0000860164512, -0.0001290246769, -0.0000716803760, + +0.0000789659224, +0.0002296122209, +0.0001863689777, -0.0000716803760, + -0.0004303172738, -0.0006096357227, -0.0005522914219, -0.0003656874266, + -0.0001290246769, -0.0000216216216, -0.0001433607521, -0.0003156286722, + -0.0003729729730, -0.0003226792009, -0.0003586368978, -0.0004589894242, + -0.0004232667450, -0.0003012925969, -0.0001936545241, -0.0000933019976, + -0.0001076380729, -0.0001863689777, -0.0002582843713, -0.0003443008226, + -0.0003656874266, -0.0002869565217, -0.0002079905993, -0.0002296122209, + -0.0003513513514, -0.0005163337250, -0.0005809635723, -0.0005019976498, + -0.0002940070505, +0.0000216216216, +0.0002726204465, +0.0003083431257, + +0.0002152761457, -0.0000216216216, -0.0003729729730, -0.0005809635723, + -0.0006096357227, -0.0005092831962, -0.0003443008226, -0.0002653349001, + -0.0002223266745, -0.0001649823737, -0.0001363102233, -0.0000789659224, + -0.0000430082256, -0.0001146886016, -0.0001863689777, -0.0002439482961, + -0.0002940070505, -0.0003513513514, -0.0004376028202, -0.0003656874266, + -0.0001290246769, +0.0000072855464, +0.0000286721504, +0.0001076380729, + +0.0001793184489, +0.0001506462985, -0.0000216216216, -0.0003586368978, + -0.0006886016451, -0.0009539365452, -0.0009969447709, -0.0007099882491, + -0.0003083431257, -0.0001146886016, -0.0002079905993, -0.0005306698002, + -0.0007316098707, -0.0006599294947, -0.0005019976498, -0.0003370152761, + -0.0002509988249, -0.0002940070505, -0.0003800235018, -0.0004662749706, + -0.0004016451234, -0.0000860164512, +0.0002152761457, +0.0001649823737, + -0.0002869565217, -0.0007386603995, -0.0008176263220, -0.0006383078731, + -0.0003513513514, -0.0000573443008, +0.0000286721504, -0.0001936545241, + -0.0005952996475, -0.0008103407756, -0.0007029377203, -0.0004376028202, + -0.0001793184489, -0.0001433607521, -0.0003299647474, -0.0005092831962, + -0.0005379553467, -0.0004016451234, -0.0002007050529, -0.0000573443008, + +0.0000716803760, +0.0001219741481, -0.0000216216216, -0.0002653349001, + -0.0004806110458, -0.0006742655699, -0.0008319623972, -0.0008103407756, + -0.0005809635723, -0.0003586368978, -0.0001793184489, -0.0000143360752, + +0.0000359576968, -0.0000286721504, -0.0002366627497, -0.0004589894242, + -0.0005593419506, -0.0005880141011, -0.0005306698002, -0.0004733254994, + -0.0005236192714, -0.0005019976498, -0.0003012925969, -0.0000143360752, + +0.0002079905993, +0.0002079905993, -0.0000216216216, -0.0003513513514, + -0.0006742655699, -0.0007960047004, -0.0006813160987, -0.0004159811986, + -0.0000430082256, +0.0001649823737, +0.0001433607521, +0.0000143360752, + -0.0003156286722, -0.0007673325499, -0.0009682726204, -0.0008749706228, + -0.0006239717979, -0.0002940070505, +0.0000716803760, +0.0003513513514, + +0.0003800235018, +0.0001793184489, -0.0001003525264, -0.0003370152761, + -0.0004589894242, -0.0005736780259, -0.0006599294947, -0.0006023501763, + -0.0005092831962, -0.0004949471210, -0.0005163337250, -0.0004876615746, + -0.0003443008226, -0.0001506462985, +0.0000143360752, +0.0001649823737, + +0.0002726204465, +0.0002509988249, +0.0000216216216, -0.0002366627497, + -0.0003443008226, -0.0003586368978, -0.0003226792009, -0.0002079905993, + -0.0001003525264, +0.0000000000000, +0.0000573443008, +0.0000000000000, + -0.0000716803760, -0.0001003525264, -0.0001219741481, -0.0001363102233, + -0.0001146886016, -0.0000573443008, -0.0000072855464, -0.0000216216216, + -0.0000860164512, -0.0001863689777, -0.0002726204465, -0.0002152761457, + -0.0001146886016, -0.0001363102233, -0.0002582843713, -0.0003226792009, + -0.0002726204465, -0.0002079905993, -0.0002509988249, -0.0002869565217, + -0.0002007050529, -0.0000716803760, +0.0001076380729, +0.0002869565217, + +0.0003370152761, +0.0002296122209, -0.0000286721504, -0.0003012925969, + -0.0003586368978, -0.0002796709753, -0.0001290246769, +0.0000359576968, + +0.0000502937720, -0.0001146886016, -0.0003443008226, -0.0004806110458, + -0.0004089306698, -0.0002152761457, -0.0000072855464, +0.0001076380729, + +0.0000072855464, -0.0001936545241, -0.0003729729730, -0.0004446533490, + -0.0003443008226, -0.0001433607521, +0.0000072855464, +0.0001003525264, + +0.0001506462985, +0.0001649823737, +0.0001146886016, +0.0000646298472, + +0.0000646298472, +0.0000860164512, +0.0001433607521, +0.0002509988249, + +0.0003873090482, +0.0004876615746, +0.0004876615746, +0.0003443008226, + +0.0000860164512, -0.0001720329025, -0.0003586368978, -0.0004733254994, + -0.0004876615746, -0.0003226792009, -0.0000646298472, +0.0000573443008, + +0.0000573443008, +0.0000430082256, +0.0000286721504, +0.0000502937720, + +0.0001219741481, +0.0001649823737, +0.0001576968273, +0.0000789659224, + -0.0000860164512, -0.0003012925969, -0.0004519388954, -0.0004159811986, + -0.0002152761457, -0.0000216216216, +0.0000430082256, +0.0000359576968, + -0.0000286721504, -0.0001433607521, -0.0002079905993, -0.0001649823737, + -0.0000646298472, +0.0000216216216, +0.0000072855464, -0.0001003525264, + -0.0002007050529, -0.0001720329025, -0.0000789659224, -0.0000143360752, + +0.0000072855464, -0.0000072855464, -0.0000573443008, -0.0000359576968, + +0.0000716803760, +0.0001649823737, +0.0001576968273, +0.0000286721504, + -0.0001290246769, -0.0002726204465, -0.0003586368978, -0.0002653349001, + -0.0000216216216, +0.0002007050529, +0.0003370152761, +0.0003299647474, + +0.0001793184489, +0.0000000000000, -0.0001146886016, -0.0000860164512, + +0.0000286721504, +0.0002079905993, +0.0003586368978, +0.0003656874266, + +0.0002509988249, +0.0000933019976, +0.0000143360752, +0.0000646298472, + +0.0001290246769, +0.0001720329025, +0.0001506462985, +0.0000143360752, + -0.0000860164512, -0.0001290246769, -0.0001506462985, -0.0000860164512, + +0.0000216216216, +0.0001433607521, +0.0002223266745, +0.0002079905993, + +0.0002079905993, +0.0002366627497, +0.0001793184489, +0.0000933019976, + +0.0000000000000, -0.0001146886016, -0.0001720329025, -0.0001363102233, + +0.0000359576968, +0.0002940070505, +0.0004519388954, +0.0005163337250, + +0.0005593419506, +0.0005593419506, +0.0005522914219, +0.0005092831962, + +0.0003586368978, +0.0001863689777, +0.0000286721504, -0.0001219741481, + -0.0002653349001, -0.0003370152761, -0.0002940070505, -0.0001793184489, + -0.0000716803760, +0.0000716803760, +0.0002296122209, +0.0003299647474, + +0.0003943595770, +0.0004232667450, +0.0004016451234, +0.0002869565217, + +0.0001076380729, +0.0000143360752, +0.0000716803760, +0.0001649823737, + +0.0002079905993, +0.0002152761457, +0.0002152761457, +0.0002653349001, + +0.0003083431257, +0.0001936545241, -0.0000286721504, -0.0002296122209, + -0.0003513513514, -0.0003656874266, -0.0002582843713, -0.0000502937720, + +0.0001720329025, +0.0003226792009, +0.0003800235018, +0.0003513513514, + +0.0002366627497, +0.0001076380729, -0.0000430082256, -0.0001720329025, + -0.0000789659224, +0.0002152761457, +0.0005019976498, +0.0006455934195, + +0.0005593419506, +0.0002869565217, -0.0000286721504, -0.0003226792009, + -0.0003943595770, -0.0001363102233, +0.0002366627497, +0.0005522914219, + +0.0006599294947, +0.0004662749706, +0.0000933019976, -0.0002366627497, + -0.0003800235018, -0.0002366627497, +0.0000000000000, +0.0001506462985, + +0.0002296122209, +0.0003226792009, +0.0004806110458, +0.0006383078731, + +0.0006383078731, +0.0005019976498, +0.0002869565217, +0.0000789659224, + +0.0000502937720, +0.0002366627497, +0.0005019976498, +0.0005809635723, + +0.0003800235018, +0.0001433607521, +0.0000286721504, -0.0000430082256, + -0.0000573443008, +0.0000716803760, +0.0002079905993, +0.0002439482961, + +0.0001936545241, +0.0000573443008, -0.0001003525264, -0.0001576968273, + -0.0000072855464, +0.0003370152761, +0.0007029377203, +0.0008392479436, + +0.0007243243243, +0.0004519388954, +0.0000860164512, -0.0001936545241, + -0.0003156286722, -0.0003299647474, -0.0002940070505, -0.0002007050529, + -0.0000789659224, +0.0000573443008, +0.0001433607521, +0.0001506462985, + +0.0001506462985, +0.0001649823737, +0.0001720329025, +0.0001076380729, + +0.0000000000000, -0.0001363102233, -0.0002079905993, -0.0001506462985, + +0.0000216216216, +0.0002007050529, +0.0002869565217, +0.0003226792009, + +0.0003586368978, +0.0003370152761, +0.0002079905993, +0.0000646298472, + +0.0000072855464, -0.0000143360752, -0.0001003525264, -0.0001506462985, + -0.0000502937720, +0.0001219741481, +0.0002796709753, +0.0004232667450, + +0.0005163337250, +0.0005163337250, +0.0004159811986, +0.0002366627497, + +0.0001219741481, +0.0001146886016, +0.0001363102233, +0.0001649823737, + +0.0002007050529, +0.0002079905993, +0.0001936545241, +0.0001863689777, + +0.0001576968273, +0.0001146886016, +0.0000860164512, +0.0000789659224, + +0.0001146886016, +0.0001793184489, +0.0002007050529, +0.0002726204465, + +0.0004446533490, +0.0006096357227, +0.0006669800235, +0.0005092831962, + +0.0001649823737, -0.0001720329025, -0.0003370152761, -0.0002223266745, + +0.0001363102233, +0.0005306698002, +0.0007602820212, +0.0007243243243, + +0.0004949471210, +0.0002439482961, +0.0000502937720, -0.0000789659224, + -0.0001219741481, -0.0000573443008, +0.0000216216216, +0.0000860164512, + +0.0001363102233, +0.0001936545241, +0.0002223266745, +0.0001936545241, + +0.0001863689777, +0.0002366627497, +0.0002509988249, +0.0001793184489, + +0.0000933019976, +0.0000286721504, +0.0000143360752, +0.0000502937720, + +0.0001290246769, +0.0002509988249, +0.0003226792009, +0.0003083431257, + +0.0002509988249, +0.0001649823737, +0.0001076380729, +0.0001076380729, + +0.0001290246769, +0.0001506462985, +0.0002223266745, +0.0002796709753, + +0.0002940070505, +0.0002439482961, +0.0001576968273, +0.0000502937720, + -0.0000216216216, -0.0000573443008, -0.0000286721504, +0.0000860164512, + +0.0002582843713, +0.0002869565217, +0.0001649823737, +0.0000716803760, + +0.0000430082256, +0.0000646298472, +0.0000933019976, +0.0001363102233, + +0.0002152761457, +0.0003083431257, +0.0003656874266, +0.0003299647474, + +0.0001936545241, +0.0000573443008, -0.0000716803760, -0.0001649823737, + -0.0001649823737, -0.0001363102233, -0.0001003525264, -0.0000216216216, + +0.0000000000000, -0.0000502937720, -0.0001649823737, -0.0002726204465, + -0.0002509988249, -0.0000933019976, +0.0000716803760, +0.0001720329025, + +0.0002152761457, +0.0002007050529, +0.0001506462985, +0.0001219741481, + +0.0001506462985, +0.0001506462985, +0.0001076380729, +0.0000359576968, + -0.0000359576968, -0.0000573443008, -0.0000072855464, +0.0000359576968, + +0.0000646298472, +0.0000359576968, -0.0000072855464, +0.0000143360752, + +0.0000789659224, +0.0000860164512, +0.0000430082256, +0.0000716803760, + +0.0001720329025, +0.0002726204465, +0.0002653349001, +0.0001363102233, + -0.0000430082256, -0.0002007050529, -0.0002296122209, -0.0001003525264, + +0.0000860164512, +0.0002439482961, +0.0002796709753, +0.0002079905993, + +0.0001290246769, +0.0000716803760, +0.0000573443008, +0.0000286721504, + -0.0000789659224, -0.0002007050529, -0.0002653349001, -0.0002366627497, + -0.0000789659224, +0.0000573443008, +0.0000789659224, +0.0000143360752, + -0.0001219741481, -0.0002223266745, -0.0001720329025, -0.0000286721504, + +0.0001076380729, +0.0001576968273, +0.0000646298472, -0.0000933019976, + -0.0002582843713, -0.0003586368978, -0.0003012925969, -0.0001433607521, + +0.0000143360752, +0.0000430082256, -0.0000716803760, -0.0001793184489, + -0.0002366627497, -0.0002439482961, -0.0001720329025, -0.0001290246769, + -0.0001003525264, -0.0000286721504, -0.0000072855464, -0.0000286721504, + -0.0000646298472, -0.0001506462985, -0.0002366627497, -0.0003012925969, + -0.0003370152761, -0.0003513513514, -0.0003156286722, -0.0002007050529, + -0.0000860164512, +0.0000143360752, +0.0001076380729, +0.0001003525264, + -0.0000072855464, -0.0001506462985, -0.0002439482961, -0.0002152761457, + -0.0001003525264, +0.0000286721504, +0.0001076380729, +0.0001290246769, + +0.0000716803760, -0.0000716803760, -0.0002296122209, -0.0002940070505, + -0.0003012925969, -0.0002223266745, -0.0000789659224, +0.0000143360752, + +0.0000646298472, +0.0001076380729, +0.0001290246769, +0.0000789659224, + -0.0000286721504, -0.0001506462985, -0.0002223266745, -0.0003012925969, + -0.0003443008226, -0.0002869565217, -0.0002296122209, -0.0002152761457, + -0.0002366627497, -0.0002796709753, -0.0002653349001, -0.0001863689777, + -0.0001003525264, -0.0000216216216, +0.0000000000000, -0.0000072855464, + -0.0000216216216, -0.0000933019976, -0.0001506462985, -0.0001863689777, + -0.0002007050529, -0.0001936545241, -0.0001863689777, -0.0001936545241, + -0.0001793184489, -0.0001076380729, +0.0000000000000, +0.0000789659224, + +0.0000933019976, +0.0000502937720, -0.0000502937720, -0.0001720329025, + -0.0002439482961, -0.0002940070505, -0.0002869565217, -0.0002007050529, + -0.0001146886016, -0.0000646298472, -0.0000502937720, -0.0000072855464, + +0.0001219741481, +0.0002152761457, +0.0001433607521, -0.0000286721504, + -0.0002509988249, -0.0004016451234, -0.0004446533490, -0.0004232667450, + -0.0003083431257, -0.0001576968273, -0.0000933019976, -0.0000646298472, + -0.0000359576968, +0.0000072855464, +0.0000646298472, +0.0000000000000, + -0.0001649823737, -0.0003083431257, -0.0003729729730, -0.0002940070505, + -0.0001219741481, +0.0000216216216, +0.0001146886016, +0.0001076380729, + -0.0000072855464, -0.0002079905993, -0.0004016451234, -0.0004446533490, + -0.0003012925969, -0.0000716803760, +0.0000716803760, +0.0000789659224, + +0.0000072855464, -0.0000646298472, -0.0001003525264, -0.0001433607521, + -0.0001649823737, -0.0001433607521, -0.0001363102233, -0.0001720329025, + -0.0002582843713, -0.0003083431257, -0.0002439482961, -0.0000933019976, + +0.0000430082256, +0.0001433607521, +0.0001793184489, +0.0001290246769, + +0.0000359576968, -0.0000286721504, -0.0000502937720, -0.0000860164512, + -0.0001506462985, -0.0002296122209, -0.0002940070505, -0.0003226792009, + -0.0003443008226, -0.0003156286722, -0.0002366627497, -0.0001433607521, + -0.0000359576968, +0.0001076380729, +0.0002869565217, +0.0004159811986, + +0.0003873090482, +0.0001936545241, -0.0000430082256, -0.0002296122209, + -0.0002653349001, -0.0001863689777, -0.0000646298472, +0.0000573443008, + +0.0000646298472, -0.0000860164512, -0.0002653349001, -0.0003299647474, + -0.0002582843713, -0.0001290246769, -0.0000430082256, -0.0000359576968, + -0.0001363102233, -0.0002940070505, -0.0003656874266, -0.0002796709753, + -0.0001076380729, -0.0000143360752, -0.0000573443008, -0.0001649823737, + -0.0002653349001, -0.0002582843713, -0.0001003525264, +0.0001076380729, + +0.0002726204465, +0.0003226792009, +0.0002366627497, +0.0001219741481, + +0.0000000000000, -0.0000860164512, -0.0001506462985, -0.0002582843713, + -0.0003729729730, -0.0004376028202, -0.0004446533490, -0.0003513513514, + -0.0002079905993, -0.0000573443008, +0.0001146886016, +0.0001793184489, + +0.0000789659224, -0.0000502937720, -0.0001290246769, -0.0001363102233, + -0.0000716803760, +0.0000000000000, +0.0000789659224, +0.0001506462985, + +0.0001576968273, +0.0000646298472, -0.0000646298472, -0.0001363102233, + -0.0001003525264, -0.0000216216216, +0.0000573443008, +0.0001219741481, + +0.0001363102233, +0.0000860164512, -0.0000286721504, -0.0001576968273, + -0.0002079905993, -0.0002296122209, -0.0002796709753, -0.0003226792009, + -0.0002796709753, -0.0001863689777, -0.0000573443008, +0.0000716803760, + +0.0001863689777, +0.0002439482961, +0.0002509988249, +0.0001793184489, + +0.0000860164512, +0.0000143360752, -0.0000716803760, -0.0001793184489, + -0.0001720329025, -0.0000646298472, +0.0000072855464, +0.0000072855464, + -0.0000216216216, -0.0000789659224, -0.0001649823737, -0.0002296122209, + -0.0002152761457, -0.0001003525264, +0.0001146886016, +0.0003513513514, + +0.0004376028202, +0.0003513513514, +0.0001290246769, -0.0001576968273, + -0.0003800235018, -0.0003943595770, -0.0002296122209, -0.0000072855464, + +0.0001146886016, +0.0000573443008, -0.0001219741481, -0.0002940070505, + -0.0003156286722, -0.0001720329025, +0.0000860164512, +0.0003299647474, + +0.0004159811986, +0.0003370152761, +0.0002007050529, +0.0000933019976, + +0.0000072855464, -0.0000716803760, -0.0001720329025, -0.0002653349001, + -0.0002869565217, -0.0002296122209, -0.0001219741481, +0.0000072855464, + +0.0001219741481, +0.0001936545241, +0.0001936545241, +0.0001076380729, + +0.0000573443008, +0.0000716803760, +0.0001219741481, +0.0001793184489, + +0.0001793184489, +0.0000933019976, -0.0000143360752, -0.0001219741481, + -0.0001720329025, -0.0001076380729, -0.0000216216216, +0.0000000000000, + +0.0000000000000, +0.0000000000000, +0.0000000000000, +0.0000286721504, + +0.0000286721504, +0.0000216216216, +0.0000072855464, -0.0000430082256, + -0.0000646298472, +0.0000000000000, +0.0000933019976, +0.0001720329025, + +0.0001863689777, +0.0001219741481, +0.0000000000000, -0.0001720329025, + -0.0002869565217, -0.0002653349001, -0.0001076380729, +0.0001219741481, + +0.0003443008226, +0.0004446533490, +0.0004016451234, +0.0002439482961, + +0.0000286721504, -0.0001363102233, -0.0002439482961, -0.0002582843713, + -0.0001720329025, -0.0000286721504, +0.0001219741481, +0.0002296122209, + +0.0002439482961, +0.0001649823737, +0.0000359576968, -0.0000933019976, + -0.0001793184489, -0.0001576968273, -0.0000716803760, +0.0000143360752, + +0.0001003525264, +0.0001863689777, +0.0002439482961, +0.0003012925969, + +0.0003370152761, +0.0003083431257, +0.0002079905993, +0.0000000000000, + -0.0002007050529, -0.0003370152761, -0.0003873090482, -0.0003012925969, + -0.0001219741481, +0.0000286721504, +0.0001146886016, +0.0001219741481, + +0.0000573443008, +0.0000000000000, -0.0000359576968, +0.0000000000000, + +0.0000716803760, +0.0001219741481, +0.0001720329025, +0.0001506462985, + +0.0000573443008, -0.0000216216216, -0.0000860164512, -0.0001363102233, + -0.0001433607521, -0.0001146886016, -0.0000430082256, +0.0000573443008, + +0.0001649823737, +0.0002439482961, +0.0002296122209, +0.0001793184489, + +0.0001649823737, +0.0001433607521, +0.0001146886016, +0.0000716803760, + +0.0000143360752, +0.0000000000000, +0.0000430082256, +0.0001363102233, + +0.0002582843713, +0.0003370152761, +0.0003299647474, +0.0002366627497, + +0.0001146886016, -0.0000286721504, -0.0001506462985, -0.0001649823737, + -0.0000573443008, +0.0000143360752, +0.0000143360752, -0.0000216216216, + -0.0000359576968, +0.0000072855464, +0.0000933019976, +0.0001793184489, + +0.0002509988249, +0.0002366627497, +0.0001363102233, +0.0000216216216, + -0.0000573443008, -0.0001003525264, -0.0001076380729, -0.0000646298472, + +0.0000000000000, +0.0000646298472, +0.0001146886016, +0.0001290246769, + +0.0001146886016, +0.0000933019976, +0.0000716803760, +0.0000933019976, + +0.0001506462985, +0.0001863689777, +0.0002152761457, +0.0002007050529, + +0.0001433607521, +0.0000860164512, +0.0000000000000, -0.0000502937720, + -0.0000359576968, -0.0000216216216, -0.0000359576968, -0.0000573443008, + -0.0000933019976, -0.0000716803760, -0.0000502937720, -0.0000646298472, + -0.0000646298472, -0.0000072855464, +0.0000933019976, +0.0002007050529, + +0.0002582843713, +0.0002366627497, +0.0001863689777, +0.0001649823737, + +0.0002079905993, +0.0002940070505, +0.0003943595770, +0.0004519388954, + +0.0004159811986, +0.0002439482961, +0.0000072855464, -0.0001433607521, + -0.0001290246769, +0.0000359576968, +0.0002223266745, +0.0002869565217, + +0.0001936545241, +0.0000716803760, +0.0000143360752, +0.0000359576968, + +0.0001003525264, +0.0001936545241, +0.0002726204465, +0.0002582843713, + +0.0001793184489, +0.0001219741481, +0.0001290246769, +0.0001433607521, + +0.0001649823737, +0.0001793184489, +0.0001433607521, +0.0001363102233, + +0.0001936545241, +0.0002509988249, +0.0002796709753, +0.0002869565217, + +0.0002940070505, +0.0002726204465, +0.0002152761457, +0.0001576968273, + +0.0001363102233, +0.0001576968273, +0.0002223266745, +0.0002439482961, + +0.0001793184489, +0.0000573443008, -0.0000716803760, -0.0001863689777, + -0.0002079905993, -0.0001290246769, +0.0000000000000, +0.0001433607521, + +0.0002509988249, +0.0002509988249, +0.0001363102233, +0.0000143360752, + -0.0000143360752, +0.0000502937720, +0.0001506462985, +0.0002296122209, + +0.0002079905993, +0.0000716803760, -0.0000646298472, -0.0000933019976, + +0.0000000000000, +0.0001863689777, +0.0003226792009, +0.0003012925969, + +0.0001793184489, +0.0000573443008, +0.0000000000000, -0.0000143360752, + -0.0000286721504, -0.0000430082256, -0.0000646298472, -0.0000716803760, + -0.0000646298472, -0.0000430082256, -0.0000359576968, -0.0000430082256, + -0.0000716803760, -0.0001003525264, -0.0001003525264, -0.0000573443008, + +0.0000286721504, +0.0001146886016, +0.0001003525264, -0.0000072855464, + -0.0001146886016, -0.0001433607521, -0.0000573443008, +0.0001076380729, + +0.0002653349001, +0.0003226792009, +0.0002439482961, +0.0000430082256, + -0.0001146886016, -0.0001649823737, -0.0001506462985, -0.0001219741481, + -0.0001290246769, -0.0001793184489, -0.0001793184489, -0.0000860164512, + +0.0000143360752, +0.0000573443008, +0.0000143360752, -0.0000646298472, + -0.0001219741481, -0.0001146886016, -0.0000430082256, +0.0000359576968, + +0.0000716803760, +0.0000430082256, -0.0000286721504, -0.0001290246769, + -0.0001863689777, -0.0001649823737, -0.0000789659224, +0.0000286721504, + +0.0001219741481, +0.0001720329025, +0.0001793184489, +0.0001433607521, + +0.0000789659224, +0.0000000000000, -0.0000573443008, -0.0000502937720, + +0.0000000000000, +0.0000216216216, -0.0000143360752, -0.0001003525264, + -0.0002007050529, -0.0002726204465, -0.0003083431257, -0.0003083431257, + -0.0002223266745, -0.0000646298472, +0.0000646298472, +0.0001290246769, + +0.0001003525264, +0.0000000000000, -0.0001219741481, -0.0002079905993, + -0.0002007050529, -0.0001649823737, -0.0001506462985, -0.0001290246769, + -0.0000789659224, -0.0000216216216, +0.0000000000000, +0.0000143360752, + +0.0000286721504, +0.0000430082256, +0.0000573443008, +0.0000286721504, + -0.0000286721504, -0.0000716803760, -0.0000789659224, -0.0000716803760, + -0.0000860164512, -0.0001146886016, -0.0001076380729, -0.0000789659224, + -0.0000860164512, -0.0001146886016, -0.0001219741481, -0.0000933019976, + -0.0000072855464, +0.0001003525264, +0.0001576968273, +0.0001433607521, + +0.0000716803760, -0.0000143360752, -0.0000646298472, -0.0000716803760, + -0.0000789659224, -0.0000430082256, -0.0000143360752, +0.0000000000000, + +0.0000430082256, +0.0001076380729, +0.0001936545241, +0.0002869565217, + +0.0003370152761, +0.0003226792009, +0.0002223266745, +0.0000573443008, + -0.0001003525264, -0.0002223266745, -0.0002366627497, -0.0001003525264, + +0.0000860164512, +0.0002007050529, +0.0001936545241, +0.0001076380729, + +0.0000573443008, +0.0000789659224, +0.0001290246769, +0.0001936545241, + +0.0002079905993, +0.0001649823737, +0.0000860164512, -0.0000216216216, + -0.0001219741481, -0.0001433607521, -0.0001146886016, -0.0000502937720, + +0.0000286721504, +0.0001076380729, +0.0001506462985, +0.0001433607521, + +0.0001076380729, +0.0000502937720, -0.0000216216216, -0.0000573443008, + -0.0000573443008, -0.0000216216216, +0.0000216216216, +0.0000573443008, + +0.0000502937720, +0.0000216216216, -0.0000359576968, -0.0000860164512, + -0.0000933019976, -0.0000716803760, -0.0000072855464, +0.0000216216216, + +0.0000143360752, -0.0000143360752, -0.0000573443008, -0.0000646298472, + +0.0000072855464, +0.0000933019976, +0.0001003525264, +0.0000502937720, + +0.0000000000000, -0.0000430082256, -0.0000933019976, -0.0001576968273, + -0.0001793184489, -0.0001506462985, -0.0000716803760, +0.0000143360752, + +0.0000860164512, +0.0001290246769, +0.0001146886016, +0.0000286721504, + -0.0000573443008, -0.0001363102233, -0.0001720329025, -0.0001506462985, + -0.0000860164512, -0.0000286721504, +0.0000000000000, -0.0000286721504, + -0.0000933019976, -0.0001146886016, -0.0000646298472, +0.0000000000000, + +0.0000430082256, +0.0000286721504, +0.0000000000000, -0.0000143360752, + -0.0000286721504, -0.0000286721504, -0.0000286721504, -0.0000359576968, + -0.0000216216216, +0.0000143360752, +0.0000430082256, +0.0000286721504, + -0.0000072855464, -0.0000430082256, -0.0000716803760, -0.0000716803760, + -0.0000502937720, -0.0000430082256, -0.0000860164512, -0.0001720329025, + -0.0002152761457, -0.0001793184489, -0.0000716803760, +0.0000430082256, + +0.0001219741481, +0.0001363102233, +0.0000716803760, -0.0000359576968, + -0.0001290246769, -0.0001793184489, -0.0001936545241, -0.0001649823737, + -0.0001219741481, -0.0000933019976, -0.0000716803760, -0.0000143360752, + +0.0000502937720, +0.0001003525264, +0.0000933019976, +0.0000216216216, + -0.0000716803760, -0.0001290246769, -0.0001290246769, -0.0000716803760, + -0.0000359576968, -0.0000789659224, -0.0001793184489, -0.0002653349001, + -0.0002796709753, -0.0002079905993, -0.0000789659224, +0.0000573443008, + +0.0001506462985, +0.0001720329025, +0.0001576968273, +0.0001363102233, + +0.0001003525264, +0.0000502937720, -0.0000286721504, -0.0001219741481, + -0.0001649823737, -0.0001433607521, -0.0000860164512, -0.0000072855464, + +0.0000430082256, +0.0000430082256, -0.0000143360752, -0.0000860164512, + -0.0001290246769, -0.0001290246769, -0.0000789659224, -0.0000286721504, + +0.0000000000000, -0.0000216216216, -0.0000860164512, -0.0001433607521, + -0.0001793184489, -0.0001649823737, -0.0000933019976, -0.0000072855464, + +0.0000573443008, +0.0001003525264, +0.0001003525264, +0.0000430082256, + -0.0000430082256, -0.0001576968273, -0.0002366627497, -0.0002653349001, + -0.0002079905993, -0.0000789659224, +0.0000789659224, +0.0002079905993, + +0.0002366627497, +0.0001720329025, +0.0000430082256, -0.0001003525264, + -0.0002223266745, -0.0002940070505, -0.0003012925969, -0.0002366627497, + -0.0001076380729, +0.0000072855464, +0.0000933019976, +0.0001219741481, + +0.0001076380729, +0.0000502937720, -0.0000430082256, -0.0001433607521, + -0.0001649823737, -0.0001003525264, +0.0000000000000, +0.0000646298472, + +0.0000789659224, +0.0000716803760, +0.0000573443008, +0.0000000000000, + -0.0000646298472, -0.0001219741481, -0.0001506462985, -0.0001649823737, + -0.0001576968273, -0.0001290246769, -0.0000789659224, -0.0000216216216, + +0.0000216216216, +0.0000216216216, -0.0000072855464, -0.0000502937720, + -0.0000646298472, -0.0000143360752, +0.0000286721504, +0.0000359576968, + +0.0000000000000, -0.0000216216216, -0.0000502937720, -0.0000789659224, + -0.0000789659224, -0.0000716803760, -0.0000286721504, +0.0000143360752, + +0.0000716803760, +0.0000933019976, +0.0000789659224, +0.0000430082256, + +0.0000000000000, -0.0000143360752, -0.0000286721504, -0.0000286721504, + -0.0000216216216, -0.0000286721504, -0.0000286721504, -0.0000216216216, + -0.0000072855464, +0.0000000000000, +0.0000000000000, +0.0000000000000, + -0.0000143360752, -0.0000143360752, +0.0000000000000, +0.0000000000000, + +0.0000000000000, +0.0000000000000, +0.0000000000000, +0.0000000000000 +}; diff --git a/plugins/ladspa_effect/swh/impulses/10-fender-bassman-at4050.h b/plugins/ladspa_effect/swh/impulses/10-fender-bassman-at4050.h new file mode 100644 index 000000000..912ff80ee --- /dev/null +++ b/plugins/ladspa_effect/swh/impulses/10-fender-bassman-at4050.h @@ -0,0 +1,797 @@ +float fender_bassman_at4050[] = { + +0.0000000000000, +0.0000000000000, +0.0000000000000, +0.0000000000000, + +0.0000000000000, +0.0000075609756, +0.0000075609756, +0.0000075609756, + +0.0000000000000, +0.0000000000000, -0.0000148780488, -0.0000297560976, + -0.0000297560976, -0.0000224390244, +0.0000000000000, +0.0000224390244, + +0.0000595121951, +0.0000743902439, +0.0000670731707, +0.0000373170732, + +0.0000000000000, -0.0000373170732, -0.0000743902439, -0.0000819512195, + -0.0000521951220, -0.0000075609756, +0.0000297560976, +0.0000743902439, + +0.0000968292683, +0.0000819512195, +0.0000521951220, +0.0000000000000, + -0.0000224390244, -0.0000446341463, -0.0000373170732, -0.0000075609756, + +0.0000224390244, +0.0000670731707, +0.0001117073171, +0.0001339024390, + +0.0001414634146, +0.0001339024390, +0.0001265853659, +0.0001041463415, + +0.0000743902439, +0.0000521951220, +0.0000224390244, +0.0000075609756, + +0.0000000000000, +0.0000075609756, +0.0000297560976, +0.0000595121951, + +0.0000968292683, +0.0001265853659, +0.0001414634146, +0.0001414634146, + +0.0001190243902, +0.0000968292683, +0.0000743902439, +0.0000670731707, + +0.0000670731707, +0.0000892682927, +0.0001117073171, +0.0001339024390, + +0.0001339024390, +0.0001265853659, +0.0000968292683, +0.0000521951220, + +0.0000000000000, -0.0000148780488, -0.0000148780488, +0.0000000000000, + +0.0000297560976, +0.0000743902439, +0.0001117073171, +0.0001041463415, + +0.0000670731707, -0.0000148780488, -0.0001339024390, -0.0002456097561, + -0.0003200000000, -0.0003275609756, -0.0002456097561, -0.0000968292683, + +0.0000819512195, +0.0002680487805, +0.0003943902439, +0.0004317073171, + +0.0003573170732, +0.0002009756098, +0.0000075609756, -0.0001636585366, + -0.0002680487805, -0.0002829268293, -0.0002158536585, -0.0001041463415, + +0.0000000000000, +0.0000521951220, +0.0000446341463, -0.0000224390244, + -0.0001190243902, -0.0001860975610, -0.0001860975610, -0.0000892682927, + +0.0000743902439, +0.0002753658537, +0.0004392682927, +0.0005136585366, + +0.0004690243902, +0.0003051219512, +0.0000670731707, -0.0001785365854, + -0.0003573170732, -0.0004243902439, -0.0003573170732, -0.0001785365854, + +0.0000521951220, +0.0002829268293, +0.0004392682927, +0.0004912195122, + +0.0004317073171, +0.0003126829268, +0.0001712195122, +0.0000595121951, + +0.0000000000000, -0.0000075609756, +0.0000075609756, +0.0000373170732, + +0.0000521951220, +0.0000446341463, +0.0000224390244, +0.0000224390244, + +0.0000595121951, +0.0001487804878, +0.0002829268293, +0.0004243902439, + +0.0005285365854, +0.0005507317073, +0.0004614634146, +0.0002902439024, + +0.0000670731707, -0.0001265853659, -0.0002531707317, -0.0002531707317, + -0.0001414634146, +0.0000521951220, +0.0002680487805, +0.0004317073171, + +0.0005060975610, +0.0004690243902, +0.0003497560976, +0.0001860975610, + +0.0000297560976, -0.0000670731707, -0.0001117073171, -0.0001041463415, + -0.0000743902439, -0.0000446341463, -0.0000297560976, -0.0000373170732, + -0.0000521951220, -0.0000521951220, -0.0000297560976, +0.0000224390244, + +0.0000892682927, +0.0001487804878, +0.0001934146341, +0.0002082926829, + +0.0001785365854, +0.0001190243902, +0.0000148780488, -0.0001041463415, + -0.0002604878049, -0.0004092682927, -0.0005285365854, -0.0005731707317, + -0.0005434146341, -0.0004243902439, -0.0002382926829, -0.0000224390244, + +0.0001487804878, +0.0002680487805, +0.0002902439024, +0.0002234146341, + +0.0001117073171, +0.0000075609756, -0.0000373170732, -0.0000075609756, + +0.0000819512195, +0.0001860975610, +0.0002307317073, +0.0001712195122, + -0.0000148780488, -0.0003051219512, -0.0006102439024, -0.0008336585366, + -0.0009007317073, -0.0007814634146, -0.0004987804878, -0.0001339024390, + +0.0002158536585, +0.0004987804878, +0.0006848780488, +0.0007665853659, + +0.0007814634146, +0.0007741463415, +0.0007295121951, +0.0006402439024, + +0.0004763414634, +0.0002158536585, -0.0001117073171, -0.0004541463415, + -0.0007219512195, -0.0008409756098, -0.0007517073171, -0.0004763414634, + -0.0001041463415, +0.0002531707317, +0.0005060975610, +0.0005880487805, + +0.0004987804878, +0.0003126829268, +0.0001117073171, +0.0000000000000, + +0.0000297560976, +0.0001785365854, +0.0003870731707, +0.0005656097561, + +0.0006402439024, +0.0005731707317, +0.0004019512195, +0.0001860975610, + +0.0000000000000, -0.0001339024390, -0.0001860975610, -0.0001860975610, + -0.0001712195122, -0.0001487804878, -0.0001487804878, -0.0001414634146, + -0.0001041463415, -0.0000595121951, -0.0000297560976, -0.0000670731707, + -0.0002082926829, -0.0004690243902, -0.0007814634146, -0.0010346341463, + -0.0011017073171, -0.0008858536585, -0.0003721951220, +0.0003200000000, + +0.0010121951220, +0.0015036585366, +0.0015929268293, +0.0012653658537, + +0.0005656097561, -0.0003200000000, -0.0012058536585, -0.0018607317073, + -0.0022553658537, -0.0023000000000, -0.0020765853659, -0.0017863414634, + -0.0011834146341, -0.0007665853659, -0.0003573170732, +0.0001041463415, + +0.0005060975610, +0.0006402439024, +0.0005804878049, +0.0002604878049, + -0.0001563414634, -0.0006700000000, -0.0010197560976, -0.0011909756098, + -0.0011017073171, -0.0008187804878, -0.0004541463415, -0.0002082926829, + -0.0001860975610, -0.0005136585366, -0.0009526829268, -0.0014587804878, + -0.0017343902439, -0.0017046341463, -0.0012429268293, -0.0006921951220, + -0.0002456097561, -0.0001414634146, -0.0004690243902, -0.0011760975610, + -0.0021734146341, -0.0030070731707, -0.0038109756098, -0.0043914634146, + -0.0046446341463, -0.0060141463415, -0.0069968292683, -0.0061109756098, + -0.0112765853659, -0.0028880487805, -0.0133160975610, -0.0158468292683, + +0.0111129268293, +0.0523563414634, +0.0271829268293, -0.0940314634146, + -0.1121929268293, -0.0270787804878, -0.0056346341463, +0.0788768292683, + +0.2205675609756, +0.2438875609756, +0.2013341463415, +0.0987726829268, + -0.0169558536585, -0.0634765853659, -0.1072729268293, -0.1181478048780, + -0.0854714634146, -0.0759143902439, -0.0531675609756, -0.0438039024390, + -0.0118051219512, +0.0427692682927, +0.0578568292683, +0.0620697560976, + +0.0631565853659, +0.0263492682927, +0.0067734146341, +0.0035726829268, + -0.0035280487805, +0.0041309756098, -0.0034239024390, -0.0248382926829, + -0.0334651219512, -0.0292895121951, -0.0248382926829, -0.0094009756098, + +0.0009526829268, +0.0068702439024, +0.0107182926829, +0.0067360975610, + +0.0072795121951, +0.0015853658537, -0.0085970731707, -0.0055304878049, + -0.0116785365854, -0.0262004878049, -0.0176853658537, -0.0189507317073, + -0.0246968292683, -0.0144697560976, -0.0078900000000, -0.0042873170732, + -0.0071158536585, -0.0094231707317, -0.0066841463415, -0.0096539024390, + -0.0071678048780, +0.0035356097561, +0.0047041463415, +0.0074358536585, + +0.0050241463415, +0.0031187804878, +0.0093934146341, +0.0041160975610, + +0.0022851219512, +0.0048009756098, -0.0053741463415, -0.0188985365854, + -0.0271607317073, -0.0242131707317, -0.0158914634146, -0.0160329268293, + -0.0143953658537, -0.0037663414634, +0.0031409756098, +0.0113734146341, + +0.0114775609756, +0.0096168292683, +0.0090882926829, -0.0007592682927, + -0.0072573170732, -0.0109268292683, -0.0189953658537, -0.0182658536585, + -0.0130407317073, -0.0115148780488, -0.0068329268293, -0.0076814634146, + -0.0087534146341, -0.0070117073171, -0.0061853658537, -0.0031782926829, + +0.0008485365854, -0.0012653658537, -0.0034314634146, -0.0052773170732, + -0.0105768292683, -0.0125419512195, -0.0067809756098, +0.0012504878049, + +0.0084629268293, +0.0103982926829, +0.0069073170732, +0.0015407317073, + -0.0062821951220, -0.0092668292683, -0.0043170731707, +0.0008112195122, + +0.0006251219512, -0.0027317073171, -0.0044512195122, -0.0069668292683, + -0.0116860975610, -0.0127578048780, -0.0122963414634, -0.0119912195122, + -0.0087012195122, -0.0048829268293, -0.0025680487805, -0.0023892682927, + -0.0017641463415, +0.0001934146341, +0.0027019512195, +0.0068775609756, + +0.0097358536585, +0.0112617073171, +0.0144548780488, +0.0131673170732, + +0.0073019512195, +0.0018904878049, -0.0044809756098, -0.0090585365854, + -0.0136882926829, -0.0167921951220, -0.0142241463415, -0.0103536585366, + -0.0067063414634, -0.0028136585366, -0.0022329268293, -0.0010270731707, + +0.0002531707317, +0.0000743902439, +0.0016673170732, +0.0036770731707, + +0.0049348780488, +0.0060960975610, +0.0060663414634, +0.0067436585366, + +0.0074582926829, +0.0059770731707, +0.0046968292683, +0.0042278048780, + +0.0033792682927, +0.0030295121951, +0.0032378048780, +0.0029624390244, + +0.0029848780488, +0.0042724390244, +0.0060812195122, +0.0066246341463, + +0.0060068292683, +0.0058653658537, +0.0064458536585, +0.0062524390244, + +0.0051434146341, +0.0028804878049, +0.0017195121951, +0.0030814634146, + +0.0039375609756, +0.0037141463415, +0.0037960975610, +0.0044360975610, + +0.0045626829268, +0.0029400000000, +0.0006251219512, -0.0016151219512, + -0.0015929268293, +0.0024041463415, +0.0082621951220, +0.0125865853659, + +0.0135914634146, +0.0116041463415, +0.0093041463415, +0.0064160975610, + +0.0024563414634, -0.0001712195122, -0.0003795121951, -0.0000148780488, + +0.0014736585366, +0.0040417073171, +0.0056346341463, +0.0076814634146, + +0.0094380487805, +0.0103239024390, +0.0094456097561, +0.0069743902439, + +0.0068107317073, +0.0081429268293, +0.0061258536585, +0.0040565853659, + +0.0041682926829, +0.0057239024390, +0.0076143902439, +0.0057165853659, + +0.0016895121951, -0.0002829268293, -0.0009007317073, +0.0006029268293, + +0.0035951219512, +0.0057685365854, +0.0080612195122, +0.0092446341463, + +0.0073985365854, +0.0045775609756, +0.0025158536585, +0.0005285365854, + -0.0008187804878, -0.0009080487805, -0.0001934146341, +0.0021139024390, + +0.0047934146341, +0.0066990243902, +0.0076814634146, +0.0064309756098, + +0.0041012195122, +0.0027839024390, +0.0033717073171, +0.0041385365854, + +0.0036026829268, +0.0042278048780, +0.0050092682927, +0.0030368292683, + +0.0007295121951, -0.0008039024390, -0.0019873170732, -0.0030295121951, + -0.0038631707317, -0.0035356097561, -0.0015556097561, +0.0016895121951, + +0.0046743902439, +0.0056792682927, +0.0060217073171, +0.0066021951220, + +0.0069221951220, +0.0057165853659, +0.0025231707317, -0.0009304878049, + -0.0036100000000, -0.0051582926829, -0.0047041463415, -0.0021287804878, + +0.0001712195122, +0.0007517073171, +0.0013621951220, +0.0018682926829, + +0.0012131707317, +0.0010270731707, +0.0008336585366, -0.0002902439024, + -0.0005804878049, -0.0003051219512, -0.0000075609756, +0.0004839024390, + -0.0000373170732, -0.0007592682927, -0.0011239024390, -0.0013621951220, + -0.0019575609756, -0.0033270731707, -0.0036992682927, -0.0025158536585, + -0.0015853658537, -0.0010792682927, +0.0002680487805, +0.0010568292683, + +0.0005209756098, +0.0000670731707, -0.0013324390244, -0.0026721951220, + -0.0031409756098, -0.0039673170732, -0.0042053658537, -0.0045329268293, + -0.0057165853659, -0.0054634146341, -0.0046446341463, -0.0027690243902, + +0.0000968292683, +0.0020990243902, +0.0043692682927, +0.0052251219512, + +0.0027763414634, -0.0006326829268, -0.0040268292683, -0.0065426829268, + -0.0069446341463, -0.0065278048780, -0.0046743902439, -0.0016002439024, + +0.0013546341463, +0.0024636585366, +0.0011612195122, -0.0008709756098, + -0.0023670731707, -0.0038853658537, -0.0040641463415, -0.0028358536585, + -0.0028285365854, -0.0025531707317, -0.0014812195122, -0.0007814634146, + +0.0001712195122, +0.0005507317073, +0.0006178048780, -0.0002753658537, + -0.0027912195122, -0.0035802439024, -0.0030665853659, -0.0034982926829, + -0.0031858536585, -0.0026497560976, -0.0011760975610, +0.0012280487805, + +0.0015929268293, +0.0013919512195, -0.0002531707317, -0.0025456097561, + -0.0024934146341, -0.0028731707317, -0.0038780487805, -0.0035207317073, + -0.0037217073171, -0.0029029268293, -0.0014514634146, -0.0019651219512, + -0.0017195121951, -0.0009007317073, -0.0008187804878, -0.0000148780488, + +0.0002009756098, -0.0005582926829, -0.0002158536585, -0.0000373170732, + -0.0000521951220, +0.0005656097561, +0.0009900000000, +0.0013770731707, + +0.0009824390244, +0.0008782926829, +0.0017863414634, +0.0013992682927, + +0.0004912195122, -0.0002604878049, -0.0012802439024, -0.0018607317073, + -0.0023819512195, -0.0020914634146, -0.0017119512195, -0.0021512195122, + -0.0011017073171, +0.0007368292683, +0.0017268292683, +0.0022851219512, + +0.0015482926829, +0.0003573170732, -0.0003943902439, -0.0010419512195, + -0.0009229268293, -0.0008336585366, -0.0012653658537, -0.0012653658537, + -0.0012802439024, -0.0011909756098, -0.0003721951220, +0.0005731707317, + +0.0012429268293, +0.0016375609756, +0.0017268292683, +0.0018012195122, + +0.0015036585366, +0.0008782926829, +0.0008260975610, +0.0006402439024, + +0.0005285365854, +0.0012356097561, +0.0015185365854, +0.0010419512195, + +0.0002753658537, -0.0007443902439, -0.0011017073171, -0.0009602439024, + -0.0013770731707, -0.0018756097561, -0.0018012195122, -0.0013992682927, + -0.0006997560976, -0.0000373170732, +0.0005953658537, +0.0013026829268, + +0.0013175609756, +0.0012504878049, +0.0013843902439, +0.0007517073171, + +0.0001041463415, -0.0004690243902, -0.0005880487805, +0.0007592682927, + +0.0018607317073, +0.0023670731707, +0.0026424390244, +0.0021436585366, + +0.0020319512195, +0.0016300000000, +0.0005656097561, -0.0000968292683, + -0.0010868292683, -0.0013992682927, -0.0006402439024, +0.0003870731707, + +0.0012504878049, +0.0011536585366, +0.0010719512195, +0.0007443902439, + -0.0009229268293, -0.0014439024390, -0.0012356097561, -0.0019651219512, + -0.0022478048780, -0.0017417073171, -0.0010197560976, -0.0005136585366, + -0.0003275609756, +0.0001265853659, +0.0009602439024, +0.0014290243902, + +0.0022256097561, +0.0031039024390, +0.0027465853659, +0.0021660975610, + +0.0012951219512, -0.0002604878049, -0.0010792682927, -0.0013324390244, + -0.0013397560976, -0.0008336585366, -0.0007517073171, -0.0007665853659, + -0.0006624390244, -0.0009751219512, -0.0004541463415, +0.0003348780488, + +0.0006029268293, +0.0010419512195, +0.0013621951220, +0.0011387804878, + +0.0001117073171, -0.0012280487805, -0.0020914634146, -0.0022775609756, + -0.0020617073171, -0.0015258536585, -0.0006251219512, +0.0001190243902, + +0.0004317073171, +0.0004392682927, +0.0002009756098, -0.0003126829268, + -0.0007295121951, -0.0007665853659, -0.0005953658537, -0.0002082926829, + -0.0001712195122, -0.0004763414634, -0.0003275609756, -0.0004614634146, + -0.0007592682927, -0.0006773170732, -0.0011834146341, -0.0018458536585, + -0.0021660975610, -0.0021882926829, -0.0012729268293, -0.0007295121951, + -0.0010495121951, -0.0010568292683, -0.0012878048780, -0.0013546341463, + -0.0011314634146, -0.0013324390244, -0.0012802439024, -0.0012356097561, + -0.0017939024390, -0.0021734146341, -0.0024414634146, -0.0023297560976, + -0.0015334146341, -0.0006326829268, +0.0003721951220, +0.0010868292683, + +0.0008931707317, +0.0008039024390, +0.0009973170732, +0.0004839024390, + -0.0006848780488, -0.0017343902439, -0.0022180487805, -0.0027614634146, + -0.0032378048780, -0.0031558536585, -0.0031707317073, -0.0027241463415, + -0.0015258536585, -0.0007963414634, -0.0005434146341, -0.0010346341463, + -0.0016524390244, -0.0015929268293, -0.0016821951220, -0.0018236585366, + -0.0016448780488, -0.0019129268293, -0.0018534146341, -0.0014365853659, + -0.0012951219512, -0.0009080487805, -0.0005507317073, -0.0004690243902, + -0.0002680487805, -0.0002234146341, +0.0000743902439, +0.0005731707317, + +0.0003573170732, -0.0001041463415, -0.0007368292683, -0.0011387804878, + -0.0006178048780, -0.0002604878049, -0.0004392682927, -0.0005953658537, + -0.0011612195122, -0.0014217073171, -0.0012131707317, -0.0015185365854, + -0.0012356097561, -0.0005434146341, -0.0004392682927, -0.0002753658537, + -0.0002009756098, -0.0002307317073, -0.0003870731707, -0.0007517073171, + -0.0008634146341, -0.0011612195122, -0.0014887804878, -0.0006178048780, + +0.0003573170732, +0.0004019512195, +0.0003497560976, -0.0000148780488, + -0.0006773170732, -0.0007592682927, -0.0006326829268, -0.0007295121951, + -0.0007741463415, -0.0006551219512, -0.0005209756098, -0.0004465853659, + -0.0005285365854, -0.0003051219512, +0.0002009756098, +0.0001265853659, + -0.0001712195122, -0.0006102439024, -0.0012207317073, -0.0013100000000, + -0.0008485365854, -0.0004168292683, -0.0002234146341, -0.0006402439024, + -0.0011090243902, -0.0016226829268, -0.0021363414634, -0.0019948780488, + -0.0017790243902, -0.0015185365854, -0.0006624390244, +0.0000373170732, + -0.0000075609756, -0.0002531707317, -0.0003573170732, -0.0003646341463, + -0.0001563414634, +0.0002531707317, +0.0006848780488, +0.0010719512195, + +0.0012504878049, +0.0010197560976, +0.0000670731707, -0.0010048780488, + -0.0012729268293, -0.0010121951220, -0.0007517073171, -0.0004763414634, + -0.0006848780488, -0.0009675609756, -0.0007814634146, -0.0004614634146, + -0.0000148780488, +0.0000297560976, -0.0002680487805, -0.0003721951220, + -0.0004541463415, -0.0007295121951, -0.0008409756098, -0.0004019512195, + +0.0003348780488, +0.0003573170732, +0.0002829268293, +0.0006997560976, + +0.0005656097561, +0.0000595121951, -0.0007517073171, -0.0015853658537, + -0.0016970731707, -0.0010719512195, +0.0001487804878, +0.0010346341463, + +0.0013992682927, +0.0018904878049, +0.0015036585366, +0.0004019512195, + -0.0005434146341, -0.0010495121951, -0.0005656097561, -0.0000819512195, + +0.0002604878049, +0.0008709756098, +0.0005060975610, -0.0001563414634, + -0.0001041463415, -0.0000670731707, -0.0000743902439, +0.0002307317073, + +0.0006624390244, +0.0008260975610, +0.0002307317073, -0.0001712195122, + +0.0000075609756, -0.0000373170732, +0.0001117073171, +0.0007890243902, + +0.0009973170732, +0.0008782926829, +0.0010121951220, +0.0011314634146, + +0.0012653658537, +0.0016821951220, +0.0020468292683, +0.0018309756098, + +0.0009602439024, +0.0000373170732, -0.0004092682927, -0.0004987804878, + -0.0002531707317, -0.0001934146341, -0.0004763414634, -0.0002902439024, + +0.0004243902439, +0.0009751219512, +0.0011909756098, +0.0010719512195, + +0.0009751219512, +0.0009378048780, +0.0007963414634, +0.0005804878049, + +0.0003275609756, +0.0006102439024, +0.0010941463415, +0.0011909756098, + +0.0012878048780, +0.0012653658537, +0.0010719512195, +0.0012578048780, + +0.0014217073171, +0.0014439024390, +0.0013026829268, +0.0010048780488, + +0.0009304878049, +0.0010121951220, +0.0010792682927, +0.0013695121951, + +0.0018980487805, +0.0024860975610, +0.0025231707317, +0.0015704878049, + +0.0003573170732, -0.0002978048780, -0.0005434146341, -0.0007219512195, + -0.0003275609756, +0.0001712195122, +0.0004614634146, +0.0008485365854, + +0.0010792682927, +0.0012131707317, +0.0012578048780, +0.0010495121951, + +0.0010568292683, +0.0010568292683, +0.0009751219512, +0.0009824390244, + +0.0011165853659, +0.0015853658537, +0.0017939024390, +0.0016597560976, + +0.0014587804878, +0.0009751219512, +0.0006624390244, +0.0007368292683, + +0.0010643902439, +0.0016746341463, +0.0018087804878, +0.0016151219512, + +0.0015185365854, +0.0009973170732, +0.0005136585366, +0.0005507317073, + +0.0006251219512, +0.0007963414634, +0.0009824390244, +0.0006700000000, + +0.0001190243902, -0.0004317073171, -0.0006326829268, -0.0002307317073, + +0.0004019512195, +0.0010868292683, +0.0014736585366, +0.0013397560976, + +0.0012429268293, +0.0011239024390, +0.0006624390244, +0.0002902439024, + +0.0002680487805, +0.0006102439024, +0.0009675609756, +0.0011612195122, + +0.0012729268293, +0.0014587804878, +0.0015109756098, +0.0010197560976, + +0.0003200000000, +0.0000000000000, -0.0000743902439, +0.0001041463415, + +0.0003870731707, +0.0002680487805, +0.0001636585366, +0.0002680487805, + +0.0004690243902, +0.0008336585366, +0.0007814634146, +0.0003795121951, + +0.0002829268293, +0.0003497560976, +0.0001636585366, -0.0001563414634, + -0.0001712195122, +0.0000000000000, -0.0000670731707, -0.0003348780488, + -0.0005358536585, -0.0002082926829, +0.0004614634146, +0.0007592682927, + +0.0005582926829, +0.0002753658537, +0.0002307317073, +0.0001860975610, + -0.0001860975610, -0.0005731707317, -0.0008112195122, -0.0005582926829, + +0.0004912195122, +0.0013546341463, +0.0015407317073, +0.0010121951220, + -0.0000670731707, -0.0010346341463, -0.0014663414634, -0.0015185365854, + -0.0011536585366, -0.0004839024390, +0.0002531707317, +0.0007219512195, + +0.0006624390244, +0.0006251219512, +0.0007592682927, +0.0006029268293, + +0.0000968292683, -0.0005507317073, -0.0009602439024, -0.0006997560976, + -0.0001265853659, +0.0002158536585, +0.0003573170732, +0.0004763414634, + +0.0004839024390, +0.0002829268293, +0.0002382926829, +0.0001636585366, + -0.0001414634146, -0.0000148780488, +0.0001860975610, -0.0003573170732, + -0.0004763414634, -0.0003943902439, -0.0009080487805, -0.0008409756098, + -0.0007219512195, -0.0003795121951, +0.0000148780488, -0.0002009756098, + +0.0002234146341, +0.0001117073171, -0.0007517073171, -0.0004690243902, + -0.0003721951220, -0.0009304878049, -0.0005804878049, -0.0004168292683, + -0.0002829268293, +0.0001712195122, +0.0003348780488, +0.0004168292683, + +0.0002978048780, +0.0007368292683, +0.0010419512195, +0.0004763414634, + +0.0002009756098, +0.0001190243902, -0.0002829268293, +0.0000743902439, + +0.0004392682927, +0.0001636585366, -0.0003200000000, -0.0007890243902, + -0.0007146341463, -0.0001636585366, +0.0005285365854, +0.0012280487805, + +0.0016821951220, +0.0014439024390, +0.0008039024390, +0.0001712195122, + -0.0000819512195, -0.0002158536585, -0.0000148780488, +0.0006102439024, + +0.0007368292683, +0.0006251219512, +0.0004690243902, -0.0000521951220, + -0.0003051219512, -0.0001265853659, -0.0000670731707, +0.0003126829268, + +0.0011463414634, +0.0016078048780, +0.0015334146341, +0.0011536585366, + +0.0006551219512, +0.0002978048780, +0.0000595121951, -0.0000521951220, + +0.0001785365854, +0.0004168292683, +0.0006102439024, +0.0008634146341, + +0.0008709756098, +0.0010197560976, +0.0011982926829, +0.0008709756098, + +0.0006402439024, +0.0005136585366, +0.0000670731707, -0.0001934146341, + +0.0000000000000, +0.0003275609756, +0.0006102439024, +0.0007146341463, + +0.0008634146341, +0.0010419512195, +0.0011387804878, +0.0010346341463, + +0.0007741463415, +0.0004541463415, +0.0001041463415, -0.0001117073171, + -0.0001860975610, -0.0001487804878, +0.0000000000000, +0.0002456097561, + +0.0008409756098, +0.0013473170732, +0.0014290243902, +0.0014439024390, + +0.0013324390244, +0.0010197560976, +0.0005434146341, +0.0002382926829, + +0.0005582926829, +0.0010121951220, +0.0011165853659, +0.0011165853659, + +0.0008560975610, +0.0005285365854, +0.0003721951220, +0.0003497560976, + +0.0002978048780, +0.0002009756098, +0.0001563414634, +0.0002680487805, + +0.0006251219512, +0.0008112195122, +0.0006773170732, +0.0005656097561, + +0.0005136585366, +0.0003646341463, +0.0003348780488, +0.0003573170732, + +0.0007741463415, +0.0012729268293, +0.0013175609756, +0.0011834146341, + +0.0007741463415, +0.0002307317073, -0.0000224390244, -0.0002382926829, + -0.0003721951220, -0.0001636585366, +0.0000000000000, -0.0000148780488, + -0.0000892682927, -0.0002531707317, -0.0002753658537, -0.0001265853659, + +0.0000000000000, +0.0001117073171, +0.0000000000000, -0.0002978048780, + -0.0003573170732, -0.0003721951220, -0.0004541463415, -0.0002158536585, + +0.0000595121951, +0.0002382926829, +0.0002082926829, +0.0000000000000, + -0.0001414634146, -0.0001339024390, +0.0000521951220, +0.0001785365854, + +0.0000373170732, -0.0001339024390, -0.0002753658537, -0.0004987804878, + -0.0005209756098, -0.0004168292683, -0.0004317073171, -0.0004690243902, + -0.0003424390244, -0.0001934146341, -0.0001339024390, -0.0000670731707, + -0.0002158536585, -0.0005285365854, -0.0007665853659, -0.0006921951220, + -0.0003348780488, +0.0000446341463, +0.0002680487805, +0.0003126829268, + +0.0001636585366, -0.0002307317073, -0.0005358536585, -0.0005434146341, + -0.0004019512195, -0.0003126829268, -0.0002978048780, -0.0005209756098, + -0.0008782926829, -0.0009973170732, -0.0008560975610, -0.0006029268293, + -0.0004392682927, -0.0002978048780, -0.0001339024390, -0.0000224390244, + +0.0001041463415, +0.0001190243902, -0.0002978048780, -0.0006251219512, + -0.0005358536585, -0.0001934146341, +0.0000743902439, +0.0001785365854, + +0.0001860975610, +0.0000670731707, -0.0000968292683, -0.0002382926829, + -0.0004019512195, -0.0004614634146, -0.0002009756098, +0.0001934146341, + +0.0002902439024, +0.0000075609756, -0.0002158536585, -0.0004987804878, + -0.0008112195122, -0.0008039024390, -0.0006624390244, -0.0004912195122, + -0.0004243902439, -0.0006997560976, -0.0008187804878, -0.0006251219512, + -0.0003646341463, -0.0000892682927, +0.0000224390244, +0.0000297560976, + +0.0000595121951, -0.0000892682927, -0.0002829268293, -0.0004763414634, + -0.0006029268293, -0.0003646341463, -0.0002531707317, -0.0003424390244, + -0.0001636585366, -0.0001339024390, -0.0002082926829, -0.0002456097561, + -0.0005656097561, -0.0007741463415, -0.0008409756098, -0.0008560975610, + -0.0006773170732, -0.0007443902439, -0.0009007317073, -0.0005731707317, + -0.0004168292683, -0.0004987804878, -0.0005358536585, -0.0006624390244, + -0.0006326829268, -0.0005880487805, -0.0005731707317, -0.0004392682927, + -0.0004987804878, -0.0006029268293, -0.0005656097561, -0.0006178048780, + -0.0006624390244, -0.0005953658537, -0.0004614634146, -0.0002382926829, + -0.0001487804878, -0.0002382926829, -0.0004465853659, -0.0006997560976, + -0.0006551219512, -0.0004614634146, -0.0004690243902, -0.0005060975610, + -0.0005434146341, -0.0006997560976, -0.0007741463415, -0.0006029268293, + -0.0004465853659, -0.0005507317073, -0.0005582926829, -0.0005434146341, + -0.0006102439024, -0.0005582926829, -0.0005582926829, -0.0007219512195, + -0.0008112195122, -0.0008260975610, -0.0006326829268, -0.0003200000000, + -0.0001117073171, -0.0000148780488, -0.0001487804878, -0.0002234146341, + -0.0001487804878, -0.0002978048780, -0.0005285365854, -0.0007368292683, + -0.0009304878049, -0.0009900000000, -0.0011165853659, -0.0010792682927, + -0.0007146341463, -0.0005136585366, -0.0004839024390, -0.0004614634146, + -0.0006997560976, -0.0008336585366, -0.0008112195122, -0.0006102439024, + -0.0001414634146, +0.0000521951220, -0.0001117073171, -0.0002382926829, + -0.0004317073171, -0.0007517073171, -0.0008336585366, -0.0007368292683, + -0.0005434146341, -0.0004168292683, -0.0004092682927, -0.0004317073171, + -0.0005880487805, -0.0007368292683, -0.0008260975610, -0.0009304878049, + -0.0007665853659, -0.0004392682927, -0.0003870731707, -0.0004168292683, + -0.0003870731707, -0.0004987804878, -0.0005804878049, -0.0005731707317, + -0.0004839024390, -0.0003870731707, -0.0003870731707, -0.0004243902439, + -0.0004912195122, -0.0006475609756, -0.0006624390244, -0.0006402439024, + -0.0007295121951, -0.0006921951220, -0.0005582926829, -0.0003348780488, + -0.0001265853659, -0.0000446341463, +0.0000595121951, +0.0001265853659, + -0.0000670731707, -0.0003348780488, -0.0006178048780, -0.0007295121951, + -0.0005953658537, -0.0005582926829, -0.0007368292683, -0.0009751219512, + -0.0010419512195, -0.0008187804878, -0.0005880487805, -0.0004614634146, + -0.0003646341463, -0.0004465853659, -0.0005582926829, -0.0005507317073, + -0.0004092682927, -0.0001117073171, +0.0000224390244, -0.0001487804878, + -0.0003870731707, -0.0006700000000, -0.0006773170732, -0.0003497560976, + -0.0001339024390, -0.0000224390244, -0.0001636585366, -0.0004168292683, + -0.0004317073171, -0.0003573170732, -0.0002829268293, -0.0000819512195, + +0.0000373170732, -0.0000075609756, -0.0002234146341, -0.0004839024390, + -0.0006251219512, -0.0008260975610, -0.0008336585366, -0.0006029268293, + -0.0004019512195, -0.0002753658537, -0.0001712195122, -0.0001487804878, + -0.0001636585366, -0.0001636585366, -0.0000743902439, +0.0000224390244, + +0.0000892682927, +0.0002531707317, +0.0003275609756, +0.0002829268293, + +0.0002158536585, +0.0000892682927, -0.0001190243902, -0.0004690243902, + -0.0008409756098, -0.0010495121951, -0.0009751219512, -0.0006475609756, + -0.0002082926829, +0.0002680487805, +0.0006178048780, +0.0005434146341, + +0.0002604878049, -0.0000892682927, -0.0005060975610, -0.0007592682927, + -0.0007963414634, -0.0006773170732, -0.0005358536585, -0.0004317073171, + -0.0002307317073, -0.0000224390244, +0.0000521951220, +0.0002009756098, + +0.0002753658537, +0.0001785365854, +0.0001860975610, +0.0001414634146, + -0.0001563414634, -0.0003573170732, -0.0003721951220, -0.0004614634146, + -0.0004317073171, -0.0001563414634, +0.0001487804878, +0.0004317073171, + +0.0004839024390, +0.0003200000000, +0.0000595121951, -0.0003200000000, + -0.0004912195122, -0.0003870731707, -0.0002604878049, -0.0000743902439, + +0.0000595121951, +0.0000743902439, +0.0001563414634, +0.0002604878049, + +0.0003573170732, +0.0003497560976, +0.0002158536585, +0.0001860975610, + +0.0001265853659, +0.0000670731707, +0.0002604878049, +0.0005136585366, + +0.0006326829268, +0.0005582926829, +0.0004168292683, +0.0003348780488, + +0.0002456097561, +0.0002604878049, +0.0003573170732, +0.0003424390244, + +0.0002082926829, +0.0000521951220, -0.0000595121951, -0.0000968292683, + -0.0000595121951, +0.0000595121951, +0.0002531707317, +0.0003943902439, + +0.0004019512195, +0.0003721951220, +0.0004168292683, +0.0003870731707, + +0.0003348780488, +0.0003348780488, +0.0002531707317, +0.0002234146341, + +0.0003870731707, +0.0005953658537, +0.0006997560976, +0.0006326829268, + +0.0003943902439, +0.0001487804878, +0.0000521951220, +0.0001117073171, + +0.0002009756098, +0.0002680487805, +0.0003275609756, +0.0004392682927, + +0.0005731707317, +0.0006997560976, +0.0006251219512, +0.0003348780488, + +0.0001265853659, +0.0001190243902, +0.0001487804878, +0.0001785365854, + +0.0002082926829, +0.0002604878049, +0.0003943902439, +0.0005209756098, + +0.0006029268293, +0.0005434146341, +0.0003721951220, +0.0002978048780, + +0.0002604878049, +0.0002009756098, +0.0001636585366, +0.0001563414634, + +0.0000819512195, +0.0000000000000, +0.0000595121951, +0.0001487804878, + +0.0001041463415, +0.0000521951220, +0.0001487804878, +0.0003646341463, + +0.0005582926829, +0.0005434146341, +0.0002829268293, -0.0000819512195, + -0.0002753658537, -0.0001339024390, +0.0001414634146, +0.0003126829268, + +0.0003870731707, +0.0004168292683, +0.0004019512195, +0.0003870731707, + +0.0003573170732, +0.0003573170732, +0.0004392682927, +0.0004465853659, + +0.0002456097561, +0.0000595121951, +0.0000075609756, -0.0000373170732, + +0.0001414634146, +0.0004465853659, +0.0005582926829, +0.0005582926829, + +0.0003721951220, +0.0001563414634, +0.0001563414634, +0.0002604878049, + +0.0003573170732, +0.0004392682927, +0.0003721951220, +0.0003424390244, + +0.0004839024390, +0.0005136585366, +0.0003424390244, +0.0001563414634, + +0.0001265853659, +0.0002531707317, +0.0005731707317, +0.0008409756098, + +0.0007890243902, +0.0005507317073, +0.0003573170732, +0.0001563414634, + +0.0000075609756, -0.0000075609756, +0.0000819512195, +0.0003051219512, + +0.0004465853659, +0.0004168292683, +0.0004839024390, +0.0006402439024, + +0.0006402439024, +0.0004987804878, +0.0002978048780, +0.0000968292683, + +0.0000595121951, +0.0001563414634, +0.0002531707317, +0.0002902439024, + +0.0003424390244, +0.0003573170732, +0.0003126829268, +0.0002753658537, + +0.0002009756098, +0.0002158536585, +0.0002456097561, +0.0001190243902, + -0.0000148780488, -0.0001117073171, -0.0000892682927, +0.0001636585366, + +0.0004019512195, +0.0005880487805, +0.0006700000000, +0.0004019512195, + +0.0001712195122, +0.0001563414634, +0.0000595121951, -0.0000595121951, + +0.0000000000000, +0.0001785365854, +0.0002978048780, +0.0002082926829, + -0.0000148780488, -0.0001934146341, -0.0001636585366, +0.0001563414634, + +0.0006475609756, +0.0010346341463, +0.0011239024390, +0.0010643902439, + +0.0008858536585, +0.0005953658537, +0.0002902439024, +0.0000373170732, + +0.0000595121951, +0.0002234146341, +0.0002753658537, +0.0003424390244, + +0.0003795121951, +0.0002978048780, +0.0002158536585, +0.0001190243902, + +0.0000819512195, +0.0001041463415, +0.0000224390244, +0.0000892682927, + +0.0004168292683, +0.0006848780488, +0.0007295121951, +0.0004912195122, + +0.0002082926829, +0.0002009756098, +0.0003646341463, +0.0005804878049, + +0.0007741463415, +0.0006551219512, +0.0003424390244, +0.0002158536585, + +0.0002456097561, +0.0003424390244, +0.0004690243902, +0.0005804878049, + +0.0007368292683, +0.0008187804878, +0.0007295121951, +0.0005507317073, + +0.0004168292683, +0.0003424390244, +0.0001636585366, +0.0000148780488, + +0.0001414634146, +0.0003200000000, +0.0004243902439, +0.0006251219512, + +0.0008336585366, +0.0007741463415, +0.0005060975610, +0.0003051219512, + +0.0001712195122, +0.0000968292683, +0.0000373170732, +0.0000446341463, + +0.0002158536585, +0.0003424390244, +0.0002382926829, +0.0000297560976, + -0.0002082926829, -0.0002978048780, -0.0001785365854, -0.0000224390244, + +0.0002009756098, +0.0003424390244, +0.0004168292683, +0.0006624390244, + +0.0007741463415, +0.0005507317073, +0.0002829268293, +0.0000819512195, + -0.0000373170732, -0.0001117073171, -0.0001339024390, -0.0000521951220, + -0.0000224390244, -0.0000743902439, -0.0001190243902, -0.0000968292683, + +0.0000670731707, +0.0003200000000, +0.0004019512195, +0.0003497560976, + +0.0002604878049, +0.0001636585366, +0.0001041463415, +0.0000373170732, + +0.0000075609756, +0.0000373170732, +0.0001339024390, +0.0003497560976, + +0.0005804878049, +0.0006251219512, +0.0004317073171, +0.0001636585366, + +0.0000297560976, -0.0000743902439, -0.0001487804878, -0.0000595121951, + +0.0000892682927, +0.0002829268293, +0.0003424390244, +0.0002158536585, + +0.0000968292683, -0.0000148780488, -0.0001339024390, -0.0000819512195, + -0.0000224390244, -0.0000224390244, +0.0000968292683, +0.0002009756098, + +0.0002307317073, +0.0003051219512, +0.0003943902439, +0.0004392682927, + +0.0004317073171, +0.0003424390244, +0.0002829268293, +0.0000892682927, + -0.0001041463415, -0.0000521951220, +0.0000000000000, +0.0000373170732, + +0.0001636585366, +0.0002753658537, +0.0003943902439, +0.0004839024390, + +0.0004392682927, +0.0002753658537, +0.0000968292683, +0.0001487804878, + +0.0002753658537, +0.0001785365854, +0.0000148780488, -0.0001563414634, + -0.0002456097561, -0.0002234146341, -0.0002753658537, -0.0002978048780, + -0.0000892682927, +0.0001785365854, +0.0003126829268, +0.0003200000000, + +0.0002456097561, +0.0001636585366, +0.0000595121951, +0.0000224390244, + +0.0001265853659, +0.0001265853659, +0.0000373170732, +0.0000000000000, + -0.0001041463415, -0.0002456097561, -0.0002753658537, -0.0003051219512, + -0.0003051219512, -0.0001414634146, +0.0000743902439, +0.0002531707317, + +0.0003573170732, +0.0002456097561, +0.0000075609756, -0.0001636585366, + -0.0003943902439, -0.0005953658537, -0.0005507317073, -0.0002902439024, + -0.0000148780488, +0.0001117073171, +0.0001785365854, +0.0002234146341, + +0.0001339024390, -0.0000075609756, -0.0000446341463, -0.0000446341463, + -0.0000670731707, -0.0001117073171, -0.0001563414634, -0.0002829268293, + -0.0004019512195, -0.0003200000000, -0.0001860975610, -0.0001785365854, + -0.0002604878049, -0.0002978048780, -0.0002978048780, -0.0003348780488, + -0.0002753658537, -0.0000968292683, +0.0000000000000, +0.0000968292683, + +0.0002531707317, +0.0002680487805, +0.0001117073171, -0.0001190243902, + -0.0003275609756, -0.0004317073171, -0.0004392682927, -0.0003424390244, + -0.0003200000000, -0.0003646341463, -0.0002978048780, -0.0002158536585, + -0.0001636585366, -0.0001041463415, -0.0001414634146, -0.0002307317073, + -0.0002382926829, -0.0003051219512, -0.0003721951220, -0.0003051219512, + -0.0002382926829, -0.0001785365854, -0.0001117073171, -0.0000892682927, + -0.0000968292683, -0.0001265853659, -0.0000819512195, -0.0000373170732, + -0.0000670731707, -0.0000297560976, -0.0000819512195, -0.0003795121951, + -0.0007070731707, -0.0009007317073, -0.0008858536585, -0.0006475609756, + -0.0004690243902, -0.0002902439024, -0.0001414634146, -0.0001117073171, + -0.0000075609756, +0.0000670731707, -0.0000148780488, -0.0001339024390, + -0.0001860975610, -0.0001636585366, -0.0001785365854, -0.0002902439024, + -0.0003051219512, -0.0002604878049, -0.0002829268293, -0.0002234146341, + -0.0001041463415, -0.0001190243902, -0.0001041463415, -0.0000892682927, + -0.0003126829268, -0.0005358536585, -0.0006326829268, -0.0006700000000, + -0.0006326829268, -0.0005507317073, -0.0004541463415, -0.0004168292683, + -0.0004392682927, -0.0003870731707, -0.0002456097561, -0.0000595121951, + +0.0000892682927, +0.0000892682927, -0.0001041463415, -0.0004243902439, + -0.0006178048780, -0.0006102439024, -0.0005136585366, -0.0003200000000, + -0.0001339024390, -0.0001339024390, -0.0002307317073, -0.0002680487805, + -0.0002829268293, -0.0003126829268, -0.0003646341463, -0.0004243902439, + -0.0004987804878, -0.0005209756098, -0.0004243902439, -0.0003497560976, + -0.0002680487805, -0.0000595121951, +0.0000743902439, +0.0000000000000, + -0.0001265853659, -0.0002456097561, -0.0003348780488, -0.0004614634146, + -0.0005804878049, -0.0005731707317, -0.0004392682927, -0.0003200000000, + -0.0002978048780, -0.0002753658537, -0.0002234146341, -0.0001636585366, + -0.0001785365854, -0.0002307317073, -0.0001636585366, -0.0000595121951, + -0.0000595121951, -0.0000819512195, -0.0001190243902, -0.0002082926829, + -0.0003200000000, -0.0005060975610, -0.0006251219512, -0.0005953658537, + -0.0005953658537, -0.0005953658537, -0.0005434146341, -0.0004317073171, + -0.0002456097561, -0.0001265853659, -0.0001414634146, -0.0002082926829, + -0.0002978048780, -0.0003348780488, -0.0003051219512, -0.0001860975610, + -0.0000743902439, -0.0000521951220, -0.0000670731707, -0.0000968292683, + -0.0001712195122, -0.0002456097561, -0.0002902439024, -0.0003200000000, + -0.0003348780488, -0.0002829268293, -0.0001860975610, -0.0001414634146, + -0.0001563414634, -0.0002158536585, -0.0002978048780, -0.0003275609756, + -0.0003795121951, -0.0004168292683, -0.0004092682927, -0.0003200000000, + -0.0002009756098, -0.0001934146341, -0.0002382926829, -0.0002158536585, + -0.0000595121951, +0.0000892682927, +0.0000595121951, +0.0000075609756, + +0.0000373170732, +0.0000000000000, +0.0000000000000, +0.0000521951220, + +0.0000670731707, +0.0000819512195, +0.0000000000000, +0.0000075609756, + +0.0000670731707, -0.0000446341463, -0.0002382926829, -0.0004541463415, + -0.0006102439024, -0.0005209756098, -0.0003051219512, -0.0001041463415, + +0.0000892682927, +0.0002382926829, +0.0003200000000, +0.0002902439024, + +0.0002082926829, +0.0000743902439, -0.0000968292683, -0.0002009756098, + -0.0002307317073, -0.0002456097561, -0.0002307317073, -0.0001117073171, + +0.0001117073171, +0.0002531707317, +0.0002382926829, +0.0001785365854, + +0.0001265853659, +0.0000297560976, -0.0001414634146, -0.0002978048780, + -0.0003497560976, -0.0002753658537, -0.0001785365854, -0.0001414634146, + -0.0000670731707, +0.0000224390244, +0.0000521951220, +0.0001487804878, + +0.0001487804878, +0.0000075609756, -0.0000595121951, -0.0001712195122, + -0.0002158536585, -0.0001265853659, +0.0000000000000, +0.0002009756098, + +0.0002902439024, +0.0001785365854, +0.0000595121951, -0.0000446341463, + -0.0000892682927, -0.0001265853659, -0.0001487804878, +0.0000446341463, + +0.0002753658537, +0.0003348780488, +0.0003051219512, +0.0001563414634, + +0.0000224390244, -0.0000743902439, -0.0001487804878, -0.0000968292683, + -0.0000373170732, +0.0000000000000, +0.0000373170732, -0.0000148780488, + -0.0000743902439, -0.0000297560976, +0.0000743902439, +0.0001190243902, + +0.0000297560976, -0.0000521951220, -0.0000446341463, -0.0000595121951, + +0.0000075609756, +0.0001785365854, +0.0002604878049, +0.0002456097561, + +0.0002829268293, +0.0003200000000, +0.0002082926829, +0.0000595121951, + +0.0000148780488, +0.0000148780488, +0.0000000000000, +0.0000000000000, + +0.0000148780488, +0.0000446341463, +0.0000148780488, +0.0000892682927, + +0.0002307317073, +0.0002234146341, +0.0001414634146, +0.0000595121951, + -0.0000446341463, -0.0001265853659, -0.0002456097561, -0.0003348780488, + -0.0003275609756, -0.0002234146341, -0.0000446341463, +0.0001785365854, + +0.0003424390244, +0.0003943902439, +0.0003795121951, +0.0003497560976, + +0.0003348780488, +0.0002829268293, +0.0001265853659, +0.0000075609756, + -0.0000670731707, -0.0002753658537, -0.0004614634146, -0.0005060975610, + -0.0004541463415, -0.0002829268293, -0.0000446341463, +0.0001785365854, + +0.0003795121951, +0.0004987804878, +0.0005060975610, +0.0003424390244, + +0.0001487804878, +0.0000521951220, -0.0000297560976, -0.0000968292683, + -0.0001041463415, -0.0001339024390, -0.0001487804878, -0.0001190243902, + +0.0000000000000, +0.0002158536585, +0.0003721951220, +0.0004392682927, + +0.0004465853659, +0.0003795121951, +0.0002382926829, +0.0001041463415, + +0.0000743902439, +0.0000968292683, +0.0000521951220, -0.0000224390244, + -0.0000521951220, +0.0000000000000, +0.0000819512195, +0.0001117073171, + +0.0001117073171, +0.0000297560976, -0.0001041463415, -0.0001636585366, + -0.0001265853659, -0.0000075609756, +0.0001712195122, +0.0002829268293, + +0.0003275609756, +0.0003943902439, +0.0003348780488, +0.0002456097561, + +0.0001785365854, +0.0000000000000, -0.0000968292683, -0.0000743902439, + -0.0000224390244, +0.0000224390244, -0.0000373170732, -0.0001339024390, + -0.0001339024390, -0.0000968292683, -0.0000819512195, -0.0000075609756, + +0.0001190243902, +0.0002531707317, +0.0003275609756, +0.0002978048780, + +0.0001860975610, +0.0001339024390, +0.0001265853659, +0.0001265853659, + +0.0001117073171, +0.0000148780488, -0.0000075609756, +0.0000373170732, + +0.0000075609756, +0.0000075609756, -0.0000148780488, -0.0001636585366, + -0.0002604878049, -0.0002753658537, -0.0001041463415, +0.0001190243902, + +0.0002382926829, +0.0002680487805, +0.0001934146341, +0.0001117073171, + +0.0001414634146, +0.0001265853659, +0.0000521951220, +0.0000148780488, + -0.0000521951220, -0.0000148780488, +0.0001265853659, +0.0002158536585, + +0.0002680487805, +0.0003200000000, +0.0002829268293, +0.0001934146341, + +0.0000297560976, -0.0001265853659, -0.0001117073171, +0.0000224390244, + +0.0001860975610, +0.0002604878049, +0.0001860975610, +0.0001190243902, + +0.0000892682927, +0.0000892682927, +0.0001190243902, +0.0001563414634, + +0.0002680487805, +0.0003573170732, +0.0002604878049, +0.0001487804878, + +0.0001636585366, +0.0002604878049, +0.0003721951220, +0.0004019512195, + +0.0003646341463, +0.0002753658537, +0.0001563414634, +0.0000000000000, + -0.0001339024390, -0.0001934146341, -0.0001487804878, +0.0000446341463, + +0.0002753658537, +0.0003870731707, +0.0003943902439, +0.0003275609756, + +0.0002456097561, +0.0002456097561, +0.0002009756098, +0.0000670731707, + +0.0000075609756, +0.0000819512195, +0.0001934146341, +0.0003348780488, + +0.0004317073171, +0.0004541463415, +0.0003870731707, +0.0002753658537, + +0.0001860975610, +0.0001414634146, +0.0001712195122, +0.0002753658537, + +0.0003943902439, +0.0005358536585, +0.0005804878049, +0.0004092682927, + +0.0002158536585, +0.0000670731707, +0.0000373170732, +0.0001860975610, + +0.0003573170732, +0.0005507317073, +0.0006773170732, +0.0006402439024, + +0.0005804878049, +0.0005285365854, +0.0004317073171, +0.0002753658537, + +0.0000743902439, -0.0001117073171, -0.0002009756098, -0.0001636585366, + -0.0000373170732, +0.0000446341463, +0.0000670731707, +0.0001339024390, + +0.0002307317073, +0.0002456097561, +0.0002234146341, +0.0002456097561, + +0.0002753658537, +0.0003646341463, +0.0004092682927, +0.0003275609756, + +0.0002531707317, +0.0001636585366, +0.0000743902439, +0.0000297560976, + +0.0000075609756, +0.0000297560976, +0.0001117073171, +0.0001785365854, + +0.0001636585366, +0.0000297560976, -0.0000892682927, -0.0000968292683, + +0.0000000000000, +0.0001414634146, +0.0002456097561, +0.0003126829268, + +0.0003424390244, +0.0003126829268, +0.0002307317073, +0.0001636585366, + +0.0001712195122, +0.0001563414634, +0.0000075609756, -0.0001041463415, + -0.0001190243902, -0.0000892682927, +0.0000148780488, +0.0001636585366, + +0.0002680487805, +0.0003126829268, +0.0002978048780, +0.0002753658537, + +0.0002009756098, +0.0000521951220, -0.0001041463415, -0.0002234146341, + -0.0002680487805, -0.0002456097561, -0.0001563414634, -0.0000521951220, + -0.0000224390244, -0.0000373170732, -0.0000373170732, -0.0000670731707, + -0.0000819512195, -0.0000148780488, +0.0000446341463, +0.0000075609756, + -0.0000743902439, -0.0001190243902, -0.0001563414634, -0.0002082926829, + -0.0001785365854, -0.0000446341463, +0.0000595121951, +0.0000595121951, + -0.0000373170732, -0.0001712195122, -0.0001934146341, -0.0001265853659, + -0.0000743902439, -0.0000521951220, -0.0000670731707, -0.0000968292683, + -0.0001414634146, -0.0001860975610, -0.0001339024390, -0.0000373170732, + -0.0000446341463, -0.0001041463415, -0.0001414634146, -0.0001860975610, + -0.0001785365854, -0.0001117073171, -0.0000521951220, -0.0000148780488, + +0.0000000000000, -0.0000446341463, -0.0000521951220, -0.0000075609756, + +0.0000373170732, +0.0000521951220, -0.0000224390244, -0.0001487804878, + -0.0002680487805, -0.0003497560976, -0.0003424390244, -0.0002382926829, + -0.0000670731707, +0.0000521951220, +0.0000743902439, +0.0000743902439, + +0.0000297560976, -0.0000373170732, -0.0000670731707, -0.0000892682927, + -0.0001041463415, -0.0000892682927, -0.0000446341463, +0.0000000000000, + -0.0000670731707, -0.0002680487805, -0.0003943902439, -0.0004763414634, + -0.0005285365854, -0.0003870731707, -0.0000892682927, +0.0001563414634, + +0.0003275609756, +0.0004092682927, +0.0003795121951, +0.0002680487805, + +0.0001117073171, -0.0000297560976, -0.0000968292683, -0.0000595121951, + -0.0000670731707, -0.0001712195122, -0.0002456097561, -0.0002604878049, + -0.0002082926829, -0.0000595121951, +0.0001190243902, +0.0002531707317, + +0.0002531707317, +0.0000892682927, -0.0000595121951, -0.0001117073171, + -0.0001117073171, +0.0000075609756, +0.0002009756098, +0.0002680487805, + +0.0001563414634, +0.0000148780488, +0.0000000000000, +0.0000224390244, + -0.0000446341463, -0.0000968292683, -0.0000819512195, -0.0000670731707, + +0.0000446341463, +0.0001860975610, +0.0002158536585, +0.0002082926829, + +0.0001563414634, +0.0000892682927, +0.0000670731707, +0.0000148780488, + -0.0000373170732, -0.0000373170732, +0.0000224390244, +0.0001190243902, + +0.0001339024390, +0.0001190243902, +0.0001636585366, +0.0001339024390, + +0.0000373170732, -0.0000224390244, +0.0000000000000, +0.0000373170732, + +0.0000000000000, -0.0000521951220, -0.0000297560976, -0.0000075609756, + -0.0000373170732, -0.0000521951220, -0.0000373170732, -0.0000595121951, + -0.0000819512195, -0.0000224390244, +0.0000224390244, +0.0000446341463, + +0.0001265853659, +0.0002307317073, +0.0002604878049, +0.0002158536585, + +0.0000968292683, -0.0000297560976, -0.0000968292683, -0.0001339024390, + -0.0002009756098, -0.0002456097561, -0.0002082926829, -0.0000743902439, + +0.0000446341463, +0.0000968292683, +0.0001339024390, +0.0001414634146, + +0.0000892682927, +0.0000000000000, -0.0001339024390, -0.0002382926829, + -0.0002382926829, -0.0002082926829, -0.0000819512195, +0.0000148780488, + +0.0000000000000, +0.0000075609756, -0.0000075609756, -0.0000670731707, + -0.0001190243902, -0.0002082926829, -0.0002158536585, -0.0001414634146, + -0.0001041463415, -0.0000743902439, +0.0000148780488, +0.0000892682927, + +0.0001190243902, +0.0001117073171, +0.0000373170732, -0.0001041463415, + -0.0002382926829, -0.0002604878049, -0.0002680487805, -0.0002829268293, + -0.0002456097561, -0.0001041463415, +0.0000521951220, +0.0002009756098, + +0.0002680487805, +0.0002158536585, +0.0001041463415, -0.0000446341463, + -0.0002307317073, -0.0003424390244, -0.0003943902439, -0.0003721951220, + -0.0002680487805, -0.0001785365854, -0.0001414634146, -0.0001190243902, + -0.0000446341463, +0.0000297560976, -0.0000075609756, -0.0001117073171, + -0.0001860975610, -0.0002307317073, -0.0002531707317, -0.0002382926829, + -0.0002382926829, -0.0002456097561, -0.0002009756098, -0.0001117073171, + -0.0000521951220, -0.0000743902439, -0.0000892682927, -0.0000595121951, + -0.0000595121951, -0.0001041463415, -0.0001117073171, -0.0001041463415, + -0.0001339024390, -0.0001563414634, -0.0001487804878, -0.0001636585366, + -0.0002456097561, -0.0003348780488, -0.0003348780488, -0.0002829268293, + -0.0002234146341, -0.0001860975610, -0.0000819512195, +0.0001117073171, + +0.0002604878049, +0.0002604878049, +0.0001563414634, +0.0000224390244, + -0.0000148780488, +0.0000075609756, -0.0000297560976, -0.0001041463415, + -0.0001563414634, -0.0001339024390, -0.0000595121951, -0.0000224390244, + -0.0000446341463, -0.0000892682927, -0.0001339024390, -0.0001712195122, + -0.0002307317073, -0.0002978048780, -0.0002456097561, -0.0001265853659, + +0.0000000000000, +0.0000743902439, +0.0000819512195, +0.0000595121951, + +0.0000000000000, -0.0000297560976, -0.0000224390244, -0.0000075609756, + +0.0000000000000, -0.0000148780488, +0.0000000000000, +0.0000297560976, + -0.0000075609756, -0.0000446341463, -0.0000373170732, -0.0000297560976, + -0.0000373170732, -0.0001117073171, -0.0002307317073, -0.0002456097561, + -0.0001785365854, -0.0000892682927, -0.0000224390244, +0.0000075609756, + +0.0000595121951, +0.0000743902439, +0.0000297560976, -0.0000075609756, + -0.0000446341463, -0.0000670731707, -0.0000670731707, -0.0000892682927, + -0.0001190243902, -0.0001563414634, -0.0001487804878, -0.0000670731707, + -0.0000446341463, -0.0000743902439, -0.0001041463415, -0.0001117073171, + -0.0001117073171, -0.0001190243902, -0.0001265853659, -0.0001563414634, + -0.0001860975610, -0.0001785365854, -0.0001785365854, -0.0001563414634, + -0.0000595121951, +0.0000075609756, +0.0000000000000, -0.0000224390244, + -0.0000148780488, +0.0000000000000, -0.0000297560976, -0.0000595121951, + -0.0001117073171, -0.0001785365854, -0.0001712195122, -0.0001339024390, + -0.0001041463415, -0.0000595121951, -0.0000075609756, +0.0000297560976, + +0.0000297560976, -0.0000148780488, -0.0000373170732, +0.0000000000000, + +0.0000446341463, +0.0000670731707, +0.0000373170732, +0.0000148780488, + -0.0000521951220, -0.0001785365854, -0.0002382926829, -0.0002604878049, + -0.0001860975610, -0.0000297560976, +0.0000968292683, +0.0001860975610, + +0.0001860975610, +0.0000743902439, -0.0000148780488, -0.0000743902439, + -0.0001414634146, -0.0001265853659, -0.0000743902439, -0.0000297560976, + +0.0000075609756, +0.0000148780488, +0.0000075609756, +0.0000446341463, + +0.0000968292683, +0.0001117073171, +0.0001041463415, +0.0000968292683, + +0.0001265853659, +0.0001339024390, +0.0000743902439, +0.0000297560976, + -0.0000224390244, -0.0000670731707, -0.0000373170732, +0.0000224390244, + +0.0000446341463, +0.0000670731707, +0.0000670731707, +0.0000075609756, + -0.0000892682927, -0.0001487804878, -0.0001041463415, +0.0000148780488, + +0.0001190243902, +0.0001487804878, +0.0000968292683, +0.0000148780488, + -0.0000148780488, -0.0000373170732, -0.0000446341463, -0.0000446341463, + -0.0000743902439, -0.0000670731707, +0.0000000000000, +0.0000743902439, + +0.0001190243902, +0.0001041463415, +0.0000446341463, +0.0000075609756, + -0.0000148780488, -0.0000595121951, -0.0000819512195, -0.0000819512195, + -0.0000892682927, -0.0000446341463, +0.0000224390244, +0.0000224390244, + -0.0000297560976, -0.0000446341463, +0.0000148780488, +0.0001339024390, + +0.0001636585366, +0.0001265853659, +0.0000521951220, -0.0000297560976, + -0.0000819512195, -0.0001041463415, -0.0000892682927, -0.0000670731707, + -0.0000819512195, -0.0001041463415, -0.0000595121951, -0.0000148780488, + +0.0000446341463, +0.0001339024390, +0.0001414634146, +0.0000892682927, + +0.0000446341463, -0.0000148780488, -0.0000595121951, -0.0000670731707, + -0.0000224390244, +0.0000595121951, +0.0001117073171, +0.0000968292683, + +0.0000743902439, +0.0000297560976, -0.0000148780488, +0.0000075609756, + +0.0001041463415, +0.0001414634146, +0.0000819512195, +0.0000148780488, + -0.0000075609756, -0.0000446341463, -0.0000595121951, -0.0000968292683, + -0.0000819512195, -0.0000075609756, +0.0000373170732, +0.0000595121951, + +0.0000892682927, +0.0001265853659, +0.0001487804878, +0.0001414634146, + +0.0001414634146, +0.0001636585366, +0.0000819512195, -0.0000670731707, + -0.0001636585366, -0.0001636585366, -0.0001339024390, -0.0000968292683, + -0.0000148780488, +0.0000743902439, +0.0001414634146, +0.0001934146341, + +0.0001636585366, +0.0000521951220, +0.0000000000000, -0.0000075609756, + -0.0000075609756, +0.0000148780488, +0.0000892682927, +0.0001934146341, + +0.0002382926829, +0.0001785365854, +0.0000670731707, +0.0000000000000, + -0.0000595121951, -0.0000819512195, -0.0000075609756, +0.0001190243902, + +0.0002531707317, +0.0003348780488, +0.0002829268293, +0.0002009756098, + +0.0001339024390, +0.0000892682927, +0.0001041463415, +0.0000968292683, + +0.0000446341463, +0.0000075609756, +0.0000000000000, -0.0000148780488, + -0.0000297560976, -0.0000595121951, -0.0000670731707, -0.0000224390244, + +0.0000743902439, +0.0001414634146, +0.0001563414634, +0.0001487804878, + +0.0001041463415, +0.0000521951220, +0.0000000000000, -0.0000446341463, + -0.0000892682927, -0.0001190243902, -0.0000968292683, -0.0000297560976, + +0.0000373170732, +0.0001339024390, +0.0002082926829, +0.0001712195122, + +0.0000968292683, +0.0000148780488, -0.0000521951220, -0.0000373170732, + +0.0000297560976, +0.0000446341463, +0.0000521951220, +0.0000670731707, + +0.0000743902439, +0.0000743902439, +0.0001041463415, +0.0001414634146, + +0.0001712195122, +0.0001712195122, +0.0001487804878, +0.0001190243902, + +0.0000446341463, -0.0000075609756, -0.0000075609756, -0.0000075609756, + -0.0000075609756, +0.0000000000000, +0.0000075609756, +0.0000224390244, + +0.0000224390244, +0.0000075609756, +0.0000373170732, +0.0001414634146, + +0.0002753658537, +0.0003573170732, +0.0003051219512, +0.0001487804878, + +0.0000000000000, -0.0000968292683, -0.0001117073171, -0.0000595121951, + -0.0000148780488, +0.0000148780488, +0.0000595121951, +0.0000892682927, + +0.0001041463415, +0.0001414634146, +0.0001860975610, +0.0001712195122, + +0.0001117073171, +0.0000224390244, -0.0000373170732, -0.0000446341463, + -0.0000297560976, -0.0000148780488, -0.0000075609756, -0.0000373170732, + -0.0001117073171, -0.0001487804878, -0.0001117073171, -0.0000075609756, + +0.0001190243902, +0.0002307317073, +0.0002829268293, +0.0002382926829, + +0.0001414634146, +0.0000224390244, -0.0000373170732, -0.0000224390244, + +0.0000521951220, +0.0000892682927, +0.0000670731707, +0.0000297560976, + +0.0000148780488, +0.0000000000000, +0.0000075609756, +0.0000595121951, + +0.0000743902439, +0.0000819512195, +0.0000968292683, +0.0000446341463, + -0.0000224390244, -0.0000297560976, +0.0000670731707, +0.0001860975610, + +0.0002158536585, +0.0001117073171, -0.0000297560976, -0.0001265853659, + -0.0001487804878, -0.0001190243902, -0.0000446341463, +0.0000373170732, + +0.0001190243902, +0.0001712195122, +0.0001712195122, +0.0001339024390, + +0.0000373170732, -0.0000670731707, -0.0001339024390, -0.0001636585366, + -0.0001563414634, -0.0000743902439, +0.0000297560976, +0.0001414634146, + +0.0001860975610, +0.0001563414634, +0.0000968292683, +0.0000446341463, + +0.0000148780488, +0.0000148780488, +0.0000224390244, +0.0000224390244, + -0.0000075609756, -0.0000373170732, -0.0000521951220, -0.0000521951220, + -0.0000148780488, +0.0000000000000, -0.0000373170732, -0.0001117073171, + -0.0001414634146, -0.0000521951220, +0.0001265853659, +0.0002753658537, + +0.0003051219512, +0.0002382926829, +0.0001117073171, -0.0000297560976, + -0.0001117073171, -0.0000743902439, +0.0000148780488, +0.0001265853659, + +0.0001712195122, +0.0001636585366, +0.0001563414634, +0.0000968292683, + +0.0000373170732, +0.0000000000000, -0.0000595121951, -0.0001487804878, + -0.0002082926829, -0.0002009756098, -0.0001414634146, -0.0000224390244, + +0.0001190243902, +0.0001860975610, +0.0001636585366, +0.0001117073171, + +0.0000521951220, +0.0000224390244, +0.0000075609756, +0.0000000000000, + +0.0000000000000, -0.0000224390244, -0.0000670731707, -0.0000968292683, + -0.0000670731707, +0.0000224390244, +0.0000892682927, +0.0000521951220, + +0.0000075609756, +0.0000000000000, +0.0000075609756, +0.0000521951220, + +0.0000595121951, +0.0000446341463, +0.0000075609756, -0.0000595121951, + -0.0001265853659, -0.0001636585366, -0.0001636585366, -0.0001414634146, + -0.0001041463415, -0.0000521951220, +0.0000148780488, +0.0000595121951, + +0.0000670731707, +0.0000595121951, +0.0000670731707, +0.0001190243902, + +0.0001712195122, +0.0001636585366, +0.0000595121951, -0.0000521951220, + -0.0001265853659, -0.0001339024390, -0.0001414634146, -0.0001117073171, + -0.0000446341463, +0.0000297560976, +0.0000743902439, +0.0000968292683, + +0.0001041463415, +0.0001041463415, +0.0000670731707, +0.0000000000000, + -0.0000743902439, -0.0001487804878, -0.0001563414634, -0.0001265853659, + -0.0000595121951, +0.0000373170732, +0.0001339024390, +0.0001934146341, + +0.0002082926829, +0.0001934146341, +0.0001712195122, +0.0001339024390, + +0.0000743902439, +0.0000000000000, -0.0000968292683, -0.0001563414634, + -0.0001487804878, -0.0001117073171, -0.0000521951220, +0.0000000000000, + +0.0000521951220, +0.0000819512195, +0.0000968292683, +0.0001041463415, + +0.0000819512195, +0.0000373170732, +0.0000075609756, +0.0000000000000, + -0.0000224390244, -0.0000148780488, +0.0000000000000, +0.0000373170732, + +0.0000743902439, +0.0001041463415, +0.0000892682927, +0.0000743902439, + +0.0000521951220, +0.0000075609756, -0.0000148780488, -0.0000670731707, + -0.0000743902439, -0.0000521951220, -0.0000224390244, +0.0000000000000, + +0.0000224390244, +0.0000373170732, +0.0000446341463, +0.0000297560976, + +0.0000000000000, +0.0000000000000, +0.0000000000000, +0.0000075609756, + +0.0000297560976, +0.0000297560976, +0.0000224390244, +0.0000148780488, + +0.0000148780488, +0.0000224390244, +0.0000148780488, +0.0000075609756, + +0.0000000000000, +0.0000075609756, +0.0000148780488, +0.0000148780488, + +0.0000075609756, +0.0000075609756, +0.0000000000000, -0.0000224390244, + -0.0000297560976, -0.0000297560976, -0.0000148780488, +0.0000000000000, + +0.0000000000000, +0.0000000000000, +0.0000000000000, -0.0000075609756, + -0.0000075609756, +0.0000000000000, +0.0000000000000, +0.0000000000000, + +0.0000000000000, +0.0000000000000, +0.0000000000000, +0.0000000000000, + +0.0000000000000, +0.0000075609756, +0.0000148780488, +0.0000148780488, + +0.0000075609756, +0.0000000000000, +0.0000000000000, +0.0000000000000, + +0.0000000000000, +0.0000000000000, +0.0000000000000, +0.0000000000000, + +0.0000000000000, +0.0000000000000, +0.0000000000000, +0.0000000000000, + +0.0000000000000, +0.0000000000000, +0.0000000000000 +}; diff --git a/plugins/ladspa_effect/swh/impulses/11-fender-bassman-ui87.h b/plugins/ladspa_effect/swh/impulses/11-fender-bassman-ui87.h new file mode 100644 index 000000000..704559646 --- /dev/null +++ b/plugins/ladspa_effect/swh/impulses/11-fender-bassman-ui87.h @@ -0,0 +1,822 @@ +float fender_bassman_ui87[] = { + +0.0000000000000, +0.0000000000000, +0.0000000000000, +0.0000062374245, + +0.0000122736419, +0.0000122736419, +0.0000122736419, +0.0000062374245, + +0.0000062374245, +0.0000062374245, +0.0000122736419, +0.0000122736419, + +0.0000122736419, +0.0000000000000, -0.0000185110664, -0.0000307847082, + -0.0000368209256, -0.0000185110664, +0.0000062374245, +0.0000430583501, + +0.0000859154930, +0.0001044265594, +0.0000981891348, +0.0000798792757, + +0.0000490945674, +0.0000185110664, +0.0000000000000, +0.0000000000000, + -0.0000062374245, -0.0000245472837, -0.0000430583501, -0.0000613682093, + -0.0000736418511, -0.0000553319920, -0.0000062374245, +0.0000676056338, + +0.0001535211268, +0.0002211267606, +0.0002394366197, +0.0002088531187, + +0.0001227364185, +0.0000000000000, -0.0001167002012, -0.0002026156942, + -0.0002211267606, -0.0001657947686, -0.0000368209256, +0.0001289738431, + +0.0002885311871, +0.0004052313883, +0.0004297786720, +0.0003561368209, + +0.0002026156942, +0.0000122736419, -0.0001535211268, -0.0002517102616, + -0.0002517102616, -0.0001535211268, +0.0000000000000, +0.0001535211268, + +0.0002579476861, +0.0002762575453, +0.0002088531187, +0.0001044265594, + +0.0000062374245, -0.0000307847082, -0.0000062374245, +0.0000736418511, + +0.0001718309859, +0.0002394366197, +0.0002334004024, +0.0001657947686, + +0.0000490945674, -0.0000613682093, -0.0001412474849, -0.0001657947686, + -0.0001167002012, -0.0000307847082, +0.0000613682093, +0.0001472837022, + +0.0001965794769, +0.0002088531187, +0.0001903420523, +0.0001472837022, + +0.0000921529175, +0.0000368209256, +0.0000000000000, -0.0000245472837, + -0.0000185110664, +0.0000122736419, +0.0000798792757, +0.0001595573441, + +0.0002271629779, +0.0002639839034, +0.0002579476861, +0.0001965794769, + +0.0001044265594, +0.0000000000000, -0.0000798792757, -0.0001289738431, + -0.0001350100604, -0.0000981891348, -0.0000245472837, +0.0000553319920, + +0.0001350100604, +0.0002026156942, +0.0002456740443, +0.0002702213280, + +0.0002762575453, +0.0002762575453, +0.0002762575453, +0.0002639839034, + +0.0002517102616, +0.0002026156942, +0.0001227364185, +0.0000062374245, + -0.0001167002012, -0.0002334004024, -0.0003008048290, -0.0002947686117, + -0.0002088531187, -0.0000676056338, +0.0000859154930, +0.0002088531187, + +0.0002824949698, +0.0002947686117, +0.0002702213280, +0.0002334004024, + +0.0002271629779, +0.0002517102616, +0.0002885311871, +0.0002947686117, + +0.0002456740443, +0.0001167002012, -0.0000553319920, -0.0002517102616, + -0.0003929577465, -0.0004482897384, -0.0003929577465, -0.0002517102616, + -0.0000676056338, +0.0001044265594, +0.0002334004024, +0.0003008048290, + +0.0003253521127, +0.0003315895372, +0.0003376257545, +0.0003623742455, + +0.0003991951710, +0.0004114688129, +0.0003746478873, +0.0002639839034, + +0.0000736418511, -0.0001780684105, -0.0004420523139, -0.0006569416499, + -0.0007553319920, -0.0006937625755, -0.0004605633803, -0.0001104627767, + +0.0002702213280, +0.0005832997988, +0.0007430583501, +0.0007185110664, + +0.0005404426559, +0.0002885311871, +0.0000613682093, -0.0000676056338, + -0.0000921529175, -0.0000613682093, -0.0000368209256, -0.0000676056338, + -0.0001535211268, -0.0002639839034, -0.0003193158954, -0.0002824949698, + -0.0001657947686, -0.0000185110664, +0.0000798792757, +0.0000859154930, + +0.0000122736419, -0.0000676056338, -0.0000798792757, +0.0000307847082, + +0.0002334004024, +0.0004114688129, +0.0004605633803, +0.0002947686117, + -0.0000613682093, -0.0004788732394, -0.0007798792757, -0.0008104627767, + -0.0005342052314, -0.0000430583501, +0.0004543259557, +0.0007859154930, + +0.0007981891348, +0.0005404426559, +0.0001044265594, -0.0002947686117, + -0.0006140845070, -0.0008044265594, -0.0007859154930, -0.0008595573441, + -0.0009148893360, -0.0008472837022, -0.0006323943662, -0.0002456740443, + +0.0002824949698, +0.0008350100604, +0.0012342052314, +0.0012955734406, + +0.0009639839034, +0.0004114688129, -0.0002026156942, -0.0006509054326, + -0.0008965794769, -0.0009026156942, -0.0008780684105, -0.0009026156942, + -0.0010623742455, -0.0012096579477, -0.0012895372233, -0.0011175050302, + -0.0007859154930, -0.0003008048290, +0.0000613682093, +0.0001657947686, + +0.0000122736419, -0.0002579476861, -0.0005342052314, -0.0007062374245, + -0.0005587525151, -0.0005404426559, -0.0005464788732, -0.0012404426559, + -0.0020323943662, -0.0035307847082, -0.0047955734406, -0.0061158953722, + -0.0070676056338, -0.0091921529175, -0.0070798792757, -0.0133553319920, + -0.0027569416499, -0.0126613682093, -0.0237386317907, +0.0033772635815, + +0.0536728370221, +0.0315122736419, -0.0922344064386, -0.1213824949698, + -0.0277605633803, +0.0047034205231, +0.0728983903421, +0.1977993963783, + +0.2011949698189, +0.1692529175050, +0.0937263581489, -0.0018665995976, + -0.0412631790744, -0.0820597585513, -0.1030229376258, -0.0709150905433, + -0.0684464788732, -0.0469000000000, -0.0155289738431, +0.0112859154930, + +0.0516587525151, +0.0585728370221, +0.0543668008048, +0.0577255533199, + +0.0324088531187, +0.0172543259557, +0.0068649899396, -0.0127780684105, + -0.0118816901408, -0.0237446680080, -0.0326605633803, -0.0255869215292, + -0.0184885311871, -0.0068034205231, -0.0002702213280, -0.0085044265594, + -0.0060360160966, +0.0026955734406, +0.0037394366197, +0.0108561368209, + +0.0087193158954, -0.0036167002012, -0.0076692152918, -0.0095237424547, + -0.0186482897384, -0.0095543259557, -0.0116543259557, -0.0237877263581, + -0.0116973843058, -0.0127167002012, -0.0158052313883, -0.0088114688129, + -0.0080746478873, -0.0066253521127, -0.0051026156942, -0.0084430583501, + +0.0024501006036, +0.0069018108652, +0.0081973843058, +0.0107639839034, + +0.0045376257545, +0.0050720321932, +0.0026832997988, +0.0038991951710, + +0.0074482897384, -0.0005464788732, -0.0069201207243, -0.0096404426559, + -0.0163271629779, -0.0202323943662, -0.0166772635815, -0.0099657947686, + -0.0006692152918, +0.0026772635815, +0.0057350100604, +0.0049122736419, + +0.0019649899396, +0.0010315895372, +0.0005342052314, -0.0041877263581, + -0.0106780684105, -0.0095665995976, -0.0106167002012, -0.0108684104628, + -0.0095973843058, -0.0097509054326, -0.0118877263581, -0.0138649899396, + -0.0116360160966, -0.0020877263581, +0.0010501006036, -0.0030702213280, + -0.0049798792757, -0.0084981891348, -0.0078472837022, -0.0058211267606, + -0.0040096579477, -0.0003684104628, +0.0004788732394, +0.0035368209256, + +0.0064289738431, -0.0011665995976, -0.0066929577465, -0.0074665995976, + -0.0091307847082, -0.0045130784708, -0.0005527162978, -0.0009824949698, + -0.0028490945674, -0.0072026156942, -0.0101561368209, -0.0114026156942, + -0.0127720321932, -0.0124281690141, -0.0128885311871, -0.0111386317907, + -0.0069877263581, -0.0066253521127, -0.0049185110664, -0.0006263581489, + +0.0023885311871, +0.0036289738431, +0.0033955734406, +0.0043780684105, + +0.0052376257545, +0.0032911468813, +0.0036657947686, +0.0046851106640, + +0.0035553319920, +0.0015903420523, -0.0024806841046, -0.0073193158954, + -0.0122193158954, -0.0149517102616, -0.0131895372233, -0.0104446680080, + -0.0078843058350, -0.0047955734406, -0.0020509054326, -0.0000307847082, + -0.0006140845070, -0.0014490945674, +0.0001044265594, +0.0020631790744, + +0.0039851106640, +0.0055201207243, +0.0051026156942, +0.0041263581489, + +0.0020692152918, -0.0005955734406, -0.0006692152918, -0.0000122736419, + +0.0001412474849, +0.0012895372233, +0.0025665995976, +0.0030762575453, + +0.0025728370221, +0.0020323943662, +0.0030211267606, +0.0039851106640, + +0.0052929577465, +0.0079211267606, +0.0073315895372, +0.0046788732394, + +0.0027446680080, +0.0014798792757, +0.0016579476861, +0.0008044265594, + -0.0001657947686, -0.0002211267606, -0.0013631790744, -0.0011114688129, + -0.0005527162978, -0.0002271629779, +0.0025175050302, +0.0051517102616, + +0.0066253521127, +0.0073561368209, +0.0066869215292, +0.0059684104628, + +0.0059869215292, +0.0059746478873, +0.0047832997988, +0.0030271629779, + +0.0005587525151, -0.0006509054326, +0.0007185110664, +0.0013814889336, + +0.0034446680080, +0.0066623742455, +0.0072088531187, +0.0077245472837, + +0.0084122736419, +0.0069323943662, +0.0049490945674, +0.0029535211268, + +0.0023334004024, +0.0027201207243, +0.0037947686117, +0.0061342052314, + +0.0077307847082, +0.0083569416499, +0.0071472837022, +0.0042553319920, + +0.0030639839034, +0.0009517102616, -0.0014736418511, +0.0005772635815, + +0.0030026156942, +0.0045684104628, +0.0062078470825, +0.0054342052314, + +0.0036720321932, +0.0021921529175, +0.0009334004024, +0.0012955734406, + +0.0015657947686, +0.0015350100604, +0.0019464788732, +0.0019527162978, + +0.0030517102616, +0.0063307847082, +0.0081788732394, +0.0074665995976, + +0.0066315895372, +0.0048692152918, +0.0015227364185, -0.0014676056338, + -0.0026281690141, -0.0018851106640, -0.0005832997988, -0.0000490945674, + -0.0005587525151, -0.0016334004024, -0.0020018108652, -0.0002148893360, + +0.0017438631791, +0.0023271629779, +0.0031623742455, +0.0037394366197, + +0.0021859154930, +0.0010869215292, +0.0014430583501, +0.0014490945674, + +0.0016394366197, +0.0018665995976, +0.0019342052314, +0.0028062374245, + +0.0042859154930, +0.0048569416499, +0.0037334004024, +0.0014185110664, + -0.0001472837022, -0.0005464788732, -0.0001472837022, +0.0011237424547, + +0.0017869215292, +0.0003991951710, -0.0015289738431, -0.0028490945674, + -0.0028736418511, -0.0017070422535, +0.0000000000000, +0.0014859154930, + +0.0020201207243, +0.0022350100604, +0.0027692152918, +0.0022657947686, + +0.0002824949698, -0.0016579476861, -0.0028000000000, -0.0032297786720, + -0.0022843058350, +0.0002702213280, +0.0010070422535, -0.0001412474849, + -0.0006754527163, -0.0014553319920, -0.0036720321932, -0.0038991951710, + -0.0029720321932, -0.0022843058350, -0.0009271629779, -0.0005832997988, + -0.0004973843058, -0.0006140845070, -0.0014981891348, -0.0016885311871, + -0.0011728370221, -0.0006386317907, +0.0007122736419, +0.0007185110664, + -0.0000736418511, -0.0011114688129, -0.0025543259557, -0.0032543259557, + -0.0035000000000, -0.0024253521127, -0.0001350100604, +0.0010561368209, + +0.0016148893360, +0.0013263581489, -0.0004543259557, -0.0007859154930, + -0.0009394366197, -0.0018175050302, -0.0017130784708, -0.0010070422535, + -0.0000981891348, +0.0009088531187, +0.0012772635815, +0.0012219315895, + +0.0004175050302, +0.0006018108652, +0.0008780684105, -0.0005034205231, + -0.0011114688129, -0.0010684104628, -0.0014185110664, -0.0019404426559, + -0.0031070422535, -0.0031376257545, -0.0022903420523, -0.0016271629779, + +0.0001167002012, +0.0011851106640, -0.0000122736419, -0.0012710261569, + -0.0020509054326, -0.0026649899396, -0.0027692152918, -0.0026342052314, + -0.0021859154930, -0.0011728370221, -0.0000245472837, +0.0007676056338, + +0.0011237424547, +0.0009088531187, +0.0009456740443, +0.0008535211268, + -0.0006078470825, -0.0017315895372, -0.0017929577465, -0.0023885311871, + -0.0025420523139, -0.0017070422535, -0.0001227364185, +0.0012404426559, + +0.0015044265594, +0.0025605633803, +0.0035613682093, +0.0033156941650, + +0.0027509054326, +0.0015289738431, +0.0003623742455, -0.0005342052314, + -0.0012955734406, -0.0007921529175, -0.0001843058350, +0.0002271629779, + +0.0008718309859, +0.0018175050302, +0.0029289738431, +0.0029412474849, + +0.0022720321932, +0.0009394366197, -0.0008289738431, -0.0008104627767, + -0.0005464788732, -0.0003315895372, +0.0005649899396, +0.0005219315895, + -0.0000368209256, -0.0004237424547, -0.0005464788732, -0.0001289738431, + -0.0003315895372, -0.0004297786720, +0.0007553319920, +0.0015044265594, + +0.0023211267606, +0.0032114688129, +0.0035307847082, +0.0033772635815, + +0.0020386317907, +0.0003929577465, -0.0003746478873, -0.0005895372233, + -0.0003806841046, -0.0002026156942, -0.0002702213280, +0.0001780684105, + +0.0004482897384, -0.0002639839034, -0.0009824949698, -0.0013446680080, + -0.0014921529175, -0.0011114688129, -0.0004052313883, +0.0001412474849, + +0.0004788732394, +0.0004605633803, +0.0008472837022, +0.0015903420523, + +0.0019587525151, +0.0022472837022, +0.0030026156942, +0.0033281690141, + +0.0028798792757, +0.0024253521127, +0.0014000000000, +0.0004851106640, + +0.0005895372233, +0.0008044265594, +0.0012464788732, +0.0017070422535, + +0.0019464788732, +0.0023702213280, +0.0017684104628, +0.0006631790744, + +0.0002088531187, -0.0005464788732, -0.0005527162978, -0.0001595573441, + -0.0003746478873, -0.0000613682093, -0.0004911468813, -0.0009026156942, + -0.0002579476861, -0.0002271629779, +0.0000245472837, +0.0005527162978, + +0.0007122736419, +0.0009088531187, +0.0007490945674, +0.0014613682093, + +0.0026772635815, +0.0029044265594, +0.0026464788732, +0.0014798792757, + +0.0000613682093, -0.0004237424547, -0.0004543259557, +0.0000000000000, + +0.0004911468813, +0.0004851106640, +0.0005156941650, +0.0007981891348, + +0.0010438631791, +0.0008227364185, +0.0008657947686, +0.0010193158954, + +0.0007736418511, +0.0004788732394, -0.0001044265594, -0.0004665995976, + -0.0009947686117, -0.0017684104628, -0.0022044265594, -0.0026096579477, + -0.0020323943662, -0.0005034205231, +0.0007798792757, +0.0022720321932, + +0.0033281690141, +0.0037211267606, +0.0033832997988, +0.0021307847082, + +0.0012832997988, +0.0005281690141, -0.0002148893360, -0.0005772635815, + -0.0009088531187, -0.0009211267606, -0.0008965794769, -0.0011237424547, + -0.0007798792757, -0.0003070422535, -0.0000981891348, -0.0001780684105, + +0.0001350100604, +0.0004360160966, -0.0005404426559, -0.0013569416499, + -0.0016394366197, -0.0014553319920, -0.0008657947686, -0.0007859154930, + -0.0009517102616, -0.0013018108652, -0.0023148893360, -0.0028490945674, + -0.0027140845070, -0.0019281690141, -0.0002639839034, +0.0013877263581, + +0.0024806841046, +0.0026587525151, +0.0019096579477, +0.0006263581489, + -0.0006877263581, -0.0015843058350, -0.0021981891348, -0.0025788732394, + -0.0026464788732, -0.0023088531187, -0.0014981891348, -0.0010130784708, + -0.0003561368209, +0.0002947686117, +0.0000553319920, -0.0000430583501, + -0.0002148893360, -0.0007307847082, -0.0009456740443, -0.0010315895372, + -0.0011420523139, -0.0013569416499, -0.0019955734406, -0.0021921529175, + -0.0018728370221, -0.0015412474849, -0.0005649899396, +0.0002334004024, + +0.0001044265594, -0.0001104627767, -0.0000245472837, +0.0002026156942, + +0.0009762575453, +0.0013877263581, +0.0014000000000, +0.0012710261569, + +0.0004297786720, -0.0002088531187, -0.0003991951710, -0.0007185110664, + -0.0005404426559, -0.0007798792757, -0.0013937625755, -0.0012772635815, + -0.0014245472837, -0.0014245472837, -0.0008104627767, -0.0007245472837, + -0.0005219315895, -0.0002211267606, +0.0001780684105, +0.0006754527163, + +0.0000859154930, -0.0005587525151, -0.0009762575453, -0.0018728370221, + -0.0021430583501, -0.0011360160966, -0.0002456740443, -0.0000613682093, + +0.0000921529175, +0.0003561368209, +0.0000798792757, -0.0003070422535, + -0.0008350100604, -0.0015412474849, -0.0016394366197, -0.0009947686117, + -0.0004114688129, -0.0003869215292, -0.0009639839034, -0.0014307847082, + -0.0014553319920, -0.0014368209256, -0.0009334004024, -0.0003008048290, + -0.0004360160966, -0.0007122736419, -0.0009517102616, -0.0014921529175, + -0.0017561368209, -0.0017070422535, -0.0014981891348, -0.0008780684105, + -0.0006263581489, -0.0009762575453, -0.0012281690141, -0.0014430583501, + -0.0016271629779, -0.0016271629779, -0.0016148893360, -0.0015657947686, + -0.0014000000000, -0.0011973843058, -0.0008843058350, -0.0004360160966, + -0.0001657947686, -0.0000245472837, +0.0001104627767, +0.0000000000000, + -0.0002211267606, -0.0003561368209, -0.0002394366197, -0.0002026156942, + -0.0004973843058, -0.0008412474849, -0.0011482897384, -0.0013263581489, + -0.0013323943662, -0.0011175050302, -0.0005034205231, -0.0003070422535, + -0.0006078470825, -0.0009639839034, -0.0013140845070, -0.0011360160966, + -0.0009579476861, -0.0004114688129, +0.0003991951710, -0.0001227364185, + -0.0010253521127, -0.0013018108652, -0.0014122736419, -0.0013569416499, + -0.0013814889336, -0.0012034205231, -0.0009148893360, -0.0010869215292, + -0.0010746478873, -0.0005587525151, -0.0003869215292, -0.0003253521127, + -0.0000430583501, -0.0000798792757, -0.0003623742455, -0.0006078470825, + -0.0008657947686, -0.0006018108652, -0.0002639839034, -0.0003315895372, + -0.0003315895372, -0.0007062374245, -0.0009334004024, -0.0006201207243, + -0.0007122736419, -0.0009762575453, -0.0010623742455, -0.0013754527163, + -0.0015535211268, -0.0013569416499, -0.0006877263581, +0.0000676056338, + +0.0001903420523, +0.0000122736419, -0.0001965794769, -0.0004114688129, + -0.0005772635815, -0.0005649899396, -0.0004420523139, -0.0002026156942, + +0.0001104627767, +0.0002211267606, +0.0001044265594, +0.0001289738431, + +0.0002271629779, +0.0002762575453, +0.0000798792757, -0.0001965794769, + -0.0004911468813, -0.0009517102616, -0.0009639839034, -0.0004665995976, + +0.0001903420523, +0.0005219315895, +0.0002579476861, -0.0001535211268, + -0.0001289738431, +0.0000553319920, +0.0000490945674, +0.0000430583501, + -0.0000981891348, -0.0003070422535, -0.0002148893360, +0.0000245472837, + +0.0004911468813, +0.0009394366197, +0.0008227364185, +0.0005955734406, + +0.0004237424547, +0.0003561368209, +0.0004788732394, +0.0004482897384, + +0.0002702213280, +0.0001903420523, +0.0000676056338, +0.0000553319920, + +0.0000430583501, -0.0002148893360, -0.0005034205231, -0.0008657947686, + -0.0010253521127, -0.0008167002012, -0.0004237424547, +0.0000368209256, + +0.0004605633803, +0.0007185110664, +0.0006754527163, +0.0004728370221, + +0.0005527162978, +0.0008472837022, +0.0008780684105, +0.0005527162978, + +0.0000676056338, -0.0001657947686, +0.0000122736419, +0.0003991951710, + +0.0007368209256, +0.0010130784708, +0.0011052313883, +0.0008843058350, + +0.0007245472837, +0.0007368209256, +0.0009824949698, +0.0009579476861, + +0.0006201207243, +0.0001412474849, -0.0004237424547, -0.0007185110664, + -0.0003991951710, +0.0004543259557, +0.0012281690141, +0.0012219315895, + +0.0007430583501, +0.0002456740443, -0.0003376257545, -0.0004973843058, + -0.0001903420523, +0.0000430583501, +0.0001718309859, +0.0000245472837, + -0.0003253521127, -0.0004911468813, -0.0003501006036, -0.0000981891348, + +0.0000798792757, -0.0000185110664, -0.0003253521127, -0.0004543259557, + -0.0004482897384, -0.0001843058350, +0.0004297786720, +0.0008657947686, + +0.0008412474849, +0.0006509054326, +0.0003438631791, +0.0001595573441, + -0.0000490945674, -0.0003130784708, -0.0002702213280, -0.0001718309859, + -0.0005832997988, -0.0009885311871, -0.0009639839034, -0.0007798792757, + -0.0002639839034, +0.0002947686117, +0.0003684104628, +0.0003193158954, + +0.0000859154930, -0.0003929577465, -0.0005342052314, -0.0003561368209, + -0.0002702213280, -0.0001843058350, -0.0002702213280, -0.0005527162978, + -0.0005096579477, -0.0002579476861, -0.0000245472837, +0.0002517102616, + +0.0001780684105, -0.0001044265594, -0.0001412474849, -0.0004237424547, + -0.0005219315895, -0.0003070422535, -0.0003561368209, -0.0002211267606, + +0.0000981891348, +0.0002088531187, +0.0002334004024, -0.0000921529175, + -0.0004851106640, -0.0008104627767, -0.0013631790744, -0.0011851106640, + -0.0006877263581, -0.0004420523139, +0.0000368209256, +0.0001289738431, + -0.0001044265594, -0.0001535211268, -0.0003376257545, -0.0003008048290, + -0.0002026156942, -0.0003130784708, -0.0002702213280, -0.0005034205231, + -0.0007613682093, -0.0008595573441, -0.0011728370221, -0.0011360160966, + -0.0006386317907, -0.0000185110664, +0.0005772635815, +0.0008227364185, + +0.0009088531187, +0.0004973843058, -0.0000736418511, -0.0004420523139, + -0.0010991951710, -0.0011360160966, -0.0004973843058, +0.0001104627767, + +0.0002639839034, +0.0001903420523, +0.0004297786720, -0.0001718309859, + -0.0006386317907, -0.0003315895372, -0.0002639839034, +0.0004175050302, + +0.0008167002012, +0.0006018108652, +0.0006323943662, -0.0003130784708, + -0.0012156941650, -0.0012710261569, -0.0018605633803, -0.0011851106640, + -0.0002394366197, +0.0000122736419, +0.0008718309859, +0.0008167002012, + -0.0003746478873, -0.0008104627767, -0.0008227364185, -0.0005219315895, + +0.0000921529175, +0.0004175050302, +0.0007490945674, +0.0009271629779, + +0.0009271629779, +0.0009885311871, +0.0008535211268, +0.0004420523139, + +0.0001535211268, -0.0002702213280, -0.0003684104628, -0.0001289738431, + -0.0001718309859, +0.0000613682093, +0.0003991951710, +0.0006201207243, + +0.0008227364185, +0.0009088531187, +0.0008780684105, +0.0009947686117, + +0.0008965794769, +0.0006814889336, +0.0007062374245, +0.0006386317907, + +0.0008044265594, +0.0008903420523, +0.0008167002012, +0.0006877263581, + +0.0006386317907, +0.0006814889336, +0.0007185110664, +0.0006446680080, + +0.0006692152918, +0.0010070422535, +0.0013692152918, +0.0015472837022, + +0.0014000000000, +0.0010561368209, +0.0007921529175, +0.0006386317907, + +0.0003253521127, -0.0000613682093, -0.0002824949698, -0.0003376257545, + +0.0000000000000, +0.0005404426559, +0.0007676056338, +0.0008903420523, + +0.0012281690141, +0.0014122736419, +0.0012464788732, +0.0010193158954, + +0.0007490945674, +0.0002702213280, +0.0000062374245, -0.0001167002012, + +0.0000122736419, +0.0005772635815, +0.0010070422535, +0.0014553319920, + +0.0015412474849, +0.0012096579477, +0.0010070422535, +0.0007921529175, + +0.0008104627767, +0.0012772635815, +0.0016211267606, +0.0017929577465, + +0.0015903420523, +0.0010684104628, +0.0007676056338, +0.0004911468813, + +0.0003869215292, +0.0006446680080, +0.0007981891348, +0.0009088531187, + +0.0011114688129, +0.0010929577465, +0.0007307847082, +0.0004605633803, + +0.0003869215292, +0.0003623742455, +0.0006018108652, +0.0008780684105, + +0.0010746478873, +0.0012404426559, +0.0013078470825, +0.0012895372233, + +0.0010315895372, +0.0006201207243, +0.0001780684105, -0.0002517102616, + -0.0003376257545, -0.0001167002012, +0.0001965794769, +0.0005649899396, + +0.0006754527163, +0.0006692152918, +0.0005955734406, +0.0003869215292, + +0.0002947686117, +0.0002762575453, +0.0004973843058, +0.0007430583501, + +0.0007430583501, +0.0006569416499, +0.0002334004024, -0.0001595573441, + -0.0001227364185, -0.0001227364185, -0.0000981891348, +0.0000000000000, + +0.0000921529175, +0.0002639839034, +0.0004052313883, +0.0006140845070, + +0.0007676056338, +0.0007490945674, +0.0008718309859, +0.0010253521127, + +0.0009824949698, +0.0007185110664, +0.0003684104628, +0.0001227364185, + -0.0000736418511, -0.0001780684105, -0.0001227364185, -0.0000798792757, + +0.0000798792757, +0.0003623742455, +0.0004420523139, +0.0003193158954, + +0.0004973843058, +0.0006263581489, +0.0005281690141, +0.0007122736419, + +0.0007736418511, +0.0007368209256, +0.0008843058350, +0.0008167002012, + +0.0005219315895, +0.0001412474849, -0.0002947686117, -0.0003746478873, + -0.0004788732394, -0.0003991951710, +0.0000921529175, +0.0002824949698, + +0.0003929577465, +0.0005832997988, +0.0005527162978, +0.0006631790744, + +0.0007859154930, +0.0006631790744, +0.0006814889336, +0.0006386317907, + +0.0004605633803, +0.0003008048290, +0.0001780684105, +0.0002088531187, + +0.0003193158954, +0.0003929577465, +0.0004052313883, +0.0002762575453, + +0.0001843058350, +0.0001167002012, +0.0001965794769, +0.0005772635815, + +0.0009026156942, +0.0012034205231, +0.0012404426559, +0.0007368209256, + +0.0001289738431, -0.0004665995976, -0.0006754527163, -0.0004052313883, + -0.0000736418511, +0.0001595573441, +0.0001780684105, +0.0001289738431, + +0.0002088531187, +0.0003561368209, +0.0005587525151, +0.0007490945674, + +0.0009394366197, +0.0011911468813, +0.0011851106640, +0.0012464788732, + +0.0012281690141, +0.0008104627767, +0.0003130784708, -0.0002394366197, + -0.0007185110664, -0.0007553319920, -0.0006140845070, -0.0004665995976, + -0.0001718309859, +0.0000613682093, +0.0002394366197, +0.0004728370221, + +0.0006018108652, +0.0006263581489, +0.0006140845070, +0.0002394366197, + -0.0000307847082, -0.0000798792757, -0.0003130784708, -0.0002271629779, + +0.0000613682093, +0.0000981891348, +0.0000368209256, -0.0001965794769, + -0.0004052313883, -0.0003070422535, -0.0000430583501, +0.0004543259557, + +0.0008903420523, +0.0009639839034, +0.0010561368209, +0.0008718309859, + +0.0003746478873, -0.0001289738431, -0.0006323943662, -0.0009088531187, + -0.0010501006036, -0.0010991951710, -0.0007676056338, -0.0002271629779, + +0.0001903420523, +0.0004175050302, +0.0004360160966, +0.0003438631791, + +0.0002026156942, +0.0001167002012, +0.0000613682093, -0.0000062374245, + -0.0000981891348, -0.0002271629779, -0.0003438631791, -0.0003130784708, + -0.0003561368209, -0.0005219315895, -0.0003684104628, -0.0001412474849, + -0.0001227364185, -0.0001227364185, -0.0001903420523, +0.0000000000000, + +0.0003991951710, +0.0003991951710, +0.0003806841046, +0.0003315895372, + -0.0000185110664, -0.0001903420523, -0.0002148893360, -0.0002088531187, + -0.0000676056338, -0.0000307847082, -0.0001412474849, -0.0003070422535, + -0.0004605633803, -0.0003253521127, +0.0000000000000, +0.0002148893360, + +0.0003623742455, +0.0004665995976, +0.0003438631791, +0.0001289738431, + -0.0000798792757, -0.0002762575453, -0.0003376257545, -0.0003070422535, + -0.0002885311871, -0.0003806841046, -0.0007000000000, -0.0009148893360, + -0.0008412474849, -0.0007185110664, -0.0004665995976, -0.0002211267606, + -0.0001843058350, -0.0002148893360, -0.0001412474849, -0.0001350100604, + -0.0002517102616, -0.0003991951710, -0.0005527162978, -0.0005955734406, + -0.0006263581489, -0.0006692152918, -0.0006323943662, -0.0004973843058, + -0.0002579476861, -0.0000307847082, +0.0000490945674, +0.0001595573441, + +0.0003315895372, +0.0002947686117, +0.0001289738431, -0.0000122736419, + -0.0002517102616, -0.0004297786720, -0.0004482897384, -0.0004175050302, + -0.0002702213280, -0.0002211267606, -0.0003253521127, -0.0004114688129, + -0.0004665995976, -0.0005527162978, -0.0005219315895, -0.0004851106640, + -0.0005281690141, -0.0003746478873, -0.0000859154930, -0.0000676056338, + -0.0002148893360, -0.0002148893360, -0.0002762575453, -0.0004052313883, + -0.0002947686117, -0.0001718309859, -0.0002334004024, -0.0003193158954, + -0.0004052313883, -0.0006386317907, -0.0007185110664, -0.0004482897384, + -0.0002639839034, -0.0001535211268, -0.0000553319920, -0.0002026156942, + -0.0004665995976, -0.0007062374245, -0.0008167002012, -0.0007613682093, + -0.0009026156942, -0.0011973843058, -0.0012649899396, -0.0011360160966, + -0.0007981891348, -0.0003623742455, -0.0001227364185, -0.0000921529175, + -0.0002026156942, -0.0004297786720, -0.0005772635815, -0.0005034205231, + -0.0003438631791, -0.0001472837022, +0.0000000000000, -0.0000430583501, + -0.0001780684105, -0.0003684104628, -0.0005281690141, -0.0004728370221, + -0.0004420523139, -0.0005649899396, -0.0006140845070, -0.0006446680080, + -0.0006386317907, -0.0004851106640, -0.0003315895372, -0.0002517102616, + -0.0002639839034, -0.0003991951710, -0.0005034205231, -0.0005342052314, + -0.0004973843058, -0.0004175050302, -0.0003070422535, -0.0000736418511, + +0.0000307847082, -0.0001412474849, -0.0003008048290, -0.0004114688129, + -0.0004605633803, -0.0002885311871, -0.0001227364185, -0.0000676056338, + -0.0001412474849, -0.0004543259557, -0.0006754527163, -0.0007307847082, + -0.0008227364185, -0.0007859154930, -0.0006754527163, -0.0005156941650, + -0.0003193158954, -0.0002456740443, -0.0002456740443, -0.0003070422535, + -0.0004788732394, -0.0005955734406, -0.0005464788732, -0.0004665995976, + -0.0003253521127, -0.0001843058350, -0.0002271629779, -0.0003315895372, + -0.0004788732394, -0.0006754527163, -0.0007122736419, -0.0004973843058, + -0.0003193158954, -0.0003130784708, -0.0003684104628, -0.0003991951710, + -0.0002148893360, +0.0000676056338, +0.0002579476861, +0.0003623742455, + +0.0002456740443, -0.0000430583501, -0.0002824949698, -0.0005281690141, + -0.0007613682093, -0.0008350100604, -0.0007185110664, -0.0003561368209, + +0.0000736418511, +0.0002334004024, +0.0001044265594, -0.0001350100604, + -0.0003193158954, -0.0003193158954, -0.0002394366197, -0.0001289738431, + -0.0000307847082, +0.0000000000000, +0.0000430583501, +0.0000798792757, + -0.0000307847082, -0.0001472837022, -0.0001535211268, -0.0000859154930, + -0.0000185110664, -0.0000062374245, +0.0000000000000, -0.0000245472837, + -0.0000185110664, +0.0000553319920, +0.0001044265594, +0.0001350100604, + +0.0001843058350, +0.0000368209256, -0.0003806841046, -0.0007921529175, + -0.0009334004024, -0.0009211267606, -0.0007062374245, -0.0002148893360, + +0.0002026156942, +0.0002517102616, +0.0000981891348, +0.0000062374245, + -0.0000553319920, +0.0000122736419, +0.0003008048290, +0.0005342052314, + +0.0005342052314, +0.0003130784708, -0.0000122736419, -0.0003561368209, + -0.0006754527163, -0.0007798792757, -0.0006078470825, -0.0003130784708, + -0.0000921529175, -0.0000676056338, -0.0001104627767, -0.0001535211268, + -0.0001535211268, -0.0000185110664, +0.0000490945674, -0.0000307847082, + -0.0001044265594, -0.0001535211268, -0.0001965794769, -0.0002271629779, + -0.0002148893360, -0.0001843058350, -0.0002026156942, -0.0003008048290, + -0.0004360160966, -0.0005219315895, -0.0004911468813, -0.0003684104628, + -0.0002334004024, -0.0001350100604, -0.0001167002012, -0.0001843058350, + -0.0001780684105, -0.0000553319920, -0.0000062374245, -0.0001227364185, + -0.0003008048290, -0.0003008048290, -0.0001412474849, -0.0000185110664, + +0.0000859154930, +0.0001044265594, -0.0000245472837, -0.0001535211268, + -0.0003008048290, -0.0003746478873, -0.0002824949698, -0.0002026156942, + -0.0001657947686, -0.0001535211268, -0.0001227364185, +0.0000307847082, + +0.0001227364185, +0.0001227364185, +0.0001350100604, +0.0001044265594, + +0.0000185110664, -0.0000676056338, -0.0000368209256, +0.0000921529175, + +0.0000553319920, -0.0000676056338, -0.0001412474849, -0.0001227364185, + +0.0000430583501, +0.0001350100604, +0.0001289738431, +0.0001104627767, + -0.0000736418511, -0.0003315895372, -0.0003929577465, -0.0003746478873, + -0.0002148893360, +0.0000676056338, +0.0002271629779, +0.0004052313883, + +0.0004911468813, +0.0002762575453, -0.0000185110664, -0.0002824949698, + -0.0004237424547, -0.0002947686117, -0.0003070422535, -0.0003253521127, + -0.0001412474849, -0.0001412474849, -0.0002088531187, -0.0002211267606, + -0.0001535211268, -0.0000307847082, -0.0001104627767, -0.0002947686117, + -0.0003501006036, -0.0004052313883, -0.0001535211268, +0.0002639839034, + +0.0004728370221, +0.0005096579477, +0.0002824949698, +0.0000185110664, + +0.0000307847082, +0.0000798792757, +0.0002148893360, +0.0003929577465, + +0.0001843058350, +0.0000062374245, +0.0001104627767, +0.0001289738431, + +0.0001289738431, +0.0002271629779, +0.0001657947686, -0.0000553319920, + -0.0002885311871, -0.0003684104628, -0.0003501006036, -0.0002148893360, + +0.0001167002012, +0.0002517102616, +0.0000676056338, -0.0001472837022, + -0.0001965794769, -0.0000736418511, +0.0001412474849, +0.0002579476861, + +0.0002824949698, +0.0003070422535, +0.0002026156942, +0.0002334004024, + +0.0004360160966, +0.0005281690141, +0.0005034205231, +0.0004114688129, + +0.0001718309859, +0.0000736418511, -0.0000921529175, -0.0001595573441, + +0.0000122736419, +0.0000553319920, +0.0001843058350, +0.0005219315895, + +0.0007245472837, +0.0008412474849, +0.0008718309859, +0.0007307847082, + +0.0005895372233, +0.0002885311871, -0.0000430583501, -0.0001718309859, + -0.0001535211268, -0.0000490945674, +0.0001104627767, +0.0003315895372, + +0.0004420523139, +0.0004360160966, +0.0005404426559, +0.0005710261569, + +0.0004420523139, +0.0004482897384, +0.0004911468813, +0.0003929577465, + +0.0003193158954, +0.0003008048290, +0.0002211267606, +0.0000490945674, + -0.0000736418511, -0.0000122736419, +0.0000122736419, -0.0000062374245, + +0.0000798792757, +0.0001289738431, +0.0000798792757, +0.0000676056338, + +0.0000490945674, +0.0000245472837, +0.0000307847082, +0.0000122736419, + +0.0001044265594, +0.0001718309859, +0.0001350100604, +0.0001350100604, + +0.0001167002012, +0.0000981891348, +0.0001289738431, +0.0001167002012, + +0.0001472837022, +0.0001843058350, +0.0000981891348, +0.0001535211268, + +0.0003193158954, +0.0004482897384, +0.0006569416499, +0.0008903420523, + +0.0008412474849, +0.0005034205231, +0.0001104627767, -0.0002088531187, + -0.0003193158954, -0.0002148893360, -0.0000307847082, +0.0000981891348, + +0.0001780684105, +0.0002334004024, +0.0003438631791, +0.0004482897384, + +0.0005527162978, +0.0006446680080, +0.0006201207243, +0.0004360160966, + +0.0001903420523, +0.0001227364185, +0.0001843058350, +0.0002456740443, + +0.0003623742455, +0.0003991951710, +0.0003561368209, +0.0004114688129, + +0.0004851106640, +0.0004543259557, +0.0003193158954, +0.0002885311871, + +0.0003130784708, +0.0002211267606, +0.0002271629779, +0.0004052313883, + +0.0005649899396, +0.0006078470825, +0.0005034205231, +0.0003253521127, + +0.0001350100604, -0.0000430583501, -0.0000613682093, +0.0000185110664, + +0.0000307847082, +0.0000798792757, +0.0002026156942, +0.0003315895372, + +0.0004360160966, +0.0005342052314, +0.0004788732394, +0.0004052313883, + +0.0002885311871, +0.0000613682093, +0.0000245472837, +0.0001044265594, + +0.0001044265594, +0.0002026156942, +0.0002456740443, +0.0002762575453, + +0.0005156941650, +0.0005832997988, +0.0005281690141, +0.0004728370221, + +0.0003684104628, +0.0003008048290, +0.0002885311871, +0.0002885311871, + +0.0003501006036, +0.0003376257545, +0.0001044265594, -0.0001167002012, + -0.0001903420523, -0.0001595573441, -0.0000307847082, +0.0002517102616, + +0.0004420523139, +0.0004543259557, +0.0003501006036, +0.0001104627767, + -0.0000553319920, -0.0001780684105, -0.0001350100604, +0.0000859154930, + +0.0002762575453, +0.0003193158954, +0.0002824949698, +0.0001535211268, + +0.0000676056338, -0.0000122736419, -0.0000981891348, -0.0000430583501, + +0.0000368209256, +0.0001104627767, +0.0001350100604, +0.0001044265594, + -0.0000553319920, -0.0002211267606, -0.0002026156942, -0.0001167002012, + -0.0000062374245, +0.0000921529175, +0.0001595573441, +0.0002334004024, + +0.0003008048290, +0.0003315895372, +0.0003008048290, +0.0001595573441, + +0.0000613682093, -0.0000122736419, -0.0001167002012, -0.0000798792757, + -0.0000307847082, +0.0000062374245, +0.0000921529175, +0.0000859154930, + +0.0000921529175, +0.0001965794769, +0.0003008048290, +0.0005034205231, + +0.0006631790744, +0.0006018108652, +0.0004297786720, +0.0002271629779, + +0.0001412474849, +0.0001718309859, +0.0001350100604, +0.0001104627767, + +0.0001903420523, +0.0001472837022, +0.0000490945674, -0.0000122736419, + +0.0000000000000, +0.0000062374245, -0.0000553319920, -0.0000736418511, + -0.0000676056338, -0.0000613682093, -0.0000613682093, -0.0001227364185, + -0.0001044265594, +0.0000122736419, +0.0002088531187, +0.0003623742455, + +0.0003623742455, +0.0003623742455, +0.0003438631791, +0.0001595573441, + +0.0000490945674, +0.0001044265594, +0.0002271629779, +0.0003376257545, + +0.0003253521127, +0.0002579476861, +0.0001104627767, -0.0000613682093, + -0.0001104627767, -0.0001167002012, -0.0001595573441, -0.0002517102616, + -0.0004052313883, -0.0004420523139, -0.0003684104628, -0.0002702213280, + -0.0000245472837, +0.0001595573441, +0.0001718309859, +0.0002271629779, + +0.0002947686117, +0.0002885311871, +0.0002271629779, +0.0001595573441, + +0.0001289738431, +0.0000000000000, -0.0001350100604, -0.0001412474849, + -0.0001472837022, -0.0001044265594, +0.0000000000000, +0.0000490945674, + +0.0000553319920, +0.0001350100604, +0.0002211267606, +0.0002334004024, + +0.0001350100604, -0.0000798792757, -0.0003746478873, -0.0006754527163, + -0.0008289738431, -0.0006323943662, -0.0002148893360, +0.0001289738431, + +0.0003253521127, +0.0003376257545, +0.0002334004024, +0.0000981891348, + -0.0000307847082, -0.0000553319920, -0.0000736418511, -0.0001227364185, + -0.0000430583501, +0.0000430583501, +0.0000430583501, +0.0000122736419, + -0.0001167002012, -0.0002824949698, -0.0003929577465, -0.0003806841046, + -0.0001843058350, +0.0000185110664, +0.0001535211268, +0.0001289738431, + -0.0001104627767, -0.0003438631791, -0.0003869215292, -0.0003193158954, + -0.0001104627767, +0.0000122736419, -0.0000859154930, -0.0002762575453, + -0.0004297786720, -0.0004728370221, -0.0005096579477, -0.0004728370221, + -0.0002639839034, -0.0000859154930, -0.0000122736419, +0.0000676056338, + +0.0000368209256, -0.0000981891348, -0.0001843058350, -0.0002579476861, + -0.0003501006036, -0.0004175050302, -0.0003869215292, -0.0002885311871, + -0.0002088531187, -0.0001657947686, -0.0001718309859, -0.0002517102616, + -0.0003070422535, -0.0002639839034, -0.0001595573441, -0.0001044265594, + -0.0000921529175, -0.0001780684105, -0.0003929577465, -0.0004911468813, + -0.0004175050302, -0.0003315895372, -0.0001965794769, -0.0000921529175, + -0.0000613682093, -0.0000490945674, -0.0001227364185, -0.0001350100604, + -0.0001104627767, -0.0001289738431, +0.0000307847082, +0.0002088531187, + +0.0002148893360, +0.0001965794769, +0.0001104627767, -0.0000062374245, + -0.0001350100604, -0.0003684104628, -0.0005156941650, -0.0006078470825, + -0.0006937625755, -0.0005587525151, -0.0003193158954, -0.0001472837022, + +0.0000613682093, +0.0002088531187, +0.0002394366197, +0.0003130784708, + +0.0002947686117, +0.0001780684105, +0.0000921529175, -0.0000553319920, + -0.0002702213280, -0.0004237424547, -0.0004973843058, -0.0004237424547, + -0.0002639839034, -0.0001412474849, +0.0000245472837, +0.0001718309859, + +0.0002088531187, +0.0002271629779, +0.0002334004024, +0.0001965794769, + +0.0000981891348, -0.0000368209256, -0.0001595573441, -0.0002885311871, + -0.0003623742455, -0.0002579476861, -0.0001350100604, -0.0000736418511, + -0.0000430583501, -0.0000859154930, -0.0001289738431, -0.0001167002012, + -0.0000921529175, -0.0000798792757, -0.0000921529175, -0.0000736418511, + -0.0000736418511, +0.0000000000000, +0.0001289738431, +0.0001595573441, + +0.0001780684105, +0.0001535211268, +0.0000490945674, +0.0000490945674, + +0.0001167002012, +0.0001167002012, -0.0000062374245, -0.0001412474849, + -0.0001780684105, -0.0001718309859, -0.0000736418511, +0.0000000000000, + -0.0000245472837, -0.0000185110664, -0.0001657947686, -0.0003806841046, + -0.0004297786720, -0.0002947686117, -0.0000368209256, +0.0001718309859, + +0.0002088531187, +0.0001595573441, +0.0000368209256, -0.0000185110664, + -0.0000490945674, -0.0001780684105, -0.0001843058350, -0.0000859154930, + -0.0001227364185, -0.0000676056338, +0.0001472837022, +0.0002947686117, + +0.0003315895372, +0.0002456740443, +0.0000981891348, -0.0000921529175, + -0.0003253521127, -0.0003869215292, -0.0003315895372, -0.0002456740443, + -0.0000736418511, -0.0000122736419, +0.0000185110664, +0.0001044265594, + +0.0000859154930, +0.0000981891348, +0.0000921529175, -0.0000613682093, + -0.0002088531187, -0.0002824949698, -0.0003130784708, -0.0002702213280, + -0.0002148893360, -0.0002148893360, -0.0002088531187, -0.0001903420523, + -0.0001167002012, -0.0000062374245, -0.0000062374245, -0.0000490945674, + -0.0000307847082, +0.0000000000000, +0.0000981891348, +0.0001718309859, + +0.0001104627767, +0.0000430583501, -0.0000613682093, -0.0002211267606, + -0.0003070422535, -0.0003315895372, -0.0002824949698, -0.0001227364185, + -0.0000185110664, -0.0000062374245, -0.0000921529175, -0.0002148893360, + -0.0002762575453, -0.0003376257545, -0.0003253521127, -0.0001843058350, + -0.0000859154930, -0.0000245472837, +0.0000307847082, +0.0000245472837, + +0.0000307847082, -0.0000122736419, -0.0000430583501, +0.0000185110664, + +0.0000368209256, +0.0000921529175, +0.0001535211268, +0.0000981891348, + +0.0000553319920, +0.0000245472837, -0.0000307847082, -0.0000185110664, + -0.0000430583501, -0.0001167002012, -0.0001350100604, -0.0001595573441, + -0.0002088531187, -0.0002211267606, -0.0002211267606, -0.0001780684105, + -0.0001535211268, -0.0001412474849, -0.0001289738431, -0.0001227364185, + -0.0001167002012, +0.0000062374245, +0.0002088531187, +0.0002579476861, + +0.0001965794769, +0.0000062374245, -0.0002394366197, -0.0003929577465, + -0.0004728370221, -0.0003869215292, -0.0001535211268, +0.0000430583501, + +0.0002026156942, +0.0001903420523, -0.0000062374245, -0.0001227364185, + -0.0002885311871, -0.0004605633803, -0.0004665995976, -0.0004360160966, + -0.0003623742455, -0.0002211267606, -0.0001167002012, -0.0000245472837, + +0.0000245472837, +0.0000368209256, +0.0000553319920, +0.0000430583501, + +0.0000368209256, +0.0000859154930, +0.0001535211268, +0.0001472837022, + +0.0000245472837, -0.0001104627767, -0.0002334004024, -0.0003376257545, + -0.0003929577465, -0.0004360160966, -0.0004728370221, -0.0003929577465, + -0.0001965794769, -0.0000245472837, +0.0000921529175, +0.0002026156942, + +0.0002456740443, +0.0001657947686, +0.0000859154930, -0.0000490945674, + -0.0001350100604, -0.0000798792757, +0.0000000000000, +0.0000368209256, + -0.0000062374245, -0.0000921529175, -0.0001227364185, -0.0001167002012, + -0.0000490945674, +0.0000368209256, +0.0000859154930, +0.0000859154930, + +0.0000122736419, -0.0001350100604, -0.0002334004024, -0.0001657947686, + +0.0000000000000, +0.0000736418511, +0.0001350100604, +0.0001535211268, + +0.0000798792757, +0.0000736418511, +0.0001595573441, +0.0002211267606, + +0.0001843058350, +0.0000430583501, -0.0000553319920, -0.0001044265594, + -0.0000859154930, +0.0000368209256, +0.0001657947686, +0.0002517102616, + +0.0002579476861, +0.0001535211268, +0.0000307847082, -0.0000798792757, + -0.0001289738431, -0.0000736418511, -0.0000185110664, +0.0000122736419, + +0.0000859154930, +0.0001167002012, +0.0001167002012, +0.0001965794769, + +0.0003130784708, +0.0004665995976, +0.0005096579477, +0.0003991951710, + +0.0002456740443, +0.0000859154930, +0.0000122736419, +0.0000553319920, + +0.0000676056338, +0.0001167002012, +0.0002088531187, +0.0002517102616, + +0.0002211267606, +0.0001350100604, +0.0001289738431, +0.0002271629779, + +0.0003623742455, +0.0004420523139, +0.0003438631791, +0.0002088531187, + +0.0001843058350, +0.0001965794769, +0.0002211267606, +0.0002026156942, + +0.0000981891348, +0.0000613682093, +0.0000736418511, +0.0000307847082, + -0.0000368209256, -0.0000613682093, +0.0000736418511, +0.0002947686117, + +0.0003376257545, +0.0002148893360, +0.0000553319920, -0.0000613682093, + -0.0001104627767, -0.0001780684105, -0.0002394366197, -0.0001595573441, + -0.0000245472837, +0.0001104627767, +0.0002271629779, +0.0002271629779, + +0.0002271629779, +0.0002456740443, +0.0001718309859, +0.0000490945674, + -0.0000185110664, -0.0000307847082, +0.0000000000000, +0.0000921529175, + +0.0002271629779, +0.0003561368209, +0.0004788732394, +0.0004851106640, + +0.0002579476861, -0.0000981891348, -0.0003561368209, -0.0003806841046, + -0.0002456740443, -0.0000245472837, +0.0002148893360, +0.0003253521127, + +0.0002947686117, +0.0002334004024, +0.0002026156942, +0.0001718309859, + +0.0001227364185, +0.0000553319920, -0.0000430583501, -0.0001412474849, + -0.0001595573441, -0.0001227364185, -0.0000185110664, +0.0001167002012, + +0.0002211267606, +0.0002271629779, +0.0001044265594, -0.0000368209256, + -0.0001535211268, -0.0002639839034, -0.0002824949698, -0.0001780684105, + -0.0000676056338, -0.0000430583501, -0.0001044265594, -0.0001044265594, + -0.0000185110664, +0.0000736418511, +0.0001412474849, +0.0001780684105, + +0.0001227364185, -0.0000185110664, -0.0001843058350, -0.0003253521127, + -0.0004297786720, -0.0003684104628, -0.0002026156942, -0.0000921529175, + -0.0000245472837, -0.0000245472837, -0.0001044265594, -0.0001595573441, + -0.0001289738431, -0.0000490945674, +0.0000307847082, +0.0000921529175, + +0.0001289738431, +0.0001167002012, +0.0000062374245, -0.0000553319920, + -0.0000185110664, +0.0000122736419, +0.0000307847082, +0.0001044265594, + +0.0000981891348, +0.0000430583501, +0.0000430583501, +0.0000185110664, + +0.0000430583501, +0.0001289738431, +0.0000736418511, -0.0000859154930, + -0.0002026156942, -0.0002579476861, -0.0002088531187, -0.0000553319920, + +0.0000307847082, +0.0000490945674, -0.0000062374245, -0.0001472837022, + -0.0001965794769, -0.0001289738431, -0.0000613682093, +0.0000490945674, + +0.0001227364185, +0.0000921529175, +0.0001167002012, +0.0001289738431, + +0.0000676056338, +0.0000553319920, +0.0000553319920, +0.0000307847082, + +0.0000000000000, +0.0000062374245, +0.0000676056338, +0.0001167002012, + +0.0001167002012, +0.0001289738431, +0.0001657947686, +0.0002088531187, + +0.0001718309859, +0.0000798792757, +0.0000613682093, +0.0000307847082, + +0.0000062374245, +0.0000613682093, +0.0001535211268, +0.0002211267606, + +0.0002271629779, +0.0002026156942, +0.0001657947686, +0.0001227364185, + +0.0001104627767, +0.0000859154930, +0.0000676056338, +0.0000613682093, + +0.0000368209256, +0.0001227364185, +0.0002334004024, +0.0002702213280, + +0.0003130784708, +0.0002702213280, +0.0002088531187, +0.0002026156942, + +0.0001780684105, +0.0002271629779, +0.0003315895372, +0.0003376257545, + +0.0003193158954, +0.0002456740443, +0.0001535211268, +0.0001289738431, + +0.0000921529175, +0.0000245472837, +0.0000062374245, +0.0000430583501, + +0.0000981891348, +0.0001535211268, +0.0001843058350, +0.0002148893360, + +0.0002211267606, +0.0001535211268, +0.0000736418511, +0.0000490945674, + +0.0000185110664, +0.0000185110664, +0.0000430583501, +0.0000430583501, + +0.0000307847082, +0.0000245472837, +0.0000368209256, +0.0001104627767, + +0.0002517102616, +0.0004114688129, +0.0005342052314, +0.0005649899396, + +0.0005096579477, +0.0003315895372, +0.0001167002012, -0.0000122736419, + -0.0000736418511, -0.0001167002012, -0.0001227364185, -0.0000859154930, + -0.0000921529175, -0.0001044265594, -0.0000553319920, +0.0000185110664, + +0.0001044265594, +0.0001903420523, +0.0002148893360, +0.0001780684105, + +0.0001104627767, +0.0000430583501, +0.0000062374245, -0.0000062374245, + +0.0000000000000, +0.0000245472837, -0.0000368209256, -0.0000676056338, + -0.0000122736419, -0.0000245472837, -0.0000368209256, -0.0000062374245, + -0.0000062374245, +0.0000245472837, +0.0000981891348, +0.0001595573441, + +0.0001843058350, +0.0001289738431, +0.0000676056338, +0.0000000000000, + -0.0001104627767, -0.0001595573441, -0.0001472837022, -0.0001167002012, + -0.0000122736419, +0.0000553319920, +0.0000430583501, -0.0000122736419, + -0.0000368209256, +0.0000000000000, +0.0000122736419, +0.0000000000000, + +0.0000245472837, +0.0000490945674, +0.0001044265594, +0.0001595573441, + +0.0001350100604, +0.0000307847082, -0.0000736418511, -0.0000859154930, + -0.0000921529175, -0.0001044265594, -0.0000490945674, -0.0000368209256, + -0.0000245472837, +0.0000000000000, -0.0000185110664, -0.0000859154930, + -0.0001472837022, -0.0001780684105, -0.0001227364185, -0.0000185110664, + +0.0000676056338, +0.0000798792757, -0.0000245472837, -0.0001780684105, + -0.0002824949698, -0.0003193158954, -0.0002947686117, -0.0002517102616, + -0.0002148893360, -0.0001657947686, -0.0001104627767, -0.0000245472837, + +0.0000613682093, +0.0001472837022, +0.0001843058350, +0.0001535211268, + +0.0000981891348, +0.0000307847082, -0.0000062374245, +0.0000062374245, + +0.0000000000000, -0.0000062374245, +0.0000000000000, -0.0000798792757, + -0.0001350100604, -0.0001227364185, -0.0001412474849, -0.0001657947686, + -0.0001657947686, -0.0001227364185, -0.0000307847082, +0.0000490945674, + +0.0000368209256, -0.0000122736419, -0.0000490945674, -0.0000307847082, + +0.0000430583501, +0.0000921529175, +0.0000613682093, +0.0000245472837, + +0.0000000000000, -0.0000122736419, -0.0000307847082, -0.0000676056338, + -0.0000553319920, +0.0000000000000, +0.0000185110664, +0.0000245472837, + -0.0000430583501, -0.0001412474849, -0.0001412474849, -0.0001044265594, + -0.0000368209256, +0.0000613682093, +0.0001227364185, +0.0001227364185, + +0.0000613682093, -0.0000307847082, -0.0001044265594, -0.0001535211268, + -0.0001289738431, -0.0000553319920, +0.0000000000000, +0.0000859154930, + +0.0002026156942, +0.0002702213280, +0.0002762575453, +0.0001595573441, + -0.0000245472837, -0.0001412474849, -0.0001780684105, -0.0002026156942, + -0.0001965794769, -0.0001412474849, -0.0000613682093, +0.0000490945674, + +0.0001412474849, +0.0001535211268, +0.0001472837022, +0.0001167002012, + +0.0000000000000, -0.0001044265594, -0.0001472837022, -0.0001535211268, + -0.0000798792757, -0.0000062374245, +0.0000062374245, +0.0000185110664, + +0.0000185110664, -0.0000368209256, -0.0000981891348, -0.0001289738431, + -0.0001843058350, -0.0001780684105, -0.0001044265594, -0.0000430583501, + +0.0000000000000, +0.0000122736419, -0.0000307847082, -0.0001104627767, + -0.0001227364185, -0.0001104627767, -0.0000859154930, -0.0000245472837, + -0.0000062374245, -0.0000185110664, -0.0000368209256, -0.0000245472837, + +0.0000430583501, +0.0001657947686, +0.0002148893360, +0.0002334004024, + +0.0001780684105, +0.0000553319920, -0.0000676056338, -0.0001843058350, + -0.0003130784708, -0.0003869215292, -0.0003008048290, -0.0001227364185, + +0.0000613682093, +0.0002088531187, +0.0002088531187, +0.0001289738431, + +0.0000245472837, -0.0000859154930, -0.0001843058350, -0.0001843058350, + -0.0001227364185, -0.0000676056338, -0.0000490945674, -0.0000245472837, + +0.0000062374245, +0.0000062374245, +0.0000245472837, +0.0001289738431, + +0.0002394366197, +0.0003130784708, +0.0003253521127, +0.0002702213280, + +0.0001843058350, +0.0000490945674, -0.0000921529175, -0.0001965794769, + -0.0002639839034, -0.0002211267606, -0.0000921529175, -0.0000185110664, + +0.0000368209256, +0.0000859154930, +0.0000981891348, +0.0001104627767, + +0.0001412474849, +0.0001595573441, +0.0001350100604, +0.0000245472837, + -0.0000490945674, -0.0001104627767, -0.0001535211268, -0.0000981891348, + -0.0000430583501, -0.0000613682093, -0.0000736418511, -0.0001289738431, + -0.0001965794769, -0.0001965794769, -0.0000981891348, +0.0000122736419, + +0.0000736418511, +0.0000981891348, +0.0001044265594, +0.0000798792757, + +0.0000553319920, +0.0000430583501, +0.0000490945674, +0.0000245472837, + -0.0000307847082, -0.0001227364185, -0.0002639839034, -0.0003253521127, + -0.0002456740443, -0.0001903420523, -0.0001167002012, +0.0000062374245, + +0.0001167002012, +0.0002026156942, +0.0002456740443, +0.0002394366197, + +0.0002271629779, +0.0001535211268, +0.0000307847082, -0.0000676056338, + -0.0001289738431, -0.0001412474849, -0.0001412474849, -0.0001780684105, + -0.0002639839034, -0.0003070422535, -0.0002639839034, -0.0001903420523, + -0.0000676056338, +0.0000798792757, +0.0001412474849, +0.0001412474849, + +0.0000921529175, +0.0000122736419, -0.0000307847082, -0.0000368209256, + -0.0000122736419, +0.0000368209256, -0.0000245472837, -0.0001843058350, + -0.0002824949698, -0.0003008048290, -0.0002211267606, -0.0000613682093, + +0.0000798792757, +0.0001843058350, +0.0001843058350, +0.0000921529175, + -0.0000245472837, -0.0001535211268, -0.0002579476861, -0.0002456740443, + -0.0001965794769, -0.0001472837022, -0.0001044265594, -0.0000798792757, + -0.0000676056338, -0.0000307847082, +0.0000430583501, +0.0001104627767, + +0.0001289738431, +0.0001167002012, +0.0000859154930, +0.0000490945674, + +0.0000307847082, -0.0000490945674, -0.0001965794769, -0.0002762575453, + -0.0002639839034, -0.0002026156942, -0.0000859154930, +0.0000245472837, + +0.0000553319920, +0.0000122736419, +0.0000000000000, +0.0000000000000, + -0.0000185110664, +0.0000000000000, +0.0000553319920, +0.0001104627767, + +0.0001227364185, +0.0000798792757, +0.0000185110664, -0.0000736418511, + -0.0001167002012, -0.0000553319920, -0.0000245472837, -0.0000613682093, + -0.0000981891348, -0.0001412474849, -0.0001472837022, -0.0001044265594, + -0.0000062374245, +0.0000921529175, +0.0001227364185, +0.0001472837022, + +0.0001412474849, +0.0000307847082, -0.0000613682093, -0.0000921529175, + -0.0000736418511, +0.0000000000000, +0.0000368209256, +0.0000490945674, + +0.0000613682093, +0.0000490945674, +0.0000245472837, -0.0000368209256, + -0.0001167002012, -0.0001104627767, -0.0000921529175, -0.0000613682093, + -0.0000307847082, -0.0000430583501, -0.0000245472837, +0.0000185110664, + +0.0000000000000, +0.0000062374245, +0.0000122736419, -0.0000185110664, + -0.0000676056338, -0.0001227364185, -0.0001350100604, -0.0000736418511, + +0.0000245472837, +0.0001535211268, +0.0001780684105, +0.0001044265594, + +0.0000430583501, +0.0000122736419, +0.0000185110664, +0.0000490945674, + +0.0000307847082, +0.0000000000000, -0.0000368209256, -0.0000798792757, + -0.0000798792757, -0.0000676056338, -0.0000430583501, -0.0000122736419, + +0.0000000000000, +0.0000307847082, +0.0000798792757, +0.0001104627767, + +0.0001412474849, +0.0001472837022, +0.0001412474849, +0.0001595573441, + +0.0001657947686, +0.0001044265594, +0.0000245472837, -0.0000245472837, + -0.0000490945674, -0.0000613682093, -0.0000430583501, -0.0000122736419, + +0.0000000000000, +0.0000122736419, +0.0000307847082, +0.0000368209256, + +0.0000430583501, +0.0000553319920, +0.0000859154930, +0.0000736418511, + +0.0000368209256, +0.0000307847082, +0.0000245472837, -0.0000122736419, + -0.0000553319920, -0.0000921529175, -0.0001227364185, -0.0001595573441, + -0.0001657947686, -0.0001227364185, -0.0000676056338, -0.0000368209256, + +0.0000062374245, +0.0000490945674, +0.0000307847082, +0.0000245472837, + +0.0000307847082, +0.0000062374245, +0.0000307847082, +0.0000676056338, + +0.0000981891348, +0.0001227364185, +0.0001104627767, +0.0000676056338, + +0.0000553319920, +0.0000798792757, +0.0001104627767, +0.0001472837022, + +0.0001657947686, +0.0001044265594, -0.0000062374245, -0.0000430583501, + -0.0000736418511, -0.0001350100604, -0.0001535211268, -0.0001227364185, + -0.0000430583501, +0.0000000000000, +0.0000000000000, -0.0000062374245, + -0.0000490945674, -0.0000859154930, -0.0000307847082, +0.0000490945674, + +0.0001104627767, +0.0001412474849, +0.0001104627767, +0.0000553319920, + +0.0000185110664, -0.0000062374245, -0.0000368209256, -0.0000185110664, + +0.0000307847082, +0.0000490945674, -0.0000122736419, -0.0001104627767, + -0.0002088531187, -0.0002456740443, -0.0001780684105, -0.0001044265594, + -0.0000553319920, -0.0000245472837, -0.0000122736419, -0.0000062374245, + -0.0000245472837, -0.0000676056338, -0.0000490945674, +0.0000062374245, + +0.0000430583501, +0.0000368209256, +0.0000368209256, +0.0000676056338, + +0.0000981891348, +0.0001289738431, +0.0001472837022, +0.0001044265594, + +0.0000185110664, -0.0000736418511, -0.0001350100604, -0.0001535211268, + -0.0001472837022, -0.0000921529175, +0.0000245472837, +0.0001227364185, + +0.0001595573441, +0.0001289738431, +0.0000553319920, +0.0000000000000, + -0.0000062374245, +0.0000185110664, +0.0000798792757, +0.0000736418511, + +0.0000000000000, -0.0000859154930, -0.0001718309859, -0.0002211267606, + -0.0002026156942, -0.0001167002012, -0.0000368209256, +0.0000000000000, + +0.0000185110664, +0.0000185110664, +0.0000122736419, +0.0000490945674, + +0.0000859154930, +0.0001044265594, +0.0001350100604, +0.0001167002012, + +0.0000490945674, -0.0000062374245, -0.0000490945674, -0.0000736418511, + -0.0001289738431, -0.0002148893360, -0.0002394366197, -0.0001903420523, + -0.0001167002012, +0.0000000000000, +0.0001104627767, +0.0001535211268, + +0.0001289738431, +0.0000921529175, +0.0000553319920, -0.0000062374245, + -0.0000736418511, -0.0001104627767, -0.0001104627767, -0.0000981891348, + -0.0000676056338, -0.0000430583501, -0.0000368209256, -0.0000430583501, + -0.0000490945674, -0.0000676056338, -0.0000859154930, -0.0000859154930, + -0.0000553319920, +0.0000062374245, +0.0001044265594, +0.0001903420523, + +0.0001965794769, +0.0001535211268, +0.0000798792757, -0.0000062374245, + -0.0000430583501, -0.0000245472837, +0.0000307847082, +0.0001104627767, + +0.0001350100604, +0.0000736418511, +0.0000185110664, +0.0000000000000, + +0.0000430583501, +0.0000921529175, +0.0001167002012, +0.0001167002012, + +0.0000676056338, +0.0000062374245, -0.0000307847082, -0.0000798792757, + -0.0000981891348, -0.0000613682093, +0.0000122736419, +0.0000798792757, + +0.0000859154930, +0.0000676056338, +0.0000553319920, +0.0000368209256, + +0.0000245472837, +0.0000185110664, +0.0000307847082, +0.0000245472837, + -0.0000062374245, -0.0000307847082, +0.0000000000000, +0.0000736418511, + +0.0001595573441, +0.0002026156942, +0.0001718309859, +0.0000553319920, + -0.0000859154930, -0.0001412474849, -0.0001104627767, -0.0000368209256, + +0.0000307847082, +0.0000859154930, +0.0001227364185, +0.0001535211268, + +0.0001657947686, +0.0001535211268, +0.0001289738431, +0.0001044265594, + +0.0000736418511, +0.0000430583501, +0.0000000000000, -0.0000185110664, + +0.0000368209256, +0.0001350100604, +0.0001780684105, +0.0001535211268, + +0.0000859154930, +0.0000553319920, +0.0001044265594, +0.0001535211268, + +0.0001718309859, +0.0001535211268, +0.0001104627767, +0.0000490945674, + -0.0000062374245, -0.0000245472837, -0.0000185110664, -0.0000122736419, + -0.0000245472837, -0.0000490945674, -0.0000553319920, -0.0000307847082, + +0.0000122736419, +0.0000798792757, +0.0001350100604, +0.0001289738431, + +0.0001044265594, +0.0000736418511, +0.0000185110664, -0.0000307847082, + -0.0000676056338, -0.0000736418511, +0.0000062374245, +0.0001104627767, + +0.0001289738431, +0.0000921529175, +0.0000062374245, -0.0000676056338, + -0.0001104627767, -0.0001350100604, -0.0001044265594, -0.0000307847082, + +0.0000185110664, +0.0000490945674, +0.0000490945674, +0.0000245472837, + +0.0000307847082, +0.0000676056338, +0.0000981891348, +0.0001167002012, + +0.0001167002012, +0.0000981891348, +0.0000676056338, +0.0000490945674, + +0.0000553319920, +0.0000676056338, +0.0000859154930, +0.0000981891348, + +0.0000245472837, -0.0000430583501, -0.0000613682093, -0.0000490945674, + -0.0000368209256, +0.0000000000000, +0.0000613682093, +0.0001167002012, + +0.0001167002012, +0.0000921529175, +0.0000368209256, -0.0000307847082, + -0.0000613682093, -0.0000307847082, +0.0000307847082, +0.0001227364185, + +0.0002026156942, +0.0002517102616, +0.0002334004024, +0.0001595573441, + +0.0000981891348, +0.0000490945674, +0.0000245472837, +0.0000185110664, + -0.0000185110664, -0.0000921529175, -0.0001718309859, -0.0002394366197, + -0.0002271629779, -0.0001535211268, -0.0000981891348, -0.0000245472837, + +0.0000613682093, +0.0000981891348, +0.0001044265594, +0.0000921529175, + +0.0000613682093, +0.0000307847082, +0.0000062374245, -0.0000185110664, + -0.0000368209256, -0.0000368209256, -0.0000490945674, -0.0000981891348, + -0.0001289738431, -0.0001350100604, -0.0000676056338, +0.0000122736419, + +0.0000490945674, +0.0000613682093, +0.0000430583501, -0.0000430583501, + -0.0001227364185, -0.0002026156942, -0.0002639839034, -0.0002334004024, + -0.0001657947686, -0.0000921529175, -0.0000430583501, -0.0000490945674, + -0.0000859154930, -0.0001167002012, -0.0001167002012, -0.0000613682093, + -0.0000122736419, +0.0000122736419, +0.0000368209256, +0.0000430583501, + +0.0000430583501, +0.0000185110664, -0.0000613682093, -0.0001412474849, + -0.0001780684105, -0.0001595573441, -0.0000921529175, -0.0000245472837, + +0.0000185110664, +0.0000553319920, +0.0000185110664, -0.0000553319920, + -0.0001167002012, -0.0001780684105, -0.0001843058350, -0.0001167002012, + -0.0000490945674, +0.0000000000000, +0.0000245472837, +0.0000307847082, + +0.0000000000000, -0.0000859154930, -0.0001780684105, -0.0001965794769, + -0.0001718309859, -0.0001227364185, -0.0000553319920, +0.0000062374245, + +0.0000490945674, +0.0000676056338, +0.0000676056338, +0.0000307847082, + +0.0000000000000, +0.0000245472837, +0.0000676056338, +0.0000676056338, + +0.0000368209256, -0.0000307847082, -0.0000981891348, -0.0001657947686, + -0.0002088531187, -0.0001718309859, -0.0001104627767, -0.0000798792757, + -0.0000307847082, -0.0000307847082, -0.0000676056338, -0.0000736418511, + -0.0000676056338, -0.0000430583501, +0.0000000000000, +0.0000368209256, + +0.0000368209256, +0.0000000000000, -0.0000368209256, -0.0000368209256, + -0.0000185110664, +0.0000122736419, +0.0000430583501, +0.0000185110664, + +0.0000000000000, -0.0000185110664, -0.0000185110664, +0.0000000000000, + +0.0000245472837, +0.0000430583501, +0.0000553319920, +0.0000368209256, + +0.0000245472837, +0.0000185110664, +0.0000000000000, -0.0000122736419, + -0.0000368209256, -0.0000553319920, -0.0000490945674, -0.0000245472837, + +0.0000000000000, +0.0000245472837, +0.0000490945674, +0.0000490945674, + +0.0000185110664, +0.0000000000000, -0.0000062374245, -0.0000122736419, + -0.0000122736419, -0.0000062374245, -0.0000062374245, +0.0000000000000, + +0.0000000000000, +0.0000062374245, +0.0000122736419, +0.0000122736419, + +0.0000062374245, +0.0000062374245, +0.0000000000000, +0.0000000000000 +}; diff --git a/plugins/ladspa_effect/swh/impulses/12-fender-superchamp-sm57.h b/plugins/ladspa_effect/swh/impulses/12-fender-superchamp-sm57.h new file mode 100644 index 000000000..f7fbb74b6 --- /dev/null +++ b/plugins/ladspa_effect/swh/impulses/12-fender-superchamp-sm57.h @@ -0,0 +1,679 @@ +float fender_superchamp_sm57[] = { + +0.0000000000000, -0.0000200000000, -0.0000530434783, -0.0000397826087, + +0.0000265217391, +0.0000928260870, +0.0001658695652, +0.0001458695652, + -0.0000067391304, -0.0001458695652, -0.0002786956522, -0.0004047826087, + -0.0003647826087, -0.0002786956522, -0.0001856521739, +0.0000067391304, + +0.0001128260870, +0.0001393478261, +0.0001856521739, +0.0001128260870, + +0.0000265217391, +0.0000000000000, -0.0001326086957, -0.0002056521739, + -0.0002056521739, -0.0002852173913, -0.0002654347826, -0.0002521739130, + -0.0003317391304, -0.0003117391304, -0.0002919565217, -0.0002984782609, + -0.0001458695652, +0.0000200000000, +0.0001458695652, +0.0003715217391, + +0.0003250000000, +0.0001658695652, -0.0000465217391, -0.0003515217391, + -0.0005904347826, -0.0006700000000, -0.0006236956522, -0.0003184782609, + +0.0000200000000, +0.0000863043478, +0.0001060869565, +0.0000000000000, + -0.0002919565217, -0.0004976086957, -0.0007297826087, -0.0010615217391, + -0.0011610869565, -0.0012671739130, -0.0013269565217, -0.0011145652174, + -0.0010747826087, -0.0010880434783, -0.0009752173913, -0.0011808695652, + -0.0015058695652, -0.0017382608696, -0.0023950000000, -0.0028593478261, + -0.0032308695652, -0.0046373913043, -0.0047965217391, -0.0050752173913, + -0.0067404347826, -0.0047169565217, -0.0074436956522, -0.0103428260870, + +0.0068532608696, +0.0241619565217, +0.0008426086957, -0.0764132608696, + -0.1174660869565, -0.0463336956522, +0.0499626086957, +0.1274373913043, + +0.2072806521739, +0.2173780434783, +0.1524086956522, +0.0598676086957, + -0.0573863043478, -0.1283728260870, -0.1224352173913, -0.0873797826087, + -0.0395069565217, -0.0204402173913, -0.0344052173913, -0.0300000000000, + +0.0007495652174, +0.0409532608696, +0.0674969565217, +0.0662097826087, + +0.0491002173913, +0.0154643478261, -0.0154313043478, -0.0201350000000, + -0.0179323913043, -0.0123000000000, -0.0078747826087, -0.0214352173913, + -0.0342726086957, -0.0254821739130, -0.0027134782609, +0.0226360869565, + +0.0315126086957, +0.0181778260870, +0.0039473913043, -0.0051217391304, + -0.0098850000000, -0.0113710869565, -0.0134476086957, -0.0153650000000, + -0.0203339130435, -0.0242482608696, -0.0183239130435, -0.0129036956522, + -0.0087771739130, +0.0026736956522, +0.0066541304348, +0.0001193478261, + -0.0074967391304, -0.0111521739130, -0.0129500000000, -0.0151858695652, + -0.0076558695652, +0.0070058695652, +0.0121739130435, +0.0095002173913, + +0.0024280434783, -0.0069991304348, -0.0090026086957, -0.0039673913043, + +0.0039141304348, +0.0099447826087, +0.0047767391304, -0.0068930434783, + -0.0150397826087, -0.0140978260870, -0.0088500000000, -0.0071450000000, + -0.0069526086957, -0.0080341304348, -0.0125586956522, -0.0104556521739, + -0.0010680434783, +0.0076956521739, +0.0145886956522, +0.0114839130435, + +0.0010017391304, -0.0077886956522, -0.0161410869565, -0.0173752173913, + -0.0094869565217, -0.0054997826087, -0.0030782608696, -0.0004578260870, + -0.0005571739130, +0.0007363043478, -0.0002454347826, -0.0030650000000, + -0.0037019565217, -0.0076956521739, -0.0126847826087, -0.0129102173913, + -0.0117956521739, -0.0090358695652, -0.0028128260870, +0.0051880434783, + +0.0124591304348, +0.0133945652174, +0.0064286956522, -0.0032641304348, + -0.0103163043478, -0.0108469565217, -0.0032971739130, +0.0067867391304, + +0.0107341304348, +0.0073043478261, +0.0008558695652, -0.0071915217391, + -0.0147147826087, -0.0174745652174, -0.0150795652174, -0.0105352173913, + -0.0058247826087, -0.0016386956522, +0.0013865217391, +0.0034697826087, + +0.0049293478261, +0.0050486956522, +0.0032441304348, +0.0007032608696, + +0.0007032608696, +0.0033569565217, +0.0057917391304, +0.0073506521739, + +0.0075565217391, +0.0063489130435, +0.0048495652174, +0.0020367391304, + -0.0018641304348, -0.0047302173913, -0.0066741304348, -0.0078947826087, + -0.0078019565217, -0.0069991304348, -0.0063158695652, -0.0058913043478, + -0.0040734782609, -0.0003715217391, +0.0025078260870, +0.0041730434783, + +0.0053339130435, +0.0040534782609, +0.0014130434783, +0.0008558695652, + +0.0028926086957, +0.0059641304348, +0.0074569565217, +0.0076493478261, + +0.0079013043478, +0.0064019565217, +0.0046506521739, +0.0043521739130, + +0.0026139130435, +0.0002719565217, -0.0013932608696, -0.0017580434783, + +0.0007165217391, +0.0030319565217, +0.0038943478261, +0.0058713043478, + +0.0076758695652, +0.0077886956522, +0.0070256521739, +0.0055793478261, + +0.0056058695652, +0.0062295652174, +0.0046639130435, +0.0026669565217, + +0.0016519565217, +0.0012073913043, +0.0010547826087, +0.0002719565217, + +0.0010017391304, +0.0039473913043, +0.0056989130435, +0.0061897826087, + +0.0058380434783, +0.0043386956522, +0.0036091304348, +0.0037019565217, + +0.0040204347826, +0.0048363043478, +0.0046041304348, +0.0033436956522, + +0.0020432608696, +0.0001658695652, -0.0003980434783, +0.0015326086957, + +0.0044450000000, +0.0072313043478, +0.0084386956522, +0.0076160869565, + +0.0066143478261, +0.0060704347826, +0.0053604347826, +0.0045510869565, + +0.0040800000000, +0.0039739130435, +0.0022091304348, -0.0013865217391, + -0.0026006521739, -0.0000597826087, +0.0022889130435, +0.0023219565217, + +0.0015856521739, +0.0013202173913, +0.0008093478261, +0.0005971739130, + +0.0027134782609, +0.0061897826087, +0.0075963043478, +0.0056856521739, + +0.0024347826087, +0.0002586956522, -0.0001791304348, +0.0000000000000, + +0.0000663043478, +0.0005904347826, +0.0018908695652, +0.0034100000000, + +0.0043719565217, +0.0037947826087, +0.0022756521739, +0.0004378260870, + -0.0018576086957, -0.0030782608696, -0.0016982608696, +0.0017647826087, + +0.0051680434783, +0.0061897826087, +0.0042260869565, +0.0006302173913, + -0.0030184782609, -0.0044647826087, -0.0026271739130, +0.0007960869565, + +0.0030517391304, +0.0030517391304, +0.0020965217391, +0.0014463043478, + +0.0008756521739, +0.0000597826087, -0.0003450000000, -0.0006369565217, + -0.0010482608696, -0.0006502173913, +0.0008756521739, +0.0028328260870, + +0.0039871739130, +0.0031247826087, +0.0008823913043, -0.0013732608696, + -0.0028793478261, -0.0030717391304, -0.0022954347826, -0.0022026086957, + -0.0031645652174, -0.0039141304348, -0.0034100000000, -0.0020965217391, + -0.0006634782609, +0.0005706521739, +0.0015921739130, +0.0012936956522, + -0.0007763043478, -0.0031047826087, -0.0042658695652, -0.0034167391304, + -0.0009354347826, +0.0012406521739, +0.0018773913043, +0.0008623913043, + -0.0011410869565, -0.0023950000000, -0.0021495652174, -0.0006700000000, + +0.0010217391304, +0.0016254347826, +0.0004908695652, -0.0017780434783, + -0.0042591304348, -0.0057717391304, -0.0061034782609, -0.0060902173913, + -0.0051747826087, -0.0025541304348, +0.0004113043478, +0.0023021739130, + +0.0027200000000, +0.0021097826087, +0.0013732608696, -0.0001991304348, + -0.0022356521739, -0.0027267391304, -0.0025010869565, -0.0024813043478, + -0.0022621739130, -0.0020034782609, -0.0010017391304, +0.0001393478261, + -0.0004313043478, -0.0017913043478, -0.0026802173913, -0.0032176086957, + -0.0028991304348, -0.0027797826087, -0.0027332608696, -0.0023817391304, + -0.0030517391304, -0.0041795652174, -0.0036819565217, -0.0020367391304, + -0.0002123913043, +0.0011345652174, +0.0011145652174, +0.0003715217391, + -0.0004510869565, -0.0012406521739, -0.0015789130435, -0.0014463043478, + -0.0008558695652, +0.0000995652174, +0.0003250000000, -0.0000597826087, + -0.0004578260870, -0.0013269565217, -0.0021560869565, -0.0026071739130, + -0.0031910869565, -0.0035558695652, -0.0028991304348, -0.0017713043478, + -0.0009884782609, -0.0005771739130, -0.0006634782609, -0.0010945652174, + -0.0007960869565, +0.0005839130435, +0.0020500000000, +0.0023086956522, + +0.0017382608696, +0.0017250000000, +0.0017050000000, +0.0009486956522, + +0.0001458695652, -0.0004843478261, -0.0005506521739, +0.0004180434783, + +0.0013600000000, +0.0017580434783, +0.0015789130435, +0.0004578260870, + -0.0009619565217, -0.0023419565217, -0.0033171739130, -0.0030850000000, + -0.0022091304348, -0.0008691304348, +0.0006832608696, +0.0008889130435, + +0.0000132608696, -0.0006104347826, -0.0006700000000, +0.0002123913043, + +0.0015591304348, +0.0025143478261, +0.0026336956522, +0.0015921739130, + -0.0002454347826, -0.0017580434783, -0.0021826086957, -0.0012869565217, + +0.0003715217391, +0.0019371739130, +0.0029058695652, +0.0030650000000, + +0.0019969565217, +0.0000132608696, -0.0014595652174, -0.0014860869565, + -0.0001856521739, +0.0012604347826, +0.0019306521739, +0.0015193478261, + +0.0004710869565, -0.0004976086957, -0.0011543478261, -0.0013800000000, + -0.0009089130435, +0.0001326086957, +0.0009686956522, +0.0011676086957, + +0.0012471739130, +0.0014130434783, +0.0010747826087, +0.0005241304348, + +0.0004776086957, +0.0008558695652, +0.0013997826087, +0.0016519565217, + +0.0013732608696, +0.0005771739130, -0.0002984782609, -0.0005373913043, + +0.0000663043478, +0.0010945652174, +0.0020500000000, +0.0022954347826, + +0.0015458695652, -0.0000795652174, -0.0019636956522, -0.0026536956522, + -0.0018443478261, -0.0003382608696, +0.0014793478261, +0.0026471739130, + +0.0024547826087, +0.0014130434783, -0.0000597826087, -0.0012804347826, + -0.0017050000000, -0.0014130434783, -0.0005904347826, +0.0002786956522, + +0.0009619565217, +0.0016850000000, +0.0019041304348, +0.0015523913043, + +0.0010350000000, +0.0006567391304, +0.0004245652174, -0.0001128260870, + -0.0011410869565, -0.0020167391304, -0.0023154347826, -0.0017913043478, + -0.0005108695652, +0.0010282608696, +0.0021628260870, +0.0024147826087, + +0.0020432608696, +0.0014065217391, +0.0008823913043, +0.0006036956522, + +0.0001193478261, -0.0007297826087, -0.0015523913043, -0.0016519565217, + -0.0005639130435, +0.0007430434783, +0.0015458695652, +0.0019371739130, + +0.0017780434783, +0.0010415217391, -0.0000067391304, -0.0010084782609, + -0.0013202173913, -0.0009286956522, -0.0001260869565, +0.0008093478261, + +0.0011808695652, +0.0006965217391, -0.0001723913043, -0.0009884782609, + -0.0015193478261, -0.0016584782609, -0.0014926086957, -0.0011676086957, + -0.0009554347826, -0.0009619565217, -0.0009154347826, -0.0008226086957, + -0.0006502173913, -0.0001856521739, +0.0001723913043, +0.0002719565217, + +0.0002919565217, +0.0002521739130, +0.0001923913043, -0.0000530434783, + -0.0005839130435, -0.0010282608696, -0.0015921739130, -0.0020500000000, + -0.0018641304348, -0.0013467391304, -0.0007430434783, -0.0003582608696, + -0.0005173913043, -0.0010547826087, -0.0014595652174, -0.0013134782609, + -0.0009554347826, -0.0007828260870, -0.0010282608696, -0.0018443478261, + -0.0024745652174, -0.0022889130435, -0.0014330434783, +0.0000000000000, + +0.0011941304348, +0.0014197826087, +0.0008426086957, -0.0001591304348, + -0.0007828260870, -0.0009554347826, -0.0012141304348, -0.0014463043478, + -0.0015458695652, -0.0015126086957, -0.0011210869565, -0.0010017391304, + -0.0012604347826, -0.0013134782609, -0.0015193478261, -0.0020167391304, + -0.0023219565217, -0.0023882608696, -0.0022689130435, -0.0020234782609, + -0.0015656521739, -0.0007230434783, -0.0000265217391, +0.0001856521739, + +0.0002056521739, -0.0000597826087, -0.0003782608696, -0.0003117391304, + -0.0001128260870, -0.0000597826087, -0.0002056521739, -0.0004976086957, + -0.0007895652174, -0.0009221739130, -0.0008358695652, -0.0005041304348, + +0.0000730434783, +0.0006634782609, +0.0008426086957, +0.0004313043478, + -0.0005306521739, -0.0012671739130, -0.0012073913043, -0.0009554347826, + -0.0008358695652, -0.0007097826087, -0.0005971739130, -0.0005639130435, + -0.0007297826087, -0.0008491304348, -0.0008491304348, -0.0009221739130, + -0.0008358695652, -0.0006634782609, -0.0007363043478, -0.0007763043478, + -0.0006434782609, -0.0005241304348, -0.0004245652174, -0.0002786956522, + -0.0001723913043, +0.0000000000000, +0.0004510869565, +0.0007032608696, + +0.0002852173913, -0.0004245652174, -0.0006767391304, -0.0003915217391, + -0.0003117391304, -0.0005306521739, -0.0004378260870, -0.0002654347826, + -0.0003515217391, -0.0006369565217, -0.0010217391304, -0.0011210869565, + -0.0008426086957, -0.0005971739130, -0.0004976086957, -0.0006236956522, + -0.0009486956522, -0.0011676086957, -0.0011278260870, -0.0007695652174, + -0.0001060869565, +0.0004908695652, +0.0007097826087, +0.0005241304348, + +0.0000332608696, -0.0003382608696, -0.0003317391304, -0.0000795652174, + +0.0001326086957, +0.0001658695652, -0.0000730434783, -0.0002852173913, + -0.0004843478261, -0.0007895652174, -0.0007763043478, -0.0002984782609, + +0.0002984782609, +0.0007097826087, +0.0007230434783, +0.0004578260870, + +0.0002189130435, -0.0002786956522, -0.0008226086957, -0.0008028260870, + -0.0001723913043, +0.0004710869565, +0.0004578260870, -0.0000332608696, + -0.0002123913043, -0.0000067391304, +0.0002919565217, +0.0004776086957, + +0.0002321739130, -0.0000067391304, +0.0000795652174, +0.0002056521739, + +0.0001791304348, -0.0000265217391, -0.0001458695652, +0.0001526086957, + +0.0004047826087, +0.0003382608696, +0.0002719565217, +0.0001856521739, + -0.0000132608696, -0.0002454347826, -0.0002654347826, +0.0000597826087, + +0.0004908695652, +0.0008028260870, +0.0008889130435, +0.0006236956522, + +0.0003847826087, +0.0003382608696, +0.0001791304348, +0.0001723913043, + +0.0004643478261, +0.0007363043478, +0.0005771739130, +0.0000067391304, + -0.0005108695652, -0.0005506521739, -0.0002189130435, +0.0002321739130, + +0.0006369565217, +0.0008956521739, +0.0009419565217, +0.0007828260870, + +0.0005041304348, +0.0003647826087, +0.0005108695652, +0.0008491304348, + +0.0012206521739, +0.0013269565217, +0.0009554347826, +0.0003052173913, + -0.0001326086957, -0.0000132608696, +0.0003117391304, +0.0003715217391, + +0.0004976086957, +0.0008756521739, +0.0011478260870, +0.0011078260870, + +0.0007430434783, +0.0004976086957, +0.0005506521739, +0.0005506521739, + +0.0004710869565, +0.0003184782609, +0.0001060869565, +0.0000995652174, + +0.0002719565217, +0.0006302173913, +0.0011145652174, +0.0013865217391, + +0.0013800000000, +0.0011013043478, +0.0006900000000, +0.0004643478261, + +0.0004643478261, +0.0005439130435, +0.0008889130435, +0.0013865217391, + +0.0018045652174, +0.0018841304348, +0.0016386956522, +0.0013202173913, + +0.0010150000000, +0.0007828260870, +0.0006236956522, +0.0003250000000, + +0.0000000000000, -0.0000928260870, +0.0000000000000, +0.0003052173913, + +0.0005506521739, +0.0005108695652, +0.0004776086957, +0.0005639130435, + +0.0005439130435, +0.0003715217391, +0.0002586956522, +0.0004047826087, + +0.0005904347826, +0.0005571739130, +0.0005439130435, +0.0005771739130, + +0.0004578260870, +0.0002786956522, +0.0002256521739, +0.0004180434783, + +0.0007695652174, +0.0011543478261, +0.0014660869565, +0.0013865217391, + +0.0009221739130, +0.0003647826087, -0.0001060869565, -0.0002123913043, + +0.0000597826087, +0.0005041304348, +0.0010150000000, +0.0012339130435, + +0.0010217391304, +0.0006832608696, +0.0003250000000, -0.0000995652174, + -0.0003647826087, -0.0001658695652, +0.0003317391304, +0.0006767391304, + +0.0007097826087, +0.0003382608696, -0.0002786956522, -0.0007763043478, + -0.0009021739130, -0.0005241304348, +0.0000730434783, +0.0004710869565, + +0.0006832608696, +0.0008491304348, +0.0008691304348, +0.0006832608696, + +0.0003782608696, +0.0002719565217, +0.0004245652174, +0.0005839130435, + +0.0005971739130, +0.0004378260870, +0.0000000000000, -0.0004445652174, + -0.0007363043478, -0.0009021739130, -0.0007960869565, -0.0004445652174, + -0.0000597826087, +0.0003052173913, +0.0003647826087, +0.0000530434783, + -0.0004113043478, -0.0007695652174, -0.0007495652174, -0.0003847826087, + +0.0000067391304, +0.0002852173913, +0.0002056521739, -0.0002919565217, + -0.0007165217391, -0.0006634782609, -0.0000730434783, +0.0006302173913, + +0.0009486956522, +0.0006302173913, -0.0001658695652, -0.0008226086957, + -0.0006302173913, +0.0002586956522, +0.0012671739130, +0.0016850000000, + +0.0011210869565, -0.0000265217391, -0.0011278260870, -0.0018178260870, + -0.0016917391304, -0.0008491304348, +0.0001260869565, +0.0008160869565, + +0.0009486956522, +0.0006369565217, +0.0001458695652, -0.0004643478261, + -0.0009884782609, -0.0010813043478, -0.0006634782609, -0.0001393478261, + -0.0000928260870, -0.0001923913043, +0.0000000000000, +0.0000730434783, + +0.0000200000000, +0.0001193478261, +0.0002852173913, +0.0002919565217, + -0.0001128260870, -0.0006900000000, -0.0008028260870, -0.0002454347826, + +0.0005306521739, +0.0008756521739, +0.0005971739130, +0.0000265217391, + -0.0004976086957, -0.0006832608696, -0.0004180434783, +0.0000132608696, + +0.0002056521739, -0.0000332608696, -0.0005839130435, -0.0010747826087, + -0.0012273913043, -0.0009619565217, -0.0005108695652, -0.0002389130435, + -0.0001723913043, -0.0000928260870, +0.0000000000000, -0.0000863043478, + -0.0002256521739, -0.0000863043478, +0.0004578260870, +0.0010680434783, + +0.0010945652174, +0.0005041304348, -0.0000332608696, +0.0000132608696, + +0.0003980434783, +0.0004843478261, +0.0001526086957, -0.0002189130435, + -0.0004776086957, -0.0006567391304, -0.0006502173913, -0.0001791304348, + +0.0006965217391, +0.0015126086957, +0.0017382608696, +0.0013134782609, + +0.0006369565217, +0.0000530434783, -0.0002256521739, -0.0000200000000, + +0.0005439130435, +0.0009619565217, +0.0008160869565, +0.0001193478261, + -0.0005771739130, -0.0007495652174, -0.0003715217391, +0.0000928260870, + +0.0003317391304, +0.0004643478261, +0.0008093478261, +0.0013202173913, + +0.0016121739130, +0.0015258695652, +0.0011145652174, +0.0004313043478, + -0.0002852173913, -0.0006900000000, -0.0005839130435, -0.0000530434783, + +0.0005373913043, +0.0008358695652, +0.0007630434783, +0.0005506521739, + +0.0004908695652, +0.0006502173913, +0.0006767391304, +0.0003980434783, + +0.0000663043478, +0.0000132608696, +0.0002919565217, +0.0006036956522, + +0.0007363043478, +0.0007828260870, +0.0006567391304, +0.0003184782609, + +0.0000530434783, -0.0001393478261, -0.0003382608696, -0.0003382608696, + +0.0000132608696, +0.0005904347826, +0.0010547826087, +0.0011941304348, + +0.0010150000000, +0.0006832608696, +0.0003382608696, +0.0000663043478, + +0.0000200000000, +0.0001591304348, +0.0002321739130, +0.0003184782609, + +0.0005306521739, +0.0006965217391, +0.0006567391304, +0.0005839130435, + +0.0007097826087, +0.0008623913043, +0.0008623913043, +0.0007097826087, + +0.0004245652174, +0.0000928260870, -0.0002056521739, -0.0002719565217, + -0.0000465217391, +0.0001658695652, +0.0002321739130, +0.0000928260870, + -0.0000663043478, -0.0000730434783, -0.0000995652174, -0.0000200000000, + +0.0003382608696, +0.0007165217391, +0.0008558695652, +0.0006965217391, + +0.0004047826087, +0.0001591304348, -0.0000863043478, -0.0002123913043, + -0.0000597826087, +0.0001991304348, +0.0003317391304, +0.0002654347826, + +0.0001393478261, +0.0000332608696, -0.0001526086957, -0.0003450000000, + -0.0003847826087, -0.0002786956522, -0.0002056521739, -0.0001658695652, + -0.0001723913043, -0.0001923913043, -0.0000863043478, +0.0000332608696, + +0.0000132608696, -0.0000265217391, -0.0001526086957, -0.0003647826087, + -0.0004843478261, -0.0004510869565, -0.0002454347826, -0.0000132608696, + +0.0001526086957, +0.0002321739130, +0.0000995652174, -0.0001128260870, + -0.0002521739130, -0.0003582608696, -0.0003382608696, -0.0002189130435, + -0.0001393478261, -0.0000730434783, -0.0000928260870, -0.0002586956522, + -0.0004843478261, -0.0005971739130, -0.0004908695652, -0.0002454347826, + +0.0000465217391, +0.0002654347826, +0.0002123913043, -0.0000597826087, + -0.0002852173913, -0.0003382608696, -0.0003382608696, -0.0003117391304, + -0.0001791304348, -0.0000863043478, -0.0001260869565, -0.0001393478261, + -0.0000663043478, +0.0000200000000, +0.0000067391304, -0.0001060869565, + -0.0002189130435, -0.0003250000000, -0.0004578260870, -0.0005173913043, + -0.0004180434783, -0.0002189130435, -0.0000465217391, +0.0000132608696, + -0.0001260869565, -0.0004313043478, -0.0006965217391, -0.0007097826087, + -0.0004445652174, -0.0000465217391, +0.0002852173913, +0.0004378260870, + +0.0003782608696, +0.0002189130435, +0.0000397826087, -0.0001591304348, + -0.0002984782609, -0.0004643478261, -0.0007430434783, -0.0008823913043, + -0.0007165217391, -0.0002984782609, +0.0002189130435, +0.0005241304348, + +0.0004976086957, +0.0001591304348, -0.0004445652174, -0.0009286956522, + -0.0009952173913, -0.0006302173913, -0.0000332608696, +0.0004180434783, + +0.0004245652174, +0.0001193478261, -0.0001791304348, -0.0002786956522, + -0.0001856521739, -0.0000995652174, -0.0000928260870, -0.0002786956522, + -0.0007563043478, -0.0010747826087, -0.0009021739130, -0.0004710869565, + +0.0000000000000, +0.0002984782609, +0.0001723913043, -0.0001658695652, + -0.0005639130435, -0.0008293478261, -0.0007430434783, -0.0005241304348, + -0.0002984782609, -0.0001458695652, -0.0001991304348, -0.0002189130435, + -0.0001060869565, -0.0000530434783, -0.0001658695652, -0.0004908695652, + -0.0007563043478, -0.0007695652174, -0.0007165217391, -0.0005904347826, + -0.0003847826087, -0.0001856521739, -0.0000265217391, +0.0000465217391, + +0.0001060869565, +0.0001856521739, +0.0000067391304, -0.0004445652174, + -0.0008491304348, -0.0009089130435, -0.0006767391304, -0.0003715217391, + -0.0001060869565, -0.0000067391304, -0.0000928260870, -0.0002984782609, + -0.0005706521739, -0.0007297826087, -0.0006036956522, -0.0002654347826, + +0.0000730434783, +0.0001526086957, -0.0000995652174, -0.0004776086957, + -0.0007363043478, -0.0007363043478, -0.0005506521739, -0.0003184782609, + -0.0001526086957, -0.0002123913043, -0.0004578260870, -0.0007430434783, + -0.0008491304348, -0.0006236956522, -0.0001658695652, +0.0001991304348, + +0.0002586956522, +0.0000597826087, -0.0001856521739, -0.0004378260870, + -0.0004843478261, -0.0002919565217, -0.0000730434783, +0.0000000000000, + -0.0001326086957, -0.0003515217391, -0.0004976086957, -0.0004976086957, + -0.0004378260870, -0.0004710869565, -0.0005571739130, -0.0006104347826, + -0.0005771739130, -0.0003184782609, +0.0000332608696, +0.0001723913043, + +0.0001060869565, -0.0000200000000, -0.0002521739130, -0.0005439130435, + -0.0007563043478, -0.0007230434783, -0.0003647826087, +0.0000265217391, + +0.0001193478261, -0.0000530434783, -0.0003515217391, -0.0006302173913, + -0.0007165217391, -0.0005971739130, -0.0002984782609, +0.0000597826087, + +0.0002389130435, +0.0002123913043, +0.0001060869565, -0.0000132608696, + -0.0001260869565, -0.0002454347826, -0.0004113043478, -0.0004776086957, + -0.0003915217391, -0.0001791304348, +0.0000067391304, +0.0000928260870, + +0.0000265217391, -0.0001591304348, -0.0003317391304, -0.0003647826087, + -0.0002786956522, -0.0000995652174, +0.0000597826087, +0.0001658695652, + +0.0001856521739, -0.0000067391304, -0.0002919565217, -0.0004776086957, + -0.0005706521739, -0.0004510869565, -0.0001526086957, +0.0001193478261, + +0.0001791304348, -0.0000397826087, -0.0003515217391, -0.0005639130435, + -0.0005706521739, -0.0002586956522, +0.0001856521739, +0.0004245652174, + +0.0003515217391, +0.0000928260870, -0.0002321739130, -0.0004445652174, + -0.0003382608696, +0.0000000000000, +0.0002984782609, +0.0003382608696, + +0.0001128260870, -0.0001526086957, -0.0003052173913, -0.0003052173913, + -0.0001723913043, -0.0000332608696, +0.0000132608696, -0.0000200000000, + -0.0001393478261, -0.0002056521739, -0.0001458695652, -0.0000465217391, + +0.0000332608696, +0.0000465217391, -0.0001060869565, -0.0003250000000, + -0.0003915217391, -0.0003250000000, -0.0001856521739, +0.0000132608696, + +0.0002654347826, +0.0004578260870, +0.0004908695652, +0.0003782608696, + +0.0003317391304, +0.0003647826087, +0.0003915217391, +0.0003847826087, + +0.0002654347826, +0.0000132608696, -0.0002389130435, -0.0003980434783, + -0.0003715217391, -0.0002521739130, -0.0001856521739, -0.0001393478261, + -0.0000530434783, -0.0000397826087, -0.0001193478261, -0.0001923913043, + -0.0002123913043, -0.0002056521739, -0.0001923913043, -0.0001658695652, + -0.0000730434783, +0.0000132608696, +0.0000067391304, -0.0000332608696, + -0.0000663043478, -0.0001128260870, -0.0000928260870, -0.0000132608696, + +0.0000397826087, +0.0000465217391, -0.0000465217391, -0.0001856521739, + -0.0002123913043, -0.0001060869565, +0.0000730434783, +0.0002123913043, + +0.0002389130435, +0.0001526086957, -0.0000530434783, -0.0002719565217, + -0.0002586956522, -0.0000863043478, +0.0000465217391, +0.0000928260870, + -0.0000132608696, -0.0001658695652, -0.0002454347826, -0.0002321739130, + -0.0000332608696, +0.0003052173913, +0.0005373913043, +0.0005173913043, + +0.0002984782609, +0.0000597826087, -0.0000730434783, -0.0001658695652, + -0.0001723913043, -0.0000200000000, +0.0000995652174, +0.0001326086957, + +0.0001923913043, +0.0002719565217, +0.0002719565217, +0.0002189130435, + +0.0002123913043, +0.0002256521739, +0.0001393478261, +0.0000332608696, + +0.0000000000000, -0.0000265217391, -0.0000067391304, +0.0000332608696, + +0.0000597826087, +0.0000597826087, +0.0000795652174, +0.0001923913043, + +0.0002786956522, +0.0002521739130, +0.0002454347826, +0.0002256521739, + +0.0001723913043, +0.0001326086957, +0.0001060869565, +0.0001393478261, + +0.0001991304348, +0.0001723913043, +0.0001658695652, +0.0002123913043, + +0.0002586956522, +0.0003250000000, +0.0003847826087, +0.0003915217391, + +0.0003382608696, +0.0002123913043, +0.0001591304348, +0.0002189130435, + +0.0002586956522, +0.0003184782609, +0.0003915217391, +0.0003052173913, + +0.0000863043478, -0.0000200000000, +0.0000265217391, +0.0001526086957, + +0.0002321739130, +0.0002256521739, +0.0001393478261, +0.0000397826087, + +0.0000000000000, +0.0000995652174, +0.0002521739130, +0.0003450000000, + +0.0003847826087, +0.0002852173913, +0.0000597826087, -0.0000663043478, + -0.0000863043478, -0.0000730434783, +0.0000332608696, +0.0001723913043, + +0.0002586956522, +0.0003052173913, +0.0003847826087, +0.0004378260870, + +0.0003847826087, +0.0002389130435, +0.0001128260870, +0.0000265217391, + +0.0000000000000, +0.0000863043478, +0.0001991304348, +0.0002321739130, + +0.0001458695652, -0.0000730434783, -0.0003250000000, -0.0003582608696, + -0.0001723913043, +0.0000663043478, +0.0003184782609, +0.0004908695652, + +0.0005506521739, +0.0005839130435, +0.0005639130435, +0.0004445652174, + +0.0002521739130, +0.0000000000000, -0.0002786956522, -0.0003980434783, + -0.0003184782609, -0.0000995652174, +0.0001193478261, +0.0002786956522, + +0.0004180434783, +0.0005241304348, +0.0005706521739, +0.0005971739130, + +0.0005506521739, +0.0003980434783, +0.0001923913043, -0.0000465217391, + -0.0002389130435, -0.0002919565217, -0.0002321739130, -0.0000530434783, + +0.0001526086957, +0.0002984782609, +0.0004113043478, +0.0004378260870, + +0.0003052173913, +0.0002189130435, +0.0002719565217, +0.0003647826087, + +0.0004578260870, +0.0004578260870, +0.0003052173913, +0.0000663043478, + -0.0001060869565, -0.0001128260870, +0.0000000000000, +0.0001723913043, + +0.0003052173913, +0.0002852173913, +0.0001856521739, +0.0001393478261, + +0.0001526086957, +0.0001458695652, +0.0000928260870, +0.0000597826087, + +0.0000265217391, -0.0000530434783, -0.0001060869565, -0.0000795652174, + +0.0000000000000, +0.0000995652174, +0.0000795652174, -0.0000863043478, + -0.0002786956522, -0.0003782608696, -0.0002654347826, +0.0000530434783, + +0.0004047826087, +0.0007032608696, +0.0008491304348, +0.0006900000000, + +0.0002123913043, -0.0003715217391, -0.0007430434783, -0.0006965217391, + -0.0003184782609, +0.0001260869565, +0.0004445652174, +0.0005706521739, + +0.0004908695652, +0.0002521739130, +0.0000397826087, +0.0000465217391, + +0.0001326086957, +0.0000995652174, +0.0000397826087, +0.0000730434783, + +0.0001458695652, +0.0002786956522, +0.0003847826087, +0.0003847826087, + +0.0003715217391, +0.0003184782609, +0.0001393478261, -0.0000397826087, + -0.0001193478261, -0.0000265217391, +0.0001723913043, +0.0003052173913, + +0.0002719565217, +0.0001326086957, +0.0000530434783, +0.0000795652174, + +0.0001128260870, +0.0000863043478, +0.0000928260870, +0.0002056521739, + +0.0003382608696, +0.0004047826087, +0.0004445652174, +0.0004510869565, + +0.0004313043478, +0.0004047826087, +0.0003117391304, +0.0001723913043, + +0.0000265217391, -0.0001326086957, -0.0002123913043, -0.0001723913043, + +0.0000132608696, +0.0003317391304, +0.0005771739130, +0.0006434782609, + +0.0005706521739, +0.0003715217391, +0.0001458695652, -0.0000332608696, + -0.0001856521739, -0.0002389130435, -0.0001856521739, -0.0000730434783, + +0.0001060869565, +0.0003515217391, +0.0005173913043, +0.0005173913043, + +0.0003515217391, +0.0001128260870, -0.0001458695652, -0.0003782608696, + -0.0004710869565, -0.0003515217391, -0.0001193478261, +0.0001326086957, + +0.0003382608696, +0.0004313043478, +0.0003450000000, +0.0001458695652, + +0.0000000000000, -0.0000332608696, -0.0000530434783, -0.0000730434783, + -0.0000928260870, -0.0000332608696, +0.0001458695652, +0.0002984782609, + +0.0002852173913, +0.0001591304348, +0.0000000000000, -0.0001658695652, + -0.0002786956522, -0.0002123913043, +0.0000000000000, +0.0001658695652, + +0.0003117391304, +0.0003782608696, +0.0002521739130, +0.0000132608696, + -0.0000995652174, +0.0000067391304, +0.0001923913043, +0.0002389130435, + +0.0001060869565, -0.0000795652174, -0.0002256521739, -0.0002056521739, + -0.0000132608696, +0.0001791304348, +0.0002586956522, +0.0001991304348, + +0.0000663043478, -0.0000132608696, -0.0000200000000, +0.0000200000000, + +0.0000928260870, +0.0001260869565, +0.0000863043478, +0.0000795652174, + +0.0001326086957, +0.0001591304348, +0.0000863043478, -0.0000465217391, + -0.0001458695652, -0.0001591304348, -0.0001260869565, -0.0000663043478, + +0.0000132608696, +0.0000795652174, +0.0001393478261, +0.0002256521739, + +0.0003184782609, +0.0003382608696, +0.0002521739130, +0.0001060869565, + +0.0000000000000, -0.0000730434783, -0.0001393478261, -0.0001591304348, + -0.0000928260870, +0.0000265217391, +0.0001856521739, +0.0003184782609, + +0.0003847826087, +0.0003782608696, +0.0002786956522, +0.0001193478261, + -0.0001260869565, -0.0003515217391, -0.0004180434783, -0.0003450000000, + -0.0001856521739, -0.0000132608696, +0.0000465217391, +0.0000465217391, + +0.0000000000000, -0.0001128260870, -0.0001991304348, -0.0001856521739, + -0.0000663043478, +0.0000863043478, +0.0001723913043, +0.0002189130435, + +0.0002123913043, +0.0000863043478, -0.0001128260870, -0.0002852173913, + -0.0003450000000, -0.0002654347826, -0.0001723913043, -0.0001128260870, + -0.0000465217391, +0.0000132608696, +0.0000663043478, +0.0001128260870, + +0.0000863043478, -0.0000332608696, -0.0001923913043, -0.0003647826087, + -0.0004710869565, -0.0004510869565, -0.0003052173913, -0.0000530434783, + +0.0001723913043, +0.0002454347826, +0.0002389130435, +0.0001658695652, + -0.0000067391304, -0.0002389130435, -0.0004245652174, -0.0005108695652, + -0.0004445652174, -0.0002521739130, -0.0000265217391, +0.0000995652174, + +0.0000332608696, -0.0001128260870, -0.0002586956522, -0.0003582608696, + -0.0003184782609, -0.0001723913043, -0.0000200000000, +0.0000663043478, + +0.0000397826087, -0.0000200000000, -0.0000397826087, -0.0000332608696, + -0.0000200000000, -0.0000928260870, -0.0002586956522, -0.0003915217391, + -0.0004245652174, -0.0003317391304, -0.0000928260870, +0.0001658695652, + +0.0002984782609, +0.0002189130435, -0.0000730434783, -0.0003847826087, + -0.0004643478261, -0.0003117391304, -0.0000928260870, +0.0000200000000, + +0.0000000000000, -0.0000795652174, -0.0001326086957, -0.0001856521739, + -0.0002256521739, -0.0002056521739, -0.0001591304348, -0.0001923913043, + -0.0002786956522, -0.0002919565217, -0.0001923913043, -0.0000597826087, + +0.0000200000000, +0.0000795652174, +0.0000597826087, -0.0000730434783, + -0.0002256521739, -0.0002786956522, -0.0002719565217, -0.0002654347826, + -0.0002321739130, -0.0001458695652, -0.0000730434783, -0.0000863043478, + -0.0001591304348, -0.0001923913043, -0.0001856521739, -0.0001326086957, + -0.0000530434783, +0.0000067391304, +0.0000397826087, +0.0000465217391, + +0.0000132608696, -0.0000928260870, -0.0002189130435, -0.0003184782609, + -0.0003715217391, -0.0003184782609, -0.0001723913043, +0.0000000000000, + +0.0000795652174, +0.0000332608696, -0.0000730434783, -0.0001658695652, + -0.0001923913043, -0.0001723913043, -0.0001591304348, -0.0001393478261, + -0.0000730434783, -0.0000265217391, -0.0000663043478, -0.0001591304348, + -0.0002056521739, -0.0001526086957, -0.0000663043478, -0.0000332608696, + -0.0000265217391, +0.0000000000000, +0.0000265217391, +0.0000397826087, + +0.0000465217391, +0.0000397826087, +0.0000332608696, +0.0000000000000, + -0.0000928260870, -0.0002321739130, -0.0003582608696, -0.0004180434783, + -0.0003515217391, -0.0001658695652, +0.0000265217391, +0.0001791304348, + +0.0002389130435, +0.0001326086957, -0.0000730434783, -0.0002321739130, + -0.0002454347826, -0.0001791304348, -0.0001260869565, -0.0001060869565, + -0.0001326086957, -0.0002056521739, -0.0002521739130, -0.0002389130435, + -0.0002056521739, -0.0001526086957, -0.0000795652174, +0.0000000000000, + +0.0000200000000, +0.0000265217391, +0.0000530434783, +0.0000795652174, + +0.0000265217391, -0.0001193478261, -0.0003117391304, -0.0004578260870, + -0.0005241304348, -0.0004776086957, -0.0003450000000, -0.0002321739130, + -0.0001526086957, -0.0000597826087, +0.0000200000000, +0.0000397826087, + -0.0000067391304, -0.0000597826087, -0.0000132608696, +0.0000597826087, + +0.0000663043478, +0.0000132608696, -0.0000530434783, -0.0000530434783, + -0.0000200000000, -0.0000332608696, -0.0000465217391, -0.0000530434783, + -0.0000530434783, -0.0000597826087, -0.0001393478261, -0.0002454347826, + -0.0003117391304, -0.0002719565217, -0.0001393478261, -0.0000795652174, + -0.0001326086957, -0.0001991304348, -0.0002056521739, -0.0001193478261, + -0.0000132608696, +0.0001260869565, +0.0003250000000, +0.0003715217391, + +0.0002321739130, +0.0000265217391, -0.0001260869565, -0.0001923913043, + -0.0001458695652, -0.0000530434783, +0.0000000000000, -0.0000265217391, + -0.0000730434783, -0.0000663043478, -0.0000530434783, -0.0000530434783, + -0.0000597826087, -0.0000730434783, -0.0001326086957, -0.0001856521739, + -0.0001723913043, -0.0001393478261, -0.0000928260870, +0.0000000000000, + +0.0000663043478, +0.0001060869565, +0.0001458695652, +0.0001591304348, + +0.0001723913043, +0.0001526086957, +0.0000863043478, +0.0000265217391, + +0.0000000000000, +0.0000067391304, +0.0000067391304, -0.0000465217391, + -0.0001260869565, -0.0001326086957, -0.0000928260870, -0.0000397826087, + +0.0000000000000, +0.0000265217391, +0.0000530434783, +0.0000663043478, + +0.0000397826087, -0.0000132608696, -0.0000928260870, -0.0001658695652, + -0.0001658695652, -0.0000995652174, -0.0000332608696, +0.0000132608696, + +0.0000200000000, -0.0000067391304, -0.0000200000000, -0.0000200000000, + +0.0000000000000, +0.0000067391304, -0.0000332608696, -0.0001128260870, + -0.0001723913043, -0.0001458695652, -0.0000397826087, +0.0000795652174, + +0.0001393478261, +0.0001326086957, +0.0000795652174, +0.0000397826087, + +0.0000530434783, +0.0000663043478, +0.0000597826087, +0.0000530434783, + +0.0000200000000, +0.0000000000000, +0.0000132608696, +0.0000397826087, + +0.0000995652174, +0.0001393478261, +0.0000795652174, -0.0000332608696, + -0.0001260869565, -0.0001458695652, -0.0000863043478, +0.0000200000000, + +0.0001260869565, +0.0001591304348, +0.0000663043478, -0.0000265217391, + +0.0000000000000, +0.0001060869565, +0.0002256521739, +0.0003117391304, + +0.0003184782609, +0.0001991304348, +0.0000265217391, -0.0000995652174, + -0.0001658695652, -0.0002321739130, -0.0002321739130, -0.0001393478261, + +0.0000000000000, +0.0000795652174, +0.0001060869565, +0.0000995652174, + +0.0000730434783, +0.0000730434783, +0.0000863043478, +0.0001060869565, + +0.0001193478261, +0.0001326086957, +0.0001060869565, +0.0000332608696, + +0.0000000000000, -0.0000132608696, -0.0000795652174, -0.0001526086957, + -0.0001326086957, -0.0000597826087, +0.0000132608696, +0.0000795652174, + +0.0000795652174, +0.0000663043478, +0.0000530434783, +0.0000530434783, + +0.0000863043478, +0.0001260869565, +0.0001260869565, +0.0000995652174, + +0.0000928260870, +0.0000928260870, +0.0000332608696, -0.0000795652174, + -0.0001393478261, -0.0001326086957, -0.0000863043478, +0.0000000000000, + +0.0001060869565, +0.0001856521739, +0.0002189130435, +0.0001723913043, + +0.0000863043478, +0.0000597826087, +0.0001193478261, +0.0001458695652, + +0.0001326086957, +0.0001260869565, +0.0001260869565, +0.0000863043478, + +0.0000597826087, +0.0000928260870, +0.0001723913043, +0.0002256521739, + +0.0002321739130, +0.0001591304348, +0.0000530434783, +0.0000397826087, + +0.0001260869565, +0.0001791304348, +0.0000995652174, -0.0000795652174, + -0.0002256521739, -0.0002189130435, -0.0000663043478, +0.0001591304348, + +0.0003117391304, +0.0002654347826, +0.0000863043478, -0.0000397826087, + -0.0000597826087, +0.0000000000000, +0.0000397826087, +0.0000597826087, + +0.0000397826087, -0.0000265217391, -0.0001128260870, -0.0001458695652, + -0.0000928260870, +0.0000000000000, +0.0000597826087, +0.0000663043478, + +0.0000465217391, +0.0000397826087, +0.0000530434783, +0.0001060869565, + +0.0001658695652, +0.0001791304348, +0.0001526086957, +0.0001591304348, + +0.0002056521739, +0.0002321739130, +0.0001991304348, +0.0001326086957, + +0.0000265217391, -0.0000863043478, -0.0001526086957, -0.0000995652174, + +0.0000000000000, +0.0000863043478, +0.0000795652174, +0.0000200000000, + +0.0000000000000, +0.0000000000000, -0.0000332608696, -0.0001193478261, + -0.0002256521739, -0.0002719565217, -0.0001856521739, +0.0000000000000, + +0.0002123913043, +0.0003117391304, +0.0002719565217, +0.0001591304348, + +0.0000067391304, -0.0001128260870, -0.0001526086957, -0.0000928260870, + +0.0000332608696, +0.0001723913043, +0.0002389130435, +0.0002321739130, + +0.0001791304348, +0.0001193478261, +0.0000597826087, +0.0000000000000, + -0.0000863043478, -0.0001526086957, -0.0001526086957, -0.0000795652174, + +0.0000397826087, +0.0001658695652, +0.0002454347826, +0.0002586956522, + +0.0001923913043, +0.0000663043478, +0.0000000000000, +0.0000132608696, + +0.0000863043478, +0.0001393478261, +0.0001526086957, +0.0001193478261, + +0.0000530434783, -0.0000132608696, -0.0000067391304, +0.0000332608696, + +0.0000332608696, -0.0000067391304, -0.0000132608696, +0.0000265217391, + +0.0001526086957, +0.0002984782609, +0.0003782608696, +0.0003515217391, + +0.0002454347826, +0.0000663043478, -0.0001128260870, -0.0001856521739, + -0.0000928260870, +0.0000928260870, +0.0002389130435, +0.0002521739130, + +0.0001591304348, +0.0000397826087, -0.0000200000000, +0.0000000000000, + +0.0001128260870, +0.0002454347826, +0.0003250000000, +0.0002919565217, + +0.0001723913043, +0.0000000000000, -0.0001260869565, -0.0000863043478, + +0.0000597826087, +0.0002389130435, +0.0003515217391, +0.0003515217391, + +0.0003052173913, +0.0002389130435, +0.0001791304348, +0.0001723913043, + +0.0001856521739, +0.0001791304348, +0.0001193478261, +0.0000132608696, + -0.0000597826087, -0.0000730434783, -0.0000265217391, +0.0000530434783, + +0.0001326086957, +0.0001923913043, +0.0001658695652, +0.0000200000000, + -0.0001591304348, -0.0002454347826, -0.0001856521739, +0.0000200000000, + +0.0002654347826, +0.0004245652174, +0.0003980434783, +0.0002189130435, + +0.0000067391304, -0.0000928260870, -0.0000730434783, -0.0000067391304, + +0.0000067391304, +0.0000067391304, +0.0000332608696, +0.0000863043478, + +0.0001791304348, +0.0002719565217, +0.0002984782609, +0.0002123913043, + +0.0000597826087, -0.0000597826087, -0.0000928260870, -0.0000200000000, + +0.0000863043478, +0.0001458695652, +0.0000928260870, +0.0000000000000, + -0.0000663043478, -0.0000397826087, +0.0000397826087, +0.0001060869565, + +0.0001060869565, +0.0000332608696, -0.0000863043478, -0.0001591304348, + -0.0001193478261, +0.0000067391304, +0.0001326086957, +0.0001526086957, + +0.0000928260870, +0.0000132608696, -0.0000265217391, -0.0000067391304, + +0.0000332608696, +0.0000332608696, -0.0000265217391, -0.0001128260870, + -0.0001591304348, -0.0001326086957, -0.0000730434783, +0.0000000000000, + +0.0000863043478, +0.0001260869565, +0.0000597826087, -0.0000265217391, + -0.0000995652174, -0.0001458695652, -0.0001658695652, -0.0001856521739, + -0.0001991304348, -0.0001856521739, -0.0001260869565, -0.0000265217391, + +0.0000265217391, +0.0000265217391, +0.0000132608696, -0.0000067391304, + -0.0000200000000, -0.0000132608696, +0.0000000000000, +0.0000067391304, + -0.0000200000000, -0.0001193478261, -0.0002056521739, -0.0002389130435, + -0.0001856521739, -0.0000597826087, +0.0000265217391, +0.0000530434783, + +0.0000200000000, -0.0000332608696, -0.0000863043478, -0.0000863043478, + -0.0000397826087, +0.0000067391304, +0.0000200000000, +0.0000000000000, + -0.0000730434783, -0.0001458695652, -0.0001393478261, -0.0000795652174, + -0.0000132608696, +0.0000067391304, -0.0000332608696, -0.0001060869565, + -0.0001723913043, -0.0002123913043, -0.0002123913043, -0.0001856521739, + -0.0001393478261, -0.0000730434783, -0.0000200000000, +0.0000000000000, + -0.0000132608696, -0.0000332608696, -0.0000200000000, +0.0000000000000, + -0.0000265217391, -0.0000995652174, -0.0001658695652, -0.0001591304348, + -0.0000597826087, +0.0000597826087, +0.0001193478261, +0.0001128260870, + +0.0000597826087, -0.0000200000000, -0.0001060869565, -0.0001060869565, + +0.0000067391304, +0.0001060869565, +0.0000928260870, +0.0000000000000, + -0.0001326086957, -0.0001991304348, -0.0001591304348, -0.0000200000000, + +0.0001193478261, +0.0002389130435, +0.0002786956522, +0.0001991304348, + +0.0000465217391, -0.0000200000000, -0.0000132608696, +0.0000000000000, + +0.0000067391304, +0.0000265217391, +0.0000332608696, +0.0000132608696, + +0.0000200000000, +0.0000530434783, +0.0000730434783, +0.0000597826087, + +0.0000332608696, +0.0000067391304, +0.0000200000000, +0.0000730434783, + +0.0001658695652, +0.0002321739130, +0.0001723913043, +0.0000465217391, + -0.0000730434783, -0.0001393478261, -0.0000863043478, +0.0000200000000, + +0.0000465217391, -0.0000265217391, -0.0001591304348, -0.0002189130435, + -0.0001193478261, +0.0000465217391, +0.0002056521739, +0.0003052173913, + +0.0002719565217, +0.0001260869565, -0.0000332608696, -0.0001193478261, + -0.0000730434783, +0.0000200000000, +0.0000597826087, +0.0000200000000, + -0.0000530434783, -0.0000995652174, -0.0000730434783, -0.0000132608696, + +0.0000530434783, +0.0001128260870, +0.0001128260870, +0.0000530434783, + -0.0000200000000, -0.0000597826087, -0.0000265217391, +0.0000332608696, + +0.0000730434783, +0.0000995652174, +0.0001060869565, +0.0000465217391, + -0.0000597826087, -0.0001791304348, -0.0002189130435, -0.0001260869565, + +0.0000530434783, +0.0002321739130, +0.0002654347826, +0.0001458695652, + -0.0000200000000, -0.0001791304348, -0.0002586956522, -0.0001991304348, + -0.0000795652174, +0.0000132608696, +0.0000397826087, +0.0000067391304, + -0.0000465217391, -0.0000863043478, -0.0000995652174, -0.0000863043478, + -0.0000597826087, -0.0000332608696, -0.0000132608696, -0.0000265217391, + -0.0000332608696, -0.0000132608696, -0.0000067391304, -0.0000265217391, + -0.0000200000000, +0.0000067391304, +0.0000200000000, +0.0000265217391, + +0.0000200000000, +0.0000000000000, -0.0000597826087, -0.0001326086957, + -0.0001723913043, -0.0001591304348, -0.0000928260870, +0.0000000000000, + +0.0000995652174, +0.0001326086957, +0.0000730434783, -0.0000332608696, + -0.0001128260870, -0.0000928260870, -0.0000132608696, +0.0000265217391, + +0.0000465217391, +0.0000332608696, -0.0000132608696, -0.0000863043478, + -0.0001193478261, -0.0000995652174, -0.0000663043478, -0.0000530434783, + -0.0000530434783, -0.0000663043478, -0.0000928260870, -0.0000863043478, + -0.0000332608696, +0.0000132608696, +0.0000200000000, +0.0000000000000, + -0.0000465217391, -0.0000795652174, -0.0001060869565, -0.0001193478261, + -0.0001393478261, -0.0001393478261, -0.0000730434783, +0.0000000000000, + +0.0000265217391, +0.0000067391304, -0.0000465217391, -0.0001260869565, + -0.0001591304348, -0.0001260869565, -0.0000663043478, -0.0000200000000, + +0.0000067391304, +0.0000265217391, +0.0000067391304, -0.0000397826087, + -0.0000795652174, -0.0000995652174, -0.0000928260870, -0.0000663043478, + +0.0000067391304, +0.0001060869565, +0.0001526086957, +0.0001326086957, + +0.0000465217391, -0.0000465217391, -0.0001060869565, -0.0000863043478, + -0.0000465217391, -0.0000530434783, -0.0000995652174, -0.0001393478261, + -0.0001393478261, -0.0000928260870, -0.0000265217391, +0.0000265217391, + +0.0000067391304, -0.0000663043478, -0.0001458695652, -0.0001658695652, + -0.0001193478261, -0.0000332608696, +0.0000332608696, +0.0000530434783, + +0.0000265217391, -0.0000200000000, -0.0000663043478, -0.0000863043478, + -0.0000863043478, -0.0000795652174, -0.0000928260870, -0.0000995652174, + -0.0000795652174, +0.0000000000000, +0.0001128260870, +0.0001723913043, + +0.0001393478261, +0.0000597826087, -0.0000332608696, -0.0001260869565, + -0.0001591304348, -0.0001193478261, -0.0000332608696, +0.0000332608696, + +0.0000265217391, -0.0000132608696, -0.0000530434783, -0.0000597826087, + -0.0000200000000, +0.0000332608696, +0.0000663043478, +0.0000597826087, + -0.0000067391304, -0.0001128260870, -0.0001923913043, -0.0002056521739, + -0.0001393478261, -0.0000132608696, +0.0000928260870, +0.0001193478261, + +0.0000465217391, -0.0000597826087, -0.0001458695652, -0.0001723913043, + -0.0001260869565, -0.0000200000000, +0.0000795652174, +0.0001128260870, + +0.0000465217391, -0.0000597826087, -0.0001393478261, -0.0001393478261, + -0.0000863043478, -0.0000265217391, +0.0000397826087, +0.0000795652174, + +0.0000332608696, +0.0000000000000, -0.0000132608696, -0.0000200000000, + -0.0000132608696, -0.0000265217391, -0.0000597826087, -0.0001128260870, + -0.0001723913043, -0.0001658695652, -0.0000928260870, +0.0000000000000, + +0.0000730434783, +0.0001060869565, +0.0001128260870, +0.0000863043478, + +0.0000265217391, -0.0000597826087, -0.0001526086957, -0.0002256521739, + -0.0002454347826, -0.0001991304348, -0.0000863043478, +0.0000397826087, + +0.0001326086957, +0.0001260869565, +0.0000200000000, -0.0000730434783, + -0.0000663043478, +0.0000132608696, +0.0001193478261, +0.0001791304348, + +0.0001326086957, +0.0000132608696, -0.0001128260870, -0.0001856521739, + -0.0001591304348, -0.0000465217391, +0.0000795652174, +0.0001856521739, + +0.0002056521739, +0.0001591304348, +0.0000928260870, +0.0000397826087, + +0.0000067391304, -0.0000132608696, -0.0000132608696, -0.0000067391304, + -0.0000200000000, -0.0000397826087, -0.0000067391304, +0.0000795652174, + +0.0001791304348, +0.0002123913043, +0.0001060869565, -0.0000795652174, + -0.0002256521739, -0.0002454347826, -0.0001393478261, +0.0000200000000, + +0.0001393478261, +0.0001658695652, +0.0001260869565, +0.0000597826087, + +0.0000397826087, +0.0000795652174, +0.0001128260870, +0.0001060869565, + +0.0000465217391, -0.0000132608696, -0.0000265217391, +0.0000000000000, + +0.0000332608696, +0.0000597826087, +0.0000465217391, +0.0000067391304, + +0.0000000000000, +0.0000200000000, +0.0000397826087, +0.0000397826087, + +0.0000000000000, -0.0000397826087, -0.0000465217391, -0.0000332608696, + -0.0000067391304, +0.0000200000000, +0.0000067391304, -0.0000132608696, + -0.0000332608696, -0.0000200000000, +0.0000067391304, +0.0000265217391, + +0.0000200000000, +0.0000132608696, -0.0000067391304, -0.0000397826087, + -0.0000663043478, -0.0000663043478, +0.0000000000000, +0.0001128260870, + +0.0001923913043, +0.0001856521739, +0.0000863043478, -0.0000332608696, + -0.0001128260870, -0.0001393478261, -0.0000663043478, +0.0000663043478, + +0.0001723913043, +0.0001923913043, +0.0001260869565, +0.0000530434783, + +0.0000200000000, +0.0000132608696, +0.0000132608696, -0.0000200000000, + -0.0000995652174, -0.0001591304348, -0.0001658695652, -0.0001193478261, + -0.0000265217391, +0.0000730434783, +0.0001326086957, +0.0001393478261, + +0.0000995652174, +0.0000730434783, +0.0000795652174, +0.0000928260870, + +0.0000730434783, +0.0000332608696, -0.0000200000000, -0.0000863043478, + -0.0001060869565, -0.0000730434783, +0.0000132608696, +0.0001193478261, + +0.0001591304348, +0.0001458695652, +0.0000795652174, -0.0000332608696, + -0.0001260869565, -0.0001393478261, -0.0001060869565, -0.0000530434783, + +0.0000000000000, +0.0000663043478, +0.0001326086957, +0.0001393478261, + +0.0001128260870, +0.0001128260870, +0.0001326086957, +0.0001393478261, + +0.0001128260870, +0.0000530434783, +0.0000000000000, -0.0000067391304, + +0.0000000000000, +0.0000265217391, +0.0000663043478, +0.0000663043478, + +0.0000465217391, +0.0000200000000, +0.0000132608696, +0.0000332608696, + +0.0000597826087, +0.0000863043478, +0.0000795652174, +0.0000200000000, + -0.0000265217391, -0.0000132608696, +0.0000200000000, +0.0000465217391, + +0.0000663043478, +0.0000397826087, -0.0000397826087, -0.0001591304348, + -0.0002521739130, -0.0002521739130, -0.0001393478261, +0.0000397826087, + +0.0002321739130, +0.0003317391304, +0.0003117391304, +0.0002189130435, + +0.0000863043478, -0.0000397826087, -0.0001326086957, -0.0001326086957, + -0.0000795652174, +0.0000000000000, +0.0000663043478, +0.0001060869565, + +0.0001060869565, +0.0000730434783, +0.0000067391304, -0.0000465217391, + -0.0000597826087, -0.0000465217391, +0.0000000000000, +0.0000863043478, + +0.0001723913043, +0.0002123913043, +0.0001526086957, +0.0000530434783, + -0.0000200000000, -0.0000730434783, -0.0000795652174, -0.0000397826087, + +0.0000200000000, +0.0000995652174, +0.0001260869565, +0.0000863043478, + +0.0000265217391, -0.0000332608696, -0.0000730434783, -0.0000530434783, + +0.0000000000000, +0.0000597826087, +0.0000795652174, +0.0000663043478, + +0.0000332608696, +0.0000000000000, -0.0000132608696, -0.0000067391304, + +0.0000000000000, +0.0000265217391, +0.0000397826087, +0.0000332608696, + +0.0000132608696, +0.0000000000000, +0.0000000000000, +0.0000000000000, + +0.0000000000000 +}; diff --git a/plugins/ladspa_effect/swh/impulses/13-fender-superchamp-sm57-off.h b/plugins/ladspa_effect/swh/impulses/13-fender-superchamp-sm57-off.h new file mode 100644 index 000000000..96539f941 --- /dev/null +++ b/plugins/ladspa_effect/swh/impulses/13-fender-superchamp-sm57-off.h @@ -0,0 +1,676 @@ +float fender_superchamp_sm57_off[] = { + +0.0000000000000, +0.0000657422902, +0.0001240736314, +0.0000874970117, + -0.0000437485059, -0.0002041596940, -0.0002918957686, -0.0002699019842, + -0.0001458283529, +0.0000291656706, +0.0002115706431, +0.0003136504901, + +0.0003136504901, +0.0001895768587, +0.0000000000000, -0.0001824049725, + -0.0003064786039, -0.0003136504901, -0.0001969878078, -0.0000074109491, + +0.0001969878078, +0.0003428161607, +0.0003719818312, +0.0002773129333, + +0.0000874970117, -0.0001166626823, -0.0002918957686, -0.0003573989959, + -0.0002918957686, -0.0001094907961, +0.0001094907961, +0.0003136504901, + +0.0004305522352, +0.0004085584509, +0.0002773129333, +0.0000657422902, + -0.0001458283529, -0.0003064786039, -0.0003573989959, -0.0002844848195, + -0.0001240736314, +0.0000729141764, +0.0002553191489, +0.0003502271097, + +0.0003428161607, +0.0002335644274, +0.0000729141764, -0.0000874970117, + -0.0002041596940, -0.0002407363137, -0.0001824049725, -0.0000657422902, + +0.0000657422902, +0.0001824049725, +0.0002335644274, +0.0002189815922, + +0.0001532393019, +0.0000657422902, -0.0000145828353, -0.0000583313411, + -0.0000583313411, -0.0000291656706, +0.0000074109491, +0.0000511594549, + +0.0000803251255, +0.0000874970117, +0.0000874970117, +0.0000874970117, + +0.0000949079608, +0.0001020798470, +0.0001020798470, +0.0000874970117, + +0.0000437485059, -0.0000074109491, -0.0000583313411, -0.0000729141764, + -0.0000365766197, +0.0000437485059, +0.0001678221372, +0.0002844848195, + +0.0003428161607, +0.0003064786039, +0.0001749940234, -0.0000074109491, + -0.0001895768587, -0.0002990676548, -0.0002918957686, -0.0001386564667, + +0.0000874970117, +0.0003356442744, +0.0005034664117, +0.0005180492470, + +0.0003573989959, +0.0000657422902, -0.0002407363137, -0.0004743007411, + -0.0005326320822, -0.0003719818312, -0.0000437485059, +0.0003356442744, + +0.0006492947645, +0.0007587855606, +0.0006201290940, +0.0002627300980, + -0.0001895768587, -0.0005909634234, -0.0007879512312, -0.0007004542195, + -0.0003428161607, +0.0001678221372, +0.0006638775998, +0.0009703562037, + +0.0009849390390, +0.0006858713842, +0.0001678221372, -0.0003865646665, + -0.0008097059527, -0.0009483624193, -0.0007513746115, -0.0002844848195, + +0.0002918957686, +0.0008097059527, +0.0010798469998, +0.0010141047095, + +0.0006421228783, +0.0000803251255, -0.0004668897920, -0.0008391106861, + -0.0009046139135, -0.0006492947645, -0.0001604111881, +0.0003939756156, + +0.0008242887880, +0.0009995218743, +0.0008536935214, +0.0004523069567, + -0.0000657422902, -0.0005398039684, -0.0007951231174, -0.0007659574468, + -0.0004597179058, +0.0000000000000, +0.0004743007411, +0.0007951231174, + +0.0008608654076, +0.0006567057136, +0.0002553191489, -0.0002041596940, + -0.0005835524743, -0.0007587855606, -0.0006784604351, -0.0003719818312, + +0.0000511594549, +0.0004597179058, +0.0007296198900, +0.0007879512312, + +0.0006275400430, +0.0003064786039, -0.0000657422902, -0.0003939756156, + -0.0005835524743, -0.0005835524743, -0.0004159694000, -0.0001166626823, + +0.0002115706431, +0.0004960554626, +0.0006638775998, +0.0006712885489, + +0.0005180492470, +0.0002407363137, -0.0000803251255, -0.0003719818312, + -0.0005617977528, -0.0005763805881, -0.0004159694000, -0.0001094907961, + +0.0002627300980, +0.0006127181449, +0.0008242887880, +0.0008242887880, + +0.0006055462587, +0.0002115706431, -0.0002481472627, -0.0006421228783, + -0.0008391106861, -0.0007733683959, -0.0004305522352, +0.0000874970117, + +0.0006421228783, +0.0010358594310, +0.0011307673918, +0.0008682763567, + +0.0002918957686, -0.0004085584509, -0.0010212765957, -0.0013205833134, + -0.0011745158977, -0.0005981353096, +0.0002189815922, +0.0010358594310, + +0.0015467367918, +0.0015830743486, +0.0010798469998, +0.0001969878078, + -0.0007733683959, -0.0015321539565, -0.0017946449916, -0.0014444178819, + -0.0005689696390, +0.0005398039684, +0.0015393258427, +0.0020719579249, + +0.0019187186230, +0.0011161845565, -0.0000949079608, -0.0013131723643, + -0.0021157064308, -0.0022032034425, -0.0015175711212, -0.0002699019842, + +0.0011090126703, +0.0021522830504, +0.0024731054267, +0.0019478842936, + +0.0007222089410, -0.0007733683959, -0.0020353813053, -0.0026337556777, + -0.0023346880230, -0.0012548410232, +0.0002553191489, +0.0016853932584, + +0.0025608415013, +0.0025825962228, +0.0017437245996, +0.0003210614392, + -0.0012110925173, -0.0023564427444, -0.0027504183600, -0.0022615347836, + -0.0010578532154, +0.0004305522352, +0.0017291417643, +0.0024001912503, + +0.0022397800622, +0.0013277551996, +0.0000000000000, -0.0012914176428, + -0.0021231173799, -0.0022469519484, -0.0016633994741, -0.0005909634234, + +0.0005835524743, +0.0014809945016, +0.0018238106622, +0.0015321539565, + +0.0007222089410, -0.0003064786039, -0.0012328472388, -0.0017583074349, + -0.0017437245996, -0.0011890987330, -0.0002918957686, +0.0006638775998, + +0.0014006693760, +0.0016708104231, +0.0014006693760, +0.0006858713842, + -0.0002481472627, -0.0011235955056, -0.0016925651446, -0.0018020559407, + -0.0014518288310, -0.0007805402821, +0.0000145828353, +0.0007222089410, + +0.0011890987330, +0.0013205833134, +0.0011307673918, +0.0006492947645, + +0.0000074109491, -0.0006858713842, -0.0012694238585, -0.0016342338035, + -0.0016196509682, -0.0012402581879, -0.0005252211332, +0.0003865646665, + +0.0009337795840, +0.0015976571838, +0.0014080803251, +0.0004743007411, + -0.0003719818312, -0.0011161845565, -0.0017874731054, -0.0021157064308, + -0.0019333014583, -0.0011965096820, -0.0002041596940, +0.0006201290940, + +0.0009629452546, +0.0004451350705, -0.0007076261057, -0.0023638536935, + -0.0038448481951, -0.0047786277791, -0.0047274683242, -0.0037499402343, + -0.0021377002152, -0.0005981353096, +0.0001458283529, -0.0004085584509, + -0.0021522830504, -0.0053695912025, -0.0061647143199, -0.0108995935931, + -0.0199244561320, -0.0062450394454, +0.0215075304805, +0.0279567296199, + -0.0194135787712, -0.1062459956969, -0.1249813530959, -0.0293210614392, + +0.0840016734401, +0.1751386564667, +0.2390482907005, +0.2214219459718, + +0.1214501553909, -0.0119136983027, -0.1176930432704, -0.1462553191489, + -0.1090621563471, -0.0459113076739, +0.0017071479799, +0.0067922543629, + -0.0007805402821, +0.0085868993545, +0.0275847477887, +0.0442699019842, + +0.0460133875209, +0.0215804446569, -0.0114979679656, -0.0345957446809, + -0.0343841740378, -0.0125484102319, +0.0092216112838, +0.0175094429835, + +0.0124754960555, -0.0068651685393, -0.0206538369591, -0.0117750418360, + -0.0023638536935, -0.0031006454698, -0.0048735357399, -0.0052309347358, + -0.0034872101363, +0.0066827635668, +0.0165902462348, +0.0116729619890, + -0.0040781735596, -0.0182756394932, -0.0250313172364, -0.0251479799187, + -0.0206758307435, -0.0131247908200, -0.0026191728425, +0.0038811857519, + +0.0033193879990, -0.0031955534306, -0.0107317714559, -0.0146569447765, + -0.0195158976811, -0.0236158259622, -0.0183923021755, -0.0017508964858, + +0.0140368156825, +0.0181879034186, +0.0127673918240, +0.0069234998805, + +0.0020719579249, +0.0000291656706, +0.0030203203443, +0.0068360028688, + +0.0054790819986, -0.0043409036577, -0.0183777193402, -0.0289782452785, + -0.0299923499880, -0.0216899354530, -0.0105933540521, -0.0025388477169, + +0.0041876643557, +0.0079813530959, +0.0069600765001, +0.0031152283050, + -0.0023638536935, -0.0062961989003, -0.0077989481234, -0.0082295003586, + -0.0085943103036, -0.0100241453502, -0.0092799426249, -0.0027066698542, + +0.0033779584031, +0.0048589529046, +0.0029548171169, -0.0025608415013, + -0.0073832177863, -0.0107901027970, -0.0131322017691, -0.0108778388716, + -0.0060846282572, -0.0013860865408, +0.0037133636146, +0.0057999043749, + +0.0032684676070, -0.0018166387760, -0.0072079847000, -0.0113227348793, + -0.0148611044705, -0.0170425531915, -0.0143287114511, -0.0060554625867, + +0.0043263208224, +0.0121910112360, +0.0147736074588, +0.0122201769065, + +0.0050267750418, -0.0044867320105, -0.0116875448243, -0.0157219698781, + -0.0164370069328, -0.0129278030122, -0.0065369352140, +0.0011307673918, + +0.0080396844370, +0.0120086062634, +0.0115562993067, +0.0065661008845, + +0.0005180492470, -0.0028087497012, -0.0026555103992, +0.0001749940234, + +0.0050922782692, +0.0098491513268, +0.0115562993067, +0.0089954578054, + +0.0046108056419, -0.0004085584509, -0.0045378914655, -0.0059313889553, + -0.0061063829787, -0.0062742051159, -0.0060626344729, -0.0054644991633, + -0.0040927563949, -0.0029693999522, -0.0022689457327, -0.0005543868037, + +0.0010212765957, +0.0015175711212, +0.0007951231174, -0.0006347119292, + -0.0011090126703, -0.0012768348076, -0.0019916327994, -0.0008828591920, + +0.0008900310782, +0.0015759024623, +0.0020719579249, +0.0022543628974, + +0.0017437245996, +0.0013060004781, +0.0015393258427, +0.0034508725795, + +0.0063908677982, +0.0082732488645, +0.0081274205116, +0.0071788190294, + +0.0065878556060, +0.0057635668181, +0.0035092039206, -0.0000511594549, + -0.0036332775520, -0.0057489839828, -0.0054716710495, -0.0025608415013, + +0.0007076261057, +0.0029619890031, +0.0057344011475, +0.0082220894095, + +0.0090903657662, +0.0097616543151, +0.0108778388716, +0.0117824527851, + +0.0114688022950, +0.0089005498446, +0.0054133397083, +0.0021231173799, + +0.0005763805881, +0.0022981114033, +0.0055300023906, +0.0075802055941, + +0.0074195553431, +0.0051580205594, +0.0034726273010, +0.0033633755678, + +0.0034434616304, +0.0041219220655, +0.0045670571360, +0.0034946210853, + +0.0022323691131, +0.0010432703801, +0.0000949079608, +0.0003136504901, + +0.0008171169017, +0.0013423380349, +0.0023272770739, +0.0030203203443, + +0.0034580444657, +0.0037936887401, +0.0034726273010, +0.0026920870189, + +0.0025971790581, +0.0043263208224, +0.0063908677982, +0.0066610088453, + +0.0053987568731, +0.0042825723165, +0.0035749462109, +0.0022761176189, + -0.0003136504901, -0.0026409275639, -0.0030203203443, -0.0012182644035, + +0.0021522830504, +0.0063545302415, +0.0096155868994, +0.0099949796797, + +0.0065369352140, +0.0009120248625, -0.0033122161128, -0.0043409036577, + -0.0017654793211, +0.0030640688501, +0.0070109968922, +0.0083024145350, + +0.0065149414296, +0.0024367678699, -0.0008462825723, -0.0025754243366, + -0.0036696151088, -0.0033267989481, -0.0017217308152, +0.0001678221372, + +0.0019916327994, +0.0036478603873, +0.0053695912025, +0.0062670332297, + +0.0053184317475, +0.0038010996892, +0.0023638536935, +0.0009120248625, + +0.0002773129333, +0.0004743007411, +0.0002041596940, -0.0011307673918, + -0.0029619890031, -0.0041876643557, -0.0038010996892, -0.0018969639015, + +0.0002844848195, +0.0016414056897, +0.0017145589290, +0.0010578532154, + +0.0009775280899, +0.0009703562037, +0.0006784604351, -0.0001094907961, + -0.0014809945016, -0.0022106143916, -0.0022909395171, -0.0022543628974, + -0.0019552952426, -0.0018458044466, -0.0015976571838, -0.0009775280899, + -0.0003939756156, +0.0002189815922, +0.0002918957686, +0.0000000000000, + -0.0001532393019, -0.0002407363137, -0.0002627300980, -0.0004814726273, + -0.0010798469998, -0.0015904852976, -0.0020282094191, -0.0020793688740, + -0.0013569208702, -0.0001969878078, +0.0006347119292, +0.0006201290940, + -0.0001240736314, -0.0007879512312, -0.0012036815683, -0.0015613196271, + -0.0017728902701, -0.0020719579249, -0.0023710255797, -0.0019333014583, + -0.0010944298350, -0.0002773129333, +0.0002627300980, -0.0000145828353, + -0.0005689696390, -0.0003648099450, +0.0004011475018, +0.0010578532154, + +0.0005617977528, -0.0009557733684, -0.0025680133875, -0.0036770260579, + -0.0035237867559, -0.0023272770739, -0.0009849390390, +0.0001094907961, + +0.0008536935214, +0.0013934974898, +0.0010724360507, -0.0009411905331, + -0.0036041118814, -0.0058438919436, -0.0072008128138, -0.0072517332058, + -0.0055591680612, -0.0021886206072, +0.0014664116663, +0.0036770260579, + +0.0038156825245, +0.0024585225914, +0.0005034664117, -0.0015684915133, + -0.0030568969639, -0.0037865168539, -0.0037865168539, -0.0030423141286, + -0.0022397800622, -0.0014664116663, -0.0006421228783, -0.0006712885489, + -0.0014518288310, -0.0022251972269, -0.0027358355247, -0.0025316758307, + -0.0015321539565, -0.0002773129333, +0.0007659574468, +0.0011890987330, + +0.0010432703801, +0.0008171169017, +0.0005398039684, +0.0001312455176, + -0.0000511594549, +0.0000074109491, +0.0000729141764, -0.0000657422902, + -0.0006055462587, -0.0012182644035, -0.0010798469998, -0.0001969878078, + +0.0009483624193, +0.0021740377719, +0.0027286636385, +0.0021740377719, + +0.0010798469998, +0.0000219937844, -0.0005617977528, -0.0006784604351, + -0.0010358594310, -0.0016853932584, -0.0023856084150, -0.0028670810423, + -0.0026775041836, -0.0020136265838, -0.0013715037055, -0.0006127181449, + +0.0004305522352, +0.0018603872819, +0.0028161606503, +0.0028379153717, + +0.0022543628974, +0.0010944298350, -0.0002041596940, -0.0006930432704, + -0.0002918957686, +0.0007150370547, +0.0017800621563, +0.0021231173799, + +0.0017363136505, +0.0007513746115, -0.0005034664117, -0.0014152522113, + -0.0013497489840, -0.0004305522352, +0.0003793927803, +0.0006201290940, + +0.0007442027253, +0.0008097059527, +0.0006347119292, +0.0003428161607, + +0.0001604111881, +0.0004011475018, +0.0009557733684, +0.0012914176428, + +0.0013131723643, +0.0008171169017, -0.0003719818312, -0.0014955773368, + -0.0018823810662, -0.0015101601721, -0.0002041596940, +0.0015247430074, + +0.0029985656228, +0.0039760937126, +0.0037427683481, +0.0024001912503, + +0.0008171169017, -0.0007951231174, -0.0017291417643, -0.0014226631604, + -0.0004377241214, +0.0005981353096, +0.0011090126703, +0.0009483624193, + +0.0004888835764, -0.0004523069567, -0.0016559885250, -0.0021448721014, + -0.0017583074349, -0.0008171169017, +0.0003428161607, +0.0013351661487, + +0.0016196509682, +0.0010432703801, +0.0002481472627, -0.0002335644274, + -0.0003502271097, -0.0001166626823, +0.0001824049725, +0.0002407363137, + -0.0002553191489, -0.0010578532154, -0.0013497489840, -0.0009703562037, + -0.0002261534784, +0.0005763805881, +0.0011307673918, +0.0015247430074, + +0.0017217308152, +0.0014372459957, +0.0007805402821, +0.0000729141764, + -0.0002553191489, -0.0001824049725, -0.0000365766197, -0.0000583313411, + -0.0001969878078, -0.0002261534784, -0.0001312455176, -0.0000437485059, + +0.0001824049725, +0.0006712885489, +0.0011090126703, +0.0009703562037, + +0.0001458283529, -0.0007879512312, -0.0014226631604, -0.0016488166388, + -0.0011381783409, -0.0001240736314, +0.0007222089410, +0.0011527611762, + +0.0011527611762, +0.0003719818312, -0.0008462825723, -0.0016999760937, + -0.0018603872819, -0.0015029882859, -0.0009849390390, -0.0006567057136, + -0.0004231412862, -0.0001895768587, -0.0000803251255, +0.0000437485059, + +0.0002041596940, -0.0000074109491, -0.0006784604351, -0.0015904852976, + -0.0023930193641, -0.0025388477169, -0.0021740377719, -0.0016122400191, + -0.0007805402821, -0.0002481472627, -0.0001240736314, -0.0000803251255, + -0.0003210614392, -0.0005763805881, -0.0006421228783, -0.0009921109252, + -0.0016708104231, -0.0024076021994, -0.0027286636385, -0.0023201051877, + -0.0014592397801, -0.0004960554626, +0.0002335644274, +0.0005034664117, + +0.0003428161607, -0.0001532393019, -0.0007367917762, -0.0010798469998, + -0.0011381783409, -0.0009921109252, -0.0007951231174, -0.0006567057136, + -0.0006638775998, -0.0007951231174, -0.0009046139135, -0.0009557733684, + -0.0010286875448, -0.0013131723643, -0.0018238106622, -0.0021011235955, + -0.0021085345446, -0.0019844609132, -0.0015613196271, -0.0010358594310, + -0.0008608654076, -0.0009921109252, -0.0010798469998, -0.0010358594310, + -0.0012985895290, -0.0017363136505, -0.0019261295721, -0.0020062156347, + -0.0019844609132, -0.0017800621563, -0.0012622519723, -0.0006492947645, + -0.0003136504901, -0.0000437485059, +0.0002627300980, +0.0004743007411, + +0.0007004542195, +0.0005909634234, +0.0001020798470, -0.0004305522352, + -0.0010944298350, -0.0014738226153, -0.0013497489840, -0.0011745158977, + -0.0009629452546, -0.0008242887880, -0.0010358594310, -0.0013277551996, + -0.0015759024623, -0.0017291417643, -0.0015101601721, -0.0011527611762, + -0.0008536935214, -0.0004011475018, +0.0000291656706, +0.0004011475018, + +0.0005689696390, +0.0001312455176, -0.0008242887880, -0.0015613196271, + -0.0017363136505, -0.0016050681329, -0.0014444178819, -0.0010944298350, + -0.0005472149175, -0.0002627300980, -0.0001749940234, -0.0000511594549, + +0.0000437485059, +0.0003136504901, +0.0007587855606, +0.0006421228783, + -0.0000219937844, -0.0007442027253, -0.0012182644035, -0.0012840066938, + -0.0013205833134, -0.0014444178819, -0.0015247430074, -0.0016633994741, + -0.0016342338035, -0.0013934974898, -0.0013060004781, -0.0012402581879, + -0.0012110925173, -0.0012328472388, -0.0010358594310, -0.0005252211332, + +0.0000074109491, +0.0002990676548, +0.0004668897920, +0.0005763805881, + +0.0003210614392, -0.0002627300980, -0.0006858713842, -0.0007150370547, + -0.0005909634234, -0.0005689696390, -0.0005180492470, -0.0003136504901, + +0.0000145828353, +0.0003282333254, +0.0004305522352, +0.0003573989959, + +0.0001749940234, -0.0000365766197, -0.0002773129333, -0.0003865646665, + -0.0002844848195, -0.0001312455176, -0.0000803251255, -0.0001749940234, + -0.0003428161607, -0.0003939756156, -0.0003356442744, +0.0000145828353, + +0.0008242887880, +0.0014955773368, +0.0015684915133, +0.0009921109252, + +0.0002041596940, -0.0003136504901, -0.0005106382979, -0.0004814726273, + -0.0000437485059, +0.0005981353096, +0.0011453502271, +0.0015029882859, + +0.0015759024623, +0.0011307673918, +0.0002627300980, -0.0004888835764, + -0.0007951231174, -0.0006055462587, -0.0000949079608, +0.0004231412862, + +0.0007805402821, +0.0006930432704, +0.0003282333254, +0.0002844848195, + +0.0004377241214, +0.0003428161607, +0.0000219937844, -0.0002773129333, + -0.0004597179058, -0.0004668897920, -0.0001895768587, +0.0004011475018, + +0.0008828591920, +0.0010652641645, +0.0010944298350, +0.0009483624193, + +0.0008974420273, +0.0011745158977, +0.0013131723643, +0.0010141047095, + +0.0005034664117, -0.0000729141764, -0.0004814726273, -0.0005398039684, + -0.0002553191489, +0.0003428161607, +0.0010578532154, +0.0015247430074, + +0.0017508964858, +0.0018092278269, +0.0016342338035, +0.0013497489840, + +0.0011599330624, +0.0010652641645, +0.0009775280899, +0.0007879512312, + +0.0005689696390, +0.0004451350705, +0.0003502271097, +0.0003502271097, + +0.0005034664117, +0.0006712885489, +0.0008682763567, +0.0011673440115, + +0.0012985895290, +0.0011307673918, +0.0007733683959, +0.0004305522352, + +0.0003865646665, +0.0007805402821, +0.0014006693760, +0.0019041357877, + +0.0018969639015, +0.0014226631604, +0.0009411905331, +0.0006930432704, + +0.0006421228783, +0.0006712885489, +0.0007004542195, +0.0007587855606, + +0.0007951231174, +0.0008462825723, +0.0008900310782, +0.0007442027253, + +0.0006201290940, +0.0007296198900, +0.0008900310782, +0.0009483624193, + +0.0009775280899, +0.0009775280899, +0.0009120248625, +0.0006784604351, + +0.0003356442744, +0.0000000000000, -0.0001969878078, -0.0000874970117, + +0.0002115706431, +0.0005034664117, +0.0007367917762, +0.0009411905331, + +0.0009849390390, +0.0008754482429, +0.0008391106861, +0.0008900310782, + +0.0010212765957, +0.0012694238585, +0.0013860865408, +0.0012402581879, + +0.0009775280899, +0.0006201290940, +0.0003793927803, +0.0003648099450, + +0.0003573989959, +0.0004668897920, +0.0005981353096, +0.0005326320822, + +0.0003648099450, +0.0003064786039, +0.0003719818312, +0.0003939756156, + +0.0003865646665, +0.0004597179058, +0.0004960554626, +0.0004960554626, + +0.0005180492470, +0.0004888835764, +0.0004960554626, +0.0005763805881, + +0.0006421228783, +0.0004305522352, -0.0000657422902, -0.0004451350705, + -0.0004451350705, -0.0001604111881, +0.0002918957686, +0.0008242887880, + +0.0011819268468, +0.0012622519723, +0.0009995218743, +0.0005689696390, + +0.0002627300980, +0.0000874970117, +0.0000365766197, +0.0001166626823, + +0.0001312455176, +0.0000000000000, -0.0002335644274, -0.0004743007411, + -0.0006055462587, -0.0005981353096, -0.0004377241214, -0.0001240736314, + +0.0001749940234, +0.0003573989959, +0.0003939756156, +0.0002041596940, + -0.0000949079608, -0.0002481472627, -0.0002481472627, -0.0003356442744, + -0.0005252211332, -0.0007296198900, -0.0007587855606, -0.0003210614392, + +0.0005252211332, +0.0014738226153, +0.0021085345446, +0.0018529763328, + +0.0005981353096, -0.0009849390390, -0.0020939517093, -0.0021740377719, + -0.0013643318193, -0.0002189815922, +0.0007733683959, +0.0012840066938, + +0.0011673440115, +0.0006347119292, -0.0000511594549, -0.0007150370547, + -0.0010286875448, -0.0009703562037, -0.0007659574468, -0.0004159694000, + -0.0000074109491, +0.0003064786039, +0.0005326320822, +0.0005252211332, + +0.0002627300980, -0.0000657422902, -0.0004231412862, -0.0006275400430, + -0.0006492947645, -0.0005835524743, -0.0003793927803, -0.0002773129333, + -0.0003793927803, -0.0003648099450, -0.0002481472627, -0.0001824049725, + +0.0000145828353, +0.0001969878078, +0.0002115706431, +0.0002041596940, + +0.0000583313411, +0.0000000000000, +0.0001749940234, +0.0001166626823, + -0.0002261534784, -0.0006858713842, -0.0010506813292, -0.0008754482429, + -0.0005180492470, -0.0003648099450, -0.0001094907961, +0.0002189815922, + +0.0004159694000, +0.0004159694000, +0.0002115706431, +0.0002189815922, + +0.0003648099450, +0.0001166626823, -0.0001969878078, -0.0000803251255, + +0.0002773129333, +0.0005763805881, +0.0007004542195, +0.0006275400430, + +0.0003865646665, +0.0000583313411, -0.0003793927803, -0.0006492947645, + -0.0002407363137, +0.0005180492470, +0.0009046139135, +0.0009629452546, + +0.0009337795840, +0.0008242887880, +0.0006492947645, +0.0003282333254, + -0.0001240736314, -0.0005981353096, -0.0007587855606, -0.0004814726273, + +0.0000219937844, +0.0003865646665, +0.0004888835764, +0.0004085584509, + +0.0003282333254, +0.0003210614392, +0.0003793927803, +0.0004305522352, + +0.0004743007411, +0.0005763805881, +0.0007733683959, +0.0008828591920, + +0.0007442027253, +0.0005034664117, +0.0002189815922, -0.0000074109491, + +0.0000291656706, +0.0003428161607, +0.0007076261057, +0.0008682763567, + +0.0008974420273, +0.0009191967487, +0.0006858713842, +0.0003210614392, + +0.0002261534784, +0.0003719818312, +0.0005689696390, +0.0006347119292, + +0.0004668897920, +0.0004159694000, +0.0004814726273, +0.0004377241214, + +0.0004159694000, +0.0004231412862, +0.0003282333254, +0.0002041596940, + +0.0001166626823, +0.0001824049725, +0.0003502271097, +0.0004743007411, + +0.0007076261057, +0.0009557733684, +0.0010652641645, +0.0011161845565, + +0.0010141047095, +0.0007659574468, +0.0004305522352, +0.0000437485059, + -0.0001094907961, +0.0000074109491, +0.0002407363137, +0.0004451350705, + +0.0004231412862, +0.0002844848195, +0.0002335644274, +0.0002553191489, + +0.0003939756156, +0.0007587855606, +0.0011235955056, +0.0012328472388, + +0.0009629452546, +0.0004888835764, +0.0002041596940, +0.0002041596940, + +0.0002844848195, +0.0002918957686, +0.0001824049725, +0.0000511594549, + +0.0000000000000, +0.0000365766197, +0.0002115706431, +0.0003282333254, + +0.0003064786039, +0.0003356442744, +0.0004814726273, +0.0006275400430, + +0.0006784604351, +0.0005398039684, +0.0002553191489, -0.0000949079608, + -0.0003573989959, -0.0002918957686, +0.0000365766197, +0.0003356442744, + +0.0004523069567, +0.0003210614392, +0.0000583313411, -0.0001824049725, + -0.0003356442744, -0.0002627300980, +0.0000145828353, +0.0003136504901, + +0.0005763805881, +0.0007076261057, +0.0006275400430, +0.0004231412862, + +0.0001240736314, -0.0002773129333, -0.0006127181449, -0.0007587855606, + -0.0006712885489, -0.0004159694000, -0.0001386564667, +0.0000000000000, + -0.0000291656706, -0.0001386564667, -0.0001824049725, -0.0001094907961, + +0.0000729141764, +0.0002407363137, +0.0001969878078, -0.0000874970117, + -0.0004668897920, -0.0006421228783, -0.0005617977528, -0.0003428161607, + -0.0000949079608, -0.0000145828353, -0.0001824049725, -0.0003939756156, + -0.0004523069567, -0.0003793927803, -0.0003865646665, -0.0004743007411, + -0.0004377241214, -0.0003356442744, -0.0002335644274, -0.0001386564667, + -0.0001604111881, -0.0002481472627, -0.0003210614392, -0.0004085584509, + -0.0004085584509, -0.0003136504901, -0.0002335644274, -0.0002627300980, + -0.0004011475018, -0.0005835524743, -0.0006567057136, -0.0005689696390, + -0.0003356442744, +0.0000000000000, +0.0002481472627, +0.0002627300980, + +0.0001386564667, -0.0001020798470, -0.0004523069567, -0.0006421228783, + -0.0006421228783, -0.0005180492470, -0.0003502271097, -0.0002918957686, + -0.0002699019842, -0.0002335644274, -0.0002115706431, -0.0001386564667, + -0.0000949079608, -0.0001604111881, -0.0002407363137, -0.0002918957686, + -0.0003428161607, -0.0003939756156, -0.0004743007411, -0.0003939756156, + -0.0001532393019, -0.0000145828353, +0.0000000000000, +0.0000583313411, + +0.0001166626823, +0.0000874970117, -0.0000803251255, -0.0004085584509, + -0.0007442027253, -0.0009921109252, -0.0010212765957, -0.0007076261057, + -0.0002990676548, -0.0001312455176, -0.0002773129333, -0.0006567057136, + -0.0008754482429, -0.0007805402821, -0.0005689696390, -0.0003648099450, + -0.0002773129333, -0.0003428161607, -0.0004523069567, -0.0005472149175, + -0.0004814726273, -0.0001386564667, +0.0001678221372, +0.0001094907961, + -0.0003865646665, -0.0008682763567, -0.0009337795840, -0.0006930432704, + -0.0003428161607, -0.0000291656706, +0.0000145828353, -0.0002773129333, + -0.0007367917762, -0.0009703562037, -0.0008242887880, -0.0005034664117, + -0.0002041596940, -0.0001678221372, -0.0003939756156, -0.0005981353096, + -0.0006275400430, -0.0004668897920, -0.0002481472627, -0.0001094907961, + +0.0000000000000, +0.0000219937844, -0.0001386564667, -0.0003648099450, + -0.0005472149175, -0.0007076261057, -0.0008391106861, -0.0008171169017, + -0.0006055462587, -0.0004159694000, -0.0002699019842, -0.0001312455176, + -0.0000874970117, -0.0001532393019, -0.0003282333254, -0.0005180492470, + -0.0005909634234, -0.0005981353096, -0.0005472149175, -0.0005106382979, + -0.0006055462587, -0.0006201290940, -0.0004231412862, -0.0001094907961, + +0.0001458283529, +0.0001604111881, -0.0000657422902, -0.0004159694000, + -0.0007442027253, -0.0008536935214, -0.0007296198900, -0.0004597179058, + -0.0000874970117, +0.0001020798470, +0.0000583313411, -0.0000729141764, + -0.0004011475018, -0.0008391106861, -0.0010212765957, -0.0008974420273, + -0.0006421228783, -0.0003282333254, +0.0000074109491, +0.0002627300980, + +0.0002699019842, +0.0000729141764, -0.0001895768587, -0.0003939756156, + -0.0004814726273, -0.0005835524743, -0.0006784604351, -0.0006421228783, + -0.0005689696390, -0.0005763805881, -0.0006055462587, -0.0005689696390, + -0.0004159694000, -0.0002041596940, -0.0000219937844, +0.0001094907961, + +0.0002041596940, +0.0001749940234, -0.0000437485059, -0.0003064786039, + -0.0003939756156, -0.0003865646665, -0.0003282333254, -0.0002115706431, + -0.0001240736314, -0.0000437485059, +0.0000000000000, -0.0000657422902, + -0.0001386564667, -0.0001458283529, -0.0001604111881, -0.0001532393019, + -0.0001312455176, -0.0000803251255, -0.0000365766197, -0.0000583313411, + -0.0001312455176, -0.0002335644274, -0.0003136504901, -0.0002335644274, + -0.0001166626823, -0.0001386564667, -0.0002773129333, -0.0003648099450, + -0.0003210614392, -0.0002627300980, -0.0002990676548, -0.0003282333254, + -0.0002407363137, -0.0000949079608, +0.0000949079608, +0.0002844848195, + +0.0003282333254, +0.0001969878078, -0.0000874970117, -0.0003648099450, + -0.0004085584509, -0.0002990676548, -0.0001094907961, +0.0000657422902, + +0.0000657422902, -0.0001312455176, -0.0003939756156, -0.0005398039684, + -0.0004523069567, -0.0002407363137, -0.0000219937844, +0.0000874970117, + -0.0000219937844, -0.0002481472627, -0.0004231412862, -0.0004743007411, + -0.0003502271097, -0.0001312455176, +0.0000074109491, +0.0000657422902, + +0.0000949079608, +0.0000949079608, +0.0000583313411, +0.0000365766197, + +0.0000583313411, +0.0001020798470, +0.0001604111881, +0.0002627300980, + +0.0003865646665, +0.0004743007411, +0.0004668897920, +0.0003210614392, + +0.0000657422902, -0.0001749940234, -0.0003502271097, -0.0004451350705, + -0.0004451350705, -0.0002918957686, -0.0000511594549, +0.0000511594549, + +0.0000219937844, +0.0000000000000, -0.0000074109491, +0.0000365766197, + +0.0001312455176, +0.0001895768587, +0.0001824049725, +0.0000874970117, + -0.0000949079608, -0.0003210614392, -0.0004743007411, -0.0004231412862, + -0.0001969878078, +0.0000000000000, +0.0000583313411, +0.0000219937844, + -0.0000657422902, -0.0001895768587, -0.0002553191489, -0.0001895768587, + -0.0000657422902, +0.0000219937844, +0.0000074109491, -0.0001166626823, + -0.0002261534784, -0.0001969878078, -0.0000949079608, -0.0000219937844, + +0.0000000000000, -0.0000291656706, -0.0000874970117, -0.0000657422902, + +0.0000583313411, +0.0001678221372, +0.0001604111881, +0.0000219937844, + -0.0001532393019, -0.0003064786039, -0.0003865646665, -0.0002773129333, + -0.0000145828353, +0.0002189815922, +0.0003502271097, +0.0003210614392, + +0.0001458283529, -0.0000365766197, -0.0001386564667, -0.0000949079608, + +0.0000437485059, +0.0002335644274, +0.0003793927803, +0.0003719818312, + +0.0002407363137, +0.0000803251255, +0.0000145828353, +0.0000803251255, + +0.0001604111881, +0.0002041596940, +0.0001678221372, +0.0000145828353, + -0.0000949079608, -0.0001240736314, -0.0001312455176, -0.0000511594549, + +0.0000511594549, +0.0001604111881, +0.0002335644274, +0.0001969878078, + +0.0001969878078, +0.0002335644274, +0.0001895768587, +0.0001166626823, + +0.0000291656706, -0.0000874970117, -0.0001532393019, -0.0001166626823, + +0.0000583313411, +0.0003210614392, +0.0004743007411, +0.0005326320822, + +0.0005689696390, +0.0005689696390, +0.0005763805881, +0.0005472149175, + +0.0004011475018, +0.0002189815922, +0.0000583313411, -0.0000949079608, + -0.0002335644274, -0.0002990676548, -0.0002407363137, -0.0001312455176, + -0.0000219937844, +0.0001020798470, +0.0002335644274, +0.0003210614392, + +0.0003793927803, +0.0004085584509, +0.0004011475018, +0.0003136504901, + +0.0001458283529, +0.0000729141764, +0.0001386564667, +0.0002335644274, + +0.0002699019842, +0.0002481472627, +0.0002189815922, +0.0002627300980, + +0.0003064786039, +0.0002115706431, +0.0000000000000, -0.0001824049725, + -0.0002990676548, -0.0003136504901, -0.0002115706431, -0.0000219937844, + +0.0001749940234, +0.0003064786039, +0.0003502271097, +0.0003282333254, + +0.0002261534784, +0.0001240736314, +0.0000000000000, -0.0001166626823, + -0.0000219937844, +0.0002627300980, +0.0005398039684, +0.0006567057136, + +0.0005398039684, +0.0002553191489, -0.0000511594549, -0.0003136504901, + -0.0003356442744, -0.0000437485059, +0.0003428161607, +0.0006275400430, + +0.0006858713842, +0.0004305522352, +0.0000219937844, -0.0002990676548, + -0.0003865646665, -0.0001824049725, +0.0001094907961, +0.0002553191489, + +0.0002918957686, +0.0003428161607, +0.0004743007411, +0.0006275400430, + +0.0006421228783, +0.0005106382979, +0.0003064786039, +0.0001020798470, + +0.0000949079608, +0.0003210614392, +0.0006055462587, +0.0006784604351, + +0.0004377241214, +0.0001532393019, +0.0000219937844, -0.0000365766197, + -0.0000219937844, +0.0001386564667, +0.0002773129333, +0.0002990676548, + +0.0002335644274, +0.0000729141764, -0.0000874970117, -0.0001312455176, + +0.0000291656706, +0.0004011475018, +0.0007659574468, +0.0008900310782, + +0.0007442027253, +0.0004451350705, +0.0000729141764, -0.0001749940234, + -0.0002553191489, -0.0002335644274, -0.0001969878078, -0.0001240736314, + -0.0000365766197, +0.0000657422902, +0.0001386564667, +0.0001312455176, + +0.0001312455176, +0.0001604111881, +0.0001824049725, +0.0001386564667, + +0.0000291656706, -0.0000949079608, -0.0001678221372, -0.0001166626823, + +0.0000583313411, +0.0002261534784, +0.0002918957686, +0.0003064786039, + +0.0003356442744, +0.0003282333254, +0.0002189815922, +0.0000949079608, + +0.0000511594549, +0.0000365766197, -0.0000511594549, -0.0001240736314, + -0.0000437485059, +0.0001166626823, +0.0002699019842, +0.0004231412862, + +0.0005252211332, +0.0005326320822, +0.0004523069567, +0.0002844848195, + +0.0001678221372, +0.0001678221372, +0.0001895768587, +0.0002041596940, + +0.0002189815922, +0.0002115706431, +0.0002041596940, +0.0002115706431, + +0.0002041596940, +0.0001824049725, +0.0001604111881, +0.0001386564667, + +0.0001604111881, +0.0002041596940, +0.0002041596940, +0.0002699019842, + +0.0004523069567, +0.0006347119292, +0.0007150370547, +0.0005763805881, + +0.0002261534784, -0.0001166626823, -0.0002844848195, -0.0001532393019, + +0.0002115706431, +0.0005909634234, +0.0007951231174, +0.0007296198900, + +0.0004743007411, +0.0002335644274, +0.0000874970117, +0.0000000000000, + -0.0000074109491, +0.0000437485059, +0.0000949079608, +0.0001166626823, + +0.0001386564667, +0.0001824049725, +0.0002189815922, +0.0002041596940, + +0.0002261534784, +0.0002990676548, +0.0003210614392, +0.0002481472627, + +0.0001458283529, +0.0000583313411, +0.0000291656706, +0.0000583313411, + +0.0001458283529, +0.0002773129333, +0.0003573989959, +0.0003502271097, + +0.0002918957686, +0.0002041596940, +0.0001532393019, +0.0001532393019, + +0.0001678221372, +0.0001824049725, +0.0002481472627, +0.0002990676548, + +0.0003064786039, +0.0002699019842, +0.0001895768587, +0.0000949079608, + +0.0000219937844, +0.0000000000000, +0.0000145828353, +0.0001312455176, + +0.0002990676548, +0.0003064786039, +0.0001678221372, +0.0000583313411, + +0.0000437485059, +0.0000874970117, +0.0001458283529, +0.0001969878078, + +0.0002699019842, +0.0003502271097, +0.0004011475018, +0.0003502271097, + +0.0001969878078, +0.0000583313411, -0.0000583313411, -0.0001458283529, + -0.0001312455176, -0.0000949079608, -0.0000511594549, +0.0000074109491, + +0.0000219937844, -0.0000437485059, -0.0001749940234, -0.0002918957686, + -0.0002699019842, -0.0000949079608, +0.0000803251255, +0.0001895768587, + +0.0002189815922, +0.0002041596940, +0.0001532393019, +0.0001386564667, + +0.0001678221372, +0.0001749940234, +0.0001240736314, +0.0000365766197, + -0.0000511594549, -0.0000657422902, -0.0000074109491, +0.0000583313411, + +0.0000949079608, +0.0000657422902, +0.0000074109491, +0.0000291656706, + +0.0000874970117, +0.0000803251255, +0.0000291656706, +0.0000511594549, + +0.0001604111881, +0.0002773129333, +0.0002844848195, +0.0001604111881, + -0.0000219937844, -0.0001824049725, -0.0002041596940, -0.0000729141764, + +0.0001094907961, +0.0002553191489, +0.0002699019842, +0.0001824049725, + +0.0001020798470, +0.0000729141764, +0.0000874970117, +0.0000803251255, + -0.0000291656706, -0.0001749940234, -0.0002627300980, -0.0002481472627, + -0.0000949079608, +0.0000511594549, +0.0000729141764, +0.0000074109491, + -0.0001312455176, -0.0002261534784, -0.0001604111881, +0.0000000000000, + +0.0001386564667, +0.0001678221372, +0.0000437485059, -0.0001386564667, + -0.0003064786039, -0.0003939756156, -0.0002990676548, -0.0001094907961, + +0.0000511594549, +0.0000657422902, -0.0000874970117, -0.0002189815922, + -0.0002918957686, -0.0002844848195, -0.0001969878078, -0.0001386564667, + -0.0001094907961, -0.0000437485059, -0.0000219937844, -0.0000437485059, + -0.0000803251255, -0.0001749940234, -0.0002627300980, -0.0003282333254, + -0.0003648099450, -0.0003793927803, -0.0003428161607, -0.0002261534784, + -0.0001020798470, +0.0000000000000, +0.0000803251255, +0.0000657422902, + -0.0000437485059, -0.0001895768587, -0.0002844848195, -0.0002407363137, + -0.0001094907961, +0.0000219937844, +0.0001020798470, +0.0001094907961, + +0.0000365766197, -0.0001094907961, -0.0002627300980, -0.0003136504901, + -0.0003064786039, -0.0002189815922, -0.0000803251255, +0.0000000000000, + +0.0000365766197, +0.0000729141764, +0.0000874970117, +0.0000511594549, + -0.0000511594549, -0.0001604111881, -0.0002261534784, -0.0003064786039, + -0.0003428161607, -0.0002990676548, -0.0002481472627, -0.0002407363137, + -0.0002699019842, -0.0003210614392, -0.0003064786039, -0.0002189815922, + -0.0001166626823, -0.0000365766197, -0.0000219937844, -0.0000365766197, + -0.0000583313411, -0.0001312455176, -0.0001895768587, -0.0002189815922, + -0.0002261534784, -0.0002115706431, -0.0002041596940, -0.0002115706431, + -0.0001969878078, -0.0001312455176, -0.0000219937844, +0.0000511594549, + +0.0000583313411, +0.0000074109491, -0.0000949079608, -0.0002115706431, + -0.0002699019842, -0.0003064786039, -0.0002918957686, -0.0001969878078, + -0.0001166626823, -0.0000874970117, -0.0000874970117, -0.0000511594549, + +0.0000803251255, +0.0001824049725, +0.0001166626823, -0.0000511594549, + -0.0002699019842, -0.0004159694000, -0.0004451350705, -0.0004231412862, + -0.0003064786039, -0.0001678221372, -0.0001240736314, -0.0001166626823, + -0.0000949079608, -0.0000365766197, +0.0000365766197, -0.0000074109491, + -0.0001749940234, -0.0003282333254, -0.0003939756156, -0.0003136504901, + -0.0001386564667, +0.0000074109491, +0.0000874970117, +0.0000657422902, + -0.0000583313411, -0.0002553191489, -0.0004377241214, -0.0004668897920, + -0.0002990676548, -0.0000657422902, +0.0000657422902, +0.0000511594549, + -0.0000437485059, -0.0001312455176, -0.0001532393019, -0.0001678221372, + -0.0001678221372, -0.0001386564667, -0.0001312455176, -0.0001895768587, + -0.0002844848195, -0.0003573989959, -0.0002844848195, -0.0001312455176, + +0.0000219937844, +0.0001240736314, +0.0001532393019, +0.0001020798470, + +0.0000074109491, -0.0000511594549, -0.0000657422902, -0.0000874970117, + -0.0001604111881, -0.0002481472627, -0.0003210614392, -0.0003502271097, + -0.0003719818312, -0.0003356442744, -0.0002481472627, -0.0001604111881, + -0.0000511594549, +0.0000803251255, +0.0002553191489, +0.0003865646665, + +0.0003573989959, +0.0001604111881, -0.0000803251255, -0.0002481472627, + -0.0002627300980, -0.0001604111881, -0.0000291656706, +0.0000803251255, + +0.0000583313411, -0.0001166626823, -0.0003136504901, -0.0003793927803, + -0.0002844848195, -0.0001240736314, -0.0000365766197, -0.0000365766197, + -0.0001604111881, -0.0003356442744, -0.0004085584509, -0.0003064786039, + -0.0001094907961, -0.0000145828353, -0.0000729141764, -0.0002041596940, + -0.0003210614392, -0.0003064786039, -0.0001240736314, +0.0001094907961, + +0.0002773129333, +0.0003136504901, +0.0002115706431, +0.0000803251255, + -0.0000291656706, -0.0001094907961, -0.0001604111881, -0.0002553191489, + -0.0003793927803, -0.0004523069567, -0.0004668897920, -0.0003719818312, + -0.0002189815922, -0.0000657422902, +0.0000949079608, +0.0001532393019, + +0.0000365766197, -0.0001020798470, -0.0001824049725, -0.0001749940234, + -0.0000803251255, +0.0000074109491, +0.0000949079608, +0.0001604111881, + +0.0001532393019, +0.0000511594549, -0.0000874970117, -0.0001604111881, + -0.0001240736314, -0.0000365766197, +0.0000511594549, +0.0001166626823, + +0.0001240736314, +0.0000803251255, -0.0000291656706, -0.0001604111881, + -0.0002041596940, -0.0002261534784, -0.0002844848195, -0.0003356442744, + -0.0003136504901, -0.0002189815922, -0.0000803251255, +0.0000657422902, + +0.0001824049725, +0.0002481472627, +0.0002481472627, +0.0001678221372, + +0.0000657422902, +0.0000000000000, -0.0000949079608, -0.0001969878078, + -0.0001824049725, -0.0000583313411, +0.0000291656706, +0.0000291656706, + -0.0000074109491, -0.0000803251255, -0.0001824049725, -0.0002553191489, + -0.0002481472627, -0.0001240736314, +0.0001020798470, +0.0003502271097, + +0.0004377241214, +0.0003502271097, +0.0001166626823, -0.0001678221372, + -0.0003793927803, -0.0003865646665, -0.0002041596940, +0.0000145828353, + +0.0001240736314, +0.0000365766197, -0.0001678221372, -0.0003428161607, + -0.0003428161607, -0.0001604111881, +0.0001240736314, +0.0003648099450, + +0.0004231412862, +0.0003064786039, +0.0001458283529, +0.0000437485059, + -0.0000074109491, -0.0000583313411, -0.0001386564667, -0.0002335644274, + -0.0002627300980, -0.0002189815922, -0.0001166626823, +0.0000074109491, + +0.0001094907961, +0.0001749940234, +0.0001678221372, +0.0000803251255, + +0.0000365766197, +0.0000729141764, +0.0001386564667, +0.0002041596940, + +0.0002041596940, +0.0001094907961, -0.0000145828353, -0.0001312455176, + -0.0001749940234, -0.0001020798470, -0.0000145828353, +0.0000074109491, + +0.0000000000000, -0.0000145828353, -0.0000074109491, +0.0000219937844, + +0.0000437485059, +0.0000365766197, +0.0000145828353, -0.0000365766197, + -0.0000657422902, -0.0000074109491, +0.0000874970117, +0.0001678221372, + +0.0001895768587, +0.0001240736314, +0.0000000000000, -0.0001678221372, + -0.0002773129333, -0.0002407363137, -0.0000803251255, +0.0001458283529, + +0.0003502271097, +0.0004231412862, +0.0003648099450, +0.0002115706431, + +0.0000074109491, -0.0001312455176, -0.0002041596940, -0.0002115706431, + -0.0001240736314, +0.0000000000000, +0.0001240736314, +0.0002115706431, + +0.0002041596940, +0.0001312455176, +0.0000145828353, -0.0000949079608, + -0.0001532393019, -0.0001166626823, -0.0000219937844, +0.0000437485059, + +0.0001094907961, +0.0001678221372, +0.0002115706431, +0.0002773129333, + +0.0003282333254, +0.0003210614392, +0.0002335644274, +0.0000365766197, + -0.0001678221372, -0.0003136504901, -0.0003648099450, -0.0002918957686, + -0.0001166626823, +0.0000219937844, +0.0001020798470, +0.0000949079608, + +0.0000365766197, -0.0000074109491, -0.0000219937844, +0.0000219937844, + +0.0001020798470, +0.0001458283529, +0.0001749940234, +0.0001386564667, + +0.0000291656706, -0.0000437485059, -0.0000874970117, -0.0001240736314, + -0.0001166626823, -0.0000803251255, -0.0000145828353, +0.0000657422902, + +0.0001604111881, +0.0002261534784, +0.0002041596940, +0.0001604111881, + +0.0001458283529, +0.0001458283529, +0.0001386564667, +0.0001020798470, + +0.0000511594549, +0.0000219937844, +0.0000583313411, +0.0001532393019, + +0.0002699019842, +0.0003502271097, +0.0003282333254, +0.0002335644274, + +0.0001166626823, -0.0000145828353, -0.0001312455176, -0.0001240736314, + -0.0000145828353, +0.0000583313411, +0.0000437485059, -0.0000219937844, + -0.0000437485059, +0.0000000000000, +0.0000874970117, +0.0001969878078, + +0.0002699019842, +0.0002553191489, +0.0001532393019, +0.0000365766197, + -0.0000437485059, -0.0000803251255, -0.0000803251255, -0.0000437485059, + +0.0000145828353, +0.0000657422902, +0.0001094907961, +0.0001240736314, + +0.0001094907961, +0.0001020798470, +0.0000949079608, +0.0001166626823, + +0.0001824049725, +0.0002115706431, +0.0002261534784, +0.0002041596940, + +0.0001386564667, +0.0000803251255, +0.0000074109491, -0.0000291656706, + +0.0000000000000, +0.0000074109491, +0.0000000000000, -0.0000365766197, + -0.0000803251255, -0.0000803251255, -0.0000583313411, -0.0000803251255, + -0.0000803251255, -0.0000074109491, +0.0001020798470, +0.0002261534784, + +0.0002844848195, +0.0002627300980, +0.0001969878078, +0.0001678221372, + +0.0002115706431, +0.0003064786039, +0.0004085584509, +0.0004743007411, + +0.0004377241214, +0.0002627300980, +0.0000219937844, -0.0001166626823, + -0.0000874970117, +0.0000949079608, +0.0002773129333, +0.0003210614392, + +0.0001969878078, +0.0000437485059, +0.0000000000000, +0.0000437485059, + +0.0001458283529, +0.0002553191489, +0.0003356442744, +0.0003064786039, + +0.0001969878078, +0.0001312455176, +0.0001386564667, +0.0001604111881, + +0.0001969878078, +0.0002115706431, +0.0001749940234, +0.0001678221372, + +0.0002261534784, +0.0002990676548, +0.0003282333254, +0.0003210614392, + +0.0003210614392, +0.0002990676548, +0.0002335644274, +0.0001824049725, + +0.0001604111881, +0.0001969878078, +0.0002699019842, +0.0002990676548, + +0.0002335644274, +0.0000949079608, -0.0000437485059, -0.0001678221372, + -0.0001895768587, -0.0001020798470, +0.0000291656706, +0.0001678221372, + +0.0002699019842, +0.0002627300980, +0.0001458283529, +0.0000291656706, + +0.0000000000000, +0.0000874970117, +0.0001969878078, +0.0002627300980, + +0.0002335644274, +0.0000729141764, -0.0000729141764, -0.0000949079608, + +0.0000219937844, +0.0002335644274, +0.0003793927803, +0.0003428161607, + +0.0001895768587, +0.0000511594549, -0.0000074109491, -0.0000145828353, + -0.0000074109491, -0.0000219937844, -0.0000365766197, -0.0000583313411, + -0.0000437485059, -0.0000219937844, -0.0000145828353, -0.0000291656706, + -0.0000657422902, -0.0001020798470, -0.0001094907961, -0.0000657422902, + +0.0000291656706, +0.0001166626823, +0.0001020798470, +0.0000000000000, + -0.0001166626823, -0.0001458283529, -0.0000511594549, +0.0001312455176, + +0.0002844848195, +0.0003356442744, +0.0002335644274, +0.0000145828353, + -0.0001458283529, -0.0001749940234, -0.0001312455176, -0.0000874970117, + -0.0000949079608, -0.0001678221372, -0.0001895768587, -0.0001020798470, + +0.0000000000000, +0.0000437485059, +0.0000000000000, -0.0000803251255, + -0.0001386564667, -0.0001240736314, -0.0000365766197, +0.0000511594549, + +0.0000874970117, +0.0000437485059, -0.0000365766197, -0.0001532393019, + -0.0002115706431, -0.0001749940234, -0.0000803251255, +0.0000291656706, + +0.0001240736314, +0.0001678221372, +0.0001678221372, +0.0001312455176, + +0.0000729141764, +0.0000000000000, -0.0000583313411, -0.0000511594549, + +0.0000000000000, +0.0000219937844, -0.0000145828353, -0.0001094907961, + -0.0002115706431, -0.0002773129333, -0.0003064786039, -0.0002990676548, + -0.0002115706431, -0.0000657422902, +0.0000511594549, +0.0001020798470, + +0.0000583313411, -0.0000365766197, -0.0001532393019, -0.0002189815922, + -0.0001895768587, -0.0001386564667, -0.0001386564667, -0.0001312455176, + -0.0000949079608, -0.0000511594549, -0.0000291656706, -0.0000145828353, + +0.0000000000000, +0.0000291656706, +0.0000511594549, +0.0000291656706, + -0.0000291656706, -0.0000729141764, -0.0000874970117, -0.0000874970117, + -0.0001094907961, -0.0001386564667, -0.0001312455176, -0.0000949079608, + -0.0000949079608, -0.0001240736314, -0.0001240736314, -0.0000949079608, + -0.0000074109491, +0.0000874970117, +0.0001386564667, +0.0001166626823, + +0.0000437485059, -0.0000437485059, -0.0000729141764, -0.0000729141764, + -0.0000657422902, -0.0000291656706, +0.0000000000000, +0.0000000000000, + +0.0000291656706, +0.0000874970117, +0.0001824049725, +0.0002773129333, + +0.0003356442744, +0.0003282333254, +0.0002261534784, +0.0000583313411, + -0.0000949079608, -0.0002115706431, -0.0002189815922, -0.0000729141764, + +0.0001166626823, +0.0002189815922, +0.0001969878078, +0.0000874970117, + +0.0000291656706, +0.0000657422902, +0.0001386564667, +0.0002189815922, + +0.0002407363137, +0.0001824049725, +0.0000949079608, -0.0000145828353, + -0.0001166626823, -0.0001312455176, -0.0000874970117, -0.0000291656706, + +0.0000437485059, +0.0001094907961, +0.0001458283529, +0.0001386564667, + +0.0001094907961, +0.0000583313411, +0.0000000000000, -0.0000365766197, + -0.0000365766197, -0.0000074109491, +0.0000291656706, +0.0000583313411, + +0.0000511594549, +0.0000145828353, -0.0000365766197, -0.0000729141764, + -0.0000803251255, -0.0000437485059, +0.0000000000000, +0.0000291656706, + +0.0000074109491, -0.0000365766197, -0.0000874970117, -0.0000874970117, + +0.0000074109491, +0.0001094907961, +0.0001312455176, +0.0000729141764, + +0.0000000000000, -0.0000511594549, -0.0001020798470, -0.0001749940234, + -0.0001969878078, -0.0001604111881, -0.0000729141764, +0.0000219937844, + +0.0001020798470, +0.0001386564667, +0.0001166626823, +0.0000219937844, + -0.0000729141764, -0.0001532393019, -0.0001969878078, -0.0001604111881, + -0.0000874970117, -0.0000291656706, +0.0000000000000, -0.0000291656706, + -0.0001020798470, -0.0001240736314, -0.0000729141764, +0.0000000000000, + +0.0000291656706, +0.0000074109491, -0.0000219937844, -0.0000365766197, + -0.0000365766197, -0.0000219937844, -0.0000145828353, -0.0000219937844, + -0.0000145828353, +0.0000145828353, +0.0000291656706, +0.0000074109491, + -0.0000291656706, -0.0000583313411, -0.0000803251255, -0.0000729141764, + -0.0000437485059, -0.0000365766197, -0.0000874970117, -0.0001824049725, + -0.0002335644274, -0.0001969878078, -0.0000803251255, +0.0000365766197, + +0.0001166626823, +0.0001240736314, +0.0000511594549, -0.0000583313411, + -0.0001458283529, -0.0001895768587, -0.0001895768587, -0.0001604111881, + -0.0001166626823, -0.0001020798470, -0.0000874970117, -0.0000365766197, + +0.0000291656706, +0.0000803251255, +0.0000729141764, +0.0000000000000, + -0.0000874970117, -0.0001458283529, -0.0001312455176, -0.0000657422902, + -0.0000291656706, -0.0000803251255, -0.0001969878078, -0.0002990676548, + -0.0003136504901, -0.0002335644274, -0.0000874970117, +0.0000583313411, + +0.0001532393019, +0.0001604111881, +0.0001386564667, +0.0001094907961, + +0.0000803251255, +0.0000365766197, -0.0000365766197, -0.0001312455176, + -0.0001749940234, -0.0001458283529, -0.0000803251255, +0.0000000000000, + +0.0000583313411, +0.0000437485059, -0.0000291656706, -0.0001094907961, + -0.0001604111881, -0.0001532393019, -0.0000949079608, -0.0000291656706, + +0.0000000000000, -0.0000219937844, -0.0000874970117, -0.0001458283529, + -0.0001824049725, -0.0001678221372, -0.0001020798470, -0.0000219937844, + +0.0000365766197, +0.0000803251255, +0.0000729141764, +0.0000291656706, + -0.0000511594549, -0.0001532393019, -0.0002261534784, -0.0002553191489, + -0.0002115706431, -0.0000874970117, +0.0000657422902, +0.0001824049725, + +0.0002115706431, +0.0001458283529, +0.0000219937844, -0.0001094907961, + -0.0002189815922, -0.0002773129333, -0.0002918957686, -0.0002335644274, + -0.0001094907961, +0.0000000000000, +0.0000437485059, +0.0000657422902, + +0.0000511594549, +0.0000219937844, -0.0000219937844, -0.0000729141764, + -0.0000657422902, -0.0000291656706, +0.0000000000000, +0.0000145828353, + +0.0000145828353, +0.0000074109491, +0.0000000000000, +0.0000000000000, + +0.0000000000000 +}; diff --git a/plugins/ladspa_effect/swh/impulses/14-fender-superchamp-at4050.h b/plugins/ladspa_effect/swh/impulses/14-fender-superchamp-at4050.h new file mode 100644 index 000000000..09d7e887f --- /dev/null +++ b/plugins/ladspa_effect/swh/impulses/14-fender-superchamp-at4050.h @@ -0,0 +1,825 @@ +float fender_superchamp_at4050[] = { + -0.0001856447689, -0.0002525547445, -0.0002525547445, -0.0001632603406, + -0.0000075425791, +0.0001484184915, +0.0002822384428, +0.0003340632603, + +0.0002822384428, +0.0001484184915, -0.0000148418491, -0.0001781021898, + -0.0002673965937, -0.0002598540146, -0.0001708029197, -0.0000296836983, + +0.0001114355231, +0.0002153284672, +0.0002450121655, +0.0002004866180, + +0.0001114355231, +0.0000000000000, -0.0000742092457, -0.0001114355231, + -0.0000817518248, -0.0000148418491, +0.0000742092457, +0.0001559610706, + +0.0002228710462, +0.0002598540146, +0.0002673965937, +0.0002598540146, + +0.0002301703163, +0.0001929440389, +0.0001559610706, +0.0001114355231, + +0.0000742092457, +0.0000445255474, +0.0000296836983, +0.0000372262774, + +0.0000669099757, +0.0001187347932, +0.0001632603406, +0.0002004866180, + +0.0002153284672, +0.0002077858881, +0.0001781021898, +0.0001484184915, + +0.0001187347932, +0.0001114355231, +0.0001187347932, +0.0001411192214, + +0.0001708029197, +0.0001856447689, +0.0001856447689, +0.0001632603406, + +0.0001262773723, +0.0000742092457, +0.0000296836983, +0.0000000000000, + +0.0000000000000, +0.0000148418491, +0.0000593673966, +0.0001038929440, + +0.0001335766423, +0.0001262773723, +0.0000742092457, -0.0000075425791, + -0.0001262773723, -0.0002377128954, -0.0003043795620, -0.0003043795620, + -0.0002301703163, -0.0000817518248, +0.0000965936740, +0.0002673965937, + +0.0003861313869, +0.0004158150852, +0.0003416058394, +0.0001929440389, + +0.0000075425791, -0.0001484184915, -0.0002450121655, -0.0002525547445, + -0.0001856447689, -0.0000817518248, +0.0000075425791, +0.0000445255474, + +0.0000223844282, -0.0000445255474, -0.0001411192214, -0.0002004866180, + -0.0001856447689, -0.0000817518248, +0.0000890510949, +0.0002822384428, + +0.0004381995134, +0.0005048661800, +0.0004530413625, +0.0002895377129, + +0.0000593673966, -0.0001708029197, -0.0003416058394, -0.0003934306569, + -0.0003192214112, -0.0001411192214, +0.0000742092457, +0.0002822384428, + +0.0004233576642, +0.0004603406326, +0.0004082725061, +0.0002970802920, + +0.0001708029197, +0.0000742092457, +0.0000223844282, +0.0000223844282, + +0.0000445255474, +0.0000669099757, +0.0000742092457, +0.0000520681265, + +0.0000296836983, +0.0000223844282, +0.0000669099757, +0.0001632603406, + +0.0003043795620, +0.0004454987835, +0.0005493917275, +0.0005642335766, + +0.0004751824818, +0.0003043795620, +0.0000890510949, -0.0000965936740, + -0.0002077858881, -0.0002004866180, -0.0000890510949, +0.0000965936740, + +0.0002970802920, +0.0004454987835, +0.0005048661800, +0.0004603406326, + +0.0003416058394, +0.0001929440389, +0.0000593673966, -0.0000223844282, + -0.0000593673966, -0.0000520681265, -0.0000223844282, -0.0000075425791, + -0.0000148418491, -0.0000296836983, -0.0000445255474, -0.0000445255474, + -0.0000148418491, +0.0000372262774, +0.0001038929440, +0.0001632603406, + +0.0002077858881, +0.0002153284672, +0.0001856447689, +0.0001262773723, + +0.0000296836983, -0.0000965936740, -0.0002450121655, -0.0003934306569, + -0.0005124087591, -0.0005642335766, -0.0005345498783, -0.0004233576642, + -0.0002450121655, -0.0000445255474, +0.0001262773723, +0.0002301703163, + +0.0002450121655, +0.0001856447689, +0.0000817518248, +0.0000000000000, + -0.0000372262774, +0.0000000000000, +0.0000965936740, +0.0002004866180, + +0.0002377128954, +0.0001632603406, -0.0000372262774, -0.0003340632603, + -0.0006311435523, -0.0008389294404, -0.0008909975669, -0.0007647201946, + -0.0004900243309, -0.0001411192214, +0.0001856447689, +0.0004454987835, + +0.0006163017032, +0.0006980535280, +0.0007350364964, +0.0007425790754, + +0.0007350364964, +0.0006608272506, +0.0005124087591, +0.0002525547445, + -0.0000817518248, -0.0004233576642, -0.0006905109489, -0.0008019464720, + -0.0007128953771, -0.0004454987835, -0.0000890510949, +0.0002450121655, + +0.0004751824818, +0.0005345498783, +0.0004454987835, +0.0002673965937, + +0.0000965936740, +0.0000223844282, +0.0000742092457, +0.0002377128954, + +0.0004454987835, +0.0006087591241, +0.0006608272506, +0.0005790754258, + +0.0004009732360, +0.0001929440389, +0.0000148418491, -0.0000890510949, + -0.0001335766423, -0.0001335766423, -0.0001187347932, -0.0001187347932, + -0.0001335766423, -0.0001335766423, -0.0001038929440, -0.0000520681265, + -0.0000223844282, -0.0000593673966, -0.0002077858881, -0.0004751824818, + -0.0007871046229, -0.0010394160584, -0.0010990267640, -0.0008688564477, + -0.0003564476886, +0.0003267639903, +0.0009948905109, +0.0014479318735, + +0.0015148418491, +0.0011732360097, +0.0004900243309, -0.0003637469586, + -0.0011953771290, -0.0018043795620, -0.0021681265207, -0.0022053527981, + -0.0020270072993, -0.0017968369830, -0.0012474452555, -0.0008909975669, + -0.0005124087591, -0.0000593673966, +0.0003416058394, +0.0004975669100, + +0.0004603406326, +0.0001632603406, -0.0002377128954, -0.0007277372263, + -0.0010469586375, -0.0012029197080, -0.0010990267640, -0.0008316301703, + -0.0004900243309, -0.0002895377129, -0.0003119221411, -0.0006683698297, + -0.0011211678832, -0.0016111922141, -0.0018489051095, -0.0017819951338, + -0.0012846715328, -0.0007425790754, -0.0003340632603, -0.0002895377129, + -0.0006683698297, -0.0013958637470, -0.0023834549878, -0.0031705596107, + -0.0039352798054, -0.0044849148418, -0.0047520681265, -0.0061927007299, + -0.0072545012165, -0.0064377128954, -0.0117391727494, -0.0032077858881, + -0.0139072992701, -0.0164839416058, +0.0107963503650, +0.0530009732360, + +0.0273693430657, -0.0973666666667, -0.1174815085158, -0.0292255474453, + -0.0016632603406, +0.0869343065693, +0.2263053527981, +0.2432941605839, + +0.1944883211679, +0.0872090024331, -0.0263075425791, -0.0628097323601, + -0.0949905109489, -0.0983318734793, -0.0663961070560, -0.0642503649635, + -0.0502686131387, -0.0482192214112, -0.0187262773723, +0.0372892944039, + +0.0546866180049, +0.0601218978102, +0.0607975669100, +0.0236715328467, + +0.0058583941606, +0.0056727493917, +0.0018413625304, +0.0113233576642, + +0.0026581508516, -0.0215182481752, -0.0327673965937, -0.0295447688564, + -0.0244289537713, -0.0080637469586, +0.0019454987835, +0.0065712895377, + +0.0089326034063, +0.0041581508516, +0.0051457420925, +0.0004900243309, + -0.0086355231144, -0.0047744525547, -0.0107815085158, -0.0255798053528, + -0.0173304136253, -0.0189936739659, -0.0248669099757, -0.0149321167883, + -0.0088063260341, -0.0054574209246, -0.0088211678832, -0.0115907542579, + -0.0088284671533, -0.0113827250608, -0.0082717761557, +0.0028513381995, + +0.0040094890511, +0.0065043795620, +0.0035270072993, +0.0014255474453, + +0.0080934306569, +0.0032892944039, +0.0018934306569, +0.0044552311436, + -0.0059180048662, -0.0196768856448, -0.0281340632603, -0.0248372262774, + -0.0158527980535, -0.0158900243309, -0.0149469586375, -0.0052941605839, + +0.0010618004866, +0.0094299270073, +0.0096452554745, +0.0079153284672, + +0.0075885644769, -0.0019527980535, -0.0079077858881, -0.0110931873479, + -0.0188452554745, -0.0179391727494, -0.0128454987835, -0.0116798053528, + -0.0075068126521, -0.0090958637470, -0.0106403892944, -0.0089771289538, + -0.0078708029197, -0.0043883211679, -0.0000593673966, -0.0022350364964, + -0.0046109489051, -0.0066454987835, -0.0118951338200, -0.0135435523114, + -0.0073805352798, +0.0009727493917, +0.0081973236010, +0.0096304136253, + +0.0054204379562, -0.0003637469586, -0.0080564476886, -0.0102839416058, + -0.0043734793187, +0.0013737226277, +0.0010693430657, -0.0030963503650, + -0.0056357664234, -0.0084126520681, -0.0128158150852, -0.0133727493917, + -0.0125931873479, -0.0122440389294, -0.0091403892944, -0.0056282238443, + -0.0035939172749, -0.0036309002433, -0.0030963503650, -0.0010245742092, + +0.0017598540146, +0.0062593673966, +0.0092815085158, +0.0107963503650, + +0.0139520681265, +0.0126377128954, +0.0068311435523, +0.0015369829684, + -0.0046184914842, -0.0088284671533, -0.0132094890511, -0.0162610705596, + -0.0138257907543, -0.0102245742092, -0.0069128953771, -0.0034379562044, + -0.0032968369830, -0.0023017031630, -0.0009579075426, -0.0008389294404, + +0.0011287104623, +0.0034155717762, +0.0048189781022, +0.0059922141119, + +0.0058956204380, +0.0065564476886, +0.0073583941606, +0.0059773722628, + +0.0047892944039, +0.0043734793187, +0.0035863746959, +0.0033041362530, + +0.0035566909976, +0.0032596107056, +0.0032447688564, +0.0045145985401, + +0.0063486618005, +0.0069277372263, +0.0062965936740, +0.0061406326034, + +0.0067866180049, +0.0067345498783, +0.0057620437956, +0.0035343065693, + +0.0023834549878, +0.0038313868613, +0.0047965936740, +0.0045961070560, + +0.0045664233577, +0.0050715328467, +0.0051309002433, +0.0035046228710, + +0.0012029197080, -0.0010245742092, -0.0009133819951, +0.0032671532847, + +0.0092815085158, +0.0135732360097, +0.0142637469586, +0.0118654501217, + +0.0093929440389, +0.0067124087591, +0.0032002433090, +0.0010024330900, + +0.0010321167883, +0.0014107055961, +0.0027474452555, +0.0050564476886, + +0.0063708029197, +0.0082270072993, +0.0099126520681, +0.0108260340633, + +0.0100313868613, +0.0076406326034, +0.0076257907543, +0.0091924574209, + +0.0073435523114, +0.0053017031630, +0.0053165450122, +0.0068386861314, + +0.0087914841849, +0.0068386861314, +0.0026063260341, +0.0004454987835, + -0.0001335766423, +0.0016335766423, +0.0048411192214, +0.0069871046229, + +0.0090437956204, +0.0099126520681, +0.0078484184915, +0.0050119221411, + +0.0031184914842, +0.0014107055961, +0.0003192214112, +0.0003340632603, + +0.0009800486618, +0.0031408759124, +0.0056357664234, +0.0073583941606, + +0.0081824817518, +0.0068014598540, +0.0044552311436, +0.0032523114355, + +0.0040987834550, +0.0051233576642, +0.0046705596107, +0.0051902676399, + +0.0057768856448, +0.0036457420925, +0.0012622871046, -0.0002746958637, + -0.0013661800487, -0.0023017031630, -0.0031184914842, -0.0028661800487, + -0.0010024330900, +0.0021608272506, +0.0050639902676, +0.0059328467153, + +0.0061182481752, +0.0066454987835, +0.0070836982968, +0.0060737226277, + +0.0030221411192, -0.0003934306569, -0.0030442822384, -0.0045145985401, + -0.0039725060827, -0.0013810218978, +0.0007871046229, +0.0010693430657, + +0.0013513381995, +0.0016484184915, +0.0010097323601, +0.0009875912409, + +0.0009727493917, -0.0000372262774, -0.0002895377129, -0.0000223844282, + +0.0002525547445, +0.0007277372263, +0.0001335766423, -0.0006683698297, + -0.0010841849148, -0.0013216545012, -0.0018858880779, -0.0032596107056, + -0.0036605839416, -0.0024948905109, -0.0015593673966, -0.0010766423358, + +0.0001929440389, +0.0008836982968, +0.0002895377129, -0.0001708029197, + -0.0015666666667, -0.0028289537713, -0.0032002433090, -0.0039725060827, + -0.0041878345499, -0.0045812652068, -0.0058956204380, -0.0057323600973, + -0.0049673965937, -0.0030739659367, -0.0001781021898, +0.0017671532847, + +0.0039576642336, +0.0047150851582, +0.0021978102190, -0.0011880778589, + -0.0044625304136, -0.0067345498783, -0.0068535279805, -0.0062965936740, + -0.0044922141119, -0.0016335766423, +0.0010394160584, +0.0018934306569, + +0.0004009732360, -0.0016929440389, -0.0030518248175, -0.0042992700730, + -0.0041802919708, -0.0027919708029, -0.0028141119221, -0.0027026763990, + -0.0018340632603, -0.0012399026764, -0.0002746958637, +0.0001411192214, + +0.0002377128954, -0.0006535279805, -0.0031854014599, -0.0039352798054, + -0.0033116788321, -0.0036236009732, -0.0032819951338, -0.0028437956204, + -0.0014700729927, +0.0008836982968, +0.0011953771290, +0.0009652068127, + -0.0007498783455, -0.0030369829684, -0.0028437956204, -0.0030369829684, + -0.0039131386861, -0.0035639902676, -0.0038982968370, -0.0031781021898, + -0.0017895377129, -0.0023537712895, -0.0021384428224, -0.0013440389294, + -0.0012399026764, -0.0003637469586, -0.0001038929440, -0.0008688564477, + -0.0005197080292, -0.0003192214112, -0.0002822384428, +0.0003861313869, + +0.0008240875912, +0.0012102189781, +0.0007795620438, +0.0006608272506, + +0.0016111922141, +0.0012698296837, +0.0004009732360, -0.0003564476886, + -0.0013885644769, -0.0019306569343, -0.0024131386861, -0.0020790754258, + -0.0017077858881, -0.0022053527981, -0.0012177615572, +0.0005866180049, + +0.0015890510949, +0.0021459854015, +0.0013588807786, +0.0001262773723, + -0.0005790754258, -0.0010990267640, -0.0008316301703, -0.0006756690998, + -0.0011435523114, -0.0012399026764, -0.0013588807786, -0.0013068126521, + -0.0004751824818, +0.0005048661800, +0.0011880778589, +0.0015518248175, + +0.0015890510949, +0.0016557177616, +0.0014034063260, +0.0008389294404, + +0.0008540145985, +0.0007201946472, +0.0006459854015, +0.0013588807786, + +0.0016260340633, +0.0011138686131, +0.0002895377129, -0.0007647201946, + -0.0010914841849, -0.0008761557178, -0.0012474452555, -0.0017598540146, + -0.0017523114355, -0.0013958637470, -0.0007128953771, -0.0000520681265, + +0.0005717761557, +0.0012474452555, +0.0012399026764, +0.0011656934307, + +0.0013291970803, +0.0007425790754, +0.0001411192214, -0.0004082725061, + -0.0004975669100, +0.0008985401460, +0.0020121654501, +0.0024873479319, + +0.0026729927007, +0.0020790754258, +0.0019603406326, +0.0016260340633, + +0.0006535279805, +0.0000593673966, -0.0009058394161, -0.0012102189781, + -0.0004381995134, +0.0005866180049, +0.0014182481752, +0.0012326034063, + +0.0010542579075, +0.0006832116788, -0.0009727493917, -0.0014107055961, + -0.0011063260341, -0.0017746958637, -0.0020642335766, -0.0016260340633, + -0.0009727493917, -0.0005124087591, -0.0003712895377, +0.0000445255474, + +0.0008688564477, +0.0013588807786, +0.0021905109489, +0.0031036496350, + +0.0027474452555, +0.0021608272506, +0.0012846715328, -0.0002377128954, + -0.0009800486618, -0.0011656934307, -0.0011211678832, -0.0006236009732, + -0.0006311435523, -0.0007574209246, -0.0007350364964, -0.0010841849148, + -0.0005345498783, +0.0003043795620, +0.0006163017032, +0.0010542579075, + +0.0013440389294, +0.0010990267640, +0.0000669099757, -0.0012698296837, + -0.0020863746959, -0.0022053527981, -0.0019306569343, -0.0013885644769, + -0.0005493917275, +0.0000965936740, +0.0003043795620, +0.0002525547445, + +0.0000000000000, -0.0004751824818, -0.0008240875912, -0.0007944038929, + -0.0005717761557, -0.0001781021898, -0.0001708029197, -0.0005345498783, + -0.0004233576642, -0.0005717761557, -0.0008464720195, -0.0007425790754, + -0.0012474452555, -0.0019231143552, -0.0022647201946, -0.0022868613139, + -0.0013364963504, -0.0007944038929, -0.0011508515815, -0.0012326034063, + -0.0015221411192, -0.0015815085158, -0.0013068126521, -0.0014627737226, + -0.0013958637470, -0.0013810218978, -0.0019751824818, -0.0023834549878, + -0.0026508515815, -0.0025245742092, -0.0017004866180, -0.0007795620438, + +0.0002004866180, +0.0008613138686, +0.0006014598540, +0.0004900243309, + +0.0007128953771, +0.0002822384428, -0.0008167883212, -0.0018413625304, + -0.0023092457421, -0.0028364963504, -0.0033041362530, -0.0032374695864, + -0.0033116788321, -0.0029180048662, -0.0017598540146, -0.0010618004866, + -0.0008389294404, -0.0013885644769, -0.0020270072993, -0.0019306569343, + -0.0019306569343, -0.0019900243309, -0.0017895377129, -0.0020939172749, + -0.0020863746959, -0.0017004866180, -0.0015593673966, -0.0011656934307, + -0.0008167883212, -0.0007425790754, -0.0005569343066, -0.0005048661800, + -0.0001708029197, +0.0003489051095, +0.0001559610706, -0.0003043795620, + -0.0009503649635, -0.0013440389294, -0.0007647201946, -0.0003489051095, + -0.0005197080292, -0.0007277372263, -0.0013661800487, -0.0016408759124, + -0.0014034063260, -0.0016632603406, -0.0013364963504, -0.0006535279805, + -0.0005790754258, -0.0004454987835, -0.0003934306569, -0.0004306569343, + -0.0005642335766, -0.0008985401460, -0.0009875912409, -0.0012622871046, + -0.0015890510949, -0.0006980535280, +0.0002822384428, +0.0003192214112, + +0.0002153284672, -0.0002153284672, -0.0008909975669, -0.0009206812652, + -0.0007201946472, -0.0007574209246, -0.0007944038929, -0.0007201946472, + -0.0006311435523, -0.0005717761557, -0.0006608272506, -0.0004233576642, + +0.0000965936740, +0.0000372262774, -0.0002746958637, -0.0007277372263, + -0.0013440389294, -0.0014107055961, -0.0008985401460, -0.0004306569343, + -0.0002525547445, -0.0007277372263, -0.0012698296837, -0.0018116788321, + -0.0022944038929, -0.0020939172749, -0.0018340632603, -0.0015742092457, + -0.0007574209246, -0.0001038929440, -0.0002004866180, -0.0004900243309, + -0.0006014598540, -0.0005642335766, -0.0002822384428, +0.0001856447689, + +0.0006311435523, +0.0010024330900, +0.0011508515815, +0.0008909975669, + -0.0000669099757, -0.0011360097324, -0.0013513381995, -0.0010172749392, + -0.0006980535280, -0.0004306569343, -0.0007201946472, -0.0010990267640, + -0.0009503649635, -0.0006014598540, -0.0000965936740, -0.0000148418491, + -0.0003416058394, -0.0004827250608, -0.0005717761557, -0.0008167883212, + -0.0008909975669, -0.0004233576642, +0.0003192214112, +0.0003267639903, + +0.0002153284672, +0.0005939172749, +0.0004603406326, -0.0000148418491, + -0.0008240875912, -0.0016408759124, -0.0017226277372, -0.0010542579075, + +0.0002077858881, +0.0010766423358, +0.0013588807786, +0.0017598540146, + +0.0013216545012, +0.0002377128954, -0.0006459854015, -0.0010618004866, + -0.0004678832117, +0.0000669099757, +0.0003934306569, +0.0009282238443, + +0.0004530413625, -0.0002746958637, -0.0002153284672, -0.0001038929440, + -0.0000296836983, +0.0003043795620, +0.0007277372263, +0.0008540145985, + +0.0002153284672, -0.0002153284672, -0.0000148418491, -0.0000148418491, + +0.0001856447689, +0.0008836982968, +0.0010618004866, +0.0008985401460, + +0.0010024330900, +0.0011287104623, +0.0012995133820, +0.0017598540146, + +0.0021532846715, +0.0019379562044, +0.0010394160584, +0.0000890510949, + -0.0003340632603, -0.0003637469586, -0.0000593673966, +0.0000075425791, + -0.0003267639903, -0.0002228710462, +0.0004530413625, +0.0010172749392, + +0.0012474452555, +0.0011211678832, +0.0010097323601, +0.0009727493917, + +0.0008688564477, +0.0006980535280, +0.0004678832117, +0.0007574209246, + +0.0012474452555, +0.0013364963504, +0.0014107055961, +0.0013513381995, + +0.0011435523114, +0.0013513381995, +0.0015518248175, +0.0015963503650, + +0.0014700729927, +0.0011508515815, +0.0010618004866, +0.0011583941606, + +0.0012547445255, +0.0015666666667, +0.0021012165450, +0.0026805352798, + +0.0026953771290, +0.0017153284672, +0.0004678832117, -0.0001632603406, + -0.0003340632603, -0.0004306569343, -0.0000075425791, +0.0004454987835, + +0.0006535279805, +0.0009579075426, +0.0011435523114, +0.0012698296837, + +0.0013513381995, +0.0011656934307, +0.0012029197080, +0.0012250608273, + +0.0011583941606, +0.0011732360097, +0.0012995133820, +0.0017819951338, + +0.0019824817518, +0.0018340632603, +0.0016111922141, +0.0011138686131, + +0.0008092457421, +0.0009206812652, +0.0012919708029, +0.0019306569343, + +0.0020345498783, +0.0017968369830, +0.0016557177616, +0.0011211678832, + +0.0006683698297, +0.0007574209246, +0.0008761557178, +0.0010693430657, + +0.0012250608273, +0.0008613138686, +0.0002673965937, -0.0003119221411, + -0.0004975669100, -0.0000445255474, +0.0006236009732, +0.0013143552311, + +0.0016408759124, +0.0014330900243, +0.0012846715328, +0.0011732360097, + +0.0007647201946, +0.0004530413625, +0.0004603406326, +0.0008240875912, + +0.0011732360097, +0.0013440389294, +0.0014107055961, +0.0015666666667, + +0.0016111922141, +0.0011287104623, +0.0004381995134, +0.0001335766423, + +0.0000817518248, +0.0003043795620, +0.0005939172749, +0.0004381995134, + +0.0002822384428, +0.0003416058394, +0.0005420924574, +0.0009282238443, + +0.0008985401460, +0.0004827250608, +0.0003712895377, +0.0004381995134, + +0.0002673965937, -0.0000372262774, -0.0000520681265, +0.0001114355231, + +0.0000296836983, -0.0002450121655, -0.0004751824818, -0.0001632603406, + +0.0005272506083, +0.0008389294404, +0.0006163017032, +0.0002822384428, + +0.0002153284672, +0.0002004866180, -0.0001335766423, -0.0004975669100, + -0.0007425790754, -0.0004975669100, +0.0005717761557, +0.0014403892944, + +0.0015890510949, +0.0009875912409, -0.0001632603406, -0.0011211678832, + -0.0014776155718, -0.0014255474453, -0.0009948905109, -0.0003340632603, + +0.0003267639903, +0.0006980535280, +0.0005642335766, +0.0004975669100, + +0.0006608272506, +0.0005717761557, +0.0001114355231, -0.0005197080292, + -0.0009282238443, -0.0006535279805, -0.0000593673966, +0.0002895377129, + +0.0003934306569, +0.0004454987835, +0.0004082725061, +0.0002077858881, + +0.0002004866180, +0.0001632603406, -0.0001114355231, +0.0000148418491, + +0.0002228710462, -0.0003340632603, -0.0004678832117, -0.0004009732360, + -0.0009206812652, -0.0008389294404, -0.0007201946472, -0.0003785888078, + +0.0000148418491, -0.0002301703163, +0.0001708029197, +0.0000372262774, + -0.0008316301703, -0.0005197080292, -0.0004009732360, -0.0009282238443, + -0.0005717761557, -0.0004306569343, -0.0003119221411, +0.0001262773723, + +0.0002746958637, +0.0003489051095, +0.0002228710462, +0.0006756690998, + +0.0010024330900, +0.0004530413625, +0.0001856447689, +0.0000965936740, + -0.0002895377129, +0.0001038929440, +0.0004900243309, +0.0002077858881, + -0.0003192214112, -0.0008389294404, -0.0007574209246, -0.0001632603406, + +0.0005790754258, +0.0012919708029, +0.0017004866180, +0.0014034063260, + +0.0007201946472, +0.0000965936740, -0.0000817518248, -0.0001262773723, + +0.0001335766423, +0.0007647201946, +0.0008464720195, +0.0006683698297, + +0.0004530413625, -0.0000890510949, -0.0003043795620, -0.0000742092457, + +0.0000223844282, +0.0004233576642, +0.0012399026764, +0.0016705596107, + +0.0015593673966, +0.0011508515815, +0.0006386861314, +0.0003267639903, + +0.0001484184915, +0.0000890510949, +0.0003489051095, +0.0005717761557, + +0.0007201946472, +0.0009355231144, +0.0009133819951, +0.0010542579075, + +0.0012547445255, +0.0009430656934, +0.0007277372263, +0.0006087591241, + +0.0001781021898, -0.0000742092457, +0.0001262773723, +0.0004678832117, + +0.0007425790754, +0.0008240875912, +0.0009282238443, +0.0010914841849, + +0.0011953771290, +0.0011138686131, +0.0008688564477, +0.0005569343066, + +0.0002077858881, +0.0000075425791, -0.0000520681265, -0.0000075425791, + +0.0001187347932, +0.0003564476886, +0.0009355231144, +0.0014182481752, + +0.0014851581509, +0.0014924574209, +0.0013737226277, +0.0010841849148, + +0.0006311435523, +0.0003712895377, +0.0007201946472, +0.0012029197080, + +0.0012995133820, +0.0012622871046, +0.0009503649635, +0.0005939172749, + +0.0004454987835, +0.0004678832117, +0.0004530413625, +0.0003637469586, + +0.0003043795620, +0.0003861313869, +0.0007350364964, +0.0009206812652, + +0.0007795620438, +0.0006535279805, +0.0005939172749, +0.0004603406326, + +0.0004454987835, +0.0004827250608, +0.0009133819951, +0.0014107055961, + +0.0014403892944, +0.0012771289538, +0.0008389294404, +0.0002895377129, + +0.0000669099757, -0.0001038929440, -0.0002077858881, +0.0000000000000, + +0.0001335766423, +0.0000742092457, -0.0000372262774, -0.0002301703163, + -0.0002525547445, -0.0000817518248, +0.0000669099757, +0.0001781021898, + +0.0000445255474, -0.0002746958637, -0.0003416058394, -0.0003564476886, + -0.0004158150852, -0.0001632603406, +0.0001038929440, +0.0002673965937, + +0.0002077858881, -0.0000223844282, -0.0001708029197, -0.0001559610706, + +0.0000593673966, +0.0002153284672, +0.0000593673966, -0.0001335766423, + -0.0002970802920, -0.0005272506083, -0.0005345498783, -0.0004082725061, + -0.0004158150852, -0.0004678832117, -0.0003712895377, -0.0002377128954, + -0.0001781021898, -0.0001038929440, -0.0002598540146, -0.0005717761557, + -0.0008167883212, -0.0007277372263, -0.0003489051095, +0.0000445255474, + +0.0002598540146, +0.0002673965937, +0.0000817518248, -0.0003267639903, + -0.0006163017032, -0.0005866180049, -0.0004009732360, -0.0002970802920, + -0.0002970802920, -0.0005642335766, -0.0009579075426, -0.0010914841849, + -0.0009206812652, -0.0006386861314, -0.0004678832117, -0.0003416058394, + -0.0002153284672, -0.0001262773723, +0.0000075425791, +0.0000372262774, + -0.0003712895377, -0.0006905109489, -0.0005939172749, -0.0002228710462, + +0.0000669099757, +0.0001559610706, +0.0001335766423, -0.0000075425791, + -0.0001929440389, -0.0003119221411, -0.0004454987835, -0.0004900243309, + -0.0002077858881, +0.0001856447689, +0.0002673965937, -0.0000372262774, + -0.0002970802920, -0.0005866180049, -0.0008688564477, -0.0008240875912, + -0.0006608272506, -0.0004900243309, -0.0004454987835, -0.0007647201946, + -0.0009133819951, -0.0007201946472, -0.0004306569343, -0.0001262773723, + -0.0000075425791, -0.0000223844282, -0.0000223844282, -0.0001781021898, + -0.0003637469586, -0.0005345498783, -0.0006386861314, -0.0003861313869, + -0.0002673965937, -0.0003712895377, -0.0002153284672, -0.0002077858881, + -0.0002895377129, -0.0003192214112, -0.0006386861314, -0.0008389294404, + -0.0008985401460, -0.0009058394161, -0.0007201946472, -0.0007944038929, + -0.0009727493917, -0.0006608272506, -0.0005124087591, -0.0005866180049, + -0.0006311435523, -0.0007647201946, -0.0007350364964, -0.0006832116788, + -0.0006535279805, -0.0005124087591, -0.0005790754258, -0.0006980535280, + -0.0006683698297, -0.0007277372263, -0.0007574209246, -0.0006905109489, + -0.0005493917275, -0.0003267639903, -0.0002450121655, -0.0003416058394, + -0.0005642335766, -0.0008240875912, -0.0007574209246, -0.0005420924574, + -0.0005272506083, -0.0005717761557, -0.0006311435523, -0.0008092457421, + -0.0008909975669, -0.0006980535280, -0.0005345498783, -0.0006311435523, + -0.0006535279805, -0.0006608272506, -0.0007277372263, -0.0006608272506, + -0.0006535279805, -0.0008167883212, -0.0009058394161, -0.0009282238443, + -0.0007350364964, -0.0004082725061, -0.0002004866180, -0.0001114355231, + -0.0002673965937, -0.0003489051095, -0.0002598540146, -0.0003934306569, + -0.0006014598540, -0.0008092457421, -0.0010024330900, -0.0010618004866, + -0.0011953771290, -0.0011583941606, -0.0007944038929, -0.0006087591241, + -0.0005939172749, -0.0005939172749, -0.0008464720195, -0.0009800486618, + -0.0009282238443, -0.0007053527981, -0.0002153284672, -0.0000148418491, + -0.0002153284672, -0.0003712895377, -0.0005790754258, -0.0008761557178, + -0.0009282238443, -0.0008019464720, -0.0005939172749, -0.0004827250608, + -0.0004975669100, -0.0005493917275, -0.0007277372263, -0.0008688564477, + -0.0009355231144, -0.0010245742092, -0.0008464720195, -0.0005197080292, + -0.0004751824818, -0.0005197080292, -0.0005197080292, -0.0006311435523, + -0.0006980535280, -0.0006756690998, -0.0005642335766, -0.0004603406326, + -0.0004678832117, -0.0005197080292, -0.0006014598540, -0.0007647201946, + -0.0007647201946, -0.0007350364964, -0.0008167883212, -0.0007795620438, + -0.0006535279805, -0.0004306569343, -0.0002228710462, -0.0001484184915, + -0.0000372262774, +0.0000148418491, -0.0001708029197, -0.0004306569343, + -0.0007053527981, -0.0007944038929, -0.0006459854015, -0.0005939172749, + -0.0007871046229, -0.0010542579075, -0.0011508515815, -0.0009206812652, + -0.0006683698297, -0.0005420924574, -0.0004530413625, -0.0005569343066, + -0.0006905109489, -0.0006756690998, -0.0005124087591, -0.0001856447689, + -0.0000372262774, -0.0002228710462, -0.0004900243309, -0.0007871046229, + -0.0007795620438, -0.0004082725061, -0.0001708029197, -0.0000593673966, + -0.0002450121655, -0.0005345498783, -0.0005493917275, -0.0004530413625, + -0.0003416058394, -0.0001187347932, -0.0000075425791, -0.0000742092457, + -0.0003119221411, -0.0005790754258, -0.0007128953771, -0.0008909975669, + -0.0008688564477, -0.0006311435523, -0.0004381995134, -0.0003267639903, + -0.0002525547445, -0.0002450121655, -0.0002598540146, -0.0002525547445, + -0.0001411192214, -0.0000223844282, +0.0000520681265, +0.0002153284672, + +0.0002822384428, +0.0002377128954, +0.0001632603406, +0.0000372262774, + -0.0001559610706, -0.0004975669100, -0.0008688564477, -0.0010766423358, + -0.0009875912409, -0.0006535279805, -0.0002228710462, +0.0002377128954, + +0.0005569343066, +0.0004530413625, +0.0001484184915, -0.0001929440389, + -0.0005717761557, -0.0007722627737, -0.0007795620438, -0.0006459854015, + -0.0005124087591, -0.0004454987835, -0.0002822384428, -0.0000965936740, + -0.0000148418491, +0.0001335766423, +0.0002077858881, +0.0001262773723, + +0.0001411192214, +0.0001038929440, -0.0001856447689, -0.0003785888078, + -0.0003861313869, -0.0004678832117, -0.0004306569343, -0.0001632603406, + +0.0001262773723, +0.0004082725061, +0.0004381995134, +0.0002598540146, + +0.0000000000000, -0.0003712895377, -0.0005124087591, -0.0003712895377, + -0.0002301703163, -0.0000445255474, +0.0000593673966, +0.0000445255474, + +0.0001114355231, +0.0002153284672, +0.0003267639903, +0.0003340632603, + +0.0002153284672, +0.0001781021898, +0.0001187347932, +0.0000742092457, + +0.0002822384428, +0.0005420924574, +0.0006608272506, +0.0005717761557, + +0.0004158150852, +0.0003340632603, +0.0002525547445, +0.0002895377129, + +0.0004158150852, +0.0003934306569, +0.0002525547445, +0.0000742092457, + -0.0000445255474, -0.0000669099757, -0.0000148418491, +0.0001114355231, + +0.0002970802920, +0.0004306569343, +0.0004233576642, +0.0003785888078, + +0.0004306569343, +0.0004082725061, +0.0003712895377, +0.0003861313869, + +0.0003119221411, +0.0002746958637, +0.0004454987835, +0.0006535279805, + +0.0007574209246, +0.0006756690998, +0.0004306569343, +0.0001781021898, + +0.0000890510949, +0.0001708029197, +0.0002895377129, +0.0003564476886, + +0.0003934306569, +0.0004900243309, +0.0006087591241, +0.0007350364964, + +0.0006683698297, +0.0003785888078, +0.0001708029197, +0.0001708029197, + +0.0002301703163, +0.0002673965937, +0.0002970802920, +0.0003340632603, + +0.0004530413625, +0.0005717761557, +0.0006459854015, +0.0005939172749, + +0.0004233576642, +0.0003416058394, +0.0003192214112, +0.0002746958637, + +0.0002450121655, +0.0002377128954, +0.0001484184915, +0.0000593673966, + +0.0001114355231, +0.0002004866180, +0.0001559610706, +0.0000965936740, + +0.0001929440389, +0.0004082725061, +0.0006087591241, +0.0005939172749, + +0.0003192214112, -0.0000593673966, -0.0002525547445, -0.0000817518248, + +0.0002228710462, +0.0004009732360, +0.0004530413625, +0.0004454987835, + +0.0004082725061, +0.0003934306569, +0.0003785888078, +0.0004009732360, + +0.0004975669100, +0.0005124087591, +0.0002970802920, +0.0000965936740, + +0.0000445255474, +0.0000075425791, +0.0002077858881, +0.0005124087591, + +0.0006163017032, +0.0005939172749, +0.0003861313869, +0.0001632603406, + +0.0001781021898, +0.0003119221411, +0.0004381995134, +0.0005197080292, + +0.0004381995134, +0.0003861313869, +0.0005124087591, +0.0005569343066, + +0.0003934306569, +0.0002153284672, +0.0001781021898, +0.0003192214112, + +0.0006459854015, +0.0009206812652, +0.0008540145985, +0.0005939172749, + +0.0003785888078, +0.0001929440389, +0.0000669099757, +0.0000742092457, + +0.0001856447689, +0.0004009732360, +0.0005272506083, +0.0004751824818, + +0.0005197080292, +0.0006756690998, +0.0006832116788, +0.0005569343066, + +0.0003564476886, +0.0001559610706, +0.0001262773723, +0.0002377128954, + +0.0003416058394, +0.0003785888078, +0.0004082725061, +0.0004009732360, + +0.0003489051095, +0.0003192214112, +0.0002525547445, +0.0002746958637, + +0.0003119221411, +0.0001856447689, +0.0000372262774, -0.0000593673966, + -0.0000445255474, +0.0002228710462, +0.0004678832117, +0.0006459854015, + +0.0007128953771, +0.0004233576642, +0.0001781021898, +0.0001781021898, + +0.0001114355231, +0.0000075425791, +0.0000742092457, +0.0002450121655, + +0.0003489051095, +0.0002450121655, +0.0000000000000, -0.0001856447689, + -0.0001484184915, +0.0002004866180, +0.0007128953771, +0.0010990267640, + +0.0011656934307, +0.0010766423358, +0.0008836982968, +0.0006014598540, + +0.0003416058394, +0.0001187347932, +0.0001708029197, +0.0003416058394, + +0.0003785888078, +0.0004158150852, +0.0004306569343, +0.0003340632603, + +0.0002450121655, +0.0001559610706, +0.0001335766423, +0.0001632603406, + +0.0000890510949, +0.0001559610706, +0.0004827250608, +0.0007425790754, + +0.0007871046229, +0.0005345498783, +0.0002377128954, +0.0002301703163, + +0.0004306569343, +0.0006756690998, +0.0008836982968, +0.0007425790754, + +0.0003934306569, +0.0002450121655, +0.0002895377129, +0.0004233576642, + +0.0005717761557, +0.0006832116788, +0.0008092457421, +0.0008761557178, + +0.0007722627737, +0.0006014598540, +0.0004751824818, +0.0004233576642, + +0.0002598540146, +0.0001187347932, +0.0002377128954, +0.0004158150852, + +0.0005124087591, +0.0006980535280, +0.0009058394161, +0.0008240875912, + +0.0005569343066, +0.0003489051095, +0.0002377128954, +0.0001929440389, + +0.0001411192214, +0.0001484184915, +0.0003119221411, +0.0004233576642, + +0.0003043795620, +0.0000742092457, -0.0001781021898, -0.0002525547445, + -0.0001187347932, +0.0000445255474, +0.0002822384428, +0.0004009732360, + +0.0004454987835, +0.0006756690998, +0.0007871046229, +0.0005717761557, + +0.0003119221411, +0.0001262773723, +0.0000075425791, -0.0000372262774, + -0.0000593673966, +0.0000148418491, +0.0000296836983, -0.0000445255474, + -0.0001038929440, -0.0000890510949, +0.0000817518248, +0.0003489051095, + +0.0004306569343, +0.0003712895377, +0.0002598540146, +0.0001708029197, + +0.0001187347932, +0.0000742092457, +0.0000520681265, +0.0000890510949, + +0.0001781021898, +0.0003861313869, +0.0006087591241, +0.0006459854015, + +0.0004454987835, +0.0001708029197, +0.0000372262774, -0.0000445255474, + -0.0000965936740, +0.0000000000000, +0.0001484184915, +0.0003267639903, + +0.0003712895377, +0.0002228710462, +0.0000965936740, -0.0000075425791, + -0.0001187347932, -0.0000445255474, +0.0000223844282, +0.0000148418491, + +0.0001335766423, +0.0002228710462, +0.0002450121655, +0.0003192214112, + +0.0004082725061, +0.0004603406326, +0.0004530413625, +0.0003637469586, + +0.0003119221411, +0.0001187347932, -0.0000669099757, -0.0000148418491, + +0.0000445255474, +0.0000890510949, +0.0002004866180, +0.0003043795620, + +0.0004158150852, +0.0004975669100, +0.0004530413625, +0.0002895377129, + +0.0001187347932, +0.0001781021898, +0.0003267639903, +0.0002377128954, + +0.0000593673966, -0.0001262773723, -0.0002228710462, -0.0002004866180, + -0.0002450121655, -0.0002598540146, -0.0000593673966, +0.0002004866180, + +0.0003267639903, +0.0003267639903, +0.0002301703163, +0.0001559610706, + +0.0000593673966, +0.0000445255474, +0.0001632603406, +0.0001708029197, + +0.0000742092457, +0.0000223844282, -0.0000965936740, -0.0002377128954, + -0.0002673965937, -0.0002895377129, -0.0002895377129, -0.0001262773723, + +0.0000890510949, +0.0002598540146, +0.0003489051095, +0.0002228710462, + -0.0000148418491, -0.0001856447689, -0.0004009732360, -0.0005790754258, + -0.0005272506083, -0.0002598540146, +0.0000000000000, +0.0001114355231, + +0.0001559610706, +0.0001781021898, +0.0000817518248, -0.0000445255474, + -0.0000593673966, -0.0000445255474, -0.0000520681265, -0.0001038929440, + -0.0001559610706, -0.0002895377129, -0.0004158150852, -0.0003416058394, + -0.0001929440389, -0.0001856447689, -0.0002822384428, -0.0003267639903, + -0.0003416058394, -0.0003712895377, -0.0003043795620, -0.0001187347932, + -0.0000148418491, +0.0000742092457, +0.0002153284672, +0.0002301703163, + +0.0000742092457, -0.0001559610706, -0.0003564476886, -0.0004530413625, + -0.0004381995134, -0.0003340632603, -0.0003192214112, -0.0003861313869, + -0.0003340632603, -0.0002673965937, -0.0002077858881, -0.0001484184915, + -0.0001856447689, -0.0002746958637, -0.0002822384428, -0.0003416058394, + -0.0004009732360, -0.0003340632603, -0.0002598540146, -0.0002077858881, + -0.0001484184915, -0.0001262773723, -0.0001411192214, -0.0001708029197, + -0.0001262773723, -0.0000669099757, -0.0000965936740, -0.0000593673966, + -0.0001114355231, -0.0004233576642, -0.0007498783455, -0.0009503649635, + -0.0009133819951, -0.0006608272506, -0.0004827250608, -0.0003267639903, + -0.0002004866180, -0.0001929440389, -0.0000965936740, -0.0000075425791, + -0.0000817518248, -0.0001856447689, -0.0002301703163, -0.0002004866180, + -0.0002077858881, -0.0003192214112, -0.0003416058394, -0.0002970802920, + -0.0003267639903, -0.0002673965937, -0.0001484184915, -0.0001708029197, + -0.0001484184915, -0.0001411192214, -0.0003712895377, -0.0005866180049, + -0.0006832116788, -0.0007053527981, -0.0006608272506, -0.0005790754258, + -0.0004975669100, -0.0004751824818, -0.0005124087591, -0.0004678832117, + -0.0003192214112, -0.0001187347932, +0.0000372262774, +0.0000372262774, + -0.0001708029197, -0.0004975669100, -0.0006905109489, -0.0006608272506, + -0.0005345498783, -0.0003340632603, -0.0001559610706, -0.0001929440389, + -0.0003119221411, -0.0003637469586, -0.0003637469586, -0.0003785888078, + -0.0004082725061, -0.0004678832117, -0.0005493917275, -0.0005790754258, + -0.0004827250608, -0.0004009732360, -0.0003267639903, -0.0001187347932, + +0.0000075425791, -0.0000593673966, -0.0002004866180, -0.0003192214112, + -0.0004009732360, -0.0005048661800, -0.0006163017032, -0.0006087591241, + -0.0004751824818, -0.0003637469586, -0.0003489051095, -0.0003416058394, + -0.0003043795620, -0.0002377128954, -0.0002525547445, -0.0002895377129, + -0.0002153284672, -0.0001114355231, -0.0001038929440, -0.0001262773723, + -0.0001708029197, -0.0002598540146, -0.0003637469586, -0.0005569343066, + -0.0006683698297, -0.0006386861314, -0.0006311435523, -0.0006386861314, + -0.0006014598540, -0.0004975669100, -0.0003192214112, -0.0001929440389, + -0.0002153284672, -0.0002895377129, -0.0003785888078, -0.0004082725061, + -0.0003564476886, -0.0002228710462, -0.0001114355231, -0.0000965936740, + -0.0001187347932, -0.0001632603406, -0.0002377128954, -0.0003043795620, + -0.0003340632603, -0.0003564476886, -0.0003712895377, -0.0003192214112, + -0.0002228710462, -0.0001929440389, -0.0002077858881, -0.0002746958637, + -0.0003564476886, -0.0003785888078, -0.0004233576642, -0.0004530413625, + -0.0004454987835, -0.0003637469586, -0.0002377128954, -0.0002377128954, + -0.0002970802920, -0.0002746958637, -0.0001114355231, +0.0000445255474, + +0.0000223844282, -0.0000223844282, -0.0000075425791, -0.0000445255474, + -0.0000296836983, +0.0000296836983, +0.0000520681265, +0.0000593673966, + -0.0000148418491, -0.0000148418491, +0.0000445255474, -0.0000669099757, + -0.0002598540146, -0.0004751824818, -0.0006311435523, -0.0005345498783, + -0.0003043795620, -0.0001038929440, +0.0000817518248, +0.0002004866180, + +0.0002673965937, +0.0002377128954, +0.0001632603406, +0.0000445255474, + -0.0001114355231, -0.0002004866180, -0.0002228710462, -0.0002301703163, + -0.0002228710462, -0.0001114355231, +0.0001038929440, +0.0002377128954, + +0.0002153284672, +0.0001411192214, +0.0000890510949, +0.0000000000000, + -0.0001484184915, -0.0002970802920, -0.0003416058394, -0.0002673965937, + -0.0001632603406, -0.0001411192214, -0.0000817518248, +0.0000000000000, + +0.0000223844282, +0.0001262773723, +0.0001262773723, -0.0000075425791, + -0.0000817518248, -0.0001781021898, -0.0002228710462, -0.0001187347932, + +0.0000075425791, +0.0002077858881, +0.0002895377129, +0.0001559610706, + +0.0000296836983, -0.0000742092457, -0.0001038929440, -0.0001187347932, + -0.0001335766423, +0.0000669099757, +0.0002895377129, +0.0003416058394, + +0.0002895377129, +0.0001335766423, +0.0000000000000, -0.0000817518248, + -0.0001335766423, -0.0000669099757, -0.0000075425791, +0.0000223844282, + +0.0000445255474, -0.0000223844282, -0.0000890510949, -0.0000372262774, + +0.0000742092457, +0.0001335766423, +0.0000372262774, -0.0000593673966, + -0.0000520681265, -0.0000593673966, +0.0000148418491, +0.0001929440389, + +0.0002746958637, +0.0002525547445, +0.0002746958637, +0.0003192214112, + +0.0002077858881, +0.0000669099757, +0.0000296836983, +0.0000296836983, + +0.0000296836983, +0.0000296836983, +0.0000372262774, +0.0000593673966, + +0.0000223844282, +0.0000890510949, +0.0002377128954, +0.0002377128954, + +0.0001484184915, +0.0000669099757, -0.0000445255474, -0.0001187347932, + -0.0002301703163, -0.0003119221411, -0.0003043795620, -0.0002004866180, + -0.0000296836983, +0.0001856447689, +0.0003416058394, +0.0003861313869, + +0.0003564476886, +0.0003340632603, +0.0003267639903, +0.0002970802920, + +0.0001484184915, +0.0000372262774, -0.0000372262774, -0.0002450121655, + -0.0004381995134, -0.0004900243309, -0.0004381995134, -0.0002673965937, + -0.0000372262774, +0.0001781021898, +0.0003564476886, +0.0004678832117, + +0.0004751824818, +0.0003192214112, +0.0001335766423, +0.0000520681265, + -0.0000075425791, -0.0000593673966, -0.0000669099757, -0.0001038929440, + -0.0001335766423, -0.0001114355231, +0.0000000000000, +0.0002153284672, + +0.0003785888078, +0.0004381995134, +0.0004381995134, +0.0003712895377, + +0.0002301703163, +0.0001114355231, +0.0000965936740, +0.0001335766423, + +0.0000965936740, +0.0000075425791, -0.0000296836983, +0.0000075425791, + +0.0000965936740, +0.0001262773723, +0.0001262773723, +0.0000445255474, + -0.0001038929440, -0.0001559610706, -0.0001114355231, +0.0000075425791, + +0.0002004866180, +0.0003043795620, +0.0003416058394, +0.0003934306569, + +0.0003267639903, +0.0002525547445, +0.0001929440389, +0.0000223844282, + -0.0000669099757, -0.0000445255474, +0.0000075425791, +0.0000520681265, + -0.0000148418491, -0.0001335766423, -0.0001335766423, -0.0000965936740, + -0.0000742092457, +0.0000000000000, +0.0001335766423, +0.0002673965937, + +0.0003340632603, +0.0002970802920, +0.0001781021898, +0.0001335766423, + +0.0001411192214, +0.0001484184915, +0.0001484184915, +0.0000445255474, + +0.0000075425791, +0.0000520681265, +0.0000223844282, +0.0000296836983, + -0.0000075425791, -0.0001559610706, -0.0002598540146, -0.0002673965937, + -0.0000890510949, +0.0001411192214, +0.0002525547445, +0.0002746958637, + +0.0001781021898, +0.0000890510949, +0.0001262773723, +0.0001335766423, + +0.0000817518248, +0.0000372262774, -0.0000372262774, +0.0000000000000, + +0.0001411192214, +0.0002301703163, +0.0002822384428, +0.0003267639903, + +0.0002822384428, +0.0001929440389, +0.0000372262774, -0.0001187347932, + -0.0000965936740, +0.0000520681265, +0.0002228710462, +0.0002895377129, + +0.0002004866180, +0.0001114355231, +0.0000817518248, +0.0000965936740, + +0.0001411192214, +0.0001929440389, +0.0002970802920, +0.0003861313869, + +0.0002746958637, +0.0001632603406, +0.0001781021898, +0.0002895377129, + +0.0004082725061, +0.0004454987835, +0.0003934306569, +0.0003043795620, + +0.0001708029197, +0.0000148418491, -0.0001038929440, -0.0001559610706, + -0.0000965936740, +0.0000965936740, +0.0003192214112, +0.0004233576642, + +0.0004082725061, +0.0003267639903, +0.0002450121655, +0.0002598540146, + +0.0002301703163, +0.0001114355231, +0.0000593673966, +0.0001262773723, + +0.0002377128954, +0.0003785888078, +0.0004751824818, +0.0004751824818, + +0.0004082725061, +0.0002895377129, +0.0002077858881, +0.0001781021898, + +0.0002228710462, +0.0003340632603, +0.0004530413625, +0.0005866180049, + +0.0006236009732, +0.0004381995134, +0.0002377128954, +0.0000965936740, + +0.0000890510949, +0.0002525547445, +0.0004381995134, +0.0006236009732, + +0.0007277372263, +0.0006683698297, +0.0006014598540, +0.0005569343066, + +0.0004827250608, +0.0003416058394, +0.0001484184915, -0.0000445255474, + -0.0001335766423, -0.0000965936740, +0.0000223844282, +0.0001114355231, + +0.0001114355231, +0.0001632603406, +0.0002525547445, +0.0002673965937, + +0.0002525547445, +0.0002746958637, +0.0003192214112, +0.0004158150852, + +0.0004530413625, +0.0003785888078, +0.0002895377129, +0.0002004866180, + +0.0001114355231, +0.0000742092457, +0.0000593673966, +0.0000817518248, + +0.0001559610706, +0.0002153284672, +0.0001929440389, +0.0000445255474, + -0.0000742092457, -0.0000817518248, +0.0000223844282, +0.0001856447689, + +0.0002895377129, +0.0003416058394, +0.0003564476886, +0.0003192214112, + +0.0002450121655, +0.0001781021898, +0.0002004866180, +0.0002004866180, + +0.0000520681265, -0.0000669099757, -0.0000890510949, -0.0000593673966, + +0.0000520681265, +0.0002004866180, +0.0002895377129, +0.0003267639903, + +0.0003043795620, +0.0002746958637, +0.0002077858881, +0.0000742092457, + -0.0000742092457, -0.0001856447689, -0.0002301703163, -0.0002077858881, + -0.0001262773723, -0.0000296836983, -0.0000148418491, -0.0000372262774, + -0.0000445255474, -0.0000742092457, -0.0000890510949, -0.0000075425791, + +0.0000593673966, +0.0000148418491, -0.0000742092457, -0.0001187347932, + -0.0001632603406, -0.0002077858881, -0.0001708029197, -0.0000372262774, + +0.0000593673966, +0.0000520681265, -0.0000593673966, -0.0001929440389, + -0.0002228710462, -0.0001335766423, -0.0000669099757, -0.0000520681265, + -0.0000742092457, -0.0001187347932, -0.0001632603406, -0.0002077858881, + -0.0001559610706, -0.0000445255474, -0.0000520681265, -0.0001187347932, + -0.0001632603406, -0.0002153284672, -0.0002004866180, -0.0001262773723, + -0.0000593673966, -0.0000223844282, -0.0000223844282, -0.0000742092457, + -0.0000817518248, -0.0000296836983, +0.0000223844282, +0.0000445255474, + -0.0000296836983, -0.0001708029197, -0.0002970802920, -0.0003712895377, + -0.0003564476886, -0.0002450121655, -0.0000669099757, +0.0000445255474, + +0.0000445255474, +0.0000372262774, -0.0000075425791, -0.0000742092457, + -0.0000890510949, -0.0000965936740, -0.0001038929440, -0.0000890510949, + -0.0000520681265, -0.0000075425791, -0.0000890510949, -0.0002895377129, + -0.0004233576642, -0.0005048661800, -0.0005420924574, -0.0003934306569, + -0.0000890510949, +0.0001484184915, +0.0003043795620, +0.0003712895377, + +0.0003267639903, +0.0002228710462, +0.0000817518248, -0.0000372262774, + -0.0000890510949, -0.0000445255474, -0.0000520681265, -0.0001632603406, + -0.0002525547445, -0.0002746958637, -0.0002228710462, -0.0000669099757, + +0.0001114355231, +0.0002450121655, +0.0002377128954, +0.0000593673966, + -0.0000965936740, -0.0001335766423, -0.0001114355231, +0.0000296836983, + +0.0002301703163, +0.0002895377129, +0.0001559610706, +0.0000000000000, + -0.0000148418491, +0.0000148418491, -0.0000372262774, -0.0000742092457, + -0.0000669099757, -0.0000593673966, +0.0000520681265, +0.0001856447689, + +0.0002153284672, +0.0002077858881, +0.0001484184915, +0.0000817518248, + +0.0000669099757, +0.0000223844282, -0.0000148418491, -0.0000148418491, + +0.0000372262774, +0.0001335766423, +0.0001484184915, +0.0001262773723, + +0.0001632603406, +0.0001335766423, +0.0000445255474, -0.0000148418491, + +0.0000000000000, +0.0000520681265, +0.0000223844282, -0.0000372262774, + -0.0000223844282, +0.0000000000000, -0.0000296836983, -0.0000445255474, + -0.0000372262774, -0.0000520681265, -0.0000742092457, -0.0000148418491, + +0.0000296836983, +0.0000520681265, +0.0001335766423, +0.0002301703163, + +0.0002598540146, +0.0002153284672, +0.0000965936740, -0.0000372262774, + -0.0000965936740, -0.0001187347932, -0.0001781021898, -0.0002301703163, + -0.0002004866180, -0.0000669099757, +0.0000520681265, +0.0000965936740, + +0.0001262773723, +0.0001262773723, +0.0000669099757, +0.0000000000000, + -0.0001411192214, -0.0002301703163, -0.0002301703163, -0.0001929440389, + -0.0000742092457, +0.0000148418491, +0.0000000000000, +0.0000000000000, + -0.0000296836983, -0.0000890510949, -0.0001335766423, -0.0002153284672, + -0.0002228710462, -0.0001411192214, -0.0001038929440, -0.0000742092457, + +0.0000000000000, +0.0000742092457, +0.0000965936740, +0.0000890510949, + +0.0000223844282, -0.0001262773723, -0.0002450121655, -0.0002673965937, + -0.0002598540146, -0.0002746958637, -0.0002450121655, -0.0001187347932, + +0.0000372262774, +0.0001781021898, +0.0002450121655, +0.0001856447689, + +0.0000742092457, -0.0000742092457, -0.0002450121655, -0.0003489051095, + -0.0003861313869, -0.0003637469586, -0.0002598540146, -0.0001856447689, + -0.0001632603406, -0.0001484184915, -0.0000817518248, +0.0000000000000, + -0.0000372262774, -0.0001411192214, -0.0002077858881, -0.0002525547445, + -0.0002673965937, -0.0002525547445, -0.0002525547445, -0.0002598540146, + -0.0002228710462, -0.0001335766423, -0.0000817518248, -0.0001038929440, + -0.0001262773723, -0.0000965936740, -0.0000890510949, -0.0001335766423, + -0.0001411192214, -0.0001262773723, -0.0001559610706, -0.0001781021898, + -0.0001708029197, -0.0001929440389, -0.0002746958637, -0.0003637469586, + -0.0003712895377, -0.0003119221411, -0.0002450121655, -0.0002153284672, + -0.0001114355231, +0.0000817518248, +0.0002301703163, +0.0002301703163, + +0.0001187347932, -0.0000148418491, -0.0000445255474, +0.0000000000000, + -0.0000223844282, -0.0001038929440, -0.0001632603406, -0.0001484184915, + -0.0000742092457, -0.0000372262774, -0.0000593673966, -0.0001038929440, + -0.0001632603406, -0.0001929440389, -0.0002525547445, -0.0003119221411, + -0.0002598540146, -0.0001335766423, +0.0000000000000, +0.0000593673966, + +0.0000593673966, +0.0000296836983, -0.0000296836983, -0.0000520681265, + -0.0000296836983, -0.0000148418491, +0.0000000000000, -0.0000148418491, + -0.0000075425791, +0.0000148418491, -0.0000223844282, -0.0000593673966, + -0.0000520681265, -0.0000445255474, -0.0000445255474, -0.0001187347932, + -0.0002450121655, -0.0002598540146, -0.0001929440389, -0.0000965936740, + -0.0000223844282, +0.0000000000000, +0.0000445255474, +0.0000520681265, + +0.0000075425791, -0.0000296836983, -0.0000593673966, -0.0000669099757, + -0.0000742092457, -0.0000890510949, -0.0001262773723, -0.0001632603406, + -0.0001559610706, -0.0000817518248, -0.0000520681265, -0.0000890510949, + -0.0001262773723, -0.0001262773723, -0.0001335766423, -0.0001335766423, + -0.0001411192214, -0.0001708029197, -0.0002004866180, -0.0001929440389, + -0.0001929440389, -0.0001708029197, -0.0000742092457, +0.0000000000000, + -0.0000148418491, -0.0000520681265, -0.0000372262774, -0.0000223844282, + -0.0000445255474, -0.0000742092457, -0.0001187347932, -0.0001929440389, + -0.0001856447689, -0.0001411192214, -0.0001187347932, -0.0000742092457, + -0.0000223844282, +0.0000075425791, +0.0000075425791, -0.0000372262774, + -0.0000593673966, -0.0000148418491, +0.0000372262774, +0.0000593673966, + +0.0000296836983, +0.0000000000000, -0.0000669099757, -0.0001929440389, + -0.0002525547445, -0.0002673965937, -0.0001856447689, -0.0000223844282, + +0.0000965936740, +0.0001708029197, +0.0001632603406, +0.0000445255474, + -0.0000445255474, -0.0000965936740, -0.0001484184915, -0.0001187347932, + -0.0000593673966, -0.0000223844282, +0.0000075425791, +0.0000000000000, + -0.0000075425791, +0.0000296836983, +0.0000890510949, +0.0001114355231, + +0.0001038929440, +0.0000890510949, +0.0001187347932, +0.0001335766423, + +0.0000817518248, +0.0000296836983, -0.0000148418491, -0.0000593673966, + -0.0000296836983, +0.0000372262774, +0.0000593673966, +0.0000669099757, + +0.0000669099757, +0.0000000000000, -0.0000965936740, -0.0001559610706, + -0.0001038929440, +0.0000223844282, +0.0001335766423, +0.0001632603406, + +0.0000965936740, +0.0000000000000, -0.0000296836983, -0.0000372262774, + -0.0000372262774, -0.0000296836983, -0.0000593673966, -0.0000593673966, + +0.0000000000000, +0.0000742092457, +0.0001187347932, +0.0001038929440, + +0.0000445255474, +0.0000000000000, -0.0000223844282, -0.0000520681265, + -0.0000742092457, -0.0000742092457, -0.0000817518248, -0.0000372262774, + +0.0000223844282, +0.0000148418491, -0.0000372262774, -0.0000520681265, + +0.0000075425791, +0.0001335766423, +0.0001708029197, +0.0001262773723, + +0.0000445255474, -0.0000372262774, -0.0000890510949, -0.0000965936740, + -0.0000817518248, -0.0000520681265, -0.0000742092457, -0.0001038929440, + -0.0000669099757, -0.0000223844282, +0.0000445255474, +0.0001335766423, + +0.0001411192214, +0.0000817518248, +0.0000296836983, -0.0000223844282, + -0.0000593673966, -0.0000593673966, -0.0000148418491, +0.0000742092457, + +0.0001187347932, +0.0000965936740, +0.0000669099757, +0.0000148418491, + -0.0000223844282, +0.0000075425791, +0.0001114355231, +0.0001559610706, + +0.0000890510949, +0.0000148418491, -0.0000148418491, -0.0000445255474, + -0.0000593673966, -0.0000817518248, -0.0000742092457, +0.0000000000000, + +0.0000445255474, +0.0000593673966, +0.0000890510949, +0.0001187347932, + +0.0001484184915, +0.0001411192214, +0.0001484184915, +0.0001708029197, + +0.0000890510949, -0.0000593673966, -0.0001632603406, -0.0001559610706, + -0.0001187347932, -0.0000817518248, -0.0000075425791, +0.0000742092457, + +0.0001335766423, +0.0001856447689, +0.0001559610706, +0.0000445255474, + -0.0000075425791, -0.0000075425791, +0.0000000000000, +0.0000296836983, + +0.0001038929440, +0.0002077858881, +0.0002450121655, +0.0001781021898, + +0.0000669099757, +0.0000000000000, -0.0000593673966, -0.0000669099757, + +0.0000075425791, +0.0001411192214, +0.0002746958637, +0.0003416058394, + +0.0002822384428, +0.0001929440389, +0.0001262773723, +0.0000965936740, + +0.0001335766423, +0.0001335766423, +0.0000742092457, +0.0000372262774, + +0.0000075425791, +0.0000000000000, -0.0000148418491, -0.0000445255474, + -0.0000520681265, -0.0000075425791, +0.0000817518248, +0.0001559610706, + +0.0001632603406, +0.0001559610706, +0.0001114355231, +0.0000520681265, + +0.0000075425791, -0.0000296836983, -0.0000669099757, -0.0000965936740, + -0.0000817518248, -0.0000148418491, +0.0000445255474, +0.0001411192214, + +0.0002077858881, +0.0001708029197, +0.0000890510949, +0.0000075425791, + -0.0000520681265, -0.0000223844282, +0.0000520681265, +0.0000669099757, + +0.0000669099757, +0.0000742092457, +0.0000669099757, +0.0000742092457, + +0.0001114355231, +0.0001559610706, +0.0001856447689, +0.0001856447689, + +0.0001559610706, +0.0001262773723, +0.0000520681265, +0.0000000000000, + +0.0000000000000, +0.0000075425791, +0.0000075425791, +0.0000148418491, + +0.0000223844282, +0.0000296836983, +0.0000296836983, +0.0000148418491, + +0.0000445255474, +0.0001559610706, +0.0002895377129, +0.0003785888078, + +0.0003192214112, +0.0001484184915, -0.0000075425791, -0.0000890510949, + -0.0000890510949, -0.0000223844282, +0.0000148418491, +0.0000372262774, + +0.0000742092457, +0.0000890510949, +0.0000965936740, +0.0001484184915, + +0.0001929440389, +0.0001856447689, +0.0001262773723, +0.0000296836983, + -0.0000296836983, -0.0000296836983, -0.0000148418491, +0.0000000000000, + +0.0000075425791, -0.0000296836983, -0.0001038929440, -0.0001484184915, + -0.0001038929440, +0.0000000000000, +0.0001335766423, +0.0002450121655, + +0.0002822384428, +0.0002301703163, +0.0001262773723, +0.0000148418491, + -0.0000372262774, +0.0000000000000, +0.0000817518248, +0.0001187347932, + +0.0000817518248, +0.0000372262774, +0.0000075425791, -0.0000075425791, + +0.0000148418491, +0.0000669099757, +0.0000890510949, +0.0000965936740, + +0.0000965936740, +0.0000445255474, -0.0000148418491, -0.0000223844282, + +0.0000742092457, +0.0002077858881, +0.0002377128954, +0.0001187347932, + -0.0000372262774, -0.0001335766423, -0.0001411192214, -0.0000965936740, + -0.0000148418491, +0.0000593673966, +0.0001335766423, +0.0001708029197, + +0.0001632603406, +0.0001187347932, +0.0000296836983, -0.0000669099757, + -0.0001262773723, -0.0001484184915, -0.0001335766423, -0.0000593673966, + +0.0000445255474, +0.0001484184915, +0.0001856447689, +0.0001484184915, + +0.0000817518248, +0.0000372262774, +0.0000148418491, +0.0000223844282, + +0.0000445255474, +0.0000372262774, +0.0000000000000, -0.0000296836983, + -0.0000520681265, -0.0000445255474, -0.0000148418491, +0.0000075425791, + -0.0000372262774, -0.0001187347932, -0.0001484184915, -0.0000520681265, + +0.0001262773723, +0.0002822384428, +0.0003119221411, +0.0002301703163, + +0.0000965936740, -0.0000372262774, -0.0001114355231, -0.0000593673966, + +0.0000445255474, +0.0001559610706, +0.0001856447689, +0.0001632603406, + +0.0001484184915, +0.0000890510949, +0.0000372262774, +0.0000148418491, + -0.0000445255474, -0.0001335766423, -0.0001929440389, -0.0001929440389, + -0.0001262773723, -0.0000148418491, +0.0001262773723, +0.0001856447689, + +0.0001559610706, +0.0000965936740, +0.0000445255474, +0.0000148418491, + +0.0000148418491, +0.0000223844282, +0.0000223844282, -0.0000075425791, + -0.0000669099757, -0.0000965936740, -0.0000669099757, +0.0000223844282, + +0.0000965936740, +0.0000520681265, +0.0000000000000, -0.0000075425791, + +0.0000075425791, +0.0000593673966, +0.0000742092457, +0.0000593673966, + +0.0000148418491, -0.0000669099757, -0.0001484184915, -0.0001781021898, + -0.0001781021898, -0.0001484184915, -0.0001187347932, -0.0000593673966, + +0.0000148418491, +0.0000593673966, +0.0000669099757, +0.0000593673966, + +0.0000669099757, +0.0001335766423, +0.0002153284672, +0.0002004866180, + +0.0000742092457, -0.0000742092457, -0.0001632603406, -0.0001708029197, + -0.0001632603406, -0.0001335766423, -0.0000445255474, +0.0000445255474, + +0.0000890510949, +0.0001114355231, +0.0001187347932, +0.0001262773723, + +0.0000890510949, +0.0000075425791, -0.0001114355231, -0.0002077858881, + -0.0002228710462, -0.0001781021898, -0.0000817518248, +0.0000669099757, + +0.0001929440389, +0.0002822384428, +0.0002970802920, +0.0002746958637, + +0.0002525547445, +0.0002077858881, +0.0001262773723, +0.0000075425791, + -0.0001484184915, -0.0002377128954, -0.0002301703163, -0.0001632603406, + -0.0000742092457, +0.0000148418491, +0.0000890510949, +0.0001262773723, + +0.0001559610706, +0.0001708029197, +0.0001411192214, +0.0000742092457, + +0.0000223844282, +0.0000000000000, -0.0000372262774, -0.0000296836983, + +0.0000223844282, +0.0000890510949, +0.0001708029197, +0.0002153284672, + +0.0001929440389, +0.0001484184915, +0.0001038929440, +0.0000372262774, + -0.0000445255474, -0.0001411192214, -0.0001708029197, -0.0001187347932, + -0.0000593673966, +0.0000000000000, +0.0000593673966, +0.0000965936740, + +0.0001114355231, +0.0000742092457, +0.0000148418491, -0.0000075425791, + -0.0000075425791, +0.0000372262774, +0.0001114355231, +0.0001187347932, + +0.0000817518248, +0.0000445255474, +0.0000520681265, +0.0000817518248, + +0.0000742092457, +0.0000445255474, +0.0000296836983, +0.0000445255474, + +0.0000742092457, +0.0000817518248, +0.0000593673966, +0.0000296836983, + -0.0000445255474, -0.0001262773723, -0.0001632603406, -0.0001411192214, + -0.0000817518248, -0.0000075425791, -0.0000075425791, -0.0000372262774, + -0.0000742092457, -0.0001038929440, -0.0000965936740, -0.0000593673966, + -0.0000148418491, +0.0000000000000, +0.0000075425791, -0.0000075425791, + -0.0000223844282, +0.0000000000000, +0.0000445255474, +0.0001038929440, + +0.0001411192214, +0.0001411192214, +0.0001038929440, +0.0000520681265, + +0.0000445255474, +0.0000372262774, +0.0000000000000, -0.0000075425791, + -0.0000075425791, -0.0000520681265, -0.0001114355231, -0.0001335766423, + -0.0001038929440, -0.0000223844282, +0.0000520681265, +0.0000817518248, + +0.0000890510949, +0.0000742092457, +0.0000669099757, +0.0000669099757, + +0.0000223844282, -0.0000445255474, -0.0001038929440, -0.0000890510949, + -0.0000075425791, +0.0000223844282, +0.0000223844282, +0.0000520681265, + +0.0000520681265, +0.0000223844282, +0.0000148418491, -0.0000075425791, + -0.0000593673966, -0.0000890510949, -0.0000890510949, -0.0000890510949, + -0.0001187347932, -0.0001038929440, -0.0000520681265, -0.0000296836983, + -0.0000296836983, -0.0000148418491, +0.0000148418491, +0.0000372262774, + +0.0000075425791, +0.0000000000000, -0.0000296836983, -0.0001038929440, + -0.0001632603406, -0.0001929440389, -0.0001335766423, -0.0000296836983, + +0.0000000000000, +0.0000000000000, -0.0000372262774, -0.0000593673966, + -0.0000593673966, -0.0000593673966, -0.0000669099757, -0.0000593673966, + -0.0000520681265, -0.0000520681265, -0.0001038929440, -0.0001708029197, + -0.0002153284672, -0.0002377128954, -0.0002377128954, -0.0001929440389, + -0.0001187347932, -0.0000669099757, -0.0000669099757, -0.0000817518248, + -0.0000890510949, -0.0001038929440, -0.0001187347932, -0.0001187347932, + -0.0001114355231, -0.0000965936740, -0.0000742092457, -0.0000890510949, + -0.0001262773723, -0.0001484184915, -0.0001411192214, -0.0001262773723, + -0.0001114355231, -0.0001262773723, -0.0001632603406, -0.0001632603406, + -0.0001484184915, -0.0001335766423, -0.0001038929440, -0.0000817518248, + -0.0000669099757, -0.0000520681265, -0.0000372262774, -0.0000520681265, + -0.0001187347932, -0.0001708029197, -0.0001632603406, -0.0001856447689, + -0.0002301703163, -0.0002228710462, -0.0001632603406, -0.0000742092457, + +0.0000223844282, +0.0000593673966, +0.0000669099757, +0.0000372262774, + -0.0000223844282, -0.0000445255474, -0.0000742092457, -0.0001708029197, + -0.0002228710462, -0.0002525547445, -0.0002746958637, -0.0002228710462, + -0.0001559610706, -0.0000593673966, +0.0000296836983, +0.0000223844282, + -0.0000148418491, -0.0000593673966, -0.0000742092457, -0.0000148418491, + +0.0000445255474, +0.0000593673966, +0.0000223844282, -0.0000669099757, + -0.0001484184915, -0.0001708029197, -0.0001856447689, -0.0001632603406, + -0.0001262773723, -0.0000817518248, -0.0000372262774, -0.0000372262774, + -0.0000372262774, +0.0000000000000 +}; diff --git a/plugins/ladspa_effect/swh/impulses/15-fender-superchamp-ui87.h b/plugins/ladspa_effect/swh/impulses/15-fender-superchamp-ui87.h new file mode 100644 index 000000000..2c184ab02 --- /dev/null +++ b/plugins/ladspa_effect/swh/impulses/15-fender-superchamp-ui87.h @@ -0,0 +1,790 @@ +float fender_superchamp_ui87[] = { + +0.0000000000000, +0.0000000000000, -0.0000124489796, -0.0000124489796, + +0.0000000000000, +0.0000373469388, +0.0001120408163, +0.0001869387755, + +0.0002428571429, +0.0002055102041, +0.0001183673469, +0.0000000000000, + -0.0001120408163, -0.0001869387755, -0.0002055102041, -0.0001432653061, + -0.0000124489796, +0.0001369387755, +0.0002926530612, +0.0003985714286, + +0.0004173469388, +0.0003487755102, +0.0001993877551, +0.0000124489796, + -0.0001369387755, -0.0002242857143, -0.0002179591837, -0.0001183673469, + +0.0000312244898, +0.0001742857143, +0.0002616326531, +0.0002616326531, + +0.0001930612245, +0.0000934693878, +0.0000063265306, -0.0000187755102, + +0.0000187755102, +0.0001059183673, +0.0002055102041, +0.0002553061224, + +0.0002428571429, +0.0001681632653, +0.0000497959184, -0.0000561224490, + -0.0001308163265, -0.0001369387755, -0.0000871428571, -0.0000063265306, + +0.0000810204082, +0.0001557142857, +0.0001993877551, +0.0002055102041, + +0.0001869387755, +0.0001493877551, +0.0000995918367, +0.0000497959184, + +0.0000124489796, +0.0000000000000, +0.0000000000000, +0.0000312244898, + +0.0000995918367, +0.0001742857143, +0.0002367346939, +0.0002740816327, + +0.0002616326531, +0.0002055102041, +0.0001120408163, +0.0000124489796, + -0.0000622448980, -0.0001059183673, -0.0001059183673, -0.0000685714286, + -0.0000063265306, +0.0000685714286, +0.0001432653061, +0.0002055102041, + +0.0002491836735, +0.0002740816327, +0.0002865306122, +0.0002926530612, + +0.0002926530612, +0.0002926530612, +0.0002740816327, +0.0002304081633, + +0.0001493877551, +0.0000312244898, -0.0000934693878, -0.0002118367347, + -0.0002802040816, -0.0002740816327, -0.0001806122449, -0.0000436734694, + +0.0000995918367, +0.0002118367347, +0.0002740816327, +0.0002802040816, + +0.0002616326531, +0.0002367346939, +0.0002428571429, +0.0002802040816, + +0.0003175510204, +0.0003300000000, +0.0002740816327, +0.0001432653061, + -0.0000436734694, -0.0002367346939, -0.0003800000000, -0.0004234693878, + -0.0003675510204, -0.0002242857143, -0.0000497959184, +0.0001059183673, + +0.0002179591837, +0.0002802040816, +0.0003051020408, +0.0003175510204, + +0.0003363265306, +0.0003800000000, +0.0004234693878, +0.0004422448980, + +0.0004048979592, +0.0002865306122, +0.0000934693878, -0.0001618367347, + -0.0004234693878, -0.0006353061224, -0.0007287755102, -0.0006602040816, + -0.0004359183673, -0.0000934693878, +0.0002677551020, +0.0005606122449, + +0.0007100000000, +0.0006787755102, +0.0005044897959, +0.0002677551020, + +0.0000746938776, -0.0000312244898, -0.0000312244898, +0.0000000000000, + +0.0000124489796, -0.0000373469388, -0.0001493877551, -0.0002740816327, + -0.0003363265306, -0.0002865306122, -0.0001557142857, -0.0000124489796, + +0.0000810204082, +0.0000746938776, -0.0000063265306, -0.0000934693878, + -0.0000934693878, +0.0000312244898, +0.0002491836735, +0.0004359183673, + +0.0004732653061, +0.0002926530612, -0.0000810204082, -0.0005044897959, + -0.0007910204082, -0.0007910204082, -0.0004920408163, +0.0000000000000, + +0.0004857142857, +0.0007785714286, +0.0007473469388, +0.0004608163265, + +0.0000312244898, -0.0003363265306, -0.0006040816327, -0.0007597959184, + -0.0007224489796, -0.0008159183673, -0.0009030612245, -0.0008718367347, + -0.0006787755102, -0.0002926530612, +0.0002428571429, +0.0007971428571, + +0.0011957142857, +0.0012330612245, +0.0008969387755, +0.0003424489796, + -0.0002367346939, -0.0006414285714, -0.0008344897959, -0.0008159183673, + -0.0008034693878, -0.0008718367347, -0.0010900000000, -0.0012891836735, + -0.0013826530612, -0.0012020408163, -0.0008532653061, -0.0003551020408, + +0.0000000000000, +0.0000746938776, -0.0000995918367, -0.0003861224490, + -0.0006477551020, -0.0007785714286, -0.0005855102041, -0.0005481632653, + -0.0005667346939, -0.0013140816327, -0.0021548979592, -0.0037057142857, + -0.0049824489796, -0.0062904081633, -0.0072308163265, -0.0094044897959, + -0.0072993877551, -0.0138075510204, -0.0030330612245, -0.0133281632653, + -0.0246942857143, +0.0027902040816, +0.0544459183673, +0.0320932653061, + -0.0956757142857, -0.1275697959184, -0.0306608163265, +0.0084016326531, + +0.0812826530612, +0.2040691836735, +0.2002326530612, +0.1623100000000, + +0.0831573469388, -0.0095226530612, -0.0398534693878, -0.0714795918367, + -0.0870561224490, -0.0555295918367, -0.0589487755102, -0.0438457142857, + -0.0178744897959, +0.0066951020408, +0.0477008163265, +0.0553800000000, + +0.0518300000000, +0.0558471428571, +0.0315763265306, +0.0187216326531, + +0.0105006122449, -0.0076106122449, -0.0059104081633, -0.0186220408163, + -0.0288795918367, -0.0231995918367, -0.0170836734694, -0.0058044897959, + +0.0000124489796, -0.0093920408163, -0.0076606122449, +0.0011832653061, + +0.0031202040816, +0.0112291836735, +0.0091677551020, -0.0036495918367, + -0.0080467346939, -0.0097344897959, -0.0183230612245, -0.0085075510204, + -0.0107993877551, -0.0236853061224, -0.0122320408163, -0.0138761224490, + -0.0169279591837, -0.0099463265306, -0.0093857142857, -0.0079469387755, + -0.0065581632653, -0.0100644897959, +0.0011397959184, +0.0058481632653, + +0.0073989795918, +0.0098340816327, +0.0032261224490, +0.0038426530612, + +0.0017438775510, +0.0035936734694, +0.0075981632653, -0.0005293877551, + -0.0072993877551, -0.0104008163265, -0.0171022448980, -0.0207083673469, + -0.0168781632653, -0.0100459183673, -0.0008283673469, +0.0019742857143, + +0.0043908163265, +0.0030704081633, +0.0001557142857, -0.0002367346939, + -0.0000124489796, -0.0042538775510, -0.0106873469388, -0.0096534693878, + -0.0108181632653, -0.0110673469388, -0.0099463265306, -0.0104008163265, + -0.0128920408163, -0.0151528571429, -0.0129357142857, -0.0030579591837, + +0.0002677551020, -0.0040793877551, -0.0064895918367, -0.0103324489796, + -0.0093295918367, -0.0066826530612, -0.0044218367347, -0.0007473469388, + -0.0002677551020, +0.0024600000000, +0.0052067346939, -0.0024851020408, + -0.0079593877551, -0.0085387755102, -0.0097906122449, -0.0046585714286, + -0.0005916326531, -0.0013577551020, -0.0038116326531, -0.0086881632653, + -0.0116714285714, -0.0125432653061, -0.0134587755102, -0.0128671428571, + -0.0134714285714, -0.0120014285714, -0.0080777551020, -0.0079034693878, + -0.0062716326531, -0.0019806122449, +0.0011334693878, +0.0024912244898, + +0.0022669387755, +0.0032946938776, +0.0043222448980, +0.0025722448980, + +0.0031575510204, +0.0043161224490, +0.0032697959184, +0.0012891836735, + -0.0029210204082, -0.0078597959184, -0.0127614285714, -0.0153771428571, + -0.0134028571429, -0.0105689795918, -0.0081587755102, -0.0054432653061, + -0.0031140816327, -0.0013140816327, -0.0019244897959, -0.0026095918367, + -0.0007661224490, +0.0015259183673, +0.0037244897959, +0.0053312244898, + +0.0048018367347, +0.0036932653061, +0.0015881632653, -0.0009777551020, + -0.0008283673469, +0.0000436734694, +0.0002989795918, +0.0013826530612, + +0.0024787755102, +0.0028336734694, +0.0022483673469, +0.0017126530612, + +0.0028336734694, +0.0039859183673, +0.0054681632653, +0.0081900000000, + +0.0075546938776, +0.0047957142857, +0.0027963265306, +0.0016442857143, + +0.0021051020408, +0.0014636734694, +0.0005106122449, +0.0003175510204, + -0.0010026530612, -0.0008344897959, -0.0002865306122, +0.0000622448980, + +0.0028648979592, +0.0055118367347, +0.0069442857143, +0.0075920408163, + +0.0068383673469, +0.0061532653061, +0.0063463265306, +0.0065644897959, + +0.0055306122449, +0.0037804081633, +0.0012144897959, -0.0000561224490, + +0.0013826530612, +0.0021236734694, +0.0042163265306, +0.0073428571429, + +0.0076979591837, +0.0080716326531, +0.0087069387755, +0.0072930612245, + +0.0054744897959, +0.0036310204082, +0.0031763265306, +0.0037057142857, + +0.0048579591837, +0.0071810204082, +0.0086444897959, +0.0091055102041, + +0.0077228571429, +0.0047395918367, +0.0036371428571, +0.0017126530612, + -0.0005230612245, +0.0016816326531, +0.0041291836735, +0.0056177551020, + +0.0070438775510, +0.0059665306122, +0.0040295918367, +0.0025597959184, + +0.0014885714286, +0.0021175510204, +0.0025473469388, +0.0024975510204, + +0.0027589795918, +0.0025722448980, +0.0035873469388, +0.0069257142857, + +0.0088563265306, +0.0081089795918, +0.0071622448980, +0.0053063265306, + +0.0019930612245, -0.0008408163265, -0.0018185714286, -0.0009218367347, + +0.0004173469388, +0.0007910204082, -0.0000248979592, -0.0014200000000, + -0.0019244897959, -0.0000373469388, +0.0021175510204, +0.0027902040816, + +0.0035500000000, +0.0039734693878, +0.0023106122449, +0.0012269387755, + +0.0017065306122, +0.0018808163265, +0.0021861224490, +0.0023791836735, + +0.0023355102041, +0.0031202040816, +0.0045775510204, +0.0051755102041, + +0.0040232653061, +0.0016318367347, +0.0000312244898, -0.0002677551020, + +0.0003051020408, +0.0017126530612, +0.0023355102041, +0.0007412244898, + -0.0014263265306, -0.0028587755102, -0.0027902040816, -0.0014263265306, + +0.0004234693878, +0.0018746938776, +0.0022171428571, +0.0022295918367, + +0.0026842857143, +0.0022359183673, +0.0003487755102, -0.0015134693878, + -0.0026032653061, -0.0029708163265, -0.0019557142857, +0.0006165306122, + +0.0012393877551, -0.0001369387755, -0.0008842857143, -0.0017438775510, + -0.0038863265306, -0.0039424489796, -0.0028836734694, -0.0021424489796, + -0.0008408163265, -0.0006663265306, -0.0007412244898, -0.0009467346939, + -0.0018310204082, -0.0019306122449, -0.0013016326531, -0.0006851020408, + +0.0006975510204, +0.0006289795918, -0.0002677551020, -0.0014012244898, + -0.0028587755102, -0.0034753061224, -0.0036122448980, -0.0024475510204, + -0.0001244897959, +0.0009840816327, +0.0013951020408, +0.0009467346939, + -0.0009218367347, -0.0011771428571, -0.0011522448980, -0.0018559183673, + -0.0016816326531, -0.0010026530612, -0.0001493877551, +0.0007971428571, + +0.0011024489796, +0.0009965306122, +0.0001681632653, +0.0003985714286, + +0.0007661224490, -0.0005418367347, -0.0011273469388, -0.0011024489796, + -0.0014512244898, -0.0019681632653, -0.0031824489796, -0.0032510204082, + -0.0024040816327, -0.0017189795918, +0.0000436734694, +0.0010587755102, + -0.0002491836735, -0.0016130612245, -0.0024102040816, -0.0029085714286, + -0.0028463265306, -0.0026157142857, -0.0021922448980, -0.0012642857143, + -0.0002118367347, +0.0005169387755, +0.0008344897959, +0.0005979591837, + +0.0006663265306, +0.0006353061224, -0.0007722448980, -0.0018559183673, + -0.0018871428571, -0.0024538775510, -0.0025846938776, -0.0017624489796, + -0.0001993877551, +0.0011210204082, +0.0013140816327, +0.0023044897959, + +0.0033008163265, +0.0031140816327, +0.0026281632653, +0.0014512244898, + +0.0003487755102, -0.0004732653061, -0.0011522448980, -0.0005916326531, + +0.0000124489796, +0.0003736734694, +0.0009218367347, +0.0017875510204, + +0.0028836734694, +0.0029022448980, +0.0022483673469, +0.0009155102041, + -0.0008220408163, -0.0006975510204, -0.0003114285714, -0.0000124489796, + +0.0008593877551, +0.0006912244898, -0.0000063265306, -0.0004732653061, + -0.0005855102041, -0.0000746938776, -0.0002118367347, -0.0002989795918, + +0.0008657142857, +0.0015881632653, +0.0024040816327, +0.0032822448980, + +0.0035873469388, +0.0034379591837, +0.0020863265306, +0.0004608163265, + -0.0002367346939, -0.0003424489796, -0.0000373469388, +0.0001308163265, + -0.0000248979592, +0.0003051020408, +0.0004920408163, -0.0002616326531, + -0.0009902040816, -0.0013328571429, -0.0014324489796, -0.0009965306122, + -0.0002616326531, +0.0002553061224, +0.0005293877551, +0.0004359183673, + +0.0008034693878, +0.0015757142857, +0.0020055102041, +0.0023355102041, + +0.0031140816327, +0.0034379591837, +0.0029832653061, +0.0025285714286, + +0.0015071428571, +0.0006353061224, +0.0008095918367, +0.0010900000000, + +0.0015569387755, +0.0019806122449, +0.0021424489796, +0.0024975510204, + +0.0018622448980, +0.0007597959184, +0.0003424489796, -0.0003612244898, + -0.0002865306122, +0.0001369387755, -0.0000934693878, +0.0001557142857, + -0.0003612244898, -0.0008283673469, -0.0001742857143, -0.0001120408163, + +0.0001681632653, +0.0006851020408, +0.0008159183673, +0.0009902040816, + +0.0008034693878, +0.0015383673469, +0.0028087755102, +0.0030704081633, + +0.0028026530612, +0.0015632653061, +0.0001059183673, -0.0003363265306, + -0.0002553061224, +0.0002926530612, +0.0008034693878, +0.0006975510204, + +0.0006104081633, +0.0008095918367, +0.0010651020408, +0.0008842857143, + +0.0009716326531, +0.0011459183673, +0.0009030612245, +0.0006165306122, + +0.0000124489796, -0.0003487755102, -0.0008718367347, -0.0016442857143, + -0.0020863265306, -0.0025224489796, -0.0019430612245, -0.0004110204082, + +0.0008532653061, +0.0023106122449, +0.0032883673469, +0.0036185714286, + +0.0032697959184, +0.0020428571429, +0.0012955102041, +0.0006602040816, + +0.0000248979592, -0.0002865306122, -0.0006414285714, -0.0007224489796, + -0.0007785714286, -0.0010712244898, -0.0007597959184, -0.0003051020408, + -0.0000934693878, -0.0001930612245, +0.0001120408163, +0.0004173469388, + -0.0005667346939, -0.0013887755102, -0.0016628571429, -0.0014324489796, + -0.0007785714286, -0.0007036734694, -0.0009404081633, -0.0013887755102, + -0.0024787755102, -0.0030081632653, -0.0028275510204, -0.0019742857143, + -0.0002616326531, +0.0013638775510, +0.0023728571429, +0.0024414285714, + +0.0016130612245, +0.0003363265306, -0.0008842857143, -0.0016318367347, + -0.0021175510204, -0.0024475510204, -0.0025597959184, -0.0023169387755, + -0.0015881632653, -0.0011771428571, -0.0005606122449, +0.0000622448980, + -0.0001869387755, -0.0002802040816, -0.0004297959184, -0.0008969387755, + -0.0010524489796, -0.0011024489796, -0.0011957142857, -0.0014263265306, + -0.0021112244898, -0.0023418367347, -0.0020304081633, -0.0016877551020, + -0.0006851020408, +0.0000934693878, -0.0000871428571, -0.0003612244898, + -0.0002989795918, -0.0000063265306, +0.0008593877551, +0.0013328571429, + +0.0013514285714, +0.0011832653061, +0.0002926530612, -0.0003363265306, + -0.0004732653061, -0.0007224489796, -0.0004920408163, -0.0007536734694, + -0.0014263265306, -0.0013638775510, -0.0015383673469, -0.0015259183673, + -0.0008906122449, -0.0007971428571, -0.0006165306122, -0.0003424489796, + +0.0000497959184, +0.0005667346939, -0.0000124489796, -0.0006663265306, + -0.0010836734694, -0.0019681632653, -0.0021922448980, -0.0011334693878, + -0.0002179591837, -0.0000746938776, -0.0000124489796, +0.0001557142857, + -0.0001369387755, -0.0004920408163, -0.0009653061224, -0.0016318367347, + -0.0016940816327, -0.0010214285714, -0.0004297959184, -0.0004359183673, + -0.0011024489796, -0.0016442857143, -0.0016691836735, -0.0016006122449, + -0.0010214285714, -0.0003551020408, -0.0005357142857, -0.0008718367347, + -0.0011708163265, -0.0017189795918, -0.0019306122449, -0.0018310204082, + -0.0015881632653, -0.0009653061224, -0.0007536734694, -0.0011708163265, + -0.0014761224490, -0.0017002040816, -0.0018497959184, -0.0018000000000, + -0.0017624489796, -0.0017189795918, -0.0015881632653, -0.0014075510204, + -0.0011085714286, -0.0006602040816, -0.0003861224490, -0.0002428571429, + -0.0000995918367, -0.0002118367347, -0.0004173469388, -0.0005357142857, + -0.0003800000000, -0.0003238775510, -0.0006104081633, -0.0009716326531, + -0.0013016326531, -0.0014822448980, -0.0014697959184, -0.0012393877551, + -0.0006165306122, -0.0004359183673, -0.0007785714286, -0.0011708163265, + -0.0015383673469, -0.0013204081633, -0.0010775510204, -0.0004857142857, + +0.0003300000000, -0.0002553061224, -0.0012206122449, -0.0015383673469, + -0.0016006122449, -0.0014636734694, -0.0014387755102, -0.0012706122449, + -0.0010338775510, -0.0012642857143, -0.0012830612245, -0.0007597959184, + -0.0005667346939, -0.0004795918367, -0.0001930612245, -0.0002428571429, + -0.0005293877551, -0.0007722448980, -0.0010214285714, -0.0007163265306, + -0.0003487755102, -0.0004110204082, -0.0004422448980, -0.0008593877551, + -0.0011024489796, -0.0007661224490, -0.0008220408163, -0.0010712244898, + -0.0011771428571, -0.0015195918367, -0.0017065306122, -0.0014946938776, + -0.0008034693878, -0.0000187755102, +0.0000810204082, -0.0001493877551, + -0.0004048979592, -0.0006165306122, -0.0007287755102, -0.0006538775510, + -0.0004920408163, -0.0002491836735, +0.0000436734694, +0.0001244897959, + -0.0000063265306, +0.0000000000000, +0.0001183673469, +0.0001930612245, + +0.0000187755102, -0.0002553061224, -0.0005542857143, -0.0010214285714, + -0.0010214285714, -0.0004981632653, +0.0001869387755, +0.0005106122449, + +0.0001869387755, -0.0002802040816, -0.0002616326531, -0.0000187755102, + +0.0000312244898, +0.0000622448980, -0.0000934693878, -0.0003363265306, + -0.0002616326531, +0.0000000000000, +0.0004920408163, +0.0009591836735, + +0.0008159183673, +0.0005542857143, +0.0003612244898, +0.0003238775510, + +0.0004981632653, +0.0005044897959, +0.0003363265306, +0.0002304081633, + +0.0000934693878, +0.0000746938776, +0.0000685714286, -0.0001869387755, + -0.0004795918367, -0.0008593877551, -0.0010214285714, -0.0008034693878, + -0.0003924489796, +0.0000685714286, +0.0004732653061, +0.0006912244898, + +0.0006228571429, +0.0004110204082, +0.0005169387755, +0.0008593877551, + +0.0009342857143, +0.0006165306122, +0.0001059183673, -0.0001493877551, + +0.0000497959184, +0.0004732653061, +0.0008344897959, +0.0010900000000, + +0.0011397959184, +0.0008781632653, +0.0007100000000, +0.0007536734694, + +0.0010524489796, +0.0010712244898, +0.0007287755102, +0.0002179591837, + -0.0003675510204, -0.0006602040816, -0.0002989795918, +0.0006040816327, + +0.0013887755102, +0.0013265306122, +0.0007597959184, +0.0001993877551, + -0.0003736734694, -0.0004546938776, -0.0000561224490, +0.0002179591837, + +0.0003300000000, +0.0001059183673, -0.0003238775510, -0.0005106122449, + -0.0003487755102, -0.0000436734694, +0.0001557142857, +0.0000312244898, + -0.0003175510204, -0.0004732653061, -0.0004671428571, -0.0001681632653, + +0.0004857142857, +0.0009218367347, +0.0008657142857, +0.0006228571429, + +0.0002926530612, +0.0001244897959, -0.0000312244898, -0.0002553061224, + -0.0001993877551, -0.0001120408163, -0.0005542857143, -0.0009965306122, + -0.0009902040816, -0.0008034693878, -0.0002553061224, +0.0003114285714, + +0.0003612244898, +0.0002677551020, +0.0000000000000, -0.0004795918367, + -0.0005791836735, -0.0003487755102, -0.0002242857143, -0.0001369387755, + -0.0002616326531, -0.0005916326531, -0.0005730612245, -0.0003114285714, + -0.0000436734694, +0.0002491836735, +0.0001493877551, -0.0001618367347, + -0.0002179591837, -0.0004920408163, -0.0005542857143, -0.0003114285714, + -0.0003487755102, -0.0002242857143, +0.0000685714286, +0.0001681632653, + +0.0001806122449, -0.0001557142857, -0.0005542857143, -0.0008718367347, + -0.0014075510204, -0.0012020408163, -0.0006851020408, -0.0004359183673, + +0.0000187755102, +0.0000497959184, -0.0002242857143, -0.0002865306122, + -0.0004483673469, -0.0003612244898, -0.0002242857143, -0.0003300000000, + -0.0002989795918, -0.0005542857143, -0.0008344897959, -0.0009404081633, + -0.0012457142857, -0.0011957142857, -0.0006851020408, -0.0000622448980, + +0.0005293877551, +0.0007412244898, +0.0007910204082, +0.0003551020408, + -0.0001993877551, -0.0005293877551, -0.0011397959184, -0.0011210204082, + -0.0004546938776, +0.0001557142857, +0.0002677551020, +0.0001183673469, + +0.0003051020408, -0.0003114285714, -0.0007412244898, -0.0003861224490, + -0.0002677551020, +0.0004546938776, +0.0008469387755, +0.0005855102041, + +0.0005606122449, -0.0004173469388, -0.0013079591837, -0.0013079591837, + -0.0018497959184, -0.0011210204082, -0.0001742857143, +0.0000312244898, + +0.0008283673469, +0.0006851020408, -0.0005542857143, -0.0009777551020, + -0.0009218367347, -0.0005106122449, +0.0001742857143, +0.0004857142857, + +0.0007536734694, +0.0008532653061, +0.0008283673469, +0.0009030612245, + +0.0008159183673, +0.0004483673469, +0.0001742857143, -0.0002428571429, + -0.0003300000000, -0.0000810204082, -0.0001183673469, +0.0001059183673, + +0.0004110204082, +0.0006165306122, +0.0008159183673, +0.0008969387755, + +0.0008781632653, +0.0010089795918, +0.0009342857143, +0.0007348979592, + +0.0007785714286, +0.0007224489796, +0.0009030612245, +0.0009902040816, + +0.0009155102041, +0.0007722448980, +0.0007163265306, +0.0007661224490, + +0.0008220408163, +0.0007536734694, +0.0007846938776, +0.0011148979592, + +0.0014885714286, +0.0016753061224, +0.0015195918367, +0.0011522448980, + +0.0008906122449, +0.0007597959184, +0.0004795918367, +0.0001059183673, + -0.0001120408163, -0.0001869387755, +0.0001493877551, +0.0006851020408, + +0.0008969387755, +0.0009840816327, +0.0012955102041, +0.0014761224490, + +0.0013265306122, +0.0011210204082, +0.0008657142857, +0.0004048979592, + +0.0001557142857, +0.0000373469388, +0.0001869387755, +0.0007473469388, + +0.0011646938776, +0.0015818367347, +0.0016318367347, +0.0012642857143, + +0.0010587755102, +0.0008718367347, +0.0009528571429, +0.0014697959184, + +0.0018373469388, +0.0019930612245, +0.0017438775510, +0.0011771428571, + +0.0008718367347, +0.0006289795918, +0.0005791836735, +0.0008781632653, + +0.0010275510204, +0.0011085714286, +0.0012706122449, +0.0012206122449, + +0.0008469387755, +0.0005791836735, +0.0005293877551, +0.0005357142857, + +0.0008034693878, +0.0010836734694, +0.0012581632653, +0.0013951020408, + +0.0014387755102, +0.0014200000000, +0.0011646938776, +0.0007661224490, + +0.0003363265306, -0.0000871428571, -0.0001557142857, +0.0000685714286, + +0.0003924489796, +0.0007348979592, +0.0008034693878, +0.0007473469388, + +0.0006477551020, +0.0004483673469, +0.0003800000000, +0.0003924489796, + +0.0006353061224, +0.0008906122449, +0.0008718367347, +0.0007597959184, + +0.0003051020408, -0.0000995918367, -0.0000436734694, -0.0000063265306, + +0.0000312244898, +0.0001183673469, +0.0001742857143, +0.0003175510204, + +0.0004483673469, +0.0006602040816, +0.0008159183673, +0.0008034693878, + +0.0009342857143, +0.0010961224490, +0.0010587755102, +0.0008034693878, + +0.0004483673469, +0.0002055102041, +0.0000124489796, -0.0000685714286, + -0.0000063265306, +0.0000187755102, +0.0001681632653, +0.0004234693878, + +0.0004857142857, +0.0003487755102, +0.0005293877551, +0.0006663265306, + +0.0005855102041, +0.0007846938776, +0.0008532653061, +0.0008159183673, + +0.0009653061224, +0.0008969387755, +0.0006040816327, +0.0002179591837, + -0.0002242857143, -0.0002926530612, -0.0003800000000, -0.0002865306122, + +0.0001930612245, +0.0003551020408, +0.0004359183673, +0.0005979591837, + +0.0005542857143, +0.0006787755102, +0.0008283673469, +0.0007224489796, + +0.0007597959184, +0.0007163265306, +0.0005418367347, +0.0003800000000, + +0.0002553061224, +0.0002989795918, +0.0004173469388, +0.0004857142857, + +0.0004857142857, +0.0003363265306, +0.0002304081633, +0.0001618367347, + +0.0002553061224, +0.0006538775510, +0.0009902040816, +0.0012955102041, + +0.0013079591837, +0.0007785714286, +0.0001493877551, -0.0004359183673, + -0.0005916326531, -0.0002740816327, +0.0000810204082, +0.0002989795918, + +0.0002491836735, +0.0001369387755, +0.0001869387755, +0.0003612244898, + +0.0006040816327, +0.0008159183673, +0.0010089795918, +0.0012581632653, + +0.0012457142857, +0.0013016326531, +0.0012955102041, +0.0008842857143, + +0.0004048979592, -0.0001493877551, -0.0006228571429, -0.0006353061224, + -0.0004795918367, -0.0003424489796, -0.0000810204082, +0.0001059183673, + +0.0002428571429, +0.0004671428571, +0.0005979591837, +0.0006414285714, + +0.0006414285714, +0.0002802040816, +0.0000063265306, -0.0000248979592, + -0.0002428571429, -0.0001369387755, +0.0001432653061, +0.0001618367347, + +0.0000685714286, -0.0001930612245, -0.0004234693878, -0.0003114285714, + -0.0000187755102, +0.0005106122449, +0.0009404081633, +0.0009902040816, + +0.0010524489796, +0.0008469387755, +0.0003612244898, -0.0001183673469, + -0.0005916326531, -0.0008344897959, -0.0009591836735, -0.0010214285714, + -0.0007100000000, -0.0001993877551, +0.0001869387755, +0.0003861224490, + +0.0003675510204, +0.0002677551020, +0.0001432653061, +0.0000934693878, + +0.0000746938776, +0.0000312244898, -0.0000622448980, -0.0001993877551, + -0.0003300000000, -0.0003051020408, -0.0003551020408, -0.0005293877551, + -0.0003736734694, -0.0001557142857, -0.0001432653061, -0.0001493877551, + -0.0002367346939, -0.0000312244898, +0.0003736734694, +0.0003924489796, + +0.0003675510204, +0.0003051020408, -0.0000497959184, -0.0002179591837, + -0.0002179591837, -0.0001869387755, -0.0000373469388, -0.0000124489796, + -0.0001493877551, -0.0003424489796, -0.0005044897959, -0.0003551020408, + +0.0000000000000, +0.0002242857143, +0.0003675510204, +0.0004483673469, + +0.0002989795918, +0.0000871428571, -0.0001120408163, -0.0002802040816, + -0.0003175510204, -0.0002740816327, -0.0002616326531, -0.0003736734694, + -0.0007224489796, -0.0009591836735, -0.0008842857143, -0.0007473469388, + -0.0004795918367, -0.0002367346939, -0.0002242857143, -0.0002865306122, + -0.0002242857143, -0.0002118367347, -0.0003051020408, -0.0004422448980, + -0.0005979591837, -0.0006353061224, -0.0006602040816, -0.0007100000000, + -0.0006787755102, -0.0005481632653, -0.0003175510204, -0.0000995918367, + -0.0000187755102, +0.0000810204082, +0.0002491836735, +0.0002179591837, + +0.0000622448980, -0.0000685714286, -0.0002989795918, -0.0004608163265, + -0.0004732653061, -0.0004297959184, -0.0002865306122, -0.0002491836735, + -0.0003800000000, -0.0004795918367, -0.0005418367347, -0.0006165306122, + -0.0005730612245, -0.0005293877551, -0.0005730612245, -0.0004297959184, + -0.0001432653061, -0.0001244897959, -0.0002802040816, -0.0002865306122, + -0.0003487755102, -0.0004671428571, -0.0003424489796, -0.0002055102041, + -0.0002677551020, -0.0003675510204, -0.0004671428571, -0.0007100000000, + -0.0007846938776, -0.0004981632653, -0.0002989795918, -0.0001930612245, + -0.0001183673469, -0.0002926530612, -0.0005667346939, -0.0007971428571, + -0.0008906122449, -0.0008095918367, -0.0009404081633, -0.0012518367347, + -0.0013453061224, -0.0012330612245, -0.0008906122449, -0.0004422448980, + -0.0002118367347, -0.0002055102041, -0.0003487755102, -0.0005791836735, + -0.0007100000000, -0.0005979591837, -0.0003985714286, -0.0001869387755, + -0.0000497959184, -0.0001244897959, -0.0002865306122, -0.0004857142857, + -0.0006289795918, -0.0005542857143, -0.0004981632653, -0.0006228571429, + -0.0006851020408, -0.0007348979592, -0.0007348979592, -0.0005791836735, + -0.0004110204082, -0.0003363265306, -0.0003551020408, -0.0004981632653, + -0.0006040816327, -0.0006289795918, -0.0005730612245, -0.0004795918367, + -0.0003675510204, -0.0001369387755, -0.0000312244898, -0.0002304081633, + -0.0003985714286, -0.0005106122449, -0.0005357142857, -0.0003424489796, + -0.0001557142857, -0.0001059183673, -0.0001993877551, -0.0005418367347, + -0.0007722448980, -0.0008159183673, -0.0008842857143, -0.0008283673469, + -0.0007163265306, -0.0005791836735, -0.0003924489796, -0.0003363265306, + -0.0003487755102, -0.0004110204082, -0.0005791836735, -0.0006787755102, + -0.0006165306122, -0.0005230612245, -0.0003800000000, -0.0002428571429, + -0.0003051020408, -0.0004234693878, -0.0005855102041, -0.0007722448980, + -0.0007910204082, -0.0005606122449, -0.0003736734694, -0.0003736734694, + -0.0004483673469, -0.0005044897959, -0.0003175510204, -0.0000063265306, + +0.0001993877551, +0.0003051020408, +0.0001742857143, -0.0001244897959, + -0.0003675510204, -0.0005916326531, -0.0007971428571, -0.0008532653061, + -0.0007348979592, -0.0003736734694, +0.0000373469388, +0.0001806122449, + +0.0000187755102, -0.0002491836735, -0.0004297959184, -0.0003924489796, + -0.0002677551020, -0.0001308163265, -0.0000373469388, -0.0000187755102, + +0.0000000000000, +0.0000187755102, -0.0000871428571, -0.0001930612245, + -0.0001869387755, -0.0001059183673, -0.0000373469388, -0.0000248979592, + -0.0000248979592, -0.0000622448980, -0.0000497959184, +0.0000248979592, + +0.0000871428571, +0.0001183673469, +0.0001681632653, +0.0000187755102, + -0.0004110204082, -0.0008283673469, -0.0009653061224, -0.0009279591837, + -0.0006975510204, -0.0001993877551, +0.0001993877551, +0.0002055102041, + +0.0000124489796, -0.0000934693878, -0.0001369387755, -0.0000124489796, + +0.0003114285714, +0.0005606122449, +0.0005418367347, +0.0002926530612, + -0.0000561224490, -0.0003985714286, -0.0006975510204, -0.0007661224490, + -0.0005730612245, -0.0002802040816, -0.0000810204082, -0.0000995918367, + -0.0001806122449, -0.0002304081633, -0.0002179591837, -0.0000497959184, + +0.0000373469388, -0.0000373469388, -0.0001183673469, -0.0001869387755, + -0.0002242857143, -0.0002491836735, -0.0002242857143, -0.0001930612245, + -0.0002179591837, -0.0003300000000, -0.0004732653061, -0.0005667346939, + -0.0005293877551, -0.0003985714286, -0.0002553061224, -0.0001681632653, + -0.0001618367347, -0.0002428571429, -0.0002428571429, -0.0001059183673, + -0.0000373469388, -0.0001557142857, -0.0003363265306, -0.0003424489796, + -0.0001806122449, -0.0000436734694, +0.0000685714286, +0.0000746938776, + -0.0000685714286, -0.0002055102041, -0.0003551020408, -0.0004110204082, + -0.0002989795918, -0.0002118367347, -0.0001742857143, -0.0001806122449, + -0.0001681632653, -0.0000063265306, +0.0000810204082, +0.0000934693878, + +0.0001059183673, +0.0000746938776, +0.0000000000000, -0.0000934693878, + -0.0000497959184, +0.0000934693878, +0.0000561224490, -0.0000685714286, + -0.0001618367347, -0.0001493877551, +0.0000312244898, +0.0001308163265, + +0.0001308163265, +0.0000995918367, -0.0000934693878, -0.0003612244898, + -0.0004173469388, -0.0003800000000, -0.0001993877551, +0.0000871428571, + +0.0002367346939, +0.0003924489796, +0.0004608163265, +0.0002367346939, + -0.0000561224490, -0.0003051020408, -0.0004234693878, -0.0002677551020, + -0.0002677551020, -0.0002989795918, -0.0001432653061, -0.0001618367347, + -0.0002428571429, -0.0002616326531, -0.0001869387755, -0.0000497959184, + -0.0001244897959, -0.0003114285714, -0.0003800000000, -0.0004359183673, + -0.0001681632653, +0.0002677551020, +0.0004732653061, +0.0004981632653, + +0.0002367346939, -0.0000373469388, -0.0000063265306, +0.0000746938776, + +0.0002491836735, +0.0004359183673, +0.0001993877551, +0.0000000000000, + +0.0000871428571, +0.0001183673469, +0.0001369387755, +0.0002553061224, + +0.0001869387755, -0.0000561224490, -0.0002989795918, -0.0003736734694, + -0.0003424489796, -0.0001869387755, +0.0001493877551, +0.0002740816327, + +0.0000622448980, -0.0001806122449, -0.0002367346939, -0.0000871428571, + +0.0001681632653, +0.0002926530612, +0.0003051020408, +0.0003051020408, + +0.0001869387755, +0.0002242857143, +0.0004422448980, +0.0005542857143, + +0.0005418367347, +0.0004359183673, +0.0001806122449, +0.0000810204082, + -0.0000685714286, -0.0001244897959, +0.0000622448980, +0.0001059183673, + +0.0002242857143, +0.0005418367347, +0.0007412244898, +0.0008593877551, + +0.0008842857143, +0.0007412244898, +0.0006165306122, +0.0003300000000, + +0.0000063265306, -0.0000995918367, -0.0000685714286, +0.0000312244898, + +0.0001869387755, +0.0003985714286, +0.0004795918367, +0.0004546938776, + +0.0005542857143, +0.0005979591837, +0.0004795918367, +0.0004981632653, + +0.0005542857143, +0.0004608163265, +0.0003924489796, +0.0003675510204, + +0.0002865306122, +0.0001120408163, -0.0000124489796, +0.0000373469388, + +0.0000685714286, +0.0000497959184, +0.0001308163265, +0.0001681632653, + +0.0001120408163, +0.0000934693878, +0.0000746938776, +0.0000561224490, + +0.0000685714286, +0.0000497959184, +0.0001432653061, +0.0002055102041, + +0.0001681632653, +0.0001618367347, +0.0001369387755, +0.0001244897959, + +0.0001557142857, +0.0001493877551, +0.0001806122449, +0.0002118367347, + +0.0001183673469, +0.0001742857143, +0.0003487755102, +0.0004795918367, + +0.0006912244898, +0.0009279591837, +0.0008718367347, +0.0005169387755, + +0.0001244897959, -0.0001869387755, -0.0002677551020, -0.0001369387755, + +0.0000561224490, +0.0001742857143, +0.0002242857143, +0.0002428571429, + +0.0003363265306, +0.0004546938776, +0.0005791836735, +0.0006851020408, + +0.0006663265306, +0.0004732653061, +0.0002304081633, +0.0001681632653, + +0.0002428571429, +0.0003300000000, +0.0004483673469, +0.0004671428571, + +0.0003985714286, +0.0004483673469, +0.0005230612245, +0.0004981632653, + +0.0003675510204, +0.0003424489796, +0.0003675510204, +0.0002865306122, + +0.0002926530612, +0.0004732653061, +0.0006353061224, +0.0006726530612, + +0.0005606122449, +0.0003675510204, +0.0001806122449, +0.0000063265306, + +0.0000000000000, +0.0000995918367, +0.0001183673469, +0.0001493877551, + +0.0002553061224, +0.0003675510204, +0.0004732653061, +0.0005730612245, + +0.0005169387755, +0.0004483673469, +0.0003300000000, +0.0001120408163, + +0.0000810204082, +0.0001742857143, +0.0001806122449, +0.0002740816327, + +0.0002989795918, +0.0003175510204, +0.0005542857143, +0.0006228571429, + +0.0005730612245, +0.0005169387755, +0.0004048979592, +0.0003487755102, + +0.0003487755102, +0.0003612244898, +0.0004234693878, +0.0004048979592, + +0.0001618367347, -0.0000746938776, -0.0001493877551, -0.0001120408163, + +0.0000312244898, +0.0003175510204, +0.0004981632653, +0.0004920408163, + +0.0003612244898, +0.0001120408163, -0.0000436734694, -0.0001432653061, + -0.0000746938776, +0.0001618367347, +0.0003424489796, +0.0003736734694, + +0.0003051020408, +0.0001557142857, +0.0000746938776, +0.0000000000000, + -0.0000622448980, +0.0000000000000, +0.0000871428571, +0.0001493877551, + +0.0001618367347, +0.0001183673469, -0.0000497959184, -0.0002179591837, + -0.0001930612245, -0.0000871428571, +0.0000187755102, +0.0001183673469, + +0.0001742857143, +0.0002304081633, +0.0002926530612, +0.0003300000000, + +0.0003051020408, +0.0001681632653, +0.0000746938776, +0.0000000000000, + -0.0000934693878, -0.0000497959184, +0.0000000000000, +0.0000373469388, + +0.0001059183673, +0.0000934693878, +0.0000871428571, +0.0001993877551, + +0.0003051020408, +0.0005169387755, +0.0006912244898, +0.0006228571429, + +0.0004422448980, +0.0002367346939, +0.0001618367347, +0.0002179591837, + +0.0001930612245, +0.0001742857143, +0.0002428571429, +0.0001869387755, + +0.0000685714286, +0.0000000000000, +0.0000187755102, +0.0000373469388, + -0.0000187755102, -0.0000436734694, -0.0000436734694, -0.0000373469388, + -0.0000436734694, -0.0001059183673, -0.0000871428571, +0.0000312244898, + +0.0002304081633, +0.0003861224490, +0.0003800000000, +0.0003736734694, + +0.0003487755102, +0.0001618367347, +0.0000622448980, +0.0001308163265, + +0.0002677551020, +0.0003861224490, +0.0003675510204, +0.0002740816327, + +0.0001120408163, -0.0000561224490, -0.0000934693878, -0.0000810204082, + -0.0001244897959, -0.0002179591837, -0.0003861224490, -0.0004422448980, + -0.0003675510204, -0.0002616326531, -0.0000124489796, +0.0001681632653, + +0.0001681632653, +0.0002118367347, +0.0002740816327, +0.0002740816327, + +0.0002242857143, +0.0001681632653, +0.0001493877551, +0.0000124489796, + -0.0001183673469, -0.0001308163265, -0.0001369387755, -0.0000871428571, + +0.0000124489796, +0.0000561224490, +0.0000497959184, +0.0001244897959, + +0.0002118367347, +0.0002304081633, +0.0001369387755, -0.0000810204082, + -0.0003800000000, -0.0006851020408, -0.0008283673469, -0.0006104081633, + -0.0001806122449, +0.0001557142857, +0.0003238775510, +0.0002926530612, + +0.0001681632653, +0.0000312244898, -0.0000622448980, -0.0000561224490, + -0.0000561224490, -0.0000934693878, -0.0000248979592, +0.0000436734694, + +0.0000373469388, +0.0000000000000, -0.0001369387755, -0.0003051020408, + -0.0004110204082, -0.0003924489796, -0.0001806122449, +0.0000248979592, + +0.0001493877551, +0.0001059183673, -0.0001557142857, -0.0003924489796, + -0.0004234693878, -0.0003300000000, -0.0000934693878, +0.0000312244898, + -0.0000871428571, -0.0003175510204, -0.0004857142857, -0.0005230612245, + -0.0005357142857, -0.0004795918367, -0.0002677551020, -0.0001059183673, + -0.0000497959184, +0.0000187755102, -0.0000187755102, -0.0001557142857, + -0.0002304081633, -0.0002926530612, -0.0003736734694, -0.0004359183673, + -0.0004048979592, -0.0003114285714, -0.0002367346939, -0.0002055102041, + -0.0002242857143, -0.0003051020408, -0.0003675510204, -0.0003175510204, + -0.0001930612245, -0.0001308163265, -0.0001244897959, -0.0002179591837, + -0.0004483673469, -0.0005418367347, -0.0004608163265, -0.0003612244898, + -0.0002179591837, -0.0001244897959, -0.0001059183673, -0.0001120408163, + -0.0001869387755, -0.0001930612245, -0.0001557142857, -0.0001557142857, + +0.0000063265306, +0.0001930612245, +0.0001869387755, +0.0001618367347, + +0.0000685714286, -0.0000497959184, -0.0001618367347, -0.0003861224490, + -0.0005293877551, -0.0006228571429, -0.0007036734694, -0.0005730612245, + -0.0003363265306, -0.0001742857143, +0.0000187755102, +0.0001557142857, + +0.0001806122449, +0.0002553061224, +0.0002491836735, +0.0001493877551, + +0.0000746938776, -0.0000622448980, -0.0002740816327, -0.0004297959184, + -0.0004981632653, -0.0004234693878, -0.0002677551020, -0.0001557142857, + +0.0000000000000, +0.0001308163265, +0.0001618367347, +0.0001806122449, + +0.0001993877551, +0.0001681632653, +0.0000871428571, -0.0000436734694, + -0.0001618367347, -0.0002865306122, -0.0003612244898, -0.0002553061224, + -0.0001308163265, -0.0000746938776, -0.0000622448980, -0.0001183673469, + -0.0001618367347, -0.0001493877551, -0.0001120408163, -0.0000871428571, + -0.0000995918367, -0.0000871428571, -0.0000871428571, -0.0000124489796, + +0.0001183673469, +0.0001493877551, +0.0001681632653, +0.0001369387755, + +0.0000312244898, +0.0000373469388, +0.0001120408163, +0.0001244897959, + +0.0000000000000, -0.0001432653061, -0.0001869387755, -0.0001742857143, + -0.0000685714286, +0.0000000000000, -0.0000248979592, -0.0000312244898, + -0.0001869387755, -0.0004048979592, -0.0004483673469, -0.0002989795918, + -0.0000248979592, +0.0001869387755, +0.0002055102041, +0.0001308163265, + +0.0000000000000, -0.0000561224490, -0.0000685714286, -0.0001742857143, + -0.0001681632653, -0.0000746938776, -0.0001183673469, -0.0000685714286, + +0.0001369387755, +0.0002865306122, +0.0003238775510, +0.0002304081633, + +0.0000746938776, -0.0001120408163, -0.0003424489796, -0.0003800000000, + -0.0003114285714, -0.0002179591837, -0.0000561224490, -0.0000124489796, + +0.0000000000000, +0.0000685714286, +0.0000561224490, +0.0000746938776, + +0.0000810204082, -0.0000685714286, -0.0002118367347, -0.0002926530612, + -0.0003175510204, -0.0002616326531, -0.0002118367347, -0.0002179591837, + -0.0002304081633, -0.0002179591837, -0.0001432653061, -0.0000312244898, + -0.0000248979592, -0.0000746938776, -0.0000561224490, -0.0000187755102, + +0.0000810204082, +0.0001618367347, +0.0000995918367, +0.0000248979592, + -0.0000810204082, -0.0002428571429, -0.0003238775510, -0.0003363265306, + -0.0002802040816, -0.0001244897959, -0.0000248979592, -0.0000312244898, + -0.0001308163265, -0.0002616326531, -0.0003175510204, -0.0003675510204, + -0.0003363265306, -0.0001869387755, -0.0000934693878, -0.0000373469388, + +0.0000063265306, -0.0000063265306, +0.0000000000000, -0.0000436734694, + -0.0000622448980, +0.0000000000000, +0.0000312244898, +0.0000871428571, + +0.0001432653061, +0.0000871428571, +0.0000373469388, +0.0000063265306, + -0.0000436734694, -0.0000248979592, -0.0000436734694, -0.0001183673469, + -0.0001369387755, -0.0001681632653, -0.0002179591837, -0.0002304081633, + -0.0002304081633, -0.0001869387755, -0.0001618367347, -0.0001557142857, + -0.0001493877551, -0.0001432653061, -0.0001369387755, +0.0000000000000, + +0.0001993877551, +0.0002491836735, +0.0001806122449, -0.0000124489796, + -0.0002740816327, -0.0004173469388, -0.0004795918367, -0.0003800000000, + -0.0001308163265, +0.0000497959184, +0.0001930612245, +0.0001493877551, + -0.0000622448980, -0.0001742857143, -0.0003300000000, -0.0004732653061, + -0.0004608163265, -0.0004297959184, -0.0003612244898, -0.0002367346939, + -0.0001432653061, -0.0000622448980, -0.0000124489796, +0.0000000000000, + +0.0000187755102, +0.0000063265306, +0.0000124489796, +0.0000685714286, + +0.0001432653061, +0.0001432653061, +0.0000063265306, -0.0001308163265, + -0.0002553061224, -0.0003551020408, -0.0003985714286, -0.0004422448980, + -0.0004857142857, -0.0004110204082, -0.0002242857143, -0.0000561224490, + +0.0000561224490, +0.0001681632653, +0.0002055102041, +0.0001244897959, + +0.0000497959184, -0.0000746938776, -0.0001432653061, -0.0000746938776, + +0.0000063265306, +0.0000436734694, -0.0000063265306, -0.0001120408163, + -0.0001493877551, -0.0001432653061, -0.0000622448980, +0.0000312244898, + +0.0000810204082, +0.0000746938776, +0.0000000000000, -0.0001618367347, + -0.0002553061224, -0.0001742857143, +0.0000000000000, +0.0000871428571, + +0.0001432653061, +0.0001432653061, +0.0000561224490, +0.0000497959184, + +0.0001493877551, +0.0002304081633, +0.0001993877551, +0.0000497959184, + -0.0000622448980, -0.0001120408163, -0.0000810204082, +0.0000561224490, + +0.0001869387755, +0.0002616326531, +0.0002616326531, +0.0001432653061, + +0.0000124489796, -0.0000871428571, -0.0001244897959, -0.0000497959184, + +0.0000000000000, +0.0000312244898, +0.0000995918367, +0.0001183673469, + +0.0001120408163, +0.0001930612245, +0.0003175510204, +0.0004857142857, + +0.0005293877551, +0.0004173469388, +0.0002553061224, +0.0000995918367, + +0.0000312244898, +0.0000934693878, +0.0001183673469, +0.0001618367347, + +0.0002428571429, +0.0002740816327, +0.0002367346939, +0.0001432653061, + +0.0001432653061, +0.0002553061224, +0.0003985714286, +0.0004857142857, + +0.0003800000000, +0.0002304081633, +0.0002055102041, +0.0002242857143, + +0.0002677551020, +0.0002553061224, +0.0001432653061, +0.0000995918367, + +0.0001059183673, +0.0000622448980, +0.0000000000000, -0.0000312244898, + +0.0001059183673, +0.0003363265306, +0.0003736734694, +0.0002367346939, + +0.0000685714286, -0.0000561224490, -0.0000934693878, -0.0001432653061, + -0.0001993877551, -0.0001183673469, +0.0000063265306, +0.0001308163265, + +0.0002367346939, +0.0002304081633, +0.0002242857143, +0.0002428571429, + +0.0001806122449, +0.0000685714286, +0.0000000000000, -0.0000063265306, + +0.0000312244898, +0.0001244897959, +0.0002553061224, +0.0003736734694, + +0.0004920408163, +0.0004920408163, +0.0002553061224, -0.0000995918367, + -0.0003551020408, -0.0003612244898, -0.0001930612245, +0.0000312244898, + +0.0002616326531, +0.0003424489796, +0.0002865306122, +0.0002118367347, + +0.0001869387755, +0.0001742857143, +0.0001493877551, +0.0000934693878, + -0.0000063265306, -0.0001183673469, -0.0001369387755, -0.0001059183673, + +0.0000000000000, +0.0001369387755, +0.0002367346939, +0.0002367346939, + +0.0000995918367, -0.0000497959184, -0.0001557142857, -0.0002553061224, + -0.0002616326531, -0.0001493877551, -0.0000373469388, -0.0000312244898, + -0.0001120408163, -0.0001183673469, -0.0000373469388, +0.0000622448980, + +0.0001432653061, +0.0001806122449, +0.0001183673469, -0.0000312244898, + -0.0001930612245, -0.0003300000000, -0.0004234693878, -0.0003612244898, + -0.0001869387755, -0.0000810204082, -0.0000312244898, -0.0000497959184, + -0.0001493877551, -0.0001993877551, -0.0001618367347, -0.0000622448980, + +0.0000312244898, +0.0000934693878, +0.0001183673469, +0.0000934693878, + -0.0000124489796, -0.0000810204082, -0.0000248979592, +0.0000124489796, + +0.0000373469388, +0.0001059183673, +0.0000934693878, +0.0000312244898, + +0.0000312244898, +0.0000063265306, +0.0000373469388, +0.0001369387755, + +0.0000746938776, -0.0000934693878, -0.0002118367347, -0.0002677551020, + -0.0002055102041, -0.0000436734694, +0.0000436734694, +0.0000561224490, + -0.0000187755102, -0.0001742857143, -0.0002242857143, -0.0001432653061, + -0.0000561224490, +0.0000622448980, +0.0001308163265, +0.0000810204082, + +0.0000934693878, +0.0001059183673, +0.0000561224490, +0.0000497959184, + +0.0000622448980, +0.0000373469388, +0.0000063265306, +0.0000063265306, + +0.0000685714286, +0.0001183673469, +0.0001183673469, +0.0001308163265, + +0.0001618367347, +0.0002118367347, +0.0001742857143, +0.0000871428571, + +0.0000622448980, +0.0000373469388, +0.0000248979592, +0.0000810204082, + +0.0001681632653, +0.0002367346939, +0.0002428571429, +0.0002055102041, + +0.0001742857143, +0.0001308163265, +0.0001308163265, +0.0001059183673, + +0.0000934693878, +0.0000871428571, +0.0000622448980, +0.0001432653061, + +0.0002553061224, +0.0002926530612, +0.0003363265306, +0.0002865306122, + +0.0002179591837, +0.0002242857143, +0.0001993877551, +0.0002616326531, + +0.0003675510204, +0.0003800000000, +0.0003551020408, +0.0002740816327, + +0.0001742857143, +0.0001557142857, +0.0001308163265, +0.0000685714286, + +0.0000436734694, +0.0000810204082, +0.0001369387755, +0.0001869387755, + +0.0002118367347, +0.0002367346939, +0.0002428571429, +0.0001742857143, + +0.0000995918367, +0.0000746938776, +0.0000497959184, +0.0000561224490, + +0.0000810204082, +0.0000746938776, +0.0000561224490, +0.0000436734694, + +0.0000561224490, +0.0001308163265, +0.0002802040816, +0.0004422448980, + +0.0005606122449, +0.0005855102041, +0.0005230612245, +0.0003487755102, + +0.0001369387755, +0.0000124489796, -0.0000312244898, -0.0000622448980, + -0.0000685714286, -0.0000373469388, -0.0000622448980, -0.0000871428571, + -0.0000436734694, +0.0000312244898, +0.0001183673469, +0.0002055102041, + +0.0002242857143, +0.0001869387755, +0.0001183673469, +0.0000497959184, + +0.0000248979592, +0.0000187755102, +0.0000312244898, +0.0000497959184, + -0.0000187755102, -0.0000561224490, -0.0000063265306, -0.0000124489796, + -0.0000312244898, +0.0000000000000, +0.0000000000000, +0.0000312244898, + +0.0001059183673, +0.0001681632653, +0.0001869387755, +0.0001308163265, + +0.0000685714286, +0.0000063265306, -0.0000995918367, -0.0001493877551, + -0.0001308163265, -0.0000995918367, +0.0000000000000, +0.0000685714286, + +0.0000436734694, -0.0000187755102, -0.0000497959184, -0.0000124489796, + +0.0000124489796, +0.0000124489796, +0.0000312244898, +0.0000561224490, + +0.0001059183673, +0.0001618367347, +0.0001369387755, +0.0000312244898, + -0.0000746938776, -0.0000871428571, -0.0000871428571, -0.0000871428571, + -0.0000373469388, -0.0000312244898, -0.0000248979592, -0.0000063265306, + -0.0000248979592, -0.0000934693878, -0.0001557142857, -0.0001806122449, + -0.0001244897959, -0.0000124489796, +0.0000746938776, +0.0000746938776, + -0.0000436734694, -0.0001993877551, -0.0003051020408, -0.0003300000000, + -0.0002926530612, -0.0002428571429, -0.0002118367347, -0.0001806122449, + -0.0001308163265, -0.0000561224490, +0.0000373469388, +0.0001308163265, + +0.0001618367347, +0.0001308163265, +0.0000746938776, +0.0000124489796, + -0.0000124489796, +0.0000063265306, +0.0000063265306, +0.0000000000000, + -0.0000063265306, -0.0000871428571, -0.0001493877551, -0.0001369387755, + -0.0001493877551, -0.0001681632653, -0.0001681632653, -0.0001369387755, + -0.0000436734694, +0.0000373469388, +0.0000248979592, -0.0000248979592, + -0.0000685714286, -0.0000436734694, +0.0000373469388, +0.0000934693878, + +0.0000622448980, +0.0000187755102, -0.0000063265306, -0.0000187755102, + -0.0000373469388, -0.0000685714286, -0.0000561224490, +0.0000000000000, + +0.0000187755102, +0.0000187755102, -0.0000497959184, -0.0001557142857, + -0.0001557142857, -0.0001120408163, -0.0000373469388, +0.0000685714286, + +0.0001183673469, +0.0001120408163, +0.0000436734694, -0.0000497959184, + -0.0001183673469, -0.0001557142857, -0.0001244897959, -0.0000436734694, + +0.0000063265306, +0.0000871428571, +0.0001930612245, +0.0002616326531, + +0.0002677551020, +0.0001493877551, -0.0000373469388, -0.0001493877551, + -0.0001681632653, -0.0001869387755, -0.0001742857143, -0.0001308163265, + -0.0000561224490, +0.0000436734694, +0.0001308163265, +0.0001432653061, + +0.0001369387755, +0.0000995918367, -0.0000063265306, -0.0001059183673, + -0.0001432653061, -0.0001432653061, -0.0000622448980, +0.0000000000000, + +0.0000124489796, +0.0000124489796, +0.0000000000000, -0.0000561224490, + -0.0001120408163, -0.0001369387755, -0.0001869387755, -0.0001806122449, + -0.0001059183673, -0.0000436734694, -0.0000063265306, +0.0000000000000, + -0.0000497959184, -0.0001308163265, -0.0001369387755, -0.0001183673469, + -0.0000871428571, -0.0000248979592, -0.0000124489796, -0.0000312244898, + -0.0000561224490, -0.0000436734694, +0.0000312244898, +0.0001618367347, + +0.0002179591837, +0.0002304081633, +0.0001681632653, +0.0000373469388, + -0.0000810204082, -0.0001869387755, -0.0003114285714, -0.0003736734694, + -0.0002926530612, -0.0001120408163, +0.0000685714286, +0.0001993877551, + +0.0001869387755, +0.0000934693878, +0.0000000000000, -0.0001120408163, + -0.0001930612245, -0.0001742857143, -0.0001059183673, -0.0000497959184, + -0.0000436734694, -0.0000373469388, -0.0000063265306, -0.0000063265306, + +0.0000124489796, +0.0001244897959, +0.0002367346939, +0.0003114285714, + +0.0003238775510, +0.0002677551020, +0.0001806122449, +0.0000436734694, + -0.0000871428571, -0.0001806122449, -0.0002428571429, -0.0002055102041, + -0.0000746938776, -0.0000063265306, +0.0000373469388, +0.0000746938776, + +0.0000810204082, +0.0000995918367, +0.0001308163265, +0.0001618367347, + +0.0001432653061, +0.0000312244898, -0.0000436734694, -0.0001059183673, + -0.0001432653061, -0.0000871428571, -0.0000248979592, -0.0000497959184, + -0.0000746938776, -0.0001369387755, -0.0002118367347, -0.0002118367347, + -0.0000995918367, +0.0000187755102, +0.0000746938776, +0.0000934693878, + +0.0000871428571, +0.0000622448980, +0.0000373469388, +0.0000373469388, + +0.0000497959184, +0.0000312244898, -0.0000248979592, -0.0001244897959, + -0.0002677551020, -0.0003300000000, -0.0002428571429, -0.0001869387755, + -0.0001120408163, +0.0000000000000, +0.0000995918367, +0.0001806122449, + +0.0002242857143, +0.0002242857143, +0.0002118367347, +0.0001493877551, + +0.0000312244898, -0.0000622448980, -0.0001183673469, -0.0001308163265, + -0.0001244897959, -0.0001681632653, -0.0002677551020, -0.0003175510204, + -0.0002802040816, -0.0002055102041, -0.0000746938776, +0.0000746938776, + +0.0001308163265, +0.0001183673469, +0.0000685714286, -0.0000063265306, + -0.0000436734694, -0.0000373469388, +0.0000000000000, +0.0000497959184, + -0.0000187755102, -0.0001930612245, -0.0002989795918, -0.0003175510204, + -0.0002304081633, -0.0000622448980, +0.0000810204082, +0.0001742857143, + +0.0001618367347, +0.0000561224490, -0.0000561224490, -0.0001806122449, + -0.0002616326531, -0.0002428571429, -0.0001869387755, -0.0001369387755, + -0.0001059183673, -0.0000995918367, -0.0000934693878, -0.0000561224490, + +0.0000187755102, +0.0000934693878, +0.0001183673469, +0.0001059183673, + +0.0000746938776, +0.0000373469388, +0.0000187755102, -0.0000561224490, + -0.0001993877551, -0.0002802040816, -0.0002677551020, -0.0002055102041, + -0.0000810204082, +0.0000248979592, +0.0000373469388, -0.0000124489796, + -0.0000312244898, -0.0000248979592, -0.0000312244898, +0.0000000000000, + +0.0000622448980, +0.0001120408163, +0.0001183673469, +0.0000746938776, + +0.0000063265306, -0.0000810204082, -0.0001244897959, -0.0000497959184, + -0.0000187755102, -0.0000561224490, -0.0001059183673, -0.0001493877551, + -0.0001618367347, -0.0001120408163, -0.0000124489796, +0.0000871428571, + +0.0001244897959, +0.0001369387755, +0.0001244897959, +0.0000124489796, + -0.0000746938776, -0.0000995918367, -0.0000622448980, +0.0000063265306, + +0.0000497959184, +0.0000497959184, +0.0000497959184, +0.0000373469388, + +0.0000124489796, -0.0000436734694, -0.0001183673469, -0.0001120408163, + -0.0000871428571, -0.0000561224490, -0.0000248979592, -0.0000497959184, + -0.0000373469388, +0.0000063265306, -0.0000063265306, +0.0000000000000, + +0.0000124489796, -0.0000187755102, -0.0000746938776, -0.0001244897959, + -0.0001369387755, -0.0000746938776, +0.0000248979592, +0.0001557142857, + +0.0001806122449, +0.0000871428571, +0.0000248979592, +0.0000000000000, + +0.0000187755102, +0.0000622448980, +0.0000436734694, +0.0000063265306, + -0.0000373469388, -0.0000871428571, -0.0000810204082, -0.0000685714286, + -0.0000436734694, -0.0000063265306, +0.0000000000000, +0.0000248979592, + +0.0000746938776, +0.0001059183673, +0.0001369387755, +0.0001493877551, + +0.0001432653061, +0.0001618367347, +0.0001681632653, +0.0001120408163, + +0.0000312244898, -0.0000187755102, -0.0000436734694, -0.0000497959184, + -0.0000248979592, +0.0000000000000, +0.0000063265306, +0.0000124489796, + +0.0000248979592, +0.0000373469388, +0.0000436734694, +0.0000561224490, + +0.0000934693878, +0.0000810204082, +0.0000436734694, +0.0000312244898, + +0.0000312244898, +0.0000000000000, -0.0000497959184, -0.0000810204082, + -0.0001183673469, -0.0001557142857, -0.0001618367347, -0.0001244897959, + -0.0000685714286, -0.0000373469388, +0.0000000000000, +0.0000436734694, + +0.0000248979592, +0.0000124489796, +0.0000187755102, +0.0000000000000, + +0.0000312244898, +0.0000746938776, +0.0001059183673, +0.0001308163265, + +0.0001059183673, +0.0000622448980, +0.0000497959184, +0.0000810204082, + +0.0001183673469, +0.0001618367347, +0.0001742857143, +0.0001120408163, + -0.0000063265306, -0.0000436734694, -0.0000685714286, -0.0001244897959, + -0.0001432653061, -0.0001059183673, -0.0000373469388, +0.0000000000000, + +0.0000000000000, -0.0000124489796, -0.0000561224490, -0.0000934693878, + -0.0000312244898, +0.0000561224490, +0.0001183673469, +0.0001493877551, + +0.0001120408163, +0.0000497959184, +0.0000124489796, -0.0000063265306, + -0.0000248979592, -0.0000063265306, +0.0000436734694, +0.0000561224490, + -0.0000063265306, -0.0001183673469, -0.0002179591837, -0.0002491836735, + -0.0001742857143, -0.0000934693878, -0.0000436734694, -0.0000248979592, + -0.0000248979592, -0.0000248979592, -0.0000436734694, -0.0000746938776, + -0.0000497959184, +0.0000063265306, +0.0000436734694, +0.0000373469388, + +0.0000312244898, +0.0000561224490, +0.0000934693878, +0.0001308163265, + +0.0001493877551, +0.0000995918367, +0.0000187755102, -0.0000810204082, + -0.0001369387755, -0.0001493877551, -0.0001432653061, -0.0000810204082, + +0.0000312244898, +0.0001244897959, +0.0001493877551, +0.0001120408163, + +0.0000373469388, -0.0000063265306, -0.0000124489796, +0.0000248979592, + +0.0000934693878, +0.0000871428571, +0.0000000000000, -0.0000934693878, + -0.0001806122449, -0.0002242857143, -0.0001930612245, -0.0001059183673, + -0.0000248979592, +0.0000000000000, +0.0000063265306, +0.0000000000000, + +0.0000000000000, +0.0000373469388, +0.0000810204082, +0.0001059183673, + +0.0001369387755, +0.0001183673469, +0.0000436734694, -0.0000063265306, + -0.0000497959184, -0.0000685714286, -0.0001183673469, -0.0002055102041, + -0.0002428571429, -0.0001930612245, -0.0001183673469, +0.0000000000000, + +0.0001059183673, +0.0001432653061, +0.0001120408163, +0.0000746938776, + +0.0000373469388, -0.0000124489796, -0.0000746938776, -0.0001059183673, + -0.0001059183673, -0.0000871428571, -0.0000685714286, -0.0000497959184, + -0.0000436734694, -0.0000561224490, -0.0000622448980, -0.0000746938776, + -0.0000934693878, -0.0000934693878, -0.0000622448980, +0.0000000000000, + +0.0001059183673, +0.0001869387755, +0.0001930612245, +0.0001432653061, + +0.0000685714286, -0.0000124489796, -0.0000436734694, -0.0000124489796, + +0.0000497959184, +0.0001244897959, +0.0001432653061, +0.0000685714286, + +0.0000063265306, -0.0000063265306, +0.0000373469388, +0.0000995918367, + +0.0001369387755, +0.0001244897959, +0.0000685714286, +0.0000063265306, + -0.0000312244898, -0.0000746938776, -0.0000871428571, -0.0000436734694, + +0.0000248979592, +0.0000871428571, +0.0000871428571, +0.0000622448980, + +0.0000497959184, +0.0000373469388, +0.0000248979592, +0.0000312244898, + +0.0000373469388, +0.0000373469388, +0.0000000000000, -0.0000248979592, + +0.0000000000000, +0.0000810204082, +0.0001681632653, +0.0002118367347, + +0.0001742857143, +0.0000561224490, -0.0000934693878, -0.0001432653061, + -0.0000995918367, -0.0000124489796, +0.0000497959184, +0.0000995918367, + +0.0001244897959, +0.0001493877551, +0.0001557142857, +0.0001493877551, + +0.0001308163265, +0.0001120408163, +0.0000871428571, +0.0000561224490, + +0.0000124489796, +0.0000000000000, +0.0000561224490, +0.0001493877551, + +0.0001993877551, +0.0001681632653, +0.0000871428571, +0.0000561224490, + +0.0001120408163, +0.0001742857143, +0.0001993877551, +0.0001742857143, + +0.0001244897959, +0.0000561224490, +0.0000000000000, -0.0000063265306, + +0.0000000000000, +0.0000000000000, -0.0000063265306, -0.0000373469388, + -0.0000436734694, -0.0000248979592, +0.0000248979592, +0.0000934693878, + +0.0001493877551, +0.0001369387755, +0.0001059183673, +0.0000810204082, + +0.0000248979592, -0.0000187755102, -0.0000561224490, -0.0000622448980, + +0.0000187755102, +0.0001244897959, +0.0001432653061, +0.0000934693878, + +0.0000000000000, -0.0000746938776, -0.0001120408163, -0.0001308163265, + -0.0000871428571, -0.0000124489796, +0.0000312244898, +0.0000497959184, + +0.0000436734694, +0.0000124489796, +0.0000248979592, +0.0000622448980, + +0.0000995918367, +0.0001244897959, +0.0001244897959, +0.0001059183673, + +0.0000685714286, +0.0000561224490, +0.0000622448980, +0.0000746938776, + +0.0000934693878, +0.0001059183673, +0.0000312244898, -0.0000436734694, + -0.0000561224490, -0.0000436734694, -0.0000248979592, +0.0000124489796, + +0.0000685714286, +0.0001244897959, +0.0001183673469, +0.0000934693878, + +0.0000312244898, -0.0000312244898, -0.0000561224490, -0.0000187755102, + +0.0000497959184, +0.0001432653061, +0.0002118367347, +0.0002553061224, + +0.0002367346939, +0.0001557142857, +0.0000995918367, +0.0000561224490, + +0.0000436734694, +0.0000436734694, +0.0000000000000, -0.0000746938776, + -0.0001618367347, -0.0002367346939, -0.0002242857143, -0.0001493877551, + -0.0000871428571, -0.0000187755102, +0.0000561224490, +0.0000871428571, + +0.0000934693878, +0.0000810204082, +0.0000561224490, +0.0000312244898, + +0.0000124489796, -0.0000063265306, -0.0000248979592, -0.0000312244898, + -0.0000436734694, -0.0000934693878, -0.0001308163265, -0.0001369387755, + -0.0000746938776, +0.0000124489796, +0.0000436734694, +0.0000561224490, + +0.0000312244898, -0.0000561224490, -0.0001308163265, -0.0002118367347, + -0.0002677551020, -0.0002304081633, -0.0001618367347, -0.0000934693878, + -0.0000497959184, -0.0000685714286, -0.0001120408163, -0.0001432653061, + -0.0001369387755, -0.0000685714286, -0.0000187755102 +}; diff --git a/plugins/ladspa_effect/swh/impulses/16-marshall-jcm2000-sm57.h b/plugins/ladspa_effect/swh/impulses/16-marshall-jcm2000-sm57.h new file mode 100644 index 000000000..1c0312f5a --- /dev/null +++ b/plugins/ladspa_effect/swh/impulses/16-marshall-jcm2000-sm57.h @@ -0,0 +1,1167 @@ +float marshall_jcm2000_sm57[] = { + +0.0000000000000, -0.0000060311284, -0.0000178988327, -0.0000356031128, + -0.0000416342412, -0.0000712062257, -0.0000949416342, -0.0000653696498, + -0.0002138132296, +0.0000118677043, +0.0000060311284, -0.0004215953307, + -0.0001424124514, +0.0001484435798, +0.0000653696498, -0.0001068093385, + -0.0002315175097, -0.0002256809339, -0.0001840466926, -0.0001365758755, + -0.0000949416342, -0.0001009727626, -0.0001128404669, -0.0001247081712, + -0.0001840466926, -0.0001603112840, -0.0001959143969, -0.0001840466926, + -0.0001782101167, -0.0001782101167, -0.0001840466926, -0.0002077821012, + -0.0002196498054, -0.0002494163424, -0.0002433852140, -0.0002671206226, + -0.0002494163424, -0.0002731517510, -0.0002494163424, -0.0002433852140, + -0.0002256809339, -0.0002433852140, -0.0003027237354, -0.0003503891051, + -0.0003799610895, -0.0004867704280, -0.0004690661479, -0.0004392996109, + -0.0002968871595, +0.0008073929961, +0.0002731517510, +0.0017040856031, + +0.0059373540856, -0.0068457198444, -0.0352317120623, -0.0352910505837, + +0.0115599221790, +0.0720013618677, +0.1071202334630, +0.0965577821012, + +0.0392276264591, -0.0504490272374, -0.1408558365759, -0.1945346303502, + -0.1865371595331, -0.1197844357977, -0.0299772373541, +0.0433243190661, + +0.0822727626459, +0.0901040856031, +0.0776178988327, +0.0520817120623, + +0.0231019455253, +0.0037404669261, -0.0043935797665, -0.0072077821012, + -0.0082171206226, -0.0070951361868, -0.0022620622568, +0.0053850194553, + +0.0119694552529, +0.0103546692607, +0.0006649805447, -0.0104198443580, + -0.0168025291829, -0.0156743190661, -0.0098737354086, +0.0008252918288, + +0.0175624513619, +0.0316931906615, +0.0357245136187, +0.0299178988327, + +0.0180789883268, +0.0072850194553, +0.0024223735409, +0.0049280155642, + +0.0127472762646, +0.0196167315175, +0.0183758754864, +0.0108651750973, + +0.0062519455253, +0.0042926070039, -0.0001365758755, -0.0039719844358, + -0.0036394941634, -0.0006470817121, +0.0060797665370, +0.0174852140078, + +0.0276498054475, +0.0299595330739, +0.0247287937743, +0.0167194552529, + +0.0101408560311, +0.0065546692607, +0.0052900778210, +0.0042511673152, + +0.0001900778210, -0.0058066147860, -0.0098856031128, -0.0103190661479, + -0.0061747081712, +0.0010212062257, +0.0067626459144, +0.0094046692607, + +0.0107642023346, +0.0107048638132, +0.0093749027237, +0.0098202334630, + +0.0111145914397, +0.0093215953307, +0.0052782101167, +0.0023570038911, + +0.0018939688716, +0.0027490272374, +0.0044173151751, +0.0067863813230, + +0.0075463035019, +0.0046488326848, -0.0008608949416, -0.0058422178988, + -0.0085912451362, -0.0095826848249, -0.0087040856031, -0.0064894941634, + -0.0042986381323, -0.0022799610895, +0.0003978599222, +0.0043996108949, + +0.0083241245136, +0.0107583657588, +0.0113698443580, +0.0091315175097, + +0.0039601167315, -0.0024640077821, -0.0082350194553, -0.0118330739300, + -0.0131332684825, -0.0135369649805, -0.0141544747082, -0.0146768482490, + -0.0144690661479, -0.0132875486381, -0.0097015564202, -0.0031052529183, + +0.0040017509728, +0.0086743190661, +0.0093392996109, +0.0058303501946, + -0.0002612840467, -0.0065904669261, -0.0118507782101, -0.0155556420233, + -0.0173723735409, -0.0165947470817, -0.0128957198444, -0.0075819066148, + -0.0028379377432, +0.0000060311284, +0.0006708171206, -0.0002138132296, + -0.0006649805447, +0.0006056420233, +0.0024579766537, +0.0028202334630, + +0.0007480544747, -0.0030338521401, -0.0070474708171, -0.0104614785992, + -0.0125394941634, -0.0125157587549, -0.0111799610895, -0.0104258754864, + -0.0109126459144, -0.0117260700389, -0.0118626459144, -0.0111620622568, + -0.0097608949416, -0.0077599221790, -0.0059313229572, -0.0049754863813, + -0.0048270428016, -0.0048507782101, -0.0043105058366, -0.0030933852140, + -0.0022501945525, -0.0029507782101, -0.0052605058366, -0.0082289883268, + -0.0106038910506, -0.0114054474708, -0.0100340466926, -0.0066854085603, + -0.0024521400778, +0.0006470817121, +0.0009856031128, -0.0010686770428, + -0.0040671206226, -0.0067566147860, -0.0078015564202, -0.0064182879377, + -0.0035682879377, -0.0007778210117, +0.0009856031128, +0.0014011673152, + +0.0005344357977, -0.0015614785992, -0.0044470817121, -0.0067447470817, + -0.0073799610895, -0.0066556420233, -0.0057770428016, -0.0053317120623, + -0.0050287937743, -0.0047142023346, -0.0043163424125, -0.0036276264591, + -0.0025470817121, -0.0017159533074, -0.0020365758755, -0.0036692607004, + -0.0059610894942, -0.0078964980545, -0.0090186770428, -0.0097490272374, + -0.0102536964981, -0.0100754863813, -0.0088464980545, -0.0066616731518, + -0.0042332684825, -0.0021492217899, -0.0005165369650, +0.0007243190661, + +0.0016326848249, +0.0022501945525, +0.0025649805447, +0.0026243190661, + +0.0025531128405, +0.0025412451362, +0.0028379377432, +0.0033902723735, + +0.0038710116732, +0.0038889105058, +0.0031585603113, +0.0018227626459, + +0.0002612840467, -0.0013655642023, -0.0028558365759, -0.0038354085603, + -0.0040610894942, -0.0034852140078, -0.0024758754864, -0.0014428015564, + -0.0008311284047, -0.0009202334630, -0.0012408560311, -0.0011459143969, + -0.0006768482490, -0.0001840466926, +0.0001424124514, +0.0003680933852, + +0.0004630350195, +0.0002138132296, -0.0002077821012, -0.0002019455253, + +0.0003741245136, +0.0009737354086, +0.0010212062257, +0.0004097276265, + -0.0005463035019, -0.0013299610895, -0.0013180933852, -0.0000772373541, + +0.0022501945525, +0.0050110894942, +0.0071721789883, +0.0077124513619, + +0.0062579766537, +0.0033188715953, +0.0000356031128, -0.0022443579767, + -0.0025470817121, -0.0007778210117, +0.0022443579767, +0.0052723735409, + +0.0069466926070, +0.0068219844358, +0.0054503891051, +0.0036038910506, + +0.0019533073930, +0.0009143968872, +0.0005344357977, +0.0008371595331, + +0.0016326848249, +0.0024877431907, +0.0031822957198, +0.0036038910506, + +0.0037346303502, +0.0036455252918, +0.0035029182879, +0.0036336575875, + +0.0041027237354, +0.0045836575875, +0.0048745136187, +0.0049931906615, + +0.0050883268482, +0.0055215953307, +0.0066437743191, +0.0081103112840, + +0.0089474708171, +0.0085793774319, +0.0071426070039, +0.0053375486381, + +0.0039126459144, +0.0031585603113, +0.0031348249027, +0.0039424124514, + +0.0053079766537, +0.0064834630350, +0.0068931906615, +0.0063766536965, + +0.0050050583658, +0.0033011673152, +0.0019118677043, +0.0010865758755, + +0.0006412451362, +0.0004809338521, +0.0009143968872, +0.0020305447471, + +0.0035029182879, +0.0049754863813, +0.0060085603113, +0.0063112840467, + +0.0059729571984, +0.0052070038911, +0.0043935797665, +0.0039601167315, + +0.0040431906615, +0.0044173151751, +0.0046073929961, +0.0044410505837, + +0.0040552529183, +0.0035743190661, +0.0029982490272, +0.0024223735409, + +0.0020484435798, +0.0019533073930, +0.0020898832685, +0.0023095330739, + +0.0024105058366, +0.0024521400778, +0.0027964980545, +0.0036038910506, + +0.0045478599222, +0.0052128404669, +0.0053612840467, +0.0049813229572, + +0.0046013618677, +0.0047498054475, +0.0052782101167, +0.0058245136187, + +0.0060322957198, +0.0057591439689, +0.0052307392996, +0.0047081712062, + +0.0042867704280, +0.0041085603113, +0.0042867704280, +0.0048270428016, + +0.0055334630350, +0.0060678988327, +0.0060797665370, +0.0055334630350, + +0.0047616731518, +0.0041085603113, +0.0037642023346, +0.0038058365759, + +0.0040075875486, +0.0038058365759, +0.0028737354086, +0.0015675097276, + +0.0005581712062, +0.0002968871595, +0.0007422178988, +0.0015496108949, + +0.0024579766537, +0.0031941634241, +0.0032180933852, +0.0021433852140, + +0.0001365758755, -0.0020542801556, -0.0034198443580, -0.0033486381323, + -0.0019414396887, +0.0000772373541, +0.0018583657588, +0.0029924124514, + +0.0035266536965, +0.0035861867704, +0.0032357976654, +0.0025233463035, + +0.0015079766537, +0.0005877431907, +0.0003799610895, +0.0008252918288, + +0.0013062256809, +0.0015793774319, +0.0016980544747, +0.0016268482490, + +0.0014428015564, +0.0015852140078, +0.0022680933852, +0.0031822957198, + +0.0037702334630, +0.0035624513619, +0.0024996108949, +0.0009914396887, + -0.0004392996109, -0.0014011673152, -0.0017692607004, -0.0015852140078, + -0.0008192607004, +0.0003385214008, +0.0013299610895, +0.0017040856031, + +0.0013834630350, +0.0004630350195, -0.0007066147860, -0.0015793774319, + -0.0018702334630, -0.0016208171206, -0.0009262645914, +0.0000535019455, + +0.0010628404669, +0.0017990272374, +0.0020126459144, +0.0017692607004, + +0.0014723735409, +0.0013655642023, +0.0012645914397, +0.0009618677043, + +0.0004809338521, -0.0001247081712, -0.0008964980545, -0.0016268482490, + -0.0019651750973, -0.0017573929961, -0.0012645914397, -0.0009381322957, + -0.0011221789883, -0.0017692607004, -0.0024461089494, -0.0026894941634, + -0.0022976653696, -0.0014130350195, -0.0003503891051, +0.0004571984436, + +0.0005758754864, +0.0000060311284, -0.0008015564202, -0.0015258754864, + -0.0021077821012, -0.0025352140078, -0.0027192607004, -0.0026599221790, + -0.0024579766537, -0.0022443579767, -0.0022145914397, -0.0022680933852, + -0.0022324902724, -0.0022501945525, -0.0024640077821, -0.0027490272374, + -0.0029924124514, -0.0032951361868, -0.0037346303502, -0.0041027237354, + -0.0039898832685, -0.0033544747082, -0.0026599221790, -0.0023451361868, + -0.0025173151751, -0.0030933852140, -0.0037464980545, -0.0039482490272, + -0.0034733463035, -0.0026599221790, -0.0019593385214, -0.0015258754864, + -0.0014486381323, -0.0018346303502, -0.0025649805447, -0.0032239299611, + -0.0033070038911, -0.0026657587549, -0.0016031128405, -0.0007184824903, + -0.0005225680934, -0.0010628404669, -0.0021433852140, -0.0034317120623, + -0.0043756809339, -0.0045599221790, -0.0040908560311, -0.0034673151751, + -0.0031171206226, -0.0030992217899, -0.0032418287938, -0.0034910505837, + -0.0037879377432, -0.0039898832685, -0.0041322957198, -0.0044352140078, + -0.0048270428016, -0.0050764591440, -0.0050466926070, -0.0047081712062, + -0.0041383268482, -0.0035801556420, -0.0031822957198, -0.0028914396887, + -0.0026955252918, -0.0025887159533, -0.0024758754864, -0.0023392996109, + -0.0022443579767, -0.0023095330739, -0.0025470817121, -0.0028260700389, + -0.0029568093385, -0.0029389105058, -0.0028202334630, -0.0026538910506, + -0.0025531128405, -0.0026243190661, -0.0028795719844, -0.0032180933852, + -0.0034435797665, -0.0034079766537, -0.0031941634241, -0.0030042801556, + -0.0029924124514, -0.0031466926070, -0.0034140077821, -0.0037346303502, + -0.0039542801556, -0.0039424124514, -0.0037048638132, -0.0033961089494, + -0.0031171206226, -0.0027667315175, -0.0022443579767, -0.0016208171206, + -0.0010330739300, -0.0006470817121, -0.0005581712062, -0.0007184824903, + -0.0010628404669, -0.0015793774319, -0.0019889105058, -0.0019533073930, + -0.0015258754864, -0.0009083657588, -0.0002196498054, +0.0003145914397, + +0.0005521400778, +0.0003859922179, -0.0002138132296, -0.0010924124514, + -0.0019058365759, -0.0023451361868, -0.0023392996109, -0.0019295719844, + -0.0012645914397, -0.0005996108949, -0.0002138132296, -0.0001305447471, + -0.0002019455253, -0.0003324902724, -0.0004334630350, -0.0003741245136, + -0.0001900778210, -0.0000178988327, +0.0000237354086, -0.0000535019455, + -0.0001186770428, -0.0001128404669, +0.0000000000000, +0.0002552529183, + +0.0006352140078, +0.0010093385214, +0.0011754863813, +0.0009618677043, + +0.0004571984436, -0.0001484435798, -0.0007955252918, -0.0013357976654, + -0.0014902723735, -0.0011815175097, -0.0005937743191, +0.0000356031128, + +0.0004392996109, +0.0004274319066, +0.0000356031128, -0.0004334630350, + -0.0007066147860, -0.0007480544747, -0.0007243190661, -0.0007955252918, + -0.0009439688716, -0.0011459143969, -0.0013774319066, -0.0014784046693, + -0.0012350194553, -0.0007124513619, -0.0001424124514, +0.0003206225681, + +0.0005758754864, +0.0005877431907, +0.0004334630350, +0.0002433852140, + +0.0002552529183, +0.0005640077821, +0.0009143968872, +0.0011696498054, + +0.0013597276265, +0.0014486381323, +0.0013357976654, +0.0010330739300, + +0.0007778210117, +0.0007243190661, +0.0009143968872, +0.0012289883268, + +0.0014309338521, +0.0014249027237, +0.0013180933852, +0.0011398832685, + +0.0008727626459, +0.0006412451362, +0.0005700389105, +0.0006352140078, + +0.0006056420233, +0.0004511673152, +0.0004155642023, +0.0005640077821, + +0.0006947470817, +0.0007361867704, +0.0007480544747, +0.0006293774319, + +0.0003324902724, +0.0000178988327, -0.0001782101167, -0.0001900778210, + -0.0000297665370, +0.0001840466926, +0.0004334630350, +0.0006947470817, + +0.0008846303502, +0.0008550583658, +0.0005640077821, +0.0000891050584, + -0.0003978599222, -0.0007896887160, -0.0009381322957, -0.0006768482490, + -0.0000474708171, +0.0005877431907, +0.0008608949416, +0.0007243190661, + +0.0003622568093, -0.0001424124514, -0.0007005836576, -0.0009914396887, + -0.0007599221790, -0.0001424124514, +0.0005284046693, +0.0010330739300, + +0.0013180933852, +0.0013536964981, +0.0011280155642, +0.0008192607004, + +0.0006947470817, +0.0007955252918, +0.0009381322957, +0.0009856031128, + +0.0008906614786, +0.0006056420233, +0.0002256809339, +0.0000356031128, + +0.0001721789883, +0.0004809338521, +0.0006708171206, +0.0006233463035, + +0.0004274319066, +0.0002375486381, +0.0001247081712, +0.0000891050584, + +0.0001186770428, +0.0001186770428, +0.0000593385214, +0.0000712062257, + +0.0002612840467, +0.0006589494163, +0.0011280155642, +0.0014486381323, + +0.0015079766537, +0.0012943579767, +0.0008846303502, +0.0004928015564, + +0.0003978599222, +0.0007778210117, +0.0014902723735, +0.0021373540856, + +0.0023809338521, +0.0020780155642, +0.0014071984436, +0.0007540856031, + +0.0004453307393, +0.0005700389105, +0.0009321011673, +0.0012171206226, + +0.0011459143969, +0.0007303501946, +0.0002138132296, -0.0001365758755, + -0.0002315175097, -0.0000593385214, +0.0002552529183, +0.0004986381323, + +0.0004928015564, +0.0003027237354, +0.0001186770428, +0.0000474708171, + +0.0001424124514, +0.0003503891051, +0.0005463035019, +0.0006887159533, + +0.0007955252918, +0.0008727626459, +0.0009262645914, +0.0009558365759, + +0.0010330739300, +0.0011875486381, +0.0013418287938, +0.0013774319066, + +0.0012527237354, +0.0009856031128, +0.0006589494163, +0.0004749027237, + +0.0005877431907, +0.0009677042802, +0.0014486381323, +0.0019712062257, + +0.0024579766537, +0.0027785992218, +0.0028142023346, +0.0025768482490, + +0.0022027237354, +0.0018404669261, +0.0016149805447, +0.0015258754864, + +0.0015198443580, +0.0015675097276, +0.0015852140078, +0.0014784046693, + +0.0012468871595, +0.0009143968872, +0.0005640077821, +0.0002671206226, + +0.0001247081712, +0.0002196498054, +0.0004928015564, +0.0008192607004, + +0.0010865758755, +0.0012527237354, +0.0012527237354, +0.0011280155642, + +0.0010033073930, +0.0009618677043, +0.0009914396887, +0.0010153696498, + +0.0009974708171, +0.0008429961089, +0.0005463035019, +0.0002552529183, + +0.0001068093385, +0.0001603112840, +0.0004155642023, +0.0007778210117, + +0.0011042801556, +0.0013239299611, +0.0013953307393, +0.0013001945525, + +0.0010924124514, +0.0008550583658, +0.0006293774319, +0.0004986381323, + +0.0004334630350, +0.0003087548638, +0.0000593385214, -0.0002494163424, + -0.0004867704280, -0.0004867704280, -0.0001959143969, +0.0002494163424, + +0.0006828793774, +0.0010272373541, +0.0012052529183, +0.0011517509728, + +0.0009143968872, +0.0005996108949, +0.0002968871595, +0.0001365758755, + +0.0001959143969, +0.0004215953307, +0.0006470817121, +0.0007717898833, + +0.0007896887160, +0.0007361867704, +0.0006470817121, +0.0005937743191, + +0.0005700389105, +0.0005344357977, +0.0004809338521, +0.0004334630350, + +0.0003562256809, +0.0003145914397, +0.0003562256809, +0.0004155642023, + +0.0003918287938, +0.0003264591440, +0.0002850194553, +0.0002850194553, + +0.0002850194553, +0.0002196498054, +0.0000712062257, -0.0000830739300, + -0.0001900778210, -0.0002256809339, -0.0001959143969, -0.0001305447471, + -0.0000416342412, +0.0000891050584, +0.0002552529183, +0.0003443579767, + +0.0002850194553, +0.0000830739300, -0.0001424124514, -0.0002789883268, + -0.0002850194553, -0.0002256809339, -0.0001128404669, -0.0000060311284, + +0.0000237354086, +0.0000000000000, -0.0000712062257, -0.0001782101167, + -0.0002375486381, -0.0002968871595, -0.0004867704280, -0.0007599221790, + -0.0009321011673, -0.0008964980545, -0.0006470817121, -0.0002789883268, + +0.0000000000000, +0.0000000000000, -0.0002612840467, -0.0006887159533, + -0.0010984435798, -0.0013418287938, -0.0013299610895, -0.0011103112840, + -0.0008015564202, -0.0005402723735, -0.0003918287938, -0.0003145914397, + -0.0002908560311, -0.0002494163424, -0.0001305447471, +0.0000000000000, + +0.0000000000000, -0.0001247081712, -0.0002731517510, -0.0003264591440, + -0.0002494163424, -0.0000178988327, +0.0002315175097, +0.0003264591440, + +0.0002196498054, -0.0000416342412, -0.0003918287938, -0.0007361867704, + -0.0009262645914, -0.0009143968872, -0.0008134241245, -0.0007422178988, + -0.0007361867704, -0.0008134241245, -0.0008550583658, -0.0007659533074, + -0.0005996108949, -0.0004215953307, -0.0003324902724, -0.0004036964981, + -0.0006056420233, -0.0008073929961, -0.0009677042802, -0.0010449416342, + -0.0009856031128, -0.0008429961089, -0.0007243190661, -0.0006828793774, + -0.0007778210117, -0.0009025291829, -0.0008727626459, -0.0006649805447, + -0.0003918287938, -0.0002138132296, -0.0002375486381, -0.0004334630350, + -0.0006887159533, -0.0009262645914, -0.0010984435798, -0.0011815175097, + -0.0010865758755, -0.0007778210117, -0.0003680933852, -0.0000297665370, + +0.0001009727626, -0.0000118677043, -0.0003027237354, -0.0005344357977, + -0.0005640077821, -0.0004928015564, -0.0004036964981, -0.0003087548638, + -0.0001959143969, +0.0000000000000, +0.0003027237354, +0.0005937743191, + +0.0007480544747, +0.0007717898833, +0.0007066147860, +0.0006412451362, + +0.0006412451362, +0.0006589494163, +0.0005463035019, +0.0002908560311, + +0.0000356031128, -0.0000712062257, -0.0000297665370, +0.0000891050584, + +0.0001959143969, +0.0001900778210, +0.0000237354086, -0.0002019455253, + -0.0003859922179, -0.0004571984436, -0.0003206225681, -0.0000237354086, + +0.0002612840467, +0.0004392996109, +0.0004928015564, +0.0004392996109, + +0.0003027237354, +0.0001365758755, +0.0000237354086, -0.0000297665370, + -0.0001186770428, -0.0002433852140, -0.0002731517510, -0.0001900778210, + -0.0001068093385, -0.0000891050584, -0.0000712062257, +0.0000593385214, + +0.0003264591440, +0.0005877431907, +0.0006470817121, +0.0004392996109, + +0.0000416342412, -0.0004036964981, -0.0007778210117, -0.0009677042802, + -0.0009677042802, -0.0008015564202, -0.0005581712062, -0.0004274319066, + -0.0005225680934, -0.0008192607004, -0.0011994163424, -0.0014902723735, + -0.0015733463035, -0.0014486381323, -0.0011994163424, -0.0008669260700, + -0.0005521400778, -0.0002671206226, +0.0000830739300, +0.0003918287938, + +0.0004571984436, +0.0002612840467, -0.0000535019455, -0.0002968871595, + -0.0003443579767, -0.0002908560311, -0.0002433852140, -0.0002019455253, + -0.0001661478599, -0.0002138132296, -0.0002968871595, -0.0002552529183, + -0.0000237354086, +0.0003978599222, +0.0008727626459, +0.0011517509728, + +0.0011875486381, +0.0010153696498, +0.0006352140078, +0.0000772373541, + -0.0004453307393, -0.0007124513619, -0.0006828793774, -0.0004334630350, + +0.0000000000000, +0.0004274319066, +0.0005819066148, +0.0002968871595, + -0.0002850194553, -0.0008608949416, -0.0011577821012, -0.0010984435798, + -0.0007659533074, -0.0002789883268, +0.0002019455253, +0.0005284046693, + +0.0006175097276, +0.0004630350195, +0.0001247081712, -0.0004097276265, + -0.0010330739300, -0.0014605058366, -0.0014605058366, -0.0010924124514, + -0.0005463035019, +0.0000060311284, +0.0004630350195, +0.0007243190661, + +0.0007422178988, +0.0005521400778, +0.0002494163424, -0.0000297665370, + -0.0002138132296, -0.0003385214008, -0.0004453307393, -0.0004986381323, + -0.0005225680934, -0.0005107003891, -0.0004036964981, -0.0001603112840, + +0.0001603112840, +0.0003918287938, +0.0003027237354, -0.0001128404669, + -0.0006175097276, -0.0009381322957, -0.0009439688716, -0.0006114785992, + -0.0000237354086, +0.0006352140078, +0.0010984435798, +0.0012052529183, + +0.0010449416342, +0.0008192607004, +0.0007066147860, +0.0007124513619, + +0.0005819066148, +0.0001068093385, -0.0006828793774, -0.0015198443580, + -0.0019949416342, -0.0018821011673, -0.0013062256809, -0.0004749027237, + +0.0003206225681, +0.0008311284047, +0.0009500000000, +0.0007717898833, + +0.0004867704280, +0.0002552529183, +0.0001068093385, +0.0000772373541, + +0.0002494163424, +0.0006056420233, +0.0009618677043, +0.0011042801556, + +0.0009618677043, +0.0006233463035, +0.0002552529183, -0.0000535019455, + -0.0003562256809, -0.0006887159533, -0.0009677042802, -0.0010805447471, + -0.0010330739300, -0.0008608949416, -0.0005107003891, -0.0000297665370, + +0.0004571984436, +0.0008252918288, +0.0009262645914, +0.0007836575875, + +0.0006233463035, +0.0006175097276, +0.0007124513619, +0.0007066147860, + +0.0004986381323, +0.0000891050584, -0.0004334630350, -0.0008192607004, + -0.0008311284047, -0.0004274319066, +0.0002375486381, +0.0008371595331, + +0.0011280155642, +0.0011517509728, +0.0009914396887, +0.0006589494163, + +0.0001900778210, -0.0003264591440, -0.0007955252918, -0.0012171206226, + -0.0015556420233, -0.0016505836576, -0.0014071984436, -0.0008964980545, + -0.0001603112840, +0.0008073929961, +0.0019770428016, +0.0032060311284, + +0.0042688715953, +0.0049161478599, +0.0048151750973, +0.0038116731518, + +0.0021789883268, +0.0005107003891, -0.0008015564202, -0.0016564202335, + -0.0019712062257, -0.0018346303502, -0.0015140077821, -0.0011161478599, + -0.0006531128405, -0.0002375486381, +0.0000830739300, +0.0003799610895, + +0.0006887159533, +0.0009618677043, +0.0011340466926, +0.0011815175097, + +0.0010509727626, +0.0006828793774, +0.0001900778210, -0.0001068093385, + +0.0001186770428, +0.0007717898833, +0.0012824902724, +0.0012527237354, + +0.0007480544747, +0.0000118677043, -0.0007480544747, -0.0014011673152, + -0.0018108949416, -0.0019414396887, -0.0018464980545, -0.0015319066148, + -0.0010212062257, -0.0004274319066, +0.0000772373541, +0.0004690661479, + +0.0007422178988, +0.0008608949416, +0.0008015564202, +0.0004274319066, + -0.0002850194553, -0.0011221789883, -0.0017515564202, -0.0019533073930, + -0.0016149805447, -0.0008964980545, -0.0001247081712, +0.0004334630350, + +0.0006352140078, +0.0005165369650, +0.0003087548638, +0.0002731517510, + +0.0005165369650, +0.0008964980545, +0.0012408560311, +0.0013655642023, + +0.0010747081712, +0.0003385214008, -0.0006114785992, -0.0014665369650, + -0.0020365758755, -0.0022145914397, -0.0019889105058, -0.0014546692607, + -0.0007243190661, +0.0000712062257, +0.0007659533074, +0.0011815175097, + +0.0012171206226, +0.0009795719844, +0.0006947470817, +0.0004867704280, + +0.0003859922179, +0.0004215953307, +0.0005996108949, +0.0008550583658, + +0.0010686770428, +0.0011280155642, +0.0009500000000, +0.0005996108949, + +0.0002138132296, -0.0000297665370, -0.0000416342412, +0.0000178988327, + -0.0000356031128, -0.0001840466926, -0.0002375486381, -0.0000060311284, + +0.0005640077821, +0.0013180933852, +0.0019058365759, +0.0020186770428, + +0.0016268482490, +0.0010033073930, +0.0004215953307, +0.0001009727626, + +0.0002077821012, +0.0006470817121, +0.0010924124514, +0.0012231517510, + +0.0008669260700, +0.0001782101167, -0.0004630350195, -0.0007896887160, + -0.0007422178988, -0.0003799610895, +0.0001959143969, +0.0007659533074, + +0.0009974708171, +0.0007659533074, +0.0002196498054, -0.0003443579767, + -0.0008015564202, -0.0011398832685, -0.0012943579767, -0.0012408560311, + -0.0010449416342, -0.0007717898833, -0.0005225680934, -0.0003087548638, + +0.0000060311284, +0.0004334630350, +0.0008429961089, +0.0011696498054, + +0.0013239299611, +0.0012171206226, +0.0008608949416, +0.0003622568093, + -0.0000653696498, -0.0002789883268, -0.0003859922179, -0.0005344357977, + -0.0007599221790, -0.0010212062257, -0.0012645914397, -0.0013953307393, + -0.0013834630350, -0.0013299610895, -0.0012764591440, -0.0011696498054, + -0.0010033073930, -0.0008311284047, -0.0007480544747, -0.0007303501946, + -0.0006293774319, -0.0004097276265, -0.0001484435798, +0.0000830739300, + +0.0002552529183, +0.0003324902724, +0.0002671206226, +0.0000653696498, + -0.0001424124514, -0.0002552529183, -0.0002433852140, -0.0001128404669, + +0.0000891050584, +0.0003264591440, +0.0005107003891, +0.0005344357977, + +0.0003324902724, +0.0000118677043, -0.0002433852140, -0.0003799610895, + -0.0004215953307, -0.0003503891051, -0.0001186770428, +0.0002494163424, + +0.0006412451362, +0.0008846303502, +0.0008550583658, +0.0005521400778, + +0.0001365758755, -0.0002196498054, -0.0004215953307, -0.0004453307393, + -0.0002850194553, +0.0000535019455, +0.0005284046693, +0.0009262645914, + +0.0010391050584, +0.0007836575875, +0.0002552529183, -0.0002968871595, + -0.0006233463035, -0.0006114785992, -0.0003799610895, -0.0001186770428, + +0.0000356031128, +0.0000178988327, -0.0001186770428, -0.0003443579767, + -0.0006293774319, -0.0008550583658, -0.0008964980545, -0.0007124513619, + -0.0003264591440, +0.0000830739300, +0.0003680933852, +0.0004749027237, + +0.0003978599222, +0.0001959143969, +0.0000416342412, +0.0000772373541, + +0.0003264591440, +0.0006768482490, +0.0009321011673, +0.0009618677043, + +0.0007361867704, +0.0002671206226, -0.0002968871595, -0.0008073929961, + -0.0011577821012, -0.0013239299611, -0.0013001945525, -0.0011280155642, + -0.0007836575875, -0.0002671206226, +0.0003385214008, +0.0008846303502, + +0.0011517509728, +0.0010391050584, +0.0006293774319, +0.0000178988327, + -0.0006768482490, -0.0012706225681, -0.0015793774319, -0.0014784046693, + -0.0009677042802, -0.0002968871595, +0.0002019455253, +0.0004453307393, + +0.0004155642023, +0.0001247081712, -0.0002850194553, -0.0006768482490, + -0.0009202334630, -0.0009025291829, -0.0006649805447, -0.0003741245136, + -0.0001186770428, +0.0000653696498, +0.0001603112840, +0.0000772373541, + -0.0001661478599, -0.0004036964981, -0.0005046692607, -0.0005463035019, + -0.0005996108949, -0.0005700389105, -0.0004334630350, -0.0002789883268, + -0.0002315175097, -0.0003087548638, -0.0003918287938, -0.0004036964981, + -0.0004334630350, -0.0005463035019, -0.0006589494163, -0.0007303501946, + -0.0007778210117, -0.0007480544747, -0.0005877431907, -0.0003680933852, + -0.0002138132296, -0.0001305447471, -0.0001365758755, -0.0002494163424, + -0.0004690661479, -0.0007066147860, -0.0008964980545, -0.0009795719844, + -0.0009025291829, -0.0006352140078, -0.0002315175097, +0.0001782101167, + +0.0004749027237, +0.0005521400778, +0.0004215953307, +0.0001603112840, + -0.0001365758755, -0.0003859922179, -0.0004749027237, -0.0004215953307, + -0.0002731517510, -0.0000712062257, +0.0001365758755, +0.0003264591440, + +0.0004749027237, +0.0005581712062, +0.0005402723735, +0.0003859922179, + +0.0000891050584, -0.0002196498054, -0.0004867704280, -0.0006352140078, + -0.0005819066148, -0.0002850194553, +0.0001128404669, +0.0004630350195, + +0.0007422178988, +0.0008846303502, +0.0008192607004, +0.0006412451362, + +0.0004392996109, +0.0002908560311, +0.0002375486381, +0.0002375486381, + +0.0002315175097, +0.0002196498054, +0.0001900778210, +0.0001247081712, + +0.0000891050584, +0.0001247081712, +0.0001959143969, +0.0002671206226, + +0.0002968871595, +0.0001959143969, +0.0000000000000, -0.0002375486381, + -0.0004334630350, -0.0004215953307, -0.0002019455253, +0.0000000000000, + +0.0000891050584, +0.0001365758755, +0.0001424124514, +0.0000830739300, + -0.0000593385214, -0.0002196498054, -0.0002612840467, -0.0001782101167, + -0.0000474708171, +0.0000653696498, +0.0001603112840, +0.0002789883268, + +0.0005107003891, +0.0008192607004, +0.0011577821012, +0.0014367704280, + +0.0015496108949, +0.0014309338521, +0.0011696498054, +0.0008906614786, + +0.0006531128405, +0.0004511673152, +0.0002789883268, +0.0001661478599, + +0.0001484435798, +0.0001542801556, +0.0001484435798, +0.0001782101167, + +0.0002612840467, +0.0003859922179, +0.0005284046693, +0.0005996108949, + +0.0004690661479, +0.0001603112840, -0.0001424124514, -0.0003027237354, + -0.0002671206226, -0.0000891050584, +0.0001424124514, +0.0003741245136, + +0.0005225680934, +0.0005521400778, +0.0005463035019, +0.0005284046693, + +0.0004274319066, +0.0002731517510, +0.0001247081712, -0.0000060311284, + -0.0000830739300, -0.0000772373541, -0.0000237354086, +0.0001009727626, + +0.0004036964981, +0.0008252918288, +0.0011042801556, +0.0010984435798, + +0.0008429961089, +0.0004630350195, +0.0001247081712, -0.0000772373541, + -0.0001186770428, -0.0000712062257, -0.0000297665370, -0.0000178988327, + -0.0000356031128, -0.0000772373541, -0.0001305447471, -0.0001840466926, + -0.0002671206226, -0.0004097276265, -0.0005344357977, -0.0005937743191, + -0.0006352140078, -0.0006828793774, -0.0007184824903, -0.0006828793774, + -0.0005225680934, -0.0002494163424, +0.0000060311284, +0.0002019455253, + +0.0003324902724, +0.0003264591440, +0.0001424124514, -0.0001782101167, + -0.0005700389105, -0.0008311284047, -0.0008371595331, -0.0006233463035, + -0.0003145914397, -0.0000178988327, +0.0001661478599, +0.0001840466926, + +0.0000118677043, -0.0002494163424, -0.0004809338521, -0.0006175097276, + -0.0006056420233, -0.0004215953307, -0.0001900778210, -0.0000416342412, + -0.0000653696498, -0.0002850194553, -0.0005758754864, -0.0007243190661, + -0.0006768482490, -0.0005344357977, -0.0003443579767, -0.0001186770428, + +0.0000830739300, +0.0001900778210, +0.0001782101167, +0.0000712062257, + -0.0000416342412, -0.0001247081712, -0.0001424124514, -0.0000949416342, + -0.0000237354086, +0.0000237354086, +0.0000891050584, +0.0001484435798, + +0.0001782101167, +0.0001840466926, +0.0001542801556, +0.0001009727626, + +0.0000356031128, -0.0000593385214, -0.0001840466926, -0.0002433852140, + -0.0002256809339, -0.0000830739300, +0.0002433852140, +0.0006233463035, + +0.0008311284047, +0.0008311284047, +0.0006708171206, +0.0004334630350, + +0.0002375486381, +0.0001365758755, +0.0001542801556, +0.0002671206226, + +0.0003622568093, +0.0003443579767, +0.0002256809339, +0.0000237354086, + -0.0001959143969, -0.0003799610895, -0.0004571984436, -0.0004036964981, + -0.0002494163424, -0.0001128404669, -0.0000593385214, -0.0000772373541, + -0.0001484435798, -0.0002552529183, -0.0003206225681, -0.0002789883268, + -0.0001840466926, -0.0000535019455, +0.0001128404669, +0.0002494163424, + +0.0003206225681, +0.0003443579767, +0.0003145914397, +0.0002552529183, + +0.0001900778210, +0.0001186770428, +0.0000593385214, +0.0000772373541, + +0.0001661478599, +0.0002612840467, +0.0003385214008, +0.0003385214008, + +0.0002433852140, +0.0001603112840, +0.0002256809339, +0.0004511673152, + +0.0007243190661, +0.0008846303502, +0.0008134241245, +0.0005344357977, + +0.0001959143969, -0.0000653696498, -0.0001186770428, +0.0000356031128, + +0.0002552529183, +0.0003978599222, +0.0004215953307, +0.0003680933852, + +0.0002433852140, +0.0000891050584, -0.0000653696498, -0.0001840466926, + -0.0002138132296, -0.0001721789883, -0.0001128404669, -0.0001128404669, + -0.0001603112840, -0.0002433852140, -0.0003503891051, -0.0004155642023, + -0.0003145914397, -0.0000356031128, +0.0003206225681, +0.0005937743191, + +0.0006708171206, +0.0005284046693, +0.0002077821012, -0.0001068093385, + -0.0002671206226, -0.0002196498054, -0.0000178988327, +0.0002256809339, + +0.0003978599222, +0.0004392996109, +0.0003918287938, +0.0002494163424, + +0.0000000000000, -0.0002908560311, -0.0005225680934, -0.0005937743191, + -0.0004867704280, -0.0002612840467, -0.0000535019455, +0.0001186770428, + +0.0002552529183, +0.0003145914397, +0.0003324902724, +0.0003443579767, + +0.0002850194553, +0.0001661478599, +0.0000891050584, +0.0000830739300, + +0.0001068093385, +0.0001305447471, +0.0001542801556, +0.0001782101167, + +0.0002612840467, +0.0004215953307, +0.0006293774319, +0.0008134241245, + +0.0009381322957, +0.0009618677043, +0.0008134241245, +0.0004809338521, + +0.0000356031128, -0.0003799610895, -0.0006649805447, -0.0006947470817, + -0.0004392996109, -0.0000535019455, +0.0002375486381, +0.0003622568093, + +0.0003443579767, +0.0001721789883, -0.0001186770428, -0.0004274319066, + -0.0005758754864, -0.0004690661479, -0.0001721789883, +0.0001128404669, + +0.0002138132296, +0.0001128404669, -0.0001305447471, -0.0004453307393, + -0.0007124513619, -0.0007896887160, -0.0006589494163, -0.0003799610895, + -0.0000712062257, +0.0001484435798, +0.0002077821012, +0.0000535019455, + -0.0002375486381, -0.0005402723735, -0.0007422178988, -0.0008311284047, + -0.0008015564202, -0.0006589494163, -0.0004453307393, -0.0002196498054, + -0.0000237354086, +0.0000830739300, +0.0000474708171, -0.0000891050584, + -0.0002552529183, -0.0003978599222, -0.0004809338521, -0.0004392996109, + -0.0003206225681, -0.0002196498054, -0.0001959143969, -0.0002968871595, + -0.0004928015564, -0.0007243190661, -0.0008846303502, -0.0008669260700, + -0.0006887159533, -0.0004453307393, -0.0002019455253, -0.0000593385214, + -0.0000772373541, -0.0001959143969, -0.0003027237354, -0.0003918287938, + -0.0004453307393, -0.0004511673152, -0.0004392996109, -0.0004392996109, + -0.0004334630350, -0.0004036964981, -0.0003324902724, -0.0002138132296, + -0.0000118677043, +0.0002612840467, +0.0005046692607, +0.0005640077821, + +0.0004453307393, +0.0002256809339, -0.0000297665370, -0.0002494163424, + -0.0003443579767, -0.0003145914397, -0.0002138132296, -0.0001128404669, + -0.0000474708171, -0.0000474708171, -0.0000593385214, -0.0000118677043, + +0.0001009727626, +0.0002494163424, +0.0004097276265, +0.0005463035019, + +0.0005877431907, +0.0004809338521, +0.0002494163424, -0.0000297665370, + -0.0002375486381, -0.0003264591440, -0.0003385214008, -0.0003087548638, + -0.0002612840467, -0.0002256809339, -0.0002315175097, -0.0002671206226, + -0.0002671206226, -0.0001840466926, -0.0000593385214, +0.0000297665370, + +0.0000535019455, -0.0000356031128, -0.0002375486381, -0.0004215953307, + -0.0005046692607, -0.0004749027237, -0.0003622568093, -0.0002433852140, + -0.0002196498054, -0.0002789883268, -0.0003443579767, -0.0003324902724, + -0.0001900778210, +0.0000830739300, +0.0004097276265, +0.0006708171206, + +0.0007778210117, +0.0006708171206, +0.0003680933852, +0.0000237354086, + -0.0001721789883, -0.0001484435798, +0.0000593385214, +0.0003562256809, + +0.0006175097276, +0.0007717898833, +0.0008311284047, +0.0008192607004, + +0.0007124513619, +0.0005284046693, +0.0003503891051, +0.0002494163424, + +0.0001959143969, +0.0001542801556, +0.0001365758755, +0.0001603112840, + +0.0002019455253, +0.0002375486381, +0.0002789883268, +0.0003264591440, + +0.0003206225681, +0.0002196498054, +0.0000356031128, -0.0001661478599, + -0.0002908560311, -0.0003145914397, -0.0002789883268, -0.0002077821012, + -0.0001186770428, -0.0000593385214, -0.0000772373541, -0.0001305447471, + -0.0001542801556, -0.0001542801556, -0.0001721789883, -0.0001959143969, + -0.0002138132296, -0.0002612840467, -0.0003324902724, -0.0003918287938, + -0.0003680933852, -0.0002494163424, -0.0000949416342, +0.0000297665370, + +0.0001305447471, +0.0001900778210, +0.0001721789883, +0.0000949416342, + +0.0000118677043, -0.0000297665370, +0.0000000000000, +0.0000772373541, + +0.0001484435798, +0.0002375486381, +0.0003918287938, +0.0005402723735, + +0.0005819066148, +0.0005046692607, +0.0003680933852, +0.0002375486381, + +0.0001128404669, +0.0000178988327, -0.0000178988327, +0.0000237354086, + +0.0001305447471, +0.0002612840467, +0.0003562256809, +0.0004036964981, + +0.0003680933852, +0.0002375486381, +0.0001068093385, +0.0000356031128, + +0.0000474708171, +0.0001247081712, +0.0002433852140, +0.0003087548638, + +0.0002908560311, +0.0002019455253, +0.0000593385214, -0.0000712062257, + -0.0001424124514, -0.0001186770428, -0.0000416342412, +0.0000653696498, + +0.0001603112840, +0.0001721789883, +0.0001247081712, +0.0000712062257, + +0.0000060311284, -0.0000772373541, -0.0001603112840, -0.0001840466926, + -0.0001782101167, -0.0001424124514, -0.0000535019455, +0.0000949416342, + +0.0002494163424, +0.0003264591440, +0.0003324902724, +0.0002908560311, + +0.0002077821012, +0.0001247081712, +0.0000712062257, +0.0000653696498, + +0.0000891050584, +0.0000593385214, -0.0000356031128, -0.0001661478599, + -0.0002433852140, -0.0002552529183, -0.0002138132296, -0.0001186770428, + +0.0000000000000, +0.0001128404669, +0.0002315175097, +0.0002908560311, + +0.0002908560311, +0.0002433852140, +0.0001603112840, +0.0000474708171, + -0.0000535019455, -0.0001186770428, -0.0001484435798, -0.0001365758755, + -0.0000830739300, -0.0000356031128, +0.0000000000000, +0.0000237354086, + +0.0000891050584, +0.0001603112840, +0.0001900778210, +0.0001603112840, + +0.0000772373541, -0.0000356031128, -0.0002019455253, -0.0003859922179, + -0.0005225680934, -0.0005284046693, -0.0003622568093, -0.0000891050584, + +0.0001424124514, +0.0002494163424, +0.0001840466926, -0.0000297665370, + -0.0003027237354, -0.0005107003891, -0.0006175097276, -0.0006293774319, + -0.0005165369650, -0.0002671206226, +0.0000416342412, +0.0003324902724, + +0.0005521400778, +0.0006233463035, +0.0004809338521, +0.0001959143969, + -0.0001365758755, -0.0004274319066, -0.0006233463035, -0.0006828793774, + -0.0005996108949, -0.0004097276265, -0.0002375486381, -0.0001959143969, + -0.0002433852140, -0.0002552529183, -0.0001721789883, -0.0000118677043, + +0.0001782101167, +0.0003622568093, +0.0004749027237, +0.0004392996109, + +0.0002850194553, +0.0000830739300, -0.0001247081712, -0.0002494163424, + -0.0001959143969, +0.0000060311284, +0.0002731517510, +0.0005107003891, + +0.0005877431907, +0.0004630350195, +0.0002315175097, -0.0000237354086, + -0.0002433852140, -0.0003680933852, -0.0003680933852, -0.0002433852140, + -0.0000712062257, +0.0000356031128, +0.0000653696498, +0.0000060311284, + -0.0001128404669, -0.0002552529183, -0.0004036964981, -0.0005284046693, + -0.0005937743191, -0.0006293774319, -0.0005937743191, -0.0004511673152, + -0.0002433852140, -0.0000535019455, +0.0000772373541, +0.0001661478599, + +0.0001959143969, +0.0001424124514, +0.0000356031128, -0.0000653696498, + -0.0001603112840, -0.0001900778210, -0.0001186770428, +0.0000000000000, + +0.0001365758755, +0.0002375486381, +0.0002494163424, +0.0001365758755, + -0.0000416342412, -0.0002494163424, -0.0003859922179, -0.0003741245136, + -0.0001661478599, +0.0001603112840, +0.0004571984436, +0.0005877431907, + +0.0005165369650, +0.0002789883268, +0.0000178988327, -0.0001305447471, + -0.0001186770428, +0.0000356031128, +0.0002671206226, +0.0004334630350, + +0.0004334630350, +0.0002850194553, +0.0000474708171, -0.0002019455253, + -0.0003918287938, -0.0004511673152, -0.0003918287938, -0.0002968871595, + -0.0001840466926, -0.0000474708171, +0.0001305447471, +0.0003324902724, + +0.0004571984436, +0.0004690661479, +0.0003918287938, +0.0002552529183, + +0.0000535019455, -0.0002138132296, -0.0004690661479, -0.0005819066148, + -0.0005046692607, -0.0002375486381, +0.0001484435798, +0.0004986381323, + +0.0006947470817, +0.0007124513619, +0.0005402723735, +0.0001900778210, + -0.0002612840467, -0.0007717898833, -0.0012645914397, -0.0015675097276, + -0.0014367704280, -0.0007540856031, +0.0003978599222, +0.0016922178988, + +0.0026182879377, +0.0027192607004, +0.0018583657588, +0.0003027237354, + -0.0013597276265, -0.0024877431907, -0.0026717898833, -0.0019237354086, + -0.0006352140078, +0.0006531128405, +0.0015140077821, +0.0016743190661, + +0.0011696498054, +0.0002789883268, -0.0006352140078, -0.0013180933852, + -0.0016326848249, -0.0015496108949, -0.0011103112840, -0.0003562256809, + +0.0005165369650, +0.0011994163424, +0.0014902723735, +0.0013536964981, + +0.0008371595331, +0.0001186770428, -0.0005521400778, -0.0009321011673, + -0.0009202334630, -0.0005700389105, -0.0000416342412, +0.0004215953307, + +0.0006293774319, +0.0005284046693, +0.0002731517510, +0.0000474708171, + -0.0000535019455, -0.0000712062257, -0.0000356031128, -0.0000118677043, + -0.0000237354086, -0.0000712062257, -0.0001009727626, -0.0000474708171, + +0.0001186770428, +0.0003859922179, +0.0006470817121, +0.0007480544747, + +0.0006233463035, +0.0003680933852, +0.0001128404669, -0.0000653696498, + -0.0001661478599, -0.0002138132296, -0.0002138132296, -0.0001365758755, + -0.0000118677043, +0.0000593385214, +0.0000178988327, -0.0000949416342, + -0.0001365758755, +0.0000060311284, +0.0003324902724, +0.0007303501946, + +0.0010153696498, +0.0009677042802, +0.0005640077821, +0.0000297665370, + -0.0003918287938, -0.0005402723735, -0.0003799610895, +0.0000000000000, + +0.0004453307393, +0.0008134241245, +0.0009381322957, +0.0007659533074, + +0.0004155642023, +0.0000653696498, -0.0001542801556, -0.0002196498054, + -0.0001721789883, -0.0001128404669, -0.0000772373541, -0.0000416342412, + +0.0000118677043, +0.0000891050584, +0.0001840466926, +0.0002315175097, + +0.0002138132296, +0.0001484435798, +0.0000535019455, -0.0000535019455, + -0.0001128404669, -0.0000891050584, +0.0000118677043, +0.0001782101167, + +0.0003562256809, +0.0004690661479, +0.0004392996109, +0.0002552529183, + +0.0000297665370, -0.0001424124514, -0.0002196498054, -0.0002256809339, + -0.0001661478599, -0.0000535019455, +0.0001068093385, +0.0003443579767, + +0.0006114785992, +0.0008015564202, +0.0008429961089, +0.0006947470817, + +0.0003859922179, +0.0000356031128, -0.0002256809339, -0.0003087548638, + -0.0002256809339, -0.0000772373541, +0.0000297665370, +0.0000830739300, + +0.0001009727626, +0.0000772373541, +0.0000237354086, +0.0000000000000, + +0.0000830739300, +0.0002315175097, +0.0003443579767, +0.0003978599222, + +0.0003918287938, +0.0002789883268, +0.0000593385214, -0.0001305447471, + -0.0001424124514, +0.0000356031128, +0.0002850194553, +0.0004809338521, + +0.0005402723735, +0.0003741245136, +0.0000060311284, -0.0004215953307, + -0.0007659533074, -0.0008371595331, -0.0005284046693, +0.0000593385214, + +0.0007243190661, +0.0011815175097, +0.0012350194553, +0.0009381322957, + +0.0004867704280, +0.0000356031128, -0.0003206225681, -0.0005344357977, + -0.0006114785992, -0.0005344357977, -0.0003324902724, -0.0001186770428, + +0.0000297665370, +0.0001661478599, +0.0002731517510, +0.0002850194553, + +0.0002375486381, +0.0001900778210, +0.0001186770428, +0.0000000000000, + -0.0001186770428, -0.0002256809339, -0.0003324902724, -0.0004690661479, + -0.0005937743191, -0.0006056420233, -0.0004928015564, -0.0002494163424, + +0.0000593385214, +0.0003027237354, +0.0003503891051, +0.0001959143969, + -0.0000772373541, -0.0003680933852, -0.0005521400778, -0.0005640077821, + -0.0003918287938, -0.0000830739300, +0.0002315175097, +0.0004274319066, + +0.0004749027237, +0.0004334630350, +0.0003680933852, +0.0002908560311, + +0.0002494163424, +0.0002731517510, +0.0002671206226, +0.0001840466926, + +0.0001009727626, +0.0000772373541, +0.0000949416342, +0.0001128404669, + +0.0001186770428, +0.0001484435798, +0.0002375486381, +0.0003562256809, + +0.0004511673152, +0.0004690661479, +0.0003503891051, +0.0000891050584, + -0.0002789883268, -0.0007480544747, -0.0011517509728, -0.0013001945525, + -0.0011636186770, -0.0008490272374, -0.0005107003891, -0.0002671206226, + -0.0001782101167, -0.0002433852140, -0.0004155642023, -0.0006175097276, + -0.0007717898833, -0.0008429961089, -0.0008490272374, -0.0007955252918, + -0.0006768482490, -0.0004928015564, -0.0002908560311, -0.0001365758755, + -0.0000297665370, +0.0000653696498, +0.0001424124514, +0.0001603112840, + +0.0001247081712, +0.0000535019455, -0.0000593385214, -0.0002196498054, + -0.0003859922179, -0.0004749027237, -0.0004453307393, -0.0002789883268, + +0.0000000000000, +0.0003324902724, +0.0005700389105, +0.0006412451362, + +0.0006114785992, +0.0005107003891, +0.0004215953307, +0.0003859922179, + +0.0003562256809, +0.0002789883268, +0.0001721789883, +0.0000712062257, + +0.0000118677043, -0.0000178988327, -0.0000535019455, -0.0000830739300, + -0.0000653696498, +0.0000118677043, +0.0000712062257, +0.0000178988327, + -0.0001661478599, -0.0003859922179, -0.0005463035019, -0.0006056420233, + -0.0005107003891, -0.0002375486381, +0.0001068093385, +0.0003622568093, + +0.0004392996109, +0.0003741245136, +0.0003027237354, +0.0003087548638, + +0.0003622568093, +0.0003859922179, +0.0003503891051, +0.0002789883268, + +0.0001247081712, -0.0001247081712, -0.0003741245136, -0.0005046692607, + -0.0004630350195, -0.0003027237354, -0.0001186770428, +0.0000474708171, + +0.0002196498054, +0.0003918287938, +0.0005402723735, +0.0006470817121, + +0.0006708171206, +0.0005758754864, +0.0003859922179, +0.0001542801556, + -0.0000712062257, -0.0002789883268, -0.0003859922179, -0.0003385214008, + -0.0001721789883, -0.0000060311284, +0.0000653696498, +0.0000178988327, + -0.0001009727626, -0.0002315175097, -0.0002433852140, -0.0001305447471, + +0.0000178988327, +0.0001424124514, +0.0001900778210, +0.0001484435798, + +0.0000237354086, -0.0001247081712, -0.0002433852140, -0.0002968871595, + -0.0002968871595, -0.0002433852140, -0.0001603112840, -0.0001128404669, + -0.0001247081712, -0.0001721789883, -0.0002196498054, -0.0002552529183, + -0.0002731517510, -0.0002552529183, -0.0001959143969, -0.0001068093385, + -0.0000356031128, -0.0000178988327, -0.0000237354086, -0.0000535019455, + -0.0000949416342, -0.0001542801556, -0.0002256809339, -0.0003264591440, + -0.0004392996109, -0.0005344357977, -0.0005758754864, -0.0005640077821, + -0.0004809338521, -0.0003324902724, -0.0001603112840, +0.0000000000000, + +0.0001542801556, +0.0002850194553, +0.0003799610895, +0.0003918287938, + +0.0003027237354, +0.0001840466926, +0.0001186770428, +0.0001186770428, + +0.0001068093385, +0.0000416342412, -0.0000416342412, -0.0001128404669, + -0.0001424124514, -0.0000949416342, +0.0000118677043, +0.0001247081712, + +0.0001484435798, +0.0000297665370, -0.0001424124514, -0.0003027237354, + -0.0003741245136, -0.0003145914397, -0.0001365758755, +0.0000237354086, + +0.0000593385214, -0.0000653696498, -0.0003443579767, -0.0006649805447, + -0.0009143968872, -0.0009914396887, -0.0009025291829, -0.0007066147860, + -0.0004749027237, -0.0002494163424, -0.0000891050584, -0.0000653696498, + -0.0001542801556, -0.0002731517510, -0.0003443579767, -0.0003562256809, + -0.0003562256809, -0.0003741245136, -0.0004097276265, -0.0004097276265, + -0.0003264591440, -0.0001603112840, +0.0000593385214, +0.0002850194553, + +0.0004571984436, +0.0005284046693, +0.0004867704280, +0.0003622568093, + +0.0002196498054, +0.0001305447471, +0.0001186770428, +0.0001721789883, + +0.0002612840467, +0.0003443579767, +0.0003503891051, +0.0002612840467, + +0.0001661478599, +0.0001721789883, +0.0002908560311, +0.0004453307393, + +0.0005284046693, +0.0004928015564, +0.0003622568093, +0.0001900778210, + +0.0000118677043, -0.0001305447471, -0.0002375486381, -0.0003264591440, + -0.0003859922179, -0.0003799610895, -0.0003087548638, -0.0002019455253, + -0.0000830739300, +0.0000118677043, +0.0000653696498, +0.0000653696498, + +0.0000237354086, -0.0000593385214, -0.0001900778210, -0.0003087548638, + -0.0003562256809, -0.0002850194553, -0.0001186770428, +0.0000830739300, + +0.0002494163424, +0.0002671206226, +0.0001128404669, -0.0001484435798, + -0.0004334630350, -0.0006589494163, -0.0007659533074, -0.0007480544747, + -0.0006352140078, -0.0004571984436, -0.0002256809339, +0.0000178988327, + +0.0002077821012, +0.0003264591440, +0.0003918287938, +0.0003978599222, + +0.0003324902724, +0.0001959143969, +0.0000000000000, -0.0002019455253, + -0.0003264591440, -0.0002908560311, -0.0001128404669, +0.0001009727626, + +0.0002850194553, +0.0003859922179, +0.0004215953307, +0.0004334630350, + +0.0004809338521, +0.0005758754864, +0.0006531128405, +0.0006470817121, + +0.0005344357977, +0.0003859922179, +0.0002731517510, +0.0001959143969, + +0.0001484435798, +0.0001603112840, +0.0002256809339, +0.0002671206226, + +0.0002433852140, +0.0001542801556, +0.0000653696498, +0.0000535019455, + +0.0001305447471, +0.0002138132296, +0.0002315175097, +0.0001721789883, + +0.0000416342412, -0.0000772373541, -0.0001068093385, -0.0000237354086, + +0.0001068093385, +0.0002612840467, +0.0003978599222, +0.0004392996109, + +0.0003443579767, +0.0001424124514, -0.0001128404669, -0.0003562256809, + -0.0005107003891, -0.0005344357977, -0.0004097276265, -0.0001721789883, + +0.0000830739300, +0.0003027237354, +0.0004334630350, +0.0004809338521, + +0.0004630350195, +0.0003799610895, +0.0002612840467, +0.0001305447471, + +0.0000416342412, -0.0000118677043, -0.0000653696498, -0.0001009727626, + -0.0000535019455, +0.0000712062257, +0.0001959143969, +0.0002196498054, + +0.0001247081712, -0.0000356031128, -0.0001782101167, -0.0002196498054, + -0.0001661478599, -0.0000653696498, +0.0000772373541, +0.0002494163424, + +0.0003799610895, +0.0004274319066, +0.0003622568093, +0.0001840466926, + -0.0000178988327, -0.0001661478599, -0.0002315175097, -0.0002019455253, + -0.0001068093385, +0.0000000000000, +0.0001068093385, +0.0001603112840, + +0.0001424124514, +0.0000772373541, +0.0000000000000, -0.0000593385214, + -0.0000949416342, -0.0000772373541, +0.0000000000000, +0.0001186770428, + +0.0002077821012, +0.0002196498054, +0.0001484435798, +0.0000474708171, + -0.0000178988327, -0.0000416342412, -0.0000118677043, +0.0000535019455, + +0.0001186770428, +0.0001424124514, +0.0001009727626, +0.0000178988327, + -0.0000416342412, -0.0000474708171, +0.0000118677043, +0.0001186770428, + +0.0002138132296, +0.0002256809339, +0.0001424124514, +0.0000000000000, + -0.0001603112840, -0.0002850194553, -0.0003562256809, -0.0003562256809, + -0.0003027237354, -0.0001959143969, -0.0000416342412, +0.0001186770428, + +0.0002612840467, +0.0003385214008, +0.0003918287938, +0.0004392996109, + +0.0004690661479, +0.0004334630350, +0.0003443579767, +0.0002494163424, + +0.0002077821012, +0.0002077821012, +0.0002138132296, +0.0001782101167, + +0.0000891050584, -0.0000237354086, -0.0000891050584, -0.0000416342412, + +0.0001128404669, +0.0002850194553, +0.0003622568093, +0.0002731517510, + +0.0000416342412, -0.0002375486381, -0.0004511673152, -0.0004690661479, + -0.0002433852140, +0.0001068093385, +0.0004097276265, +0.0005107003891, + +0.0004036964981, +0.0001484435798, -0.0001247081712, -0.0003324902724, + -0.0003978599222, -0.0003206225681, -0.0001603112840, -0.0000060311284, + +0.0000712062257, +0.0001128404669, +0.0001661478599, +0.0002671206226, + +0.0004036964981, +0.0005046692607, +0.0004867704280, +0.0003087548638, + +0.0000297665370, -0.0002433852140, -0.0004215953307, -0.0004453307393, + -0.0003503891051, -0.0002077821012, -0.0000772373541, +0.0000237354086, + +0.0000830739300, +0.0000949416342, +0.0000772373541, +0.0000712062257, + +0.0000949416342, +0.0001009727626, +0.0000416342412, -0.0000712062257, + -0.0002077821012, -0.0003324902724, -0.0003918287938, -0.0003622568093, + -0.0002552529183, -0.0001484435798, -0.0000949416342, -0.0001009727626, + -0.0001484435798, -0.0002315175097, -0.0003443579767, -0.0004690661479, + -0.0005640077821, -0.0005521400778, -0.0004215953307, -0.0001721789883, + +0.0001068093385, +0.0003443579767, +0.0004867704280, +0.0005344357977, + +0.0004928015564, +0.0003859922179, +0.0002077821012, +0.0000118677043, + -0.0001424124514, -0.0002433852140, -0.0002850194553, -0.0002850194553, + -0.0002552529183, -0.0002019455253, -0.0001186770428, -0.0000356031128, + +0.0000000000000, -0.0000474708171, -0.0001721789883, -0.0003206225681, + -0.0003978599222, -0.0003562256809, -0.0001900778210, +0.0000297665370, + +0.0002315175097, +0.0003206225681, +0.0002789883268, +0.0001424124514, + -0.0000178988327, -0.0001128404669, -0.0001009727626, +0.0000000000000, + +0.0001186770428, +0.0002196498054, +0.0002671206226, +0.0002671206226, + +0.0002077821012, +0.0000712062257, -0.0000772373541, -0.0001542801556, + -0.0001128404669, +0.0000297665370, +0.0002077821012, +0.0003264591440, + +0.0003145914397, +0.0001721789883, -0.0000237354086, -0.0001840466926, + -0.0002433852140, -0.0002196498054, -0.0001542801556, -0.0000772373541, + -0.0000118677043, +0.0000118677043, +0.0000178988327, +0.0000060311284, + +0.0000000000000, +0.0000000000000, -0.0000237354086, -0.0000474708171, + -0.0000474708171, -0.0000653696498, -0.0001186770428, -0.0001900778210, + -0.0002671206226, -0.0003385214008, -0.0003680933852, -0.0003562256809, + -0.0003027237354, -0.0002375486381, -0.0001603112840, -0.0000949416342, + -0.0000593385214, -0.0000593385214, -0.0000653696498, -0.0000297665370, + +0.0000356031128, +0.0000949416342, +0.0001128404669, +0.0000949416342, + +0.0000712062257, +0.0000891050584, +0.0001484435798, +0.0002256809339, + +0.0002908560311, +0.0002908560311, +0.0002196498054, +0.0000891050584, + -0.0000653696498, -0.0001900778210, -0.0002196498054, -0.0001365758755, + +0.0000118677043, +0.0001782101167, +0.0002789883268, +0.0002612840467, + +0.0001186770428, -0.0000949416342, -0.0002671206226, -0.0003264591440, + -0.0003027237354, -0.0002256809339, -0.0001247081712, -0.0000178988327, + +0.0000416342412, +0.0000593385214, +0.0000535019455, +0.0000474708171, + +0.0000474708171, +0.0000416342412, +0.0000000000000, -0.0000535019455, + -0.0001009727626, -0.0001365758755, -0.0001603112840, -0.0001424124514, + -0.0000653696498, +0.0000474708171, +0.0001661478599, +0.0002375486381, + +0.0002256809339, +0.0001661478599, +0.0001186770428, +0.0000891050584, + +0.0000474708171, -0.0000060311284, -0.0000830739300, -0.0001542801556, + -0.0001840466926, -0.0001484435798, -0.0000356031128, +0.0000891050584, + +0.0001721789883, +0.0001840466926, +0.0001247081712, +0.0000060311284, + -0.0001305447471, -0.0002612840467, -0.0003264591440, -0.0003385214008, + -0.0002908560311, -0.0001840466926, -0.0000474708171, +0.0001068093385, + +0.0002433852140, +0.0003145914397, +0.0003027237354, +0.0002315175097, + +0.0001009727626, -0.0000535019455, -0.0001782101167, -0.0002077821012, + -0.0001424124514, -0.0000178988327, +0.0001068093385, +0.0001721789883, + +0.0001484435798, +0.0000593385214, +0.0000000000000, +0.0000178988327, + +0.0000949416342, +0.0001603112840, +0.0001840466926, +0.0001840466926, + +0.0001782101167, +0.0001603112840, +0.0001305447471, +0.0000891050584, + +0.0000593385214, +0.0000237354086, -0.0000356031128, -0.0001365758755, + -0.0002433852140, -0.0003145914397, -0.0003385214008, -0.0003206225681, + -0.0002552529183, -0.0001661478599, -0.0000891050584, -0.0000416342412, + -0.0000178988327, +0.0000060311284, +0.0000416342412, +0.0000772373541, + +0.0000891050584, +0.0000593385214, +0.0000000000000, -0.0000474708171, + -0.0000593385214, -0.0000356031128, -0.0000178988327, -0.0000474708171, + -0.0001365758755, -0.0002671206226, -0.0004215953307, -0.0005107003891, + -0.0004630350195, -0.0002612840467, +0.0000237354086, +0.0002968871595, + +0.0004571984436, +0.0004571984436, +0.0003145914397, +0.0001068093385, + -0.0000593385214, -0.0001484435798, -0.0001247081712, -0.0000593385214, + -0.0000060311284, -0.0000060311284, -0.0000593385214, -0.0001186770428, + -0.0001424124514, -0.0000891050584, +0.0000356031128, +0.0002077821012, + +0.0003443579767, +0.0004036964981, +0.0003741245136, +0.0002908560311, + +0.0001721789883, +0.0000535019455, +0.0000060311284, +0.0000772373541, + +0.0002077821012, +0.0003324902724, +0.0004097276265, +0.0003918287938, + +0.0002789883268, +0.0001186770428, -0.0000118677043, -0.0000593385214, + +0.0000060311284, +0.0001365758755, +0.0002612840467, +0.0003206225681, + +0.0002908560311, +0.0001900778210, +0.0000593385214, -0.0000060311284, + +0.0000000000000, +0.0000535019455, +0.0001128404669, +0.0001542801556, + +0.0001603112840, +0.0001305447471, +0.0000772373541, +0.0000060311284, + -0.0000416342412, -0.0000891050584, -0.0001484435798, -0.0001959143969, + -0.0001900778210, -0.0001009727626, +0.0000474708171, +0.0002375486381, + +0.0004334630350, +0.0005758754864, +0.0005937743191, +0.0004690661479, + +0.0002433852140, +0.0000178988327, -0.0001247081712, -0.0001424124514, + -0.0000416342412, +0.0000949416342, +0.0001900778210, +0.0001782101167, + +0.0000653696498, -0.0000830739300, -0.0001840466926, -0.0001959143969, + -0.0001128404669, +0.0000178988327, +0.0001424124514, +0.0001959143969, + +0.0001840466926, +0.0001365758755, +0.0000949416342, +0.0000653696498, + +0.0000356031128, +0.0000060311284, -0.0000297665370, -0.0000593385214, + -0.0000653696498, -0.0000535019455, -0.0000356031128, -0.0000118677043, + +0.0000000000000, -0.0000118677043, -0.0000535019455, -0.0001305447471, + -0.0002315175097, -0.0003145914397, -0.0003562256809, -0.0003027237354, + -0.0001365758755, +0.0000712062257, +0.0002315175097, +0.0002850194553, + +0.0002375486381, +0.0001365758755, +0.0000535019455, +0.0000118677043, + +0.0000060311284, -0.0000060311284, -0.0000949416342, -0.0002196498054, + -0.0003145914397, -0.0002968871595, -0.0001721789883, +0.0000178988327, + +0.0002019455253, +0.0002968871595, +0.0002494163424, +0.0000891050584, + -0.0000949416342, -0.0002375486381, -0.0003027237354, -0.0002789883268, + -0.0001900778210, -0.0000949416342, -0.0000416342412, -0.0000535019455, + -0.0001128404669, -0.0001721789883, -0.0002077821012, -0.0002077821012, + -0.0001542801556, -0.0000535019455, +0.0000593385214, +0.0001305447471, + +0.0001603112840, +0.0001721789883, +0.0001782101167, +0.0001542801556, + +0.0001128404669, +0.0000474708171, -0.0000416342412, -0.0001365758755, + -0.0002315175097, -0.0002908560311, -0.0003324902724, -0.0003443579767, + -0.0003087548638, -0.0002196498054, -0.0000891050584, +0.0000416342412, + +0.0001484435798, +0.0001900778210, +0.0001484435798, +0.0000474708171, + -0.0000237354086, -0.0000474708171, -0.0000237354086, +0.0000000000000, + -0.0000060311284, -0.0000535019455, -0.0001186770428, -0.0001603112840, + -0.0001900778210, -0.0001840466926, -0.0001603112840, -0.0001365758755, + -0.0001305447471, -0.0001484435798, -0.0001959143969, -0.0002612840467, + -0.0002968871595, -0.0002671206226, -0.0001661478599, -0.0000297665370, + +0.0000712062257, +0.0001009727626, +0.0000474708171, -0.0000653696498, + -0.0001840466926, -0.0002433852140, -0.0001900778210, -0.0000178988327, + +0.0002019455253, +0.0003562256809, +0.0003562256809, +0.0001900778210, + -0.0000712062257, -0.0003027237354, -0.0003978599222, -0.0003087548638, + -0.0000830739300, +0.0001661478599, +0.0003385214008, +0.0003741245136, + +0.0002850194553, +0.0001128404669, -0.0000712062257, -0.0002315175097, + -0.0003206225681, -0.0003206225681, -0.0002077821012, +0.0000000000000, + +0.0002196498054, +0.0004097276265, +0.0005046692607, +0.0005107003891, + +0.0004155642023, +0.0002375486381, +0.0000297665370, -0.0001068093385, + -0.0001247081712, -0.0000178988327, +0.0001424124514, +0.0002315175097, + +0.0001840466926, +0.0000356031128, -0.0001305447471, -0.0002671206226, + -0.0003385214008, -0.0003443579767, -0.0002968871595, -0.0002315175097, + -0.0001484435798, -0.0000535019455, +0.0000297665370, +0.0001068093385, + +0.0001840466926, +0.0002494163424, +0.0002552529183, +0.0001782101167, + +0.0000356031128, -0.0001009727626, -0.0001900778210, -0.0002019455253, + -0.0001305447471, -0.0000237354086, +0.0000653696498, +0.0001128404669, + +0.0001009727626, +0.0000653696498, +0.0000297665370, +0.0000060311284, + -0.0000118677043, -0.0000356031128, -0.0000593385214, -0.0000712062257, + -0.0000712062257, -0.0000772373541, -0.0000830739300, -0.0000712062257, + -0.0000356031128, +0.0000000000000, +0.0000118677043, +0.0000060311284, + +0.0000000000000, -0.0000118677043, -0.0000178988327, +0.0000000000000, + +0.0000891050584, +0.0002315175097, +0.0003799610895, +0.0004334630350, + +0.0003622568093, +0.0001542801556, -0.0001128404669, -0.0003443579767, + -0.0004215953307, -0.0003027237354, -0.0000653696498, +0.0001721789883, + +0.0002968871595, +0.0002789883268, +0.0001542801556, +0.0000060311284, + -0.0000949416342, -0.0001128404669, -0.0000356031128, +0.0000772373541, + +0.0001900778210, +0.0002433852140, +0.0002375486381, +0.0001900778210, + +0.0001247081712, +0.0000653696498, +0.0000297665370, +0.0000178988327, + +0.0000000000000, -0.0000237354086, -0.0000891050584, -0.0001721789883, + -0.0002433852140, -0.0002908560311, -0.0002731517510, -0.0001782101167, + -0.0000118677043, +0.0001840466926, +0.0003799610895, +0.0004928015564, + +0.0004690661479, +0.0003087548638, +0.0000712062257, -0.0001424124514, + -0.0002375486381, -0.0001782101167, -0.0000178988327, +0.0001603112840, + +0.0002968871595, +0.0003680933852, +0.0003385214008, +0.0002196498054, + +0.0000830739300, +0.0000000000000, +0.0000000000000, +0.0000237354086, + +0.0000474708171, +0.0000474708171, +0.0000356031128, +0.0000237354086, + +0.0000000000000, -0.0000593385214, -0.0001661478599, -0.0002789883268, + -0.0003622568093, -0.0003622568093, -0.0002731517510, -0.0001128404669, + +0.0000712062257, +0.0002256809339, +0.0002968871595, +0.0002789883268, + +0.0001721789883, +0.0000297665370, -0.0001068093385, -0.0002019455253, + -0.0002494163424, -0.0002315175097, -0.0001661478599, -0.0000712062257, + +0.0000060311284, +0.0000593385214, +0.0000653696498, +0.0000297665370, + +0.0000000000000, -0.0000237354086, -0.0000416342412, -0.0000416342412, + -0.0000237354086, +0.0000118677043, +0.0000712062257, +0.0001603112840, + +0.0002612840467, +0.0003145914397, +0.0002671206226, +0.0001424124514, + +0.0000178988327, -0.0000416342412, -0.0000237354086, +0.0000712062257, + +0.0002138132296, +0.0003324902724, +0.0003562256809, +0.0002612840467, + +0.0001068093385, -0.0000474708171, -0.0001721789883, -0.0002138132296, + -0.0001365758755, +0.0000118677043, +0.0001603112840, +0.0002375486381, + +0.0002494163424, +0.0001959143969, +0.0000891050584, -0.0000178988327, + -0.0000891050584, -0.0001186770428, -0.0001424124514, -0.0001603112840, + -0.0001424124514, -0.0001009727626, -0.0000593385214, -0.0000474708171, + -0.0000416342412, -0.0000356031128, -0.0000297665370, -0.0000237354086, + +0.0000000000000, +0.0000474708171, +0.0001068093385, +0.0001365758755, + +0.0001365758755, +0.0001009727626, +0.0000297665370, -0.0000535019455, + -0.0001365758755, -0.0002019455253, -0.0002315175097, -0.0002196498054, + -0.0001661478599, -0.0000830739300, -0.0000474708171, -0.0000772373541, + -0.0001661478599, -0.0002850194553, -0.0003918287938, -0.0004215953307, + -0.0003324902724, -0.0001484435798, +0.0000356031128, +0.0001840466926, + +0.0002552529183, +0.0002612840467, +0.0002077821012, +0.0001365758755, + +0.0000474708171, -0.0000297665370, -0.0001247081712, -0.0001959143969, + -0.0001959143969, -0.0001305447471, -0.0000416342412, +0.0000297665370, + +0.0000593385214, +0.0000060311284, -0.0001186770428, -0.0002731517510, + -0.0003918287938, -0.0004274319066, -0.0003443579767, -0.0001484435798, + +0.0000830739300, +0.0002731517510, +0.0003562256809, +0.0003087548638, + +0.0001542801556, -0.0000356031128, -0.0001959143969, -0.0002552529183, + -0.0002019455253, -0.0000416342412, +0.0001484435798, +0.0003027237354, + +0.0003443579767, +0.0002612840467, +0.0000891050584, -0.0000830739300, + -0.0001782101167, -0.0001900778210, -0.0001484435798, -0.0000653696498, + +0.0000178988327, +0.0000593385214, +0.0000416342412, +0.0000000000000, + -0.0000416342412, -0.0000830739300, -0.0001247081712, -0.0001721789883, + -0.0002256809339, -0.0002612840467, -0.0002375486381, -0.0001305447471, + +0.0000237354086, +0.0001721789883, +0.0002494163424, +0.0002375486381, + +0.0001484435798, +0.0000237354086, -0.0000891050584, -0.0001721789883, + -0.0002315175097, -0.0002731517510, -0.0003027237354, -0.0002850194553, + -0.0002138132296, -0.0001247081712, -0.0000474708171, -0.0000060311284, + -0.0000118677043, -0.0000712062257, -0.0001484435798, -0.0001900778210, + -0.0001840466926, -0.0001484435798, -0.0000712062257, +0.0000297665370, + +0.0001186770428, +0.0001542801556, +0.0001365758755, +0.0000891050584, + +0.0000535019455, +0.0000474708171, +0.0000535019455, +0.0000772373541, + +0.0001128404669, +0.0001305447471, +0.0001068093385, +0.0000060311284, + -0.0001305447471, -0.0002552529183, -0.0003145914397, -0.0003087548638, + -0.0002196498054, -0.0000712062257, +0.0000772373541, +0.0001721789883, + +0.0002077821012, +0.0001959143969, +0.0001721789883, +0.0001542801556, + +0.0001424124514, +0.0001365758755, +0.0001484435798, +0.0001661478599, + +0.0001782101167, +0.0001424124514, +0.0000712062257, -0.0000297665370, + -0.0001365758755, -0.0002315175097, -0.0002731517510, -0.0002433852140, + -0.0001603112840, -0.0000653696498, +0.0000000000000, +0.0000297665370, + +0.0000237354086, -0.0000178988327, -0.0000772373541, -0.0001186770428, + -0.0001128404669, -0.0000772373541, -0.0000297665370, +0.0000178988327, + +0.0000712062257, +0.0001128404669, +0.0001424124514, +0.0001661478599, + +0.0001840466926, +0.0001959143969, +0.0001840466926, +0.0001424124514, + +0.0000593385214, -0.0000237354086, -0.0000830739300, -0.0001009727626, + -0.0000891050584, -0.0000593385214, -0.0000356031128, -0.0000118677043, + +0.0000118677043, +0.0000653696498, +0.0001365758755, +0.0002077821012, + +0.0002552529183, +0.0002256809339, +0.0001305447471, +0.0000060311284, + -0.0000830739300, -0.0001305447471, -0.0001305447471, -0.0000949416342, + -0.0000118677043, +0.0001068093385, +0.0002196498054, +0.0002671206226, + +0.0002433852140, +0.0001782101167, +0.0001068093385, +0.0000653696498, + +0.0000474708171, +0.0000535019455, +0.0000535019455, +0.0000297665370, + -0.0000118677043, -0.0000593385214, -0.0000891050584, -0.0001186770428, + -0.0001424124514, -0.0001484435798, -0.0001247081712, -0.0000772373541, + -0.0000297665370, -0.0000178988327, -0.0000178988327, -0.0000060311284, + +0.0000178988327, +0.0000535019455, +0.0000772373541, +0.0001009727626, + +0.0001186770428, +0.0001186770428, +0.0000949416342, +0.0000653696498, + +0.0000474708171, +0.0000356031128, +0.0000178988327, -0.0000060311284, + -0.0000297665370, -0.0000118677043, +0.0000356031128, +0.0000949416342, + +0.0001424124514, +0.0001603112840, +0.0001305447471, +0.0000535019455, + -0.0000474708171, -0.0001186770428, -0.0001247081712, -0.0000653696498, + +0.0000237354086, +0.0001186770428, +0.0001840466926, +0.0001959143969, + +0.0001721789883, +0.0001365758755, +0.0000949416342, +0.0000772373541, + +0.0000712062257, +0.0000535019455, -0.0000060311284, -0.0000830739300, + -0.0001365758755, -0.0001424124514, -0.0001068093385, -0.0000772373541, + -0.0000653696498, -0.0000593385214, -0.0000535019455, -0.0000474708171, + -0.0000237354086, +0.0000000000000, +0.0000416342412, +0.0000772373541, + +0.0001009727626, +0.0001186770428, +0.0001186770428, +0.0000949416342, + +0.0000653696498, +0.0000356031128, +0.0000297665370, +0.0000474708171, + +0.0000712062257, +0.0000830739300, +0.0000830739300, +0.0000653696498, + +0.0000474708171, +0.0000535019455, +0.0000891050584, +0.0001365758755, + +0.0001840466926, +0.0001900778210, +0.0001603112840, +0.0001186770428, + +0.0000891050584, +0.0000772373541, +0.0000949416342, +0.0001305447471, + +0.0001661478599, +0.0001900778210, +0.0001900778210, +0.0001661478599, + +0.0001305447471, +0.0000891050584, +0.0000535019455, +0.0000237354086, + +0.0000118677043, +0.0000178988327, +0.0000356031128, +0.0000712062257, + +0.0001009727626, +0.0001068093385, +0.0000830739300, +0.0000474708171, + +0.0000297665370, +0.0000178988327, +0.0000000000000, -0.0000535019455, + -0.0001247081712, -0.0001900778210, -0.0002315175097, -0.0002433852140, + -0.0002196498054, -0.0001424124514, -0.0000237354086, +0.0000830739300, + +0.0001603112840, +0.0002077821012, +0.0001900778210, +0.0001068093385, + +0.0000060311284, -0.0000712062257, -0.0000830739300, -0.0000474708171, + +0.0000060311284, +0.0000712062257, +0.0001186770428, +0.0001186770428, + +0.0000593385214, -0.0000237354086, -0.0001128404669, -0.0001603112840, + -0.0001840466926, -0.0001840466926, -0.0001542801556, -0.0000891050584, + -0.0000178988327, +0.0000237354086, +0.0000474708171, +0.0000474708171, + +0.0000356031128, +0.0000237354086, +0.0000000000000, -0.0000060311284, + -0.0000118677043, -0.0000178988327, -0.0000118677043, +0.0000237354086, + +0.0001068093385, +0.0002138132296, +0.0002908560311, +0.0003027237354, + +0.0002552529183, +0.0001840466926, +0.0001068093385, +0.0000535019455, + +0.0000118677043, +0.0000000000000, -0.0000060311284, -0.0000118677043, + -0.0000356031128, -0.0000593385214, -0.0000653696498, -0.0000474708171, + -0.0000118677043, +0.0000297665370, +0.0000712062257, +0.0000949416342, + +0.0000949416342, +0.0000593385214, +0.0000178988327, -0.0000178988327, + -0.0000593385214, -0.0000891050584, -0.0001128404669, -0.0001247081712, + -0.0001542801556, -0.0001959143969, -0.0002256809339, -0.0002375486381, + -0.0002256809339, -0.0002138132296, -0.0001959143969, -0.0001840466926, + -0.0001603112840, -0.0001305447471, -0.0000949416342, -0.0000772373541, + -0.0000653696498, -0.0000535019455, -0.0000297665370, -0.0000060311284, + -0.0000178988327, -0.0000593385214, -0.0001305447471, -0.0001959143969, + -0.0002196498054, -0.0002077821012, -0.0001661478599, -0.0001128404669, + -0.0000593385214, -0.0000297665370, -0.0000297665370, -0.0000593385214, + -0.0000949416342, -0.0000949416342, -0.0000474708171, +0.0000297665370, + +0.0001009727626, +0.0001365758755, +0.0001247081712, +0.0000949416342, + +0.0000712062257, +0.0000593385214, +0.0000535019455, +0.0000474708171, + +0.0000356031128, +0.0000297665370, +0.0000237354086, +0.0000000000000, + -0.0000416342412, -0.0000949416342, -0.0001186770428, -0.0001068093385, + -0.0000830739300, -0.0000416342412, +0.0000118677043, +0.0000830739300, + +0.0001424124514, +0.0001484435798, +0.0000949416342, +0.0000000000000, + -0.0001305447471, -0.0002494163424, -0.0003264591440, -0.0003443579767, + -0.0003027237354, -0.0002315175097, -0.0001424124514, -0.0000474708171, + +0.0000356031128, +0.0000830739300, +0.0000772373541, +0.0000356031128, + +0.0000000000000, -0.0000416342412, -0.0000593385214, -0.0000653696498, + -0.0000712062257, -0.0000891050584, -0.0001009727626, -0.0000830739300, + -0.0000297665370, +0.0000535019455, +0.0001484435798, +0.0001959143969, + +0.0001721789883, +0.0000830739300, -0.0000416342412, -0.0001484435798, + -0.0001959143969, -0.0001603112840, -0.0000772373541, +0.0000000000000, + +0.0000416342412, +0.0000178988327, -0.0000474708171, -0.0001186770428, + -0.0001186770428, -0.0000356031128, +0.0001305447471, +0.0003087548638, + +0.0004215953307, +0.0004215953307, +0.0003027237354, +0.0001305447471, + -0.0000297665370, -0.0001365758755, -0.0001603112840, -0.0001068093385, + -0.0000178988327, +0.0000593385214, +0.0001068093385, +0.0001068093385, + +0.0000891050584, +0.0000535019455, +0.0000237354086, +0.0000060311284, + +0.0000118677043, +0.0000356031128, +0.0000653696498, +0.0001009727626, + +0.0001365758755, +0.0001542801556, +0.0001305447471, +0.0000712062257, + -0.0000118677043, -0.0000949416342, -0.0001305447471, -0.0001186770428, + -0.0000653696498, +0.0000060311284, +0.0000772373541, +0.0001186770428, + +0.0001305447471, +0.0001068093385, +0.0000653696498, +0.0000356031128, + +0.0000297665370, +0.0000416342412, +0.0000593385214, +0.0000593385214, + +0.0000237354086, -0.0000237354086, -0.0000772373541, -0.0001186770428, + -0.0001365758755, -0.0001365758755, -0.0001128404669, -0.0000653696498, + +0.0000000000000, +0.0000474708171, +0.0000772373541, +0.0000712062257, + +0.0000535019455, +0.0000416342412, +0.0000416342412, +0.0000535019455, + +0.0000593385214, +0.0000416342412, +0.0000237354086, +0.0000178988327, + +0.0000416342412, +0.0000772373541, +0.0000949416342, +0.0000830739300, + +0.0000474708171, -0.0000060311284, -0.0000535019455, -0.0000653696498, + -0.0000535019455, -0.0000178988327, +0.0000060311284, +0.0000118677043, + +0.0000000000000, -0.0000297665370, -0.0000593385214, -0.0000593385214, + -0.0000237354086, +0.0000474708171, +0.0001424124514, +0.0002138132296, + +0.0002315175097, +0.0001840466926, +0.0001009727626, +0.0000000000000, + -0.0000772373541, -0.0001247081712, -0.0001128404669, -0.0000653696498, + -0.0000118677043, +0.0000000000000, -0.0000178988327, -0.0000416342412, + -0.0000593385214, -0.0000535019455, -0.0000356031128, +0.0000000000000, + +0.0000593385214, +0.0001365758755, +0.0001840466926, +0.0002019455253, + +0.0001840466926, +0.0001484435798, +0.0000830739300, +0.0000178988327, + -0.0000178988327, -0.0000118677043, +0.0000416342412, +0.0001247081712, + +0.0002077821012, +0.0002552529183, +0.0002433852140, +0.0001603112840, + +0.0000297665370, -0.0001009727626, -0.0001959143969, -0.0002315175097, + -0.0002256809339, -0.0002077821012, -0.0001782101167, -0.0001424124514, + -0.0000830739300, +0.0000000000000, +0.0000830739300, +0.0001424124514, + +0.0001484435798, +0.0001068093385, +0.0000416342412, -0.0000118677043, + -0.0000416342412, -0.0000356031128, -0.0000060311284, +0.0000356031128, + +0.0000593385214, +0.0000535019455, +0.0000178988327, -0.0000297665370, + -0.0000593385214, -0.0000712062257, -0.0000593385214, -0.0000356031128, + +0.0000000000000, +0.0000416342412, +0.0000772373541, +0.0001009727626, + +0.0001068093385, +0.0000949416342, +0.0000474708171, -0.0000118677043, + -0.0000712062257, -0.0001128404669, -0.0001128404669, -0.0000653696498, + +0.0000118677043, +0.0001068093385, +0.0001721789883, +0.0001782101167, + +0.0001305447471, +0.0000653696498, +0.0000118677043, +0.0000000000000, + +0.0000237354086, +0.0000772373541, +0.0001247081712, +0.0001247081712, + +0.0000772373541, +0.0000118677043, -0.0000356031128, -0.0000772373541, + -0.0000891050584, -0.0000830739300, -0.0000712062257, -0.0000653696498, + -0.0000653696498, -0.0000772373541, -0.0000830739300, -0.0000772373541, + -0.0000712062257, -0.0000712062257, -0.0000712062257, -0.0000653696498, + -0.0000593385214, -0.0000416342412, +0.0000000000000, +0.0000593385214, + +0.0001128404669, +0.0001247081712, +0.0000772373541, +0.0000060311284, + -0.0000772373541, -0.0001484435798, -0.0001721789883, -0.0001484435798, + -0.0001009727626, -0.0000712062257, -0.0000653696498, -0.0001009727626, + -0.0001542801556, -0.0002077821012, -0.0002256809339, -0.0001900778210, + -0.0001247081712, -0.0000593385214, -0.0000237354086, -0.0000237354086, + -0.0000535019455, -0.0000772373541, -0.0000712062257, -0.0000593385214, + -0.0000474708171, -0.0000535019455, -0.0000772373541, -0.0001068093385, + -0.0001305447471, -0.0001247081712, -0.0000891050584, -0.0000356031128, + +0.0000297665370, +0.0001068093385, +0.0001603112840, +0.0001782101167, + +0.0001305447471, +0.0000535019455, -0.0000237354086, -0.0000712062257, + -0.0000712062257, -0.0000297665370, +0.0000237354086, +0.0000474708171, + +0.0000356031128, -0.0000118677043, -0.0000593385214, -0.0000653696498, + -0.0000237354086, +0.0000474708171, +0.0001068093385, +0.0001247081712, + +0.0000830739300, +0.0000000000000, -0.0000949416342, -0.0001542801556, + -0.0001542801556, -0.0001068093385, -0.0000416342412, +0.0000000000000, + +0.0000060311284, -0.0000118677043, -0.0000712062257, -0.0001305447471, + -0.0001661478599, -0.0001840466926, -0.0001900778210, -0.0001900778210, + -0.0001782101167, -0.0001484435798, -0.0000949416342, -0.0000474708171, + +0.0000000000000, +0.0000416342412, +0.0000474708171, +0.0000237354086, + -0.0000060311284, -0.0000356031128, -0.0000593385214, -0.0000830739300, + -0.0001009727626, -0.0001009727626, -0.0000891050584, -0.0000772373541, + -0.0000891050584, -0.0001068093385, -0.0001068093385, -0.0000712062257, + -0.0000060311284, +0.0000474708171, +0.0000772373541, +0.0000712062257, + +0.0000474708171, +0.0000060311284, -0.0000356031128, -0.0000772373541, + -0.0001009727626, -0.0000949416342, -0.0000593385214, -0.0000118677043, + +0.0000356031128, +0.0000653696498, +0.0000593385214, +0.0000237354086, + +0.0000000000000, -0.0000060311284, +0.0000060311284, +0.0000474708171, + +0.0001068093385, +0.0001661478599, +0.0001959143969, +0.0001840466926, + +0.0001484435798, +0.0001009727626, +0.0000535019455, +0.0000237354086, + +0.0000000000000, -0.0000060311284, -0.0000178988327, -0.0000297665370, + -0.0000535019455, -0.0000712062257, -0.0000772373541, -0.0000772373541, + -0.0000653696498, -0.0000653696498, -0.0000830739300, -0.0000830739300, + -0.0000535019455, +0.0000060311284, +0.0001009727626, +0.0001840466926, + +0.0002375486381, +0.0002315175097, +0.0001484435798, +0.0000356031128, + -0.0000653696498, -0.0001365758755, -0.0001484435798, -0.0001247081712, + -0.0000593385214, +0.0000000000000, +0.0000535019455, +0.0000772373541, + +0.0000949416342, +0.0000949416342, +0.0000712062257, +0.0000237354086, + -0.0000237354086, -0.0000653696498, -0.0000830739300, -0.0000712062257, + -0.0000416342412, +0.0000000000000, +0.0000356031128, +0.0000593385214, + +0.0000772373541, +0.0001009727626, +0.0001247081712, +0.0001365758755, + +0.0001128404669, +0.0000474708171, -0.0000297665370, -0.0001128404669, + -0.0001721789883, -0.0001900778210, -0.0001603112840, -0.0000949416342, + -0.0000237354086, +0.0000356031128, +0.0000830739300, +0.0001009727626, + +0.0000891050584, +0.0000712062257, +0.0000772373541, +0.0001068093385, + +0.0001247081712, +0.0001186770428, +0.0000712062257, +0.0000118677043, + -0.0000297665370, -0.0000416342412, -0.0000178988327, +0.0000118677043, + +0.0000535019455, +0.0000949416342, +0.0001186770428, +0.0001247081712, + +0.0001186770428, +0.0001009727626, +0.0000653696498, +0.0000237354086, + -0.0000118677043, -0.0000237354086, +0.0000000000000, +0.0000474708171, + +0.0000891050584, +0.0001009727626, +0.0000830739300, +0.0000356031128, + -0.0000237354086, -0.0000772373541, -0.0000891050584, -0.0000593385214, + +0.0000060311284, +0.0000830739300, +0.0001424124514, +0.0001782101167, + +0.0001840466926, +0.0001721789883, +0.0001305447471, +0.0000830739300, + +0.0000237354086, -0.0000178988327, -0.0000474708171, -0.0000653696498, + -0.0000772373541, -0.0000830739300, -0.0000653696498, -0.0000356031128, + +0.0000118677043, +0.0000593385214, +0.0000891050584, +0.0001068093385, + +0.0001247081712, +0.0001365758755, +0.0001424124514, +0.0001305447471, + +0.0000891050584, +0.0000356031128, -0.0000060311284, -0.0000297665370, + -0.0000297665370, -0.0000118677043, +0.0000000000000, +0.0000118677043, + +0.0000060311284, +0.0000000000000, +0.0000118677043, +0.0000593385214, + +0.0001247081712, +0.0001840466926, +0.0002138132296, +0.0002138132296, + +0.0001840466926, +0.0001365758755, +0.0001068093385, +0.0001068093385, + +0.0001305447471, +0.0001603112840, +0.0001721789883, +0.0001424124514, + +0.0000772373541, -0.0000178988327, -0.0001247081712, -0.0001840466926, + -0.0001661478599, -0.0000830739300, +0.0000297665370, +0.0001542801556, + +0.0002433852140, +0.0002731517510, +0.0002433852140, +0.0001840466926, + +0.0001186770428, +0.0000712062257, +0.0000178988327, -0.0000297665370, + -0.0000772373541, -0.0001009727626, -0.0000949416342, -0.0000593385214, + -0.0000118677043, +0.0000237354086, +0.0000356031128, +0.0000178988327, + -0.0000118677043, -0.0000416342412, -0.0000474708171, -0.0000178988327, + +0.0000237354086, +0.0000653696498, +0.0000712062257, +0.0000593385214, + +0.0000474708171, +0.0000416342412, +0.0000356031128, +0.0000178988327, + +0.0000000000000, -0.0000237354086, -0.0000416342412, -0.0000474708171, + -0.0000356031128, -0.0000178988327, +0.0000000000000, +0.0000178988327, + +0.0000118677043, -0.0000118677043, -0.0000535019455, -0.0000891050584, + -0.0000949416342, -0.0000593385214, +0.0000178988327, +0.0001365758755, + +0.0002433852140, +0.0002850194553, +0.0002552529183, +0.0001782101167, + +0.0000891050584, +0.0000060311284, -0.0000474708171, -0.0000830739300, + -0.0000830739300, -0.0000474708171, +0.0000000000000, +0.0000535019455, + +0.0001068093385, +0.0001247081712, +0.0001068093385, +0.0000535019455, + +0.0000000000000, -0.0000356031128, -0.0000416342412, -0.0000297665370, + +0.0000000000000, +0.0000237354086, +0.0000535019455, +0.0000772373541, + +0.0000772373541, +0.0000593385214, +0.0000416342412, +0.0000237354086, + +0.0000000000000, -0.0000297665370, -0.0000772373541, -0.0001128404669, + -0.0001247081712, -0.0001186770428, -0.0000830739300, -0.0000297665370, + +0.0000000000000, +0.0000000000000, -0.0000237354086, -0.0000830739300, + -0.0001484435798, -0.0001782101167, -0.0001603112840, -0.0000891050584, + +0.0000000000000, +0.0000593385214, +0.0000653696498, +0.0000297665370, + -0.0000297665370, -0.0000830739300, -0.0001068093385, -0.0000891050584, + -0.0000297665370, +0.0000356031128, +0.0000891050584, +0.0000891050584, + +0.0000474708171, -0.0000118677043, -0.0000712062257, -0.0000891050584, + -0.0000830739300, -0.0000712062257, -0.0000653696498, -0.0000712062257, + -0.0000891050584, -0.0001068093385, -0.0000949416342, -0.0000356031128, + +0.0000237354086, +0.0000593385214, +0.0000416342412, -0.0000178988327, + -0.0000891050584, -0.0001424124514, -0.0001542801556, -0.0001128404669, + -0.0000237354086, +0.0000772373541, +0.0001603112840, +0.0002019455253, + +0.0001840466926, +0.0001068093385, +0.0000000000000, -0.0000891050584, + -0.0001365758755, -0.0001365758755, -0.0001068093385, -0.0000653696498, + -0.0000356031128, -0.0000237354086, -0.0000297665370, -0.0000237354086, + -0.0000060311284, +0.0000237354086, +0.0000653696498, +0.0001068093385, + +0.0001305447471, +0.0001068093385, +0.0000416342412, -0.0000237354086, + -0.0000830739300, -0.0001128404669, -0.0000949416342, -0.0000356031128, + +0.0000297665370, +0.0001009727626, +0.0001484435798, +0.0001484435798, + +0.0001068093385, +0.0000356031128, -0.0000356031128, -0.0000949416342, + -0.0001305447471, -0.0001305447471, -0.0001068093385, -0.0000772373541, + -0.0000535019455, -0.0000297665370, +0.0000000000000, +0.0000237354086, + +0.0000178988327, -0.0000118677043, -0.0000653696498, -0.0001128404669, + -0.0001424124514, -0.0001424124514, -0.0001009727626, -0.0000178988327, + +0.0000830739300, +0.0001661478599, +0.0002077821012, +0.0001840466926, + +0.0001009727626, -0.0000237354086, -0.0001424124514, -0.0002138132296, + -0.0002315175097, -0.0002019455253, -0.0001542801556, -0.0001009727626, + -0.0000535019455, -0.0000060311284, +0.0000237354086, +0.0000416342412, + +0.0000535019455, +0.0000416342412, +0.0000237354086, +0.0000000000000, + -0.0000297665370, -0.0000416342412, -0.0000356031128, -0.0000178988327, + -0.0000060311284, -0.0000118677043, -0.0000416342412, -0.0000593385214, + -0.0000535019455, -0.0000178988327, +0.0000237354086, +0.0000593385214, + +0.0000653696498, +0.0000356031128, -0.0000178988327, -0.0000830739300, + -0.0001186770428, -0.0001247081712, -0.0001068093385, -0.0000712062257, + -0.0000416342412, -0.0000118677043, +0.0000000000000, +0.0000118677043, + +0.0000237354086, +0.0000356031128, +0.0000593385214, +0.0000772373541, + +0.0000830739300, +0.0000593385214, +0.0000000000000, -0.0000772373541, + -0.0001542801556, -0.0001840466926, -0.0001484435798, -0.0000653696498, + +0.0000178988327, +0.0000891050584, +0.0001186770428, +0.0001128404669, + +0.0000653696498, +0.0000000000000, -0.0000712062257, -0.0001068093385, + -0.0001068093385, -0.0000891050584, -0.0000653696498, -0.0000593385214, + -0.0000593385214, -0.0000653696498, -0.0000653696498, -0.0000474708171, + -0.0000237354086, -0.0000060311284, +0.0000060311284, +0.0000000000000, + -0.0000237354086, -0.0000772373541, -0.0001247081712, -0.0001542801556, + -0.0001365758755, -0.0000653696498, +0.0000297665370, +0.0001128404669, + +0.0001542801556, +0.0001365758755, +0.0000891050584, +0.0000474708171, + +0.0000237354086, +0.0000000000000, -0.0000178988327, -0.0000237354086, + -0.0000178988327, +0.0000060311284, +0.0000416342412, +0.0000949416342, + +0.0001365758755, +0.0001484435798, +0.0001305447471, +0.0000891050584, + +0.0000474708171, +0.0000000000000, -0.0000356031128, -0.0000474708171, + -0.0000356031128, +0.0000000000000, +0.0000416342412, +0.0001009727626, + +0.0001484435798, +0.0001782101167, +0.0001603112840, +0.0001128404669, + +0.0000416342412, -0.0000060311284, -0.0000356031128, -0.0000237354086, + -0.0000060311284, -0.0000118677043, -0.0000416342412, -0.0000830739300, + -0.0001068093385, -0.0001009727626, -0.0000593385214, +0.0000060311284, + +0.0000891050584, +0.0001484435798, +0.0001603112840, +0.0001305447471, + +0.0000535019455, -0.0000535019455, -0.0001542801556, -0.0002077821012, + -0.0001840466926, -0.0001068093385, -0.0000060311284, +0.0000593385214, + +0.0000891050584, +0.0000891050584, +0.0000653696498, +0.0000416342412, + +0.0000297665370, +0.0000237354086, +0.0000118677043, +0.0000000000000, + -0.0000178988327, -0.0000416342412, -0.0000535019455, -0.0000416342412, + -0.0000060311284, +0.0000356031128, +0.0000772373541, +0.0000712062257, + +0.0000297665370, -0.0000297665370, -0.0000712062257, -0.0000772373541, + -0.0000474708171, +0.0000000000000, +0.0000416342412, +0.0000653696498, + +0.0000593385214, +0.0000356031128, +0.0000237354086, +0.0000118677043, + +0.0000060311284, -0.0000118677043, -0.0000297665370, -0.0000416342412, + -0.0000474708171, -0.0000416342412, -0.0000297665370, -0.0000297665370, + -0.0000297665370, -0.0000356031128, -0.0000416342412, -0.0000237354086, + +0.0000178988327, +0.0000891050584, +0.0001484435798, +0.0001721789883, + +0.0001305447471, +0.0000356031128, -0.0000712062257, -0.0001603112840, + -0.0001782101167, -0.0001186770428, +0.0000000000000, +0.0001305447471, + +0.0002138132296, +0.0002256809339, +0.0001661478599, +0.0000653696498, + -0.0000474708171, -0.0001424124514, -0.0001959143969, -0.0001959143969, + -0.0001542801556, -0.0000949416342, -0.0000297665370, +0.0000237354086, + +0.0000712062257, +0.0000891050584, +0.0000772373541, +0.0000416342412, + -0.0000237354086, -0.0001128404669, -0.0001959143969, -0.0002375486381, + -0.0002196498054, -0.0001305447471, -0.0000178988327, +0.0000830739300, + +0.0001365758755, +0.0001186770428, +0.0000593385214, -0.0000118677043, + -0.0000535019455, -0.0000416342412, +0.0000178988327, +0.0000949416342, + +0.0001365758755, +0.0001128404669, +0.0000297665370, -0.0000653696498, + -0.0001603112840, -0.0001900778210, -0.0001661478599, -0.0000949416342, + -0.0000178988327, +0.0000237354086, +0.0000416342412, +0.0000356031128, + +0.0000237354086, +0.0000060311284, +0.0000060311284, +0.0000118677043, + +0.0000118677043, +0.0000118677043, +0.0000060311284, +0.0000000000000, + +0.0000000000000, +0.0000000000000, +0.0000000000000, +0.0000000000000 +}; diff --git a/plugins/ladspa_effect/swh/impulses/17-marshall-jcm2000-sm57-off.h b/plugins/ladspa_effect/swh/impulses/17-marshall-jcm2000-sm57-off.h new file mode 100644 index 000000000..0eb8bcb9c --- /dev/null +++ b/plugins/ladspa_effect/swh/impulses/17-marshall-jcm2000-sm57-off.h @@ -0,0 +1,1315 @@ +float marshall_jcm2000_sm57_off[] = { + +0.0000000000000, -0.0000263793103, -0.0000684482759, -0.0000946551724, + -0.0001579310345, -0.0001789655172, -0.0002000000000, -0.0001894827586, + -0.0002000000000, -0.0002051724138, -0.0001946551724, -0.0002210344828, + -0.0001946551724, -0.0002472413793, -0.0002105172414, -0.0002893103448, + -0.0002315517241, -0.0003105172414, -0.0002315517241, -0.0003105172414, + -0.0002472413793, -0.0003051724138, -0.0003367241379, -0.0001684482759, + -0.0006734482759, +0.0000631034483, -0.0002000000000, -0.0010996551724, + -0.0003105172414, +0.0001684482759, -0.0000789655172, -0.0004787931034, + -0.0007629310345, -0.0007470689655, -0.0006367241379, -0.0005367241379, + -0.0003841379310, -0.0004525862069, -0.0003787931034, -0.0004367241379, + -0.0004946551724, -0.0004577586207, -0.0005734482759, -0.0005629310345, + -0.0006682758621, -0.0007524137931, -0.0007313793103, -0.0007103448276, + -0.0005156896552, -0.0002472413793, +0.0002262068966, -0.0001262068966, + -0.0031832758621, -0.0043934482759, -0.0014522413793, -0.0059403448276, + -0.0157375862069, -0.0040777586207, +0.0346217241379, +0.0692696551724, + +0.0783565517241, +0.0612034482759, +0.0107443103448, -0.0608246551724, + -0.1221439655172, -0.1615853448276, -0.1723979310345, -0.1466053448276, + -0.0943098275862, -0.0352425862069, +0.0136277586207, +0.0395570689655, + +0.0450344827586, +0.0405041379310, +0.0266396551724, +0.0094236206897, + +0.0041936206897, +0.0126122413793, +0.0275605172414, +0.0389310344828, + +0.0339429310345, +0.0154903448276, -0.0024834482759, -0.0138434482759, + -0.0174529310345, -0.0073768965517, +0.0138486206897, +0.0317436206897, + +0.0383468965517, +0.0365422413793, +0.0338798275862, +0.0332536206897, + +0.0303544827586, +0.0269396551724, +0.0240615517241, +0.0170529310345, + +0.0119701724138, +0.0168110344828, +0.0295651724138, +0.0424982758621, + +0.0459079310345, +0.0374998275862, +0.0234037931034, +0.0070874137931, + -0.0074874137931, -0.0145643103448, -0.0140591379310, -0.0082924137931, + +0.0015889655172, +0.0138329310345, +0.0257768965517, +0.0342850000000, + +0.0367684482759, +0.0339165517241, +0.0279603448276, +0.0196417241379, + +0.0083924137931, -0.0026150000000, -0.0071243103448, -0.0039620689655, + +0.0021310344828, +0.0059824137931, +0.0057351724138, +0.0023256896552, + -0.0005208620690, +0.0014258620690, +0.0087081034483, +0.0179053448276, + +0.0251348275862, +0.0274184482759, +0.0245824137931, +0.0205887931034, + +0.0176581034483, +0.0133856896552, +0.0078293103448, +0.0046250000000, + +0.0036725862069, +0.0027939655172, +0.0003315517241, -0.0035515517241, + -0.0055774137931, -0.0041987931034, -0.0015679310345, +0.0019836206897, + +0.0057772413793, +0.0054563793103, +0.0007998275862, -0.0033674137931, + -0.0036884482759, +0.0008103448276, +0.0102496551724, +0.0214727586207, + +0.0293600000000, +0.0309753448276, +0.0257346551724, +0.0155693103448, + +0.0040936206897, -0.0074505172414, -0.0180053448276, -0.0232091379310, + -0.0215727586207, -0.0168162068966, -0.0119439655172, -0.0080082758621, + -0.0061403448276, -0.0060087931034, -0.0058615517241, -0.0043144827586, + -0.0015574137931, +0.0006787931034, +0.0001210344828, -0.0041513793103, + -0.0111284482759, -0.0185789655172, -0.0234196551724, -0.0241982758621, + -0.0220463793103, -0.0192313793103, -0.0175950000000, -0.0178001724138, + -0.0188051724138, -0.0187210344828, -0.0161796551724, -0.0114651724138, + -0.0065455172414, -0.0037146551724, -0.0039305172414, -0.0067560344828, + -0.0110863793103, -0.0148220689655, -0.0171372413793, -0.0186525862069, + -0.0190577586207, -0.0181212068966, -0.0170741379310, -0.0173529310345, + -0.0191260344828, -0.0207624137931, -0.0205362068966, -0.0177737931034, + -0.0127594827586, -0.0066296551724, -0.0008998275862, +0.0028360344828, + +0.0036831034483, +0.0014048275862, -0.0035305172414, -0.0099393103448, + -0.0162479310345, -0.0210255172414, -0.0236932758621, -0.0246824137931, + -0.0242825862069, -0.0224041379310, -0.0190156896552, -0.0144222413793, + -0.0098550000000, -0.0072715517241, -0.0082555172414, -0.0123858620690, + -0.0173581034483, -0.0202520689655, -0.0195155172414, -0.0154167241379, + -0.0100075862069, -0.0061087931034, -0.0048460344828, -0.0059718965517, + -0.0090079310345, -0.0125912068966, -0.0149746551724, -0.0154955172414, + -0.0144063793103, -0.0125017241379, -0.0104391379310, -0.0085765517241, + -0.0071768965517, -0.0065086206897, -0.0062665517241, -0.0057562068966, + -0.0050932758621, -0.0052617241379, -0.0068137931034, -0.0094289655172, + -0.0129436206897, -0.0168636206897, -0.0201258620690, -0.0219831034483, + -0.0221884482759, -0.0204836206897, -0.0168898275862, -0.0118860344828, + -0.0066927586207, -0.0029201724138, -0.0010365517241, -0.0003946551724, + -0.0002841379310, -0.0001210344828, +0.0005734482759, +0.0014784482759, + +0.0022362068966, +0.0026150000000, +0.0021046551724, +0.0003420689655, + -0.0026150000000, -0.0060298275862, -0.0080924137931, -0.0075610344828, + -0.0049617241379, -0.0013153448276, +0.0021046551724, +0.0039515517241, + +0.0037305172414, +0.0019889655172, -0.0004313793103, -0.0028412068966, + -0.0045144827586, -0.0046091379310, -0.0032253448276, -0.0016468965517, + -0.0011206896552, -0.0022625862069, -0.0046513793103, -0.0067243103448, + -0.0072768965517, -0.0063613793103, -0.0040462068966, -0.0005472413793, + +0.0029939655172, +0.0056720689655, +0.0073348275862, +0.0076820689655, + +0.0068558620690, +0.0057931034483, +0.0053194827586, +0.0055089655172, + +0.0060929310345, +0.0067875862069, +0.0072032758621, +0.0073979310345, + +0.0076662068966, +0.0079556896552, +0.0081398275862, +0.0083186206897, + +0.0084134482759, +0.0080398275862, +0.0071505172414, +0.0063244827586, + +0.0060456896552, +0.0062982758621, +0.0069558620690, +0.0077556896552, + +0.0083660344828, +0.0087553448276, +0.0088343103448, +0.0076346551724, + +0.0045934482759, +0.0008050000000, -0.0018679310345, -0.0022520689655, + -0.0007944827586, +0.0009208620690, +0.0018468965517, +0.0019100000000, + +0.0015627586207, +0.0016153448276, +0.0028412068966, +0.0056667241379, + +0.0096813793103, +0.0133908620690, +0.0155534482759, +0.0160058620690, + +0.0149377586207, +0.0126753448276, +0.0102760344828, +0.0092551724138, + +0.0102234482759, +0.0124227586207, +0.0144589655172, +0.0155324137931, + +0.0156218965517, +0.0146063793103, +0.0124753448276, +0.0103286206897, + +0.0094867241379, +0.0098655172414, +0.0105443103448, +0.0106968965517, + +0.0102181034483, +0.0094762068966, +0.0088027586207, +0.0086817241379, + +0.0095498275862, +0.0112967241379, +0.0131593103448, +0.0141012068966, + +0.0134329310345, +0.0114651724138, +0.0091500000000, +0.0074136206897, + +0.0068191379310, +0.0076505172414, +0.0094182758621, +0.0108653448276, + +0.0108548275862, +0.0093289655172, +0.0071715517241, +0.0051617241379, + +0.0039410344828, +0.0041777586207, +0.0057562068966, +0.0075451724138, + +0.0085344827586, +0.0084450000000, +0.0079608620690, +0.0080818965517, + +0.0087974137931, +0.0094920689655, +0.0100498275862, +0.0104970689655, + +0.0106653448276, +0.0106232758621, +0.0105127586207, +0.0104286206897, + +0.0103444827586, +0.0101760344828, +0.0099287931034, +0.0097129310345, + +0.0096182758621, +0.0097446551724, +0.0099760344828, +0.0102496551724, + +0.0105232758621, +0.0104496551724, +0.0099444827586, +0.0094077586207, + +0.0090868965517, +0.0086553448276, +0.0075610344828, +0.0058405172414, + +0.0043250000000, +0.0037463793103, +0.0041724137931, +0.0053194827586, + +0.0067875862069, +0.0080977586207, +0.0086237931034, +0.0078977586207, + +0.0059087931034, +0.0033358620690, +0.0011101724138, -0.0000894827586, + -0.0001420689655, +0.0006893103448, +0.0019784482759, +0.0032306896552, + +0.0043829310345, +0.0057036206897, +0.0071979310345, +0.0083818965517, + +0.0087291379310, +0.0080660344828, +0.0065506896552, +0.0046565517241, + +0.0032306896552, +0.0030781034483, +0.0042724137931, +0.0059982758621, + +0.0073610344828, +0.0077713793103, +0.0069822413793, +0.0052143103448, + +0.0029991379310, +0.0009996551724, -0.0001156896552, +0.0002000000000, + +0.0020046551724, +0.0043567241379, +0.0059718965517, +0.0061139655172, + +0.0046250000000, +0.0019520689655, -0.0009839655172, -0.0031727586207, + -0.0039725862069, -0.0031622413793, -0.0012155172414, +0.0006787931034, + +0.0013363793103, +0.0005262068966, -0.0008575862069, -0.0016205172414, + -0.0010575862069, +0.0006103448276, +0.0024518965517, +0.0034148275862, + +0.0030044827586, +0.0013891379310, -0.0005367241379, -0.0016627586207, + -0.0015048275862, -0.0005418965517, +0.0004841379310, +0.0010050000000, + +0.0007577586207, -0.0000263793103, -0.0009313793103, -0.0016100000000, + -0.0018468965517, -0.0016205172414, -0.0013312068966, -0.0014889655172, + -0.0023046551724, -0.0034463793103, -0.0041777586207, -0.0038777586207, + -0.0024677586207, -0.0004682758621, +0.0012312068966, +0.0017889655172, + +0.0009944827586, -0.0008050000000, -0.0027675862069, -0.0038936206897, + -0.0036884482759, -0.0024413793103, -0.0008050000000, +0.0004841379310, + +0.0010417241379, +0.0007470689655, -0.0004787931034, -0.0023518965517, + -0.0041936206897, -0.0054668965517, -0.0060246551724, -0.0059351724138, + -0.0053668965517, -0.0047039655172, -0.0044039655172, -0.0047196551724, + -0.0055300000000, -0.0063560344828, -0.0067927586207, -0.0068558620690, + -0.0065875862069, -0.0058667241379, -0.0046565517241, -0.0033622413793, + -0.0026729310345, -0.0030306896552, -0.0042251724138, -0.0056931034483, + -0.0068243103448, -0.0071453448276, -0.0065350000000, -0.0053774137931, + -0.0043724137931, -0.0039356896552, -0.0039094827586, -0.0040777586207, + -0.0043618965517, -0.0047301724138, -0.0052248275862, -0.0056984482759, + -0.0060667241379, -0.0064981034483, -0.0070558620690, -0.0074874137931, + -0.0076556896552, -0.0077136206897, -0.0079293103448, -0.0084660344828, + -0.0092762068966, -0.0102550000000, -0.0111600000000, -0.0114651724138, + -0.0109863793103, -0.0101129310345, -0.0093079310345, -0.0088868965517, + -0.0090658620690, -0.0097708620690, -0.0104758620690, -0.0105391379310, + -0.0095498275862, -0.0076977586207, -0.0055720689655, -0.0038305172414, + -0.0030886206897, -0.0034779310345, -0.0044250000000, -0.0052089655172, + -0.0054353448276, -0.0051774137931, -0.0048881034483, -0.0049143103448, + -0.0052512068966, -0.0056089655172, -0.0056667241379, -0.0053458620690, + -0.0047722413793, -0.0042198275862, -0.0040303448276, -0.0044618965517, + -0.0054931034483, -0.0068717241379, -0.0081344827586, -0.0088396551724, + -0.0087186206897, -0.0078031034483, -0.0063403448276, -0.0048406896552, + -0.0038989655172, -0.0038094827586, -0.0044093103448, -0.0051512068966, + -0.0054774137931, -0.0052143103448, -0.0047565517241, -0.0044618965517, + -0.0044355172414, -0.0046250000000, -0.0048512068966, -0.0048512068966, + -0.0046618965517, -0.0044250000000, -0.0040303448276, -0.0033989655172, + -0.0028096551724, -0.0026308620690, -0.0029255172414, -0.0035305172414, + -0.0040462068966, -0.0041356896552, -0.0037831034483, -0.0031991379310, + -0.0027624137931, -0.0028518965517, -0.0033832758621, -0.0040831034483, + -0.0047881034483, -0.0051932758621, -0.0050091379310, -0.0043724137931, + -0.0037410344828, -0.0034937931034, -0.0037200000000, -0.0040356896552, + -0.0037831034483, -0.0025677586207, -0.0005682758621, +0.0016468965517, + +0.0031991379310, +0.0033306896552, +0.0020046551724, -0.0002105172414, + -0.0024939655172, -0.0039672413793, -0.0041724137931, -0.0033568965517, + -0.0020677586207, -0.0008155172414, +0.0000000000000, +0.0002000000000, + +0.0000525862069, -0.0000053448276, +0.0000736206897, +0.0001631034483, + +0.0001631034483, -0.0000736206897, -0.0007418965517, -0.0017048275862, + -0.0025729310345, -0.0029517241379, -0.0026834482759, -0.0019362068966, + -0.0011627586207, -0.0006313793103, -0.0002787931034, +0.0000000000000, + +0.0001210344828, +0.0000105172414, -0.0002736206897, -0.0006472413793, + -0.0010260344828, -0.0012312068966, -0.0010629310345, -0.0004472413793, + +0.0007893103448, +0.0026570689655, +0.0045460344828, +0.0055351724138, + +0.0052248275862, +0.0038567241379, +0.0021467241379, +0.0009418965517, + +0.0005208620690, +0.0006472413793, +0.0010524137931, +0.0013312068966, + +0.0010575862069, +0.0003577586207, -0.0002577586207, -0.0004208620690, + -0.0000736206897, +0.0005944827586, +0.0011943103448, +0.0013627586207, + +0.0010524137931, +0.0003420689655, -0.0005208620690, -0.0011837931034, + -0.0014206896552, -0.0012575862069, -0.0008681034483, -0.0006103448276, + -0.0006944827586, -0.0009944827586, -0.0012312068966, -0.0012681034483, + -0.0010786206897, -0.0006893103448, -0.0002841379310, -0.0001315517241, + -0.0003736206897, -0.0008944827586, -0.0013837931034, -0.0014101724138, + -0.0008365517241, +0.0002156896552, +0.0016258620690, +0.0030360344828, + +0.0039094827586, +0.0039620689655, +0.0032727586207, +0.0021415517241, + +0.0010206896552, +0.0003156896552, +0.0002420689655, +0.0007839655172, + +0.0017415517241, +0.0027518965517, +0.0033937931034, +0.0034517241379, + +0.0030727586207, +0.0025360344828, +0.0021572413793, +0.0021256896552, + +0.0023308620690, +0.0024362068966, +0.0020782758621, +0.0012522413793, + +0.0003367241379, -0.0001789655172, -0.0001051724138, +0.0003420689655, + +0.0007998275862, +0.0010575862069, +0.0010312068966, +0.0007734482759, + +0.0004472413793, +0.0003210344828, +0.0006418965517, +0.0013048275862, + +0.0019889655172, +0.0024624137931, +0.0026413793103, +0.0025413793103, + +0.0023467241379, +0.0022572413793, +0.0023362068966, +0.0024624137931, + +0.0024887931034, +0.0024413793103, +0.0023834482759, +0.0022993103448, + +0.0021887931034, +0.0019889655172, +0.0015363793103, +0.0009524137931, + +0.0004946551724, +0.0004313793103, +0.0008103448276, +0.0013627586207, + +0.0017153448276, +0.0017310344828, +0.0014679310345, +0.0011365517241, + +0.0009103448276, +0.0007787931034, +0.0007524137931, +0.0007787931034, + +0.0006208620690, +0.0001894827586, -0.0002315517241, -0.0003420689655, + +0.0000105172414, +0.0007944827586, +0.0017100000000, +0.0023677586207, + +0.0025308620690, +0.0022362068966, +0.0017520689655, +0.0015206896552, + +0.0016889655172, +0.0019679310345, +0.0020625862069, +0.0019784482759, + +0.0018310344828, +0.0017784482759, +0.0019731034483, +0.0025782758621, + +0.0035725862069, +0.0046565517241, +0.0054194827586, +0.0056456896552, + +0.0054720689655, +0.0051248275862, +0.0048039655172, +0.0045513793103, + +0.0043567241379, +0.0042462068966, +0.0041513793103, +0.0039777586207, + +0.0037515517241, +0.0035884482759, +0.0034253448276, +0.0030937931034, + +0.0025150000000, +0.0018153448276, +0.0012155172414, +0.0009155172414, + +0.0008260344828, +0.0008629310345, +0.0010470689655, +0.0012575862069, + +0.0013312068966, +0.0013048275862, +0.0013206896552, +0.0013786206897, + +0.0013627586207, +0.0012732758621, +0.0011996551724, +0.0011101724138, + +0.0009734482759, +0.0008891379310, +0.0009944827586, +0.0013258620690, + +0.0017468965517, +0.0020362068966, +0.0020887931034, +0.0019994827586, + +0.0019256896552, +0.0019625862069, +0.0020782758621, +0.0021731034483, + +0.0021993103448, +0.0021677586207, +0.0020782758621, +0.0018625862069, + +0.0015574137931, +0.0014153448276, +0.0015574137931, +0.0018153448276, + +0.0019574137931, +0.0019205172414, +0.0017836206897, +0.0015837931034, + +0.0014206896552, +0.0014627586207, +0.0016889655172, +0.0018994827586, + +0.0019625862069, +0.0017625862069, +0.0013312068966, +0.0009208620690, + +0.0007365517241, +0.0007524137931, +0.0008839655172, +0.0009996551724, + +0.0010839655172, +0.0012206896552, +0.0014312068966, +0.0016889655172, + +0.0019625862069, +0.0021467241379, +0.0021782758621, +0.0020415517241, + +0.0017415517241, +0.0013837931034, +0.0010470689655, +0.0007893103448, + +0.0007155172414, +0.0009365517241, +0.0014468965517, +0.0020625862069, + +0.0025360344828, +0.0025993103448, +0.0021310344828, +0.0013101724138, + +0.0004787931034, -0.0000946551724, -0.0002577586207, -0.0000946551724, + +0.0000631034483, -0.0000158620690, -0.0002893103448, -0.0005577586207, + -0.0006629310345, -0.0005103448276, -0.0002315517241, -0.0002262068966, + -0.0006944827586, -0.0012732758621, -0.0014363793103, -0.0010417241379, + -0.0003367241379, +0.0003682758621, +0.0008998275862, +0.0011050000000, + +0.0009313793103, +0.0005103448276, +0.0001105172414, -0.0001841379310, + -0.0003682758621, -0.0004787931034, -0.0006103448276, -0.0008050000000, + -0.0010050000000, -0.0011837931034, -0.0011837931034, -0.0009103448276, + -0.0005367241379, -0.0003105172414, -0.0003946551724, -0.0007682758621, + -0.0011312068966, -0.0011365517241, -0.0007155172414, -0.0000420689655, + +0.0005313793103, +0.0007050000000, +0.0003787931034, -0.0002472413793, + -0.0009260344828, -0.0014732758621, -0.0016889655172, -0.0014468965517, + -0.0009470689655, -0.0006839655172, -0.0009524137931, -0.0015837931034, + -0.0020941379310, -0.0020572413793, -0.0013837931034, -0.0003946551724, + +0.0005418965517, +0.0011522413793, +0.0011837931034, +0.0005629310345, + -0.0003998275862, -0.0012050000000, -0.0015627586207, -0.0014574137931, + -0.0010575862069, -0.0006103448276, -0.0003682758621, -0.0004841379310, + -0.0008944827586, -0.0013522413793, -0.0016837931034, -0.0017889655172, + -0.0017100000000, -0.0015679310345, -0.0014574137931, -0.0014312068966, + -0.0014889655172, -0.0014837931034, -0.0012260344828, -0.0007313793103, + -0.0003262068966, -0.0003156896552, -0.0008103448276, -0.0017153448276, + -0.0028044827586, -0.0037146551724, -0.0039672413793, -0.0034094827586, + -0.0023993103448, -0.0014627586207, -0.0008629310345, -0.0006682758621, + -0.0008998275862, -0.0014153448276, -0.0018731034483, -0.0019468965517, + -0.0016627586207, -0.0011891379310, -0.0006577586207, -0.0002631034483, + -0.0000946551724, -0.0000579310345, -0.0000684482759, -0.0001315517241, + -0.0002893103448, -0.0005156896552, -0.0006524137931, -0.0005524137931, + -0.0002051724138, +0.0002841379310, +0.0007313793103, +0.0010050000000, + +0.0011365517241, +0.0010944827586, +0.0008260344828, +0.0003472413793, + -0.0002577586207, -0.0008050000000, -0.0010365517241, -0.0008470689655, + -0.0003841379310, -0.0000158620690, -0.0000474137931, -0.0004577586207, + -0.0010206896552, -0.0013681034483, -0.0012891379310, -0.0008470689655, + -0.0002051724138, +0.0004262068966, +0.0009050000000, +0.0011786206897, + +0.0012786206897, +0.0011312068966, +0.0006367241379, -0.0000789655172, + -0.0006787931034, -0.0010050000000, -0.0010101724138, -0.0006998275862, + -0.0002420689655, +0.0001315517241, +0.0003367241379, +0.0004208620690, + +0.0004418965517, +0.0003787931034, +0.0000841379310, -0.0004525862069, + -0.0011417241379, -0.0018153448276, -0.0023046551724, -0.0024729310345, + -0.0022993103448, -0.0018205172414, -0.0011470689655, -0.0005524137931, + -0.0003000000000, -0.0004841379310, -0.0011522413793, -0.0022625862069, + -0.0034884482759, -0.0043618965517, -0.0044355172414, -0.0035043103448, + -0.0018258620690, +0.0000263793103, +0.0015784482759, +0.0023677586207, + +0.0021993103448, +0.0014784482759, +0.0007470689655, +0.0001946551724, + -0.0002472413793, -0.0005629310345, -0.0006208620690, -0.0003420689655, + +0.0001420689655, +0.0005944827586, +0.0008208620690, +0.0007418965517, + +0.0004313793103, +0.0001789655172, +0.0002156896552, +0.0004313793103, + +0.0006998275862, +0.0009629310345, +0.0011627586207, +0.0011417241379, + +0.0008470689655, +0.0004262068966, +0.0000000000000, -0.0005051724138, + -0.0011260344828, -0.0016468965517, -0.0018415517241, -0.0017310344828, + -0.0014574137931, -0.0011206896552, -0.0008313793103, -0.0006524137931, + -0.0005629310345, -0.0004577586207, -0.0002946551724, -0.0002156896552, + -0.0003631034483, -0.0007682758621, -0.0012681034483, -0.0016415517241, + -0.0017310344828, -0.0014417241379, -0.0007944827586, -0.0000158620690, + +0.0005629310345, +0.0008681034483, +0.0010206896552, +0.0010206896552, + +0.0007524137931, +0.0002946551724, -0.0001051724138, -0.0003105172414, + -0.0003577586207, -0.0003787931034, -0.0005051724138, -0.0007893103448, + -0.0010734482759, -0.0010260344828, -0.0004631034483, +0.0005367241379, + +0.0016048275862, +0.0022413793103, +0.0020887931034, +0.0011996551724, + +0.0000263793103, -0.0008891379310, -0.0012996551724, -0.0012417241379, + -0.0008575862069, -0.0003105172414, +0.0002210344828, +0.0006682758621, + +0.0011050000000, +0.0016468965517, +0.0022941379310, +0.0028412068966, + +0.0030044827586, +0.0025939655172, +0.0015679310345, +0.0001210344828, + -0.0012681034483, -0.0020836206897, -0.0021100000000, -0.0014468965517, + -0.0003893103448, +0.0006156896552, +0.0011417241379, +0.0010260344828, + +0.0005682758621, +0.0002156896552, +0.0001210344828, +0.0002367241379, + +0.0005313793103, +0.0008681034483, +0.0010944827586, +0.0009996551724, + +0.0003577586207, -0.0007629310345, -0.0018889655172, -0.0026518965517, + -0.0029727586207, -0.0028096551724, -0.0021256896552, -0.0010417241379, + +0.0001210344828, +0.0011155172414, +0.0016784482759, +0.0017363793103, + +0.0014468965517, +0.0010470689655, +0.0007839655172, +0.0008681034483, + +0.0012837931034, +0.0018363793103, +0.0023098275862, +0.0025360344828, + +0.0023782758621, +0.0018100000000, +0.0010575862069, +0.0004631034483, + +0.0001789655172, +0.0001367241379, +0.0001946551724, +0.0002262068966, + +0.0002105172414, +0.0001579310345, +0.0001579310345, +0.0004262068966, + +0.0011365517241, +0.0021887931034, +0.0030991379310, +0.0031465517241, + +0.0020046551724, +0.0001262068966, -0.0015048275862, -0.0020362068966, + -0.0012470689655, +0.0004736206897, +0.0024308620690, +0.0038094827586, + +0.0039936206897, +0.0029622413793, +0.0013627586207, +0.0000684482759, + -0.0002946551724, +0.0002367241379, +0.0011786206897, +0.0020887931034, + +0.0024993103448, +0.0019046551724, +0.0005051724138, -0.0008524137931, + -0.0014574137931, -0.0011522413793, -0.0002262068966, +0.0008839655172, + +0.0017258620690, +0.0018994827586, +0.0013837931034, +0.0006103448276, + +0.0003105172414, +0.0009629310345, +0.0022677586207, +0.0033358620690, + +0.0034622413793, +0.0025255172414, +0.0008155172414, -0.0011470689655, + -0.0027255172414, -0.0035253448276, -0.0032622413793, -0.0020205172414, + -0.0006472413793, -0.0000263793103, -0.0001946551724, -0.0008103448276, + -0.0016943103448, -0.0024782758621, -0.0025729310345, -0.0018836206897, + -0.0009944827586, -0.0003998275862, -0.0000736206897, +0.0002051724138, + +0.0004208620690, +0.0004631034483, +0.0003998275862, +0.0004787931034, + +0.0006577586207, +0.0005472413793, -0.0000263793103, -0.0007998275862, + -0.0013048275862, -0.0011786206897, -0.0004682758621, +0.0005156896552, + +0.0013943103448, +0.0015732758621, +0.0007524137931, -0.0004893103448, + -0.0012470689655, -0.0011050000000, -0.0001105172414, +0.0012365517241, + +0.0021572413793, +0.0022677586207, +0.0015889655172, +0.0002420689655, + -0.0013627586207, -0.0025098275862, -0.0026675862069, -0.0019100000000, + -0.0008103448276, +0.0001051724138, +0.0006734482759, +0.0009260344828, + +0.0009629310345, +0.0008891379310, +0.0007524137931, +0.0005944827586, + +0.0004367241379, +0.0001894827586, -0.0001684482759, -0.0005262068966, + -0.0008103448276, -0.0010260344828, -0.0011050000000, -0.0009786206897, + -0.0006734482759, -0.0002787931034, +0.0001684482759, +0.0008418965517, + +0.0017836206897, +0.0028044827586, +0.0037251724138, +0.0043093103448, + +0.0043408620690, +0.0037725862069, +0.0026729310345, +0.0013732758621, + +0.0002682758621, -0.0005367241379, -0.0009418965517, -0.0008575862069, + -0.0005367241379, -0.0003105172414, -0.0004156896552, -0.0009103448276, + -0.0016258620690, -0.0023572413793, -0.0028201724138, -0.0027150000000, + -0.0019256896552, -0.0007103448276, +0.0004736206897, +0.0012050000000, + +0.0012943103448, +0.0009260344828, +0.0002946551724, -0.0004631034483, + -0.0011417241379, -0.0016048275862, -0.0019151724138, -0.0021625862069, + -0.0023203448276, -0.0021415517241, -0.0013101724138, +0.0001156896552, + +0.0017205172414, +0.0029781034483, +0.0035410344828, +0.0033358620690, + +0.0024834482759, +0.0010891379310, -0.0005418965517, -0.0019100000000, + -0.0027413793103, -0.0031622413793, -0.0033201724138, -0.0033253448276, + -0.0031412068966, -0.0026993103448, -0.0020994827586, -0.0014889655172, + -0.0009629310345, -0.0006682758621, -0.0006682758621, -0.0009103448276, + -0.0012837931034, -0.0014732758621, -0.0012943103448, -0.0009681034483, + -0.0006051724138, -0.0001367241379, +0.0002525862069, +0.0002472413793, + -0.0002315517241, -0.0010050000000, -0.0017363793103, -0.0021677586207, + -0.0022256896552, -0.0018836206897, -0.0011206896552, -0.0002156896552, + +0.0004367241379, +0.0006944827586, +0.0007524137931, +0.0008313793103, + +0.0009365517241, +0.0010206896552, +0.0010524137931, +0.0010575862069, + +0.0010260344828, +0.0009155172414, +0.0007734482759, +0.0005734482759, + +0.0001841379310, -0.0003998275862, -0.0010681034483, -0.0015574137931, + -0.0015943103448, -0.0011837931034, -0.0005998275862, -0.0000789655172, + +0.0003472413793, +0.0007313793103, +0.0010206896552, +0.0010839655172, + +0.0008681034483, +0.0004418965517, -0.0000105172414, -0.0003893103448, + -0.0007577586207, -0.0011522413793, -0.0013522413793, -0.0011522413793, + -0.0006262068966, -0.0000525862069, +0.0003472413793, +0.0006367241379, + +0.0007734482759, +0.0006156896552, +0.0003051724138, +0.0001420689655, + +0.0001894827586, +0.0003841379310, +0.0005944827586, +0.0005682758621, + +0.0002156896552, -0.0003736206897, -0.0010944827586, -0.0016627586207, + -0.0018363793103, -0.0017468965517, -0.0015784482759, -0.0012681034483, + -0.0008155172414, -0.0003367241379, -0.0000474137931, -0.0001315517241, + -0.0004841379310, -0.0008629310345, -0.0011101724138, -0.0010417241379, + -0.0005839655172, -0.0000210344828, +0.0002946551724, +0.0002577586207, + -0.0000841379310, -0.0006208620690, -0.0012155172414, -0.0017100000000, + -0.0019889655172, -0.0019046551724, -0.0013996551724, -0.0006208620690, + +0.0001579310345, +0.0007577586207, +0.0010734482759, +0.0010417241379, + +0.0007418965517, +0.0003472413793, +0.0001000000000, +0.0000158620690, + +0.0000105172414, +0.0001315517241, +0.0002367241379, +0.0000263793103, + -0.0005156896552, -0.0011312068966, -0.0016522413793, -0.0019836206897, + -0.0021151724138, -0.0020151724138, -0.0016679310345, -0.0012837931034, + -0.0010891379310, -0.0009944827586, -0.0007577586207, -0.0003420689655, + +0.0000736206897, +0.0002631034483, +0.0001315517241, -0.0001894827586, + -0.0005734482759, -0.0009524137931, -0.0013048275862, -0.0015522413793, + -0.0016153448276, -0.0014522413793, -0.0010524137931, -0.0004156896552, + +0.0003156896552, +0.0009260344828, +0.0011943103448, +0.0010312068966, + +0.0006208620690, +0.0002577586207, +0.0002156896552, +0.0005051724138, + +0.0008891379310, +0.0012206896552, +0.0014101724138, +0.0012891379310, + +0.0008260344828, +0.0001894827586, -0.0004208620690, -0.0009839655172, + -0.0015994827586, -0.0020941379310, -0.0020941379310, -0.0016048275862, + -0.0009681034483, -0.0004525862069, -0.0001156896552, +0.0001156896552, + +0.0003105172414, +0.0004418965517, +0.0004577586207, +0.0003577586207, + +0.0001367241379, -0.0001946551724, -0.0006051724138, -0.0009208620690, + -0.0008891379310, -0.0003525862069, +0.0005577586207, +0.0014837931034, + +0.0019941379310, +0.0018994827586, +0.0013101724138, +0.0005682758621, + +0.0001315517241, +0.0002631034483, +0.0008418965517, +0.0014837931034, + +0.0018363793103, +0.0017520689655, +0.0012996551724, +0.0006313793103, + +0.0000053448276, -0.0003525862069, -0.0005051724138, -0.0006156896552, + -0.0007470689655, -0.0008998275862, -0.0010155172414, -0.0009629310345, + -0.0007734482759, -0.0005418965517, -0.0002841379310, -0.0000736206897, + -0.0000105172414, -0.0000105172414, +0.0000525862069, +0.0002577586207, + +0.0006682758621, +0.0012575862069, +0.0017415517241, +0.0017994827586, + +0.0015101724138, +0.0011470689655, +0.0009155172414, +0.0009786206897, + +0.0014153448276, +0.0020205172414, +0.0024834482759, +0.0026413793103, + +0.0025098275862, +0.0022887931034, +0.0020941379310, +0.0019046551724, + +0.0017574137931, +0.0016732758621, +0.0015784482759, +0.0013837931034, + +0.0010944827586, +0.0008734482759, +0.0008524137931, +0.0009575862069, + +0.0009734482759, +0.0007418965517, +0.0003105172414, -0.0001631034483, + -0.0005472413793, -0.0007208620690, -0.0005998275862, -0.0002315517241, + +0.0002000000000, +0.0005156896552, +0.0006367241379, +0.0006103448276, + +0.0005472413793, +0.0005103448276, +0.0004577586207, +0.0004525862069, + +0.0005524137931, +0.0007155172414, +0.0008944827586, +0.0011365517241, + +0.0013312068966, +0.0013681034483, +0.0012522413793, +0.0010734482759, + +0.0009365517241, +0.0008470689655, +0.0007103448276, +0.0005051724138, + +0.0003315517241, +0.0002893103448, +0.0004103448276, +0.0005524137931, + +0.0005944827586, +0.0005524137931, +0.0004313793103, +0.0001736206897, + -0.0001841379310, -0.0004525862069, -0.0005156896552, -0.0004631034483, + -0.0003051724138, -0.0000263793103, +0.0002682758621, +0.0005787931034, + +0.0008681034483, +0.0008786206897, +0.0005682758621, +0.0002841379310, + +0.0002000000000, +0.0001736206897, +0.0001156896552, +0.0000263793103, + -0.0000579310345, -0.0001051724138, -0.0001000000000, -0.0000579310345, + +0.0000315517241, +0.0001789655172, +0.0002841379310, +0.0002105172414, + -0.0000789655172, -0.0004525862069, -0.0007524137931, -0.0009208620690, + -0.0009260344828, -0.0008155172414, -0.0006998275862, -0.0005156896552, + -0.0002105172414, +0.0001262068966, +0.0003631034483, +0.0004313793103, + +0.0003000000000, -0.0000368965517, -0.0005682758621, -0.0011206896552, + -0.0014574137931, -0.0014468965517, -0.0010312068966, -0.0003682758621, + +0.0002262068966, +0.0005472413793, +0.0005367241379, +0.0002156896552, + -0.0002472413793, -0.0005893103448, -0.0005998275862, -0.0003210344828, + +0.0001051724138, +0.0005418965517, +0.0007998275862, +0.0008208620690, + +0.0007787931034, +0.0008944827586, +0.0011312068966, +0.0012943103448, + +0.0013153448276, +0.0011891379310, +0.0008839655172, +0.0004472413793, + +0.0000315517241, -0.0001631034483, -0.0000579310345, +0.0002736206897, + +0.0005998275862, +0.0007155172414, +0.0005577586207, +0.0002105172414, + -0.0001579310345, -0.0003787931034, -0.0003946551724, -0.0003156896552, + -0.0001684482759, +0.0000000000000, +0.0001051724138, +0.0002000000000, + +0.0003367241379, +0.0004156896552, +0.0004051724138, +0.0003736206897, + +0.0003367241379, +0.0002472413793, +0.0000684482759, -0.0001841379310, + -0.0004208620690, -0.0004893103448, -0.0003472413793, -0.0000841379310, + +0.0001631034483, +0.0003420689655, +0.0004156896552, +0.0003736206897, + +0.0002841379310, +0.0002210344828, +0.0001894827586, +0.0001841379310, + +0.0001684482759, +0.0001525862069, +0.0002000000000, +0.0003577586207, + +0.0005472413793, +0.0006629310345, +0.0006313793103, +0.0005051724138, + +0.0003631034483, +0.0002156896552, +0.0000789655172, +0.0000525862069, + +0.0001262068966, +0.0001420689655, +0.0000158620690, -0.0001631034483, + -0.0002736206897, -0.0002525862069, -0.0001000000000, +0.0001525862069, + +0.0003787931034, +0.0003367241379, -0.0000158620690, -0.0005734482759, + -0.0011575862069, -0.0014889655172, -0.0013417241379, -0.0008260344828, + -0.0002315517241, +0.0002787931034, +0.0006051724138, +0.0006944827586, + +0.0006313793103, +0.0005577586207, +0.0005418965517, +0.0005682758621, + +0.0004998275862, +0.0002631034483, -0.0000525862069, -0.0002893103448, + -0.0003315517241, -0.0001631034483, +0.0001946551724, +0.0005524137931, + +0.0006787931034, +0.0005367241379, +0.0002525862069, -0.0000789655172, + -0.0003577586207, -0.0004525862069, -0.0003367241379, -0.0001631034483, + -0.0000474137931, -0.0000684482759, -0.0002315517241, -0.0004472413793, + -0.0006103448276, -0.0007260344828, -0.0007787931034, -0.0007418965517, + -0.0005998275862, -0.0002787931034, +0.0001946551724, +0.0006893103448, + +0.0010155172414, +0.0011155172414, +0.0010101724138, +0.0006998275862, + +0.0001736206897, -0.0004156896552, -0.0008208620690, -0.0008418965517, + -0.0005156896552, -0.0001210344828, +0.0000946551724, +0.0001736206897, + +0.0001789655172, +0.0001472413793, +0.0001367241379, +0.0001789655172, + +0.0002210344828, +0.0001894827586, +0.0000368965517, -0.0002262068966, + -0.0005367241379, -0.0008208620690, -0.0011417241379, -0.0014732758621, + -0.0016468965517, -0.0015101724138, -0.0010996551724, -0.0006682758621, + -0.0004262068966, -0.0003998275862, -0.0004787931034, -0.0005839655172, + -0.0007577586207, -0.0009996551724, -0.0012050000000, -0.0013101724138, + -0.0013153448276, -0.0011732758621, -0.0008470689655, -0.0004367241379, + -0.0000946551724, +0.0001210344828, +0.0001841379310, +0.0000000000000, + -0.0004156896552, -0.0008839655172, -0.0011417241379, -0.0010629310345, + -0.0008050000000, -0.0006051724138, -0.0005418965517, -0.0005472413793, + -0.0005472413793, -0.0004998275862, -0.0004262068966, -0.0003946551724, + -0.0004841379310, -0.0007260344828, -0.0010312068966, -0.0013153448276, + -0.0014943103448, -0.0014784482759, -0.0012260344828, -0.0008629310345, + -0.0005472413793, -0.0003682758621, -0.0003420689655, -0.0004103448276, + -0.0004946551724, -0.0005313793103, -0.0005472413793, -0.0006103448276, + -0.0007208620690, -0.0008050000000, -0.0007682758621, -0.0006418965517, + -0.0005629310345, -0.0005893103448, -0.0006524137931, -0.0007313793103, + -0.0008103448276, -0.0008313793103, -0.0007524137931, -0.0005998275862, + -0.0003998275862, -0.0002315517241, -0.0001684482759, -0.0002472413793, + -0.0004262068966, -0.0005524137931, -0.0005577586207, -0.0004787931034, + -0.0004262068966, -0.0004787931034, -0.0005682758621, -0.0005418965517, + -0.0003946551724, -0.0002156896552, -0.0001000000000, -0.0001367241379, + -0.0003998275862, -0.0008944827586, -0.0014206896552, -0.0017048275862, + -0.0016415517241, -0.0012627586207, -0.0006682758621, -0.0000525862069, + +0.0003841379310, +0.0005208620690, +0.0003315517241, -0.0000474137931, + -0.0004103448276, -0.0006313793103, -0.0007944827586, -0.0009734482759, + -0.0010734482759, -0.0009786206897, -0.0007208620690, -0.0003105172414, + +0.0001525862069, +0.0004367241379, +0.0003893103448, +0.0001000000000, + -0.0002420689655, -0.0004998275862, -0.0005472413793, -0.0003000000000, + +0.0002210344828, +0.0008155172414, +0.0011312068966, +0.0010155172414, + +0.0005893103448, +0.0000158620690, -0.0005734482759, -0.0009839655172, + -0.0009891379310, -0.0005787931034, +0.0000053448276, +0.0005208620690, + +0.0008103448276, +0.0008260344828, +0.0005524137931, +0.0001631034483, + -0.0001210344828, -0.0001525862069, +0.0000946551724, +0.0005734482759, + +0.0011101724138, +0.0014889655172, +0.0015153448276, +0.0011417241379, + +0.0004577586207, -0.0003105172414, -0.0007944827586, -0.0007629310345, + -0.0003315517241, +0.0002156896552, +0.0006998275862, +0.0010524137931, + +0.0011522413793, +0.0009260344828, +0.0004841379310, +0.0000841379310, + -0.0001210344828, -0.0001367241379, -0.0000263793103, +0.0001367241379, + +0.0002736206897, +0.0003367241379, +0.0003210344828, +0.0002210344828, + +0.0001472413793, +0.0001579310345, +0.0001631034483, +0.0000579310345, + -0.0001210344828, -0.0002367241379, -0.0002051724138, -0.0000525862069, + +0.0001262068966, +0.0002631034483, +0.0003631034483, +0.0004367241379, + +0.0004472413793, +0.0003736206897, +0.0003000000000, +0.0003525862069, + +0.0005103448276, +0.0006262068966, +0.0006208620690, +0.0005472413793, + +0.0003946551724, +0.0001789655172, +0.0000420689655, +0.0001315517241, + +0.0003577586207, +0.0005367241379, +0.0005734482759, +0.0005367241379, + +0.0005472413793, +0.0005893103448, +0.0005998275862, +0.0005524137931, + +0.0004682758621, +0.0003105172414, +0.0001156896552, +0.0000053448276, + +0.0000894827586, +0.0002893103448, +0.0004262068966, +0.0004367241379, + +0.0003156896552, +0.0001525862069, +0.0000053448276, -0.0001315517241, + -0.0002525862069, -0.0002787931034, -0.0001579310345, +0.0001051724138, + +0.0004525862069, +0.0007313793103, +0.0008786206897, +0.0009050000000, + +0.0008155172414, +0.0005998275862, +0.0003210344828, +0.0000894827586, + -0.0000841379310, -0.0002051724138, -0.0002156896552, -0.0001210344828, + +0.0000000000000, +0.0001210344828, +0.0002420689655, +0.0003472413793, + +0.0004736206897, +0.0006103448276, +0.0006472413793, +0.0004682758621, + +0.0001156896552, -0.0002105172414, -0.0003841379310, -0.0003787931034, + -0.0002682758621, -0.0001420689655, -0.0000263793103, +0.0000263793103, + -0.0000053448276, -0.0001420689655, -0.0002946551724, -0.0003577586207, + -0.0002946551724, -0.0001210344828, +0.0001525862069, +0.0004682758621, + +0.0007208620690, +0.0007998275862, +0.0006629310345, +0.0003893103448, + +0.0001262068966, -0.0000105172414, +0.0000210344828, +0.0002051724138, + +0.0003998275862, +0.0004998275862, +0.0004736206897, +0.0002946551724, + -0.0000158620690, -0.0003577586207, -0.0005682758621, -0.0005682758621, + -0.0003631034483, -0.0000105172414, +0.0003525862069, +0.0005629310345, + +0.0005682758621, +0.0004156896552, +0.0001946551724, -0.0000579310345, + -0.0003210344828, -0.0005208620690, -0.0005893103448, -0.0005577586207, + -0.0004893103448, -0.0003998275862, -0.0003000000000, -0.0002051724138, + -0.0001367241379, -0.0000841379310, +0.0000000000000, +0.0001525862069, + +0.0003787931034, +0.0006262068966, +0.0007787931034, +0.0007313793103, + +0.0004787931034, +0.0001051724138, -0.0001684482759, -0.0001420689655, + +0.0001631034483, +0.0005262068966, +0.0007577586207, +0.0007629310345, + +0.0005208620690, +0.0001105172414, -0.0002946551724, -0.0005313793103, + -0.0004893103448, -0.0002105172414, +0.0001420689655, +0.0004262068966, + +0.0005629310345, +0.0005156896552, +0.0002946551724, +0.0000105172414, + -0.0001841379310, -0.0002420689655, -0.0002367241379, -0.0002682758621, + -0.0003156896552, -0.0002841379310, -0.0001579310345, +0.0000525862069, + +0.0003420689655, +0.0005998275862, +0.0005944827586, +0.0002262068966, + -0.0003156896552, -0.0007208620690, -0.0007998275862, -0.0005208620690, + +0.0000579310345, +0.0007734482759, +0.0012996551724, +0.0013786206897, + +0.0010260344828, +0.0004472413793, -0.0001105172414, -0.0004841379310, + -0.0005787931034, -0.0004051724138, -0.0000525862069, +0.0002946551724, + +0.0004893103448, +0.0005262068966, +0.0004787931034, +0.0003525862069, + +0.0002000000000, +0.0000894827586, +0.0000105172414, -0.0000525862069, + -0.0000158620690, +0.0001631034483, +0.0004156896552, +0.0006629310345, + +0.0008839655172, +0.0010629310345, +0.0011101724138, +0.0009629310345, + +0.0006208620690, +0.0001472413793, -0.0003525862069, -0.0007893103448, + -0.0010312068966, -0.0009524137931, -0.0005893103448, -0.0001367241379, + +0.0002736206897, +0.0006367241379, +0.0008944827586, +0.0009470689655, + +0.0007893103448, +0.0005629310345, +0.0003787931034, +0.0002472413793, + +0.0002051724138, +0.0002893103448, +0.0004208620690, +0.0004525862069, + +0.0003893103448, +0.0003631034483, +0.0004156896552, +0.0004893103448, + +0.0005472413793, +0.0006208620690, +0.0006156896552, +0.0003946551724, + -0.0000631034483, -0.0006787931034, -0.0012155172414, -0.0014206896552, + -0.0011206896552, -0.0002682758621, +0.0009470689655, +0.0020467241379, + +0.0024046551724, +0.0017468965517, +0.0003262068966, -0.0013101724138, + -0.0024782758621, -0.0024834482759, -0.0011365517241, +0.0009418965517, + +0.0027308620690, +0.0033937931034, +0.0027255172414, +0.0010365517241, + -0.0010996551724, -0.0028939655172, -0.0035463793103, -0.0028360344828, + -0.0013101724138, +0.0001631034483, +0.0009681034483, +0.0009734482759, + +0.0004367241379, -0.0002736206897, -0.0008734482759, -0.0010734482759, + -0.0007893103448, -0.0002472413793, +0.0002000000000, +0.0003631034483, + +0.0002210344828, -0.0001210344828, -0.0005103448276, -0.0007787931034, + -0.0008365517241, -0.0007208620690, -0.0005629310345, -0.0004893103448, + -0.0005051724138, -0.0004946551724, -0.0003736206897, -0.0002000000000, + -0.0000474137931, +0.0001051724138, +0.0003156896552, +0.0005262068966, + +0.0006418965517, +0.0005944827586, +0.0003367241379, -0.0000894827586, + -0.0004631034483, -0.0005998275862, -0.0004682758621, -0.0000946551724, + +0.0003736206897, +0.0007734482759, +0.0009575862069, +0.0008629310345, + +0.0005262068966, +0.0000841379310, -0.0002682758621, -0.0003736206897, + -0.0001894827586, +0.0001210344828, +0.0003420689655, +0.0004631034483, + +0.0004841379310, +0.0003367241379, +0.0000053448276, -0.0003051724138, + -0.0004313793103, -0.0003841379310, -0.0002631034483, -0.0001420689655, + -0.0000684482759, -0.0000736206897, -0.0001525862069, -0.0002841379310, + -0.0003262068966, -0.0001051724138, +0.0003262068966, +0.0007998275862, + +0.0011470689655, +0.0011996551724, +0.0007944827586, +0.0001156896552, + -0.0004313793103, -0.0005524137931, -0.0002736206897, +0.0001367241379, + +0.0003736206897, +0.0003315517241, +0.0001105172414, -0.0001210344828, + -0.0002156896552, -0.0001156896552, +0.0001472413793, +0.0004946551724, + +0.0007365517241, +0.0006418965517, +0.0001472413793, -0.0005524137931, + -0.0011365517241, -0.0013206896552, -0.0009629310345, -0.0002051724138, + +0.0005629310345, +0.0009891379310, +0.0009470689655, +0.0005682758621, + +0.0001105172414, -0.0001472413793, -0.0000158620690, +0.0004631034483, + +0.0010101724138, +0.0013837931034, +0.0014784482759, +0.0013312068966, + +0.0010470689655, +0.0007050000000, +0.0003367241379, +0.0000210344828, + -0.0001472413793, -0.0002262068966, -0.0002420689655, -0.0001367241379, + +0.0001420689655, +0.0005367241379, +0.0008786206897, +0.0010786206897, + +0.0011101724138, +0.0009313793103, +0.0005682758621, +0.0001946551724, + -0.0000053448276, -0.0000315517241, +0.0000263793103, +0.0000894827586, + +0.0000841379310, -0.0000579310345, -0.0003105172414, -0.0005472413793, + -0.0006103448276, -0.0004103448276, -0.0000789655172, +0.0001841379310, + +0.0003315517241, +0.0003787931034, +0.0003367241379, +0.0003051724138, + +0.0004103448276, +0.0005313793103, +0.0004998275862, +0.0002893103448, + -0.0000579310345, -0.0004893103448, -0.0008944827586, -0.0011050000000, + -0.0009050000000, -0.0003051724138, +0.0003893103448, +0.0009365517241, + +0.0011996551724, +0.0010681034483, +0.0005893103448, +0.0000420689655, + -0.0002736206897, -0.0002631034483, -0.0000579310345, +0.0001156896552, + +0.0001736206897, +0.0000894827586, -0.0001789655172, -0.0005524137931, + -0.0008260344828, -0.0008629310345, -0.0006734482759, -0.0003420689655, + +0.0000368965517, +0.0003946551724, +0.0005839655172, +0.0005787931034, + +0.0004998275862, +0.0004208620690, +0.0002946551724, +0.0001525862069, + +0.0001105172414, +0.0001472413793, +0.0001262068966, -0.0000053448276, + -0.0002105172414, -0.0003736206897, -0.0004525862069, -0.0004682758621, + -0.0004313793103, -0.0003315517241, -0.0001684482759, +0.0000736206897, + +0.0004367241379, +0.0007998275862, +0.0009944827586, +0.0009208620690, + +0.0006262068966, +0.0002051724138, -0.0002472413793, -0.0006524137931, + -0.0008734482759, -0.0008418965517, -0.0006524137931, -0.0004208620690, + -0.0002420689655, -0.0001946551724, -0.0003841379310, -0.0008050000000, + -0.0012575862069, -0.0015417241379, -0.0015784482759, -0.0012996551724, + -0.0007524137931, -0.0001631034483, +0.0002631034483, +0.0004577586207, + +0.0004208620690, +0.0001631034483, -0.0002631034483, -0.0007524137931, + -0.0011732758621, -0.0014679310345, -0.0016100000000, -0.0015837931034, + -0.0014784482759, -0.0013837931034, -0.0012943103448, -0.0010944827586, + -0.0007260344828, -0.0002682758621, +0.0001315517241, +0.0004262068966, + +0.0005944827586, +0.0005682758621, +0.0003946551724, +0.0002210344828, + +0.0001894827586, +0.0002736206897, +0.0003577586207, +0.0003787931034, + +0.0003315517241, +0.0002315517241, +0.0000315517241, -0.0002262068966, + -0.0003787931034, -0.0002787931034, -0.0000105172414, +0.0002472413793, + +0.0003787931034, +0.0003051724138, +0.0000315517241, -0.0002946551724, + -0.0005103448276, -0.0004525862069, -0.0001156896552, +0.0002841379310, + +0.0005208620690, +0.0005262068966, +0.0004051724138, +0.0002210344828, + +0.0000105172414, -0.0001841379310, -0.0003367241379, -0.0003420689655, + -0.0001579310345, +0.0000631034483, +0.0001105172414, -0.0001367241379, + -0.0005893103448, -0.0009839655172, -0.0010839655172, -0.0007787931034, + -0.0001315517241, +0.0005577586207, +0.0009575862069, +0.0009050000000, + +0.0004631034483, -0.0001525862069, -0.0006839655172, -0.0009155172414, + -0.0007629310345, -0.0002787931034, +0.0003262068966, +0.0008208620690, + +0.0010470689655, +0.0009839655172, +0.0006839655172, +0.0002893103448, + -0.0000420689655, -0.0002631034483, -0.0003420689655, -0.0003000000000, + -0.0002051724138, -0.0001684482759, -0.0002262068966, -0.0003682758621, + -0.0005524137931, -0.0007208620690, -0.0008103448276, -0.0007734482759, + -0.0005682758621, -0.0001841379310, +0.0002682758621, +0.0005577586207, + +0.0005524137931, +0.0003051724138, -0.0000368965517, -0.0003367241379, + -0.0005051724138, -0.0005367241379, -0.0004841379310, -0.0004367241379, + -0.0004313793103, -0.0003998275862, -0.0003262068966, -0.0002315517241, + -0.0001156896552, +0.0000263793103, +0.0000841379310, -0.0000525862069, + -0.0003682758621, -0.0006944827586, -0.0008944827586, -0.0009524137931, + -0.0009103448276, -0.0007208620690, -0.0004156896552, -0.0001894827586, + -0.0001841379310, -0.0003577586207, -0.0005472413793, -0.0006577586207, + -0.0006577586207, -0.0005156896552, -0.0002736206897, -0.0000474137931, + +0.0000315517241, -0.0000579310345, -0.0002051724138, -0.0002946551724, + -0.0002787931034, -0.0001684482759, +0.0000105172414, +0.0001525862069, + +0.0001262068966, -0.0000525862069, -0.0002420689655, -0.0003156896552, + -0.0002210344828, +0.0000053448276, +0.0002210344828, +0.0002841379310, + +0.0001156896552, -0.0002315517241, -0.0006103448276, -0.0008365517241, + -0.0008418965517, -0.0006682758621, -0.0003841379310, -0.0001105172414, + -0.0000158620690, -0.0001789655172, -0.0005418965517, -0.0009313793103, + -0.0011206896552, -0.0010312068966, -0.0007839655172, -0.0005682758621, + -0.0004841379310, -0.0005208620690, -0.0005944827586, -0.0006051724138, + -0.0005367241379, -0.0004051724138, -0.0002577586207, -0.0001210344828, + -0.0000210344828, +0.0000053448276, -0.0000420689655, -0.0001367241379, + -0.0001894827586, -0.0001684482759, -0.0000841379310, +0.0000210344828, + +0.0001051724138, +0.0001105172414, +0.0000631034483, +0.0000368965517, + +0.0001000000000, +0.0002893103448, +0.0005472413793, +0.0007577586207, + +0.0008103448276, +0.0006787931034, +0.0004367241379, +0.0001789655172, + -0.0000158620690, -0.0001367241379, -0.0002105172414, -0.0002841379310, + -0.0003893103448, -0.0004736206897, -0.0004841379310, -0.0004156896552, + -0.0003367241379, -0.0002787931034, -0.0002682758621, -0.0002736206897, + -0.0002946551724, -0.0003525862069, -0.0004262068966, -0.0004156896552, + -0.0002736206897, -0.0000579310345, +0.0001579310345, +0.0003841379310, + +0.0005839655172, +0.0006472413793, +0.0005156896552, +0.0002736206897, + +0.0000368965517, -0.0002156896552, -0.0005367241379, -0.0008470689655, + -0.0010260344828, -0.0009629310345, -0.0006367241379, -0.0001105172414, + +0.0004262068966, +0.0007682758621, +0.0008050000000, +0.0006051724138, + +0.0003210344828, +0.0000946551724, -0.0000105172414, +0.0000105172414, + +0.0001579310345, +0.0003631034483, +0.0004998275862, +0.0004946551724, + +0.0003841379310, +0.0002682758621, +0.0002367241379, +0.0002420689655, + +0.0001789655172, -0.0000158620690, -0.0002946551724, -0.0005208620690, + -0.0005313793103, -0.0002367241379, +0.0002420689655, +0.0006734482759, + +0.0009260344828, +0.0009313793103, +0.0007155172414, +0.0003946551724, + +0.0001262068966, +0.0000263793103, +0.0001156896552, +0.0002841379310, + +0.0003893103448, +0.0004156896552, +0.0004472413793, +0.0004946551724, + +0.0005262068966, +0.0005472413793, +0.0005787931034, +0.0005787931034, + +0.0004472413793, +0.0002000000000, +0.0000158620690, +0.0000525862069, + +0.0002946551724, +0.0005577586207, +0.0006839655172, +0.0005839655172, + +0.0002367241379, -0.0002472413793, -0.0006577586207, -0.0007734482759, + -0.0004946551724, +0.0000579310345, +0.0006577586207, +0.0010629310345, + +0.0011732758621, +0.0010470689655, +0.0007787931034, +0.0004631034483, + +0.0002156896552, +0.0001315517241, +0.0002051724138, +0.0003682758621, + +0.0005472413793, +0.0006629310345, +0.0006944827586, +0.0006682758621, + +0.0006208620690, +0.0005051724138, +0.0003000000000, +0.0000789655172, + -0.0000263793103, +0.0000053448276, +0.0001736206897, +0.0003998275862, + +0.0005734482759, +0.0006313793103, +0.0005577586207, +0.0004051724138, + +0.0002736206897, +0.0002472413793, +0.0002893103448, +0.0003156896552, + +0.0002787931034, +0.0001841379310, +0.0001210344828, +0.0001315517241, + +0.0001894827586, +0.0002315517241, +0.0002577586207, +0.0002525862069, + +0.0001789655172, +0.0000315517241, -0.0001105172414, -0.0001525862069, + -0.0000631034483, +0.0000946551724, +0.0002472413793, +0.0002946551724, + +0.0002315517241, +0.0001367241379, +0.0000841379310, +0.0000789655172, + +0.0001000000000, +0.0001262068966, +0.0001051724138, +0.0000315517241, + -0.0000525862069, -0.0000525862069, +0.0000684482759, +0.0003156896552, + +0.0006313793103, +0.0008839655172, +0.0009524137931, +0.0008208620690, + +0.0005629310345, +0.0002682758621, +0.0000263793103, -0.0000631034483, + +0.0000000000000, +0.0001525862069, +0.0002841379310, +0.0003262068966, + +0.0003156896552, +0.0003367241379, +0.0003525862069, +0.0003105172414, + +0.0002420689655, +0.0002051724138, +0.0002210344828, +0.0002577586207, + +0.0003000000000, +0.0003525862069, +0.0004631034483, +0.0006472413793, + +0.0008575862069, +0.0009944827586, +0.0010101724138, +0.0009260344828, + +0.0007629310345, +0.0005262068966, +0.0002472413793, +0.0000000000000, + -0.0001841379310, -0.0002893103448, -0.0003000000000, -0.0002105172414, + -0.0000105172414, +0.0002787931034, +0.0006262068966, +0.0009260344828, + +0.0010524137931, +0.0009470689655, +0.0006682758621, +0.0003051724138, + -0.0000420689655, -0.0002787931034, -0.0003577586207, -0.0003262068966, + -0.0002631034483, -0.0002262068966, -0.0002210344828, -0.0002367241379, + -0.0002525862069, -0.0002420689655, -0.0001579310345, +0.0000000000000, + +0.0001472413793, +0.0001684482759, +0.0000420689655, -0.0001000000000, + -0.0002210344828, -0.0003210344828, -0.0003736206897, -0.0003315517241, + -0.0001684482759, +0.0000736206897, +0.0003210344828, +0.0004841379310, + +0.0005577586207, +0.0005472413793, +0.0004525862069, +0.0002736206897, + +0.0000579310345, -0.0001000000000, -0.0001210344828, -0.0000420689655, + +0.0000525862069, +0.0001579310345, +0.0002577586207, +0.0002631034483, + +0.0001210344828, -0.0001210344828, -0.0003631034483, -0.0005103448276, + -0.0005577586207, -0.0005472413793, -0.0004946551724, -0.0004208620690, + -0.0003051724138, -0.0001684482759, -0.0000210344828, +0.0001105172414, + +0.0001684482759, +0.0000946551724, -0.0000789655172, -0.0002315517241, + -0.0002736206897, -0.0002210344828, -0.0001367241379, -0.0000525862069, + +0.0000474137931, +0.0001472413793, +0.0002000000000, +0.0001736206897, + +0.0000631034483, -0.0001210344828, -0.0003420689655, -0.0004998275862, + -0.0005418965517, -0.0005208620690, -0.0004631034483, -0.0003525862069, + -0.0001736206897, +0.0000420689655, +0.0002105172414, +0.0002210344828, + +0.0000368965517, -0.0002736206897, -0.0005629310345, -0.0007260344828, + -0.0007208620690, -0.0005524137931, -0.0002787931034, +0.0000368965517, + +0.0002946551724, +0.0003893103448, +0.0002787931034, +0.0000420689655, + -0.0002262068966, -0.0004208620690, -0.0004682758621, -0.0004051724138, + -0.0002682758621, -0.0000789655172, +0.0001210344828, +0.0002841379310, + +0.0003893103448, +0.0004577586207, +0.0004418965517, +0.0003210344828, + +0.0001525862069, +0.0000210344828, -0.0000158620690, +0.0000000000000, + +0.0000420689655, +0.0001262068966, +0.0002051724138, +0.0001579310345, + +0.0000000000000, -0.0001631034483, -0.0002315517241, -0.0002156896552, + -0.0001894827586, -0.0001367241379, -0.0000420689655, +0.0000210344828, + -0.0000368965517, -0.0002156896552, -0.0004262068966, -0.0005893103448, + -0.0006577586207, -0.0006262068966, -0.0004998275862, -0.0003262068966, + -0.0001684482759, -0.0000736206897, -0.0000210344828, +0.0000315517241, + +0.0000946551724, +0.0001000000000, +0.0000000000000, -0.0001315517241, + -0.0002472413793, -0.0003210344828, -0.0003682758621, -0.0003577586207, + -0.0002631034483, -0.0001736206897, -0.0001525862069, -0.0001946551724, + -0.0002787931034, -0.0003787931034, -0.0004103448276, -0.0003787931034, + -0.0003315517241, -0.0002841379310, -0.0002841379310, -0.0003682758621, + -0.0004893103448, -0.0005262068966, -0.0003998275862, -0.0001736206897, + +0.0000315517241, +0.0001367241379, +0.0001156896552, -0.0000053448276, + -0.0001789655172, -0.0003736206897, -0.0005524137931, -0.0006577586207, + -0.0006577586207, -0.0005998275862, -0.0005313793103, -0.0004577586207, + -0.0003577586207, -0.0002051724138, -0.0000210344828, +0.0001472413793, + +0.0002736206897, +0.0003000000000, +0.0002315517241, +0.0001105172414, + -0.0000263793103, -0.0001472413793, -0.0002051724138, -0.0001841379310, + -0.0001262068966, -0.0000736206897, -0.0000579310345, -0.0000684482759, + -0.0001051724138, -0.0001789655172, -0.0002787931034, -0.0003577586207, + -0.0003736206897, -0.0003156896552, -0.0001894827586, -0.0000105172414, + +0.0001631034483, +0.0002525862069, +0.0002000000000, +0.0000684482759, + -0.0000368965517, -0.0001000000000, -0.0000946551724, +0.0000210344828, + +0.0002105172414, +0.0003156896552, +0.0002577586207, +0.0000789655172, + -0.0001105172414, -0.0002682758621, -0.0003525862069, -0.0003420689655, + -0.0002525862069, -0.0001684482759, -0.0001789655172, -0.0002946551724, + -0.0004051724138, -0.0004262068966, -0.0003262068966, -0.0001156896552, + +0.0001262068966, +0.0003000000000, +0.0003156896552, +0.0001684482759, + -0.0000579310345, -0.0002631034483, -0.0003105172414, -0.0001525862069, + +0.0000789655172, +0.0002262068966, +0.0002156896552, +0.0001000000000, + -0.0000474137931, -0.0001841379310, -0.0002631034483, -0.0002315517241, + -0.0001051724138, +0.0000210344828, +0.0001000000000, +0.0001156896552, + +0.0000789655172, -0.0000263793103, -0.0001894827586, -0.0003315517241, + -0.0003893103448, -0.0003367241379, -0.0002051724138, -0.0000420689655, + +0.0000579310345, +0.0000579310345, -0.0000105172414, -0.0001156896552, + -0.0002262068966, -0.0003262068966, -0.0003525862069, -0.0002525862069, + -0.0000420689655, +0.0002000000000, +0.0003841379310, +0.0004736206897, + +0.0004156896552, +0.0001525862069, -0.0002210344828, -0.0005472413793, + -0.0007103448276, -0.0007103448276, -0.0005944827586, -0.0003998275862, + -0.0001579310345, +0.0000525862069, +0.0001579310345, +0.0000946551724, + -0.0000841379310, -0.0002841379310, -0.0003841379310, -0.0003420689655, + -0.0001472413793, +0.0001789655172, +0.0005577586207, +0.0008524137931, + +0.0009418965517, +0.0007839655172, +0.0004208620690, -0.0000158620690, + -0.0003525862069, -0.0004577586207, -0.0003577586207, -0.0001472413793, + +0.0000789655172, +0.0002631034483, +0.0003420689655, +0.0003420689655, + +0.0003262068966, +0.0003472413793, +0.0003841379310, +0.0003893103448, + +0.0003156896552, +0.0001841379310, +0.0000946551724, +0.0001156896552, + +0.0002367241379, +0.0004103448276, +0.0005524137931, +0.0005787931034, + +0.0004472413793, +0.0002210344828, +0.0000158620690, -0.0000631034483, + -0.0000053448276, +0.0001525862069, +0.0003210344828, +0.0004103448276, + +0.0003736206897, +0.0002156896552, +0.0000000000000, -0.0002262068966, + -0.0004208620690, -0.0004998275862, -0.0004313793103, -0.0002525862069, + -0.0000210344828, +0.0001946551724, +0.0003315517241, +0.0003315517241, + +0.0001841379310, +0.0000000000000, -0.0001262068966, -0.0001367241379, + -0.0000525862069, +0.0000789655172, +0.0002051724138, +0.0003262068966, + +0.0004103448276, +0.0004367241379, +0.0004262068966, +0.0004156896552, + +0.0003631034483, +0.0002420689655, +0.0000789655172, -0.0000684482759, + -0.0001789655172, -0.0002577586207, -0.0002841379310, -0.0001841379310, + +0.0000105172414, +0.0002051724138, +0.0003262068966, +0.0003577586207, + +0.0003000000000, +0.0001736206897, +0.0000420689655, -0.0000263793103, + -0.0000105172414, +0.0000474137931, +0.0000525862069, -0.0000158620690, + -0.0000894827586, -0.0000894827586, +0.0000000000000, +0.0001579310345, + +0.0002893103448, +0.0002893103448, +0.0001631034483, -0.0000210344828, + -0.0001946551724, -0.0003051724138, -0.0003262068966, -0.0002682758621, + -0.0001841379310, -0.0001315517241, -0.0001367241379, -0.0001789655172, + -0.0002051724138, -0.0002000000000, -0.0001472413793, -0.0000579310345, + +0.0000158620690, +0.0000000000000, -0.0001315517241, -0.0003577586207, + -0.0005944827586, -0.0007524137931, -0.0007893103448, -0.0007103448276, + -0.0005262068966, -0.0002682758621, +0.0000053448276, +0.0002525862069, + +0.0004051724138, +0.0003998275862, +0.0002315517241, -0.0000420689655, + -0.0003472413793, -0.0005944827586, -0.0006944827586, -0.0006051724138, + -0.0003525862069, -0.0000525862069, +0.0002105172414, +0.0003736206897, + +0.0003998275862, +0.0002787931034, +0.0000684482759, -0.0001156896552, + -0.0001841379310, -0.0001051724138, +0.0000684482759, +0.0002367241379, + +0.0002787931034, +0.0001684482759, -0.0000158620690, -0.0001789655172, + -0.0002315517241, -0.0001367241379, +0.0000579310345, +0.0002577586207, + +0.0003472413793, +0.0002841379310, +0.0001105172414, -0.0001051724138, + -0.0003156896552, -0.0004103448276, -0.0003472413793, -0.0001420689655, + +0.0000841379310, +0.0001946551724, +0.0001315517241, -0.0000263793103, + -0.0002420689655, -0.0004577586207, -0.0006103448276, -0.0006524137931, + -0.0005944827586, -0.0004736206897, -0.0003315517241, -0.0002000000000, + -0.0000841379310, +0.0000210344828, +0.0001105172414, +0.0001894827586, + +0.0002472413793, +0.0002577586207, +0.0002262068966, +0.0001946551724, + +0.0002156896552, +0.0002893103448, +0.0003420689655, +0.0003105172414, + +0.0001631034483, -0.0000579310345, -0.0003156896552, -0.0005524137931, + -0.0007260344828, -0.0007470689655, -0.0005682758621, -0.0002577586207, + +0.0000894827586, +0.0004156896552, +0.0006418965517, +0.0007050000000, + +0.0005839655172, +0.0003105172414, -0.0000263793103, -0.0002893103448, + -0.0003472413793, -0.0001841379310, +0.0001210344828, +0.0004313793103, + +0.0006208620690, +0.0006208620690, +0.0004367241379, +0.0001525862069, + -0.0001105172414, -0.0002787931034, -0.0003156896552, -0.0002051724138, + +0.0000000000000, +0.0002000000000, +0.0003367241379, +0.0003893103448, + +0.0003946551724, +0.0003631034483, +0.0003210344828, +0.0002367241379, + +0.0000894827586, -0.0000841379310, -0.0002051724138, -0.0002156896552, + -0.0001367241379, -0.0000158620690, +0.0001105172414, +0.0001841379310, + +0.0001579310345, +0.0000684482759, +0.0000053448276, +0.0000105172414, + +0.0000684482759, +0.0001684482759, +0.0002736206897, +0.0003472413793, + +0.0003525862069, +0.0002893103448, +0.0002000000000, +0.0001367241379, + +0.0001051724138, +0.0000789655172, +0.0000158620690, -0.0001210344828, + -0.0003156896552, -0.0004787931034, -0.0004946551724, -0.0002841379310, + +0.0001105172414, +0.0005418965517, +0.0008470689655, +0.0009155172414, + +0.0007208620690, +0.0003682758621, +0.0000579310345, -0.0000736206897, + -0.0000263793103, +0.0001000000000, +0.0002210344828, +0.0003051724138, + +0.0003420689655, +0.0002946551724, +0.0001841379310, +0.0000525862069, + -0.0000894827586, -0.0002420689655, -0.0003420689655, -0.0002787931034, + -0.0000315517241, +0.0003367241379, +0.0006893103448, +0.0009050000000, + +0.0008944827586, +0.0006787931034, +0.0003472413793, +0.0000158620690, + -0.0002262068966, -0.0003210344828, -0.0002472413793, -0.0000315517241, + +0.0002577586207, +0.0005524137931, +0.0007682758621, +0.0008786206897, + +0.0008944827586, +0.0008524137931, +0.0007682758621, +0.0006682758621, + +0.0005313793103, +0.0003682758621, +0.0001841379310, +0.0000105172414, + -0.0000946551724, -0.0001315517241, -0.0001051724138, +0.0000000000000, + +0.0001841379310, +0.0004051724138, +0.0005682758621, +0.0006103448276, + +0.0004946551724, +0.0002841379310, +0.0000579310345, -0.0000946551724, + -0.0001579310345, -0.0000841379310, +0.0000894827586, +0.0002631034483, + +0.0003315517241, +0.0002946551724, +0.0002210344828, +0.0001367241379, + +0.0000210344828, -0.0001156896552, -0.0002262068966, -0.0002682758621, + -0.0002472413793, -0.0002000000000, -0.0001472413793, -0.0000736206897, + +0.0000105172414, +0.0000946551724, +0.0001315517241, +0.0001156896552, + +0.0000263793103, -0.0001210344828, -0.0002841379310, -0.0003841379310, + -0.0003841379310, -0.0002787931034, -0.0001051724138, +0.0000474137931, + +0.0001210344828, +0.0000946551724, +0.0000000000000, -0.0000579310345, + -0.0000368965517, +0.0000368965517, +0.0001525862069, +0.0002577586207, + +0.0002841379310, +0.0001841379310, +0.0000158620690, -0.0001579310345, + -0.0002787931034, -0.0003420689655, -0.0003210344828, -0.0002000000000, + +0.0000053448276, +0.0002156896552, +0.0003472413793, +0.0003893103448, + +0.0003841379310, +0.0003631034483, +0.0003525862069, +0.0003787931034, + +0.0004525862069, +0.0005472413793, +0.0006103448276, +0.0006103448276, + +0.0005472413793, +0.0004472413793, +0.0003000000000, +0.0001367241379, + -0.0000053448276, -0.0001000000000, -0.0001841379310, -0.0002841379310, + -0.0003946551724, -0.0004736206897, -0.0004631034483, -0.0003525862069, + -0.0001894827586, -0.0000420689655, +0.0000525862069, +0.0001262068966, + +0.0002000000000, +0.0002787931034, +0.0003210344828, +0.0002893103448, + +0.0001684482759, -0.0000105172414, -0.0002156896552, -0.0003631034483, + -0.0004208620690, -0.0003841379310, -0.0002841379310, -0.0001736206897, + -0.0001051724138, -0.0000684482759, -0.0000579310345, -0.0000841379310, + -0.0001789655172, -0.0003420689655, -0.0004998275862, -0.0005734482759, + -0.0005262068966, -0.0003787931034, -0.0001736206897, +0.0000105172414, + +0.0000841379310, -0.0000053448276, -0.0002156896552, -0.0004051724138, + -0.0004787931034, -0.0003946551724, -0.0001894827586, +0.0000315517241, + +0.0001525862069, +0.0001525862069, +0.0000684482759, -0.0000263793103, + -0.0001051724138, -0.0001579310345, -0.0001894827586, -0.0002262068966, + -0.0002631034483, -0.0002525862069, -0.0001631034483, -0.0000474137931, + +0.0000105172414, -0.0000158620690, -0.0001367241379, -0.0003105172414, + -0.0004787931034, -0.0005629310345, -0.0004946551724, -0.0002787931034, + +0.0000263793103, +0.0003420689655, +0.0005893103448, +0.0006682758621, + +0.0005577586207, +0.0003210344828, +0.0000736206897, -0.0001210344828, + -0.0002525862069, -0.0003105172414, -0.0003051724138, -0.0002577586207, + -0.0002051724138, -0.0001684482759, -0.0001367241379, -0.0000946551724, + -0.0000474137931, -0.0000368965517, -0.0000684482759, -0.0001262068966, + -0.0001736206897, -0.0002051724138, -0.0002262068966, -0.0002367241379, + -0.0002051724138, -0.0001210344828, -0.0000210344828, +0.0000368965517, + +0.0000105172414, -0.0001000000000, -0.0002631034483, -0.0004262068966, + -0.0005103448276, -0.0004525862069, -0.0002631034483, -0.0000315517241, + +0.0001210344828, +0.0001631034483, +0.0001210344828, +0.0000420689655, + -0.0000210344828, -0.0000684482759, -0.0001051724138, -0.0001525862069, + -0.0002210344828, -0.0002577586207, -0.0002577586207, -0.0002420689655, + -0.0002210344828, -0.0001946551724, -0.0001789655172, -0.0001894827586, + -0.0002156896552, -0.0002000000000, -0.0001051724138, +0.0000525862069, + +0.0001946551724, +0.0002420689655, +0.0001684482759, +0.0000053448276, + -0.0002000000000, -0.0004156896552, -0.0005629310345, -0.0006262068966, + -0.0005944827586, -0.0004841379310, -0.0003315517241, -0.0001946551724, + -0.0001051724138, -0.0000894827586, -0.0001420689655, -0.0002420689655, + -0.0002841379310, -0.0002156896552, -0.0000631034483, +0.0000736206897, + +0.0001105172414, +0.0000105172414, -0.0001472413793, -0.0002525862069, + -0.0002315517241, -0.0001051724138, +0.0000579310345, +0.0001684482759, + +0.0001472413793, +0.0000000000000, -0.0002367241379, -0.0004418965517, + -0.0004841379310, -0.0003420689655, -0.0000946551724, +0.0001315517241, + +0.0002420689655, +0.0002156896552, +0.0001210344828, +0.0000420689655, + +0.0000315517241, +0.0000736206897, +0.0001315517241, +0.0001472413793, + +0.0000841379310, -0.0000210344828, -0.0001262068966, -0.0001684482759, + -0.0001367241379, -0.0000525862069, +0.0000210344828, +0.0000525862069, + +0.0000315517241, -0.0000105172414, -0.0000368965517, +0.0000000000000, + +0.0000894827586, +0.0001841379310, +0.0002105172414, +0.0001525862069, + +0.0000315517241, -0.0001051724138, -0.0002156896552, -0.0002631034483, + -0.0002367241379, -0.0001579310345, -0.0000736206897, -0.0000368965517, + -0.0000525862069, -0.0000579310345, +0.0000000000000, +0.0000946551724, + +0.0001472413793, +0.0001472413793, +0.0001210344828, +0.0000841379310, + +0.0000315517241, -0.0000210344828, -0.0000894827586, -0.0001684482759, + -0.0002210344828, -0.0002262068966, -0.0001579310345, -0.0000474137931, + +0.0000474137931, +0.0000894827586, +0.0000579310345, +0.0000000000000, + -0.0000368965517, -0.0000315517241, +0.0000000000000, +0.0000474137931, + +0.0001051724138, +0.0001472413793, +0.0001736206897, +0.0001946551724, + +0.0002000000000, +0.0001684482759, +0.0001051724138, +0.0000315517241, + +0.0000000000000, +0.0000368965517, +0.0001156896552, +0.0001736206897, + +0.0001789655172, +0.0001315517241, +0.0000420689655, -0.0000579310345, + -0.0001525862069, -0.0002105172414, -0.0002051724138, -0.0001420689655, + -0.0000368965517, +0.0000789655172, +0.0001946551724, +0.0002631034483, + +0.0002525862069, +0.0001684482759, +0.0000525862069, -0.0000631034483, + -0.0001684482759, -0.0002051724138, -0.0001262068966, +0.0000263793103, + +0.0002051724138, +0.0003210344828, +0.0003156896552, +0.0001631034483, + -0.0000579310345, -0.0002841379310, -0.0004313793103, -0.0004682758621, + -0.0004367241379, -0.0003946551724, -0.0003315517241, -0.0002210344828, + -0.0000946551724, +0.0000000000000, +0.0000315517241, +0.0000525862069, + +0.0000631034483, +0.0000684482759, +0.0000579310345, +0.0000474137931, + +0.0000263793103, -0.0000105172414, -0.0000368965517, -0.0000263793103, + -0.0000053448276, -0.0000105172414, -0.0000684482759, -0.0001156896552, + -0.0001156896552, -0.0000684482759, -0.0000105172414, +0.0000368965517, + +0.0000946551724, +0.0001631034483, +0.0002525862069, +0.0003631034483, + +0.0004631034483, +0.0004946551724, +0.0004262068966, +0.0002682758621, + +0.0000841379310, -0.0000210344828, -0.0000158620690, +0.0000841379310, + +0.0002051724138, +0.0002787931034, +0.0002893103448, +0.0002420689655, + +0.0001262068966, +0.0000000000000, -0.0000736206897, -0.0000315517241, + +0.0001315517241, +0.0003525862069, +0.0005262068966, +0.0005893103448, + +0.0004998275862, +0.0003000000000, +0.0000579310345, -0.0001315517241, + -0.0002315517241, -0.0002420689655, -0.0002210344828, -0.0001894827586, + -0.0001472413793, -0.0001051724138, -0.0000789655172, -0.0000684482759, + -0.0000631034483, -0.0000579310345, -0.0000525862069, -0.0000631034483, + -0.0000789655172, -0.0000474137931, +0.0000525862069, +0.0001841379310, + +0.0002893103448, +0.0003210344828, +0.0002525862069, +0.0001105172414, + -0.0000474137931, -0.0001841379310, -0.0002736206897, -0.0003000000000, + -0.0002367241379, -0.0001000000000, +0.0000684482759, +0.0002000000000, + +0.0002262068966, +0.0001684482759, +0.0000736206897, +0.0000000000000, + -0.0000368965517, -0.0000579310345, -0.0000474137931, +0.0000053448276, + +0.0000946551724, +0.0001841379310, +0.0002682758621, +0.0003000000000, + +0.0002525862069, +0.0001472413793, +0.0000420689655, -0.0000053448276, + -0.0000053448276, +0.0000263793103, +0.0000789655172, +0.0001156896552, + +0.0001051724138, +0.0000263793103, -0.0000474137931, -0.0000736206897, + -0.0000210344828, +0.0000894827586, +0.0002315517241, +0.0003262068966, + +0.0003262068966, +0.0002472413793, +0.0001631034483, +0.0001367241379, + +0.0001367241379, +0.0001367241379, +0.0001315517241, +0.0001105172414, + +0.0000579310345, +0.0000000000000, -0.0000210344828, +0.0000158620690, + +0.0001105172414, +0.0002000000000, +0.0002156896552, +0.0001472413793, + +0.0000158620690, -0.0001000000000, -0.0001420689655, -0.0001000000000, + -0.0000263793103, +0.0000210344828, +0.0000053448276, -0.0000684482759, + -0.0001736206897, -0.0002736206897, -0.0003315517241, -0.0003367241379, + -0.0003156896552, -0.0002631034483, -0.0001684482759, -0.0000474137931, + +0.0000315517241, +0.0000263793103, -0.0000315517241, -0.0001156896552, + -0.0001894827586, -0.0002420689655, -0.0002736206897, -0.0002787931034, + -0.0002420689655, -0.0001631034483, -0.0000579310345, +0.0000315517241, + +0.0000946551724, +0.0001000000000, +0.0000420689655, -0.0000579310345, + -0.0001525862069, -0.0001894827586, -0.0001472413793, -0.0000315517241, + +0.0001000000000, +0.0001894827586, +0.0001789655172, +0.0000894827586, + +0.0000000000000, -0.0000315517241, -0.0000263793103, +0.0000000000000, + +0.0000368965517, +0.0000631034483, +0.0000946551724, +0.0001472413793, + +0.0002315517241, +0.0002893103448, +0.0002841379310, +0.0002367241379, + +0.0001684482759, +0.0000894827586, +0.0000105172414, -0.0000263793103, + -0.0000263793103, -0.0000053448276, +0.0000000000000, +0.0000000000000, + -0.0000158620690, -0.0000210344828, -0.0000105172414, +0.0000158620690, + +0.0000684482759, +0.0001262068966, +0.0001525862069, +0.0001472413793, + +0.0001420689655, +0.0001684482759, +0.0001894827586, +0.0001631034483, + +0.0000946551724, +0.0000000000000, -0.0000894827586, -0.0001472413793, + -0.0001684482759, -0.0001631034483, -0.0001579310345, -0.0001579310345, + -0.0001579310345, -0.0001736206897, -0.0001684482759, -0.0001315517241, + -0.0000474137931, +0.0000684482759, +0.0001736206897, +0.0002210344828, + +0.0002156896552, +0.0001579310345, +0.0000736206897, +0.0000000000000, + -0.0000158620690, +0.0000000000000, +0.0000474137931, +0.0001000000000, + +0.0001367241379, +0.0001472413793, +0.0001525862069, +0.0001736206897, + +0.0002156896552, +0.0002682758621, +0.0003051724138, +0.0002893103448, + +0.0002210344828, +0.0001210344828, +0.0000525862069, +0.0000420689655, + +0.0000894827586, +0.0001579310345, +0.0001894827586, +0.0001420689655, + +0.0000525862069, -0.0000263793103, -0.0000789655172, -0.0000946551724, + -0.0000684482759, -0.0000105172414, +0.0000420689655, +0.0000789655172, + +0.0000789655172, +0.0000368965517, -0.0000053448276, -0.0000158620690, + +0.0000420689655, +0.0001315517241, +0.0001789655172, +0.0001472413793, + +0.0000368965517, -0.0001000000000, -0.0002156896552, -0.0002472413793, + -0.0001789655172, -0.0000631034483, +0.0000158620690, +0.0000105172414, + -0.0000631034483, -0.0001472413793, -0.0001789655172, -0.0001262068966, + +0.0000000000000, +0.0001367241379, +0.0002367241379, +0.0002472413793, + +0.0001631034483, +0.0000263793103, -0.0000841379310, -0.0001525862069, + -0.0001684482759, -0.0001367241379, -0.0000631034483, +0.0000105172414, + +0.0000474137931, +0.0000474137931, +0.0000420689655, +0.0000684482759, + +0.0001000000000, +0.0001000000000, +0.0000631034483, +0.0000158620690, + +0.0000000000000, +0.0000105172414, +0.0000631034483, +0.0001420689655, + +0.0002420689655, +0.0002946551724, +0.0002682758621, +0.0001946551724, + +0.0001105172414, +0.0000420689655, -0.0000053448276, -0.0000158620690, + -0.0000210344828, -0.0000579310345, -0.0001051724138, -0.0001156896552, + -0.0000684482759, +0.0000263793103, +0.0001631034483, +0.0003000000000, + +0.0004103448276, +0.0004682758621, +0.0004472413793, +0.0003631034483, + +0.0002577586207, +0.0001579310345, +0.0000474137931, -0.0000684482759, + -0.0001631034483, -0.0001841379310, -0.0001262068966, -0.0000105172414, + +0.0001262068966, +0.0002472413793, +0.0002946551724, +0.0002472413793, + +0.0001472413793, +0.0000315517241, -0.0000263793103, +0.0000000000000, + +0.0001051724138, +0.0002525862069, +0.0003420689655, +0.0003051724138, + +0.0001789655172, +0.0000684482759, +0.0000368965517, +0.0000894827586, + +0.0001841379310, +0.0002577586207, +0.0002736206897, +0.0002105172414, + +0.0000684482759, -0.0001472413793, -0.0003787931034, -0.0005208620690, + -0.0005208620690, -0.0003787931034, -0.0001367241379, +0.0001210344828, + +0.0003000000000, +0.0003472413793, +0.0002787931034, +0.0001684482759, + +0.0000684482759, -0.0000053448276, -0.0000946551724, -0.0001946551724, + -0.0002893103448, -0.0003472413793, -0.0003525862069, -0.0002946551724, + -0.0001841379310, -0.0000579310345, +0.0000263793103, +0.0000525862069, + +0.0000368965517, +0.0000000000000, -0.0000210344828, -0.0000158620690, + +0.0000210344828, +0.0000946551724, +0.0001472413793, +0.0001579310345, + +0.0001156896552, +0.0000158620690, -0.0000894827586, -0.0001841379310, + -0.0002315517241, -0.0001946551724, -0.0000684482759, +0.0001051724138, + +0.0002682758621, +0.0003577586207, +0.0003525862069, +0.0002577586207, + +0.0001210344828, +0.0000000000000, -0.0000736206897, -0.0001210344828, + -0.0001420689655, -0.0001367241379, -0.0001000000000, -0.0000315517241, + +0.0000420689655, +0.0001051724138, +0.0001262068966, +0.0001000000000, + +0.0000263793103, -0.0000525862069, -0.0001105172414, -0.0001367241379, + -0.0001472413793, -0.0001579310345, -0.0002000000000, -0.0002577586207, + -0.0002893103448, -0.0002631034483, -0.0001789655172, -0.0000631034483, + +0.0000579310345, +0.0001420689655, +0.0001315517241, +0.0000315517241, + -0.0001000000000, -0.0002000000000, -0.0002315517241, -0.0002051724138, + -0.0001525862069, -0.0000894827586, -0.0000579310345, -0.0000946551724, + -0.0001946551724, -0.0003051724138, -0.0003577586207, -0.0003000000000, + -0.0001420689655, +0.0000315517241, +0.0001367241379, +0.0000946551724, + -0.0000736206897, -0.0002682758621, -0.0003736206897, -0.0003472413793, + -0.0002262068966, -0.0000684482759, +0.0000525862069, +0.0001156896552, + +0.0001156896552, +0.0000631034483, +0.0000053448276, -0.0000315517241, + -0.0000579310345, -0.0000684482759, -0.0000579310345, -0.0000263793103, + +0.0000105172414, +0.0000736206897, +0.0001262068966, +0.0001420689655, + +0.0001156896552, +0.0000579310345, -0.0000105172414, -0.0000946551724, + -0.0001631034483, -0.0001894827586, -0.0001684482759, -0.0001000000000, + -0.0000315517241, -0.0000105172414, -0.0000474137931, -0.0001105172414, + -0.0001420689655, -0.0001156896552, -0.0000525862069, +0.0000210344828, + +0.0000789655172, +0.0000789655172, +0.0000105172414, -0.0001051724138, + -0.0002105172414, -0.0002736206897, -0.0003051724138, -0.0003315517241, + -0.0003577586207, -0.0003631034483, -0.0003577586207, -0.0003210344828, + -0.0002682758621, -0.0002000000000, -0.0001472413793, -0.0001105172414, + -0.0001051724138, -0.0001262068966, -0.0001684482759, -0.0002156896552, + -0.0002631034483, -0.0002787931034, -0.0002525862069, -0.0002105172414, + -0.0001841379310, -0.0001789655172, -0.0002051724138, -0.0002262068966, + -0.0002051724138, -0.0001420689655, -0.0000525862069, +0.0000053448276, + +0.0000158620690, -0.0000158620690, -0.0000631034483, -0.0001210344828, + -0.0001946551724, -0.0002577586207, -0.0002736206897, -0.0002367241379, + -0.0001579310345, -0.0000525862069, +0.0000263793103, +0.0000525862069, + -0.0000158620690, -0.0001631034483, -0.0003210344828, -0.0004208620690, + -0.0004472413793, -0.0004051724138, -0.0003156896552, -0.0002210344828, + -0.0001156896552, -0.0000105172414, +0.0000789655172, +0.0001315517241, + +0.0001262068966, +0.0001051724138, +0.0001105172414, +0.0001472413793, + +0.0001841379310, +0.0001789655172, +0.0001051724138, +0.0000000000000, + -0.0001105172414, -0.0001894827586, -0.0002156896552, -0.0001841379310, + -0.0001156896552, -0.0000368965517, +0.0000210344828, +0.0000474137931, + +0.0000315517241, -0.0000210344828, -0.0001000000000, -0.0001789655172, + -0.0002420689655, -0.0002841379310, -0.0003051724138, -0.0002787931034, + -0.0001946551724, -0.0000579310345, +0.0000736206897, +0.0001210344828, + +0.0000684482759, -0.0000210344828, -0.0001000000000, -0.0001315517241, + -0.0001051724138, -0.0000525862069, -0.0000158620690, -0.0000315517241, + -0.0000894827586, -0.0001525862069, -0.0001736206897, -0.0001262068966, + -0.0000263793103, +0.0000946551724, +0.0001894827586, +0.0001946551724, + +0.0001051724138, -0.0000210344828, -0.0001315517241, -0.0001894827586, + -0.0001736206897, -0.0001051724138, -0.0000263793103, +0.0000105172414, + +0.0000158620690, -0.0000105172414, -0.0000736206897, -0.0001579310345, + -0.0002472413793, -0.0003000000000, -0.0003051724138, -0.0002367241379, + -0.0001315517241, -0.0000210344828, +0.0000368965517, +0.0000525862069, + +0.0000315517241, +0.0000158620690, +0.0000210344828, +0.0000684482759, + +0.0001315517241, +0.0002000000000, +0.0002156896552, +0.0001579310345, + +0.0000631034483, +0.0000000000000, -0.0000263793103, -0.0000263793103, + -0.0000053448276, +0.0000474137931, +0.0001156896552, +0.0001631034483, + +0.0001736206897, +0.0001420689655, +0.0000894827586, +0.0000315517241, + +0.0000053448276, +0.0000474137931, +0.0001525862069, +0.0002946551724, + +0.0003998275862, +0.0004313793103, +0.0003420689655, +0.0001736206897, + -0.0000053448276, -0.0001315517241, -0.0001736206897, -0.0001472413793, + -0.0000684482759, +0.0000210344828, +0.0000841379310, +0.0000736206897, + +0.0000210344828, -0.0000210344828, -0.0000368965517, -0.0000105172414, + +0.0000525862069, +0.0001420689655, +0.0002156896552, +0.0002525862069, + +0.0002472413793, +0.0002210344828, +0.0002051724138, +0.0001946551724, + +0.0001684482759, +0.0001156896552, +0.0000420689655, -0.0000210344828, + -0.0000579310345, -0.0000631034483, -0.0000263793103, +0.0000474137931, + +0.0001262068966, +0.0001789655172, +0.0001946551724, +0.0001841379310, + +0.0001894827586, +0.0002262068966, +0.0002893103448, +0.0003315517241, + +0.0003525862069, +0.0003472413793, +0.0003210344828, +0.0002787931034, + +0.0002210344828, +0.0001789655172, +0.0001472413793, +0.0001315517241, + +0.0001105172414, +0.0000841379310, +0.0000368965517, -0.0000158620690, + -0.0000631034483, -0.0000474137931, +0.0000420689655, +0.0001841379310, + +0.0003105172414, +0.0003525862069, +0.0003051724138, +0.0001894827586, + +0.0000736206897, +0.0000000000000, +0.0000000000000, +0.0000631034483, + +0.0001579310345, +0.0002262068966, +0.0002420689655, +0.0002105172414, + +0.0001684482759, +0.0001262068966, +0.0001051724138, +0.0001105172414, + +0.0001262068966, +0.0001472413793, +0.0001525862069, +0.0001156896552, + +0.0000684482759, +0.0000368965517, +0.0000525862069, +0.0001156896552, + +0.0002000000000, +0.0002682758621, +0.0003105172414, +0.0003210344828, + +0.0002946551724, +0.0002472413793, +0.0002000000000, +0.0001789655172, + +0.0001631034483, +0.0001367241379, +0.0000841379310, +0.0000210344828, + -0.0000053448276, +0.0000053448276, +0.0000684482759, +0.0001579310345, + +0.0002525862069, +0.0003156896552, +0.0003315517241, +0.0003051724138, + +0.0002315517241, +0.0001420689655, +0.0000420689655, -0.0000474137931, + -0.0001210344828, -0.0001579310345, -0.0001367241379, -0.0000684482759, + +0.0000263793103, +0.0001315517241, +0.0002105172414, +0.0002315517241, + +0.0001789655172, +0.0000841379310, +0.0000000000000, -0.0000684482759, + -0.0000946551724, -0.0000684482759, -0.0000105172414, +0.0000210344828, + +0.0000158620690, -0.0000158620690, -0.0000579310345, -0.0000736206897, + -0.0000525862069, +0.0000105172414, +0.0001105172414, +0.0002156896552, + +0.0002841379310, +0.0002787931034, +0.0002000000000, +0.0000789655172, + -0.0000368965517, -0.0001210344828, -0.0001736206897, -0.0002210344828, + -0.0002420689655, -0.0002156896552, -0.0001472413793, -0.0000579310345, + +0.0000263793103, +0.0000946551724, +0.0001210344828, +0.0001105172414, + +0.0000789655172, +0.0000474137931, +0.0000315517241, +0.0000315517241, + +0.0000263793103, +0.0000053448276, -0.0000474137931, -0.0001262068966, + -0.0001946551724, -0.0002156896552, -0.0001789655172, -0.0000894827586, + +0.0000105172414, +0.0000894827586, +0.0001105172414, +0.0000736206897, + +0.0000210344828, -0.0000105172414, -0.0000105172414, +0.0000210344828, + +0.0000631034483, +0.0000894827586, +0.0000736206897, +0.0000053448276, + -0.0000894827586, -0.0001472413793, -0.0001315517241, -0.0000525862069, + +0.0000474137931, +0.0001367241379, +0.0001894827586, +0.0001841379310, + +0.0001051724138, -0.0000210344828, -0.0001315517241, -0.0001841379310, + -0.0001736206897, -0.0001315517241, -0.0000736206897, -0.0000158620690, + +0.0000263793103, +0.0000631034483, +0.0001000000000, +0.0001420689655, + +0.0001736206897, +0.0001579310345, +0.0000894827586, -0.0000263793103, + -0.0001525862069, -0.0002472413793, -0.0002682758621, -0.0002156896552, + -0.0001315517241, -0.0000368965517, +0.0000263793103, +0.0000684482759, + +0.0000841379310, +0.0001000000000, +0.0001210344828, +0.0001684482759, + +0.0002051724138, +0.0002156896552, +0.0001841379310, +0.0001105172414, + +0.0000105172414, -0.0000684482759, -0.0001156896552, -0.0001051724138, + -0.0000368965517, +0.0000525862069, +0.0001579310345, +0.0002420689655, + +0.0002631034483, +0.0002105172414, +0.0000946551724, -0.0000525862069, + -0.0001789655172, -0.0002367241379, -0.0001894827586, -0.0000736206897, + +0.0000474137931, +0.0001000000000, +0.0000736206897, -0.0000053448276, + -0.0000946551724, -0.0001684482759, -0.0001946551724, -0.0001736206897, + -0.0001315517241, -0.0000841379310, -0.0000315517241, +0.0000210344828, + +0.0000631034483, +0.0000736206897, +0.0000420689655, -0.0000105172414, + -0.0000579310345, -0.0000946551724, -0.0001315517241, -0.0001841379310, + -0.0002262068966, -0.0002420689655, -0.0002210344828, -0.0001684482759, + -0.0000841379310, +0.0000158620690, +0.0001262068966, +0.0001894827586, + +0.0001736206897, +0.0001000000000, +0.0000105172414, -0.0000368965517, + -0.0000579310345, -0.0000525862069, -0.0000263793103, -0.0000105172414, + -0.0000105172414, -0.0000315517241, -0.0000631034483, -0.0000894827586, + -0.0000946551724, -0.0000684482759, -0.0000158620690, +0.0000210344828, + +0.0000210344828, -0.0000263793103, -0.0000894827586, -0.0001156896552, + -0.0001051724138, -0.0000684482759, -0.0000158620690, +0.0000368965517, + +0.0000789655172, +0.0000841379310, +0.0000631034483, +0.0000210344828, + -0.0000210344828, -0.0000684482759, -0.0001051724138, -0.0001210344828, + -0.0001156896552, -0.0001105172414, -0.0001051724138, -0.0001000000000, + -0.0000894827586, -0.0000684482759, -0.0000474137931, -0.0000263793103, + +0.0000000000000, +0.0000263793103, +0.0000841379310, +0.0001472413793, + +0.0001789655172, +0.0001684482759, +0.0001210344828, +0.0000684482759, + +0.0000210344828, -0.0000158620690, -0.0000579310345, -0.0001262068966, + -0.0002051724138, -0.0002631034483, -0.0002472413793, -0.0001420689655, + +0.0000263793103, +0.0002000000000, +0.0003156896552, +0.0003367241379, + +0.0002472413793, +0.0000946551724, -0.0000631034483, -0.0001684482759, + -0.0001841379310, -0.0001262068966, -0.0000368965517, +0.0000474137931, + +0.0001105172414, +0.0001315517241, +0.0001105172414, +0.0000474137931, + -0.0000315517241, -0.0001051724138, -0.0001420689655, -0.0001210344828, + -0.0000579310345, +0.0000105172414, +0.0000579310345, +0.0000736206897, + +0.0000631034483, +0.0000420689655, +0.0000315517241, +0.0000525862069, + +0.0000946551724, +0.0001367241379, +0.0001315517241, +0.0000789655172, + +0.0000053448276, -0.0000579310345, -0.0000841379310, -0.0000684482759, + -0.0000158620690, +0.0000420689655, +0.0000841379310, +0.0001000000000, + +0.0000946551724, +0.0000684482759, +0.0000315517241, +0.0000053448276, + -0.0000105172414, -0.0000315517241, -0.0000474137931, -0.0000631034483, + -0.0000579310345, -0.0000210344828, +0.0000263793103, +0.0000736206897, + +0.0000789655172, +0.0000631034483, +0.0000053448276, -0.0000736206897, + -0.0001579310345, -0.0002000000000, -0.0001736206897, -0.0001210344828, + -0.0000684482759, -0.0000210344828, +0.0000420689655, +0.0001156896552, + +0.0001684482759, +0.0001736206897, +0.0001156896552, +0.0000210344828, + -0.0000841379310, -0.0001736206897, -0.0002210344828, -0.0002262068966, + -0.0002105172414, -0.0001789655172, -0.0001472413793, -0.0001156896552, + -0.0000946551724, -0.0000789655172, -0.0000684482759, -0.0000525862069, + -0.0000263793103, +0.0000105172414, +0.0000631034483, +0.0001105172414, + +0.0001420689655, +0.0001579310345, +0.0001420689655, +0.0000841379310, + -0.0000053448276, -0.0001051724138, -0.0001841379310, -0.0002156896552, + -0.0001894827586, -0.0001210344828, -0.0000368965517, +0.0000263793103, + +0.0000525862069, +0.0000315517241, -0.0000315517241, -0.0001156896552, + -0.0001789655172, -0.0001841379310, -0.0001315517241, -0.0000579310345, + +0.0000105172414, +0.0000579310345, +0.0000894827586, +0.0001000000000, + +0.0001000000000, +0.0000841379310, +0.0000684482759, +0.0000368965517, + -0.0000158620690, -0.0000894827586, -0.0001525862069, -0.0001631034483, + -0.0001051724138, +0.0000000000000, +0.0001051724138, +0.0001631034483, + +0.0001420689655, +0.0000474137931, -0.0000684482759, -0.0001525862069, + -0.0001631034483, -0.0001051724138, -0.0000315517241, +0.0000000000000, + -0.0000158620690, -0.0000894827586, -0.0001894827586, -0.0002682758621, + -0.0003051724138, -0.0002893103448, -0.0002262068966, -0.0001472413793, + -0.0000579310345, +0.0000263793103, +0.0000789655172, +0.0000789655172, + +0.0000420689655, -0.0000105172414, -0.0000684482759, -0.0001262068966, + -0.0001736206897, -0.0001946551724, -0.0001736206897, -0.0001156896552, + -0.0000525862069, -0.0000053448276, +0.0000000000000, -0.0000053448276, + -0.0000420689655, -0.0000894827586, -0.0001472413793, -0.0001946551724, + -0.0002000000000, -0.0001472413793, -0.0000525862069, +0.0000315517241, + +0.0000894827586, +0.0000946551724, +0.0000525862069, +0.0000000000000, + -0.0000263793103, -0.0000263793103, -0.0000158620690, -0.0000053448276, + -0.0000158620690, -0.0000158620690, +0.0000000000000, +0.0000263793103, + +0.0000474137931, +0.0000684482759, +0.0000789655172, +0.0000684482759, + +0.0000105172414, -0.0000841379310, -0.0001841379310, -0.0002472413793, + -0.0002420689655, -0.0001841379310, -0.0001105172414, -0.0000525862069, + -0.0000420689655, -0.0000684482759, -0.0001000000000, -0.0001156896552, + -0.0001051724138, -0.0000579310345, +0.0000158620690, +0.0000946551724, + +0.0001210344828, +0.0000736206897, -0.0000368965517, -0.0001736206897, + -0.0002577586207, -0.0002682758621, -0.0002210344828, -0.0001525862069, + -0.0000946551724, -0.0000525862069, -0.0000368965517, -0.0000368965517, + -0.0000579310345, -0.0000684482759, -0.0000579310345, -0.0000210344828, + +0.0000210344828, +0.0000631034483, +0.0000736206897, +0.0000525862069, + +0.0000105172414, -0.0000368965517, -0.0000789655172, -0.0001105172414, + -0.0001156896552, -0.0000841379310, -0.0000315517241, +0.0000263793103, + +0.0000684482759, +0.0000684482759, +0.0000105172414, -0.0000579310345, + -0.0001156896552, -0.0001210344828, -0.0000946551724, -0.0000525862069, + +0.0000000000000, +0.0000684482759, +0.0001156896552, +0.0001000000000, + +0.0000210344828, -0.0000841379310, -0.0001631034483, -0.0001841379310, + -0.0001472413793, -0.0000579310345, +0.0000368965517, +0.0001105172414, + +0.0001315517241, +0.0000789655172, -0.0000105172414, -0.0001262068966, + -0.0002210344828, -0.0002577586207, -0.0002000000000, -0.0000736206897, + +0.0000736206897, +0.0001841379310, +0.0002210344828, +0.0001684482759, + +0.0000525862069, -0.0000684482759, -0.0001789655172, -0.0002315517241, + -0.0002367241379, -0.0002105172414, -0.0001684482759, -0.0001315517241, + -0.0000894827586, -0.0000525862069, -0.0000105172414, +0.0000315517241, + +0.0000736206897, +0.0000894827586, +0.0000631034483, +0.0000053448276, + -0.0000474137931, -0.0000631034483, -0.0000263793103, +0.0000420689655, + +0.0001210344828, +0.0001789655172, +0.0001894827586, +0.0001420689655, + +0.0000525862069, -0.0000420689655, -0.0001156896552, -0.0001367241379, + -0.0000894827586, +0.0000000000000, +0.0000946551724, +0.0001525862069, + +0.0001684482759, +0.0001367241379, +0.0000736206897, -0.0000053448276, + -0.0000789655172, -0.0001156896552, -0.0000789655172, +0.0000158620690, + +0.0001367241379, +0.0002156896552, +0.0002262068966, +0.0001525862069, + +0.0000368965517, -0.0000579310345, -0.0001000000000, -0.0000736206897, + +0.0000000000000, +0.0000841379310, +0.0001315517241, +0.0001315517241, + +0.0000894827586, +0.0000368965517, -0.0000053448276, -0.0000053448276, + +0.0000420689655, +0.0001262068966, +0.0001841379310, +0.0001736206897, + +0.0000946551724, -0.0000158620690, -0.0001051724138, -0.0001315517241, + -0.0000894827586, -0.0000158620690, +0.0000684482759, +0.0001420689655, + +0.0001736206897, +0.0001789655172, +0.0001525862069, +0.0001156896552, + +0.0000736206897, +0.0000368965517, +0.0000158620690, +0.0000315517241, + +0.0000789655172, +0.0001262068966, +0.0001420689655, +0.0001262068966, + +0.0000789655172, +0.0000210344828, -0.0000263793103, -0.0000420689655, + -0.0000368965517, -0.0000263793103, -0.0000420689655, -0.0000684482759, + -0.0000631034483, -0.0000158620690, +0.0000736206897, +0.0001684482759, + +0.0002315517241, +0.0002315517241, +0.0001894827586, +0.0001210344828, + +0.0000631034483, +0.0000315517241, +0.0000474137931, +0.0001000000000, + +0.0001579310345, +0.0001894827586, +0.0001736206897, +0.0001367241379, + +0.0000841379310, +0.0000368965517, +0.0000000000000, -0.0000053448276, + +0.0000158620690, +0.0000474137931, +0.0000684482759, +0.0000631034483, + +0.0000315517241, +0.0000053448276, +0.0000053448276, +0.0000474137931, + +0.0001210344828, +0.0002000000000, +0.0002631034483, +0.0003000000000, + +0.0003210344828, +0.0003367241379, +0.0003367241379, +0.0003262068966, + +0.0003051724138, +0.0002577586207, +0.0002105172414, +0.0001684482759, + +0.0001525862069, +0.0001684482759, +0.0002051724138, +0.0002315517241, + +0.0002000000000, +0.0001262068966, +0.0000420689655, -0.0000158620690, + -0.0000263793103, +0.0000105172414, +0.0000841379310, +0.0001579310345, + +0.0002105172414, +0.0002210344828, +0.0001946551724, +0.0001525862069, + +0.0001105172414, +0.0000894827586, +0.0000894827586, +0.0001156896552, + +0.0001525862069, +0.0001894827586, +0.0002105172414, +0.0002051724138, + +0.0001684482759, +0.0000946551724, +0.0000000000000, -0.0001105172414, + -0.0001736206897, -0.0001736206897, -0.0000841379310, +0.0000631034483, + +0.0002210344828, +0.0003156896552, +0.0003210344828, +0.0002367241379, + +0.0001156896552, +0.0000053448276, -0.0000525862069, -0.0000579310345, + -0.0000263793103, +0.0000105172414, +0.0000315517241, +0.0000315517241, + +0.0000105172414, -0.0000053448276, -0.0000210344828, -0.0000105172414, + +0.0000053448276, +0.0000368965517, +0.0000579310345, +0.0000684482759, + +0.0000736206897, +0.0000841379310, +0.0001000000000, +0.0001156896552, + +0.0001156896552, +0.0000946551724, +0.0000579310345, +0.0000210344828, + +0.0000000000000, -0.0000105172414, -0.0000053448276, +0.0000053448276, + +0.0000210344828, +0.0000368965517, +0.0000368965517, +0.0000315517241, + +0.0000420689655, +0.0000736206897, +0.0001105172414, +0.0001472413793, + +0.0001736206897, +0.0001894827586, +0.0001946551724, +0.0002000000000, + +0.0001946551724, +0.0001789655172, +0.0001579310345, +0.0001262068966, + +0.0000946551724, +0.0000631034483, +0.0000315517241, +0.0000000000000, + -0.0000105172414, +0.0000000000000, +0.0000368965517, +0.0000894827586, + +0.0001472413793, +0.0001789655172, +0.0001841379310, +0.0001631034483, + +0.0001315517241, +0.0000946551724, +0.0000474137931, +0.0000000000000, + -0.0000525862069, -0.0000841379310, -0.0000894827586, -0.0000684482759, + -0.0000263793103, +0.0000210344828, +0.0000736206897, +0.0001156896552, + +0.0001315517241, +0.0001156896552, +0.0000684482759, +0.0000210344828, + +0.0000000000000, +0.0000000000000, +0.0000000000000, +0.0000000000000, + +0.0000000000000, +0.0000158620690, +0.0000105172414, -0.0000158620690, + -0.0000684482759, -0.0001105172414, -0.0001315517241, -0.0001105172414, + -0.0000579310345, +0.0000053448276, +0.0000579310345, +0.0000789655172, + +0.0000736206897, +0.0000525862069, +0.0000263793103, +0.0000000000000, + -0.0000263793103, -0.0000315517241, -0.0000053448276, +0.0000263793103, + +0.0000474137931, +0.0000368965517, +0.0000000000000, -0.0000525862069, + -0.0000894827586, -0.0001051724138, -0.0000841379310, -0.0000368965517, + +0.0000315517241, +0.0001051724138, +0.0001684482759, +0.0002051724138, + +0.0002156896552, +0.0002051724138, +0.0001684482759, +0.0001051724138, + +0.0000210344828, -0.0000579310345, -0.0001105172414, -0.0001105172414, + -0.0000736206897, -0.0000210344828, +0.0000158620690, +0.0000158620690, + -0.0000053448276, -0.0000368965517, -0.0000525862069, -0.0000631034483, + -0.0000684482759, -0.0000684482759, -0.0000631034483, -0.0000579310345, + -0.0000579310345, -0.0000474137931, -0.0000420689655, -0.0000315517241, + -0.0000315517241, -0.0000368965517, -0.0000579310345, -0.0000946551724, + -0.0001420689655, -0.0001841379310, -0.0001946551724, -0.0001684482759, + -0.0001051724138, -0.0000315517241, +0.0000210344828, +0.0000420689655, + +0.0000263793103, -0.0000053448276, -0.0000420689655, -0.0000474137931, + -0.0000210344828, +0.0000263793103, +0.0000789655172, +0.0000841379310, + +0.0000315517241, -0.0000631034483, -0.0001631034483, -0.0002262068966, + -0.0002367241379, -0.0002051724138, -0.0001472413793, -0.0000684482759, + -0.0000053448276, +0.0000315517241, +0.0000315517241, +0.0000000000000, + -0.0000368965517, -0.0000631034483, -0.0000631034483, -0.0000474137931, + -0.0000263793103, -0.0000053448276, +0.0000000000000, -0.0000105172414, + -0.0000474137931, -0.0000946551724, -0.0001367241379, -0.0001631034483, + -0.0001684482759, -0.0001525862069, -0.0001210344828, -0.0000841379310, + -0.0000420689655, +0.0000000000000, +0.0000315517241, +0.0000579310345, + +0.0000631034483, +0.0000368965517, -0.0000053448276, -0.0000736206897, + -0.0001367241379, -0.0001841379310, -0.0002105172414, -0.0002105172414, + -0.0002105172414, -0.0002105172414, -0.0002262068966, -0.0002367241379, + -0.0002367241379, -0.0002156896552, -0.0001736206897, -0.0001262068966, + -0.0000894827586, -0.0000736206897, -0.0000684482759, -0.0000684482759, + -0.0000684482759, -0.0000789655172, -0.0001051724138, -0.0001420689655, + -0.0001736206897, -0.0001736206897, -0.0001472413793, -0.0001156896552, + -0.0001105172414, -0.0001262068966, -0.0001579310345, -0.0001789655172, + -0.0001684482759, -0.0001156896552, -0.0000368965517, +0.0000263793103, + +0.0000631034483, +0.0000368965517, -0.0000263793103, -0.0000946551724, + -0.0001472413793, -0.0001789655172, -0.0002051724138, -0.0002262068966, + -0.0002315517241, -0.0002156896552, -0.0001894827586, -0.0001525862069, + -0.0001105172414, -0.0000789655172, -0.0000631034483, -0.0000684482759, + -0.0000946551724, -0.0001262068966, -0.0001367241379, -0.0001156896552, + -0.0000631034483, +0.0000053448276, +0.0000579310345, +0.0000736206897, + +0.0000210344828, -0.0000579310345, -0.0001525862069, -0.0002156896552, + -0.0002315517241, -0.0001946551724, -0.0001262068966, -0.0000631034483, + -0.0000315517241, -0.0000368965517, -0.0000631034483, -0.0001051724138, + -0.0001262068966, -0.0001156896552, -0.0000736206897, -0.0000105172414, + +0.0000525862069, +0.0000946551724, +0.0000894827586, +0.0000420689655, + -0.0000263793103, -0.0000894827586, -0.0001262068966, -0.0001262068966, + -0.0001000000000, -0.0000789655172, -0.0000684482759, -0.0000841379310, + -0.0001105172414, -0.0001210344828, -0.0001156896552, -0.0001105172414, + -0.0001156896552, -0.0001367241379, -0.0001579310345, -0.0001631034483, + -0.0001420689655, -0.0000894827586, -0.0000263793103, +0.0000315517241, + +0.0000579310345, +0.0000263793103, -0.0000420689655, -0.0001210344828, + -0.0001789655172, -0.0002000000000, -0.0001736206897, -0.0001051724138, + -0.0000158620690, +0.0000525862069, +0.0001000000000, +0.0000946551724, + +0.0000525862069, -0.0000105172414, -0.0000789655172, -0.0001105172414, + -0.0000946551724, -0.0000474137931, +0.0000210344828, +0.0001000000000, + +0.0001579310345, +0.0001841379310, +0.0001789655172, +0.0001420689655, + +0.0000841379310, +0.0000420689655, +0.0000053448276, -0.0000158620690, + -0.0000315517241, -0.0000420689655, -0.0000315517241, -0.0000158620690, + +0.0000000000000, +0.0000315517241, +0.0000579310345, +0.0000894827586, + +0.0001051724138, +0.0001105172414, +0.0001051724138, +0.0000841379310, + +0.0000420689655, +0.0000000000000, -0.0000105172414, -0.0000105172414, + +0.0000000000000, +0.0000053448276, +0.0000210344828, +0.0000315517241, + +0.0000263793103, +0.0000053448276, -0.0000053448276, -0.0000263793103, + -0.0000368965517, -0.0000368965517, -0.0000210344828, -0.0000053448276, + +0.0000000000000, +0.0000000000000, +0.0000000000000 +}; diff --git a/plugins/ladspa_effect/swh/impulses/18-marshall-plexi-sm57.h b/plugins/ladspa_effect/swh/impulses/18-marshall-plexi-sm57.h new file mode 100644 index 000000000..26ee27170 --- /dev/null +++ b/plugins/ladspa_effect/swh/impulses/18-marshall-plexi-sm57.h @@ -0,0 +1,1386 @@ +float marshall_plexi_sm57[] = { + +0.0000000000000, +0.0000000000000, -0.0000201754386, -0.0000401315789, + -0.0000469298246, -0.0000401315789, -0.0000067982456, +0.0000133771930, + +0.0000335526316, +0.0000401315789, +0.0000201754386, +0.0000000000000, + -0.0000469298246, -0.0001004385965, -0.0001605263158, -0.0002208333333, + -0.0002677631579, -0.0002945175439, -0.0002677631579, -0.0001940789474, + -0.0000736842105, +0.0000535087719, +0.0001739035088, +0.0002276315789, + +0.0001872807018, +0.0000469298246, -0.0001539473684, -0.0003614035088, + -0.0004951754386, -0.0004951754386, -0.0003412280702, -0.0001070175439, + +0.0001271929825, +0.0002743421053, +0.0002743421053, +0.0001405701754, + -0.0000469298246, -0.0002074561404, -0.0002677631579, -0.0002008771930, + -0.0000668859649, +0.0000535087719, +0.0001004385965, +0.0000401315789, + -0.0000936403509, -0.0002410087719, -0.0003144736842, -0.0002877192982, + -0.0001539473684, +0.0000267543860, +0.0001940789474, +0.0003010964912, + +0.0003144736842, +0.0002475877193, +0.0001405701754, +0.0000067982456, + -0.0000936403509, -0.0001739035088, -0.0002008771930, -0.0001673245614, + -0.0000802631579, +0.0000335526316, +0.0001673245614, +0.0002677631579, + +0.0003010964912, +0.0002609649123, +0.0001539473684, +0.0000267543860, + -0.0000668859649, -0.0001138157895, -0.0000736842105, +0.0000067982456, + +0.0001138157895, +0.0002074561404, +0.0002475877193, +0.0002410087719, + +0.0001940789474, +0.0001271929825, +0.0000802631579, +0.0000668859649, + +0.0001004385965, +0.0001673245614, +0.0002543859649, +0.0003212719298, + +0.0003346491228, +0.0002811403509, +0.0001807017544, +0.0000535087719, + -0.0000469298246, -0.0000936403509, -0.0000936403509, -0.0000469298246, + +0.0000000000000, +0.0000267543860, +0.0000469298246, +0.0000802631579, + +0.0001739035088, +0.0003278508772, +0.0005287280702, +0.0006960526316, + +0.0007361842105, +0.0005890350877, +0.0002677631579, -0.0001405701754, + -0.0005019736842, -0.0006892543860, -0.0006157894737, -0.0003278508772, + +0.0000535087719, +0.0003815789474, +0.0005421052632, +0.0004951754386, + +0.0003078947368, +0.0001004385965, -0.0000067982456, +0.0000000000000, + +0.0001070175439, +0.0002208333333, +0.0002543859649, +0.0001673245614, + +0.0000067982456, -0.0001471491228, -0.0002410087719, -0.0002276315789, + -0.0001673245614, -0.0001070175439, -0.0001004385965, -0.0001471491228, + -0.0001807017544, -0.0001337719298, +0.0000267543860, +0.0002609649123, + +0.0004618421053, +0.0005085526316, +0.0003480263158, +0.0000000000000, + -0.0003815789474, -0.0006491228070, -0.0006892543860, -0.0004752192982, + -0.0001271929825, +0.0001940789474, +0.0003480263158, +0.0002743421053, + +0.0000201754386, -0.0002811403509, -0.0004951754386, -0.0005421052632, + -0.0004149122807, -0.0002008771930, +0.0000133771930, +0.0001539473684, + +0.0002008771930, +0.0001673245614, +0.0000936403509, +0.0000000000000, + -0.0000936403509, -0.0002008771930, -0.0002945175439, -0.0003614035088, + -0.0003614035088, -0.0002811403509, -0.0001271929825, +0.0000335526316, + +0.0001471491228, +0.0001605263158, +0.0000535087719, -0.0001203947368, + -0.0003078947368, -0.0004282894737, -0.0004416666667, -0.0003412280702, + -0.0001673245614, +0.0000201754386, +0.0001739035088, +0.0002609649123, + +0.0002743421053, +0.0002142543860, +0.0001203947368, +0.0000067982456, + -0.0000802631579, -0.0001203947368, -0.0001138157895, -0.0000603070175, + +0.0000067982456, +0.0000668859649, +0.0000870614035, +0.0000401315789, + -0.0000469298246, -0.0001739035088, -0.0002945175439, -0.0003679824561, + -0.0003614035088, -0.0002609649123, -0.0000668859649, +0.0001807017544, + +0.0004550438596, +0.0006692982456, +0.0007831140351, +0.0007495614035, + +0.0005890350877, +0.0003480263158, +0.0001004385965, -0.0000870614035, + -0.0001872807018, -0.0002008771930, -0.0001739035088, -0.0001405701754, + -0.0001337719298, -0.0001271929825, -0.0001138157895, -0.0000535087719, + +0.0000401315789, +0.0001539473684, +0.0002475877193, +0.0003010964912, + +0.0003212719298, +0.0003278508772, +0.0003747807018, +0.0004550438596, + +0.0005554824561, +0.0006157894737, +0.0005822368421, +0.0004416666667, + +0.0002142543860, -0.0000335526316, -0.0002410087719, -0.0003614035088, + -0.0004015350877, -0.0003815789474, -0.0003346491228, -0.0002811403509, + -0.0001872807018, -0.0000469298246, +0.0001405701754, +0.0003614035088, + +0.0005421052632, +0.0006291666667, +0.0005822368421, +0.0004550438596, + +0.0003010964912, +0.0001940789474, +0.0001605263158, +0.0001539473684, + +0.0000936403509, -0.0000802631579, -0.0003815789474, -0.0007361842105, + -0.0009837719298, -0.0009971491228, -0.0007293859649, -0.0002410087719, + +0.0002877192982, +0.0006960526316, +0.0008298245614, +0.0007160087719, + +0.0004350877193, +0.0001605263158, +0.0000000000000, -0.0000668859649, + -0.0001203947368, -0.0003010964912, -0.0006692982456, -0.0011578947368, + -0.0015861842105, -0.0017131578947, -0.0013787280702, -0.0006089912281, + +0.0003815789474, +0.0013050438596, +0.0018403508772, +0.0018403508772, + +0.0013317982456, +0.0005085526316, -0.0003747807018, -0.0011243421053, + -0.0016396929825, -0.0019208333333, -0.0019877192982, -0.0018671052632, + -0.0015392543860, -0.0009905701754, -0.0002677631579, +0.0004752192982, + +0.0010708333333, +0.0013519736842, +0.0012649122807, +0.0009368421053, + +0.0005421052632, +0.0002609649123, +0.0001271929825, +0.0000335526316, + -0.0002074561404, -0.0007561403509, -0.0015594298246, -0.0023690789474, + -0.0028309210526, -0.0026234649123, -0.0016664473684, -0.0001807017544, + +0.0013921052632, +0.0025432017544, +0.0029447368421, +0.0025096491228, + +0.0014723684211, +0.0002008771930, -0.0008366228070, -0.0014054824561, + -0.0013451754386, -0.0008366228070, -0.0000335526316, +0.0006491228070, + +0.0009638157895, +0.0009771929825, -0.0002208333333, -0.0003747807018, + -0.0018203947368, -0.0026234649123, -0.0020278508772, -0.0007427631579, + +0.0005620614035, +0.0019074561404, +0.0027774122807, +0.0033061403509, + +0.0032660087719, +0.0029513157895, +0.0025631578947, +0.0018804824561, + +0.0012515350877, +0.0000401315789, -0.0012114035088, -0.0025765350877, + -0.0033596491228, -0.0033260964912, -0.0022085526316, -0.0005085526316, + +0.0012714912281, +0.0023824561404, +0.0026234649123, +0.0020478070175, + +0.0013116228070, +0.0009234649123, +0.0012848684211, +0.0022017543860, + +0.0032993421053, +0.0040289473684, +0.0041962719298, +0.0037811403509, + +0.0030383771930, +0.0020210526316, +0.0007697368421, -0.0008901315789, + -0.0027171052632, -0.0043567982456, -0.0048721491228, -0.0037276315789, + -0.0013787280702, +0.0010907894737, +0.0026567982456, +0.0004618421053, + -0.0032725877193, -0.0044706140351, -0.0067861842105, -0.0001271929825, + +0.0271712719298, +0.0275728070175, -0.0296006578947, -0.0846192982456, + -0.0746208333333, -0.0039885964912, +0.0946513157895, +0.1792372807018, + +0.2192848684211, +0.1940410087719, +0.1078554824561, -0.0104469298246, + -0.1053458333333, -0.1385471491228, -0.1215015350877, -0.0807109649123, + -0.0396394736842, -0.0055480263158, +0.0227945175439, +0.0308320175439, + +0.0169989035088, +0.0033127192982, -0.0035870614035, +0.0024627192982, + +0.0147032894737, +0.0147100877193, +0.0049993421053, -0.0009100877193, + -0.0007361842105, +0.0010975877193, +0.0006826754386, -0.0076293859649, + -0.0168649122807, -0.0225267543860, -0.0285232456140, -0.0296407894737, + -0.0201508771930, -0.0106745614035, -0.0066991228070, -0.0105473684211, + -0.0177015350877, -0.0207063596491, -0.0222993421053, -0.0246482456140, + -0.0224396929825, -0.0147635964912, -0.0121870614035, -0.0134853070175, + -0.0078903508772, -0.0003679824561, -0.0027973684211, -0.0111361842105, + -0.0187789473684, -0.0254714912281, -0.0287574561404, -0.0222791666667, + -0.0128896929825, -0.0096839912281, -0.0100653508772, -0.0087804824561, + -0.0072679824561, -0.0048252192982, +0.0017535087719, +0.0089478070175, + +0.0076763157895, -0.0018002192982, -0.0115510964912, -0.0170791666667, + -0.0174739035088, -0.0151315789474, -0.0128962719298, -0.0119526315789, + -0.0100519736842, -0.0080576754386, -0.0094497807018, -0.0108820175439, + -0.0089410087719, -0.0087067982456, -0.0113035087719, -0.0136458333333, + -0.0124614035088, -0.0068396929825, +0.0027640350877, +0.0127826754386, + +0.0181098684211, +0.0168449561404, +0.0106410087719, +0.0020813596491, + -0.0060633771930, -0.0099315789474, -0.0070940789474, -0.0025765350877, + -0.0031120614035, -0.0061504385965, -0.0072747807018, -0.0056684210526, + -0.0032324561404, +0.0008565789474, +0.0069600877193, +0.0118991228070, + +0.0136725877193, +0.0125951754386, +0.0103934210526, +0.0097039473684, + +0.0108015350877, +0.0102394736842, +0.0058625000000, -0.0002677631579, + -0.0058024122807, -0.0105206140351, -0.0120866228070, -0.0085730263158, + -0.0012381578947, +0.0067392543860, +0.0123342105263, +0.0142280701754, + +0.0129030701754, +0.0103063596491, +0.0075155701754, +0.0038682017544, + +0.0003480263158, -0.0020679824561, -0.0028175438596, -0.0016462719298, + +0.0000133771930, +0.0010907894737, +0.0022552631579, +0.0034800438596, + +0.0043701754386, +0.0056282894737, +0.0083186403509, +0.0116916666667, + +0.0143353070175, +0.0156938596491, +0.0157271929825, +0.0141010964912, + +0.0116247807018, +0.0105339912281, +0.0110089912281, +0.0118188596491, + +0.0125282894737, +0.0120464912281, +0.0097175438596, +0.0064179824561, + +0.0037677631579, +0.0029245614035, +0.0033394736842, +0.0041962719298, + +0.0047515350877, +0.0046578947368, +0.0051532894737, +0.0066254385965, + +0.0073015350877, +0.0069000000000, +0.0068328947368, +0.0066589912281, + +0.0056217105263, +0.0046712719298, +0.0042497807018, +0.0036339912281, + +0.0029982456140, +0.0025631578947, +0.0028508771930, +0.0041157894737, + +0.0055682017544, +0.0060232456140, +0.0053339912281, +0.0038750000000, + +0.0027907894737, +0.0030182017544, +0.0045508771930, +0.0066188596491, + +0.0081513157895, +0.0085932017544, +0.0082719298246, +0.0078100877193, + +0.0078302631579, +0.0089478070175, +0.0107078947368, +0.0119326754386, + +0.0115712719298, +0.0098311403509, +0.0078234649123, +0.0072278508772, + +0.0083789473684, +0.0102864035088, +0.0114039473684, +0.0113703947368, + +0.0105741228070, +0.0096171052632, +0.0091083333333, +0.0087872807018, + +0.0075557017544, +0.0048118421053, +0.0009771929825, -0.0025298245614, + -0.0040622807018, -0.0036072368421, -0.0030048245614, -0.0032392543860, + -0.0034131578947, -0.0034063596491, -0.0035671052632, -0.0034265350877, + -0.0023690789474, -0.0007293859649, +0.0011175438596, +0.0030853070175, + +0.0047785087719, +0.0058223684211, +0.0063578947368, +0.0066456140351, + +0.0064114035088, +0.0054475877193, +0.0039885964912, +0.0027572368421, + +0.0024225877193, +0.0028175438596, +0.0035537280702, +0.0044037280702, + +0.0050796052632, +0.0056618421053, +0.0061905701754, +0.0059697368421, + +0.0053940789474, +0.0052133771930, +0.0047048245614, +0.0033864035088, + +0.0019475877193, +0.0004550438596, -0.0008500000000, -0.0009837719298, + +0.0000000000000, +0.0011041666667, +0.0014456140351, +0.0005085526316, + -0.0013853070175, -0.0032859649123, -0.0049122807018, -0.0056550438596, + -0.0048519736842, -0.0031120614035, -0.0012982456140, +0.0006291666667, + +0.0020010964912, +0.0016328947368, -0.0005554824561, -0.0033730263158, + -0.0052000000000, -0.0053405701754, -0.0042497807018, -0.0029245614035, + -0.0018002192982, -0.0010975877193, -0.0012381578947, -0.0024427631579, + -0.0038081140351, -0.0044304824561, -0.0040622807018, -0.0035403508772, + -0.0035201754386, -0.0036607456140, -0.0034131578947, -0.0032793859649, + -0.0036741228070, -0.0044370614035, -0.0051666666667, -0.0056015350877, + -0.0057622807018, -0.0066254385965, -0.0084526315789, -0.0099449561404, + -0.0099717105263, -0.0086600877193, -0.0061837719298, -0.0029513157895, + -0.0002743421053, +0.0004282894737, -0.0011041666667, -0.0035938596491, + -0.0057956140351, -0.0069600877193, -0.0065451754386, -0.0048118421053, + -0.0028375000000, -0.0012114035088, -0.0004885964912, -0.0004951754386, + -0.0010506578947, -0.0018872807018, -0.0025699561404, -0.0032526315789, + -0.0042765350877, -0.0050528508772, -0.0053004385965, -0.0054743421053, + -0.0056817982456, -0.0054743421053, -0.0047984649123, -0.0041157894737, + -0.0037745614035, -0.0038616228070, -0.0037879385965, -0.0030986842105, + -0.0022085526316, -0.0016263157895, -0.0014589912281, -0.0014589912281, + -0.0012515350877, -0.0012848684211, -0.0020745614035, -0.0031587719298, + -0.0037076754386, -0.0039686403509, -0.0044103070175, -0.0049456140351, + -0.0054208333333, -0.0058758771930, -0.0062506578947, -0.0064381578947, + -0.0062774122807, -0.0061771929825, -0.0067326754386, -0.0075155701754, + -0.0076092105263, -0.0070135964912, -0.0064984649123, -0.0062910087719, + -0.0063912280702, -0.0069333333333, -0.0077497807018, -0.0081379385965, + -0.0076629385965, -0.0065719298246, -0.0054342105263, -0.0045375000000, + -0.0040824561404, -0.0042364035088, -0.0048721491228, -0.0056951754386, + -0.0061236842105, -0.0055144736842, -0.0037142543860, -0.0014456140351, + +0.0000736842105, +0.0002208333333, -0.0005822368421, -0.0016061403509, + -0.0024493421053, -0.0027706140351, -0.0021015350877, -0.0003212719298, + +0.0018471491228, +0.0034399122807, +0.0036607456140, +0.0021684210526, + -0.0005219298246, -0.0033127192982, -0.0048385964912, -0.0045574561404, + -0.0037142543860, -0.0037811403509, -0.0044236842105, -0.0045910087719, + -0.0039752192982, -0.0027973684211, -0.0017333333333, -0.0015861842105, + -0.0023491228070, -0.0032324561404, -0.0038750000000, -0.0044438596491, + -0.0047984649123, -0.0046311403509, -0.0041092105263, -0.0036004385965, + -0.0031923245614, -0.0028778508772, -0.0024493421053, -0.0016730263158, + -0.0009100877193, -0.0005353070175, -0.0005287280702, -0.0009570175439, + -0.0015258771930, -0.0017668859649, -0.0015526315789, -0.0009771929825, + -0.0004951754386, -0.0007228070175, -0.0013250000000, -0.0017868421053, + -0.0022486842105, -0.0026032894737, -0.0024828947368, -0.0021015350877, + -0.0021015350877, -0.0026903508772, -0.0033929824561, -0.0035135964912, + -0.0029046052632, -0.0020879385965, -0.0015460526316, -0.0013653508772, + -0.0011578947368, -0.0006960526316, -0.0002609649123, -0.0001673245614, + -0.0001539473684, +0.0000469298246, +0.0002811403509, +0.0003679824561, + +0.0003144736842, +0.0003346491228, +0.0005890350877, +0.0004885964912, + -0.0003679824561, -0.0012649122807, -0.0013921052632, -0.0006758771930, + +0.0003010964912, +0.0009905701754, +0.0014589912281, +0.0016396929825, + +0.0012381578947, +0.0005287280702, +0.0002074561404, +0.0006625000000, + +0.0016798245614, +0.0028912280702, +0.0039083333333, +0.0044370614035, + +0.0043500000000, +0.0039686403509, +0.0038013157895, +0.0039017543860, + +0.0038348684211, +0.0034131578947, +0.0030585526316, +0.0030383771930, + +0.0032190789474, +0.0035135964912, +0.0038548245614, +0.0038414473684, + +0.0033997807018, +0.0029581140351, +0.0026300438596, +0.0023423245614, + +0.0018938596491, +0.0011175438596, +0.0003881578947, +0.0002475877193, + +0.0003480263158, +0.0002410087719, +0.0002008771930, +0.0005822368421, + +0.0011846491228, +0.0016932017544, +0.0020611842105, +0.0022151315789, + +0.0020879385965, +0.0019877192982, +0.0022620614035, +0.0028710526316, + +0.0034197368421, +0.0034131578947, +0.0030585526316, +0.0028912280702, + +0.0030986842105, +0.0036407894737, +0.0043434210526, +0.0048653508772, + +0.0049925438596, +0.0048587719298, +0.0047182017544, +0.0045173245614, + +0.0042429824561, +0.0042364035088, +0.0044304824561, +0.0043835526316, + +0.0039686403509, +0.0033864035088, +0.0027304824561, +0.0021282894737, + +0.0017868421053, +0.0018938596491, +0.0023557017544, +0.0029046052632, + +0.0032256578947, +0.0030986842105, +0.0027572368421, +0.0026971491228, + +0.0030449561404, +0.0035938596491, +0.0041493421053, +0.0045107456140, + +0.0044638157895, +0.0041760964912, +0.0040355263158, +0.0040423245614, + +0.0042096491228, +0.0045574561404, +0.0047449561404, +0.0044839912281, + +0.0040690789474, +0.0038750000000, +0.0042162280702, +0.0048320175439, + +0.0051732456140, +0.0050260964912, +0.0044839912281, +0.0035804824561, + +0.0025497807018, +0.0018872807018, +0.0017199561404, +0.0017267543860, + +0.0014923245614, +0.0012114035088, +0.0011912280702, +0.0013853070175, + +0.0015660087719, +0.0019140350877, +0.0023625000000, +0.0026502192982, + +0.0024962719298, +0.0016596491228, +0.0004350877193, -0.0005756578947, + -0.0008699561404, -0.0002074561404, +0.0010105263158, +0.0019407894737, + +0.0020679824561, +0.0014789473684, +0.0007896929825, +0.0004817982456, + +0.0006291666667, +0.0010173245614, +0.0013519736842, +0.0012381578947, + +0.0005756578947, -0.0001673245614, -0.0004817982456, -0.0003815789474, + -0.0001070175439, +0.0001940789474, +0.0002743421053, +0.0000603070175, + -0.0003346491228, -0.0006223684211, -0.0005756578947, -0.0001138157895, + +0.0004083333333, +0.0005287280702, +0.0000802631579, -0.0005486842105, + -0.0008967105263, -0.0007427631579, -0.0002074561404, +0.0004951754386, + +0.0012247807018, +0.0016798245614, +0.0015125000000, +0.0008967105263, + +0.0004282894737, +0.0003278508772, +0.0004618421053, +0.0008164473684, + +0.0012313596491, +0.0015460526316, +0.0018537280702, +0.0022552631579, + +0.0027171052632, +0.0029046052632, +0.0023625000000, +0.0012581140351, + +0.0002074561404, -0.0005486842105, -0.0010708333333, -0.0012515350877, + -0.0009638157895, -0.0002410087719, +0.0005287280702, +0.0009368421053, + +0.0008833333333, +0.0004618421053, -0.0002142543860, -0.0009168859649, + -0.0013986842105, -0.0017734649123, -0.0021214912281, -0.0022888157895, + -0.0020879385965, -0.0017333333333, -0.0014254385965, -0.0012916666667, + -0.0013050438596, -0.0013116228070, -0.0011510964912, -0.0007896929825, + -0.0003679824561, -0.0001807017544, -0.0004149122807, -0.0009570175439, + -0.0015728070175, -0.0019407894737, -0.0018070175439, -0.0012581140351, + -0.0006758771930, -0.0003010964912, -0.0002342105263, -0.0003144736842, + -0.0003546052632, -0.0004083333333, -0.0004817982456, -0.0002342105263, + +0.0003212719298, +0.0008565789474, +0.0009771929825, +0.0006223684211, + +0.0002543859649, +0.0003078947368, +0.0006559210526, +0.0009638157895, + +0.0010239035088, +0.0008298245614, +0.0004885964912, +0.0000936403509, + -0.0001539473684, -0.0002074561404, -0.0001004385965, +0.0000535087719, + +0.0001872807018, +0.0001539473684, -0.0000067982456, -0.0000802631579, + +0.0000936403509, +0.0003346491228, +0.0003144736842, -0.0001203947368, + -0.0008699561404, -0.0016396929825, -0.0021081140351, -0.0020478070175, + -0.0014923245614, -0.0006425438596, +0.0002208333333, +0.0008633771930, + +0.0010574561404, +0.0008500000000, +0.0005890350877, +0.0005756578947, + +0.0006960526316, +0.0007293859649, +0.0007561403509, +0.0009035087719, + +0.0010239035088, +0.0009302631579, +0.0006692982456, +0.0004484649123, + +0.0002276315789, -0.0000201754386, -0.0002276315789, -0.0003546052632, + -0.0004416666667, -0.0006223684211, -0.0009638157895, -0.0014120614035, + -0.0018537280702, -0.0021149122807, -0.0021883771930, -0.0021684210526, + -0.0021883771930, -0.0021482456140, -0.0019541666667, -0.0018203947368, + -0.0018002192982, -0.0015057017544, -0.0008232456140, -0.0001004385965, + +0.0003480263158, +0.0005486842105, +0.0004817982456, +0.0000870614035, + -0.0003679824561, -0.0004684210526, -0.0000335526316, +0.0007293859649, + +0.0014254385965, +0.0017936403509, +0.0016864035088, +0.0011778508772, + +0.0005219298246, +0.0000133771930, -0.0001940789474, -0.0001739035088, + -0.0000870614035, -0.0001673245614, -0.0005688596491, -0.0010440789474, + -0.0012447368421, -0.0011778508772, -0.0011377192982, -0.0012381578947, + -0.0013585526316, -0.0014857456140, -0.0015526315789, -0.0013184210526, + -0.0007896929825, -0.0002677631579, -0.0000668859649, -0.0003747807018, + -0.0010708333333, -0.0018671052632, -0.0024359649123, -0.0026769736842, + -0.0027105263158, -0.0026434210526, -0.0025230263158, -0.0023089912281, + -0.0019609649123, -0.0015526315789, -0.0011846491228, -0.0009905701754, + -0.0009771929825, -0.0010506578947, -0.0012381578947, -0.0014521929825, + -0.0015258771930, -0.0012848684211, -0.0007561403509, -0.0002877192982, + -0.0002208333333, -0.0006223684211, -0.0013317982456, -0.0020947368421, + -0.0025096491228, -0.0023625000000, -0.0019609649123, -0.0016061403509, + -0.0012447368421, -0.0009436403509, -0.0009436403509, -0.0011309210526, + -0.0012247807018, -0.0011644736842, -0.0011712719298, -0.0013116228070, + -0.0015326754386, -0.0017131578947, -0.0018269736842, -0.0018403508772, + -0.0015861842105, -0.0009638157895, -0.0001739035088, +0.0004083333333, + +0.0005756578947, +0.0003144736842, -0.0001271929825, -0.0005554824561, + -0.0007561403509, -0.0007228070175, -0.0006223684211, -0.0005688596491, + -0.0005085526316, -0.0005019736842, -0.0005688596491, -0.0006491228070, + -0.0007561403509, -0.0009302631579, -0.0011846491228, -0.0015190789474, + -0.0018471491228, -0.0020611842105, -0.0020611842105, -0.0018002192982, + -0.0013787280702, -0.0010372807018, -0.0008366228070, -0.0007964912281, + -0.0008967105263, -0.0009771929825, -0.0009436403509, -0.0009703947368, + -0.0010574561404, -0.0010372807018, -0.0008833333333, -0.0006960526316, + -0.0005353070175, -0.0004217105263, -0.0003949561404, -0.0004083333333, + -0.0004484649123, -0.0004817982456, -0.0002410087719, +0.0003412280702, + +0.0008699561404, +0.0009302631579, +0.0006157894737, +0.0003078947368, + +0.0000335526316, -0.0003679824561, -0.0006491228070, -0.0004951754386, + -0.0001471491228, +0.0001539473684, +0.0004350877193, +0.0007094298246, + +0.0009234649123, +0.0010774122807, +0.0011912280702, +0.0011309210526, + +0.0009168859649, +0.0005756578947, +0.0001203947368, -0.0002543859649, + -0.0003412280702, +0.0000201754386, +0.0007361842105, +0.0013116228070, + +0.0014120614035, +0.0011243421053, +0.0006892543860, +0.0003881578947, + +0.0003881578947, +0.0006223684211, +0.0008098684211, +0.0007697368421, + +0.0006491228070, +0.0005620614035, +0.0006024122807, +0.0008366228070, + +0.0011778508772, +0.0014655701754, +0.0016530701754, +0.0016664473684, + +0.0015190789474, +0.0012447368421, +0.0010173245614, +0.0008565789474, + +0.0006892543860, +0.0005019736842, +0.0002877192982, -0.0000201754386, + -0.0003346491228, -0.0003949561404, -0.0001070175439, +0.0003010964912, + +0.0005421052632, +0.0005756578947, +0.0004618421053, +0.0002945175439, + +0.0001807017544, +0.0001471491228, +0.0002609649123, +0.0006425438596, + +0.0011712719298, +0.0014120614035, +0.0011578947368, +0.0007228070175, + +0.0003881578947, +0.0003078947368, +0.0005890350877, +0.0010039473684, + +0.0012848684211, +0.0013585526316, +0.0013519736842, +0.0013519736842, + +0.0013184210526, +0.0011778508772, +0.0009638157895, +0.0007427631579, + +0.0005956140351, +0.0005085526316, +0.0004684210526, +0.0005287280702, + +0.0007293859649, +0.0010574561404, +0.0012515350877, +0.0010774122807, + +0.0007763157895, +0.0005822368421, +0.0004149122807, +0.0003881578947, + +0.0005956140351, +0.0008699561404, +0.0009638157895, +0.0007228070175, + +0.0003078947368, +0.0000401315789, -0.0001070175439, -0.0003480263158, + -0.0005756578947, -0.0005688596491, -0.0003078947368, +0.0000067982456, + +0.0001271929825, +0.0000067982456, -0.0001271929825, -0.0000335526316, + +0.0002142543860, +0.0003278508772, +0.0000267543860, -0.0006625000000, + -0.0014054824561, -0.0016864035088, -0.0014054824561, -0.0008565789474, + -0.0004282894737, -0.0004083333333, -0.0007495614035, -0.0010239035088, + -0.0008901315789, -0.0004416666667, +0.0000000000000, +0.0002074561404, + +0.0002342105263, +0.0002342105263, +0.0001739035088, +0.0000535087719, + -0.0000736842105, -0.0002543859649, -0.0004817982456, -0.0006223684211, + -0.0006692982456, -0.0006425438596, -0.0005486842105, -0.0004416666667, + -0.0004217105263, -0.0003480263158, -0.0002074561404, -0.0001337719298, + -0.0001337719298, -0.0003078947368, -0.0007697368421, -0.0011912280702, + -0.0012581140351, -0.0011243421053, -0.0008967105263, -0.0005756578947, + -0.0002609649123, +0.0000133771930, +0.0001337719298, +0.0000067982456, + -0.0000870614035, +0.0000736842105, +0.0004083333333, +0.0006960526316, + +0.0007495614035, +0.0006024122807, +0.0004484649123, +0.0004484649123, + +0.0006892543860, +0.0011041666667, +0.0015057017544, +0.0018471491228, + +0.0020478070175, +0.0018872807018, +0.0013519736842, +0.0008432017544, + +0.0006491228070, +0.0007427631579, +0.0008833333333, +0.0008232456140, + +0.0004817982456, -0.0001940789474, -0.0010239035088, -0.0014322368421, + -0.0010239035088, +0.0000201754386, +0.0012247807018, +0.0021081140351, + +0.0024160087719, +0.0020344298246, +0.0010173245614, -0.0003010964912, + -0.0014054824561, -0.0017467105263, -0.0013184210526, -0.0006157894737, + +0.0000000000000, +0.0004951754386, +0.0007763157895, +0.0007361842105, + +0.0004618421053, +0.0002276315789, +0.0001138157895, +0.0000000000000, + -0.0002475877193, -0.0006357456140, -0.0008432017544, -0.0005085526316, + +0.0001605263158, +0.0006089912281, +0.0006089912281, +0.0003949561404, + +0.0002342105263, +0.0000936403509, -0.0000870614035, -0.0001807017544, + -0.0000067982456, +0.0003010964912, +0.0006559210526, +0.0009771929825, + +0.0011578947368, +0.0011712719298, +0.0010842105263, +0.0008432017544, + +0.0005822368421, +0.0003346491228, +0.0000802631579, -0.0001337719298, + -0.0002677631579, -0.0003212719298, -0.0001807017544, +0.0000870614035, + +0.0003480263158, +0.0004684210526, +0.0005554824561, +0.0007228070175, + +0.0007361842105, +0.0005353070175, +0.0003881578947, +0.0002677631579, + -0.0001138157895, -0.0005620614035, -0.0006491228070, -0.0002743421053, + +0.0003480263158, +0.0008699561404, +0.0010239035088, +0.0007697368421, + +0.0001872807018, -0.0004149122807, -0.0007427631579, -0.0007561403509, + -0.0004416666667, -0.0000668859649, -0.0000469298246, -0.0003614035088, + -0.0006758771930, -0.0007896929825, -0.0005956140351, +0.0000000000000, + +0.0007361842105, +0.0012114035088, +0.0012714912281, +0.0008967105263, + +0.0001605263158, -0.0006491228070, -0.0011712719298, -0.0012247807018, + -0.0008232456140, -0.0002743421053, +0.0000335526316, +0.0001004385965, + +0.0001138157895, +0.0000603070175, -0.0001471491228, -0.0003346491228, + -0.0002208333333, +0.0000802631579, +0.0002410087719, +0.0000802631579, + -0.0002543859649, -0.0004149122807, -0.0001673245614, +0.0004015350877, + +0.0009502192982, +0.0011445175439, +0.0008967105263, +0.0002342105263, + -0.0005019736842, -0.0008901315789, -0.0008164473684, -0.0005153508772, + -0.0000936403509, +0.0002342105263, +0.0003212719298, +0.0001872807018, + +0.0000335526316, +0.0001337719298, +0.0005153508772, +0.0010173245614, + +0.0014655701754, +0.0015728070175, +0.0011175438596, +0.0002276315789, + -0.0008164473684, -0.0015660087719, -0.0016997807018, -0.0012714912281, + -0.0006357456140, +0.0000000000000, +0.0007361842105, +0.0015728070175, + +0.0021616228070, +0.0024160087719, +0.0022151315789, +0.0013184210526, + -0.0003010964912, -0.0022151315789, -0.0040289473684, -0.0054543859649, + -0.0061771929825, -0.0060164473684, -0.0050662280702, -0.0034532894737, + -0.0014655701754, +0.0004282894737, +0.0018739035088, +0.0025230263158, + +0.0023690789474, +0.0016932017544, +0.0008901315789, +0.0002743421053, + -0.0000535087719, -0.0001070175439, +0.0000401315789, +0.0002410087719, + +0.0003278508772, +0.0001138157895, -0.0005219298246, -0.0015125000000, + -0.0024962719298, -0.0030651315789, -0.0029780701754, -0.0020412280702, + -0.0004083333333, +0.0010975877193, +0.0015728070175, +0.0010774122807, + +0.0004885964912, +0.0003679824561, +0.0004550438596, +0.0004885964912, + +0.0006491228070, +0.0009638157895, +0.0011041666667, +0.0008232456140, + +0.0001940789474, -0.0004083333333, -0.0005956140351, -0.0003881578947, + -0.0001271929825, +0.0000201754386, +0.0000535087719, -0.0000936403509, + -0.0002074561404, +0.0001539473684, +0.0011846491228, +0.0024293859649, + +0.0029646929825, +0.0024627192982, +0.0013787280702, +0.0002142543860, + -0.0005756578947, -0.0007896929825, -0.0006559210526, -0.0004282894737, + -0.0003010964912, -0.0005219298246, -0.0009905701754, -0.0012247807018, + -0.0009638157895, -0.0002208333333, +0.0008767543860, +0.0020010964912, + +0.0027706140351, +0.0028844298246, +0.0022085526316, +0.0010372807018, + -0.0002543859649, -0.0013787280702, -0.0019743421053, -0.0019274122807, + -0.0014188596491, -0.0006559210526, +0.0000936403509, +0.0005890350877, + +0.0007361842105, +0.0006625000000, +0.0005085526316, +0.0002475877193, + -0.0002208333333, -0.0009771929825, -0.0018002192982, -0.0022686403509, + -0.0021883771930, -0.0015660087719, -0.0006357456140, +0.0001807017544, + +0.0007831140351, +0.0010708333333, +0.0008432017544, +0.0000936403509, + -0.0010440789474, -0.0021817982456, -0.0028107456140, -0.0027438596491, + -0.0020210526316, -0.0008500000000, +0.0002609649123, +0.0007160087719, + +0.0004083333333, -0.0002677631579, -0.0009570175439, -0.0014254385965, + -0.0015258771930, -0.0012782894737, -0.0007361842105, -0.0002074561404, + -0.0000267543860, -0.0001872807018, -0.0004618421053, -0.0006826754386, + -0.0005822368421, -0.0003144736842, -0.0000401315789, +0.0003881578947, + +0.0010307017544, +0.0016263157895, +0.0019877192982, +0.0020010964912, + +0.0016730263158, +0.0011846491228, +0.0006491228070, -0.0000668859649, + -0.0010173245614, -0.0019743421053, -0.0027105263158, -0.0030250000000, + -0.0026769736842, -0.0015190789474, +0.0000335526316, +0.0011980263158, + +0.0015927631579, +0.0015190789474, +0.0013116228070, +0.0010640350877, + +0.0009100877193, +0.0010574561404, +0.0014589912281, +0.0017734649123, + +0.0017535087719, +0.0013853070175, +0.0009638157895, +0.0006892543860, + +0.0005486842105, +0.0004618421053, +0.0002877192982, +0.0000401315789, + -0.0001070175439, -0.0001405701754, -0.0002008771930, -0.0002475877193, + -0.0001471491228, +0.0000133771930, +0.0000469298246, -0.0001138157895, + -0.0004752192982, -0.0007561403509, -0.0006157894737, -0.0000668859649, + +0.0005085526316, +0.0006826754386, +0.0002743421053, -0.0004282894737, + -0.0009703947368, -0.0010708333333, -0.0006157894737, +0.0001539473684, + +0.0007763157895, +0.0008432017544, +0.0004217105263, -0.0000335526316, + -0.0002410087719, -0.0003144736842, -0.0003212719298, -0.0001605263158, + +0.0000133771930, -0.0000335526316, -0.0002677631579, -0.0005890350877, + -0.0008901315789, -0.0010307017544, -0.0010173245614, -0.0009168859649, + -0.0008232456140, -0.0006024122807, -0.0000535087719, +0.0006692982456, + +0.0012179824561, +0.0014521929825, +0.0013921052632, +0.0011175438596, + +0.0006692982456, +0.0001807017544, -0.0001673245614, -0.0003346491228, + -0.0004083333333, -0.0004618421053, -0.0004885964912, -0.0004885964912, + -0.0005153508772, -0.0005085526316, -0.0003546052632, -0.0001539473684, + -0.0002208333333, -0.0005822368421, -0.0009502192982, -0.0010239035088, + -0.0007293859649, -0.0003679824561, -0.0002475877193, -0.0002410087719, + -0.0001539473684, +0.0000133771930, +0.0002543859649, +0.0005153508772, + +0.0007026315789, +0.0007629385965, +0.0006960526316, +0.0006024122807, + +0.0004217105263, -0.0000067982456, -0.0006024122807, -0.0009837719298, + -0.0008767543860, -0.0003546052632, +0.0003679824561, +0.0010907894737, + +0.0015190789474, +0.0014188596491, +0.0010372807018, +0.0006625000000, + +0.0003412280702, +0.0000802631579, -0.0001605263158, -0.0003815789474, + -0.0004282894737, -0.0001539473684, +0.0003747807018, +0.0010307017544, + +0.0016664473684, +0.0020478070175, +0.0020679824561, +0.0017600877193, + +0.0011578947368, +0.0003747807018, -0.0003144736842, -0.0007094298246, + -0.0007160087719, -0.0003815789474, +0.0000668859649, +0.0005219298246, + +0.0008366228070, +0.0008232456140, +0.0006024122807, +0.0004149122807, + +0.0003815789474, +0.0005620614035, +0.0008366228070, +0.0009703947368, + +0.0009168859649, +0.0007629385965, +0.0006491228070, +0.0007160087719, + +0.0009302631579, +0.0011175438596, +0.0011778508772, +0.0009837719298, + +0.0005287280702, +0.0000401315789, -0.0002342105263, -0.0001872807018, + +0.0001539473684, +0.0006692982456, +0.0010907894737, +0.0011578947368, + +0.0009168859649, +0.0005688596491, +0.0002074561404, -0.0000936403509, + -0.0002208333333, -0.0001138157895, +0.0001004385965, +0.0002342105263, + +0.0001673245614, -0.0000133771930, -0.0001739035088, -0.0001739035088, + -0.0000267543860, +0.0001070175439, +0.0001872807018, +0.0001605263158, + +0.0000201754386, -0.0001940789474, -0.0004752192982, -0.0006892543860, + -0.0006960526316, -0.0004752192982, -0.0001605263158, +0.0001070175439, + +0.0002543859649, +0.0001940789474, -0.0000668859649, -0.0004484649123, + -0.0007094298246, -0.0006425438596, -0.0004217105263, -0.0003078947368, + -0.0002276315789, -0.0000870614035, -0.0000133771930, -0.0001004385965, + -0.0003546052632, -0.0006089912281, -0.0006559210526, -0.0004282894737, + -0.0000067982456, +0.0003546052632, +0.0004484649123, +0.0003278508772, + +0.0001004385965, -0.0001739035088, -0.0003815789474, -0.0003679824561, + -0.0001271929825, +0.0002543859649, +0.0006692982456, +0.0010239035088, + +0.0011309210526, +0.0009302631579, +0.0006024122807, +0.0002811403509, + +0.0000000000000, -0.0002074561404, -0.0004015350877, -0.0005956140351, + -0.0007697368421, -0.0008767543860, -0.0007964912281, -0.0006024122807, + -0.0004752192982, -0.0005219298246, -0.0007561403509, -0.0011377192982, + -0.0015594298246, -0.0018471491228, -0.0018471491228, -0.0015660087719, + -0.0010574561404, -0.0004015350877, +0.0001138157895, +0.0002276315789, + -0.0000067982456, -0.0003412280702, -0.0005688596491, -0.0006357456140, + -0.0005956140351, -0.0005219298246, -0.0004684210526, -0.0004752192982, + -0.0004885964912, -0.0004416666667, -0.0004083333333, -0.0004618421053, + -0.0004752192982, -0.0004015350877, -0.0004149122807, -0.0005822368421, + -0.0007561403509, -0.0007629385965, -0.0006089912281, -0.0003614035088, + -0.0000936403509, -0.0000870614035, -0.0004083333333, -0.0007697368421, + -0.0009100877193, -0.0007561403509, -0.0004416666667, -0.0002877192982, + -0.0004149122807, -0.0006758771930, -0.0008967105263, -0.0010842105263, + -0.0011309210526, -0.0009234649123, -0.0004550438596, +0.0000736842105, + +0.0004618421053, +0.0005756578947, +0.0005421052632, +0.0004484649123, + +0.0003412280702, +0.0003546052632, +0.0005287280702, +0.0007896929825, + +0.0011309210526, +0.0014723684211, +0.0017065789474, +0.0017535087719, + +0.0015125000000, +0.0010173245614, +0.0005019736842, +0.0001539473684, + -0.0000067982456, -0.0000668859649, -0.0000603070175, +0.0000401315789, + +0.0002475877193, +0.0004752192982, +0.0006826754386, +0.0008633771930, + +0.0009168859649, +0.0007160087719, +0.0004015350877, +0.0002074561404, + +0.0002609649123, +0.0004416666667, +0.0005620614035, +0.0004885964912, + +0.0003346491228, +0.0002475877193, +0.0002276315789, +0.0001539473684, + +0.0000603070175, +0.0000936403509, +0.0003144736842, +0.0005756578947, + +0.0007697368421, +0.0008030701754, +0.0007094298246, +0.0006157894737, + +0.0006089912281, +0.0006157894737, +0.0005353070175, +0.0002945175439, + -0.0000736842105, -0.0004484649123, -0.0006425438596, -0.0005486842105, + -0.0002410087719, +0.0000870614035, +0.0003144736842, +0.0003412280702, + +0.0002410087719, +0.0001271929825, +0.0000736842105, +0.0001337719298, + +0.0002276315789, +0.0002945175439, +0.0004282894737, +0.0006291666667, + +0.0006960526316, +0.0005554824561, +0.0002142543860, -0.0002074561404, + -0.0005486842105, -0.0007160087719, -0.0007629385965, -0.0006357456140, + -0.0003278508772, +0.0000201754386, +0.0002743421053, +0.0004350877193, + +0.0004484649123, +0.0002410087719, -0.0001539473684, -0.0005287280702, + -0.0006625000000, -0.0005019736842, -0.0001271929825, +0.0003212719298, + +0.0005956140351, +0.0006157894737, +0.0005085526316, +0.0004817982456, + +0.0005486842105, +0.0006692982456, +0.0008565789474, +0.0010372807018, + +0.0011377192982, +0.0010907894737, +0.0008164473684, +0.0004282894737, + +0.0000870614035, -0.0002276315789, -0.0006024122807, -0.0009168859649, + -0.0010307017544, -0.0009368421053, -0.0007427631579, -0.0005486842105, + -0.0004282894737, -0.0003480263158, -0.0003480263158, -0.0004885964912, + -0.0006024122807, -0.0005287280702, -0.0004083333333, -0.0003546052632, + -0.0003480263158, -0.0003144736842, -0.0001405701754, +0.0000469298246, + +0.0000067982456, -0.0002342105263, -0.0004618421053, -0.0005421052632, + -0.0005019736842, -0.0004951754386, -0.0005890350877, -0.0006223684211, + -0.0005085526316, -0.0003346491228, -0.0001940789474, -0.0000469298246, + +0.0001539473684, +0.0002945175439, +0.0002208333333, +0.0000267543860, + -0.0001004385965, -0.0000401315789, +0.0001337719298, +0.0001807017544, + +0.0000267543860, -0.0001673245614, -0.0002677631579, -0.0002945175439, + -0.0002342105263, -0.0001807017544, -0.0002342105263, -0.0004350877193, + -0.0006157894737, -0.0006357456140, -0.0004484649123, -0.0003144736842, + -0.0003679824561, -0.0005153508772, -0.0005688596491, -0.0004618421053, + -0.0001872807018, +0.0000870614035, +0.0002609649123, +0.0003144736842, + +0.0003010964912, +0.0002475877193, +0.0002074561404, +0.0002074561404, + +0.0003212719298, +0.0005287280702, +0.0007763157895, +0.0009436403509, + +0.0009971491228, +0.0008901315789, +0.0005688596491, +0.0000736842105, + -0.0003747807018, -0.0006559210526, -0.0007896929825, -0.0007697368421, + -0.0006692982456, -0.0006223684211, -0.0006892543860, -0.0007697368421, + -0.0007228070175, -0.0005756578947, -0.0003949561404, -0.0003078947368, + -0.0004416666667, -0.0007228070175, -0.0008833333333, -0.0007561403509, + -0.0004618421053, -0.0001739035088, +0.0000469298246, +0.0002543859649, + +0.0003614035088, +0.0002609649123, -0.0000201754386, -0.0003010964912, + -0.0004484649123, -0.0004550438596, -0.0003949561404, -0.0003010964912, + -0.0002008771930, -0.0001203947368, -0.0001605263158, -0.0003412280702, + -0.0005890350877, -0.0006892543860, -0.0004885964912, -0.0000802631579, + +0.0003078947368, +0.0005421052632, +0.0005554824561, +0.0004015350877, + +0.0001203947368, -0.0001605263158, -0.0002609649123, -0.0000802631579, + +0.0003078947368, +0.0007561403509, +0.0010307017544, +0.0010640350877, + +0.0008833333333, +0.0006089912281, +0.0003815789474, +0.0002609649123, + +0.0001605263158, +0.0000469298246, -0.0000401315789, -0.0000267543860, + +0.0001271929825, +0.0004217105263, +0.0007896929825, +0.0011041666667, + +0.0012114035088, +0.0010975877193, +0.0008432017544, +0.0005085526316, + +0.0002142543860, +0.0001605263158, +0.0003815789474, +0.0007293859649, + +0.0009638157895, +0.0009905701754, +0.0008633771930, +0.0006223684211, + +0.0003546052632, +0.0001539473684, +0.0000335526316, -0.0000267543860, + -0.0000603070175, -0.0000870614035, -0.0000603070175, -0.0000201754386, + -0.0000133771930, -0.0000201754386, -0.0000603070175, -0.0001337719298, + -0.0001807017544, -0.0002074561404, -0.0002945175439, -0.0003881578947, + -0.0003815789474, -0.0001807017544, +0.0001539473684, +0.0004083333333, + +0.0004550438596, +0.0003881578947, +0.0002877192982, +0.0001605263158, + +0.0000603070175, -0.0000401315789, -0.0001605263158, -0.0002743421053, + -0.0004350877193, -0.0006223684211, -0.0007160087719, -0.0006291666667, + -0.0003881578947, -0.0001203947368, +0.0001070175439, +0.0003010964912, + +0.0004951754386, +0.0006425438596, +0.0006692982456, +0.0005085526316, + +0.0001872807018, -0.0001004385965, -0.0002008771930, -0.0001203947368, + +0.0000802631579, +0.0003546052632, +0.0006223684211, +0.0007831140351, + +0.0008098684211, +0.0007763157895, +0.0007293859649, +0.0006692982456, + +0.0005421052632, +0.0004083333333, +0.0003144736842, +0.0002008771930, + +0.0000469298246, -0.0001203947368, -0.0002877192982, -0.0003815789474, + -0.0003412280702, -0.0002543859649, -0.0002543859649, -0.0003480263158, + -0.0004817982456, -0.0006024122807, -0.0006559210526, -0.0006892543860, + -0.0007094298246, -0.0006223684211, -0.0004416666667, -0.0003212719298, + -0.0003546052632, -0.0004885964912, -0.0006491228070, -0.0007964912281, + -0.0008901315789, -0.0008432017544, -0.0005822368421, -0.0002074561404, + +0.0000469298246, +0.0000736842105, -0.0001070175439, -0.0003747807018, + -0.0006625000000, -0.0008298245614, -0.0006892543860, -0.0002945175439, + +0.0000802631579, +0.0002142543860, +0.0000535087719, -0.0001940789474, + -0.0003747807018, -0.0004550438596, -0.0004217105263, -0.0002342105263, + +0.0000401315789, +0.0003278508772, +0.0005019736842, +0.0004752192982, + +0.0003614035088, +0.0002877192982, +0.0002008771930, +0.0000469298246, + -0.0000802631579, -0.0001337719298, -0.0000936403509, -0.0000401315789, + +0.0000000000000, +0.0000267543860, +0.0000000000000, -0.0000936403509, + -0.0001539473684, -0.0001070175439, +0.0000668859649, +0.0003412280702, + +0.0005956140351, +0.0006758771930, +0.0005019736842, +0.0001203947368, + -0.0002677631579, -0.0005421052632, -0.0006826754386, -0.0007293859649, + -0.0006758771930, -0.0005956140351, -0.0005085526316, -0.0004083333333, + -0.0002677631579, -0.0001138157895, -0.0000401315789, -0.0000668859649, + -0.0001070175439, -0.0001203947368, -0.0000535087719, +0.0000401315789, + +0.0001004385965, +0.0000802631579, -0.0000603070175, -0.0002811403509, + -0.0003679824561, -0.0002677631579, -0.0001203947368, +0.0000000000000, + +0.0001070175439, +0.0002008771930, +0.0001807017544, +0.0000469298246, + -0.0000603070175, -0.0000870614035, -0.0001138157895, -0.0001405701754, + -0.0000802631579, +0.0000668859649, +0.0001739035088, +0.0001004385965, + -0.0000870614035, -0.0002475877193, -0.0003278508772, -0.0003010964912, + -0.0001605263158, +0.0000000000000, +0.0000267543860, -0.0000736842105, + -0.0002208333333, -0.0003412280702, -0.0003144736842, -0.0000870614035, + +0.0002008771930, +0.0003815789474, +0.0004752192982, +0.0005019736842, + +0.0005287280702, +0.0006291666667, +0.0006960526316, +0.0006223684211, + +0.0004618421053, +0.0002743421053, +0.0000201754386, -0.0002677631579, + -0.0005085526316, -0.0005153508772, -0.0003212719298, -0.0000936403509, + +0.0000201754386, +0.0000603070175, +0.0000870614035, +0.0001203947368, + +0.0001070175439, +0.0000802631579, +0.0001004385965, +0.0001605263158, + +0.0002276315789, +0.0002677631579, +0.0002074561404, +0.0001138157895, + +0.0000936403509, +0.0001872807018, +0.0002945175439, +0.0002609649123, + +0.0000401315789, -0.0002342105263, -0.0004752192982, -0.0005756578947, + -0.0004149122807, -0.0000335526316, +0.0003480263158, +0.0005688596491, + +0.0006223684211, +0.0006625000000, +0.0007361842105, +0.0007763157895, + +0.0006960526316, +0.0005019736842, +0.0002609649123, +0.0000335526316, + -0.0001405701754, -0.0002208333333, -0.0001203947368, +0.0001271929825, + +0.0002945175439, +0.0002142543860, +0.0000335526316, -0.0000802631579, + -0.0001004385965, +0.0000469298246, +0.0003010964912, +0.0005153508772, + +0.0006559210526, +0.0006559210526, +0.0004817982456, +0.0002008771930, + -0.0000603070175, -0.0002743421053, -0.0004350877193, -0.0005153508772, + -0.0004684210526, -0.0003747807018, -0.0002743421053, -0.0001337719298, + +0.0000335526316, +0.0001739035088, +0.0002945175439, +0.0003881578947, + +0.0004282894737, +0.0004282894737, +0.0004217105263, +0.0003278508772, + +0.0001070175439, -0.0000936403509, -0.0001471491228, -0.0000736842105, + +0.0000335526316, +0.0001539473684, +0.0003278508772, +0.0004684210526, + +0.0003815789474, +0.0000936403509, -0.0000802631579, +0.0000201754386, + +0.0002276315789, +0.0002811403509, +0.0002008771930, +0.0002208333333, + +0.0003546052632, +0.0004149122807, +0.0004149122807, +0.0004752192982, + +0.0005688596491, +0.0004752192982, +0.0000469298246, -0.0004550438596, + -0.0006223684211, -0.0004217105263, -0.0000936403509, +0.0001807017544, + +0.0003614035088, +0.0004015350877, +0.0003144736842, +0.0001203947368, + -0.0000870614035, -0.0002008771930, -0.0001271929825, +0.0001070175439, + +0.0004484649123, +0.0007561403509, +0.0007964912281, +0.0004684210526, + -0.0000469298246, -0.0004416666667, -0.0004951754386, -0.0002342105263, + +0.0001138157895, +0.0003815789474, +0.0003881578947, +0.0000870614035, + -0.0003679824561, -0.0007094298246, -0.0007427631579, -0.0004684210526, + -0.0000335526316, +0.0004015350877, +0.0007361842105, +0.0008967105263, + +0.0007361842105, +0.0002677631579, -0.0002410087719, -0.0004885964912, + -0.0005153508772, -0.0004684210526, -0.0003480263158, -0.0001471491228, + -0.0000201754386, -0.0000603070175, -0.0001337719298, -0.0000067982456, + +0.0003614035088, +0.0006625000000, +0.0006357456140, +0.0005085526316, + +0.0003881578947, +0.0001940789474, +0.0000133771930, -0.0000133771930, + +0.0000133771930, -0.0000067982456, -0.0002276315789, -0.0005219298246, + -0.0005421052632, -0.0001940789474, +0.0002743421053, +0.0006826754386, + +0.0011175438596, +0.0016864035088, +0.0020344298246, +0.0015793859649, + +0.0002475877193, -0.0013653508772, -0.0025631578947, -0.0028844298246, + -0.0022151315789, -0.0008030701754, +0.0008232456140, +0.0019809210526, + +0.0021015350877, +0.0011912280702, -0.0002008771930, -0.0013853070175, + -0.0018403508772, -0.0014991228070, -0.0005620614035, +0.0004817982456, + +0.0011445175439, +0.0012714912281, +0.0012046052632, +0.0011445175439, + +0.0009638157895, +0.0004817982456, -0.0002677631579, -0.0010506578947, + -0.0014723684211, -0.0013787280702, -0.0008500000000, -0.0000668859649, + +0.0007293859649, +0.0011712719298, +0.0010440789474, +0.0004752192982, + -0.0002677631579, -0.0009100877193, -0.0011644736842, -0.0009035087719, + -0.0002142543860, +0.0005085526316, +0.0008699561404, +0.0007361842105, + +0.0003010964912, -0.0001405701754, -0.0004350877193, -0.0004951754386, + -0.0003346491228, -0.0002208333333, -0.0004484649123, -0.0009168859649, + -0.0011980263158, -0.0010105263158, -0.0004752192982, +0.0001739035088, + +0.0008633771930, +0.0014589912281, +0.0016530701754, +0.0013250000000, + +0.0007094298246, +0.0000936403509, -0.0004217105263, -0.0006826754386, + -0.0005353070175, -0.0001337719298, +0.0001070175439, -0.0000267543860, + -0.0004752192982, -0.0009703947368, -0.0012782894737, -0.0012782894737, + -0.0009368421053, -0.0003078947368, +0.0003078947368, +0.0005890350877, + +0.0004015350877, -0.0001337719298, -0.0007427631579, -0.0010774122807, + -0.0009638157895, -0.0005085526316, -0.0000335526316, +0.0002008771930, + +0.0001337719298, -0.0000870614035, -0.0002811403509, -0.0003346491228, + -0.0002543859649, -0.0001673245614, -0.0002074561404, -0.0003212719298, + -0.0003881578947, -0.0002743421053, -0.0000201754386, +0.0001471491228, + +0.0001605263158, +0.0001337719298, +0.0001807017544, +0.0002410087719, + +0.0002208333333, +0.0000201754386, -0.0002945175439, -0.0004752192982, + -0.0003278508772, -0.0000067982456, +0.0002475877193, +0.0003815789474, + +0.0004350877193, +0.0003546052632, +0.0001271929825, -0.0001203947368, + -0.0002945175439, -0.0004684210526, -0.0007094298246, -0.0009368421053, + -0.0009570175439, -0.0007094298246, -0.0003546052632, -0.0000603070175, + +0.0000936403509, +0.0000267543860, -0.0003078947368, -0.0008098684211, + -0.0012381578947, -0.0013317982456, -0.0010506578947, -0.0006625000000, + -0.0004015350877, -0.0002543859649, -0.0001138157895, -0.0000067982456, + +0.0000267543860, +0.0000335526316, -0.0000469298246, -0.0002208333333, + -0.0003278508772, -0.0003278508772, -0.0003412280702, -0.0004550438596, + -0.0006024122807, -0.0005620614035, -0.0001872807018, +0.0003546052632, + +0.0007561403509, +0.0007629385965, +0.0003614035088, -0.0002475877193, + -0.0008098684211, -0.0011309210526, -0.0011578947368, -0.0008901315789, + -0.0003815789474, +0.0002276315789, +0.0007094298246, +0.0009035087719, + +0.0007896929825, +0.0004618421053, +0.0000870614035, -0.0001271929825, + -0.0001337719298, -0.0000469298246, -0.0000736842105, -0.0002811403509, + -0.0005153508772, -0.0005620614035, -0.0004015350877, -0.0001872807018, + -0.0000535087719, +0.0000067982456, +0.0000603070175, +0.0001138157895, + +0.0001539473684, +0.0002276315789, +0.0003546052632, +0.0005153508772, + +0.0006024122807, +0.0005688596491, +0.0004416666667, +0.0002543859649, + +0.0000603070175, +0.0000133771930, +0.0000936403509, +0.0001940789474, + +0.0001872807018, +0.0000067982456, -0.0002743421053, -0.0004951754386, + -0.0005353070175, -0.0004217105263, -0.0003144736842, -0.0002543859649, + -0.0001940789474, -0.0001605263158, -0.0002410087719, -0.0004618421053, + -0.0006425438596, -0.0005956140351, -0.0003881578947, -0.0001807017544, + -0.0000401315789, +0.0000736842105, +0.0002208333333, +0.0002677631579, + +0.0001673245614, +0.0000469298246, +0.0000335526316, +0.0001471491228, + +0.0003747807018, +0.0006357456140, +0.0009771929825, +0.0013451754386, + +0.0016129385965, +0.0016730263158, +0.0014589912281, +0.0009771929825, + +0.0004484649123, +0.0001271929825, +0.0000802631579, +0.0002543859649, + +0.0005756578947, +0.0009436403509, +0.0012046052632, +0.0012313596491, + +0.0010708333333, +0.0008500000000, +0.0005421052632, +0.0001471491228, + -0.0002008771930, -0.0003881578947, -0.0003815789474, -0.0002677631579, + -0.0001271929825, +0.0000401315789, +0.0002074561404, +0.0003546052632, + +0.0004951754386, +0.0006223684211, +0.0006960526316, +0.0007293859649, + +0.0006960526316, +0.0005822368421, +0.0003278508772, -0.0000668859649, + -0.0005287280702, -0.0009100877193, -0.0010574561404, -0.0009502192982, + -0.0007629385965, -0.0006758771930, -0.0007228070175, -0.0008164473684, + -0.0008901315789, -0.0008967105263, -0.0008098684211, -0.0006157894737, + -0.0003346491228, +0.0000000000000, +0.0003480263158, +0.0005756578947, + +0.0005554824561, +0.0003346491228, +0.0001004385965, +0.0000535087719, + +0.0001940789474, +0.0003212719298, +0.0002208333333, -0.0001004385965, + -0.0004951754386, -0.0007561403509, -0.0008298245614, -0.0007561403509, + -0.0005890350877, -0.0003747807018, -0.0001138157895, +0.0001337719298, + +0.0003278508772, +0.0004350877193, +0.0004618421053, +0.0004282894737, + +0.0003278508772, +0.0002074561404, +0.0001138157895, +0.0000267543860, + -0.0001004385965, -0.0003144736842, -0.0005153508772, -0.0006157894737, + -0.0006692982456, -0.0007160087719, -0.0007026315789, -0.0006089912281, + -0.0005019736842, -0.0004015350877, -0.0002543859649, -0.0000936403509, + +0.0000000000000, -0.0000603070175, -0.0002208333333, -0.0003747807018, + -0.0004752192982, -0.0004885964912, -0.0003679824561, -0.0001605263158, + +0.0000668859649, +0.0002543859649, +0.0004083333333, +0.0006089912281, + +0.0008500000000, +0.0010239035088, +0.0010440789474, +0.0009302631579, + +0.0008232456140, +0.0007896929825, +0.0007763157895, +0.0007495614035, + +0.0007561403509, +0.0007763157895, +0.0006892543860, +0.0004484649123, + +0.0001070175439, -0.0001070175439, -0.0000335526316, +0.0002609649123, + +0.0004885964912, +0.0004752192982, +0.0003078947368, +0.0000870614035, + -0.0001405701754, -0.0002811403509, -0.0003010964912, -0.0002743421053, + -0.0002945175439, -0.0003010964912, -0.0002543859649, -0.0002142543860, + -0.0002609649123, -0.0003212719298, -0.0002677631579, -0.0000668859649, + +0.0002142543860, +0.0004282894737, +0.0004752192982, +0.0003480263158, + +0.0001203947368, -0.0000535087719, -0.0001405701754, -0.0001539473684, + -0.0001004385965, +0.0000067982456, +0.0001004385965, +0.0001471491228, + +0.0001337719298, +0.0000335526316, -0.0001138157895, -0.0002276315789, + -0.0002743421053, -0.0002609649123, -0.0001138157895, +0.0002475877193, + +0.0007629385965, +0.0011846491228, +0.0013050438596, +0.0010842105263, + +0.0006758771930, +0.0003010964912, +0.0001739035088, +0.0003278508772, + +0.0005890350877, +0.0007896929825, +0.0008833333333, +0.0008565789474, + +0.0007361842105, +0.0005421052632, +0.0003212719298, +0.0001203947368, + +0.0000067982456, +0.0000469298246, +0.0002475877193, +0.0004885964912, + +0.0006357456140, +0.0005890350877, +0.0003679824561, +0.0000469298246, + -0.0002410087719, -0.0003747807018, -0.0002609649123, -0.0000067982456, + +0.0001807017544, +0.0001807017544, -0.0000401315789, -0.0004350877193, + -0.0008164473684, -0.0009703947368, -0.0008098684211, -0.0004550438596, + -0.0001337719298, -0.0000133771930, -0.0001471491228, -0.0004817982456, + -0.0008366228070, -0.0009905701754, -0.0008901315789, -0.0006291666667, + -0.0003614035088, -0.0002342105263, -0.0002342105263, -0.0002475877193, + -0.0002074561404, -0.0000668859649, +0.0001471491228, +0.0003480263158, + +0.0004817982456, +0.0005688596491, +0.0005421052632, +0.0003614035088, + +0.0001004385965, -0.0001004385965, -0.0001337719298, +0.0000267543860, + +0.0002543859649, +0.0004149122807, +0.0004752192982, +0.0004684210526, + +0.0004350877193, +0.0003881578947, +0.0002811403509, +0.0001539473684, + -0.0000067982456, -0.0001807017544, -0.0002743421053, -0.0001405701754, + +0.0002008771930, +0.0005956140351, +0.0008500000000, +0.0008901315789, + +0.0007293859649, +0.0004684210526, +0.0001872807018, -0.0000267543860, + -0.0001271929825, -0.0001271929825, -0.0001138157895, -0.0001605263158, + -0.0003212719298, -0.0005085526316, -0.0005353070175, -0.0003278508772, + +0.0000000000000, +0.0002677631579, +0.0003346491228, +0.0001739035088, + -0.0001807017544, -0.0005756578947, -0.0007964912281, -0.0007629385965, + -0.0005822368421, -0.0004217105263, -0.0003747807018, -0.0004149122807, + -0.0004350877193, -0.0003815789474, -0.0002475877193, -0.0000736842105, + +0.0000736842105, +0.0001070175439, -0.0000668859649, -0.0003949561404, + -0.0006758771930, -0.0007361842105, -0.0004951754386, -0.0000802631579, + +0.0003010964912, +0.0004282894737, +0.0002008771930, -0.0002609649123, + -0.0006425438596, -0.0007427631579, -0.0005890350877, -0.0002945175439, + +0.0000000000000, +0.0001872807018, +0.0001872807018, +0.0000936403509, + +0.0000335526316, +0.0000802631579, +0.0001471491228, +0.0001539473684, + +0.0001004385965, +0.0000535087719, +0.0001004385965, +0.0001940789474, + +0.0002410087719, +0.0002208333333, +0.0001739035088, +0.0000603070175, + -0.0001203947368, -0.0003078947368, -0.0004350877193, -0.0004350877193, + -0.0003144736842, -0.0001673245614, -0.0000603070175, -0.0000133771930, + -0.0000802631579, -0.0002410087719, -0.0004350877193, -0.0005219298246, + -0.0004484649123, -0.0002677631579, -0.0000870614035, +0.0000267543860, + +0.0000668859649, +0.0000535087719, +0.0000000000000, -0.0001539473684, + -0.0003815789474, -0.0005554824561, -0.0005688596491, -0.0004083333333, + -0.0001539473684, +0.0001203947368, +0.0003747807018, +0.0005554824561, + +0.0005756578947, +0.0004484649123, +0.0002475877193, +0.0000668859649, + -0.0000535087719, -0.0000870614035, -0.0000133771930, +0.0001004385965, + +0.0002008771930, +0.0001872807018, +0.0000668859649, -0.0000201754386, + +0.0000000000000, +0.0000802631579, +0.0001739035088, +0.0002811403509, + +0.0003747807018, +0.0003881578947, +0.0002811403509, +0.0001004385965, + -0.0000668859649, -0.0002142543860, -0.0002811403509, -0.0002609649123, + -0.0001940789474, -0.0001004385965, -0.0000401315789, -0.0001138157895, + -0.0003010964912, -0.0004618421053, -0.0005353070175, -0.0005421052632, + -0.0004817982456, -0.0003412280702, -0.0001004385965, +0.0001405701754, + +0.0003078947368, +0.0003881578947, +0.0003815789474, +0.0002877192982, + +0.0001004385965, -0.0000870614035, -0.0001673245614, -0.0001070175439, + -0.0000067982456, -0.0000067982456, -0.0001471491228, -0.0003546052632, + -0.0004885964912, -0.0005019736842, -0.0004083333333, -0.0002410087719, + -0.0000335526316, +0.0001271929825, +0.0002142543860, +0.0002276315789, + +0.0001539473684, -0.0000335526316, -0.0002945175439, -0.0004885964912, + -0.0005287280702, -0.0003278508772, +0.0000401315789, +0.0003815789474, + +0.0004684210526, +0.0002877192982, -0.0000201754386, -0.0002945175439, + -0.0004484649123, -0.0004350877193, -0.0003078947368, -0.0001405701754, + -0.0000469298246, -0.0000535087719, -0.0001337719298, -0.0002410087719, + -0.0002743421053, -0.0001605263158, +0.0000267543860, +0.0001940789474, + +0.0002609649123, +0.0001940789474, +0.0000469298246, -0.0000802631579, + -0.0001337719298, -0.0000870614035, +0.0000535087719, +0.0002475877193, + +0.0004217105263, +0.0005287280702, +0.0005219298246, +0.0003949561404, + +0.0002276315789, +0.0000936403509, +0.0000133771930, +0.0000000000000, + +0.0000267543860, +0.0000603070175, +0.0000668859649, +0.0000603070175, + +0.0000401315789, +0.0000067982456, +0.0000067982456, +0.0000736842105, + +0.0002410087719, +0.0004416666667, +0.0006425438596, +0.0007763157895, + +0.0008164473684, +0.0007495614035, +0.0005822368421, +0.0002945175439, + -0.0000201754386, -0.0002142543860, -0.0002074561404, -0.0001004385965, + -0.0000067982456, +0.0000469298246, +0.0000870614035, +0.0001203947368, + +0.0001271929825, +0.0001070175439, +0.0001203947368, +0.0001539473684, + +0.0001807017544, +0.0002142543860, +0.0002811403509, +0.0003212719298, + +0.0003346491228, +0.0003212719298, +0.0003010964912, +0.0002811403509, + +0.0002677631579, +0.0002276315789, +0.0001673245614, +0.0001337719298, + +0.0001405701754, +0.0001605263158, +0.0001673245614, +0.0001337719298, + +0.0000802631579, +0.0000201754386, -0.0000335526316, -0.0000668859649, + -0.0000736842105, -0.0000736842105, -0.0001070175439, -0.0001471491228, + -0.0001271929825, -0.0000603070175, -0.0000469298246, -0.0000736842105, + -0.0000535087719, +0.0000067982456, +0.0000335526316, -0.0000335526316, + -0.0001605263158, -0.0002811403509, -0.0003815789474, -0.0004149122807, + -0.0003412280702, -0.0001605263158, +0.0000603070175, +0.0002342105263, + +0.0003614035088, +0.0004282894737, +0.0003747807018, +0.0001739035088, + -0.0000736842105, -0.0002677631579, -0.0003412280702, -0.0003346491228, + -0.0002677631579, -0.0001539473684, +0.0000401315789, +0.0002945175439, + +0.0005019736842, +0.0005620614035, +0.0004618421053, +0.0002609649123, + +0.0000535087719, -0.0001070175439, -0.0001673245614, -0.0000936403509, + +0.0000936403509, +0.0003278508772, +0.0005153508772, +0.0006024122807, + +0.0005620614035, +0.0004217105263, +0.0002074561404, -0.0000067982456, + -0.0001070175439, -0.0000603070175, +0.0000133771930, +0.0000267543860, + -0.0000267543860, -0.0000936403509, -0.0001138157895, -0.0000870614035, + -0.0000802631579, -0.0001271929825, -0.0001739035088, -0.0001673245614, + -0.0001203947368, -0.0000936403509, -0.0001271929825, -0.0001807017544, + -0.0002008771930, -0.0001739035088, -0.0001405701754, -0.0001203947368, + -0.0000936403509, -0.0000133771930, +0.0001673245614, +0.0003546052632, + +0.0004217105263, +0.0003078947368, +0.0000736842105, -0.0001872807018, + -0.0003949561404, -0.0004817982456, -0.0004282894737, -0.0002475877193, + -0.0000067982456, +0.0002208333333, +0.0003949561404, +0.0005019736842, + +0.0004885964912, +0.0003747807018, +0.0002208333333, +0.0000603070175, + -0.0000802631579, -0.0002074561404, -0.0002743421053, -0.0002945175439, + -0.0003144736842, -0.0003278508772, -0.0003010964912, -0.0002008771930, + -0.0000936403509, -0.0000401315789, -0.0000335526316, -0.0000802631579, + -0.0001807017544, -0.0002877192982, -0.0003278508772, -0.0002475877193, + -0.0000133771930, +0.0003010964912, +0.0005822368421, +0.0007361842105, + +0.0006892543860, +0.0003881578947, -0.0000335526316, -0.0003614035088, + -0.0004484649123, -0.0003480263158, -0.0001605263158, +0.0000469298246, + +0.0002342105263, +0.0003144736842, +0.0002410087719, +0.0000469298246, + -0.0001739035088, -0.0003212719298, -0.0003679824561, -0.0003412280702, + -0.0002609649123, -0.0001405701754, -0.0000936403509, -0.0001605263158, + -0.0002543859649, -0.0002609649123, -0.0001138157895, +0.0001070175439, + +0.0003078947368, +0.0003747807018, +0.0002811403509, +0.0000668859649, + -0.0001807017544, -0.0004282894737, -0.0006425438596, -0.0007964912281, + -0.0007964912281, -0.0006157894737, -0.0003144736842, +0.0000000000000, + +0.0002677631579, +0.0004550438596, +0.0005153508772, +0.0004484649123, + +0.0003346491228, +0.0002276315789, +0.0001203947368, +0.0000000000000, + -0.0001605263158, -0.0002677631579, -0.0002811403509, -0.0002008771930, + -0.0000335526316, +0.0002008771930, +0.0004217105263, +0.0005688596491, + +0.0006089912281, +0.0005219298246, +0.0003412280702, +0.0001405701754, + +0.0000000000000, -0.0000201754386, +0.0000535087719, +0.0002276315789, + +0.0004282894737, +0.0005353070175, +0.0004885964912, +0.0002877192982, + +0.0000067982456, -0.0002342105263, -0.0003679824561, -0.0003815789474, + -0.0002811403509, -0.0001070175439, +0.0000469298246, +0.0000936403509, + +0.0000335526316, -0.0000535087719, -0.0001070175439, -0.0000802631579, + +0.0000133771930, +0.0000936403509, +0.0000870614035, -0.0000133771930, + -0.0001872807018, -0.0003949561404, -0.0005486842105, -0.0005688596491, + -0.0004885964912, -0.0004282894737, -0.0004282894737, -0.0004752192982, + -0.0005353070175, -0.0006024122807, -0.0006758771930, -0.0007026315789, + -0.0006291666667, -0.0004416666667, -0.0002208333333, -0.0000469298246, + +0.0000000000000, -0.0000535087719, -0.0001605263158, -0.0002342105263, + -0.0002475877193, -0.0001673245614, +0.0000000000000, +0.0001337719298, + +0.0001605263158, +0.0000736842105, -0.0000469298246, -0.0001739035088, + -0.0002677631579, -0.0002945175439, -0.0002945175439, -0.0003078947368, + -0.0003614035088, -0.0003614035088, -0.0002945175439, -0.0001539473684, + -0.0000335526316, +0.0000133771930, -0.0000133771930, -0.0000736842105, + -0.0001739035088, -0.0003010964912, -0.0004282894737, -0.0004684210526, + -0.0003881578947, -0.0002410087719, -0.0000401315789, +0.0001807017544, + +0.0003679824561, +0.0004149122807, +0.0003212719298, +0.0001605263158, + +0.0000000000000, -0.0001203947368, -0.0001337719298, -0.0000401315789, + +0.0000603070175, +0.0000870614035, +0.0000401315789, -0.0000267543860, + -0.0000870614035, -0.0001138157895, -0.0001004385965, -0.0000802631579, + -0.0000668859649, -0.0000401315789, +0.0000736842105, +0.0002543859649, + +0.0003949561404, +0.0003815789474, +0.0002142543860, +0.0000000000000, + -0.0001605263158, -0.0002543859649, -0.0002811403509, -0.0002342105263, + -0.0001271929825, -0.0000133771930, +0.0000469298246, +0.0000401315789, + -0.0000201754386, -0.0001337719298, -0.0002276315789, -0.0002475877193, + -0.0002008771930, -0.0000736842105, +0.0001405701754, +0.0003614035088, + +0.0004752192982, +0.0004951754386, +0.0004684210526, +0.0004350877193, + +0.0003679824561, +0.0002877192982, +0.0002543859649, +0.0002945175439, + +0.0003480263158, +0.0003278508772, +0.0002208333333, +0.0001203947368, + +0.0000802631579, +0.0000668859649, +0.0000401315789, +0.0000335526316, + +0.0000603070175, +0.0001004385965, +0.0001539473684, +0.0001807017544, + +0.0001673245614, +0.0001203947368, +0.0000870614035, +0.0001004385965, + +0.0001203947368, +0.0000870614035, -0.0000335526316, -0.0001872807018, + -0.0003144736842, -0.0004217105263, -0.0004550438596, -0.0003546052632, + -0.0001739035088, +0.0000000000000, +0.0001405701754, +0.0002342105263, + +0.0002475877193, +0.0002008771930, +0.0001605263158, +0.0001807017544, + +0.0002945175439, +0.0004484649123, +0.0005085526316, +0.0004149122807, + +0.0002276315789, +0.0000133771930, -0.0001471491228, -0.0002074561404, + -0.0001471491228, -0.0000401315789, +0.0001070175439, +0.0002743421053, + +0.0003747807018, +0.0003614035088, +0.0002677631579, +0.0001673245614, + +0.0001004385965, +0.0000802631579, +0.0000802631579, +0.0000802631579, + +0.0001070175439, +0.0001271929825, +0.0001203947368, +0.0001271929825, + +0.0001605263158, +0.0002276315789, +0.0002877192982, +0.0003144736842, + +0.0002743421053, +0.0001539473684, -0.0000267543860, -0.0001940789474, + -0.0002342105263, -0.0001539473684, -0.0000603070175, -0.0000267543860, + -0.0000335526316, -0.0000535087719, -0.0001004385965, -0.0001807017544, + -0.0002142543860, -0.0001138157895, +0.0000603070175, +0.0002410087719, + +0.0003949561404, +0.0004951754386, +0.0004817982456, +0.0003278508772, + +0.0000736842105, -0.0000936403509, -0.0001138157895, +0.0000000000000, + +0.0002008771930, +0.0004282894737, +0.0005287280702, +0.0004350877193, + +0.0002342105263, +0.0000133771930, -0.0001673245614, -0.0002877192982, + -0.0003412280702, -0.0003346491228, -0.0002743421053, -0.0001337719298, + +0.0000201754386, +0.0001203947368, +0.0001070175439, +0.0000000000000, + -0.0001271929825, -0.0001673245614, -0.0000603070175, +0.0001471491228, + +0.0003614035088, +0.0004282894737, +0.0002945175439, +0.0000535087719, + -0.0001337719298, -0.0001872807018, -0.0001070175439, -0.0000067982456, + +0.0000335526316, -0.0000201754386, -0.0001673245614, -0.0003346491228, + -0.0004149122807, -0.0003346491228, -0.0001271929825, +0.0000802631579, + +0.0002208333333, +0.0002475877193, +0.0001739035088, +0.0000401315789, + -0.0000936403509, -0.0001405701754, -0.0000401315789, +0.0001471491228, + +0.0003010964912, +0.0003144736842, +0.0001940789474, +0.0000469298246, + +0.0000000000000, +0.0000802631579, +0.0002342105263, +0.0002945175439, + +0.0002008771930, +0.0000401315789, -0.0001070175439, -0.0001872807018, + -0.0001271929825, +0.0000535087719, +0.0002609649123, +0.0003747807018, + +0.0003212719298, +0.0001337719298, -0.0001138157895, -0.0003346491228, + -0.0004282894737, -0.0003546052632, -0.0001337719298, +0.0001203947368, + +0.0003144736842, +0.0003881578947, +0.0003679824561, +0.0002811403509, + +0.0001337719298, -0.0000335526316, -0.0001673245614, -0.0002342105263, + -0.0002475877193, -0.0002543859649, -0.0002743421053, -0.0002945175439, + -0.0002342105263, -0.0000870614035, +0.0000469298246, +0.0000535087719, + -0.0000201754386, -0.0001004385965, -0.0001940789474, -0.0003010964912, + -0.0003546052632, -0.0003144736842, -0.0001940789474, -0.0000401315789, + +0.0001138157895, +0.0002342105263, +0.0002609649123, +0.0001872807018, + +0.0000668859649, -0.0000603070175, -0.0001471491228, -0.0002008771930, + -0.0002609649123, -0.0003346491228, -0.0003480263158, -0.0002410087719, + -0.0000736842105, +0.0000535087719, +0.0001070175439, +0.0001138157895, + +0.0000870614035, +0.0000133771930, -0.0001004385965, -0.0002276315789, + -0.0003078947368, -0.0003480263158, -0.0003614035088, -0.0002945175439, + -0.0001605263158, -0.0000133771930, +0.0000870614035, +0.0000870614035, + +0.0000133771930, -0.0000335526316, -0.0000335526316, +0.0000067982456, + +0.0001138157895, +0.0002811403509, +0.0004015350877, +0.0003815789474, + +0.0002008771930, -0.0000469298246, -0.0002410087719, -0.0002877192982, + -0.0001807017544, +0.0000133771930, +0.0002008771930, +0.0002945175439, + +0.0003144736842, +0.0002743421053, +0.0001605263158, +0.0000201754386, + -0.0000603070175, -0.0000802631579, -0.0000802631579, -0.0001070175439, + -0.0001271929825, -0.0001405701754, -0.0001807017544, -0.0002609649123, + -0.0003346491228, -0.0003480263158, -0.0002811403509, -0.0001872807018, + -0.0001203947368, -0.0000603070175, +0.0000000000000, +0.0000535087719, + +0.0000870614035, +0.0000936403509, +0.0001070175439, +0.0001271929825, + +0.0000870614035, -0.0000267543860, -0.0001539473684, -0.0002609649123, + -0.0003480263158, -0.0003881578947, -0.0003346491228, -0.0001739035088, + +0.0000133771930, +0.0001405701754, +0.0000936403509, -0.0000802631579, + -0.0003212719298, -0.0005019736842, -0.0005421052632, -0.0004416666667, + -0.0002543859649, -0.0000535087719, +0.0000936403509, +0.0001539473684, + +0.0001337719298, +0.0000870614035, +0.0000802631579, +0.0001004385965, + +0.0000936403509, +0.0000603070175, +0.0000201754386, +0.0000133771930, + +0.0000267543860, +0.0000067982456, -0.0000802631579, -0.0002276315789, + -0.0003412280702, -0.0003546052632, -0.0002609649123, -0.0001337719298, + +0.0000133771930, +0.0001940789474, +0.0003480263158, +0.0004350877193, + +0.0004282894737, +0.0003412280702, +0.0001807017544, +0.0000335526316, + -0.0000067982456, +0.0000802631579, +0.0002811403509, +0.0004951754386, + +0.0006089912281, +0.0006223684211, +0.0005554824561, +0.0004083333333, + +0.0001807017544, -0.0000736842105, -0.0002811403509, -0.0003881578947, + -0.0003815789474, -0.0002811403509, -0.0001004385965, +0.0000802631579, + +0.0001940789474, +0.0001605263158, +0.0000000000000, -0.0001673245614, + -0.0002410087719, -0.0002074561404, -0.0001203947368, -0.0000267543860, + +0.0000668859649, +0.0001405701754, +0.0001673245614, +0.0001673245614, + +0.0001605263158, +0.0001138157895, +0.0000401315789, -0.0000067982456, + -0.0000201754386, -0.0000469298246, -0.0001070175439, -0.0001739035088, + -0.0002142543860, -0.0002074561404, -0.0001739035088, -0.0001673245614, + -0.0001940789474, -0.0002475877193, -0.0003212719298, -0.0003614035088, + -0.0002877192982, -0.0000802631579, +0.0001739035088, +0.0003881578947, + +0.0004550438596, +0.0003815789474, +0.0002543859649, +0.0001539473684, + +0.0001203947368, +0.0001739035088, +0.0003010964912, +0.0004282894737, + +0.0005019736842, +0.0005019736842, +0.0004350877193, +0.0002945175439, + +0.0001271929825, +0.0000000000000, -0.0000335526316, -0.0000067982456, + +0.0000133771930, +0.0000133771930, +0.0000201754386, +0.0000133771930, + +0.0000000000000, +0.0000133771930, +0.0000870614035, +0.0001673245614, + +0.0002142543860, +0.0001940789474, +0.0001471491228, +0.0001271929825, + +0.0001605263158, +0.0002475877193, +0.0003412280702, +0.0004015350877, + +0.0003881578947, +0.0003144736842, +0.0002342105263, +0.0001605263158, + +0.0000736842105, -0.0000335526316, -0.0001271929825, -0.0001673245614, + -0.0001337719298, -0.0000603070175, -0.0000067982456, -0.0000067982456, + -0.0000469298246, -0.0001070175439, -0.0001673245614, -0.0001807017544, + -0.0001271929825, -0.0000335526316, +0.0000535087719, +0.0001405701754, + +0.0001940789474, +0.0002142543860, +0.0002074561404, +0.0001605263158, + +0.0000936403509, +0.0000067982456, -0.0000936403509, -0.0001539473684, + -0.0001807017544, -0.0001872807018, -0.0001673245614, -0.0001070175439, + -0.0000133771930, +0.0000870614035, +0.0001605263158, +0.0001940789474, + +0.0001673245614, +0.0000603070175, -0.0001004385965, -0.0002342105263, + -0.0002342105263, -0.0001070175439, +0.0000603070175, +0.0001807017544, + +0.0002142543860, +0.0001807017544, +0.0001138157895, +0.0000870614035, + +0.0001070175439, +0.0001605263158, +0.0002008771930, +0.0001739035088, + +0.0000802631579, -0.0000401315789, -0.0001673245614, -0.0002475877193, + -0.0002609649123, -0.0002142543860, -0.0001337719298, -0.0000736842105, + -0.0000535087719, -0.0000603070175, -0.0000802631579, -0.0001004385965, + -0.0001004385965, -0.0000603070175, +0.0000067982456, +0.0000870614035, + +0.0001070175439, +0.0000668859649, -0.0000067982456, -0.0001004385965, + -0.0001739035088, -0.0001872807018, -0.0001739035088, -0.0001539473684, + -0.0001138157895, -0.0000267543860, +0.0001070175439, +0.0002475877193, + +0.0003412280702, +0.0003546052632, +0.0002677631579, +0.0001337719298, + +0.0000201754386, -0.0000335526316, -0.0000201754386, +0.0000133771930, + +0.0000133771930, -0.0000535087719, -0.0001605263158, -0.0002475877193, + -0.0002877192982, -0.0002945175439, -0.0002543859649, -0.0001337719298, + +0.0000133771930, +0.0001471491228, +0.0001940789474, +0.0001673245614, + +0.0000936403509, +0.0000000000000, -0.0001070175439, -0.0001940789474, + -0.0001940789474, -0.0001004385965, -0.0000067982456, +0.0000000000000, + -0.0000736842105, -0.0001739035088, -0.0002543859649, -0.0003010964912, + -0.0003078947368, -0.0002276315789, -0.0001203947368, -0.0000603070175, + -0.0000535087719, -0.0000401315789, +0.0000000000000, +0.0000401315789, + +0.0000668859649, +0.0000802631579, +0.0000936403509, +0.0001203947368, + +0.0001739035088, +0.0002609649123, +0.0003412280702, +0.0003546052632, + +0.0002877192982, +0.0001673245614, +0.0000067982456, -0.0001138157895, + -0.0001271929825, -0.0000267543860, +0.0001004385965, +0.0002008771930, + +0.0002475877193, +0.0002342105263, +0.0001739035088, +0.0000936403509, + +0.0000535087719, +0.0000668859649, +0.0000936403509, +0.0000870614035, + +0.0000401315789, +0.0000000000000, -0.0000067982456, +0.0000067982456, + +0.0000000000000, -0.0000267543860, -0.0000469298246, -0.0000335526316, + -0.0000201754386, -0.0000267543860, -0.0000535087719, -0.0000870614035, + -0.0000936403509, -0.0000870614035, -0.0000603070175, +0.0000067982456, + +0.0000936403509, +0.0001337719298, +0.0000802631579, -0.0000201754386, + -0.0001203947368, -0.0002475877193, -0.0003881578947, -0.0004752192982, + -0.0004416666667, -0.0003212719298, -0.0001940789474, -0.0000936403509, + -0.0000469298246, -0.0000535087719, -0.0001070175439, -0.0001605263158, + -0.0001872807018, -0.0002008771930, -0.0001673245614, -0.0000936403509, + +0.0000000000000, +0.0000603070175, +0.0000802631579, +0.0000535087719, + -0.0000133771930, -0.0001337719298, -0.0002410087719, -0.0002677631579, + -0.0002543859649, -0.0002410087719, -0.0002074561404, -0.0001271929825, + -0.0000133771930, +0.0001004385965, +0.0001739035088, +0.0001807017544, + +0.0001203947368, +0.0000201754386, -0.0000736842105, -0.0001138157895, + -0.0000870614035, -0.0000201754386, +0.0000201754386, +0.0000067982456, + -0.0000668859649, -0.0001673245614, -0.0002342105263, -0.0002543859649, + -0.0002342105263, -0.0001739035088, -0.0001203947368, -0.0000870614035, + -0.0001203947368, -0.0001872807018, -0.0002276315789, -0.0001807017544, + -0.0000936403509, -0.0000201754386, -0.0000067982456, -0.0000335526316, + -0.0000335526316, -0.0000067982456, +0.0000335526316, +0.0001004385965, + +0.0001872807018, +0.0002543859649, +0.0002811403509, +0.0002410087719, + +0.0001405701754, +0.0000201754386, -0.0000736842105, -0.0000870614035, + +0.0000000000000, +0.0001138157895, +0.0001539473684, +0.0000335526316, + -0.0001739035088, -0.0003815789474, -0.0005219298246, -0.0005620614035, + -0.0004817982456, -0.0003078947368, -0.0001405701754, -0.0000469298246, + -0.0000603070175, -0.0001337719298, -0.0001940789474, -0.0001739035088, + -0.0000668859649, +0.0000936403509, +0.0002276315789, +0.0002543859649, + +0.0001539473684, +0.0000267543860, -0.0000335526316, -0.0000401315789, + -0.0000335526316, -0.0000469298246, -0.0000469298246, -0.0000067982456, + +0.0000335526316, +0.0000668859649, +0.0000936403509, +0.0001271929825, + +0.0001605263158, +0.0001739035088, +0.0001739035088, +0.0001471491228, + +0.0000870614035, +0.0000267543860, +0.0000133771930, +0.0000603070175, + +0.0001539473684, +0.0002811403509, +0.0003949561404, +0.0004416666667, + +0.0004015350877, +0.0002743421053, +0.0001203947368, +0.0000000000000, + -0.0000267543860, +0.0000469298246, +0.0001605263158, +0.0002410087719, + +0.0002743421053, +0.0002743421053, +0.0002208333333, +0.0001138157895, + +0.0000133771930, -0.0000469298246, -0.0000603070175, -0.0000401315789, + +0.0000000000000, +0.0000267543860, +0.0000201754386, -0.0000201754386, + -0.0000936403509, -0.0001203947368, -0.0001138157895, -0.0001070175439, + -0.0001337719298, -0.0001872807018, -0.0002342105263, -0.0002410087719, + -0.0001940789474, -0.0001203947368, -0.0000469298246, +0.0000000000000, + +0.0000133771930, +0.0000067982456, -0.0000267543860, -0.0000736842105, + -0.0001070175439, -0.0001138157895, -0.0001004385965, -0.0000736842105, + -0.0000133771930, +0.0000870614035, +0.0002142543860, +0.0002877192982, + +0.0002609649123, +0.0001807017544, +0.0001070175439, +0.0000802631579, + +0.0001271929825, +0.0002410087719, +0.0003480263158, +0.0003614035088, + +0.0002475877193, +0.0000802631579, -0.0000802631579, -0.0002142543860, + -0.0002877192982, -0.0002543859649, -0.0001070175439, +0.0000870614035, + +0.0002543859649, +0.0003278508772, +0.0002743421053, +0.0001405701754, + +0.0000133771930, -0.0000469298246, -0.0000401315789, -0.0000201754386, + -0.0000469298246, -0.0001271929825, -0.0002074561404, -0.0002475877193, + -0.0002074561404, -0.0000870614035, +0.0000535087719, +0.0001539473684, + +0.0001673245614, +0.0001271929825, +0.0000668859649, +0.0000067982456, + -0.0000067982456, +0.0000335526316, +0.0001271929825, +0.0001673245614, + +0.0001070175439, -0.0000267543860, -0.0001605263158, -0.0002208333333, + -0.0001940789474, -0.0001203947368, -0.0000401315789, +0.0000201754386, + +0.0000469298246, +0.0000267543860, -0.0000201754386, -0.0000603070175, + -0.0000335526316, +0.0000535087719, +0.0001605263158, +0.0002410087719, + +0.0002342105263, +0.0001471491228, +0.0000267543860, -0.0000736842105, + -0.0001539473684, -0.0002008771930, -0.0002008771930, -0.0001673245614, + -0.0001070175439, -0.0000401315789, +0.0000335526316, +0.0001471491228, + +0.0002543859649, +0.0003078947368, +0.0002945175439, +0.0002208333333, + +0.0000936403509, -0.0000133771930, -0.0000736842105, -0.0000736842105, + -0.0000267543860, +0.0000335526316, +0.0001138157895, +0.0001673245614, + +0.0001739035088, +0.0001471491228, +0.0001070175439, +0.0000603070175, + +0.0000267543860, +0.0000267543860, +0.0000603070175, +0.0001337719298, + +0.0002008771930, +0.0002142543860, +0.0001271929825, -0.0000335526316, + -0.0001807017544, -0.0002342105263, -0.0001539473684, +0.0000000000000, + +0.0001337719298, +0.0001739035088, +0.0001138157895, +0.0000000000000, + -0.0000936403509, -0.0001405701754, -0.0001337719298, -0.0000936403509, + -0.0000401315789, -0.0000133771930, -0.0000067982456, +0.0000000000000, + +0.0000401315789, +0.0000870614035, +0.0001070175439, +0.0000802631579, + +0.0000335526316, -0.0000267543860, -0.0000736842105, -0.0000802631579, + -0.0000335526316, -0.0000067982456, -0.0000267543860, -0.0000668859649, + -0.0000802631579, -0.0000469298246, +0.0000133771930, +0.0000870614035, + +0.0001539473684, +0.0002008771930, +0.0002410087719, +0.0002276315789, + +0.0001605263158, +0.0000535087719, -0.0000535087719, -0.0001539473684, + -0.0002008771930, -0.0001807017544, -0.0001070175439, -0.0000267543860, + +0.0000000000000, -0.0000201754386, -0.0000936403509, -0.0001807017544, + -0.0002609649123, -0.0003412280702, -0.0003815789474, -0.0003346491228, + -0.0002208333333, -0.0001138157895, -0.0000535087719, -0.0000535087719, + -0.0000936403509, -0.0001405701754, -0.0001271929825, -0.0000603070175, + +0.0000000000000, +0.0000201754386, +0.0000133771930, +0.0000469298246, + +0.0001271929825, +0.0002208333333, +0.0002743421053, +0.0002543859649, + +0.0001940789474, +0.0001138157895, +0.0000335526316, -0.0000133771930, + -0.0000133771930, +0.0000267543860, +0.0000802631579, +0.0001070175439, + +0.0001004385965, +0.0001004385965, +0.0001138157895, +0.0001271929825, + +0.0001004385965, +0.0000401315789, -0.0000267543860, -0.0000802631579, + -0.0000936403509, -0.0000469298246, +0.0000469298246, +0.0001471491228, + +0.0002208333333, +0.0002142543860, +0.0001004385965, -0.0000535087719, + -0.0001940789474, -0.0002677631579, -0.0002410087719, -0.0001271929825, + +0.0000335526316, +0.0001940789474, +0.0002543859649, +0.0001872807018, + +0.0000469298246, -0.0001004385965, -0.0002074561404, -0.0002475877193, + -0.0002410087719, -0.0002208333333, -0.0001739035088, -0.0000870614035, + +0.0000133771930, +0.0001138157895, +0.0001539473684, +0.0001203947368, + +0.0000603070175, +0.0000067982456, -0.0000133771930, +0.0000067982456, + +0.0000335526316, +0.0000469298246, +0.0000469298246, +0.0000603070175, + +0.0000736842105, +0.0000469298246, -0.0000267543860, -0.0001203947368, + -0.0001807017544, -0.0001739035088, -0.0001070175439, +0.0000000000000, + +0.0001203947368, +0.0001940789474, +0.0002142543860, +0.0001739035088, + +0.0000870614035, +0.0000000000000, -0.0000603070175, -0.0000668859649, + -0.0000267543860, +0.0000201754386, +0.0000535087719, +0.0000535087719, + +0.0000668859649, +0.0001138157895, +0.0001539473684, +0.0001673245614, + +0.0001405701754, +0.0001203947368, +0.0001203947368, +0.0001405701754, + +0.0001739035088, +0.0002074561404, +0.0002276315789, +0.0002142543860, + +0.0001807017544, +0.0001605263158, +0.0001471491228, +0.0001004385965, + +0.0000335526316, -0.0000267543860, -0.0000802631579, -0.0001004385965, + -0.0000870614035, -0.0000267543860, +0.0000335526316, +0.0000535087719, + +0.0000201754386, -0.0000535087719, -0.0001673245614, -0.0002609649123, + -0.0003010964912, -0.0002877192982, -0.0002276315789, -0.0001539473684, + -0.0000736842105, -0.0000067982456, +0.0000469298246, +0.0000870614035, + +0.0000802631579, +0.0000201754386, -0.0000603070175, -0.0001539473684, + -0.0002142543860, -0.0002208333333, -0.0001471491228, -0.0000267543860, + +0.0000870614035, +0.0001337719298, +0.0000870614035, -0.0000201754386, + -0.0001337719298, -0.0002074561404, -0.0001940789474, -0.0000870614035, + +0.0000736842105, +0.0001940789474, +0.0002142543860, +0.0001405701754, + +0.0000469298246, -0.0000067982456, +0.0000000000000, +0.0000335526316, + +0.0000936403509, +0.0001739035088, +0.0002276315789, +0.0002342105263, + +0.0001872807018, +0.0001405701754, +0.0000936403509, +0.0000469298246, + +0.0000133771930, +0.0000067982456, +0.0000401315789, +0.0000736842105, + +0.0000802631579, +0.0000870614035, +0.0000936403509, +0.0001337719298, + +0.0001872807018, +0.0002475877193, +0.0002811403509, +0.0002543859649, + +0.0001739035088, +0.0000535087719, -0.0000401315789, -0.0000736842105, + -0.0000267543860, +0.0000603070175, +0.0001471491228, +0.0001673245614, + +0.0001203947368, +0.0000469298246, -0.0000133771930, -0.0000535087719, + -0.0000603070175, -0.0000603070175, -0.0000736842105, -0.0001070175439, + -0.0001138157895, -0.0000603070175, +0.0000267543860, +0.0001138157895, + +0.0001471491228, +0.0001203947368, +0.0000335526316, -0.0000668859649, + -0.0001605263158, -0.0002342105263, -0.0002475877193, -0.0001739035088, + -0.0000267543860, +0.0001070175439, +0.0001739035088, +0.0001539473684, + +0.0000469298246, -0.0000668859649, -0.0001605263158, -0.0002008771930, + -0.0001872807018, -0.0001203947368, -0.0000469298246, +0.0000000000000, + +0.0000000000000, -0.0000201754386, -0.0000401315789, -0.0000535087719, + -0.0000802631579, -0.0001337719298, -0.0001872807018, -0.0002342105263, + -0.0002677631579, -0.0002543859649, -0.0002008771930, -0.0001138157895, + -0.0000201754386, +0.0000267543860, +0.0000535087719, +0.0000535087719, + +0.0000469298246, +0.0000603070175, +0.0000870614035, +0.0001271929825, + +0.0001070175439, +0.0000267543860, -0.0000469298246, -0.0000603070175, + +0.0000133771930, +0.0001070175439, +0.0001539473684, +0.0001138157895, + +0.0000133771930, -0.0000802631579, -0.0001337719298, -0.0001138157895, + -0.0000401315789, +0.0000401315789, +0.0000936403509, +0.0001070175439, + +0.0000936403509, +0.0000603070175, +0.0000401315789, +0.0000401315789, + +0.0000335526316, +0.0000067982456, -0.0000469298246, -0.0001271929825, + -0.0002008771930, -0.0002475877193, -0.0002543859649, -0.0002342105263, + -0.0001940789474, -0.0001405701754, -0.0001070175439, -0.0001004385965, + -0.0000936403509, -0.0000603070175, -0.0000267543860, -0.0000067982456, + +0.0000000000000, +0.0000000000000, +0.0000000000000, -0.0000133771930, + -0.0000201754386, +0.0000000000000, +0.0000469298246, +0.0000802631579, + +0.0000668859649, +0.0000401315789, +0.0000267543860, +0.0000668859649, + +0.0001337719298, +0.0002074561404, +0.0002342105263, +0.0001872807018, + +0.0000736842105, -0.0000267543860, -0.0000870614035, -0.0000603070175, + +0.0000469298246, +0.0001739035088, +0.0002475877193, +0.0002074561404, + +0.0000603070175, -0.0001405701754, -0.0003278508772, -0.0004282894737, + -0.0003949561404, -0.0002410087719, -0.0000335526316, +0.0001337719298, + +0.0002276315789, +0.0002543859649, +0.0002475877193, +0.0002208333333, + +0.0002008771930, +0.0001807017544, +0.0001673245614, +0.0001539473684, + +0.0001203947368, +0.0000603070175, -0.0000335526316, -0.0001337719298, + -0.0002008771930, -0.0002208333333, -0.0002008771930, -0.0001539473684, + -0.0001004385965, -0.0000401315789, +0.0000000000000, +0.0000133771930, + +0.0000000000000, -0.0000469298246, -0.0001004385965, -0.0001271929825, + -0.0001070175439, -0.0000535087719, -0.0000267543860, -0.0000668859649, + -0.0001539473684, -0.0002342105263, -0.0002677631579, -0.0002276315789, + -0.0001203947368, -0.0000067982456, +0.0000535087719, +0.0000335526316, + -0.0000335526316, -0.0000802631579, -0.0000469298246, +0.0000603070175, + +0.0001872807018, +0.0002410087719, +0.0001940789474, +0.0000603070175, + -0.0001004385965, -0.0002410087719, -0.0003212719298, -0.0003346491228, + -0.0003010964912, -0.0002475877193, -0.0001872807018, -0.0001271929825, + -0.0000736842105, -0.0000067982456, +0.0000535087719, +0.0001271929825, + +0.0001872807018, +0.0002008771930, +0.0001872807018, +0.0001337719298, + +0.0000267543860, -0.0000936403509, -0.0001940789474, -0.0002410087719, + -0.0002276315789, -0.0001807017544, -0.0001405701754, -0.0001070175439, + -0.0000736842105, -0.0000335526316, +0.0000000000000, +0.0000668859649, + +0.0001405701754, +0.0002008771930, +0.0002074561404, +0.0001605263158, + +0.0000802631579, +0.0000133771930, -0.0000201754386, -0.0000335526316, + -0.0000201754386, +0.0000000000000, +0.0000067982456, +0.0000000000000, + -0.0000401315789, -0.0000603070175, -0.0000335526316, +0.0000267543860, + +0.0000870614035, +0.0000870614035, +0.0000335526316, -0.0000603070175, + -0.0001605263158, -0.0002074561404, -0.0001539473684, -0.0000067982456, + +0.0001471491228, +0.0002410087719, +0.0002410087719, +0.0001539473684, + +0.0000267543860, -0.0001004385965, -0.0001872807018, -0.0002074561404, + -0.0001539473684, -0.0000535087719, +0.0000201754386, +0.0000603070175, + +0.0000535087719, +0.0000401315789, +0.0000401315789, +0.0000335526316, + +0.0000401315789, +0.0000469298246, +0.0000802631579, +0.0001070175439, + +0.0001070175439, +0.0000736842105, +0.0000267543860, -0.0000067982456, + -0.0000401315789, -0.0000668859649, -0.0000736842105, -0.0000469298246, + +0.0000000000000, +0.0000870614035, +0.0001673245614, +0.0002142543860, + +0.0002142543860, +0.0001673245614, +0.0001271929825, +0.0001070175439, + +0.0001138157895, +0.0001271929825, +0.0001203947368, +0.0000668859649, + +0.0000000000000, -0.0000736842105, -0.0001271929825, -0.0001004385965, + -0.0000335526316, +0.0000335526316, +0.0000668859649, +0.0000668859649, + +0.0000401315789, +0.0000267543860, +0.0000201754386, +0.0000267543860, + +0.0000335526316, +0.0000335526316, +0.0000535087719, +0.0001070175439, + +0.0001739035088, +0.0002208333333, +0.0002276315789, +0.0001940789474, + +0.0001138157895, +0.0000133771930, -0.0000335526316, -0.0000133771930, + +0.0000469298246, +0.0001138157895, +0.0001739035088, +0.0002142543860, + +0.0002074561404, +0.0001471491228, +0.0000469298246, -0.0000401315789, + -0.0001203947368, -0.0001872807018, -0.0002342105263, -0.0002410087719, + -0.0002142543860, -0.0001807017544, -0.0001337719298, -0.0000603070175, + +0.0000067982456, +0.0000535087719, +0.0000401315789, -0.0000133771930, + -0.0000736842105, -0.0001004385965, -0.0001004385965, -0.0000870614035, + -0.0000736842105, -0.0001004385965, -0.0001539473684, -0.0002074561404, + -0.0002208333333, -0.0001807017544, -0.0000870614035, +0.0000000000000, + +0.0000736842105, +0.0000802631579, +0.0000401315789, -0.0000267543860, + -0.0000936403509, -0.0001405701754, -0.0001539473684, -0.0001337719298, + -0.0001070175439, -0.0000802631579, -0.0000401315789, -0.0000067982456, + +0.0000201754386, +0.0000267543860, +0.0000133771930, -0.0000067982456, + -0.0000267543860, -0.0000401315789, -0.0000401315789, -0.0000267543860, + +0.0000133771930, +0.0000736842105, +0.0001271929825, +0.0001471491228, + +0.0001471491228, +0.0001337719298, +0.0000802631579, -0.0000067982456, + -0.0001337719298, -0.0002475877193, -0.0002677631579, -0.0001539473684, + +0.0000335526316, +0.0002074561404, +0.0003010964912, +0.0003010964912, + +0.0002410087719, +0.0001673245614, +0.0001138157895, +0.0001004385965, + +0.0001004385965, +0.0000802631579, +0.0000067982456, -0.0000802631579, + -0.0001203947368, -0.0000870614035, +0.0000000000000, +0.0001004385965, + +0.0001471491228, +0.0001337719298, +0.0000668859649, +0.0000000000000, + -0.0000401315789, -0.0000401315789, -0.0000133771930, +0.0000067982456, + +0.0000067982456, -0.0000335526316, -0.0001004385965, -0.0001271929825, + -0.0000668859649, +0.0000401315789, +0.0001605263158, +0.0002410087719, + +0.0002543859649, +0.0001807017544, +0.0000469298246, -0.0000736842105, + -0.0001271929825, -0.0000736842105, +0.0000201754386, +0.0001138157895, + +0.0001539473684, +0.0001271929825, +0.0000535087719, -0.0000067982456, + -0.0000067982456, +0.0000603070175, +0.0001539473684, +0.0001872807018, + +0.0001405701754, +0.0000401315789, -0.0000802631579, -0.0001872807018, + -0.0002475877193, -0.0002276315789, -0.0001539473684, -0.0000603070175, + +0.0000067982456, +0.0000668859649, +0.0001271929825, +0.0001872807018, + +0.0002276315789, +0.0002543859649, +0.0002677631579, +0.0002342105263, + +0.0001471491228, +0.0000267543860, -0.0000668859649, -0.0001138157895, + -0.0001070175439, -0.0000401315789, +0.0000469298246, +0.0001471491228, + +0.0001940789474, +0.0001739035088, +0.0000936403509, +0.0000133771930, + -0.0000267543860, -0.0000335526316, -0.0000401315789, -0.0000870614035, + -0.0001539473684, -0.0002142543860, -0.0002276315789, -0.0001872807018, + -0.0001203947368, -0.0000201754386, +0.0000535087719, +0.0000736842105, + +0.0000201754386, -0.0000802631579, -0.0001739035088, -0.0002074561404, + -0.0001673245614, -0.0000936403509, -0.0000401315789, -0.0000201754386, + -0.0000401315789, -0.0000668859649, -0.0000802631579, -0.0000802631579, + -0.0000870614035, -0.0001203947368, -0.0001539473684, -0.0001872807018, + -0.0002074561404, -0.0002208333333, -0.0002342105263, -0.0002208333333, + -0.0001605263158, -0.0000603070175, +0.0000668859649, +0.0001872807018, + +0.0002677631579, +0.0002945175439, +0.0002811403509, +0.0002410087719, + +0.0001605263158, +0.0000603070175, -0.0000335526316, -0.0001004385965, + -0.0001203947368, -0.0000870614035, -0.0000133771930, +0.0000668859649, + +0.0001471491228, +0.0002008771930, +0.0002276315789, +0.0002074561404, + +0.0001471491228, +0.0000535087719, -0.0000401315789, -0.0001203947368, + -0.0001471491228, -0.0001203947368, -0.0000603070175, +0.0000201754386, + +0.0000936403509, +0.0001337719298, +0.0001138157895, +0.0000668859649, + +0.0000401315789, +0.0000469298246, +0.0000535087719, +0.0000401315789, + +0.0000201754386, +0.0000267543860, +0.0000668859649, +0.0000936403509, + +0.0000870614035, +0.0000603070175, +0.0000201754386, -0.0000201754386, + -0.0000469298246, -0.0000535087719, -0.0000133771930, +0.0000401315789, + +0.0000668859649, +0.0000335526316, -0.0000267543860, -0.0000870614035, + -0.0001138157895, -0.0000936403509, -0.0000201754386, +0.0000603070175, + +0.0001337719298, +0.0001673245614, +0.0001539473684, +0.0001138157895, + +0.0000401315789, -0.0000401315789, -0.0001203947368, -0.0001471491228, + -0.0001203947368, -0.0000736842105, -0.0000401315789, -0.0000201754386, + +0.0000000000000, +0.0000401315789, +0.0000802631579, +0.0001070175439, + +0.0000802631579, +0.0000133771930, -0.0000535087719, -0.0000870614035, + -0.0000736842105, -0.0000067982456, +0.0000668859649, +0.0001271929825, + +0.0001471491228, +0.0001203947368, +0.0000736842105, +0.0000133771930, + -0.0000201754386, -0.0000267543860, +0.0000201754386, +0.0001271929825, + +0.0002208333333, +0.0002410087719, +0.0001739035088, +0.0000936403509, + +0.0000335526316, +0.0000067982456, +0.0000000000000, -0.0000067982456, + -0.0000267543860, -0.0000535087719, -0.0000802631579, -0.0000936403509, + -0.0001070175439, -0.0001070175439, -0.0000936403509, -0.0000870614035, + -0.0000870614035, -0.0000802631579, -0.0000736842105, -0.0000603070175, + -0.0000267543860, +0.0000133771930, +0.0000802631579, +0.0001471491228, + +0.0002142543860, +0.0002475877193, +0.0002342105263, +0.0001539473684, + +0.0000335526316, -0.0000603070175, -0.0001138157895, -0.0000936403509, + -0.0000133771930, +0.0000668859649, +0.0000936403509, +0.0000401315789, + -0.0000603070175, -0.0001337719298, -0.0001271929825, -0.0000469298246, + +0.0000603070175, +0.0001605263158, +0.0002008771930, +0.0001739035088, + +0.0000870614035, -0.0000133771930, -0.0001138157895, -0.0001471491228, + -0.0001203947368, -0.0000469298246, +0.0000000000000, +0.0000201754386, + -0.0000067982456, -0.0000535087719, -0.0000870614035, -0.0001070175439, + -0.0000936403509, -0.0000603070175, -0.0000067982456, +0.0000469298246, + +0.0000870614035, +0.0001004385965, +0.0001070175439, +0.0001138157895, + +0.0001271929825, +0.0001337719298, +0.0001471491228, +0.0001405701754, + +0.0001070175439, +0.0000668859649, +0.0000401315789, +0.0000469298246, + +0.0000936403509, +0.0001337719298, +0.0001673245614, +0.0001739035088, + +0.0001471491228, +0.0001004385965, +0.0000535087719, +0.0000201754386, + +0.0000133771930, +0.0000133771930, +0.0000201754386, +0.0000335526316, + +0.0000469298246, +0.0000603070175, +0.0000736842105, +0.0000736842105, + +0.0000668859649, +0.0000469298246, +0.0000000000000, -0.0000469298246, + -0.0000870614035, -0.0000870614035, -0.0000469298246, +0.0000133771930, + +0.0000736842105, +0.0001070175439, +0.0001004385965, +0.0000736842105, + +0.0000469298246, +0.0000401315789, +0.0000401315789, +0.0000469298246, + +0.0000535087719, +0.0000335526316, +0.0000067982456, +0.0000000000000, + +0.0000000000000, +0.0000000000000, -0.0000067982456, +0.0000000000000, + +0.0000133771930, +0.0000469298246, +0.0000802631579, +0.0001070175439, + +0.0001070175439, +0.0000802631579, +0.0000267543860, -0.0000201754386, + -0.0000469298246, -0.0000335526316, +0.0000000000000, +0.0000335526316, + +0.0000603070175, +0.0000603070175, +0.0000469298246, +0.0000133771930, + -0.0000201754386, -0.0000668859649, -0.0000870614035, -0.0000870614035, + -0.0000668859649, -0.0000469298246, -0.0000335526316, -0.0000201754386, + +0.0000000000000, +0.0000067982456, +0.0000201754386, +0.0000469298246, + +0.0000802631579, +0.0001070175439, +0.0001070175439, +0.0000736842105, + +0.0000267543860, -0.0000267543860, -0.0000802631579, -0.0000870614035, + -0.0000401315789, +0.0000201754386, +0.0000736842105, +0.0000936403509, + +0.0000802631579, +0.0000469298246, +0.0000267543860, +0.0000335526316, + +0.0000535087719, +0.0000469298246, +0.0000067982456, -0.0000535087719, + -0.0001203947368, -0.0001471491228, -0.0001138157895, -0.0000401315789, + +0.0000335526316, +0.0000870614035, +0.0001004385965, +0.0000668859649, + +0.0000000000000, -0.0000603070175, -0.0000936403509, -0.0000603070175, + +0.0000000000000, +0.0000335526316, +0.0000067982456, -0.0000736842105, + -0.0001872807018, -0.0002609649123, -0.0002743421053, -0.0002208333333, + -0.0001405701754, -0.0000603070175, -0.0000133771930, -0.0000067982456, + -0.0000335526316, -0.0000603070175, -0.0000736842105, -0.0000802631579, + -0.0000870614035, -0.0001004385965, -0.0001203947368, -0.0001605263158, + -0.0001940789474, -0.0002074561404, -0.0001872807018, -0.0001271929825, + -0.0000535087719, +0.0000067982456, +0.0000469298246, +0.0000335526316, + -0.0000133771930, -0.0000870614035, -0.0001605263158, -0.0002074561404, + -0.0002142543860, -0.0001807017544, -0.0001004385965, -0.0000133771930, + +0.0000535087719, +0.0000936403509, +0.0000870614035, +0.0000335526316, + -0.0000133771930, -0.0000469298246, -0.0000401315789, +0.0000000000000, + +0.0000469298246, +0.0000870614035, +0.0000936403509, +0.0000736842105, + +0.0000535087719, +0.0000335526316, +0.0000133771930, +0.0000067982456, + +0.0000000000000, -0.0000067982456, -0.0000335526316, -0.0000668859649, + -0.0000936403509, -0.0001138157895, -0.0001138157895, -0.0001070175439, + -0.0001004385965, -0.0000870614035, -0.0000736842105, -0.0000668859649, + -0.0000535087719, -0.0000535087719, -0.0000535087719, -0.0000535087719, + -0.0000535087719, -0.0000668859649, -0.0000668859649, -0.0000603070175, + -0.0000668859649, -0.0001070175439, -0.0001673245614, -0.0002208333333, + -0.0002410087719, -0.0002276315789, -0.0001940789474, -0.0001539473684, + -0.0001004385965, -0.0000535087719, -0.0000335526316, -0.0000469298246, + -0.0000870614035, -0.0001271929825, -0.0001405701754, -0.0001271929825, + -0.0000870614035, -0.0000267543860, +0.0000335526316, +0.0000870614035, + +0.0001138157895, +0.0001070175439, +0.0000668859649, +0.0000133771930, + -0.0000335526316, -0.0000668859649, -0.0000802631579, -0.0000668859649, + -0.0000401315789, -0.0000133771930, +0.0000000000000, +0.0000067982456, + -0.0000067982456, -0.0000401315789, -0.0000736842105, -0.0000870614035, + -0.0000870614035, -0.0000736842105, -0.0000603070175, -0.0000535087719, + -0.0000401315789, -0.0000267543860, -0.0000267543860, -0.0000133771930, + +0.0000000000000, +0.0000133771930, +0.0000267543860, +0.0000469298246, + +0.0000469298246, +0.0000201754386, -0.0000201754386, -0.0000469298246, + -0.0000535087719, -0.0000335526316, +0.0000000000000, +0.0000335526316, + +0.0000736842105, +0.0000668859649, +0.0000201754386, -0.0000469298246, + -0.0001070175439, -0.0001337719298, -0.0001138157895, -0.0000469298246, + +0.0000668859649, +0.0001739035088, +0.0002342105263, +0.0002208333333, + +0.0001539473684, +0.0000603070175, -0.0000335526316, -0.0000936403509, + -0.0001138157895, -0.0001070175439, -0.0000736842105, -0.0000201754386, + +0.0000133771930, +0.0000133771930, -0.0000133771930, -0.0000736842105, + -0.0001203947368, -0.0001271929825, -0.0001070175439, -0.0000668859649, + -0.0000267543860, +0.0000000000000, +0.0000000000000, -0.0000267543860, + -0.0000469298246, -0.0000469298246, -0.0000267543860, +0.0000067982456, + +0.0000469298246, +0.0000668859649, +0.0000603070175, +0.0000133771930, + -0.0000267543860, -0.0000469298246, -0.0000401315789, -0.0000133771930, + -0.0000067982456, -0.0000067982456, -0.0000201754386, -0.0000267543860, + -0.0000201754386, +0.0000000000000, +0.0000335526316, +0.0000535087719, + +0.0000469298246, +0.0000000000000, -0.0000535087719, -0.0000802631579, + -0.0000535087719, +0.0000000000000, +0.0000736842105, +0.0001203947368, + +0.0001271929825, +0.0000936403509, +0.0000603070175, +0.0000469298246, + +0.0000469298246, +0.0000603070175, +0.0000603070175, +0.0000603070175, + +0.0000469298246, +0.0000133771930, -0.0000133771930, -0.0000267543860, + +0.0000000000000, +0.0000668859649, +0.0001203947368, +0.0001271929825, + +0.0000936403509, +0.0000668859649, +0.0000469298246, +0.0000401315789, + +0.0000401315789, +0.0000267543860, +0.0000000000000, -0.0000267543860, + -0.0000469298246, -0.0000401315789, +0.0000000000000, +0.0000736842105, + +0.0001471491228, +0.0001673245614, +0.0001203947368, +0.0000401315789, + -0.0000267543860, -0.0000736842105, -0.0000802631579, -0.0000736842105, + -0.0000535087719, -0.0000201754386, +0.0000201754386, +0.0000535087719, + +0.0000668859649, +0.0000469298246, +0.0000201754386, -0.0000067982456, + -0.0000201754386, -0.0000267543860, -0.0000201754386, +0.0000067982456, + +0.0000535087719, +0.0000936403509, +0.0001070175439, +0.0000936403509, + +0.0000469298246, +0.0000000000000, -0.0000133771930, +0.0000000000000, + +0.0000401315789, +0.0000668859649, +0.0000603070175, +0.0000267543860, + +0.0000000000000, -0.0000067982456, +0.0000000000000, +0.0000201754386, + +0.0000535087719, +0.0000802631579, +0.0000870614035, +0.0000802631579, + +0.0000401315789, +0.0000000000000, -0.0000335526316, -0.0000133771930, + +0.0000401315789, +0.0001203947368, +0.0001872807018, +0.0002008771930, + +0.0001739035088, +0.0001203947368, +0.0000668859649, +0.0000401315789, + +0.0000401315789, +0.0000603070175, +0.0000668859649, +0.0000469298246, + +0.0000000000000, -0.0000535087719, -0.0000802631579, -0.0000535087719, + +0.0000067982456, +0.0001004385965, +0.0001673245614, +0.0002008771930, + +0.0001739035088, +0.0001203947368, +0.0000668859649, +0.0000335526316, + +0.0000067982456, +0.0000000000000, +0.0000000000000, -0.0000067982456, + -0.0000267543860, -0.0000401315789, -0.0000469298246, -0.0000267543860, + +0.0000000000000, +0.0000335526316, +0.0000603070175, +0.0000603070175, + +0.0000401315789, +0.0000000000000, -0.0000201754386, -0.0000133771930, + +0.0000133771930, +0.0000335526316, +0.0000267543860, +0.0000000000000, + -0.0000133771930, -0.0000267543860, -0.0000133771930, +0.0000000000000, + +0.0000335526316, +0.0000603070175, +0.0000870614035, +0.0001004385965, + +0.0001070175439, +0.0000936403509, +0.0000668859649, +0.0000267543860, + +0.0000000000000, -0.0000201754386, -0.0000267543860, -0.0000133771930, + +0.0000067982456, +0.0000535087719, +0.0001070175439, +0.0001539473684, + +0.0001673245614, +0.0001539473684, +0.0001271929825, +0.0001004385965, + +0.0000668859649, +0.0000335526316, +0.0000000000000, -0.0000267543860, + -0.0000469298246, -0.0000603070175, -0.0000469298246, -0.0000067982456, + +0.0000469298246, +0.0001004385965, +0.0001271929825, +0.0001203947368, + +0.0000802631579, +0.0000267543860, -0.0000067982456, -0.0000267543860, + -0.0000067982456, +0.0000133771930, +0.0000335526316, +0.0000267543860, + +0.0000000000000, -0.0000133771930, -0.0000067982456, +0.0000201754386, + +0.0000603070175, +0.0000802631579, +0.0000802631579, +0.0000469298246, + -0.0000067982456, -0.0000936403509, -0.0001673245614, -0.0002008771930, + -0.0001673245614, -0.0000870614035, +0.0000000000000, +0.0000469298246, + +0.0000668859649, +0.0000335526316, +0.0000000000000, -0.0000401315789, + -0.0000469298246, -0.0000267543860, -0.0000067982456, +0.0000000000000, + +0.0000067982456, +0.0000267543860, +0.0000469298246, +0.0000603070175, + +0.0000603070175, +0.0000401315789, +0.0000201754386, +0.0000000000000, + -0.0000133771930, -0.0000267543860, -0.0000201754386, -0.0000067982456, + +0.0000000000000, +0.0000133771930, +0.0000267543860, +0.0000335526316, + +0.0000267543860, +0.0000201754386, +0.0000201754386, +0.0000201754386, + +0.0000267543860, +0.0000201754386, +0.0000133771930, +0.0000067982456, + +0.0000067982456, +0.0000067982456, +0.0000067982456, +0.0000067982456, + +0.0000133771930, +0.0000201754386, +0.0000201754386, +0.0000133771930, + +0.0000000000000, -0.0000067982456, -0.0000201754386, -0.0000267543860, + -0.0000201754386, -0.0000133771930, -0.0000067982456, -0.0000067982456, + -0.0000133771930, -0.0000201754386, -0.0000267543860, -0.0000335526316, + -0.0000267543860, -0.0000133771930, +0.0000000000000, +0.0000000000000, + +0.0000067982456, +0.0000000000000, +0.0000000000000, +0.0000000000000, + +0.0000000000000, +0.0000000000000, +0.0000000000000, +0.0000000000000, + +0.0000000000000, +0.0000000000000, +0.0000000000000, +0.0000000000000, + +0.0000000000000 +}; diff --git a/plugins/ladspa_effect/swh/impulses/19-marshall-plexi-sm57-off.h b/plugins/ladspa_effect/swh/impulses/19-marshall-plexi-sm57-off.h new file mode 100644 index 000000000..78ec65e2c --- /dev/null +++ b/plugins/ladspa_effect/swh/impulses/19-marshall-plexi-sm57-off.h @@ -0,0 +1,1360 @@ +float marshall_plexi_sm57_off[] = { + +0.0000000000000, +0.0000239215686, +0.0000478431373, +0.0000778431373, + +0.0001076470588, +0.0001376470588, +0.0001615686275, +0.0002094117647, + +0.0002333333333, +0.0002572549020, +0.0002452941176, +0.0002872549020, + +0.0002752941176, +0.0003170588235, +0.0002811764706, +0.0003470588235, + +0.0002872549020, +0.0003770588235, +0.0002811764706, +0.0004188235294, + +0.0002692156863, +0.0004905882353, +0.0001974509804, +0.0006162745098, + +0.0000180392157, +0.0008137254902, +0.0001017647059, +0.0000956862745, + +0.0014421568627, -0.0002452941176, +0.0000419607843, +0.0004727450980, + +0.0010531372549, +0.0006641176471, +0.0007180392157, +0.0001256862745, + +0.0004547058824, -0.0000239215686, +0.0004666666667, +0.0001376470588, + +0.0004188235294, +0.0003650980392, +0.0003770588235, +0.0004368627451, + +0.0004368627451, +0.0003949019608, +0.0003829411765, +0.0004009803922, + +0.0003709803922, +0.0002094117647, +0.0001915686275, +0.0001915686275, + +0.0002572549020, +0.0005864705882, +0.0011309803922, +0.0018609803922, + +0.0011488235294, -0.0056607843137, -0.0101545098039, -0.0078807843137, + -0.0183823529412, -0.0470031372549, -0.0563917647059, -0.0222119607843, + +0.0368545098039, +0.1011209803922, +0.1648068627451, +0.1960664705882, + +0.1808735294118, +0.1334815686275, +0.0625250980392, -0.0097476470588, + -0.0588629411765, -0.0769221568627, -0.0688021568627, -0.0461294117647, + -0.0298594117647, -0.0227745098039, -0.0156837254902, -0.0146245098039, + -0.0251021568627, -0.0281060784314, -0.0170658823529, +0.0061933333333, + +0.0285727450980, +0.0305474509804, +0.0142654901961, -0.0073841176471, + -0.0306552941176, -0.0475117647059, -0.0517123529412, -0.0441427450980, + -0.0331862745098, -0.0291174509804, -0.0298174509804, -0.0287223529412, + -0.0231754901961, -0.0191064705882, -0.0147621568627, -0.0120274509804, + -0.0188311764706, -0.0317203921569, -0.0380452941176, -0.0333358823529, + -0.0184960784314, -0.0019686274510, +0.0121711764706, +0.0229539215686, + +0.0218649019608, +0.0108307843137, -0.0035064705882, -0.0196209803922, + -0.0345986274510, -0.0420245098039, -0.0393378431373, -0.0290096078431, + -0.0167847058824, -0.0053315686275, +0.0032311764706, +0.0068454901961, + +0.0050982352941, -0.0015498039216, -0.0085449019608, -0.0101486274510, + -0.0048409803922, +0.0039074509804, +0.0068694117647, -0.0014062745098, + -0.0196688235294, -0.0371596078431, -0.0437956862745, -0.0393976470588, + -0.0289139215686, -0.0154382352941, -0.0057803921569, -0.0027945098039, + -0.0026329411765, -0.0011129411765, +0.0003650980392, +0.0009752941176, + +0.0025790196078, +0.0051580392157, +0.0072403921569, +0.0056427450980, + -0.0009513725490, -0.0085209803922, -0.0126917647059, -0.0135174509804, + -0.0101425490196, -0.0046435294118, -0.0030576470588, -0.0096758823529, + -0.0203988235294, -0.0300927450980, -0.0358133333333, -0.0338205882353, + -0.0228762745098, -0.0070668627451, +0.0105974509804, +0.0254672549020, + +0.0334915686275, +0.0334615686275, +0.0239294117647, +0.0085090196078, + -0.0017174509804, -0.0033749019608, -0.0009872549020, +0.0034527450980, + +0.0064564705882, +0.0043621568627, -0.0001017647059, -0.0029260784314, + -0.0019268627451, +0.0042903921569, +0.0142952941176, +0.0240011764706, + +0.0293149019608, +0.0287582352941, +0.0230737254902, +0.0155460784314, + +0.0104956862745, +0.0088621568627, +0.0085807843137, +0.0083054901961, + +0.0063309803922, +0.0029978431373, +0.0004966666667, +0.0002811764706, + +0.0035962745098, +0.0102623529412, +0.0165094117647, +0.0206203921569, + +0.0220803921569, +0.0202911764706, +0.0162282352941, +0.0117882352941, + +0.0085270588235, +0.0085688235294, +0.0115966666667, +0.0149296078431, + +0.0155221568627, +0.0120813725490, +0.0054992156863, -0.0015617647059, + -0.0062531372549, -0.0066780392157, -0.0032911764706, +0.0024294117647, + +0.0083952941176, +0.0131286274510, +0.0168145098039, +0.0197107843137, + +0.0216315686275, +0.0227386274510, +0.0227745098039, +0.0207700000000, + +0.0158392156863, +0.0090835294118, +0.0037519607843, +0.0021362745098, + +0.0046852941176, +0.0109803921569, +0.0183164705882, +0.0218050980392, + +0.0192619607843, +0.0120274509804, +0.0039013725490, -0.0009215686275, + -0.0005745098039, +0.0032072549020, +0.0085509803922, +0.0132182352941, + +0.0148039215686, +0.0124882352941, +0.0084909803922, +0.0053256862745, + +0.0041049019608, +0.0044460784314, +0.0055768627451, +0.0063368627451, + +0.0058103921569, +0.0048409803922, +0.0048768627451, +0.0061035294118, + +0.0093527450980, +0.0147560784314, +0.0196988235294, +0.0223496078431, + +0.0226068627451, +0.0207339215686, +0.0178437254902, +0.0141158823529, + +0.0087843137255, +0.0027525490196, -0.0019805882353, -0.0044998039216, + -0.0048050980392, -0.0038954901961, -0.0026866666667, -0.0018070588235, + -0.0014121568627, -0.0010592156863, -0.0006821568627, -0.0003709803922, + +0.0004307843137, +0.0022798039216, +0.0049786274510, +0.0077550980392, + +0.0090835294118, +0.0075098039216, +0.0030996078431, -0.0020464705882, + -0.0056307843137, -0.0064984313725, -0.0044878431373, -0.0004249019608, + +0.0037039215686, +0.0063190196078, +0.0074258823529, +0.0075874509804, + +0.0068635294118, +0.0054513725490, +0.0042425490196, +0.0040629411765, + +0.0049786274510, +0.0060615686275, +0.0059358823529, +0.0047570588235, + +0.0029500000000, +0.0002513725490, -0.0030456862745, -0.0058941176471, + -0.0077192156863, -0.0083594117647, -0.0075994117647, -0.0055829411765, + -0.0035423529412, -0.0025250980392, -0.0023156862745, -0.0026209803922, + -0.0035603921569, -0.0050682352941, -0.0065941176471, -0.0077490196078, + -0.0078927450980, -0.0067258823529, -0.0050562745098, -0.0039613725490, + -0.0038774509804, -0.0046913725490, -0.0058223529412, -0.0066600000000, + -0.0065223529412, -0.0055529411765, -0.0039133333333, -0.0019805882353, + -0.0006582352941, +0.0001915686275, +0.0020464705882, +0.0048349019608, + +0.0065523529412, +0.0060556862745, +0.0042964705882, +0.0025790196078, + +0.0010472549020, -0.0004966666667, -0.0021482352941, -0.0035543137255, + -0.0049725490196, -0.0068994117647, -0.0093227450980, -0.0113752941176, + -0.0119796078431, -0.0112915686275, -0.0105554901961, -0.0101127450980, + -0.0097117647059, -0.0098733333333, -0.0106392156863, -0.0113513725490, + -0.0113154901961, -0.0103400000000, -0.0090535294118, -0.0077609803922, + -0.0064564705882, -0.0055111764706, -0.0052000000000, -0.0058701960784, + -0.0073062745098, -0.0082158823529, -0.0079464705882, -0.0070429411765, + -0.0061992156863, -0.0059658823529, -0.0066839215686, -0.0082098039216, + -0.0097954901961, -0.0100947058824, -0.0086764705882, -0.0063727450980, + -0.0044998039216, -0.0038715686275, -0.0042845098039, -0.0052178431373, + -0.0066121568627, -0.0075098039216, -0.0066480392157, -0.0042066666667, + -0.0014001960784, +0.0005025490196, +0.0009096078431, -0.0001137254902, + -0.0021182352941, -0.0042186274510, -0.0057445098039, -0.0065941176471, + -0.0065701960784, -0.0062650980392, -0.0064386274510, -0.0069592156863, + -0.0073660784314, -0.0073182352941, -0.0067617647059, -0.0062411764706, + -0.0063368627451, -0.0073001960784, -0.0090894117647, -0.0107290196078, + -0.0110341176471, -0.0098015686275, -0.0079047058824, -0.0063847058824, + -0.0059060784314, -0.0063429411765, -0.0070429411765, -0.0072345098039, + -0.0068396078431, -0.0061694117647, -0.0055649019608, -0.0051880392157, + -0.0047033333333, -0.0038415686275, -0.0031774509804, -0.0034945098039, + -0.0045058823529, -0.0052956862745, -0.0055170588235, -0.0049366666667, + -0.0034825490196, -0.0014660784314, +0.0005505882353, +0.0020645098039, + +0.0023935294118, +0.0012925490196, -0.0008617647059, -0.0031654901961, + -0.0045298039216, -0.0044400000000, -0.0035962745098, -0.0033449019608, + -0.0044280392157, -0.0063129411765, -0.0076174509804, -0.0072403921569, + -0.0053854901961, -0.0031056862745, -0.0013703921569, -0.0011129411765, + -0.0026986274510, -0.0052417647059, -0.0071386274510, -0.0072045098039, + -0.0052956862745, -0.0026568627451, -0.0004786274510, +0.0008617647059, + +0.0008198039216, -0.0014541176471, -0.0051282352941, -0.0078449019608, + -0.0077670588235, -0.0048170588235, -0.0004488235294, +0.0036441176471, + +0.0061574509804, +0.0064266666667, +0.0045656862745, +0.0015976470588, + -0.0010650980392, -0.0021660784314, -0.0014780392157, +0.0000658823529, + +0.0011727450980, +0.0011607843137, +0.0001137254902, -0.0015078431373, + -0.0031894117647, -0.0039911764706, -0.0031952941176, -0.0013643137255, + +0.0000837254902, +0.0003050980392, -0.0005025490196, -0.0017113725490, + -0.0025072549020, -0.0024235294118, -0.0014958823529, -0.0001554901961, + +0.0009154901961, +0.0012625490196, +0.0012505882353, +0.0010472549020, + +0.0006701960784, +0.0004666666667, +0.0008376470588, +0.0013284313725, + +0.0012925490196, +0.0004488235294, -0.0009694117647, -0.0025011764706, + -0.0033629411765, -0.0029858823529, -0.0013943137255, +0.0007898039216, + +0.0023576470588, +0.0026090196078, +0.0018370588235, +0.0004786274510, + -0.0012745098039, -0.0026029411765, -0.0026688235294, -0.0015976470588, + +0.0000478431373, +0.0018490196078, +0.0032792156863, +0.0041349019608, + +0.0045476470588, +0.0045715686275, +0.0042305882353, +0.0037458823529, + +0.0031713725490, +0.0028901960784, +0.0031474509804, +0.0035784313725, + +0.0037998039216, +0.0038774509804, +0.0038954901961, +0.0036382352941, + +0.0027047058824, +0.0014062745098, +0.0009813725490, +0.0020284313725, + +0.0038774509804, +0.0054152941176, +0.0060735294118, +0.0055050980392, + +0.0038356862745, +0.0016874509804, +0.0000060784314, -0.0005803921569, + -0.0000898039216, +0.0011429411765, +0.0028482352941, +0.0044160784314, + +0.0053496078431, +0.0056188235294, +0.0054272549020, +0.0052478431373, + +0.0054213725490, +0.0059600000000, +0.0065582352941, +0.0069472549020, + +0.0072943137255, +0.0077011764706, +0.0081439215686, +0.0085449019608, + +0.0089039215686, +0.0089458823529, +0.0084192156863, +0.0076294117647, + +0.0072225490196, +0.0071327450980, +0.0069770588235, +0.0065403921569, + +0.0058941176471, +0.0048409803922, +0.0034586274510, +0.0020645098039, + +0.0010950980392, +0.0010592156863, +0.0019447058824, +0.0031713725490, + +0.0041766666667, +0.0044400000000, +0.0037339215686, +0.0026149019608, + +0.0018909803922, +0.0021243137255, +0.0030098039216, +0.0036860784314, + +0.0035903921569, +0.0032372549020, +0.0031176470588, +0.0033688235294, + +0.0039133333333, +0.0046076470588, +0.0053615686275, +0.0061933333333, + +0.0067796078431, +0.0066839215686, +0.0058880392157, +0.0044700000000, + +0.0027705882353, +0.0015198039216, +0.0013343137255, +0.0021243137255, + +0.0032672549020, +0.0041647058824, +0.0042186274510, +0.0033688235294, + +0.0023156862745, +0.0017711764706, +0.0018729411765, +0.0026507843137, + +0.0036023529412, +0.0038954901961, +0.0033270588235, +0.0024354901961, + +0.0015078431373, +0.0005564705882, -0.0000956862745, +0.0001196078431, + +0.0011009803922, +0.0021301960784, +0.0028482352941, +0.0031654901961, + +0.0030278431373, +0.0025970588235, +0.0022619607843, +0.0024294117647, + +0.0029441176471, +0.0033988235294, +0.0036082352941, +0.0033988235294, + +0.0026507843137, +0.0016874509804, +0.0010233333333, +0.0010352941176, + +0.0015317647059, +0.0018968627451, +0.0014421568627, -0.0001315686275, + -0.0023876470588, -0.0042784313725, -0.0049905882353, -0.0041886274510, + -0.0020764705882, +0.0006223529412, +0.0027945098039, +0.0035723529412, + +0.0027586274510, +0.0008796078431, -0.0009335294118, -0.0019268627451, + -0.0021301960784, -0.0019447058824, -0.0016454901961, -0.0014121568627, + -0.0011907843137, -0.0008556862745, -0.0001974509804, +0.0008556862745, + +0.0021721568627, +0.0033807843137, +0.0040031372549, +0.0036501960784, + +0.0022319607843, +0.0002633333333, -0.0014001960784, -0.0020403921569, + -0.0015976470588, -0.0005266666667, +0.0007719607843, +0.0019088235294, + +0.0022319607843, +0.0016754901961, +0.0006162745098, -0.0006162745098, + -0.0018790196078, -0.0031235294118, -0.0042845098039, -0.0051700000000, + -0.0055290196078, -0.0050264705882, -0.0037158823529, -0.0021062745098, + -0.0007360784314, +0.0000478431373, +0.0002154901961, -0.0000300000000, + -0.0003111764706, -0.0005205882353, -0.0006882352941, -0.0005984313725, + -0.0002872549020, -0.0000898039216, -0.0001076470588, -0.0004009803922, + -0.0008317647059, -0.0010472549020, -0.0008137254902, -0.0002213725490, + +0.0005984313725, +0.0013462745098, +0.0018370588235, +0.0022619607843, + +0.0025670588235, +0.0023696078431, +0.0017892156863, +0.0011009803922, + +0.0005625490196, +0.0005147058824, +0.0011190196078, +0.0020525490196, + +0.0027047058824, +0.0026329411765, +0.0017592156863, +0.0003770588235, + -0.0008796078431, -0.0015078431373, -0.0017950980392, -0.0021362745098, + -0.0023815686275, -0.0023754901961, -0.0022500000000, -0.0020943137255, + -0.0018729411765, -0.0014301960784, -0.0006760784314, +0.0000478431373, + +0.0002633333333, -0.0003650980392, -0.0017711764706, -0.0033509803922, + -0.0042545098039, -0.0040450980392, -0.0028721568627, -0.0012925490196, + +0.0000000000000, +0.0005386274510, +0.0004307843137, +0.0001017647059, + -0.0000419607843, +0.0002333333333, +0.0007241176471, +0.0010111764706, + +0.0008915686275, +0.0003111764706, -0.0004905882353, -0.0010831372549, + -0.0012745098039, -0.0010531372549, -0.0004427450980, +0.0001315686275, + +0.0001735294118, -0.0003111764706, -0.0010770588235, -0.0018729411765, + -0.0022319607843, -0.0019327450980, -0.0012925490196, -0.0007060784314, + -0.0003829411765, -0.0003290196078, -0.0005386274510, -0.0010292156863, + -0.0015976470588, -0.0020045098039, -0.0020045098039, -0.0014001960784, + -0.0004488235294, +0.0001496078431, +0.0002931372549, +0.0003709803922, + +0.0004786274510, +0.0003770588235, +0.0000598039216, -0.0003531372549, + -0.0007001960784, -0.0008017647059, -0.0004966666667, +0.0000180392157, + +0.0004666666667, +0.0008676470588, +0.0013164705882, +0.0016215686275, + +0.0015678431373, +0.0011429411765, +0.0004068627451, -0.0003890196078, + -0.0009454901961, -0.0011070588235, -0.0008556862745, -0.0004368627451, + -0.0001915686275, -0.0002274509804, -0.0003949019608, -0.0005684313725, + -0.0008017647059, -0.0011907843137, -0.0016215686275, -0.0020703921569, + -0.0025370588235, -0.0030698039216, -0.0036680392157, -0.0041588235294, + -0.0043203921569, -0.0042545098039, -0.0042245098039, -0.0043860784314, + -0.0045417647059, -0.0044219607843, -0.0038835294118, -0.0029619607843, + -0.0018429411765, -0.0009394117647, -0.0005386274510, -0.0007300000000, + -0.0012686274510, -0.0017772549020, -0.0018370588235, -0.0012984313725, + -0.0005266666667, -0.0001554901961, -0.0004786274510, -0.0012505882353, + -0.0019566666667, -0.0021900000000, -0.0018070588235, -0.0010292156863, + -0.0003170588235, +0.0000478431373, +0.0000717647059, -0.0002872549020, + -0.0007778431373, -0.0009752941176, -0.0008737254902, -0.0007180392157, + -0.0005984313725, -0.0007898039216, -0.0014719607843, -0.0023935294118, + -0.0031296078431, -0.0032731372549, -0.0026627450980, -0.0015856862745, + -0.0005505882353, +0.0000060784314, +0.0000300000000, -0.0001854901961, + -0.0004847058824, -0.0009335294118, -0.0014541176471, -0.0020045098039, + -0.0024354901961, -0.0024833333333, -0.0021301960784, -0.0015917647059, + -0.0009633333333, -0.0002572549020, +0.0004905882353, +0.0010770588235, + +0.0012505882353, +0.0009813725490, +0.0005205882353, +0.0001615686275, + -0.0001076470588, -0.0003231372549, -0.0003050980392, -0.0001017647059, + +0.0000000000000, -0.0001974509804, -0.0006760784314, -0.0011907843137, + -0.0016335294118, -0.0020464705882, -0.0021182352941, -0.0017472549020, + -0.0012266666667, -0.0008915686275, -0.0009035294118, -0.0012147058824, + -0.0016813725490, -0.0020403921569, -0.0020703921569, -0.0017113725490, + -0.0012447058824, -0.0009633333333, -0.0008437254902, -0.0007180392157, + -0.0005745098039, -0.0003050980392, +0.0002094117647, +0.0008676470588, + +0.0012386274510, +0.0011368627451, +0.0006641176471, +0.0000898039216, + -0.0003411764706, -0.0004786274510, -0.0003231372549, +0.0001915686275, + +0.0008556862745, +0.0013103921569, +0.0013223529412, +0.0009154901961, + +0.0003949019608, +0.0000837254902, +0.0000000000000, +0.0000956862745, + +0.0002213725490, +0.0001915686275, +0.0000180392157, -0.0002035294118, + -0.0004607843137, -0.0005325490196, -0.0002154901961, +0.0003231372549, + +0.0008078431373, +0.0010890196078, +0.0011607843137, +0.0010233333333, + +0.0007658823529, +0.0006641176471, +0.0009096078431, +0.0014600000000, + +0.0019088235294, +0.0020584313725, +0.0017831372549, +0.0009933333333, + -0.0000239215686, -0.0006941176471, -0.0006521568627, +0.0002274509804, + +0.0015617647059, +0.0026329411765, +0.0030398039216, +0.0027825490196, + +0.0020764705882, +0.0011429411765, +0.0002692156863, -0.0001554901961, + -0.0000539215686, +0.0003650980392, +0.0008256862745, +0.0010950980392, + +0.0008796078431, +0.0002333333333, -0.0005205882353, -0.0009454901961, + -0.0007600000000, -0.0001137254902, +0.0005803921569, +0.0011129411765, + +0.0012447058824, +0.0008317647059, +0.0001435294118, -0.0004188235294, + -0.0006343137255, -0.0002333333333, +0.0007241176471, +0.0017054901961, + +0.0021960784314, +0.0021123529412, +0.0015798039216, +0.0008796078431, + +0.0001735294118, -0.0003650980392, -0.0005564705882, -0.0004188235294, + -0.0002692156863, -0.0001854901961, +0.0000717647059, +0.0006521568627, + +0.0013582352941, +0.0020225490196, +0.0023996078431, +0.0022798039216, + +0.0016694117647, +0.0008198039216, +0.0001615686275, +0.0001137254902, + +0.0007539215686, +0.0017652941176, +0.0025790196078, +0.0027225490196, + +0.0020884313725, +0.0010052941176, -0.0000239215686, -0.0006343137255, + -0.0007539215686, -0.0006701960784, -0.0005984313725, -0.0005325490196, + -0.0005147058824, -0.0005564705882, -0.0006701960784, -0.0008796078431, + -0.0010770588235, -0.0011368627451, -0.0011309803922, -0.0011607843137, + -0.0013882352941, -0.0016994117647, -0.0017892156863, -0.0013403921569, + -0.0002931372549, +0.0010411764706, +0.0021362745098, +0.0026388235294, + +0.0025072549020, +0.0019268627451, +0.0011788235294, +0.0004488235294, + -0.0001017647059, -0.0004666666667, -0.0006343137255, -0.0005386274510, + -0.0002394117647, +0.0000119607843, +0.0000658823529, -0.0001796078431, + -0.0006941176471, -0.0011249019608, -0.0011668627451, -0.0007419607843, + +0.0002035294118, +0.0014480392157, +0.0022500000000, +0.0020525490196, + +0.0009813725490, -0.0005386274510, -0.0020645098039, -0.0030337254902, + -0.0029619607843, -0.0018070588235, -0.0000478431373, +0.0014241176471, + +0.0020584313725, +0.0019149019608, +0.0013045098039, +0.0004905882353, + -0.0000898039216, -0.0002452941176, +0.0000837254902, +0.0007778431373, + +0.0015737254902, +0.0022500000000, +0.0028362745098, +0.0032850980392, + +0.0035245098039, +0.0034586274510, +0.0029260784314, +0.0018011764706, + +0.0004307843137, -0.0006882352941, -0.0011070588235, -0.0007658823529, + -0.0001315686275, +0.0002633333333, +0.0003890196078, +0.0003949019608, + +0.0004905882353, +0.0005325490196, +0.0003770588235, +0.0000717647059, + -0.0001915686275, -0.0003590196078, -0.0003650980392, -0.0004068627451, + -0.0007060784314, -0.0012805882353, -0.0018909803922, -0.0021362745098, + -0.0017831372549, -0.0010950980392, -0.0003949019608, +0.0000717647059, + +0.0003411764706, +0.0004727450980, +0.0005864705882, +0.0007958823529, + +0.0012088235294, +0.0017592156863, +0.0020884313725, +0.0019327450980, + +0.0014719607843, +0.0009454901961, +0.0004786274510, +0.0001315686275, + +0.0001315686275, +0.0005325490196, +0.0010650980392, +0.0015258823529, + +0.0019268627451, +0.0021900000000, +0.0022798039216, +0.0020703921569, + +0.0014062745098, +0.0004307843137, -0.0004368627451, -0.0009694117647, + -0.0011968627451, -0.0012207843137, -0.0012805882353, -0.0014062745098, + -0.0012207843137, -0.0005564705882, +0.0003290196078, +0.0011668627451, + +0.0017711764706, +0.0018729411765, +0.0014182352941, +0.0005386274510, + -0.0005266666667, -0.0014719607843, -0.0020943137255, -0.0023156862745, + -0.0020345098039, -0.0012984313725, -0.0003170588235, +0.0005684313725, + +0.0012386274510, +0.0016635294118, +0.0015198039216, +0.0007658823529, + -0.0002035294118, -0.0011368627451, -0.0019149019608, -0.0023396078431, + -0.0022978431373, -0.0018729411765, -0.0012505882353, -0.0005923529412, + +0.0000778431373, +0.0006223529412, +0.0008376470588, +0.0008017647059, + +0.0007300000000, +0.0005025490196, -0.0000060784314, -0.0007839215686, + -0.0016215686275, -0.0021182352941, -0.0018909803922, -0.0009215686275, + +0.0004129411765, +0.0016276470588, +0.0023337254902, +0.0023515686275, + +0.0018490196078, +0.0011009803922, +0.0003411764706, -0.0001796078431, + -0.0003411764706, -0.0000837254902, +0.0003890196078, +0.0008796078431, + +0.0011309803922, +0.0008796078431, +0.0001554901961, -0.0005025490196, + -0.0007658823529, -0.0006401960784, -0.0003770588235, -0.0002633333333, + -0.0004727450980, -0.0010233333333, -0.0017831372549, -0.0024594117647, + -0.0026688235294, -0.0021182352941, -0.0010411764706, +0.0000539215686, + +0.0008137254902, +0.0010411764706, +0.0007539215686, +0.0001974509804, + -0.0003890196078, -0.0007719607843, -0.0010292156863, -0.0014062745098, + -0.0019986274510, -0.0026090196078, -0.0028123529412, -0.0020823529412, + -0.0005864705882, +0.0010711764706, +0.0020045098039, +0.0014780392157, + -0.0004427450980, -0.0026927450980, -0.0042066666667, -0.0044700000000, + -0.0034466666667, -0.0016037254902, +0.0002752941176, +0.0015558823529, + +0.0019268627451, +0.0014301960784, +0.0003111764706, -0.0009574509804, + -0.0018309803922, -0.0019447058824, -0.0011727450980, +0.0003050980392, + +0.0014719607843, +0.0013643137255, +0.0001554901961, -0.0014241176471, + -0.0027525490196, -0.0031415686275, -0.0024054901961, -0.0009454901961, + +0.0005266666667, +0.0010831372549, +0.0002872549020, -0.0009633333333, + -0.0015856862745, -0.0010890196078, +0.0004307843137, +0.0022619607843, + +0.0034466666667, +0.0034766666667, +0.0024413725490, +0.0008676470588, + -0.0006282352941, -0.0013284313725, -0.0007658823529, +0.0005505882353, + +0.0017174509804, +0.0022558823529, +0.0021721568627, +0.0016994117647, + +0.0011309803922, +0.0008078431373, +0.0010770588235, +0.0016933333333, + +0.0019805882353, +0.0015378431373, +0.0004607843137, -0.0007300000000, + -0.0015976470588, -0.0018370588235, -0.0010770588235, +0.0005864705882, + +0.0021601960784, +0.0023876470588, +0.0009813725490, -0.0011249019608, + -0.0027764705882, -0.0033509803922, -0.0027347058824, -0.0013284313725, + +0.0001017647059, +0.0008617647059, +0.0005147058824, -0.0005803921569, + -0.0015258823529, -0.0016156862745, -0.0009335294118, -0.0000539215686, + +0.0005745098039, +0.0007958823529, +0.0003770588235, -0.0005684313725, + -0.0015498039216, -0.0020943137255, -0.0019686274510, -0.0012386274510, + -0.0001796078431, +0.0008556862745, +0.0016933333333, +0.0020403921569, + +0.0018011764706, +0.0013582352941, +0.0010472549020, +0.0007539215686, + +0.0004068627451, -0.0001196078431, -0.0007658823529, -0.0013643137255, + -0.0018490196078, -0.0022439215686, -0.0024652941176, -0.0025192156863, + -0.0023876470588, -0.0022678431373, -0.0022439215686, -0.0023456862745, + -0.0025370588235, -0.0026927450980, -0.0025550980392, -0.0020225490196, + -0.0012147058824, -0.0004847058824, -0.0002154901961, -0.0005325490196, + -0.0011249019608, -0.0014062745098, -0.0010052941176, +0.0000837254902, + +0.0014600000000, +0.0024772549020, +0.0026747058824, +0.0020464705882, + +0.0009335294118, -0.0001376470588, -0.0006103921569, -0.0002394117647, + +0.0005684313725, +0.0012925490196, +0.0018131372549, +0.0021301960784, + +0.0022978431373, +0.0024533333333, +0.0025131372549, +0.0022558823529, + +0.0016037254902, +0.0004607843137, -0.0010352941176, -0.0024115686275, + -0.0033090196078, -0.0037339215686, -0.0035843137255, -0.0027347058824, + -0.0014660784314, -0.0000898039216, +0.0012625490196, +0.0024833333333, + +0.0034107843137, +0.0038356862745, +0.0035603921569, +0.0026149019608, + +0.0014062745098, +0.0004188235294, -0.0001496078431, -0.0003829411765, + -0.0002633333333, +0.0002692156863, +0.0009872549020, +0.0016096078431, + +0.0020345098039, +0.0023396078431, +0.0024652941176, +0.0023876470588, + +0.0020884313725, +0.0015678431373, +0.0009035294118, +0.0003470588235, + +0.0001017647059, +0.0002872549020, +0.0007839215686, +0.0011968627451, + +0.0010770588235, +0.0004488235294, -0.0004009803922, -0.0011309803922, + -0.0014541176471, -0.0012984313725, -0.0008556862745, -0.0004666666667, + -0.0004607843137, -0.0007778431373, -0.0010770588235, -0.0010352941176, + -0.0007958823529, -0.0005745098039, -0.0002394117647, +0.0003350980392, + +0.0009872549020, +0.0014480392157, +0.0013762745098, +0.0007060784314, + -0.0002154901961, -0.0009274509804, -0.0012447058824, -0.0012386274510, + -0.0010111764706, -0.0007180392157, -0.0004547058824, -0.0001256862745, + +0.0003411764706, +0.0007839215686, +0.0010472549020, +0.0012027450980, + +0.0011070588235, +0.0007241176471, +0.0003231372549, -0.0000300000000, + -0.0003111764706, -0.0003949019608, -0.0003890196078, -0.0003411764706, + -0.0002035294118, -0.0002154901961, -0.0005564705882, -0.0009872549020, + -0.0011847058824, -0.0009872549020, -0.0004129411765, +0.0004249019608, + +0.0013343137255, +0.0020584313725, +0.0023996078431, +0.0020943137255, + +0.0011190196078, +0.0000000000000, -0.0008317647059, -0.0011788235294, + -0.0010292156863, -0.0005086274510, +0.0002692156863, +0.0010592156863, + +0.0015678431373, +0.0017352941176, +0.0015737254902, +0.0010233333333, + +0.0003470588235, -0.0000300000000, +0.0000717647059, +0.0005625490196, + +0.0012327450980, +0.0018909803922, +0.0022739215686, +0.0022260784314, + +0.0017831372549, +0.0009872549020, +0.0000180392157, -0.0007480392157, + -0.0011968627451, -0.0013103921569, -0.0010831372549, -0.0008256862745, + -0.0007241176471, -0.0007121568627, -0.0007958823529, -0.0008676470588, + -0.0005923529412, -0.0000358823529, +0.0004488235294, +0.0007719607843, + +0.0010650980392, +0.0013045098039, +0.0013762745098, +0.0012088235294, + +0.0008915686275, +0.0005266666667, +0.0000239215686, -0.0006343137255, + -0.0011009803922, -0.0011488235294, -0.0007839215686, -0.0001076470588, + +0.0007778431373, +0.0016694117647, +0.0022917647059, +0.0024054901961, + +0.0019566666667, +0.0011907843137, +0.0005684313725, +0.0003350980392, + +0.0003770588235, +0.0004188235294, +0.0002692156863, -0.0000837254902, + -0.0004547058824, -0.0006462745098, -0.0006103921569, -0.0003829411765, + -0.0000837254902, +0.0000000000000, -0.0003470588235, -0.0011249019608, + -0.0019088235294, -0.0021482352941, -0.0017113725490, -0.0007241176471, + +0.0006043137255, +0.0018370588235, +0.0024772549020, +0.0023576470588, + +0.0015976470588, +0.0005564705882, -0.0003770588235, -0.0009513725490, + -0.0010292156863, -0.0006462745098, +0.0000119607843, +0.0007001960784, + +0.0011309803922, +0.0013403921569, +0.0014719607843, +0.0015439215686, + +0.0016037254902, +0.0016813725490, +0.0014900000000, +0.0009215686275, + +0.0000956862745, -0.0008017647059, -0.0015078431373, -0.0016994117647, + -0.0013523529412, -0.0008198039216, -0.0004129411765, -0.0001796078431, + -0.0002452941176, -0.0006882352941, -0.0012566666667, -0.0015976470588, + -0.0014719607843, -0.0008078431373, +0.0001017647059, +0.0007958823529, + +0.0009035294118, +0.0005505882353, +0.0001974509804, +0.0002633333333, + +0.0007001960784, +0.0011309803922, +0.0013164705882, +0.0012566666667, + +0.0009394117647, +0.0004727450980, +0.0000119607843, -0.0002633333333, + -0.0002633333333, -0.0001076470588, +0.0000239215686, +0.0000300000000, + -0.0001674509804, -0.0005325490196, -0.0008796078431, -0.0009933333333, + -0.0008017647059, -0.0005325490196, -0.0005745098039, -0.0010831372549, + -0.0017472549020, -0.0022500000000, -0.0024952941176, -0.0024772549020, + -0.0023037254902, -0.0022439215686, -0.0022798039216, -0.0021841176471, + -0.0018968627451, -0.0014780392157, -0.0009096078431, -0.0003590196078, + -0.0001196078431, -0.0003709803922, -0.0008437254902, -0.0011488235294, + -0.0010411764706, -0.0005745098039, +0.0000419607843, +0.0005505882353, + +0.0006701960784, +0.0004009803922, -0.0000478431373, -0.0004129411765, + -0.0004427450980, -0.0001554901961, +0.0001554901961, +0.0002333333333, + +0.0000180392157, -0.0003170588235, -0.0005984313725, -0.0007719607843, + -0.0008198039216, -0.0007778431373, -0.0007180392157, -0.0006582352941, + -0.0005803921569, -0.0005803921569, -0.0006521568627, -0.0006941176471, + -0.0006223529412, -0.0005025490196, -0.0004188235294, -0.0003829411765, + -0.0003350980392, -0.0001796078431, +0.0001376470588, +0.0004368627451, + +0.0005684313725, +0.0005205882353, +0.0003531372549, +0.0000898039216, + -0.0001615686275, -0.0003650980392, -0.0005025490196, -0.0005266666667, + -0.0003470588235, +0.0000358823529, +0.0004009803922, +0.0005325490196, + +0.0005386274510, +0.0004966666667, +0.0003531372549, +0.0001376470588, + -0.0001615686275, -0.0005445098039, -0.0007839215686, -0.0007480392157, + -0.0004249019608, +0.0001017647059, +0.0007241176471, +0.0012447058824, + +0.0014541176471, +0.0012505882353, +0.0006941176471, -0.0000358823529, + -0.0006701960784, -0.0009215686275, -0.0007480392157, -0.0002154901961, + +0.0004427450980, +0.0010531372549, +0.0013523529412, +0.0012088235294, + +0.0008556862745, +0.0006223529412, +0.0005325490196, +0.0005205882353, + +0.0005325490196, +0.0005745098039, +0.0006103921569, +0.0005505882353, + +0.0003590196078, +0.0001315686275, +0.0000778431373, +0.0003770588235, + +0.0008198039216, +0.0011070588235, +0.0011190196078, +0.0009154901961, + +0.0006941176471, +0.0004009803922, -0.0000239215686, -0.0004368627451, + -0.0007300000000, -0.0008976470588, -0.0008676470588, -0.0006641176471, + -0.0004368627451, -0.0002692156863, -0.0002513725490, -0.0003890196078, + -0.0005684313725, -0.0006223529412, -0.0006401960784, -0.0007060784314, + -0.0007600000000, -0.0006401960784, -0.0004307843137, -0.0002274509804, + -0.0000717647059, +0.0000837254902, +0.0003231372549, +0.0006760784314, + +0.0009752941176, +0.0009394117647, +0.0006043137255, +0.0002931372549, + +0.0000539215686, -0.0002213725490, -0.0004488235294, -0.0004966666667, + -0.0004966666667, -0.0004488235294, -0.0003170588235, -0.0001554901961, + +0.0000419607843, +0.0002572549020, +0.0002154901961, -0.0000778431373, + -0.0003590196078, -0.0004847058824, -0.0004905882353, -0.0002811764706, + +0.0001615686275, +0.0006641176471, +0.0009096078431, +0.0007719607843, + +0.0003949019608, +0.0000060784314, -0.0002633333333, -0.0004368627451, + -0.0006462745098, -0.0009933333333, -0.0013643137255, -0.0015617647059, + -0.0014360784314, -0.0009274509804, -0.0002692156863, +0.0001615686275, + +0.0003050980392, +0.0002394117647, -0.0000180392157, -0.0003650980392, + -0.0006223529412, -0.0007898039216, -0.0007658823529, -0.0004607843137, + +0.0000419607843, +0.0004666666667, +0.0005625490196, +0.0003411764706, + +0.0000358823529, -0.0001735294118, -0.0001974509804, -0.0000778431373, + +0.0001017647059, +0.0001674509804, +0.0000956862745, +0.0000180392157, + +0.0000180392157, +0.0000180392157, -0.0000119607843, -0.0000898039216, + -0.0001915686275, -0.0003650980392, -0.0006223529412, -0.0008617647059, + -0.0008737254902, -0.0006162745098, -0.0001915686275, +0.0002154901961, + +0.0004427450980, +0.0003650980392, +0.0000598039216, -0.0003290196078, + -0.0006462745098, -0.0007419607843, -0.0006043137255, -0.0003531372549, + -0.0001196078431, -0.0000119607843, -0.0000837254902, -0.0002992156863, + -0.0005086274510, -0.0004249019608, -0.0000180392157, +0.0003829411765, + +0.0004786274510, +0.0001915686275, -0.0003949019608, -0.0010233333333, + -0.0014001960784, -0.0014600000000, -0.0011968627451, -0.0007001960784, + -0.0002333333333, +0.0001315686275, +0.0004607843137, +0.0007539215686, + +0.0009335294118, +0.0009513725490, +0.0007241176471, +0.0002692156863, + -0.0003050980392, -0.0008617647059, -0.0012984313725, -0.0014719607843, + -0.0013223529412, -0.0009574509804, -0.0005803921569, -0.0002213725490, + +0.0002035294118, +0.0007180392157, +0.0011309803922, +0.0012805882353, + +0.0011070588235, +0.0006821568627, +0.0002274509804, -0.0000180392157, + +0.0000239215686, +0.0003111764706, +0.0006582352941, +0.0009096078431, + +0.0010352941176, +0.0011190196078, +0.0012447058824, +0.0013403921569, + +0.0012505882353, +0.0009633333333, +0.0006162745098, +0.0002992156863, + +0.0000717647059, +0.0000539215686, +0.0002394117647, +0.0005205882353, + +0.0007480392157, +0.0008437254902, +0.0007839215686, +0.0005684313725, + +0.0002274509804, -0.0000358823529, -0.0000778431373, +0.0001137254902, + +0.0004068627451, +0.0006462745098, +0.0008496078431, +0.0010650980392, + +0.0011788235294, +0.0012327450980, +0.0013403921569, +0.0014241176471, + +0.0013164705882, +0.0010233333333, +0.0006760784314, +0.0002931372549, + -0.0001496078431, -0.0005684313725, -0.0007719607843, -0.0006462745098, + -0.0002513725490, +0.0001796078431, +0.0005086274510, +0.0007360784314, + +0.0008078431373, +0.0006103921569, +0.0002752941176, +0.0000060784314, + -0.0001376470588, -0.0002094117647, -0.0002213725490, -0.0001674509804, + -0.0000837254902, -0.0000539215686, -0.0001196078431, -0.0002513725490, + -0.0002394117647, +0.0000300000000, +0.0003350980392, +0.0004666666667, + +0.0004607843137, +0.0003770588235, +0.0003290196078, +0.0003650980392, + +0.0004368627451, +0.0004905882353, +0.0004666666667, +0.0003111764706, + +0.0000956862745, -0.0001256862745, -0.0002572549020, -0.0001854901961, + +0.0000837254902, +0.0005564705882, +0.0011788235294, +0.0016994117647, + +0.0018729411765, +0.0016515686275, +0.0011488235294, +0.0005205882353, + -0.0000658823529, -0.0004188235294, -0.0004068627451, +0.0000000000000, + +0.0006043137255, +0.0010770588235, +0.0012984313725, +0.0013343137255, + +0.0011907843137, +0.0008856862745, +0.0006043137255, +0.0005205882353, + +0.0005505882353, +0.0005564705882, +0.0004607843137, +0.0002811764706, + +0.0000898039216, -0.0000717647059, -0.0002752941176, -0.0004427450980, + -0.0004607843137, -0.0003590196078, -0.0002633333333, -0.0002752941176, + -0.0003650980392, -0.0004368627451, -0.0003829411765, -0.0001496078431, + +0.0001615686275, +0.0003650980392, +0.0003650980392, +0.0001674509804, + -0.0002094117647, -0.0006941176471, -0.0010650980392, -0.0011668627451, + -0.0010890196078, -0.0009694117647, -0.0008256862745, -0.0006401960784, + -0.0004786274510, -0.0003770588235, -0.0002872549020, -0.0000658823529, + +0.0002394117647, +0.0004307843137, +0.0003350980392, +0.0000060784314, + -0.0003829411765, -0.0006582352941, -0.0007658823529, -0.0007060784314, + -0.0004905882353, -0.0001796078431, +0.0001615686275, +0.0004427450980, + +0.0006223529412, +0.0006641176471, +0.0005625490196, +0.0003590196078, + +0.0001735294118, +0.0000478431373, -0.0001196078431, -0.0004307843137, + -0.0007060784314, -0.0007060784314, -0.0003770588235, +0.0000778431373, + +0.0005625490196, +0.0010292156863, +0.0013703921569, +0.0013762745098, + +0.0010531372549, +0.0005505882353, +0.0000358823529, -0.0004068627451, + -0.0007600000000, -0.0009933333333, -0.0010233333333, -0.0007600000000, + -0.0001854901961, +0.0004427450980, +0.0008376470588, +0.0008737254902, + +0.0006343137255, +0.0001674509804, -0.0003890196078, -0.0008556862745, + -0.0011309803922, -0.0012266666667, -0.0011129411765, -0.0008496078431, + -0.0005625490196, -0.0003531372549, -0.0002992156863, -0.0003709803922, + -0.0004607843137, -0.0004666666667, -0.0004488235294, -0.0004905882353, + -0.0005864705882, -0.0007241176471, -0.0009035294118, -0.0010531372549, + -0.0011549019608, -0.0011727450980, -0.0010531372549, -0.0008437254902, + -0.0005564705882, -0.0001796078431, +0.0001256862745, +0.0001496078431, + -0.0001256862745, -0.0005325490196, -0.0009154901961, -0.0011249019608, + -0.0010770588235, -0.0008256862745, -0.0003890196078, +0.0002811764706, + +0.0009274509804, +0.0011847058824, +0.0009694117647, +0.0004547058824, + -0.0000478431373, -0.0003111764706, -0.0004249019608, -0.0004905882353, + -0.0004905882353, -0.0004009803922, -0.0003170588235, -0.0002452941176, + -0.0001735294118, -0.0000956862745, -0.0000717647059, -0.0000539215686, + +0.0000119607843, +0.0002992156863, +0.0007480392157, +0.0010831372549, + +0.0010770588235, +0.0007898039216, +0.0003111764706, -0.0001915686275, + -0.0005386274510, -0.0006462745098, -0.0004547058824, +0.0000060784314, + +0.0004847058824, +0.0007419607843, +0.0007719607843, +0.0006701960784, + +0.0004547058824, +0.0001076470588, -0.0003290196078, -0.0006582352941, + -0.0007360784314, -0.0005745098039, -0.0002752941176, +0.0000898039216, + +0.0004009803922, +0.0005147058824, +0.0003829411765, +0.0001196078431, + -0.0001196078431, -0.0002692156863, -0.0003111764706, -0.0002572549020, + -0.0001017647059, +0.0001315686275, +0.0003890196078, +0.0005745098039, + +0.0005803921569, +0.0003590196078, +0.0001196078431, +0.0000358823529, + +0.0001196078431, +0.0002992156863, +0.0004847058824, +0.0005505882353, + +0.0004427450980, +0.0001315686275, -0.0002452941176, -0.0006043137255, + -0.0008556862745, -0.0009813725490, -0.0008915686275, -0.0005266666667, + +0.0000778431373, +0.0007539215686, +0.0013284313725, +0.0015798039216, + +0.0013762745098, +0.0008017647059, +0.0001615686275, -0.0002333333333, + -0.0002692156863, -0.0000717647059, +0.0002274509804, +0.0005564705882, + +0.0008437254902, +0.0009154901961, +0.0006821568627, +0.0002274509804, + -0.0001915686275, -0.0004666666667, -0.0005625490196, -0.0004427450980, + -0.0000956862745, +0.0002992156863, +0.0005923529412, +0.0006821568627, + +0.0006103921569, +0.0005025490196, +0.0004427450980, +0.0003770588235, + +0.0002811764706, +0.0001674509804, +0.0000598039216, +0.0000000000000, + +0.0000239215686, +0.0001376470588, +0.0002811764706, +0.0003231372549, + +0.0001615686275, -0.0001376470588, -0.0004488235294, -0.0006401960784, + -0.0006701960784, -0.0005025490196, -0.0001376470588, +0.0002452941176, + +0.0003770588235, +0.0001735294118, -0.0003170588235, -0.0009215686275, + -0.0013703921569, -0.0014719607843, -0.0011847058824, -0.0006821568627, + -0.0002572549020, -0.0000717647059, -0.0001256862745, -0.0003290196078, + -0.0005625490196, -0.0007241176471, -0.0008317647059, -0.0007658823529, + -0.0004547058824, -0.0000119607843, +0.0002513725490, +0.0002154901961, + -0.0000658823529, -0.0003890196078, -0.0005386274510, -0.0004009803922, + -0.0001017647059, +0.0001974509804, +0.0003890196078, +0.0003650980392, + +0.0000778431373, -0.0003350980392, -0.0006941176471, -0.0008198039216, + -0.0006701960784, -0.0003350980392, +0.0000539215686, +0.0004786274510, + +0.0008017647059, +0.0008437254902, +0.0005803921569, +0.0001915686275, + -0.0001496078431, -0.0004307843137, -0.0007360784314, -0.0010052941176, + -0.0009992156863, -0.0006821568627, -0.0001496078431, +0.0005325490196, + +0.0012686274510, +0.0017413725490, +0.0016933333333, +0.0010950980392, + +0.0000956862745, -0.0010172549020, -0.0018668627451, -0.0020464705882, + -0.0013703921569, -0.0000358823529, +0.0014958823529, +0.0025731372549, + +0.0026568627451, +0.0014360784314, -0.0008676470588, -0.0032970588235, + -0.0045117647059, -0.0038894117647, -0.0018070588235, +0.0008017647059, + +0.0030996078431, +0.0043143137255, +0.0040211764706, +0.0023754901961, + +0.0002692156863, -0.0012147058824, -0.0014480392157, -0.0006462745098, + +0.0004727450980, +0.0012327450980, +0.0012984313725, +0.0006882352941, + -0.0002692156863, -0.0010711764706, -0.0012147058824, -0.0006821568627, + +0.0000837254902, +0.0006343137255, +0.0008496078431, +0.0008676470588, + +0.0007539215686, +0.0003949019608, +0.0000000000000, -0.0000539215686, + +0.0002811764706, +0.0006882352941, +0.0008137254902, +0.0005564705882, + +0.0001196078431, -0.0002811764706, -0.0005864705882, -0.0006821568627, + -0.0004727450980, -0.0000060784314, +0.0005445098039, +0.0009872549020, + +0.0011788235294, +0.0011070588235, +0.0007180392157, +0.0000598039216, + -0.0006282352941, -0.0010650980392, -0.0011129411765, -0.0008676470588, + -0.0005803921569, -0.0003290196078, -0.0000898039216, +0.0000778431373, + +0.0000898039216, -0.0000060784314, -0.0001137254902, -0.0001674509804, + -0.0002154901961, -0.0001796078431, +0.0000478431373, +0.0004905882353, + +0.0008915686275, +0.0009274509804, +0.0005325490196, -0.0000180392157, + -0.0005325490196, -0.0008496078431, -0.0009154901961, -0.0007600000000, + -0.0005325490196, -0.0003890196078, -0.0004427450980, -0.0006462745098, + -0.0008496078431, -0.0008796078431, -0.0006941176471, -0.0003709803922, + -0.0000119607843, +0.0002094117647, +0.0002811764706, +0.0003050980392, + +0.0003350980392, +0.0003590196078, +0.0004009803922, +0.0004068627451, + +0.0002633333333, -0.0000358823529, -0.0003531372549, -0.0005325490196, + -0.0004727450980, -0.0001496078431, +0.0003890196078, +0.0008796078431, + +0.0009454901961, +0.0004727450980, -0.0002094117647, -0.0006582352941, + -0.0006462745098, -0.0003170588235, +0.0000598039216, +0.0002213725490, + +0.0000358823529, -0.0004488235294, -0.0010292156863, -0.0014062745098, + -0.0013882352941, -0.0011009803922, -0.0007241176471, -0.0003411764706, + -0.0000478431373, +0.0000956862745, +0.0001435294118, +0.0001315686275, + +0.0000717647059, -0.0000239215686, -0.0000539215686, +0.0000778431373, + +0.0002394117647, +0.0001974509804, -0.0000837254902, -0.0004488235294, + -0.0006821568627, -0.0007001960784, -0.0004847058824, -0.0001554901961, + +0.0000956862745, +0.0001674509804, +0.0001435294118, +0.0000898039216, + +0.0000598039216, +0.0001137254902, +0.0002513725490, +0.0002992156863, + +0.0000658823529, -0.0004607843137, -0.0010411764706, -0.0013403921569, + -0.0012984313725, -0.0010352941176, -0.0006582352941, -0.0002035294118, + +0.0001674509804, +0.0003650980392, +0.0003949019608, +0.0003949019608, + +0.0004009803922, +0.0003650980392, +0.0001854901961, -0.0000778431373, + -0.0004009803922, -0.0006941176471, -0.0008617647059, -0.0008256862745, + -0.0005984313725, -0.0002452941176, +0.0001017647059, +0.0003350980392, + +0.0003290196078, +0.0000898039216, -0.0001854901961, -0.0003290196078, + -0.0003231372549, -0.0001915686275, +0.0000000000000, +0.0001915686275, + +0.0002992156863, +0.0002094117647, -0.0000478431373, -0.0003050980392, + -0.0004188235294, -0.0004068627451, -0.0003170588235, -0.0002452941176, + -0.0002333333333, -0.0002394117647, -0.0002094117647, -0.0001735294118, + -0.0001915686275, -0.0002872549020, -0.0003411764706, -0.0002572549020, + -0.0000539215686, +0.0002094117647, +0.0004786274510, +0.0005984313725, + +0.0005445098039, +0.0004427450980, +0.0004727450980, +0.0005505882353, + +0.0004905882353, +0.0002213725490, -0.0000898039216, -0.0003411764706, + -0.0004786274510, -0.0004188235294, -0.0001315686275, +0.0002633333333, + +0.0006043137255, +0.0007121568627, +0.0005803921569, +0.0003231372549, + +0.0001196078431, +0.0001137254902, +0.0004607843137, +0.0010711764706, + +0.0015737254902, +0.0015558823529, +0.0010233333333, +0.0002692156863, + -0.0004009803922, -0.0007719607843, -0.0006882352941, -0.0002094117647, + +0.0004368627451, +0.0009813725490, +0.0012566666667, +0.0013164705882, + +0.0012925490196, +0.0012447058824, +0.0012088235294, +0.0011368627451, + +0.0009752941176, +0.0007300000000, +0.0004666666667, +0.0002035294118, + +0.0000060784314, +0.0000000000000, +0.0001435294118, +0.0002692156863, + +0.0001915686275, -0.0001615686275, -0.0005923529412, -0.0007839215686, + -0.0007180392157, -0.0005564705882, -0.0004009803922, -0.0002692156863, + -0.0001854901961, -0.0001554901961, -0.0001915686275, -0.0002572549020, + -0.0002394117647, -0.0000778431373, +0.0001137254902, +0.0002394117647, + +0.0002213725490, +0.0000717647059, -0.0001796078431, -0.0005445098039, + -0.0009215686275, -0.0011249019608, -0.0010950980392, -0.0008376470588, + -0.0004249019608, +0.0000000000000, +0.0002752941176, +0.0003590196078, + +0.0002572549020, +0.0000598039216, -0.0000478431373, +0.0000539215686, + +0.0003290196078, +0.0006282352941, +0.0008556862745, +0.0009096078431, + +0.0007060784314, +0.0002752941176, -0.0002154901961, -0.0005266666667, + -0.0004905882353, -0.0001796078431, +0.0001674509804, +0.0003829411765, + +0.0003350980392, -0.0000658823529, -0.0007121568627, -0.0013403921569, + -0.0016515686275, -0.0015078431373, -0.0010472549020, -0.0005745098039, + -0.0001435294118, +0.0002633333333, +0.0005684313725, +0.0007539215686, + +0.0008676470588, +0.0009096078431, +0.0008856862745, +0.0007360784314, + +0.0004188235294, +0.0000000000000, -0.0003709803922, -0.0005445098039, + -0.0004368627451, -0.0001735294118, +0.0001076470588, +0.0003709803922, + +0.0005086274510, +0.0004068627451, +0.0000837254902, -0.0002872549020, + -0.0004666666667, -0.0003531372549, -0.0000837254902, +0.0001615686275, + +0.0002513725490, +0.0000956862745, -0.0002872549020, -0.0007060784314, + -0.0009096078431, -0.0007658823529, -0.0004547058824, -0.0002394117647, + -0.0001735294118, -0.0001137254902, +0.0000539215686, +0.0003050980392, + +0.0005325490196, +0.0007060784314, +0.0008078431373, +0.0007839215686, + +0.0005984313725, +0.0003231372549, +0.0000658823529, -0.0000419607843, + -0.0000060784314, +0.0001076470588, +0.0002333333333, +0.0003709803922, + +0.0004607843137, +0.0004905882353, +0.0004547058824, +0.0003829411765, + +0.0003350980392, +0.0003531372549, +0.0003650980392, +0.0003350980392, + +0.0002872549020, +0.0002274509804, +0.0000898039216, -0.0001017647059, + -0.0001974509804, -0.0001196078431, +0.0000119607843, +0.0000837254902, + +0.0000180392157, -0.0000658823529, -0.0000717647059, -0.0000419607843, + -0.0000119607843, +0.0000956862745, +0.0002931372549, +0.0004607843137, + +0.0005684313725, +0.0006401960784, +0.0006882352941, +0.0006941176471, + +0.0007241176471, +0.0007898039216, +0.0008137254902, +0.0007180392157, + +0.0005564705882, +0.0004068627451, +0.0003470588235, +0.0003590196078, + +0.0003890196078, +0.0003829411765, +0.0003770588235, +0.0003111764706, + +0.0001735294118, +0.0000598039216, +0.0001017647059, +0.0001974509804, + +0.0002154901961, +0.0001554901961, +0.0001017647059, +0.0000000000000, + -0.0002035294118, -0.0003829411765, -0.0003770588235, -0.0002154901961, + -0.0000837254902, -0.0002094117647, -0.0005445098039, -0.0008737254902, + -0.0010352941176, -0.0010233333333, -0.0008437254902, -0.0005325490196, + -0.0001554901961, +0.0002154901961, +0.0005386274510, +0.0007600000000, + +0.0008737254902, +0.0009215686275, +0.0008976470588, +0.0008376470588, + +0.0007658823529, +0.0007241176471, +0.0006760784314, +0.0005803921569, + +0.0004188235294, +0.0003050980392, +0.0003050980392, +0.0003770588235, + +0.0004427450980, +0.0004966666667, +0.0005205882353, +0.0005564705882, + +0.0005564705882, +0.0005205882353, +0.0004727450980, +0.0004307843137, + +0.0003829411765, +0.0003890196078, +0.0003949019608, +0.0003650980392, + +0.0003290196078, +0.0003470588235, +0.0003350980392, +0.0002213725490, + +0.0000000000000, -0.0002394117647, -0.0004009803922, -0.0004129411765, + -0.0003111764706, -0.0001854901961, -0.0001137254902, -0.0001376470588, + -0.0002452941176, -0.0003829411765, -0.0004666666667, -0.0004847058824, + -0.0004488235294, -0.0003231372549, -0.0001796078431, -0.0001435294118, + -0.0002154901961, -0.0002633333333, -0.0002274509804, -0.0001315686275, + -0.0000598039216, -0.0000658823529, -0.0001496078431, -0.0003290196078, + -0.0005445098039, -0.0006882352941, -0.0007001960784, -0.0006103921569, + -0.0004488235294, -0.0002931372549, -0.0001735294118, -0.0001315686275, + -0.0002035294118, -0.0003709803922, -0.0005205882353, -0.0006282352941, + -0.0006701960784, -0.0006223529412, -0.0005147058824, -0.0004188235294, + -0.0003231372549, -0.0001915686275, -0.0000358823529, +0.0000539215686, + +0.0000898039216, +0.0001137254902, +0.0002213725490, +0.0004368627451, + +0.0006582352941, +0.0007658823529, +0.0007600000000, +0.0006582352941, + +0.0004966666667, +0.0002513725490, -0.0001017647059, -0.0005147058824, + -0.0007898039216, -0.0008256862745, -0.0005984313725, -0.0001915686275, + +0.0001796078431, +0.0003949019608, +0.0004307843137, +0.0002752941176, + +0.0000300000000, -0.0001674509804, -0.0003111764706, -0.0003770588235, + -0.0003290196078, -0.0001554901961, +0.0000358823529, +0.0001315686275, + +0.0000300000000, -0.0002213725490, -0.0004786274510, -0.0005923529412, + -0.0006103921569, -0.0006103921569, -0.0005984313725, -0.0005325490196, + -0.0004068627451, -0.0002633333333, -0.0001915686275, -0.0001915686275, + -0.0001735294118, -0.0000478431373, +0.0001435294118, +0.0002811764706, + +0.0002752941176, +0.0001854901961, +0.0001256862745, +0.0001376470588, + +0.0001435294118, +0.0000956862745, -0.0000180392157, -0.0000956862745, + -0.0001137254902, -0.0001615686275, -0.0002872549020, -0.0004068627451, + -0.0004068627451, -0.0003111764706, -0.0002035294118, -0.0001256862745, + -0.0000717647059, -0.0000300000000, -0.0000119607843, -0.0000119607843, + -0.0000060784314, -0.0000180392157, -0.0001376470588, -0.0004068627451, + -0.0007001960784, -0.0008796078431, -0.0008856862745, -0.0007480392157, + -0.0004847058824, -0.0001554901961, +0.0001854901961, +0.0003890196078, + +0.0003231372549, +0.0000778431373, -0.0001435294118, -0.0002692156863, + -0.0002692156863, -0.0001915686275, -0.0001196078431, -0.0001256862745, + -0.0001915686275, -0.0002752941176, -0.0003531372549, -0.0004666666667, + -0.0005923529412, -0.0006582352941, -0.0006521568627, -0.0006582352941, + -0.0007241176471, -0.0007958823529, -0.0007958823529, -0.0006882352941, + -0.0004786274510, -0.0002213725490, -0.0000539215686, -0.0000658823529, + -0.0001854901961, -0.0002333333333, -0.0000956862745, +0.0001496078431, + +0.0002572549020, +0.0001076470588, -0.0001974509804, -0.0005025490196, + -0.0006821568627, -0.0006462745098, -0.0004249019608, -0.0001076470588, + +0.0001796078431, +0.0003290196078, +0.0002931372549, +0.0001256862745, + -0.0001017647059, -0.0002692156863, -0.0002452941176, +0.0000358823529, + +0.0004905882353, +0.0009274509804, +0.0011488235294, +0.0010890196078, + +0.0007600000000, +0.0002452941176, -0.0002692156863, -0.0005984313725, + -0.0006103921569, -0.0003170588235, +0.0000837254902, +0.0003770588235, + +0.0004307843137, +0.0002572549020, -0.0000419607843, -0.0003709803922, + -0.0006401960784, -0.0007778431373, -0.0007600000000, -0.0005923529412, + -0.0003290196078, -0.0000300000000, +0.0002572549020, +0.0005025490196, + +0.0006343137255, +0.0006043137255, +0.0004427450980, +0.0001615686275, + -0.0001496078431, -0.0003350980392, -0.0002333333333, +0.0001017647059, + +0.0004966666667, +0.0007839215686, +0.0008437254902, +0.0006343137255, + +0.0002154901961, -0.0002035294118, -0.0004009803922, -0.0003111764706, + -0.0000239215686, +0.0002692156863, +0.0004249019608, +0.0003590196078, + +0.0001554901961, -0.0000778431373, -0.0002213725490, -0.0002394117647, + -0.0001796078431, -0.0000658823529, +0.0000956862745, +0.0002692156863, + +0.0003231372549, +0.0002452941176, +0.0001554901961, +0.0001376470588, + +0.0001554901961, +0.0001076470588, -0.0000180392157, -0.0001554901961, + -0.0002872549020, -0.0004249019608, -0.0005147058824, -0.0005025490196, + -0.0003890196078, -0.0001915686275, +0.0000717647059, +0.0004009803922, + +0.0006821568627, +0.0008137254902, +0.0007480392157, +0.0005325490196, + +0.0002513725490, +0.0000180392157, -0.0001615686275, -0.0003411764706, + -0.0004905882353, -0.0005445098039, -0.0005025490196, -0.0003650980392, + -0.0001256862745, +0.0001974509804, +0.0004966666667, +0.0005984313725, + +0.0004068627451, -0.0000180392157, -0.0005025490196, -0.0008317647059, + -0.0008437254902, -0.0005564705882, -0.0001315686275, +0.0002572549020, + +0.0005086274510, +0.0004966666667, +0.0002692156863, -0.0000060784314, + -0.0001974509804, -0.0002333333333, -0.0001315686275, +0.0000180392157, + +0.0001435294118, +0.0002154901961, +0.0002811764706, +0.0003709803922, + +0.0004666666667, +0.0005205882353, +0.0005684313725, +0.0006223529412, + +0.0006582352941, +0.0006462745098, +0.0005684313725, +0.0004249019608, + +0.0002811764706, +0.0001615686275, +0.0000956862745, +0.0001017647059, + +0.0001796078431, +0.0002633333333, +0.0002811764706, +0.0002394117647, + +0.0001854901961, +0.0001435294118, +0.0001196078431, +0.0001017647059, + +0.0000717647059, +0.0000239215686, -0.0000658823529, -0.0001974509804, + -0.0002992156863, -0.0002872549020, -0.0001674509804, +0.0000300000000, + +0.0002633333333, +0.0004488235294, +0.0004847058824, +0.0003829411765, + +0.0002035294118, +0.0000060784314, -0.0001854901961, -0.0003111764706, + -0.0002931372549, -0.0001196078431, +0.0001196078431, +0.0003590196078, + +0.0005505882353, +0.0006701960784, +0.0006882352941, +0.0006103921569, + +0.0004368627451, +0.0002154901961, -0.0000300000000, -0.0002633333333, + -0.0004307843137, -0.0004547058824, -0.0002931372549, -0.0000239215686, + +0.0001974509804, +0.0002633333333, +0.0002333333333, +0.0001854901961, + +0.0001256862745, +0.0000060784314, -0.0001196078431, -0.0001854901961, + -0.0001674509804, -0.0001315686275, -0.0001017647059, -0.0000358823529, + +0.0001315686275, +0.0003770588235, +0.0006223529412, +0.0007658823529, + +0.0007180392157, +0.0004129411765, -0.0000539215686, -0.0005025490196, + -0.0007360784314, -0.0006821568627, -0.0003531372549, +0.0000956862745, + +0.0004607843137, +0.0006282352941, +0.0006282352941, +0.0004607843137, + +0.0002035294118, -0.0000358823529, -0.0001496078431, -0.0001076470588, + +0.0000358823529, +0.0001854901961, +0.0002752941176, +0.0002633333333, + +0.0001256862745, -0.0000898039216, -0.0002992156863, -0.0004188235294, + -0.0004547058824, -0.0004427450980, -0.0003709803922, -0.0002274509804, + -0.0001256862745, -0.0001435294118, -0.0001915686275, -0.0001376470588, + +0.0000119607843, +0.0001915686275, +0.0002811764706, +0.0002274509804, + +0.0000717647059, -0.0000419607843, -0.0001017647059, -0.0001137254902, + -0.0001137254902, -0.0001076470588, -0.0001256862745, -0.0001376470588, + -0.0001315686275, -0.0000717647059, +0.0000717647059, +0.0002931372549, + +0.0004966666667, +0.0006043137255, +0.0005984313725, +0.0005025490196, + +0.0003590196078, +0.0002154901961, +0.0001496078431, +0.0001915686275, + +0.0002872549020, +0.0003531372549, +0.0003111764706, +0.0001376470588, + -0.0000598039216, -0.0001974509804, -0.0002872549020, -0.0003770588235, + -0.0004547058824, -0.0004727450980, -0.0003709803922, -0.0001435294118, + +0.0001554901961, +0.0004607843137, +0.0007300000000, +0.0008856862745, + +0.0008737254902, +0.0006941176471, +0.0004068627451, +0.0000598039216, + -0.0002333333333, -0.0003829411765, -0.0003350980392, -0.0002154901961, + -0.0001554901961, -0.0001674509804, -0.0001915686275, -0.0001915686275, + -0.0001615686275, -0.0001137254902, -0.0000956862745, -0.0001435294118, + -0.0002572549020, -0.0003829411765, -0.0004307843137, -0.0003650980392, + -0.0002154901961, -0.0000717647059, +0.0000119607843, +0.0000060784314, + -0.0001196078431, -0.0003111764706, -0.0004847058824, -0.0005684313725, + -0.0005803921569, -0.0005386274510, -0.0004249019608, -0.0002213725490, + -0.0000119607843, +0.0001196078431, +0.0001554901961, +0.0001017647059, + -0.0000358823529, -0.0002452941176, -0.0004547058824, -0.0006043137255, + -0.0006821568627, -0.0006462745098, -0.0005147058824, -0.0003350980392, + -0.0001735294118, -0.0000419607843, +0.0000898039216, +0.0002811764706, + +0.0004786274510, +0.0005564705882, +0.0004427450980, +0.0002035294118, + -0.0000419607843, -0.0002452941176, -0.0003290196078, -0.0002513725490, + -0.0000419607843, +0.0002213725490, +0.0004727450980, +0.0005625490196, + +0.0004307843137, +0.0001076470588, -0.0002452941176, -0.0004786274510, + -0.0004666666667, -0.0002572549020, +0.0000239215686, +0.0002213725490, + +0.0002274509804, +0.0000539215686, -0.0001076470588, -0.0001376470588, + +0.0000180392157, +0.0002394117647, +0.0003890196078, +0.0003590196078, + +0.0000956862745, -0.0003470588235, -0.0007480392157, -0.0008856862745, + -0.0007001960784, -0.0003290196078, +0.0000358823529, +0.0002633333333, + +0.0003111764706, +0.0001615686275, -0.0000956862745, -0.0003531372549, + -0.0005025490196, -0.0005147058824, -0.0004009803922, -0.0002692156863, + -0.0001915686275, -0.0001554901961, -0.0001256862745, -0.0000778431373, + +0.0000119607843, +0.0001256862745, +0.0001615686275, +0.0000837254902, + -0.0000778431373, -0.0002452941176, -0.0002931372549, -0.0001554901961, + +0.0000778431373, +0.0003709803922, +0.0006162745098, +0.0007180392157, + +0.0005864705882, +0.0003050980392, +0.0000300000000, -0.0000837254902, + -0.0000300000000, +0.0001796078431, +0.0004666666667, +0.0006821568627, + +0.0007121568627, +0.0005864705882, +0.0003350980392, +0.0000239215686, + -0.0002274509804, -0.0002513725490, -0.0000239215686, +0.0003111764706, + +0.0006223529412, +0.0008198039216, +0.0008317647059, +0.0006462745098, + +0.0003231372549, +0.0000000000000, -0.0002035294118, -0.0002811764706, + -0.0002572549020, -0.0001854901961, -0.0001017647059, -0.0000358823529, + -0.0000119607843, -0.0000539215686, -0.0001315686275, -0.0002035294118, + -0.0002452941176, -0.0002274509804, -0.0001376470588, -0.0000119607843, + +0.0001315686275, +0.0002633333333, +0.0003350980392, +0.0002872549020, + +0.0001435294118, -0.0000300000000, -0.0001615686275, -0.0001854901961, + -0.0001017647059, +0.0000300000000, +0.0001735294118, +0.0002633333333, + +0.0002452941176, +0.0001554901961, +0.0000300000000, -0.0001196078431, + -0.0002811764706, -0.0003411764706, -0.0002035294118, +0.0001315686275, + +0.0005984313725, +0.0010172549020, +0.0012027450980, +0.0010650980392, + +0.0006343137255, +0.0000419607843, -0.0005266666667, -0.0008737254902, + -0.0009154901961, -0.0006760784314, -0.0002811764706, +0.0001615686275, + +0.0005205882353, +0.0006701960784, +0.0005445098039, +0.0002154901961, + -0.0001315686275, -0.0002992156863, -0.0002633333333, -0.0001076470588, + +0.0000598039216, +0.0002333333333, +0.0003829411765, +0.0005205882353, + +0.0005803921569, +0.0005086274510, +0.0002811764706, -0.0000300000000, + -0.0003470588235, -0.0005625490196, -0.0005984313725, -0.0004666666667, + -0.0002633333333, -0.0001137254902, -0.0000956862745, -0.0001854901961, + -0.0002872549020, -0.0003231372549, -0.0002633333333, -0.0001376470588, + +0.0000119607843, +0.0001435294118, +0.0002035294118, +0.0001854901961, + +0.0001196078431, +0.0000180392157, -0.0000539215686, -0.0001017647059, + -0.0001435294118, -0.0002213725490, -0.0003231372549, -0.0004786274510, + -0.0006103921569, -0.0006162745098, -0.0003949019608, +0.0000000000000, + +0.0004427450980, +0.0007658823529, +0.0008617647059, +0.0006882352941, + +0.0003411764706, -0.0000478431373, -0.0003470588235, -0.0004368627451, + -0.0002931372549, -0.0000239215686, +0.0001974509804, +0.0002572549020, + +0.0001256862745, -0.0001137254902, -0.0003890196078, -0.0005564705882, + -0.0005025490196, -0.0002154901961, +0.0001915686275, +0.0005803921569, + +0.0007658823529, +0.0006882352941, +0.0004129411765, +0.0000837254902, + -0.0001735294118, -0.0002872549020, -0.0002931372549, -0.0002274509804, + -0.0001554901961, -0.0000956862745, -0.0000478431373, +0.0000239215686, + +0.0000898039216, +0.0001256862745, +0.0000898039216, -0.0000060784314, + -0.0001256862745, -0.0001915686275, -0.0001735294118, -0.0000837254902, + +0.0000300000000, +0.0001615686275, +0.0002752941176, +0.0002931372549, + +0.0001496078431, -0.0001554901961, -0.0005445098039, -0.0008256862745, + -0.0008317647059, -0.0005684313725, -0.0001496078431, +0.0002394117647, + +0.0004905882353, +0.0005266666667, +0.0003949019608, +0.0001796078431, + -0.0000060784314, -0.0001256862745, -0.0001554901961, -0.0001554901961, + -0.0001796078431, -0.0002452941176, -0.0003290196078, -0.0004249019608, + -0.0005266666667, -0.0005984313725, -0.0005505882353, -0.0003829411765, + -0.0001915686275, -0.0000778431373, -0.0000060784314, +0.0000180392157, + +0.0000060784314, -0.0000358823529, -0.0001137254902, -0.0002333333333, + -0.0003590196078, -0.0004368627451, -0.0004188235294, -0.0002872549020, + -0.0001137254902, +0.0000419607843, +0.0001137254902, +0.0000717647059, + -0.0000658823529, -0.0002572549020, -0.0004129411765, -0.0004488235294, + -0.0003770588235, -0.0002333333333, -0.0000658823529, +0.0001017647059, + +0.0002452941176, +0.0003170588235, +0.0002394117647, +0.0000539215686, + -0.0001315686275, -0.0002035294118, -0.0001376470588, -0.0000119607843, + +0.0000778431373, +0.0001674509804, +0.0002513725490, +0.0003231372549, + +0.0003470588235, +0.0003411764706, +0.0002992156863, +0.0002094117647, + +0.0000598039216, -0.0001196078431, -0.0002633333333, -0.0002992156863, + -0.0002394117647, -0.0001735294118, -0.0001196078431, -0.0000898039216, + -0.0000598039216, -0.0000239215686, +0.0000478431373, +0.0001496078431, + +0.0002692156863, +0.0003470588235, +0.0003231372549, +0.0001435294118, + -0.0000956862745, -0.0003050980392, -0.0004188235294, -0.0004188235294, + -0.0003290196078, -0.0002213725490, -0.0001376470588, -0.0001017647059, + -0.0000898039216, -0.0001256862745, -0.0002154901961, -0.0003350980392, + -0.0004129411765, -0.0004488235294, -0.0004188235294, -0.0003531372549, + -0.0002633333333, -0.0000898039216, +0.0001256862745, +0.0003290196078, + +0.0004068627451, +0.0003170588235, +0.0000598039216, -0.0002633333333, + -0.0005325490196, -0.0006282352941, -0.0005564705882, -0.0003709803922, + -0.0001796078431, +0.0000000000000, +0.0001615686275, +0.0003350980392, + +0.0004786274510, +0.0005386274510, +0.0004727450980, +0.0003231372549, + +0.0001076470588, -0.0000837254902, -0.0002274509804, -0.0002752941176, + -0.0002872549020, -0.0002931372549, -0.0002811764706, -0.0001735294118, + +0.0000419607843, +0.0003170588235, +0.0005445098039, +0.0006462745098, + +0.0006103921569, +0.0004368627451, +0.0001796078431, -0.0000478431373, + -0.0001435294118, -0.0000778431373, +0.0001137254902, +0.0003411764706, + +0.0005445098039, +0.0006462745098, +0.0006521568627, +0.0005505882353, + +0.0004009803922, +0.0002513725490, +0.0001315686275, +0.0000358823529, + -0.0000239215686, -0.0000658823529, -0.0000717647059, -0.0000717647059, + -0.0000478431373, -0.0000358823529, +0.0000000000000, +0.0000837254902, + +0.0002274509804, +0.0003829411765, +0.0005086274510, +0.0005505882353, + +0.0004786274510, +0.0002872549020, +0.0000000000000, -0.0003231372549, + -0.0006043137255, -0.0007778431373, -0.0008256862745, -0.0007121568627, + -0.0004666666667, -0.0001554901961, +0.0000956862745, +0.0002213725490, + +0.0002154901961, +0.0001496078431, +0.0000898039216, +0.0000539215686, + +0.0000000000000, -0.0000300000000, -0.0000060784314, +0.0000956862745, + +0.0002154901961, +0.0002752941176, +0.0002274509804, +0.0000956862745, + -0.0000358823529, -0.0000898039216, -0.0000837254902, -0.0000358823529, + -0.0000239215686, -0.0000478431373, -0.0000539215686, +0.0000180392157, + +0.0001735294118, +0.0003470588235, +0.0004607843137, +0.0004847058824, + +0.0004068627451, +0.0002333333333, +0.0000358823529, -0.0001554901961, + -0.0002872549020, -0.0003111764706, -0.0001974509804, +0.0000119607843, + +0.0002452941176, +0.0003949019608, +0.0004068627451, +0.0002513725490, + +0.0000180392157, -0.0001854901961, -0.0002513725490, -0.0001674509804, + +0.0000419607843, +0.0002752941176, +0.0004188235294, +0.0003590196078, + +0.0001615686275, -0.0000956862745, -0.0003170588235, -0.0004188235294, + -0.0003411764706, -0.0001376470588, +0.0001076470588, +0.0003290196078, + +0.0004666666667, +0.0004786274510, +0.0004068627451, +0.0003290196078, + +0.0002752941176, +0.0002394117647, +0.0001796078431, +0.0000478431373, + -0.0001315686275, -0.0002692156863, -0.0002692156863, -0.0000956862745, + +0.0001735294118, +0.0004488235294, +0.0005864705882, +0.0005266666667, + +0.0002692156863, -0.0000300000000, -0.0002931372549, -0.0004068627451, + -0.0003829411765, -0.0002452941176, -0.0000300000000, +0.0001854901961, + +0.0002992156863, +0.0002572549020, +0.0001376470588, +0.0000539215686, + +0.0000419607843, +0.0000778431373, +0.0001435294118, +0.0002333333333, + +0.0002931372549, +0.0002931372549, +0.0002213725490, +0.0000658823529, + -0.0001376470588, -0.0003231372549, -0.0003890196078, -0.0003350980392, + -0.0001796078431, +0.0000119607843, +0.0002154901961, +0.0003231372549, + +0.0003470588235, +0.0002992156863, +0.0002274509804, +0.0001315686275, + +0.0000358823529, -0.0000598039216, -0.0001674509804, -0.0003111764706, + -0.0004009803922, -0.0003650980392, -0.0001735294118, +0.0000658823529, + +0.0002992156863, +0.0004427450980, +0.0004666666667, +0.0003111764706, + +0.0000358823529, -0.0002452941176, -0.0004249019608, -0.0004427450980, + -0.0002872549020, -0.0000419607843, +0.0001554901961, +0.0002333333333, + +0.0001915686275, +0.0000898039216, -0.0000119607843, -0.0000419607843, + -0.0000060784314, +0.0000539215686, +0.0000837254902, +0.0000300000000, + -0.0000956862745, -0.0002094117647, -0.0002931372549, -0.0003231372549, + -0.0003050980392, -0.0001974509804, -0.0000358823529, +0.0001496078431, + +0.0002811764706, +0.0003290196078, +0.0002931372549, +0.0001974509804, + +0.0000419607843, -0.0001196078431, -0.0002752941176, -0.0003770588235, + -0.0004427450980, -0.0004188235294, -0.0002931372549, -0.0000837254902, + +0.0001076470588, +0.0002452941176, +0.0003231372549, +0.0003350980392, + +0.0002752941176, +0.0001496078431, +0.0000239215686, -0.0000837254902, + -0.0001496078431, -0.0001796078431, -0.0001615686275, -0.0001256862745, + -0.0000658823529, +0.0000000000000, +0.0001076470588, +0.0002154901961, + +0.0002931372549, +0.0002992156863, +0.0002394117647, +0.0001076470588, + -0.0000180392157, -0.0001137254902, -0.0001435294118, -0.0001256862745, + -0.0000837254902, -0.0000658823529, -0.0000419607843, -0.0000060784314, + +0.0000598039216, +0.0001615686275, +0.0002872549020, +0.0003890196078, + +0.0004188235294, +0.0003470588235, +0.0001796078431, -0.0000180392157, + -0.0001735294118, -0.0001854901961, -0.0000717647059, +0.0000837254902, + +0.0002094117647, +0.0002931372549, +0.0003231372549, +0.0002811764706, + +0.0001674509804, +0.0000239215686, -0.0001076470588, -0.0001974509804, + -0.0002513725490, -0.0002394117647, -0.0001735294118, -0.0000778431373, + -0.0000180392157, +0.0000119607843, +0.0000180392157, +0.0000060784314, + -0.0000717647059, -0.0002094117647, -0.0003650980392, -0.0004905882353, + -0.0005325490196, -0.0004847058824, -0.0003770588235, -0.0002154901961, + -0.0000419607843, +0.0000658823529, +0.0000717647059, +0.0000000000000, + -0.0000898039216, -0.0001435294118, -0.0001137254902, -0.0000419607843, + +0.0000180392157, +0.0000000000000, -0.0001017647059, -0.0002752941176, + -0.0004188235294, -0.0004786274510, -0.0004129411765, -0.0002274509804, + +0.0000300000000, +0.0002333333333, +0.0003050980392, +0.0002452941176, + +0.0001315686275, +0.0000119607843, -0.0000539215686, -0.0000956862745, + -0.0001076470588, -0.0001196078431, -0.0001256862745, -0.0001076470588, + -0.0000419607843, +0.0000419607843, +0.0001315686275, +0.0002094117647, + +0.0002333333333, +0.0001615686275, +0.0000060784314, -0.0001854901961, + -0.0003411764706, -0.0003590196078, -0.0002692156863, -0.0001196078431, + +0.0000180392157, +0.0001496078431, +0.0002333333333, +0.0002931372549, + +0.0003411764706, +0.0003650980392, +0.0003231372549, +0.0002213725490, + +0.0000478431373, -0.0001137254902, -0.0002452941176, -0.0003050980392, + -0.0003231372549, -0.0002931372549, -0.0002035294118, -0.0000658823529, + +0.0000658823529, +0.0001315686275, +0.0001137254902, +0.0000119607843, + -0.0000956862745, -0.0001854901961, -0.0002154901961, -0.0002094117647, + -0.0001796078431, -0.0001554901961, -0.0001376470588, -0.0001137254902, + -0.0000778431373, -0.0000478431373, -0.0000180392157, -0.0000119607843, + -0.0000239215686, -0.0000539215686, -0.0000717647059, -0.0000898039216, + -0.0001076470588, -0.0001376470588, -0.0001735294118, -0.0002154901961, + -0.0002154901961, -0.0001735294118, -0.0001017647059, -0.0000598039216, + -0.0000778431373, -0.0001256862745, -0.0001496078431, -0.0001315686275, + -0.0000837254902, -0.0000180392157, +0.0000060784314, -0.0000060784314, + -0.0000419607843, -0.0000717647059, -0.0000778431373, -0.0000119607843, + +0.0000837254902, +0.0002094117647, +0.0003350980392, +0.0004249019608, + +0.0004368627451, +0.0003890196078, +0.0003231372549, +0.0002692156863, + +0.0001974509804, +0.0001137254902, -0.0000060784314, -0.0001315686275, + -0.0002094117647, -0.0001915686275, -0.0000837254902, +0.0000717647059, + +0.0002394117647, +0.0003949019608, +0.0004905882353, +0.0004905882353, + +0.0004068627451, +0.0002811764706, +0.0001796078431, +0.0001256862745, + +0.0001196078431, +0.0001076470588, +0.0000658823529, -0.0000358823529, + -0.0001496078431, -0.0001915686275, -0.0001196078431, +0.0000239215686, + +0.0001796078431, +0.0002692156863, +0.0002752941176, +0.0001735294118, + +0.0000180392157, -0.0001435294118, -0.0002811764706, -0.0003650980392, + -0.0003411764706, -0.0002035294118, -0.0000180392157, +0.0001435294118, + +0.0002274509804, +0.0002094117647, +0.0001076470588, +0.0000119607843, + -0.0000358823529, -0.0000300000000, +0.0000000000000, +0.0000658823529, + +0.0001315686275, +0.0002035294118, +0.0002154901961, +0.0001496078431, + +0.0000119607843, -0.0000956862745, -0.0001615686275, -0.0001496078431, + -0.0000778431373, +0.0000239215686, +0.0000898039216, +0.0000837254902, + +0.0000000000000, -0.0000956862745, -0.0001615686275, -0.0001674509804, + -0.0001196078431, -0.0000180392157, +0.0001196078431, +0.0002692156863, + +0.0003709803922, +0.0003829411765, +0.0003411764706, +0.0002811764706, + +0.0002394117647, +0.0001674509804, +0.0000180392157, -0.0001615686275, + -0.0003170588235, -0.0004129411765, -0.0004249019608, -0.0003411764706, + -0.0001735294118, +0.0000060784314, +0.0001496078431, +0.0001915686275, + +0.0001256862745, -0.0000419607843, -0.0002094117647, -0.0003050980392, + -0.0002752941176, -0.0001915686275, -0.0001196078431, -0.0001435294118, + -0.0002394117647, -0.0003709803922, -0.0004307843137, -0.0003709803922, + -0.0002035294118, -0.0000060784314, +0.0001554901961, +0.0002333333333, + +0.0002035294118, +0.0001137254902, +0.0000180392157, +0.0000000000000, + +0.0000060784314, +0.0000300000000, +0.0000180392157, +0.0000000000000, + -0.0000239215686, +0.0000060784314, +0.0000898039216, +0.0002154901961, + +0.0002692156863, +0.0002274509804, +0.0000778431373, -0.0000778431373, + -0.0002035294118, -0.0002333333333, -0.0001735294118, -0.0000239215686, + +0.0001615686275, +0.0003411764706, +0.0004368627451, +0.0003890196078, + +0.0002154901961, +0.0000300000000, -0.0000717647059, -0.0000419607843, + +0.0000837254902, +0.0002213725490, +0.0002811764706, +0.0002333333333, + +0.0000956862745, -0.0000598039216, -0.0001735294118, -0.0002452941176, + -0.0002513725490, -0.0001974509804, -0.0000898039216, -0.0000119607843, + +0.0000358823529, +0.0000598039216, +0.0000837254902, +0.0000658823529, + +0.0000119607843, -0.0000837254902, -0.0001674509804, -0.0002035294118, + -0.0001796078431, -0.0001137254902, -0.0000119607843, +0.0000478431373, + +0.0000419607843, -0.0000119607843, -0.0000837254902, -0.0001315686275, + -0.0001554901961, -0.0001554901961, -0.0001196078431, -0.0000358823529, + +0.0000478431373, +0.0001076470588, +0.0000898039216, +0.0000300000000, + -0.0000300000000, -0.0000658823529, -0.0000778431373, -0.0000778431373, + -0.0001196078431, -0.0001674509804, -0.0001974509804, -0.0001735294118, + -0.0001256862745, -0.0000239215686, +0.0000598039216, +0.0001315686275, + +0.0001496078431, +0.0001256862745, +0.0000419607843, -0.0000598039216, + -0.0001735294118, -0.0002572549020, -0.0002811764706, -0.0002094117647, + -0.0000837254902, +0.0000180392157, +0.0000539215686, +0.0000119607843, + -0.0000658823529, -0.0001735294118, -0.0002931372549, -0.0003770588235, + -0.0003290196078, -0.0001674509804, +0.0000539215686, +0.0002213725490, + +0.0002811764706, +0.0002154901961, +0.0000658823529, -0.0001076470588, + -0.0002333333333, -0.0002513725490, -0.0001376470588, +0.0000300000000, + +0.0001854901961, +0.0002213725490, +0.0001137254902, -0.0001017647059, + -0.0003350980392, -0.0004666666667, -0.0004249019608, -0.0002274509804, + +0.0000358823529, +0.0002633333333, +0.0003650980392, +0.0003290196078, + +0.0001615686275, -0.0000239215686, -0.0001496078431, -0.0001496078431, + -0.0000658823529, +0.0000300000000, +0.0000837254902, +0.0000898039216, + +0.0000539215686, +0.0000478431373, +0.0000539215686, +0.0000717647059, + +0.0000837254902, +0.0001076470588, +0.0001017647059, +0.0000539215686, + +0.0000000000000, -0.0000119607843, -0.0000180392157, -0.0000239215686, + +0.0000000000000, +0.0000239215686, +0.0000060784314, -0.0000717647059, + -0.0001854901961, -0.0002992156863, -0.0003650980392, -0.0003650980392, + -0.0002992156863, -0.0001735294118, -0.0000300000000, +0.0000598039216, + +0.0001017647059, +0.0000898039216, +0.0000658823529, +0.0000419607843, + +0.0000478431373, +0.0000539215686, +0.0000478431373, +0.0000000000000, + -0.0000358823529, -0.0000419607843, +0.0000060784314, +0.0000598039216, + +0.0000778431373, +0.0000239215686, -0.0000658823529, -0.0001615686275, + -0.0002035294118, -0.0001674509804, -0.0000300000000, +0.0001554901961, + +0.0003411764706, +0.0004547058824, +0.0004666666667, +0.0003890196078, + +0.0002452941176, +0.0001076470588, +0.0000000000000, -0.0000358823529, + -0.0000300000000, +0.0000180392157, +0.0000478431373, +0.0000419607843, + +0.0000000000000, -0.0000419607843, -0.0000598039216, -0.0000180392157, + +0.0000598039216, +0.0001496078431, +0.0001915686275, +0.0001854901961, + +0.0001496078431, +0.0001196078431, +0.0000956862745, +0.0000598039216, + +0.0000000000000, -0.0000837254902, -0.0002154901961, -0.0003650980392, + -0.0004607843137, -0.0004727450980, -0.0003650980392, -0.0001915686275, + -0.0000119607843, +0.0000956862745, +0.0001137254902, +0.0000358823529, + -0.0000598039216, -0.0001435294118, -0.0001315686275, -0.0000419607843, + +0.0000778431373, +0.0001615686275, +0.0001435294118, +0.0000119607843, + -0.0001496078431, -0.0002513725490, -0.0002452941176, -0.0001974509804, + -0.0001554901961, -0.0001435294118, -0.0001615686275, -0.0001915686275, + -0.0001854901961, -0.0001256862745, +0.0000000000000, +0.0001435294118, + +0.0002633333333, +0.0003170588235, +0.0003170588235, +0.0002931372549, + +0.0002333333333, +0.0001435294118, +0.0000478431373, +0.0000000000000, + -0.0000180392157, +0.0000119607843, +0.0000717647059, +0.0001615686275, + +0.0002274509804, +0.0002452941176, +0.0002094117647, +0.0001615686275, + +0.0001256862745, +0.0001137254902, +0.0001137254902, +0.0001554901961, + +0.0002513725490, +0.0003531372549, +0.0004129411765, +0.0004188235294, + +0.0004068627451, +0.0003709803922, +0.0003170588235, +0.0002333333333, + +0.0001435294118, +0.0000358823529, -0.0000358823529, -0.0000898039216, + -0.0000778431373, -0.0000239215686, +0.0000658823529, +0.0001674509804, + +0.0002452941176, +0.0002633333333, +0.0002513725490, +0.0002094117647, + +0.0001796078431, +0.0001554901961, +0.0001554901961, +0.0001796078431, + +0.0002154901961, +0.0002213725490, +0.0001796078431, +0.0001017647059, + +0.0000180392157, -0.0000300000000, -0.0000358823529, +0.0000239215686, + +0.0001196078431, +0.0001974509804, +0.0002154901961, +0.0001735294118, + +0.0000778431373, -0.0000419607843, -0.0001496078431, -0.0002094117647, + -0.0002094117647, -0.0001615686275, -0.0000898039216, -0.0000060784314, + +0.0000358823529, +0.0000539215686, +0.0000300000000, +0.0000000000000, + -0.0000478431373, -0.0000717647059, -0.0000478431373, +0.0000239215686, + +0.0001137254902, +0.0001915686275, +0.0002274509804, +0.0002154901961, + +0.0001854901961, +0.0001496078431, +0.0001315686275, +0.0001017647059, + +0.0000539215686, +0.0000000000000, -0.0000119607843, +0.0000300000000, + +0.0001256862745, +0.0002274509804, +0.0003111764706, +0.0003350980392, + +0.0003050980392, +0.0002035294118, +0.0000956862745, +0.0000300000000, + +0.0000478431373, +0.0000956862745, +0.0001137254902, +0.0000778431373, + -0.0000119607843, -0.0001435294118, -0.0002394117647, -0.0002394117647, + -0.0001256862745, +0.0000658823529, +0.0002572549020, +0.0003829411765, + +0.0003890196078, +0.0002752941176, +0.0000837254902, -0.0000898039216, + -0.0001674509804, -0.0000837254902, +0.0001017647059, +0.0002992156863, + +0.0003709803922, +0.0002752941176, +0.0000658823529, -0.0001196078431, + -0.0002274509804, -0.0001974509804, -0.0000598039216, +0.0001315686275, + +0.0002872549020, +0.0003411764706, +0.0002692156863, +0.0000898039216, + -0.0001076470588, -0.0002513725490, -0.0002572549020, -0.0001256862745, + +0.0000539215686, +0.0001674509804, +0.0001435294118, +0.0000000000000, + -0.0001854901961, -0.0003170588235, -0.0003411764706, -0.0002752941176, + -0.0001315686275, +0.0000239215686, +0.0001376470588, +0.0001315686275, + +0.0000300000000, -0.0001256862745, -0.0002333333333, -0.0002513725490, + -0.0001796078431, -0.0000598039216, +0.0000658823529, +0.0001674509804, + +0.0002333333333, +0.0002692156863, +0.0002992156863, +0.0002931372549, + +0.0002394117647, +0.0001315686275, +0.0000000000000, -0.0001076470588, + -0.0001974509804, -0.0002274509804, -0.0002035294118, -0.0001076470588, + +0.0000000000000, +0.0000956862745, +0.0001256862745, +0.0001076470588, + +0.0000119607843, -0.0000898039216, -0.0001435294118, -0.0001137254902, + -0.0000419607843, +0.0000000000000, +0.0000000000000, -0.0000300000000, + -0.0000837254902, -0.0001554901961, -0.0002274509804, -0.0002633333333, + -0.0002513725490, -0.0002333333333, -0.0002274509804, -0.0002213725490, + -0.0001974509804, -0.0001615686275, -0.0001137254902, -0.0000778431373, + -0.0000539215686, -0.0000658823529, -0.0001137254902, -0.0001974509804, + -0.0002692156863, -0.0003170588235, -0.0002931372549, -0.0002274509804, + -0.0001376470588, -0.0000956862745, -0.0000898039216, -0.0001196078431, + -0.0001137254902, -0.0000837254902, -0.0000300000000, +0.0000300000000, + +0.0001137254902, +0.0001796078431, +0.0001915686275, +0.0001376470588, + +0.0000419607843, -0.0000598039216, -0.0001376470588, -0.0001974509804, + -0.0002274509804, -0.0002274509804, -0.0001915686275, -0.0001256862745, + -0.0000717647059, -0.0000239215686, +0.0000000000000, +0.0000060784314, + -0.0000119607843, -0.0000239215686, -0.0000119607843, +0.0000419607843, + +0.0001076470588, +0.0001554901961, +0.0001435294118, +0.0000598039216, + -0.0001076470588, -0.0003050980392, -0.0004307843137, -0.0004068627451, + -0.0002513725490, -0.0000419607843, +0.0001496078431, +0.0002633333333, + +0.0002692156863, +0.0001796078431, +0.0000419607843, -0.0001076470588, + -0.0002452941176, -0.0003650980392, -0.0004427450980, -0.0004786274510, + -0.0004427450980, -0.0003411764706, -0.0001974509804, -0.0000778431373, + -0.0000060784314, +0.0000000000000, -0.0000180392157, -0.0000539215686, + -0.0000837254902, -0.0000956862745, -0.0000658823529, -0.0000060784314, + +0.0000539215686, +0.0000778431373, +0.0000539215686, +0.0000000000000, + -0.0000658823529, -0.0001435294118, -0.0001974509804, -0.0002094117647, + -0.0001915686275, -0.0001435294118, -0.0000837254902, +0.0000000000000, + +0.0000837254902, +0.0001496078431, +0.0001496078431, +0.0000598039216, + -0.0000956862745, -0.0002572549020, -0.0003770588235, -0.0003890196078, + -0.0002931372549, -0.0001076470588, +0.0000598039216, +0.0001615686275, + +0.0001674509804, +0.0000898039216, +0.0000060784314, -0.0000060784314, + +0.0000478431373, +0.0001196078431, +0.0001674509804, +0.0001735294118, + +0.0001435294118, +0.0001017647059, +0.0000478431373, +0.0000000000000, + -0.0000539215686, -0.0001137254902, -0.0001615686275, -0.0001674509804, + -0.0001076470588, +0.0000000000000, +0.0001435294118, +0.0002752941176, + +0.0003650980392, +0.0003770588235, +0.0002992156863, +0.0001315686275, + -0.0000478431373, -0.0001674509804, -0.0001796078431, -0.0001196078431, + -0.0000598039216, -0.0000300000000, -0.0000358823529, -0.0000598039216, + -0.0000419607843, +0.0000358823529, +0.0001315686275, +0.0001854901961, + +0.0001435294118, +0.0000239215686, -0.0001196078431, -0.0002452941176, + -0.0003111764706, -0.0002992156863, -0.0002154901961, -0.0000717647059, + +0.0000598039216, +0.0001496078431, +0.0001615686275, +0.0001017647059, + +0.0000119607843, -0.0000658823529, -0.0001256862745, -0.0001674509804, + -0.0001974509804, -0.0001854901961, -0.0001076470588, +0.0000180392157, + +0.0001376470588, +0.0002274509804, +0.0002811764706, +0.0002752941176, + +0.0002094117647, +0.0001017647059, -0.0000180392157, -0.0001376470588, + -0.0002154901961, -0.0002154901961, -0.0001196078431, +0.0000060784314, + +0.0001017647059, +0.0001256862745, +0.0000898039216, +0.0000239215686, + -0.0000239215686, -0.0000478431373, -0.0000239215686, +0.0000119607843, + +0.0000300000000, +0.0000119607843, -0.0000180392157, -0.0000478431373, + -0.0000717647059, -0.0000717647059, -0.0000539215686, -0.0000180392157, + +0.0000000000000, +0.0000060784314, +0.0000060784314, -0.0000060784314, + -0.0000598039216, -0.0001315686275, -0.0001854901961, -0.0001854901961, + -0.0001256862745, -0.0000358823529, +0.0000239215686, +0.0000598039216, + +0.0000778431373, +0.0000658823529, +0.0000598039216, +0.0000598039216, + +0.0000837254902, +0.0000837254902, +0.0000539215686, -0.0000119607843, + -0.0000898039216, -0.0001256862745, -0.0000717647059, +0.0000598039216, + +0.0002333333333, +0.0003709803922, +0.0004188235294, +0.0003470588235, + +0.0001796078431, -0.0000239215686, -0.0002035294118, -0.0002872549020, + -0.0002513725490, -0.0001315686275, +0.0000239215686, +0.0001315686275, + +0.0001735294118, +0.0001554901961, +0.0001137254902, +0.0000778431373, + +0.0000598039216, +0.0000300000000, -0.0000358823529, -0.0001196078431, + -0.0001796078431, -0.0001674509804, -0.0000898039216, +0.0000300000000, + +0.0001554901961, +0.0002333333333, +0.0002333333333, +0.0001854901961, + +0.0001196078431, +0.0000778431373, +0.0000658823529, +0.0000898039216, + +0.0001315686275, +0.0001674509804, +0.0001554901961, +0.0000956862745, + +0.0000060784314, -0.0000898039216, -0.0001435294118, -0.0001137254902, + +0.0000000000000, +0.0001615686275, +0.0003111764706, +0.0003949019608, + +0.0003829411765, +0.0002811764706, +0.0001376470588, +0.0000000000000, + -0.0000837254902, -0.0000956862745, -0.0000658823529, -0.0000419607843, + -0.0000358823529, -0.0000478431373, -0.0000478431373, -0.0000300000000, + +0.0000119607843, +0.0000717647059, +0.0001376470588, +0.0001854901961, + +0.0001974509804, +0.0001674509804, +0.0001017647059, +0.0000000000000, + -0.0000898039216, -0.0001435294118, -0.0001554901961, -0.0001196078431, + -0.0000717647059, -0.0000239215686, +0.0000180392157, +0.0000358823529, + +0.0000358823529, +0.0000300000000, +0.0000180392157, +0.0000119607843, + -0.0000180392157, -0.0000717647059, -0.0001137254902, -0.0001196078431, + -0.0000898039216, -0.0000180392157, +0.0000658823529, +0.0001615686275, + +0.0002094117647, +0.0001915686275, +0.0000898039216, -0.0000478431373, + -0.0001735294118, -0.0002274509804, -0.0002154901961, -0.0001796078431, + -0.0001615686275, -0.0001735294118, -0.0002035294118, -0.0002154901961, + -0.0001435294118, -0.0000060784314, +0.0001674509804, +0.0002992156863, + +0.0003531372549, +0.0002752941176, +0.0001137254902, -0.0000898039216, + -0.0002452941176, -0.0003111764706, -0.0002692156863, -0.0001554901961, + +0.0000060784314, +0.0001496078431, +0.0002274509804, +0.0001974509804, + +0.0000898039216, -0.0000478431373, -0.0001615686275, -0.0002213725490, + -0.0002094117647, -0.0001376470588, -0.0000239215686, +0.0000778431373, + +0.0001615686275, +0.0001974509804, +0.0001796078431, +0.0001256862745, + +0.0000598039216, +0.0000119607843, -0.0000239215686, -0.0000658823529, + -0.0001256862745, -0.0001735294118, -0.0001735294118, -0.0000956862745, + +0.0000180392157, +0.0001315686275, +0.0001915686275, +0.0001974509804, + +0.0001554901961, +0.0001076470588, +0.0000778431373, +0.0000778431373, + +0.0000837254902, +0.0000717647059, +0.0000239215686, -0.0000419607843, + -0.0001376470588, -0.0002035294118, -0.0002094117647, -0.0001435294118, + -0.0000358823529, +0.0000658823529, +0.0001435294118, +0.0001674509804, + +0.0001315686275, +0.0000478431373, -0.0000478431373, -0.0001196078431, + -0.0001196078431, -0.0000539215686, +0.0000539215686, +0.0001435294118, + +0.0001735294118, +0.0001315686275, +0.0000598039216, +0.0000000000000, + -0.0000180392157, -0.0000119607843, +0.0000000000000, +0.0000180392157, + +0.0000478431373, +0.0000778431373, +0.0001137254902, +0.0001376470588, + +0.0001496078431, +0.0001496078431, +0.0001076470588, +0.0000419607843, + -0.0000239215686, -0.0000956862745, -0.0001735294118, -0.0002274509804, + -0.0002274509804, -0.0001615686275, -0.0000778431373, -0.0000239215686, + -0.0000119607843, -0.0000119607843, -0.0000180392157, -0.0000119607843, + +0.0000060784314, +0.0000478431373, +0.0001017647059, +0.0001435294118, + +0.0001554901961, +0.0001196078431, +0.0000419607843, -0.0000300000000, + -0.0000658823529, -0.0000478431373, +0.0000000000000, +0.0000658823529, + +0.0001256862745, +0.0001554901961, +0.0001554901961, +0.0001196078431, + +0.0000539215686, +0.0000000000000, -0.0000239215686, -0.0000060784314, + +0.0000180392157, +0.0000358823529, +0.0000358823529, +0.0000300000000, + +0.0000478431373, +0.0001017647059, +0.0001915686275, +0.0002572549020, + +0.0002633333333, +0.0001854901961, +0.0000598039216, -0.0000478431373, + -0.0001256862745, -0.0001554901961, -0.0001554901961, -0.0001315686275, + -0.0000898039216, -0.0000539215686, -0.0000300000000, -0.0000300000000, + -0.0000478431373, -0.0000837254902, -0.0001076470588, -0.0000956862745, + -0.0000598039216, -0.0000358823529, -0.0000419607843, -0.0000837254902, + -0.0001256862745, -0.0001376470588, -0.0001017647059, -0.0000358823529, + +0.0000419607843, +0.0001137254902, +0.0001674509804, +0.0001735294118, + +0.0001376470588, +0.0000898039216, +0.0000539215686, +0.0000300000000, + +0.0000180392157, +0.0000119607843, +0.0000180392157, +0.0000358823529, + +0.0000778431373, +0.0001496078431, +0.0002452941176, +0.0003350980392, + +0.0003709803922, +0.0003231372549, +0.0001735294118, +0.0000000000000, + -0.0001554901961, -0.0002035294118, -0.0001256862745, +0.0000478431373, + +0.0002633333333, +0.0004188235294, +0.0004188235294, +0.0002692156863, + +0.0000300000000, -0.0001854901961, -0.0002931372549, -0.0002692156863, + -0.0001496078431, -0.0000060784314, +0.0000956862745, +0.0001196078431, + +0.0000717647059, -0.0000060784314, -0.0000658823529, -0.0000717647059, + -0.0000358823529, +0.0000060784314, +0.0000598039216, +0.0000717647059, + +0.0000419607843, -0.0000300000000, -0.0000956862745, -0.0001315686275, + -0.0001137254902, -0.0000658823529, -0.0000180392157, +0.0000239215686, + +0.0000658823529, +0.0001017647059, +0.0001137254902, +0.0000898039216, + +0.0000300000000, -0.0000358823529, -0.0001137254902, -0.0001435294118, + -0.0001076470588, -0.0000060784314, +0.0001076470588, +0.0001915686275, + +0.0001915686275, +0.0001137254902, -0.0000119607843, -0.0001376470588, + -0.0002213725490, -0.0002154901961, -0.0001256862745, +0.0000000000000, + +0.0001196078431, +0.0001915686275, +0.0001974509804, +0.0001615686275, + +0.0001196078431, +0.0000956862745, +0.0001137254902, +0.0001615686275, + +0.0002035294118, +0.0002035294118, +0.0001674509804, +0.0001076470588, + +0.0000358823529, -0.0000239215686, -0.0000539215686, -0.0000419607843, + +0.0000060784314, +0.0000539215686, +0.0000717647059, +0.0000539215686, + +0.0000300000000, +0.0000239215686, +0.0000419607843, +0.0000539215686, + +0.0000717647059, +0.0000717647059, +0.0000598039216, +0.0000239215686, + +0.0000000000000, -0.0000060784314, +0.0000239215686, +0.0000717647059, + +0.0001137254902, +0.0001196078431, +0.0001017647059, +0.0000658823529, + +0.0000239215686, +0.0000060784314, +0.0000119607843, +0.0000300000000, + +0.0000419607843, +0.0000358823529, +0.0000060784314, -0.0000419607843, + -0.0001196078431, -0.0001854901961, -0.0002154901961, -0.0001854901961, + -0.0001076470588, +0.0000060784314, +0.0001256862745, +0.0002154901961, + +0.0002452941176, +0.0002213725490, +0.0001435294118, +0.0000419607843, + -0.0000539215686, -0.0001137254902, -0.0001196078431, -0.0000898039216, + -0.0000300000000, +0.0000300000000, +0.0000778431373, +0.0001076470588, + +0.0001196078431, +0.0001076470588, +0.0000717647059, +0.0000119607843, + -0.0000300000000, -0.0000778431373, -0.0001076470588, -0.0001256862745, + -0.0001196078431, -0.0000778431373, -0.0000060784314, +0.0000419607843, + +0.0000658823529, +0.0000358823529, -0.0000239215686, -0.0000898039216, + -0.0001256862745, -0.0001076470588, -0.0000419607843, +0.0000419607843, + +0.0001076470588, +0.0001376470588, +0.0001256862745, +0.0000898039216, + +0.0000300000000, -0.0000300000000, -0.0000658823529, -0.0000658823529, + -0.0000478431373, -0.0000358823529, -0.0000300000000, -0.0000180392157, + -0.0000180392157, -0.0000119607843, -0.0000180392157, -0.0000239215686, + -0.0000358823529, -0.0000539215686, -0.0000837254902, -0.0001196078431, + -0.0001256862745, -0.0000837254902, -0.0000119607843, +0.0000598039216, + +0.0001076470588, +0.0001256862745, +0.0001076470588, +0.0000539215686, + -0.0000119607843, -0.0001017647059, -0.0001735294118, -0.0002274509804, + -0.0002333333333, -0.0001974509804, -0.0001615686275, -0.0001496078431, + -0.0001615686275, -0.0001854901961, -0.0001915686275, -0.0001735294118, + -0.0001315686275, -0.0001076470588, -0.0001076470588, -0.0001315686275, + -0.0001735294118, -0.0001974509804, -0.0001974509804, -0.0001496078431, + -0.0000837254902, -0.0000419607843, -0.0000478431373, -0.0000956862745, + -0.0001735294118, -0.0002333333333, -0.0002452941176, -0.0001915686275, + -0.0000837254902, +0.0000358823529, +0.0001196078431, +0.0001554901961, + +0.0001196078431, +0.0000419607843, -0.0000598039216, -0.0001554901961, + -0.0001974509804, -0.0001854901961, -0.0001376470588, -0.0000778431373, + -0.0000539215686, -0.0000658823529, -0.0000717647059, -0.0000658823529, + -0.0000300000000, +0.0000119607843, +0.0000539215686, +0.0000778431373, + +0.0000717647059, +0.0000358823529, -0.0000119607843, -0.0000358823529, + -0.0000060784314, +0.0000419607843, +0.0000778431373, +0.0000598039216, + -0.0000060784314, -0.0001017647059, -0.0001915686275, -0.0002274509804, + -0.0001854901961, -0.0000778431373, +0.0000419607843, +0.0001496078431, + +0.0002094117647, +0.0002154901961, +0.0001796078431, +0.0001076470588, + +0.0000060784314, -0.0000898039216, -0.0001674509804, -0.0002035294118, + -0.0001796078431, -0.0001137254902, -0.0000358823529, +0.0000119607843, + +0.0000180392157, -0.0000119607843, -0.0000539215686, -0.0000717647059, + -0.0000598039216, -0.0000180392157, +0.0000300000000, +0.0000598039216, + +0.0000478431373, +0.0000000000000, -0.0000658823529, -0.0001315686275, + -0.0001796078431, -0.0001974509804, -0.0001854901961, -0.0001615686275, + -0.0001315686275, -0.0001076470588, -0.0000778431373, -0.0000598039216, + -0.0000419607843, -0.0000060784314, +0.0000180392157, +0.0000300000000, + +0.0000000000000, -0.0000598039216, -0.0001435294118, -0.0002035294118, + -0.0002213725490, -0.0001854901961, -0.0000898039216, +0.0000000000000, + +0.0000419607843, +0.0000300000000, -0.0000119607843, -0.0000658823529, + -0.0000778431373, -0.0000478431373, +0.0000119607843, +0.0000658823529, + +0.0000717647059, +0.0000239215686, -0.0000598039216, -0.0001256862745, + -0.0001435294118, -0.0001137254902, -0.0000598039216, +0.0000000000000, + +0.0000658823529, +0.0001076470588, +0.0001196078431, +0.0001076470588, + +0.0000837254902, +0.0000658823529, +0.0000539215686, +0.0000239215686, + -0.0000060784314, -0.0000419607843, -0.0000598039216, -0.0000598039216, + -0.0000300000000, +0.0000000000000, +0.0000180392157, +0.0000358823529, + +0.0000300000000, +0.0000180392157, +0.0000180392157, +0.0000300000000, + +0.0000478431373, +0.0000717647059, +0.0000837254902, +0.0000778431373, + +0.0000419607843, +0.0000000000000, -0.0000239215686, -0.0000239215686, + +0.0000000000000, +0.0000119607843, +0.0000119607843, -0.0000180392157, + -0.0000658823529, -0.0001017647059, -0.0001137254902, -0.0001137254902, + -0.0000956862745, -0.0000658823529, -0.0000300000000, -0.0000119607843, + -0.0000239215686, -0.0000658823529, -0.0001196078431, -0.0001435294118, + -0.0001196078431, -0.0000478431373, +0.0000478431373, +0.0001376470588, + +0.0001974509804, +0.0001915686275, +0.0001376470588, +0.0000478431373, + -0.0000419607843, -0.0001137254902, -0.0001554901961, -0.0001735294118, + -0.0001674509804, -0.0001256862745, -0.0000717647059, -0.0000239215686, + +0.0000000000000, +0.0000060784314, +0.0000119607843, +0.0000180392157, + +0.0000358823529, +0.0000717647059, +0.0001196078431, +0.0001615686275, + +0.0001554901961, +0.0001076470588, +0.0000300000000, -0.0000419607843, + -0.0000898039216, -0.0000956862745, -0.0000837254902, -0.0000478431373, + +0.0000000000000, +0.0000239215686, +0.0000358823529, +0.0000180392157, + -0.0000060784314, -0.0000358823529, -0.0000539215686, -0.0000419607843, + +0.0000180392157, +0.0001076470588, +0.0001974509804, +0.0002452941176, + +0.0002274509804, +0.0001376470588, +0.0000060784314, -0.0001256862745, + -0.0002154901961, -0.0002274509804, -0.0001496078431, -0.0000300000000, + +0.0000956862745, +0.0001796078431, +0.0001915686275, +0.0001435294118, + +0.0000778431373, +0.0000180392157, -0.0000119607843, -0.0000060784314, + +0.0000119607843, +0.0000358823529, +0.0000300000000, +0.0000000000000, + -0.0000419607843, -0.0000598039216, -0.0000478431373, -0.0000239215686, + +0.0000000000000, +0.0000358823529, +0.0000539215686, +0.0000419607843, + +0.0000119607843, -0.0000180392157, -0.0000180392157, +0.0000358823529, + +0.0001256862745, +0.0002154901961, +0.0002394117647, +0.0002094117647, + +0.0001376470588, +0.0000717647059, +0.0000239215686, +0.0000060784314, + +0.0000239215686, +0.0000658823529, +0.0000778431373, +0.0000478431373, + +0.0000000000000, -0.0000180392157, +0.0000060784314, +0.0000837254902, + +0.0001615686275, +0.0002094117647, +0.0001915686275, +0.0001315686275, + +0.0000717647059, +0.0000539215686, +0.0000837254902, +0.0001376470588, + +0.0001796078431, +0.0001854901961, +0.0001376470588, +0.0000419607843, + -0.0000539215686, -0.0001196078431, -0.0001256862745, -0.0000898039216, + -0.0000239215686, +0.0000358823529, +0.0000956862745, +0.0001496078431, + +0.0002035294118, +0.0002333333333, +0.0002394117647, +0.0001854901961, + +0.0000956862745, -0.0000060784314, -0.0000778431373, -0.0001017647059, + -0.0000837254902, -0.0000478431373, -0.0000060784314, +0.0000300000000, + +0.0000539215686, +0.0000898039216, +0.0001196078431, +0.0001674509804, + +0.0001974509804, +0.0002154901961, +0.0002094117647, +0.0001796078431, + +0.0001376470588, +0.0001017647059, +0.0000717647059, +0.0000598039216, + +0.0000478431373, +0.0000300000000, +0.0000060784314, -0.0000180392157, + -0.0000478431373, -0.0000658823529, -0.0000539215686, -0.0000119607843, + +0.0000419607843, +0.0000778431373, +0.0000717647059, +0.0000358823529, + +0.0000000000000, -0.0000239215686, -0.0000119607843, +0.0000239215686, + +0.0000778431373, +0.0001256862745, +0.0001496078431, +0.0001615686275, + +0.0001554901961, +0.0001376470588, +0.0001137254902, +0.0000778431373, + +0.0000539215686, +0.0000598039216, +0.0000778431373, +0.0001076470588, + +0.0001256862745, +0.0001256862745, +0.0001017647059, +0.0000598039216, + +0.0000000000000, -0.0000478431373, -0.0000837254902, -0.0000956862745, + -0.0000717647059, -0.0000180392157, +0.0000419607843, +0.0000956862745, + +0.0001256862745, +0.0001196078431, +0.0000898039216, +0.0000419607843, + +0.0000000000000, -0.0000358823529, -0.0000658823529, -0.0000898039216, + -0.0001076470588, -0.0001196078431, -0.0001076470588, -0.0000778431373, + -0.0000419607843, -0.0000060784314, +0.0000000000000, -0.0000119607843, + -0.0000717647059, -0.0001554901961, -0.0002094117647, -0.0002035294118, + -0.0001256862745, -0.0000119607843, +0.0001076470588, +0.0001915686275, + +0.0002154901961, +0.0001496078431, +0.0000119607843, -0.0001137254902, + -0.0001854901961, -0.0001674509804, -0.0000898039216, +0.0000000000000, + +0.0000598039216, +0.0000658823529, +0.0000119607843, -0.0000539215686, + -0.0001017647059, -0.0000956862745, -0.0000539215686, -0.0000119607843, + +0.0000000000000, +0.0000000000000, -0.0000119607843, -0.0000060784314, + +0.0000180392157, +0.0000598039216, +0.0000837254902, +0.0000898039216, + +0.0000658823529, +0.0000239215686, -0.0000239215686, -0.0000419607843, + -0.0000239215686, +0.0000419607843, +0.0001256862745, +0.0001854901961, + +0.0002035294118, +0.0001615686275, +0.0000837254902, +0.0000060784314, + -0.0000358823529, -0.0000358823529, -0.0000060784314, +0.0000300000000, + +0.0000598039216, +0.0000778431373, +0.0000837254902, +0.0000717647059, + +0.0000478431373, +0.0000119607843, -0.0000478431373, -0.0001196078431, + -0.0001796078431, -0.0001974509804, -0.0001496078431, -0.0000539215686, + +0.0000478431373, +0.0001256862745, +0.0001554901961, +0.0001315686275, + +0.0000717647059, +0.0000119607843, -0.0000358823529, -0.0000539215686, + -0.0000478431373, -0.0000358823529, -0.0000180392157, -0.0000119607843, + -0.0000239215686, -0.0000419607843, -0.0000419607843, -0.0000300000000, + -0.0000239215686, -0.0000358823529, -0.0000539215686, -0.0000658823529, + -0.0000478431373, +0.0000000000000, +0.0000598039216, +0.0001017647059, + +0.0001137254902, +0.0000837254902, +0.0000239215686, -0.0000239215686, + -0.0000539215686, -0.0000539215686, -0.0000239215686, +0.0000119607843, + +0.0000598039216, +0.0000658823529, +0.0000358823529, -0.0000119607843, + -0.0000539215686, -0.0000717647059, -0.0000598039216, -0.0000180392157, + +0.0000239215686, +0.0000658823529, +0.0001017647059, +0.0001435294118, + +0.0001735294118, +0.0001674509804, +0.0001256862745, +0.0000539215686, + -0.0000300000000, -0.0001256862745, -0.0001974509804, -0.0002094117647, + -0.0001674509804, -0.0000717647059, +0.0000358823529, +0.0001376470588, + +0.0001915686275, +0.0001915686275, +0.0001496078431, +0.0000837254902, + +0.0000300000000, +0.0000060784314, +0.0000180392157, +0.0000478431373, + +0.0000658823529, +0.0000658823529, +0.0000358823529, +0.0000000000000, + -0.0000358823529, -0.0000419607843, +0.0000000000000, +0.0000717647059, + +0.0001315686275, +0.0001256862745, +0.0000539215686, -0.0000478431373, + -0.0001376470588, -0.0001615686275, -0.0001076470588, -0.0000119607843, + +0.0000717647059, +0.0001256862745, +0.0001137254902, +0.0000478431373, + -0.0000300000000, -0.0000778431373, -0.0000837254902, -0.0000478431373, + +0.0000000000000, +0.0000239215686, +0.0000239215686, -0.0000060784314, + -0.0000598039216, -0.0001137254902, -0.0001435294118, -0.0001435294118, + -0.0001137254902, -0.0000898039216, -0.0000778431373, -0.0000837254902, + -0.0000956862745, -0.0000898039216, -0.0000598039216, -0.0000060784314, + +0.0000539215686, +0.0000956862745, +0.0000898039216, +0.0000300000000, + -0.0000539215686, -0.0001315686275, -0.0001615686275, -0.0001435294118, + -0.0000898039216, -0.0000300000000, +0.0000239215686, +0.0000539215686, + +0.0000300000000, -0.0000300000000, -0.0001196078431, -0.0001854901961, + -0.0002154901961, -0.0001796078431, -0.0000837254902, +0.0000478431373, + +0.0001615686275, +0.0002154901961, +0.0002035294118, +0.0001615686275, + +0.0000837254902, +0.0000000000000, -0.0000717647059, -0.0001315686275, + -0.0001615686275, -0.0001615686275, -0.0001315686275, -0.0000898039216, + -0.0000358823529, +0.0000000000000, +0.0000180392157, +0.0000239215686, + +0.0000060784314, -0.0000358823529, -0.0000717647059, -0.0001017647059, + -0.0001017647059, -0.0000837254902, -0.0000539215686, -0.0000300000000, + -0.0000119607843, +0.0000000000000, +0.0000180392157, +0.0000358823529, + +0.0000539215686, +0.0000478431373, +0.0000180392157, -0.0000180392157, + -0.0000598039216, -0.0000837254902, -0.0000658823529, +0.0000000000000, + +0.0000956862745, +0.0001974509804, +0.0002513725490, +0.0002274509804, + +0.0001315686275, +0.0000180392157, -0.0000658823529, -0.0001137254902, + -0.0001196078431, -0.0000837254902, -0.0000300000000, +0.0000000000000, + +0.0000000000000, -0.0000119607843, -0.0000239215686, -0.0000300000000, + -0.0000119607843, +0.0000000000000, +0.0000060784314, +0.0000119607843, + +0.0000060784314, +0.0000000000000 +}; diff --git a/plugins/ladspa_effect/swh/impulses/20-matchless-chieftain-sm57.h b/plugins/ladspa_effect/swh/impulses/20-matchless-chieftain-sm57.h new file mode 100644 index 000000000..43f33e502 --- /dev/null +++ b/plugins/ladspa_effect/swh/impulses/20-matchless-chieftain-sm57.h @@ -0,0 +1,863 @@ +float matchless_chieftain_sm57[] = { + -0.0001573195876, -0.0001321649485, -0.0001509278351, -0.0001950515464, + -0.0001698969072, -0.0002014432990, -0.0002391752577, -0.0002076288660, + -0.0002391752577, -0.0002579381443, -0.0002265979381, -0.0002705154639, + -0.0002830927835, -0.0002579381443, -0.0003082474227, -0.0003082474227, + -0.0002830927835, -0.0003397938144, -0.0003208247423, -0.0003020618557, + -0.0003587628866, -0.0003272164948, -0.0003146391753, -0.0003523711340, + -0.0003020618557, -0.0003020618557, -0.0003334020619, -0.0002830927835, + -0.0002894845361, -0.0003082474227, -0.0002517525773, -0.0002705154639, + -0.0002643298969, -0.0001950515464, -0.0002202061856, -0.0002014432990, + -0.0001383505155, -0.0001760824742, -0.0001383505155, -0.0000754639175, + -0.0001006185567, -0.0000377319588, +0.0000125773196, +0.0000000000000, + +0.0000818556701, +0.0001257731959, +0.0001070103093, +0.0001950515464, + +0.0002140206186, +0.0002014432990, +0.0003082474227, +0.0003272164948, + +0.0003397938144, +0.0004655670103, +0.0004845360825, +0.0005284536082, + +0.0006480412371, +0.0006480412371, +0.0006983505155, +0.0007991752577, + +0.0007802061856, +0.0008556701031, +0.0009439175258, +0.0009187628866, + +0.0010193814433, +0.0011012371134, +0.0010886597938, +0.0011954639175, + +0.0012521649485, +0.0012331958763, +0.0013527835052, +0.0013843298969, + +0.0013717525773, +0.0014975257732, +0.0014975257732, +0.0015101030928, + +0.0016360824742, +0.0016045360825, +0.0016235051546, +0.0017303092784, + +0.0016738144330, +0.0017115463918, +0.0017934020619, +0.0016989690722, + +0.0017303092784, +0.0017618556701, +0.0016360824742, +0.0016863917526, + +0.0016674226804, +0.0015352577320, +0.0016486597938, +0.0015919587629, + +0.0014597938144, +0.0016360824742, +0.0014787628866, +0.0012270103093, + +0.0014220618557, +0.0012837113402, +0.0009061855670, +0.0009690721649, + +0.0008934020619, +0.0006921649485, +0.0007488659794, +0.0005600000000, + +0.0003523711340, +0.0003713402062, +0.0001131958763, -0.0000441237113, + -0.0000189690722, -0.0003020618557, -0.0004152577320, -0.0003964948454, + -0.0007173195876, -0.0008117525773, -0.0008369072165, -0.0012521649485, + -0.0013402061856, -0.0013653608247, -0.0018185567010, -0.0018311340206, + -0.0017744329897, -0.0024098969072, -0.0025484536082, -0.0020701030928, + -0.0023847422680, -0.0031336082474, -0.0036746391753, -0.0041340206186, + -0.0032280412371, -0.0027496907216, -0.0086958762887, -0.0155482474227, + -0.0044989690722, +0.0278622680412, +0.0582853608247, +0.0601542268041, + +0.0219851546392, -0.0483373195876, -0.1271859793814, -0.1883847422680, + -0.2061604123711, -0.1617053608247, -0.0701967010309, +0.0274721649485, + +0.1021426804124, +0.1359385567010, +0.1240461855670, +0.0918358762887, + +0.0611546391753, +0.0284158762887, +0.0013340206186, -0.0083121649485, + -0.0133647422680, -0.0195878350515, -0.0178385567010, -0.0133585567010, + -0.0077331958763, +0.0091426804124, +0.0264402061856, +0.0247412371134, + +0.0079849484536, -0.0106024742268, -0.0259492783505, -0.0365393814433, + -0.0389618556701, -0.0265030927835, +0.0010632989691, +0.0284915463918, + +0.0412585567010, +0.0431461855670, +0.0453861855670, +0.0480793814433, + +0.0433412371134, +0.0286298969072, +0.0059274226804, -0.0206261855670, + -0.0408494845361, -0.0479534020619, -0.0436117525773, -0.0271134020619, + -0.0034608247423, +0.0123327835052, +0.0190216494845, +0.0234639175258, + +0.0194872164948, +0.0082303092784, +0.0028441237113, -0.0001321649485, + -0.0086078350515, -0.0130249484536, -0.0089540206186, -0.0065377319588, + -0.0087148453608, -0.0100740206186, -0.0096649484536, -0.0076074226804, + +0.0001195876289, +0.0136354639175, +0.0243321649485, +0.0259808247423, + +0.0218152577320, +0.0170144329897, +0.0146358762887, +0.0146169072165, + +0.0114835051546, +0.0035550515464, -0.0016925773196, -0.0007865979381, + +0.0015855670103, +0.0029637113402, +0.0048136082474, +0.0070410309278, + +0.0062292783505, -0.0002643298969, -0.0088973195876, -0.0142080412371, + -0.0154160824742, -0.0135472164948, -0.0094131958763, -0.0039074226804, + +0.0038193814433, +0.0134214432990, +0.0221865979381, +0.0295925773196, + +0.0346138144330, +0.0342678350515, +0.0294290721649, +0.0230863917526, + +0.0158125773196, +0.0073430927835, -0.0029888659794, -0.0141764948454, + -0.0219412371134, -0.0246909278351, -0.0238352577320, -0.0186441237113, + -0.0088531958763, +0.0035804123711, +0.0170270103093, +0.0276672164948, + +0.0298756701031, +0.0225138144330, +0.0096901030928, -0.0035488659794, + -0.0138053608247, -0.0193991752577, -0.0193991752577, -0.0140191752577, + -0.0056756701031, +0.0020952577320, +0.0071103092784, +0.0101117525773, + +0.0125531958763, +0.0132453608247, +0.0109863917526, +0.0065942268041, + -0.0000944329897, -0.0080414432990, -0.0124649484536, -0.0111876288660, + -0.0065439175258, -0.0002517525773, +0.0061286597938, +0.0101305154639, + +0.0114709278351, +0.0108981443299, +0.0073241237113, +0.0010068041237, + -0.0043919587629, -0.0062608247423, -0.0056063917526, -0.0037816494845, + -0.0011577319588, +0.0014849484536, +0.0035676288660, +0.0043919587629, + +0.0026616494845, -0.0009439175258, -0.0048828865979, -0.0094195876289, + -0.0130375257732, -0.0122950515464, -0.0076325773196, -0.0019317525773, + +0.0032909278351, +0.0062672164948, +0.0053420618557, +0.0010129896907, + -0.0047632989691, -0.0089350515464, -0.0093818556701, -0.0074249484536, + -0.0054303092784, -0.0045934020619, -0.0050338144330, -0.0054428865979, + -0.0047507216495, -0.0035929896907, -0.0026239175258, -0.0018185567010, + -0.0013150515464, -0.0011325773196, -0.0009061855670, -0.0002014432990, + +0.0004216494845, -0.0004152577320, -0.0026552577320, -0.0051721649485, + -0.0071039175258, -0.0071290721649, -0.0057762886598, -0.0055119587629, + -0.0056944329897, -0.0046752577320, -0.0042723711340, -0.0049583505155, + -0.0044422680412, -0.0025610309278, -0.0003523711340, +0.0014030927835, + +0.0010319587629, -0.0018247422680, -0.0056692783505, -0.0094383505155, + -0.0117791752577, -0.0109925773196, -0.0073367010309, -0.0031523711340, + -0.0010129896907, -0.0014410309278, -0.0031649484536, -0.0055309278351, + -0.0070913402062, -0.0053800000000, -0.0010319587629, +0.0026490721649, + +0.0037123711340, +0.0018624742268, -0.0019569072165, -0.0060783505155, + -0.0091426804124, -0.0097907216495, -0.0079282474227, -0.0055686597938, + -0.0035488659794, -0.0013276288660, +0.0001131958763, -0.0002643298969, + -0.0016612371134, -0.0023721649485, -0.0014723711340, -0.0001383505155, + +0.0001006185567, -0.0002453608247, -0.0008620618557, -0.0019569072165, + -0.0022338144330, -0.0009061855670, +0.0011451546392, +0.0035047422680, + +0.0051534020619, +0.0041591752577, +0.0004026804124, -0.0044296907216, + -0.0082618556701, -0.0090546391753, -0.0066068041237, -0.0027496907216, + +0.0004655670103, +0.0018311340206, +0.0012585567010, -0.0006103092784, + -0.0031775257732, -0.0054742268041, -0.0064684536082, -0.0057070103093, + -0.0032531958763, -0.0002579381443, +0.0017241237113, +0.0026678350515, + +0.0031397938144, +0.0029259793814, +0.0018311340206, +0.0002391752577, + -0.0013088659794, -0.0027183505155, -0.0043919587629, -0.0056882474227, + -0.0052791752577, -0.0040962886598, -0.0038068041237, -0.0035550515464, + -0.0021016494845, -0.0004719587629, +0.0001509278351, +0.0005284536082, + +0.0018121649485, +0.0036558762887, +0.0045179381443, +0.0035865979381, + +0.0015981443299, -0.0002643298969, -0.0017744329897, -0.0031272164948, + -0.0036872164948, -0.0029447422680, -0.0017554639175, -0.0007550515464, + +0.0003649484536, +0.0014975257732, +0.0022086597938, +0.0023344329897, + +0.0019569072165, +0.0017177319588, +0.0018814432990, +0.0015352577320, + +0.0003839175258, -0.0008556701031, -0.0018059793814, -0.0020449484536, + -0.0013402061856, -0.0002327835052, +0.0013340206186, +0.0038193814433, + +0.0063049484536, +0.0075319587629, +0.0072550515464, +0.0057575257732, + +0.0034356701031, +0.0010381443299, -0.0005284536082, -0.0009690721649, + -0.0006606185567, +0.0001447422680, +0.0012521649485, +0.0017870103093, + +0.0013843298969, +0.0005663917526, -0.0003587628866, -0.0011515463918, + -0.0011138144330, +0.0000000000000, +0.0016925773196, +0.0029762886598, + +0.0030265979381, +0.0024476288660, +0.0024224742268, +0.0031084536082, + +0.0038760824742, +0.0042158762887, +0.0041969072165, +0.0040334020619, + +0.0030265979381, +0.0008369072165, -0.0009439175258, -0.0011200000000, + -0.0004907216495, +0.0003775257732, +0.0019379381443, +0.0036810309278, + +0.0043668041237, +0.0039012371134, +0.0033663917526, +0.0032468041237, + +0.0031587628866, +0.0030140206186, +0.0030202061856, +0.0033412371134, + +0.0041591752577, +0.0050527835052, +0.0053358762887, +0.0051408247423, + +0.0048197938144, +0.0043606185567, +0.0037249484536, +0.0028063917526, + +0.0019253608247, +0.0018498969072, +0.0022715463918, +0.0022715463918, + +0.0018121649485, +0.0010822680412, +0.0002956701031, +0.0000000000000, + -0.0001257731959, -0.0007362886598, -0.0012962886598, -0.0011451546392, + -0.0004090721649, +0.0005851546392, +0.0014472164948, +0.0018624742268, + +0.0019758762887, +0.0021268041237, +0.0026804123711, +0.0034230927835, + +0.0035362886598, +0.0028628865979, +0.0019443298969, +0.0012457731959, + +0.0010068041237, +0.0009752577320, +0.0008872164948, +0.0013527835052, + +0.0026490721649, +0.0038948453608, +0.0042346391753, +0.0034105154639, + +0.0019379381443, +0.0009942268041, +0.0006857731959, +0.0001447422680, + -0.0005158762887, -0.0005284536082, +0.0001573195876, +0.0009375257732, + +0.0012395876289, +0.0012711340206, +0.0016360824742, +0.0022148453608, + +0.0026678350515, +0.0029888659794, +0.0028189690722, +0.0018750515464, + +0.0007614432990, +0.0002643298969, +0.0006480412371, +0.0013969072165, + +0.0016486597938, +0.0013591752577, +0.0009816494845, +0.0004655670103, + -0.0001760824742, -0.0005915463918, -0.0005977319588, -0.0001509278351, + +0.0005915463918, +0.0012395876289, +0.0016422680412, +0.0018688659794, + +0.0017618556701, +0.0013214432990, +0.0008243298969, +0.0002579381443, + -0.0004655670103, -0.0012206185567, -0.0016548453608, -0.0015290721649, + -0.0009313402062, -0.0001195876289, +0.0007109278351, +0.0015290721649, + +0.0021709278351, +0.0023154639175, +0.0017806185567, +0.0006795876289, + -0.0006354639175, -0.0016360824742, -0.0018814432990, -0.0016045360825, + -0.0013024742268, -0.0010632989691, -0.0008117525773, -0.0004026804124, + +0.0001698969072, +0.0004845360825, +0.0002894845361, +0.0001070103093, + +0.0001321649485, -0.0000754639175, -0.0007109278351, -0.0014030927835, + -0.0016989690722, -0.0014030927835, -0.0008053608247, -0.0002705154639, + +0.0000315463918, +0.0000692783505, -0.0000503092784, -0.0001131958763, + -0.0001824742268, -0.0003964948454, -0.0005725773196, -0.0005474226804, + -0.0004719587629, -0.0004907216495, -0.0005977319588, -0.0007740206186, + -0.0008872164948, -0.0007047422680, -0.0003208247423, -0.0002014432990, + -0.0005412371134, -0.0011074226804, -0.0015101030928, -0.0014346391753, + -0.0010068041237, -0.0006983505155, -0.0004278350515, +0.0001760824742, + +0.0009375257732, +0.0012647422680, +0.0009564948454, +0.0002830927835, + -0.0002705154639, -0.0005222680412, -0.0006167010309, -0.0006670103093, + -0.0007927835052, -0.0010571134021, -0.0011641237113, -0.0009249484536, + -0.0007614432990, -0.0011325773196, -0.0018373195876, -0.0022967010309, + -0.0021268041237, -0.0014849484536, -0.0007802061856, -0.0002076288660, + +0.0002956701031, +0.0007550515464, +0.0009123711340, +0.0004719587629, + -0.0003649484536, -0.0011263917526, -0.0015729896907, -0.0017870103093, + -0.0019758762887, -0.0023092783505, -0.0026931958763, -0.0028692783505, + -0.0026804123711, -0.0021835051546, -0.0017241237113, -0.0015542268041, + -0.0013779381443, -0.0009878350515, -0.0006606185567, -0.0005851546392, + -0.0006480412371, -0.0007740206186, -0.0006731958763, -0.0001257731959, + +0.0003839175258, +0.0003208247423, -0.0001950515464, -0.0007362886598, + -0.0011074226804, -0.0013717525773, -0.0015290721649, -0.0015164948454, + -0.0012837113402, -0.0010068041237, -0.0009690721649, -0.0013150515464, + -0.0018059793814, -0.0020639175258, -0.0019694845361, -0.0016989690722, + -0.0014536082474, -0.0013024742268, -0.0012018556701, -0.0010129896907, + -0.0005663917526, +0.0000441237113, +0.0005915463918, +0.0009626804124, + +0.0011325773196, +0.0009816494845, +0.0004278350515, -0.0005158762887, + -0.0016800000000, -0.0025294845361, -0.0027119587629, -0.0024098969072, + -0.0018940206186, -0.0013465979381, -0.0009878350515, -0.0007991752577, + -0.0005284536082, -0.0002014432990, +0.0000125773196, +0.0001509278351, + +0.0002014432990, +0.0001447422680, +0.0000000000000, -0.0002956701031, + -0.0008430927835, -0.0013653608247, -0.0015101030928, -0.0013088659794, + -0.0010571134021, -0.0008808247423, -0.0007109278351, -0.0005725773196, + -0.0004090721649, -0.0001509278351, +0.0000441237113, +0.0000944329897, + +0.0000754639175, +0.0000315463918, +0.0000063917526, +0.0000189690722, + -0.0001447422680, -0.0004655670103, -0.0004593814433, -0.0001195876289, + +0.0000754639175, +0.0001006185567, +0.0001383505155, +0.0002579381443, + +0.0004845360825, +0.0005600000000, +0.0002956701031, -0.0000315463918, + -0.0001888659794, -0.0001635051546, +0.0000754639175, +0.0004468041237, + +0.0006480412371, +0.0006228865979, +0.0004529896907, +0.0001573195876, + -0.0001698969072, -0.0005915463918, -0.0009942268041, -0.0010255670103, + -0.0007298969072, -0.0004593814433, -0.0003523711340, -0.0004468041237, + -0.0006670103093, -0.0006354639175, -0.0002894845361, +0.0001131958763, + +0.0005474226804, +0.0010255670103, +0.0014661855670, +0.0018059793814, + +0.0018311340206, +0.0014156701031, +0.0008179381443, +0.0003523711340, + +0.0002076288660, +0.0003713402062, +0.0005412371134, +0.0006983505155, + +0.0010948453608, +0.0015039175258, +0.0015668041237, +0.0013591752577, + +0.0009690721649, +0.0004907216495, +0.0002140206186, +0.0002327835052, + +0.0004152577320, +0.0006103092784, +0.0005977319588, +0.0003775257732, + +0.0001950515464, +0.0001447422680, +0.0001383505155, +0.0001383505155, + +0.0001321649485, +0.0002265979381, +0.0004152577320, +0.0003587628866, + +0.0000315463918, -0.0001131958763, +0.0000692783505, +0.0002327835052, + +0.0001131958763, -0.0000818556701, -0.0001447422680, -0.0000377319588, + +0.0001888659794, +0.0004404123711, +0.0004781443299, +0.0002956701031, + +0.0001321649485, +0.0000944329897, +0.0001760824742, +0.0003587628866, + +0.0005284536082, +0.0005789690722, +0.0005977319588, +0.0006041237113, + +0.0004781443299, +0.0002643298969, +0.0002643298969, +0.0005915463918, + +0.0010445360825, +0.0014661855670, +0.0017051546392, +0.0016296907216, + +0.0013905154639, +0.0011767010309, +0.0008934020619, +0.0005348453608, + +0.0002894845361, +0.0001195876289, +0.0000000000000, -0.0000628865979, + -0.0001888659794, -0.0003208247423, -0.0002517525773, +0.0000503092784, + +0.0005663917526, +0.0010886597938, +0.0013088659794, +0.0012647422680, + +0.0011325773196, +0.0008556701031, +0.0005096907216, +0.0002579381443, + +0.0000377319588, -0.0001573195876, -0.0001824742268, +0.0000000000000, + +0.0003272164948, +0.0007298969072, +0.0010445360825, +0.0013150515464, + +0.0015855670103, +0.0016296907216, +0.0013024742268, +0.0007802061856, + +0.0003334020619, +0.0000189690722, -0.0002830927835, -0.0006606185567, + -0.0009439175258, -0.0009626804124, -0.0007614432990, -0.0004655670103, + -0.0000503092784, +0.0004026804124, +0.0007047422680, +0.0007927835052, + +0.0007991752577, +0.0006292783505, +0.0002517525773, -0.0000628865979, + -0.0002391752577, -0.0003146391753, -0.0001824742268, +0.0000377319588, + +0.0001257731959, +0.0002202061856, +0.0004152577320, +0.0004468041237, + +0.0003272164948, +0.0001824742268, -0.0000189690722, -0.0001760824742, + -0.0001195876289, +0.0000000000000, +0.0000189690722, -0.0000189690722, + -0.0001383505155, -0.0002643298969, -0.0003587628866, -0.0005158762887, + -0.0007550515464, -0.0008494845361, -0.0005977319588, -0.0000567010309, + +0.0005474226804, +0.0010571134021, +0.0014536082474, +0.0016800000000, + +0.0014661855670, +0.0006731958763, -0.0004216494845, -0.0014346391753, + -0.0020575257732, -0.0020513402062, -0.0014472164948, -0.0004845360825, + +0.0006292783505, +0.0016171134021, +0.0021016494845, +0.0020197938144, + +0.0015604123711, +0.0008053608247, +0.0000000000000, -0.0005977319588, + -0.0009942268041, -0.0012144329897, -0.0012018556701, -0.0009564948454, + -0.0004468041237, +0.0001888659794, +0.0006921649485, +0.0009123711340, + +0.0008620618557, +0.0005284536082, +0.0000628865979, -0.0003334020619, + -0.0006041237113, -0.0007424742268, -0.0007676288660, -0.0007047422680, + -0.0005663917526, -0.0004907216495, -0.0005600000000, -0.0005977319588, + -0.0004719587629, -0.0002579381443, -0.0001321649485, -0.0001888659794, + -0.0004090721649, -0.0007047422680, -0.0009187628866, -0.0008808247423, + -0.0005663917526, -0.0001321649485, +0.0003587628866, +0.0007927835052, + +0.0009313402062, +0.0007550515464, +0.0003775257732, -0.0000818556701, + -0.0004593814433, -0.0006041237113, -0.0005851546392, -0.0005474226804, + -0.0005725773196, -0.0006983505155, -0.0008243298969, -0.0007991752577, + -0.0005915463918, -0.0003334020619, -0.0000818556701, +0.0002643298969, + +0.0006480412371, +0.0007109278351, +0.0004216494845, +0.0001070103093, + -0.0000063917526, +0.0000377319588, +0.0002014432990, +0.0003459793814, + +0.0004090721649, +0.0003964948454, +0.0003587628866, +0.0003713402062, + +0.0002517525773, -0.0001131958763, -0.0004845360825, -0.0006731958763, + -0.0007424742268, -0.0006544329897, -0.0003459793814, +0.0000628865979, + +0.0004655670103, +0.0006795876289, +0.0005474226804, +0.0001131958763, + -0.0004655670103, -0.0010319587629, -0.0012331958763, -0.0009690721649, + -0.0004655670103, -0.0000125773196, +0.0002140206186, +0.0002076288660, + -0.0000944329897, -0.0006983505155, -0.0012898969072, -0.0015542268041, + -0.0014787628866, -0.0011325773196, -0.0005789690722, +0.0000063917526, + +0.0005158762887, +0.0008494845361, +0.0009061855670, +0.0007173195876, + +0.0003146391753, -0.0003397938144, -0.0010822680412, -0.0016235051546, + -0.0018562886598, -0.0017428865979, -0.0013024742268, -0.0006480412371, + +0.0000944329897, +0.0006921649485, +0.0008682474227, +0.0006167010309, + +0.0001383505155, -0.0003713402062, -0.0008179381443, -0.0010696907216, + -0.0010068041237, -0.0006480412371, -0.0000880412371, +0.0005725773196, + +0.0011641237113, +0.0014410309278, +0.0013150515464, +0.0008243298969, + +0.0001509278351, -0.0004468041237, -0.0009249484536, -0.0012962886598, + -0.0014597938144, -0.0014094845361, -0.0012144329897, -0.0009690721649, + -0.0007991752577, -0.0006544329897, -0.0004404123711, -0.0002517525773, + -0.0001383505155, +0.0000000000000, +0.0001321649485, +0.0001509278351, + +0.0001509278351, +0.0002076288660, +0.0002830927835, +0.0003775257732, + +0.0004468041237, +0.0005032989691, +0.0005538144330, +0.0004593814433, + +0.0001509278351, -0.0002391752577, -0.0005725773196, -0.0006670103093, + -0.0004781443299, -0.0001824742268, +0.0000125773196, +0.0001321649485, + +0.0002453608247, +0.0002517525773, +0.0000189690722, -0.0003272164948, + -0.0005725773196, -0.0006544329897, -0.0005348453608, -0.0002076288660, + +0.0001006185567, +0.0002140206186, +0.0001321649485, -0.0001321649485, + -0.0004971134021, -0.0007614432990, -0.0008243298969, -0.0006480412371, + -0.0002769072165, +0.0000628865979, +0.0002327835052, +0.0002643298969, + +0.0001824742268, +0.0000567010309, -0.0000189690722, -0.0000818556701, + -0.0001131958763, -0.0001447422680, -0.0002076288660, -0.0002956701031, + -0.0003082474227, -0.0002327835052, -0.0000818556701, +0.0001509278351, + +0.0004593814433, +0.0007109278351, +0.0007424742268, +0.0005032989691, + +0.0001760824742, +0.0000000000000, -0.0000754639175, -0.0001698969072, + -0.0001760824742, -0.0000818556701, -0.0001070103093, -0.0002265979381, + -0.0002327835052, -0.0002265979381, -0.0003146391753, -0.0004152577320, + -0.0005348453608, -0.0006795876289, -0.0007676288660, -0.0008494845361, + -0.0008808247423, -0.0007109278351, -0.0004529896907, -0.0002014432990, + +0.0000315463918, +0.0001760824742, +0.0002579381443, +0.0004404123711, + +0.0006167010309, +0.0006480412371, +0.0005222680412, +0.0001573195876, + -0.0003272164948, -0.0007173195876, -0.0009249484536, -0.0008808247423, + -0.0005474226804, -0.0000880412371, +0.0004278350515, +0.0008808247423, + +0.0010381443299, +0.0009564948454, +0.0008117525773, +0.0006354639175, + +0.0004719587629, +0.0003082474227, +0.0001131958763, -0.0000441237113, + -0.0002327835052, -0.0003713402062, -0.0002579381443, +0.0000251546392, + +0.0003587628866, +0.0007298969072, +0.0009249484536, +0.0007298969072, + +0.0003020618557, -0.0001888659794, -0.0005977319588, -0.0006103092784, + -0.0003020618557, +0.0001006185567, +0.0006041237113, +0.0010004123711, + +0.0010068041237, +0.0007047422680, +0.0003272164948, +0.0000000000000, + -0.0002327835052, -0.0004090721649, -0.0005032989691, -0.0004719587629, + -0.0004216494845, -0.0004468041237, -0.0005348453608, -0.0006103092784, + -0.0005474226804, -0.0003459793814, -0.0001257731959, +0.0001195876289, + +0.0003713402062, +0.0004971134021, +0.0005096907216, +0.0003901030928, + +0.0001321649485, -0.0000315463918, -0.0000251546392, +0.0000125773196, + +0.0000251546392, +0.0000000000000, -0.0000251546392, -0.0000251546392, + -0.0000189690722, -0.0001257731959, -0.0003587628866, -0.0005851546392, + -0.0006480412371, -0.0004971134021, -0.0002265979381, +0.0000315463918, + +0.0002705154639, +0.0004907216495, +0.0006606185567, +0.0007298969072, + +0.0006983505155, +0.0005158762887, +0.0002014432990, -0.0000063917526, + +0.0000000000000, +0.0000692783505, +0.0001070103093, +0.0001070103093, + +0.0000000000000, -0.0001888659794, -0.0003964948454, -0.0005600000000, + -0.0005096907216, -0.0001760824742, +0.0002265979381, +0.0006354639175, + +0.0009752577320, +0.0011263917526, +0.0010948453608, +0.0009187628866, + +0.0005663917526, +0.0001383505155, -0.0002014432990, -0.0004152577320, + -0.0003964948454, -0.0001509278351, +0.0001509278351, +0.0003459793814, + +0.0002956701031, +0.0001070103093, -0.0000377319588, -0.0002327835052, + -0.0004529896907, -0.0004907216495, -0.0003459793814, -0.0000880412371, + +0.0002769072165, +0.0005977319588, +0.0007740206186, +0.0009061855670, + +0.0009187628866, +0.0008053608247, +0.0006670103093, +0.0003839175258, + -0.0000567010309, -0.0004216494845, -0.0006292783505, -0.0007047422680, + -0.0005725773196, -0.0002830927835, +0.0000441237113, +0.0004026804124, + +0.0007047422680, +0.0008430927835, +0.0007614432990, +0.0005412371134, + +0.0003459793814, +0.0002076288660, +0.0000754639175, -0.0000189690722, + -0.0000692783505, -0.0000441237113, +0.0000567010309, +0.0002265979381, + +0.0003775257732, +0.0005032989691, +0.0005096907216, +0.0004026804124, + +0.0003146391753, +0.0002643298969, +0.0002453608247, +0.0002894845361, + +0.0003523711340, +0.0003713402062, +0.0003459793814, +0.0002705154639, + +0.0001698969072, +0.0000754639175, +0.0000377319588, +0.0001070103093, + +0.0001950515464, +0.0002076288660, +0.0001760824742, +0.0001131958763, + +0.0000441237113, +0.0001131958763, +0.0002014432990, +0.0001950515464, + +0.0002453608247, +0.0003459793814, +0.0002769072165, +0.0000251546392, + -0.0002705154639, -0.0005158762887, -0.0005538144330, -0.0004090721649, + -0.0001824742268, +0.0001195876289, +0.0004026804124, +0.0004404123711, + +0.0002453608247, -0.0000251546392, -0.0002391752577, -0.0003020618557, + -0.0002956701031, -0.0002517525773, -0.0001006185567, +0.0000818556701, + +0.0002140206186, +0.0002265979381, +0.0001635051546, +0.0001509278351, + +0.0002014432990, +0.0001383505155, +0.0000251546392, +0.0000251546392, + +0.0000628865979, -0.0000125773196, -0.0001824742268, -0.0002956701031, + -0.0002014432990, +0.0000628865979, +0.0002956701031, +0.0003649484536, + +0.0003587628866, +0.0003334020619, +0.0002391752577, +0.0000503092784, + -0.0001635051546, -0.0003649484536, -0.0004090721649, -0.0002830927835, + -0.0001321649485, -0.0000063917526, +0.0001383505155, +0.0002076288660, + +0.0000818556701, -0.0000441237113, -0.0000944329897, -0.0001131958763, + -0.0001006185567, -0.0000377319588, +0.0000000000000, +0.0000063917526, + +0.0000189690722, -0.0000125773196, -0.0001006185567, -0.0001321649485, + -0.0000628865979, +0.0000818556701, +0.0002202061856, +0.0002956701031, + +0.0003208247423, +0.0002643298969, +0.0001760824742, +0.0001760824742, + +0.0002327835052, +0.0003334020619, +0.0004971134021, +0.0005789690722, + +0.0005158762887, +0.0004090721649, +0.0002391752577, +0.0000125773196, + -0.0000944329897, -0.0000692783505, -0.0000441237113, -0.0000754639175, + -0.0001195876289, -0.0001006185567, +0.0000125773196, +0.0002014432990, + +0.0003146391753, +0.0003020618557, +0.0002643298969, +0.0001698969072, + -0.0000315463918, -0.0001950515464, -0.0001383505155, +0.0000251546392, + +0.0001195876289, +0.0000441237113, -0.0001321649485, -0.0002769072165, + -0.0004026804124, -0.0006167010309, -0.0008053608247, -0.0007740206186, + -0.0005915463918, -0.0003649484536, -0.0001131958763, +0.0001070103093, + +0.0002327835052, +0.0001321649485, -0.0000818556701, -0.0001509278351, + +0.0000189690722, +0.0003020618557, +0.0005789690722, +0.0007676288660, + +0.0008053608247, +0.0007237113402, +0.0005348453608, +0.0003146391753, + +0.0001950515464, +0.0002140206186, +0.0003334020619, +0.0004907216495, + +0.0005977319588, +0.0006167010309, +0.0005348453608, +0.0003587628866, + +0.0001950515464, +0.0001509278351, +0.0001509278351, +0.0001070103093, + +0.0000754639175, +0.0000880412371, +0.0001383505155, +0.0001824742268, + +0.0002014432990, +0.0002327835052, +0.0001698969072, -0.0000818556701, + -0.0003964948454, -0.0006041237113, -0.0006041237113, -0.0003397938144, + -0.0000503092784, +0.0000125773196, +0.0000000000000, -0.0000315463918, + -0.0002014432990, -0.0004152577320, -0.0005977319588, -0.0007614432990, + -0.0008053608247, -0.0006857731959, -0.0004845360825, -0.0002391752577, + -0.0001131958763, -0.0001760824742, -0.0002956701031, -0.0003713402062, + -0.0003146391753, -0.0000628865979, +0.0001760824742, +0.0002327835052, + +0.0002076288660, +0.0002014432990, +0.0001383505155, +0.0000125773196, + -0.0001131958763, -0.0001888659794, -0.0001447422680, -0.0000692783505, + -0.0000880412371, -0.0001824742268, -0.0002956701031, -0.0003649484536, + -0.0003272164948, -0.0002643298969, -0.0002391752577, -0.0002014432990, + -0.0001698969072, -0.0002579381443, -0.0003901030928, -0.0004404123711, + -0.0003901030928, -0.0002140206186, +0.0000063917526, +0.0001195876289, + +0.0001195876289, +0.0001321649485, +0.0001383505155, +0.0001383505155, + +0.0001573195876, +0.0000692783505, -0.0001635051546, -0.0003649484536, + -0.0004719587629, -0.0005789690722, -0.0005915463918, -0.0004468041237, + -0.0002453608247, -0.0000567010309, +0.0000377319588, +0.0000189690722, + -0.0000754639175, -0.0002517525773, -0.0003901030928, -0.0004152577320, + -0.0003587628866, -0.0001888659794, +0.0001006185567, +0.0002830927835, + +0.0002327835052, +0.0000944329897, -0.0000692783505, -0.0002579381443, + -0.0003587628866, -0.0003459793814, -0.0002643298969, -0.0001131958763, + +0.0000944329897, +0.0003082474227, +0.0004529896907, +0.0005096907216, + +0.0004781443299, +0.0003713402062, +0.0002327835052, +0.0001573195876, + +0.0001383505155, +0.0001824742268, +0.0002830927835, +0.0003713402062, + +0.0004026804124, +0.0004278350515, +0.0004593814433, +0.0004719587629, + +0.0004468041237, +0.0003713402062, +0.0002956701031, +0.0002453608247, + +0.0001195876289, -0.0000315463918, -0.0001447422680, -0.0001760824742, + -0.0000692783505, +0.0001698969072, +0.0003775257732, +0.0004719587629, + +0.0004529896907, +0.0002643298969, +0.0000000000000, -0.0001824742268, + -0.0002579381443, -0.0002076288660, -0.0000125773196, +0.0002453608247, + +0.0005032989691, +0.0006041237113, +0.0005096907216, +0.0003272164948, + +0.0001131958763, -0.0000692783505, -0.0002202061856, -0.0003964948454, + -0.0005915463918, -0.0006857731959, -0.0006731958763, -0.0005284536082, + -0.0002643298969, -0.0000063917526, +0.0001573195876, +0.0002830927835, + +0.0002769072165, +0.0001888659794, +0.0002202061856, +0.0003397938144, + +0.0004152577320, +0.0004593814433, +0.0004529896907, +0.0003649484536, + +0.0001888659794, +0.0000125773196, -0.0000063917526, +0.0000944329897, + +0.0001888659794, +0.0002453608247, +0.0002769072165, +0.0002014432990, + +0.0000000000000, -0.0002830927835, -0.0004971134021, -0.0004971134021, + -0.0003082474227, -0.0000567010309, +0.0001573195876, +0.0002453608247, + +0.0001635051546, +0.0000251546392, -0.0000818556701, -0.0001698969072, + -0.0001824742268, -0.0001509278351, -0.0000441237113, +0.0001698969072, + +0.0003713402062, +0.0003649484536, +0.0001950515464, -0.0000315463918, + -0.0002705154639, -0.0004593814433, -0.0005663917526, -0.0005474226804, + -0.0004026804124, -0.0002202061856, -0.0001070103093, -0.0000441237113, + -0.0000315463918, -0.0000818556701, -0.0001760824742, -0.0002076288660, + -0.0001195876289, +0.0000125773196, +0.0001509278351, +0.0002643298969, + +0.0002705154639, +0.0001698969072, +0.0001070103093, +0.0001006185567, + +0.0001195876289, +0.0001573195876, +0.0001573195876, +0.0000628865979, + -0.0000818556701, -0.0002643298969, -0.0004468041237, -0.0005096907216, + -0.0003649484536, -0.0000818556701, +0.0001635051546, +0.0003082474227, + +0.0002956701031, +0.0000692783505, -0.0002830927835, -0.0005915463918, + -0.0007173195876, -0.0006103092784, -0.0002894845361, +0.0001509278351, + +0.0005725773196, +0.0007740206186, +0.0006731958763, +0.0003839175258, + +0.0000315463918, -0.0003397938144, -0.0006606185567, -0.0007991752577, + -0.0007237113402, -0.0004404123711, -0.0000692783505, +0.0002076288660, + +0.0003839175258, +0.0004907216495, +0.0004781443299, +0.0003459793814, + +0.0001824742268, +0.0000251546392, -0.0000944329897, -0.0001257731959, + -0.0000063917526, +0.0001509278351, +0.0001950515464, +0.0000628865979, + -0.0001509278351, -0.0003334020619, -0.0003713402062, -0.0002140206186, + +0.0000000000000, +0.0001509278351, +0.0002579381443, +0.0002956701031, + +0.0001950515464, +0.0000441237113, +0.0000000000000, +0.0000503092784, + +0.0001635051546, +0.0002391752577, +0.0002579381443, +0.0002202061856, + +0.0001257731959, +0.0000503092784, +0.0000754639175, +0.0001383505155, + +0.0001635051546, +0.0001635051546, +0.0001321649485, +0.0000441237113, + -0.0000692783505, -0.0001573195876, -0.0001383505155, -0.0000125773196, + +0.0001447422680, +0.0003397938144, +0.0005222680412, +0.0006292783505, + +0.0005851546392, +0.0004152577320, +0.0002705154639, +0.0001824742268, + +0.0000628865979, -0.0000251546392, -0.0000377319588, -0.0000944329897, + -0.0002391752577, -0.0002894845361, -0.0002014432990, -0.0000818556701, + +0.0000000000000, +0.0000503092784, +0.0001006185567, +0.0001698969072, + +0.0002202061856, +0.0002453608247, +0.0003082474227, +0.0004152577320, + +0.0004781443299, +0.0004152577320, +0.0002517525773, +0.0000692783505, + -0.0001321649485, -0.0003082474227, -0.0002956701031, -0.0001321649485, + +0.0000000000000, +0.0000818556701, +0.0000880412371, +0.0000000000000, + -0.0001195876289, -0.0002140206186, -0.0002769072165, -0.0002643298969, + -0.0002517525773, -0.0002956701031, -0.0003082474227, -0.0002327835052, + -0.0000944329897, +0.0000503092784, +0.0001509278351, +0.0001573195876, + +0.0001006185567, -0.0000441237113, -0.0003146391753, -0.0005851546392, + -0.0007298969072, -0.0006544329897, -0.0004655670103, -0.0003334020619, + -0.0002327835052, -0.0000818556701, +0.0000315463918, +0.0001131958763, + +0.0001950515464, +0.0002517525773, +0.0003082474227, +0.0003901030928, + +0.0003901030928, +0.0001950515464, -0.0001006185567, -0.0003272164948, + -0.0003397938144, -0.0001698969072, +0.0000503092784, +0.0002202061856, + +0.0002579381443, +0.0001573195876, +0.0000000000000, -0.0001509278351, + -0.0002391752577, -0.0002391752577, -0.0001698969072, -0.0000315463918, + +0.0000944329897, +0.0000880412371, -0.0000628865979, -0.0002830927835, + -0.0004719587629, -0.0005412371134, -0.0004781443299, -0.0002956701031, + -0.0000692783505, +0.0000125773196, -0.0000503092784, -0.0001383505155, + -0.0002265979381, -0.0003839175258, -0.0004845360825, -0.0004719587629, + -0.0004468041237, -0.0003713402062, -0.0002705154639, -0.0002076288660, + -0.0001131958763, +0.0000063917526, +0.0000818556701, +0.0001257731959, + +0.0001447422680, +0.0000692783505, -0.0000315463918, -0.0001321649485, + -0.0002014432990, -0.0002140206186, -0.0001573195876, -0.0000944329897, + -0.0000063917526, +0.0000754639175, +0.0001195876289, +0.0000880412371, + +0.0000189690722, +0.0000063917526, +0.0000441237113, +0.0000692783505, + +0.0000880412371, +0.0001447422680, +0.0002076288660, +0.0002705154639, + +0.0003272164948, +0.0002705154639, +0.0001070103093, -0.0000441237113, + -0.0001509278351, -0.0002014432990, -0.0002265979381, -0.0002202061856, + -0.0001070103093, +0.0000692783505, +0.0001509278351, +0.0000628865979, + -0.0000692783505, -0.0001698969072, -0.0001888659794, -0.0001257731959, + +0.0000251546392, +0.0002391752577, +0.0003839175258, +0.0004090721649, + +0.0003459793814, +0.0002453608247, +0.0001447422680, +0.0000441237113, + -0.0000441237113, -0.0001383505155, -0.0002705154639, -0.0003901030928, + -0.0004026804124, -0.0002579381443, -0.0000063917526, +0.0002453608247, + +0.0003713402062, +0.0003020618557, +0.0001573195876, +0.0000377319588, + +0.0000000000000, +0.0000000000000, +0.0000000000000, +0.0000315463918, + +0.0000880412371, +0.0001447422680, +0.0002265979381, +0.0003334020619, + +0.0003775257732, +0.0002956701031, +0.0001447422680, +0.0000063917526, + -0.0000628865979, -0.0001257731959, -0.0002076288660, -0.0001888659794, + -0.0000189690722, +0.0001321649485, +0.0002014432990, +0.0001950515464, + +0.0000818556701, -0.0000628865979, -0.0001321649485, -0.0000818556701, + +0.0000000000000, +0.0001131958763, +0.0002327835052, +0.0002956701031, + +0.0002643298969, +0.0001509278351, +0.0000189690722, -0.0000125773196, + +0.0000251546392, +0.0000692783505, +0.0000628865979, +0.0000315463918, + +0.0000000000000, -0.0000251546392, -0.0000189690722, +0.0000189690722, + +0.0001195876289, +0.0002830927835, +0.0004152577320, +0.0004216494845, + +0.0002830927835, +0.0000692783505, -0.0001447422680, -0.0003082474227, + -0.0003649484536, -0.0003020618557, -0.0001257731959, +0.0000628865979, + +0.0002327835052, +0.0003334020619, +0.0002769072165, +0.0000754639175, + -0.0001383505155, -0.0002956701031, -0.0003523711340, -0.0002830927835, + -0.0001321649485, +0.0000000000000, +0.0000567010309, +0.0000251546392, + -0.0001573195876, -0.0004216494845, -0.0005725773196, -0.0005725773196, + -0.0004468041237, -0.0002014432990, +0.0000567010309, +0.0001888659794, + +0.0001383505155, +0.0000000000000, -0.0000880412371, -0.0000628865979, + +0.0000503092784, +0.0002076288660, +0.0003523711340, +0.0003964948454, + +0.0002894845361, +0.0001131958763, -0.0000628865979, -0.0002076288660, + -0.0002014432990, -0.0000628865979, +0.0000628865979, +0.0001321649485, + +0.0001006185567, -0.0000441237113, -0.0002140206186, -0.0002956701031, + -0.0002579381443, -0.0001195876289, +0.0000377319588, +0.0001509278351, + +0.0001824742268, +0.0001573195876, +0.0001006185567, +0.0000441237113, + +0.0000063917526, +0.0000125773196, +0.0000251546392, -0.0000189690722, + -0.0001321649485, -0.0002076288660, -0.0002076288660, -0.0001573195876, + -0.0000628865979, +0.0000063917526, +0.0000315463918, +0.0000000000000, + -0.0000377319588, -0.0000377319588, +0.0000000000000, +0.0000503092784, + +0.0001321649485, +0.0002140206186, +0.0002265979381, +0.0001383505155, + +0.0000503092784, +0.0000125773196, +0.0000125773196, +0.0000251546392, + +0.0000377319588, +0.0000315463918, -0.0000189690722, -0.0000944329897, + -0.0000818556701, +0.0000000000000, +0.0000441237113, +0.0000628865979, + +0.0001006185567, +0.0001760824742, +0.0002517525773, +0.0002517525773, + +0.0001888659794, +0.0001635051546, +0.0001698969072, +0.0001257731959, + +0.0000628865979, +0.0000189690722, -0.0000503092784, -0.0001509278351, + -0.0002076288660, -0.0001824742268, -0.0001006185567, -0.0000251546392, + +0.0000315463918, +0.0000628865979, +0.0000315463918, -0.0000441237113, + -0.0001257731959, -0.0001573195876, -0.0000880412371, +0.0000628865979, + +0.0002517525773, +0.0003901030928, +0.0004593814433, +0.0004719587629, + +0.0004529896907, +0.0004216494845, +0.0003587628866, +0.0002327835052, + +0.0000818556701, -0.0000125773196, -0.0000567010309, -0.0001195876289, + -0.0001573195876, -0.0001257731959, -0.0000567010309, +0.0000125773196, + +0.0001321649485, +0.0002014432990, +0.0001447422680, +0.0000377319588, + -0.0000377319588, -0.0001195876289, -0.0002014432990, -0.0002453608247, + -0.0002265979381, -0.0001383505155, -0.0000063917526, +0.0000818556701, + +0.0001195876289, +0.0001070103093, +0.0000818556701, +0.0000692783505, + +0.0000189690722, -0.0000628865979, -0.0001070103093, -0.0000944329897, + -0.0000754639175, -0.0000628865979, -0.0000567010309, -0.0000189690722, + +0.0000441237113, +0.0000880412371, +0.0000189690722, -0.0001257731959, + -0.0002769072165, -0.0003459793814, -0.0003082474227, -0.0001888659794, + -0.0000189690722, +0.0001006185567, +0.0001447422680, +0.0001509278351, + +0.0001509278351, +0.0001447422680, +0.0002014432990, +0.0004026804124, + +0.0006103092784, +0.0006921649485, +0.0006480412371, +0.0004655670103, + +0.0001760824742, -0.0000692783505, -0.0001888659794, -0.0001950515464, + -0.0001509278351, -0.0001006185567, -0.0000628865979, -0.0000315463918, + -0.0000251546392, -0.0000628865979, -0.0001257731959, -0.0002014432990, + -0.0002956701031, -0.0004278350515, -0.0005600000000, -0.0005915463918, + -0.0005158762887, -0.0004026804124, -0.0002769072165, -0.0001321649485, + -0.0000315463918, +0.0000000000000, +0.0000063917526, +0.0000189690722, + +0.0000818556701, +0.0001950515464, +0.0003082474227, +0.0003713402062, + +0.0003459793814, +0.0002391752577, +0.0000441237113, -0.0002014432990, + -0.0004152577320, -0.0004845360825, -0.0004152577320, -0.0002579381443, + -0.0000251546392, +0.0001698969072, +0.0002769072165, +0.0002830927835, + +0.0001257731959, -0.0001195876289, -0.0003208247423, -0.0004026804124, + -0.0003649484536, -0.0001635051546, +0.0000944329897, +0.0002894845361, + +0.0003523711340, +0.0002830927835, +0.0000944329897, -0.0000880412371, + -0.0002014432990, -0.0002327835052, -0.0002140206186, -0.0001950515464, + -0.0001950515464, -0.0002140206186, -0.0002202061856, -0.0001824742268, + -0.0001131958763, -0.0000503092784, -0.0000063917526, +0.0000251546392, + +0.0000628865979, +0.0000944329897, +0.0001195876289, +0.0001321649485, + +0.0001573195876, +0.0002014432990, +0.0002517525773, +0.0002705154639, + +0.0002705154639, +0.0002202061856, +0.0001195876289, +0.0000000000000, + -0.0000944329897, -0.0001321649485, -0.0000944329897, +0.0000251546392, + +0.0001698969072, +0.0002265979381, +0.0001635051546, +0.0000125773196, + -0.0001635051546, -0.0003397938144, -0.0004404123711, -0.0004655670103, + -0.0004468041237, -0.0004026804124, -0.0003334020619, -0.0002327835052, + -0.0000944329897, +0.0000628865979, +0.0002014432990, +0.0002579381443, + +0.0002391752577, +0.0001760824742, +0.0000377319588, -0.0001131958763, + -0.0002140206186, -0.0002769072165, -0.0003208247423, -0.0003082474227, + -0.0002705154639, -0.0002327835052, -0.0001888659794, -0.0001635051546, + -0.0002140206186, -0.0003020618557, -0.0003587628866, -0.0003397938144, + -0.0003020618557, -0.0002327835052, -0.0001131958763, +0.0000063917526, + +0.0000944329897, +0.0001447422680, +0.0001509278351, +0.0001006185567, + +0.0000251546392, -0.0000377319588, -0.0001070103093, -0.0001195876289, + -0.0000567010309, +0.0000000000000, +0.0000251546392, +0.0000125773196, + -0.0000377319588, -0.0001321649485, -0.0002076288660, -0.0002327835052, + -0.0002140206186, -0.0001698969072, -0.0001070103093, -0.0000063917526, + +0.0000754639175, +0.0001573195876, +0.0002265979381, +0.0002453608247, + +0.0001824742268, +0.0000503092784, -0.0000880412371, -0.0002140206186, + -0.0003082474227, -0.0003334020619, -0.0002202061856, -0.0000503092784, + +0.0000315463918, +0.0000503092784, +0.0000251546392, +0.0000189690722, + +0.0000628865979, +0.0000944329897, +0.0000000000000, -0.0001509278351, + -0.0003334020619, -0.0004971134021, -0.0005915463918, -0.0005600000000, + -0.0004404123711, -0.0002391752577, -0.0000063917526, +0.0001383505155, + +0.0002202061856, +0.0002769072165, +0.0003082474227, +0.0002830927835, + +0.0001950515464, +0.0001195876289, +0.0000692783505, +0.0000503092784, + +0.0000692783505, +0.0000880412371, +0.0000880412371, +0.0001195876289, + +0.0001824742268, +0.0002202061856, +0.0002453608247, +0.0002643298969, + +0.0002453608247, +0.0001635051546, +0.0000567010309, -0.0000189690722, + -0.0000754639175, -0.0001195876289, -0.0001383505155, -0.0000818556701, + +0.0000944329897, +0.0003146391753, +0.0004278350515, +0.0003649484536, + +0.0002076288660, +0.0000628865979, -0.0000315463918, -0.0000880412371, + -0.0001195876289, -0.0001573195876, -0.0001509278351, -0.0001195876289, + -0.0001195876289, -0.0001131958763, -0.0000567010309, +0.0000063917526, + +0.0000818556701, +0.0001635051546, +0.0002202061856, +0.0002327835052, + +0.0002140206186, +0.0001509278351, +0.0000567010309, -0.0000125773196, + -0.0000377319588, +0.0000377319588, +0.0001824742268, +0.0002769072165, + +0.0003020618557, +0.0002956701031, +0.0002643298969, +0.0002202061856, + +0.0002076288660, +0.0002327835052, +0.0002517525773, +0.0002453608247, + +0.0001888659794, +0.0000567010309, -0.0001257731959, -0.0002830927835, + -0.0003082474227, -0.0001950515464, +0.0000377319588, +0.0003649484536, + +0.0006544329897, +0.0008179381443, +0.0007927835052, +0.0006103092784, + +0.0003901030928, +0.0001950515464, +0.0000441237113, -0.0000567010309, + -0.0001447422680, -0.0001824742268, -0.0001698969072, -0.0001383505155, + -0.0000692783505, +0.0000441237113, +0.0001573195876, +0.0002202061856, + +0.0002391752577, +0.0002076288660, +0.0001131958763, +0.0000251546392, + +0.0000000000000, +0.0000377319588, +0.0000944329897, +0.0001509278351, + +0.0002327835052, +0.0003146391753, +0.0003397938144, +0.0003208247423, + +0.0003082474227, +0.0002327835052, +0.0000880412371, -0.0000567010309, + -0.0001698969072, -0.0002140206186, -0.0001824742268, -0.0000944329897, + +0.0000315463918, +0.0001635051546, +0.0002453608247, +0.0003020618557, + +0.0003523711340, +0.0003713402062, +0.0003901030928, +0.0004152577320, + +0.0004593814433, +0.0004529896907, +0.0003272164948, +0.0001257731959, + -0.0000189690722, -0.0001509278351, -0.0002453608247, -0.0002202061856, + -0.0000944329897, +0.0000189690722, +0.0000880412371, +0.0000567010309, + -0.0000503092784, -0.0001383505155, -0.0001635051546, -0.0001447422680, + -0.0000692783505, +0.0000000000000, +0.0000377319588, +0.0001195876289, + +0.0002140206186, +0.0002579381443, +0.0002956701031, +0.0003397938144, + +0.0003775257732, +0.0003964948454, +0.0003713402062, +0.0003146391753, + +0.0002830927835, +0.0003082474227, +0.0003649484536, +0.0004404123711, + +0.0004845360825, +0.0003964948454, +0.0002202061856, +0.0000628865979, + -0.0000754639175, -0.0002265979381, -0.0002769072165, -0.0002014432990, + -0.0000692783505, +0.0000567010309, +0.0001509278351, +0.0001447422680, + +0.0000628865979, -0.0000315463918, -0.0001321649485, -0.0001447422680, + -0.0000377319588, +0.0000818556701, +0.0001321649485, +0.0000754639175, + -0.0000880412371, -0.0002894845361, -0.0004152577320, -0.0004468041237, + -0.0004090721649, -0.0003334020619, -0.0002327835052, -0.0000944329897, + +0.0000754639175, +0.0002140206186, +0.0002643298969, +0.0002769072165, + +0.0002643298969, +0.0002014432990, +0.0001006185567, +0.0000125773196, + -0.0000818556701, -0.0002391752577, -0.0003713402062, -0.0004090721649, + -0.0003272164948, -0.0001195876289, +0.0001321649485, +0.0003334020619, + +0.0004404123711, +0.0004719587629, +0.0004152577320, +0.0002894845361, + +0.0001383505155, -0.0000189690722, -0.0001321649485, -0.0001195876289, + -0.0000503092784, +0.0000125773196, +0.0001006185567, +0.0001950515464, + +0.0002517525773, +0.0002579381443, +0.0001698969072, +0.0000000000000, + -0.0002391752577, -0.0004781443299, -0.0006292783505, -0.0006731958763, + -0.0005474226804, -0.0002202061856, +0.0001698969072, +0.0004593814433, + +0.0005851546392, +0.0005348453608, +0.0003587628866, +0.0001509278351, + -0.0000125773196, -0.0001006185567, -0.0000628865979, -0.0000377319588, + -0.0001383505155, -0.0002705154639, -0.0003775257732, -0.0004593814433, + -0.0004593814433, -0.0003587628866, -0.0002265979381, -0.0001635051546, + -0.0002705154639, -0.0004907216495, -0.0006480412371, -0.0006670103093, + -0.0005284536082, -0.0002327835052, +0.0001006185567, +0.0003523711340, + +0.0004845360825, +0.0004845360825, +0.0003334020619, +0.0001383505155, + -0.0000063917526, -0.0001257731959, -0.0002076288660, -0.0002327835052, + -0.0002140206186, -0.0002076288660, -0.0002265979381, -0.0002265979381, + -0.0002140206186, -0.0002202061856, -0.0002391752577, -0.0002517525773, + -0.0002517525773, -0.0002453608247, -0.0002517525773, -0.0002327835052, + -0.0001321649485, +0.0000063917526, +0.0001447422680, +0.0002517525773, + +0.0002830927835, +0.0002265979381, +0.0001573195876, +0.0001195876289, + +0.0000754639175, +0.0000125773196, -0.0000377319588, -0.0001070103093, + -0.0001888659794, -0.0002579381443, -0.0002830927835, -0.0002517525773, + -0.0002076288660, -0.0001760824742, -0.0001509278351, -0.0001509278351, + -0.0002140206186, -0.0003082474227, -0.0003839175258, -0.0003839175258, + -0.0003020618557, -0.0001573195876, +0.0000125773196, +0.0002076288660, + +0.0003649484536, +0.0004278350515, +0.0003649484536, +0.0002076288660, + +0.0000441237113, -0.0000754639175, -0.0001383505155, -0.0001195876289, + -0.0000567010309, -0.0000063917526, +0.0000000000000, -0.0000189690722, + -0.0000503092784, -0.0000567010309, -0.0000567010309, -0.0000818556701, + -0.0001257731959, -0.0002140206186, -0.0003020618557, -0.0003208247423, + -0.0002769072165, -0.0002076288660, -0.0001006185567, +0.0000000000000, + +0.0000503092784, +0.0000503092784, +0.0000315463918, +0.0000125773196, + +0.0000503092784, +0.0001006185567, +0.0001257731959, +0.0001698969072, + +0.0002391752577, +0.0002705154639, +0.0002517525773, +0.0002140206186, + +0.0001195876289, -0.0000503092784, -0.0002769072165, -0.0004468041237, + -0.0005538144330, -0.0005915463918, -0.0004971134021, -0.0003208247423, + -0.0002076288660, -0.0001888659794, -0.0001635051546, -0.0000880412371, + +0.0000628865979, +0.0002894845361, +0.0005032989691, +0.0006228865979, + +0.0005915463918, +0.0004278350515, +0.0002643298969, +0.0002140206186, + +0.0002705154639, +0.0003523711340, +0.0003964948454, +0.0003713402062, + +0.0002517525773, +0.0000628865979, -0.0001006185567, -0.0002327835052, + -0.0003146391753, -0.0003459793814, -0.0003208247423, -0.0002705154639, + -0.0001950515464, -0.0000880412371, -0.0000063917526, +0.0000251546392, + +0.0000441237113, +0.0000628865979, +0.0000377319588, -0.0000315463918, + -0.0001195876289, -0.0001447422680, -0.0001195876289, -0.0000692783505, + +0.0000125773196, +0.0001573195876, +0.0002705154639, +0.0003020618557, + +0.0002643298969, +0.0002014432990, +0.0001573195876, +0.0001195876289, + +0.0001195876289, +0.0002076288660, +0.0003272164948, +0.0003649484536, + +0.0003020618557, +0.0002076288660, +0.0001195876289, +0.0000251546392, + -0.0000754639175, -0.0001888659794, -0.0002769072165, -0.0003208247423, + -0.0003146391753, -0.0002391752577, -0.0001070103093, +0.0000754639175, + +0.0002956701031, +0.0004655670103, +0.0005412371134, +0.0005096907216, + +0.0004090721649, +0.0003082474227, +0.0002140206186, +0.0001321649485, + +0.0000818556701, +0.0000441237113, -0.0000377319588, -0.0001635051546, + -0.0002265979381, -0.0001888659794, -0.0001195876289, -0.0000628865979, + -0.0000251546392, +0.0000189690722, +0.0000441237113, +0.0000377319588, + +0.0000441237113, +0.0000818556701, +0.0000944329897, +0.0000628865979, + +0.0000189690722, +0.0000000000000, +0.0000251546392, +0.0000818556701, + +0.0001321649485, +0.0002140206186, +0.0002769072165, +0.0002643298969, + +0.0001509278351, +0.0000000000000, -0.0001070103093, -0.0001888659794, + -0.0002453608247, -0.0003020618557, -0.0003082474227, -0.0002140206186, + -0.0000692783505, +0.0000125773196, +0.0000692783505, +0.0001447422680, + +0.0001824742268, +0.0001383505155, +0.0000000000000, -0.0001509278351, + -0.0003082474227, -0.0003901030928, -0.0003587628866, -0.0002076288660, + +0.0000063917526, +0.0002265979381, +0.0003523711340, +0.0003839175258, + +0.0003397938144, +0.0002265979381, +0.0000754639175, +0.0000000000000, + +0.0000063917526, +0.0000441237113, +0.0000377319588, +0.0000251546392, + +0.0000000000000, -0.0000567010309, -0.0001006185567, -0.0000880412371, + -0.0000754639175, -0.0000692783505, -0.0000125773196, +0.0000880412371, + +0.0001950515464, +0.0002391752577, +0.0002076288660, +0.0001698969072, + +0.0001383505155, +0.0000628865979, -0.0000503092784, -0.0001383505155, + -0.0001760824742, -0.0001950515464, -0.0002140206186, -0.0002014432990, + -0.0001195876289, +0.0000000000000, +0.0000692783505, +0.0000880412371, + +0.0000944329897, +0.0001006185567, +0.0000567010309, -0.0000315463918, + -0.0001131958763, -0.0001321649485, -0.0000880412371, +0.0000000000000, + +0.0000944329897, +0.0001573195876, +0.0001447422680, +0.0000692783505, + -0.0000441237113, -0.0001698969072, -0.0002140206186, -0.0001760824742, + -0.0000944329897, -0.0000189690722, +0.0000189690722, +0.0000251546392, + +0.0000000000000, -0.0000377319588, -0.0000692783505, -0.0000567010309, + +0.0000000000000, +0.0000503092784, +0.0000880412371, +0.0000944329897, + +0.0000503092784, -0.0000377319588, -0.0001321649485, -0.0001760824742, + -0.0001383505155, -0.0000441237113, +0.0000441237113, +0.0001070103093, + +0.0001383505155, +0.0001257731959, +0.0000880412371, +0.0000567010309, + +0.0000377319588, +0.0000125773196, +0.0000000000000, -0.0000063917526, + -0.0000251546392, -0.0000692783505, -0.0001257731959, -0.0001760824742, + -0.0001888659794, -0.0001635051546, -0.0001321649485, -0.0001006185567, + -0.0000754639175, -0.0000503092784, -0.0000189690722, +0.0000000000000, + +0.0000063917526, +0.0000567010309, +0.0001635051546, +0.0002643298969, + +0.0003146391753, +0.0003272164948, +0.0003020618557, +0.0002391752577, + +0.0001698969072, +0.0001070103093, +0.0000692783505, +0.0000377319588, + +0.0000125773196, +0.0000000000000, -0.0000189690722, -0.0000441237113, + -0.0000628865979, -0.0000754639175, -0.0001195876289, -0.0001760824742, + -0.0001888659794, -0.0001447422680, -0.0000567010309, +0.0000503092784, + +0.0001760824742, +0.0002265979381, +0.0001573195876, +0.0000189690722, + -0.0001195876289, -0.0002327835052, -0.0002769072165, -0.0002453608247, + -0.0001888659794, -0.0001509278351, -0.0001447422680, -0.0001573195876, + -0.0001635051546, -0.0001573195876, -0.0001509278351, -0.0001321649485, + -0.0000628865979, +0.0000000000000, +0.0000251546392, +0.0000628865979, + +0.0001131958763, +0.0001635051546, +0.0001888659794, +0.0001698969072, + +0.0000818556701, -0.0000503092784, -0.0002202061856, -0.0003587628866, + -0.0003964948454, -0.0003020618557, -0.0001447422680, +0.0000000000000, + +0.0001131958763, +0.0001824742268, +0.0001824742268, +0.0001257731959, + +0.0000754639175, +0.0000189690722, -0.0000125773196, -0.0000503092784, + -0.0000692783505, -0.0000754639175, -0.0000754639175, -0.0000944329897, + -0.0001257731959, -0.0001257731959, -0.0001131958763, -0.0001131958763, + -0.0000944329897, -0.0000567010309, -0.0000315463918, -0.0000125773196, + +0.0000000000000, -0.0000125773196, -0.0000251546392, -0.0000315463918, + -0.0000189690722, +0.0000251546392, +0.0000944329897, +0.0001573195876, + +0.0001698969072, +0.0001195876289, +0.0000000000000, -0.0001321649485, + -0.0002517525773, -0.0003020618557, -0.0002517525773, -0.0001573195876, + -0.0000818556701, -0.0000315463918, +0.0000063917526, +0.0000251546392, + +0.0000189690722, +0.0000125773196, +0.0000567010309, +0.0001257731959, + +0.0001698969072, +0.0001760824742, +0.0001383505155, +0.0000503092784, + -0.0000628865979, -0.0001888659794, -0.0002579381443, -0.0002453608247, + -0.0001321649485, +0.0000315463918, +0.0002140206186, +0.0003146391753, + +0.0003334020619, +0.0002956701031, +0.0002202061856, +0.0001195876289, + +0.0000503092784, +0.0000315463918, +0.0000189690722, +0.0000125773196, + +0.0000125773196, +0.0000189690722, +0.0000251546392, +0.0000125773196, + +0.0000000000000, +0.0000063917526, +0.0000251546392, +0.0000567010309, + +0.0000944329897, +0.0001257731959, +0.0001195876289, +0.0000692783505, + -0.0000189690722, -0.0001573195876, -0.0002453608247, -0.0002579381443, + -0.0002140206186, -0.0001447422680, -0.0000818556701, -0.0000441237113, + +0.0000000000000, +0.0000189690722, +0.0000441237113, +0.0000628865979, + +0.0000818556701, +0.0001006185567, +0.0001321649485, +0.0001509278351, + +0.0001447422680, +0.0001257731959, +0.0000880412371, +0.0000189690722, + -0.0000567010309, -0.0001131958763, -0.0001131958763, -0.0000692783505, + +0.0000000000000, +0.0000818556701, +0.0001573195876, +0.0001760824742, + +0.0001698969072, +0.0001509278351, +0.0001257731959, +0.0001070103093, + +0.0000818556701, +0.0000628865979, +0.0000692783505, +0.0000754639175, + +0.0000692783505, +0.0000503092784, +0.0000000000000, -0.0000692783505, + -0.0001131958763, -0.0001131958763, -0.0000944329897, -0.0000818556701, + -0.0000944329897, -0.0001195876289, -0.0001257731959, -0.0001195876289, + -0.0000692783505, +0.0000000000000, +0.0000628865979, +0.0000692783505, + +0.0000189690722, -0.0000377319588, -0.0001070103093, -0.0001509278351, + -0.0001321649485, -0.0000063917526, +0.0001573195876, +0.0002830927835, + +0.0002769072165, +0.0001447422680, -0.0000441237113, -0.0002265979381, + -0.0003082474227, -0.0002830927835, -0.0001760824742, -0.0000315463918, + +0.0000944329897, +0.0002014432990, +0.0002327835052, +0.0001888659794, + +0.0001447422680, +0.0001257731959, +0.0001321649485, +0.0001195876289, + +0.0000692783505, +0.0000189690722, -0.0000063917526, -0.0000503092784, + -0.0000944329897, -0.0000754639175, +0.0000000000000, +0.0000818556701, + +0.0001383505155, +0.0001698969072, +0.0001447422680, +0.0000441237113, + -0.0001006185567, -0.0002076288660, -0.0001950515464, -0.0000818556701, + +0.0000567010309, +0.0002014432990, +0.0002956701031, +0.0003146391753, + +0.0002265979381, +0.0000818556701, -0.0000189690722, -0.0000944329897, + -0.0001447422680, -0.0001635051546, -0.0001573195876, -0.0001257731959, + -0.0000628865979, -0.0000189690722, +0.0000000000000, +0.0000063917526, + +0.0000000000000, -0.0000503092784, -0.0001070103093, -0.0001006185567, + -0.0000692783505, -0.0000251546392, +0.0000315463918, +0.0000880412371, + +0.0001257731959, +0.0001447422680, +0.0001257731959, +0.0000754639175, + +0.0000315463918, +0.0000125773196, +0.0000189690722, +0.0000377319588, + +0.0000503092784, +0.0000441237113, +0.0000441237113, +0.0000503092784, + +0.0000944329897, +0.0001635051546, +0.0002453608247, +0.0002830927835, + +0.0002643298969, +0.0001824742268, +0.0000754639175, +0.0000063917526, + +0.0000000000000, +0.0000315463918, +0.0001006185567, +0.0001760824742, + +0.0002202061856, +0.0002014432990, +0.0001383505155, +0.0000628865979, + +0.0000251546392, +0.0000441237113, +0.0000692783505, +0.0000628865979, + +0.0000125773196, -0.0000628865979, -0.0001824742268, -0.0002453608247, + -0.0002014432990, -0.0000880412371, +0.0000567010309, +0.0002076288660, + +0.0002956701031, +0.0002769072165, +0.0001698969072, +0.0000125773196, + -0.0000944329897, -0.0001321649485, -0.0001131958763, -0.0000692783505, + -0.0000063917526, +0.0000692783505, +0.0001509278351, +0.0001888659794, + +0.0002140206186, +0.0002265979381, +0.0002327835052, +0.0002140206186, + +0.0001760824742, +0.0001070103093, +0.0000125773196, -0.0000628865979, + -0.0001447422680, -0.0001698969072, -0.0001321649485, -0.0000441237113, + +0.0000377319588, +0.0001006185567, +0.0001195876289, +0.0000818556701, + +0.0000251546392, +0.0000000000000, +0.0000000000000, +0.0000125773196, + +0.0000125773196, +0.0000063917526, +0.0000000000000, +0.0000000000000, + -0.0000063917526, -0.0000063917526, -0.0000063917526, +0.0000063917526, + +0.0000441237113, +0.0000880412371, +0.0001195876289, +0.0001321649485, + +0.0000944329897, +0.0000315463918, +0.0000000000000, -0.0000251546392, + -0.0000567010309, -0.0000628865979, -0.0000315463918, +0.0000000000000, + +0.0000000000000, +0.0000000000000, +0.0000125773196, +0.0000251546392, + +0.0000503092784, +0.0000628865979, +0.0000315463918, -0.0000063917526, + -0.0000315463918, -0.0000503092784, -0.0000441237113, -0.0000125773196, + +0.0000189690722, +0.0000754639175, +0.0001195876289, +0.0001070103093, + +0.0000503092784, +0.0000063917526, -0.0000315463918, -0.0000754639175, + -0.0001131958763, -0.0001006185567, -0.0000251546392, +0.0000628865979, + +0.0001383505155, +0.0001635051546, +0.0001131958763, +0.0000000000000, + -0.0001195876289, -0.0001888659794, -0.0002140206186, -0.0001888659794, + -0.0001257731959, -0.0000377319588, +0.0000189690722, +0.0000251546392, + +0.0000000000000, +0.0000000000000, +0.0000189690722, +0.0000567010309, + +0.0000754639175, +0.0000692783505, +0.0000441237113, +0.0000000000000, + -0.0000315463918, -0.0000377319588, +0.0000000000000, +0.0000441237113, + +0.0000692783505, +0.0000567010309, +0.0000000000000, -0.0000944329897, + -0.0001950515464, -0.0002579381443, -0.0002453608247, -0.0001573195876, + -0.0000251546392, +0.0001070103093, +0.0002265979381, +0.0002517525773, + +0.0001824742268, +0.0000818556701, +0.0000000000000, -0.0000441237113, + -0.0000567010309, -0.0000189690722, +0.0000251546392, +0.0000628865979, + +0.0000441237113, +0.0000063917526, -0.0000251546392, -0.0000503092784, + -0.0000567010309, -0.0000628865979, -0.0000628865979, -0.0000628865979, + -0.0000692783505, -0.0000880412371, -0.0000880412371, -0.0000628865979, + -0.0000315463918, +0.0000000000000, +0.0000251546392, +0.0000441237113, + +0.0000377319588, +0.0000251546392, +0.0000315463918, +0.0000441237113, + +0.0000251546392, +0.0000000000000, -0.0000189690722, -0.0000377319588, + -0.0000503092784, -0.0000503092784, -0.0000315463918, +0.0000000000000, + +0.0000503092784, +0.0000692783505, +0.0000818556701, +0.0000880412371, + +0.0000880412371, +0.0000567010309, +0.0000000000000, -0.0001006185567, + -0.0001760824742, -0.0002014432990, -0.0001573195876, -0.0000567010309, + +0.0000315463918, +0.0000818556701, +0.0000818556701, +0.0000189690722, + -0.0000692783505, -0.0001635051546, -0.0002453608247, -0.0002830927835, + -0.0002517525773, -0.0001573195876, -0.0000503092784, +0.0000189690722, + +0.0000692783505, +0.0000944329897, +0.0001006185567, +0.0000818556701, + +0.0000441237113, +0.0000000000000, -0.0000189690722, -0.0000251546392, + -0.0000377319588, -0.0000628865979, -0.0000754639175, -0.0000692783505, + -0.0000377319588, +0.0000063917526, +0.0000818556701, +0.0001447422680, + +0.0001698969072, +0.0001257731959, +0.0000189690722, -0.0000818556701, + -0.0001509278351, -0.0001635051546, -0.0001131958763, -0.0000377319588, + +0.0000189690722, +0.0000441237113, +0.0000125773196, -0.0000628865979, + -0.0001509278351, -0.0001950515464, -0.0002014432990, -0.0001698969072, + -0.0001131958763, -0.0000567010309, -0.0000377319588, -0.0000628865979, + -0.0000944329897, -0.0000880412371, -0.0000441237113, +0.0000000000000, + +0.0000441237113, +0.0000692783505, +0.0000315463918, -0.0000567010309, + -0.0001824742268, -0.0002769072165, -0.0003082474227, -0.0002769072165, + -0.0001888659794, -0.0000692783505, +0.0000063917526, +0.0000628865979, + +0.0000692783505, +0.0000189690722, -0.0000503092784, -0.0001006185567, + -0.0001321649485, -0.0001195876289, -0.0000818556701, -0.0000189690722, + +0.0000189690722, +0.0000315463918, +0.0000000000000, -0.0000441237113, + -0.0001006185567, -0.0001509278351, -0.0001760824742, -0.0001635051546, + -0.0001447422680, -0.0001321649485, -0.0001257731959, -0.0001131958763, + -0.0000818556701, -0.0000377319588, +0.0000000000000, +0.0000251546392, + +0.0000441237113, +0.0000441237113, +0.0000441237113, +0.0000567010309, + +0.0000880412371, +0.0001006185567, +0.0000754639175, +0.0000063917526, + -0.0000754639175, -0.0001888659794, -0.0002769072165, -0.0003082474227, + -0.0002769072165, -0.0002076288660, -0.0001070103093, -0.0000189690722, + +0.0000063917526, +0.0000000000000, -0.0000315463918, -0.0000628865979, + -0.0000692783505, -0.0000880412371, -0.0001006185567, -0.0001006185567, + -0.0001070103093, -0.0001131958763, -0.0000880412371, -0.0000503092784, + -0.0000063917526, +0.0000377319588, +0.0000818556701, +0.0000880412371, + +0.0000503092784, -0.0000377319588, -0.0001447422680, -0.0002014432990, + -0.0002140206186, -0.0001888659794, -0.0001257731959, -0.0000315463918, + +0.0000315463918, +0.0000754639175, +0.0000944329897, +0.0000818556701, + +0.0000567010309, +0.0000189690722, +0.0000000000000, +0.0000000000000, + +0.0000000000000, -0.0000125773196, -0.0000251546392, -0.0000251546392, + -0.0000251546392, +0.0000000000000, +0.0000315463918, +0.0000944329897, + +0.0001573195876, +0.0002076288660, +0.0002202061856, +0.0001950515464, + +0.0001383505155, +0.0000692783505, -0.0000063917526, -0.0001006185567, + -0.0001573195876, -0.0001509278351, -0.0001070103093, -0.0000315463918, + +0.0000251546392, +0.0000818556701, +0.0001070103093, +0.0000944329897, + +0.0000818556701, +0.0000754639175, +0.0000628865979, +0.0000441237113, + +0.0000567010309, +0.0001070103093, +0.0001573195876, +0.0001698969072, + +0.0001383505155, +0.0001070103093, +0.0000818556701, +0.0000628865979, + +0.0000692783505, +0.0001131958763, +0.0001321649485, +0.0001257731959, + +0.0000880412371, +0.0000441237113, +0.0000125773196, +0.0000000000000, + -0.0000063917526, +0.0000189690722, +0.0000880412371, +0.0001383505155, + +0.0001573195876, +0.0001573195876, +0.0001447422680, +0.0001257731959, + +0.0000880412371, +0.0000628865979, +0.0000567010309, +0.0000567010309, + +0.0000315463918, +0.0000000000000, -0.0000125773196, -0.0000251546392, + -0.0000189690722, +0.0000000000000, +0.0000503092784, +0.0001447422680, + +0.0002076288660, +0.0002265979381, +0.0002076288660, +0.0001509278351, + +0.0000567010309, -0.0000377319588, -0.0001131958763, -0.0001195876289, + -0.0000503092784, +0.0000251546392, +0.0000880412371, +0.0001195876289, + +0.0001195876289, +0.0001070103093, +0.0000754639175, +0.0000125773196, + -0.0000063917526, +0.0000000000000, +0.0000251546392, +0.0000567010309, + +0.0000754639175, +0.0000880412371, +0.0001195876289, +0.0001257731959, + +0.0000944329897, +0.0000377319588, +0.0000000000000, -0.0000503092784, + -0.0000692783505, -0.0000377319588, +0.0000000000000, +0.0000063917526, + +0.0000125773196, +0.0000000000000, -0.0000251546392, -0.0000567010309, + -0.0000441237113, +0.0000063917526, +0.0001006185567, +0.0001888659794, + +0.0002517525773, +0.0002769072165, +0.0002769072165, +0.0002579381443, + +0.0002265979381, +0.0002014432990, +0.0002014432990, +0.0001824742268, + +0.0001195876289, +0.0000503092784, +0.0000000000000, -0.0000441237113, + -0.0000754639175, -0.0000944329897, -0.0000944329897, -0.0000628865979, + -0.0000315463918, -0.0000125773196, +0.0000000000000, +0.0000063917526, + +0.0000125773196, +0.0000251546392, +0.0000441237113, +0.0000944329897, + +0.0001509278351, +0.0001760824742, +0.0001888659794, +0.0001760824742 +}; diff --git a/plugins/ladspa_effect/swh/impulses/21-matchless-chieftain-sm57-off.h b/plugins/ladspa_effect/swh/impulses/21-matchless-chieftain-sm57-off.h new file mode 100644 index 000000000..e5558b9f3 --- /dev/null +++ b/plugins/ladspa_effect/swh/impulses/21-matchless-chieftain-sm57-off.h @@ -0,0 +1,937 @@ +float matchless_chieftain_sm57_off[] = { + +0.0001511926606, +0.0001566972477, +0.0001566972477, +0.0001566972477, + +0.0001623853211, +0.0001680733945, +0.0001680733945, +0.0001792660550, + +0.0001847706422, +0.0001904587156, +0.0001904587156, +0.0002016513761, + +0.0002071559633, +0.0002128440367, +0.0002128440367, +0.0002183486239, + +0.0002240366972, +0.0002240366972, +0.0002183486239, +0.0002240366972, + +0.0002183486239, +0.0002183486239, +0.0002128440367, +0.0002071559633, + +0.0002071559633, +0.0002071559633, +0.0002016513761, +0.0002016513761, + +0.0001959633028, +0.0002016513761, +0.0001904587156, +0.0001847706422, + +0.0001735779817, +0.0001680733945, +0.0001511926606, +0.0001343119266, + +0.0001119266055, +0.0001007339450, +0.0000840366972, +0.0000671559633, + +0.0000504587156, +0.0000447706422, +0.0000280733945, +0.0000168807339, + +0.0000000000000, -0.0000056880734, -0.0000223853211, -0.0000447706422, + -0.0000728440367, -0.0000895412844, -0.0001176146789, -0.0001400000000, + -0.0001623853211, -0.0001792660550, -0.0001959633028, -0.0002183486239, + -0.0002519266055, -0.0002800000000, -0.0003135779817, -0.0003359633028, + -0.0003640366972, -0.0003752293578, -0.0003919266055, -0.0003976146789, + -0.0004143119266, -0.0004255045872, -0.0004535779817, -0.0004759633028, + -0.0005040366972, -0.0005207339450, -0.0005431192661, -0.0005488073394, + -0.0005543119266, -0.0005600000000, -0.0005711926606, -0.0005711926606, + -0.0005823853211, -0.0005823853211, -0.0005935779817, -0.0005935779817, + -0.0005878899083, -0.0005766972477, -0.0005655045872, -0.0005431192661, + -0.0005264220183, -0.0004928440367, -0.0004759633028, -0.0004423853211, + -0.0004143119266, -0.0003752293578, -0.0003471559633, -0.0003135779817, + -0.0002855045872, -0.0002464220183, -0.0002183486239, -0.0001680733945, + -0.0001176146789, -0.0000504587156, +0.0000000000000, +0.0000671559633, + +0.0001400000000, +0.0002240366972, +0.0002911926606, +0.0003695412844, + +0.0004366972477, +0.0005152293578, +0.0005878899083, +0.0006776146789, + +0.0007559633028, +0.0008566972477, +0.0009462385321, +0.0010414678899, + +0.0011200000000, +0.0012207339450, +0.0013102752294, +0.0014166972477, + +0.0015119266055, +0.0016350458716, +0.0017469724771, +0.0018645871560, + +0.0019543119266, +0.0020605504587, +0.0021333944954, +0.0022229357798, + +0.0022845871560, +0.0023741284404, +0.0024526605505, +0.0025590825688, + +0.0026374311927, +0.0027438532110, +0.0028165137615, +0.0029117431193, + +0.0029622018349, +0.0030405504587, +0.0030741284404, +0.0031300917431, + +0.0031245871560, +0.0031581651376, +0.0031357798165, +0.0031693577982, + +0.0031245871560, +0.0031469724771, +0.0030853211009, +0.0031188990826, + +0.0030181651376, +0.0030462385321, +0.0028893577982, +0.0029117431193, + +0.0026877064220, +0.0027381651376, +0.0024022018349, +0.0025365137615, + +0.0020045871560, +0.0023910091743, +0.0015007339450, +0.0020381651376, + +0.0017302752294, +0.0006383486239, +0.0018143119266, +0.0010471559633, + +0.0006271559633, +0.0001343119266, +0.0002464220183, -0.0001007339450, + +0.0000335779817, -0.0005319266055, -0.0003695412844, -0.0010638532110, + -0.0009855045872, -0.0015231192661, -0.0017302752294, -0.0020831192661, + -0.0023741284404, -0.0027157798165, -0.0032422018349, -0.0031805504587, + -0.0028838532110, -0.0042948623853, -0.0065458715596, -0.0058963302752, + -0.0033486238532, -0.0035500917431, -0.0062546788991, -0.0036229357798, + +0.0045915596330, -0.0037796330275, -0.0148332110092, +0.0062939449541, + +0.0453620183486, +0.0444772477064, -0.0210823853211, -0.1025390825688, + -0.1561379816514, -0.1834581651376, -0.1786370642202, -0.1175234862385, + -0.0273089908257, +0.0380882568807, +0.0621383486239, +0.0517398165138, + +0.0079344954128, -0.0153651376147, -0.0025365137615, +0.0080409174312, + +0.0194640366972, +0.0423157798165, +0.0483130275229, +0.0478985321101, + +0.0450484403670, +0.0363803669725, +0.0385754128440, +0.0512247706422, + +0.0413807339450, +0.0109190825688, -0.0123022018349, -0.0354060550459, + -0.0486992660550, -0.0297335779817, -0.0066522935780, +0.0166587155963, + +0.0411455045872, +0.0406135779817, +0.0217933944954, +0.0147603669725, + +0.0076154128440, +0.0044460550459, +0.0064618348624, -0.0014110091743, + -0.0078337614679, -0.0050732110092, -0.0054708256881, -0.0038972477064, + +0.0035053211009, +0.0110255045872, +0.0144077064220, +0.0082704587156, + -0.0021278899083, -0.0137972477064, -0.0202759633028, -0.0287201834862, + -0.0369739449541, -0.0291344954128, -0.0102583486239, +0.0031300917431, + +0.0146541284404, +0.0231710091743, +0.0217262385321, +0.0112719266055, + -0.0047651376147, -0.0217095412844, -0.0217319266055, -0.0040484403670, + +0.0149508256881, +0.0281880733945, +0.0348124770642, +0.0330150458716, + +0.0294033027523, +0.0264858715596, +0.0249236697248, +0.0283056880734, + +0.0272137614679, +0.0197271559633, +0.0163282568807, +0.0146372477064, + +0.0056275229358, -0.0078001834862, -0.0206623853211, -0.0273034862385, + -0.0254163302752, -0.0177561467890, -0.0075201834862, -0.0004816513761, + +0.0034829357798, +0.0069434862385, +0.0131310091743, +0.0231038532110, + +0.0330093577982, +0.0376011009174, +0.0372818348624, +0.0350812844037, + +0.0268946788991, +0.0153203669725, +0.0105216513761, +0.0106840366972, + +0.0090376146789, +0.0049724770642, -0.0021390825688, -0.0073130275229, + -0.0081249541284, -0.0070611009174, -0.0028500917431, +0.0037741284404, + +0.0076770642202, +0.0027326605505, -0.0067194495413, -0.0106390825688, + -0.0062099082569, +0.0037908256881, +0.0157963302752, +0.0250860550459, + +0.0274434862385, +0.0209143119266, +0.0104935779817, +0.0026822018349, + +0.0008455045872, +0.0024022018349, +0.0045691743119, +0.0081025688073, + +0.0110647706422, +0.0081025688073, -0.0010807339450, -0.0102247706422, + -0.0139877064220, -0.0103928440367, -0.0014614678899, +0.0057508256881, + +0.0056051376147, +0.0013159633028, -0.0022117431193, -0.0035836697248, + -0.0042165137615, -0.0023069724771, +0.0010919266055, +0.0036733944954, + +0.0046924770642, +0.0043565137615, +0.0043172477064, +0.0030517431193, + +0.0019543119266, +0.0032588990826, +0.0056499082569, +0.0081473394495, + +0.0092111926606, +0.0074809174312, +0.0040484403670, -0.0010695412844, + -0.0050284403670, -0.0063387155963, -0.0086737614679, -0.0156115596330, + -0.0231093577982, -0.0256515596330, -0.0242067889908, -0.0206400000000, + -0.0132486238532, -0.0043229357798, +0.0022733944954, +0.0057170642202, + +0.0077442201835, +0.0064842201835, +0.0000000000000, -0.0069546788991, + -0.0097321100917, -0.0090711926606, -0.0064563302752, -0.0045300917431, + -0.0037012844037, -0.0018422018349, -0.0013719266055, -0.0040429357798, + -0.0066746788991, -0.0081080733945, -0.0087297247706, -0.0079568807339, + -0.0082313761468, -0.0101183486239, -0.0127669724771, -0.0147996330275, + -0.0142341284404, -0.0116807339450, -0.0080521100917, -0.0045803669725, + -0.0023014678899, -0.0022622018349, -0.0033541284404, -0.0044629357798, + -0.0058739449541, -0.0064058715596, -0.0053979816514, -0.0051179816514, + -0.0066522935780, -0.0100400000000, -0.0153372477064, -0.0197271559633, + -0.0206176146789, -0.0191673394495, -0.0171849541284, -0.0126269724771, + -0.0075034862385, -0.0052972477064, -0.0057955963303, -0.0068651376147, + -0.0068539449541, -0.0048267889908, -0.0024581651376, -0.0015510091743, + -0.0019766972477, -0.0029845871560, -0.0040988990826, -0.0050899082569, + -0.0054372477064, -0.0047260550459, -0.0032086238532, -0.0015902752294, + -0.0006159633028, -0.0011983486239, -0.0027438532110, -0.0054203669725, + -0.0088192660550, -0.0107231192661, -0.0102135779817, -0.0074642201835, + -0.0048267889908, -0.0028500917431, -0.0011535779817, -0.0005990825688, + -0.0001400000000, +0.0017190825688, +0.0025981651376, +0.0030012844037, + +0.0039812844037, +0.0029845871560, -0.0003247706422, -0.0033653211009, + -0.0052915596330, -0.0050675229358, -0.0016686238532, +0.0033598165138, + +0.0067754128440, +0.0059579816514, +0.0009071559633, -0.0062379816514, + -0.0126717431193, -0.0168154128440, -0.0179689908257, -0.0153875229358, + -0.0094464220183, -0.0030012844037, +0.0021950458716, +0.0054875229358, + +0.0063106422018, +0.0038245871560, +0.0002576146789, -0.0025590825688, + -0.0042779816514, -0.0040708256881, -0.0024693577982, -0.0015902752294, + -0.0025198165138, -0.0032365137615, -0.0027438532110, -0.0019766972477, + -0.0027269724771, -0.0046027522936, -0.0061091743119, -0.0061818348624, + -0.0060979816514, -0.0063554128440, -0.0066466055046, -0.0063946788991, + -0.0053196330275, -0.0047203669725, -0.0052579816514, -0.0050115596330, + -0.0027662385321, -0.0000728440367, +0.0020045871560, +0.0039420183486, + +0.0058682568807, +0.0071673394495, +0.0073522935780, +0.0067977981651, + +0.0070049541284, +0.0076937614679, +0.0067642201835, +0.0047091743119, + +0.0037405504587, +0.0030069724771, +0.0013607339450, -0.0001735779817, + -0.0007447706422, +0.0000111926606, +0.0021669724771, +0.0046308256881, + +0.0067082568807, +0.0085337614679, +0.0101183486239, +0.0103816513761, + +0.0087576146789, +0.0058851376147, +0.0026765137615, +0.0004590825688, + +0.0001792660550, +0.0017245871560, +0.0046588990826, +0.0072625688073, + +0.0080185321101, +0.0072122935780, +0.0051796330275, +0.0026374311927, + +0.0004088073394, -0.0012710091743, -0.0020719266055, -0.0020493577982, + -0.0010919266055, +0.0007055045872, +0.0019374311927, +0.0015455045872, + +0.0007055045872, +0.0002743119266, -0.0005878899083, -0.0019990825688, + -0.0025141284404, -0.0014055045872, +0.0014333944954, +0.0052467889908, + +0.0086344954128, +0.0106000000000, +0.0114678899083, +0.0109862385321, + +0.0086737614679, +0.0056108256881, +0.0038805504587, +0.0036060550459, + +0.0044179816514, +0.0054875229358, +0.0052691743119, +0.0040765137615, + +0.0029733944954, +0.0023910091743, +0.0027717431193, +0.0043677064220, + +0.0060755963303, +0.0067642201835, +0.0061315596330, +0.0049667889908, + +0.0035612844037, +0.0025141284404, +0.0024974311927, +0.0036229357798, + +0.0050675229358, +0.0058515596330, +0.0055827522936, +0.0049891743119, + +0.0047091743119, +0.0047539449541, +0.0048603669725, +0.0049836697248, + +0.0054427522936, +0.0061763302752, +0.0069546788991, +0.0075873394495, + +0.0075818348624, +0.0067139449541, +0.0052579816514, +0.0034772477064, + +0.0016910091743, +0.0000504587156, -0.0013495412844, -0.0019655045872, + -0.0014447706422, -0.0001680733945, +0.0005488073394, +0.0006047706422, + +0.0010638532110, +0.0017245871560, +0.0019150458716, +0.0024302752294, + +0.0038412844037, +0.0055546788991, +0.0065346788991, +0.0062267889908, + +0.0052860550459, +0.0042108256881, +0.0032645871560, +0.0025814678899, + +0.0024526605505, +0.0027550458716, +0.0027605504587, +0.0019543119266, + +0.0009071559633, +0.0004590825688, +0.0001847706422, -0.0004647706422, + -0.0008400000000, +0.0001119266055, +0.0018814678899, +0.0033877064220, + +0.0039588990826, +0.0039141284404, +0.0034717431193, +0.0024693577982, + +0.0014390825688, +0.0010750458716, +0.0010638532110, +0.0009462385321, + +0.0008288073394, +0.0008231192661, +0.0011423853211, +0.0013886238532, + +0.0009350458716, +0.0000616513761, -0.0003192660550, -0.0006214678899, + -0.0012150458716, -0.0017807339450, -0.0020045871560, -0.0019150458716, + -0.0016014678899, -0.0011590825688, -0.0004423853211, +0.0008511926606, + +0.0016183486239, +0.0012655045872, +0.0004200000000, -0.0004590825688, + -0.0011535779817, -0.0013719266055, -0.0009743119266, +0.0001400000000, + +0.0012935779817, +0.0015510091743, +0.0012823853211, +0.0008455045872, + +0.0002016513761, -0.0003695412844, -0.0004143119266, -0.0001455045872, + -0.0003752293578, -0.0012710091743, -0.0022343119266, -0.0029229357798, + -0.0033598165138, -0.0037741284404, -0.0042667889908, -0.0040036697248, + -0.0033765137615, -0.0031412844037, -0.0029005504587, -0.0020943119266, + -0.0007671559633, +0.0003304587156, +0.0006552293578, +0.0006776146789, + +0.0009855045872, +0.0012150458716, +0.0010638532110, +0.0008511926606, + +0.0004871559633, -0.0004702752294, -0.0015790825688, -0.0021390825688, + -0.0021166972477, -0.0018366972477, -0.0012431192661, -0.0004535779817, + +0.0001400000000, +0.0004647706422, +0.0001511926606, -0.0004928440367, + -0.0009911926606, -0.0013102752294, -0.0013607339450, -0.0011926605505, + -0.0012710091743, -0.0014726605505, -0.0014222018349, -0.0013271559633, + -0.0013998165138, -0.0012319266055, -0.0009519266055, -0.0009688073394, + -0.0012095412844, -0.0015007339450, -0.0015902752294, -0.0017695412844, + -0.0020550458716, -0.0022062385321, -0.0020998165138, -0.0017190825688, + -0.0013383486239, -0.0009966972477, -0.0007335779817, -0.0009631192661, + -0.0016071559633, -0.0022005504587, -0.0023629357798, -0.0020102752294, + -0.0013886238532, -0.0004200000000, +0.0006159633028, +0.0013886238532, + +0.0017022018349, +0.0012262385321, +0.0000000000000, -0.0012095412844, + -0.0020381651376, -0.0024302752294, -0.0025253211009, -0.0025814678899, + -0.0028277064220, -0.0034100917431, -0.0040317431193, -0.0044067889908, + -0.0043508256881, -0.0037405504587, -0.0028726605505, -0.0021726605505, + -0.0018814678899, -0.0022902752294, -0.0029341284404, -0.0030069724771, + -0.0025198165138, -0.0016631192661, -0.0005095412844, +0.0005040366972, + +0.0011031192661, +0.0011647706422, +0.0006888073394, -0.0000671559633, + -0.0008511926606, -0.0014278899083, -0.0017974311927, -0.0020214678899, + -0.0021222018349, -0.0022845871560, -0.0024693577982, -0.0025422018349, + -0.0024974311927, -0.0024414678899, -0.0023181651376, -0.0019150458716, + -0.0010247706422, -0.0000783486239, +0.0007559633028, +0.0014222018349, + +0.0018143119266, +0.0020943119266, +0.0020998165138, +0.0014838532110, + +0.0005264220183, -0.0001735779817, -0.0005488073394, -0.0009126605505, + -0.0012823853211, -0.0014055045872, -0.0015790825688, -0.0018086238532, + -0.0017919266055, -0.0016238532110, -0.0015343119266, -0.0017357798165, + -0.0020886238532, -0.0023069724771, -0.0023966972477, -0.0024750458716, + -0.0024078899083, -0.0018086238532, -0.0005095412844, +0.0007390825688, + +0.0012990825688, +0.0013271559633, +0.0011871559633, +0.0007278899083, + +0.0000447706422, -0.0004590825688, -0.0006495412844, -0.0007447706422, + -0.0010862385321, -0.0016350458716, -0.0021445871560, -0.0025310091743, + -0.0024581651376, -0.0017245871560, -0.0004535779817, +0.0006831192661, + +0.0010359633028, +0.0007111926606, +0.0001511926606, -0.0005600000000, + -0.0012374311927, -0.0014278899083, -0.0011143119266, -0.0005935779817, + -0.0001847706422, -0.0000111926606, +0.0002855045872, +0.0008231192661, + +0.0013886238532, +0.0018422018349, +0.0021838532110, +0.0021893577982, + +0.0020045871560, +0.0016126605505, +0.0012262385321, +0.0010414678899, + +0.0008064220183, +0.0004200000000, +0.0003640366972, +0.0006047706422, + +0.0008176146789, +0.0008064220183, +0.0005207339450, +0.0005431192661, + +0.0011759633028, +0.0016574311927, +0.0013943119266, +0.0008566972477, + +0.0004535779817, +0.0001176146789, -0.0000056880734, +0.0001680733945, + +0.0004759633028, +0.0009576146789, +0.0013550458716, +0.0011031192661, + +0.0007111926606, +0.0004983486239, +0.0002464220183, +0.0001400000000, + +0.0004255045872, +0.0007055045872, +0.0008959633028, +0.0007055045872, + +0.0002688073394, -0.0000895412844, -0.0008847706422, -0.0017583486239, + -0.0014447706422, -0.0006943119266, -0.0002743119266, +0.0002800000000, + +0.0005376146789, +0.0004816513761, +0.0004871559633, +0.0002576146789, + +0.0001064220183, +0.0003135779817, +0.0004423853211, +0.0006102752294, + +0.0009407339450, +0.0014166972477, +0.0020269724771, +0.0022622018349, + +0.0022455045872, +0.0022229357798, +0.0019038532110, +0.0012878899083, + +0.0004816513761, -0.0002407339450, -0.0006383486239, -0.0010359633028, + -0.0012598165138, -0.0008623853211, -0.0000280733945, +0.0008847706422, + +0.0015286238532, +0.0016407339450, +0.0017583486239, +0.0020102752294, + +0.0022229357798, +0.0024581651376, +0.0025814678899, +0.0025926605505, + +0.0024862385321, +0.0021502752294, +0.0017862385321, +0.0016126605505, + +0.0013998165138, +0.0012543119266, +0.0012543119266, +0.0011423853211, + +0.0008847706422, +0.0004590825688, +0.0000000000000, -0.0001959633028, + -0.0000840366972, +0.0000335779817, +0.0003471559633, +0.0009014678899, + +0.0015174311927, +0.0019543119266, +0.0020774311927, +0.0019766972477, + +0.0017638532110, +0.0013047706422, +0.0007950458716, +0.0004143119266, + -0.0000111926606, -0.0004200000000, -0.0004816513761, -0.0003528440367, + -0.0002966972477, -0.0004759633028, -0.0008455045872, -0.0010695412844, + -0.0009350458716, -0.0005095412844, +0.0000280733945, +0.0005823853211, + +0.0011311926606, +0.0014838532110, +0.0014447706422, +0.0011647706422, + +0.0007111926606, +0.0003416513761, +0.0002016513761, +0.0001735779817, + +0.0003640366972, +0.0008064220183, +0.0011086238532, +0.0012935779817, + +0.0013495412844, +0.0010974311927, +0.0007111926606, +0.0004871559633, + +0.0003135779817, +0.0002911926606, +0.0003416513761, +0.0002352293578, + +0.0000783486239, +0.0001288073394, +0.0004478899083, +0.0008678899083, + +0.0011926605505, +0.0015007339450, +0.0014333944954, +0.0008902752294, + +0.0000559633028, -0.0008064220183, -0.0014838532110, -0.0016407339450, + -0.0014559633028, -0.0009462385321, -0.0002295412844, +0.0005040366972, + +0.0011143119266, +0.0014110091743, +0.0012935779817, +0.0010414678899, + +0.0006664220183, +0.0002911926606, +0.0000335779817, -0.0000280733945, + +0.0001511926606, +0.0005431192661, +0.0008400000000, +0.0009743119266, + +0.0009462385321, +0.0007223853211, +0.0000504587156, -0.0007783486239, + -0.0014166972477, -0.0017695412844, -0.0017414678899, -0.0013271559633, + -0.0009576146789, -0.0007335779817, -0.0006552293578, -0.0007223853211, + -0.0007614678899, -0.0005095412844, -0.0000616513761, +0.0004759633028, + +0.0009014678899, +0.0010078899083, +0.0009631192661, +0.0008231192661, + +0.0004759633028, +0.0000616513761, -0.0001288073394, -0.0001007339450, + -0.0001288073394, -0.0003640366972, -0.0008959633028, -0.0013495412844, + -0.0015343119266, -0.0013719266055, -0.0009743119266, -0.0004816513761, + -0.0001007339450, +0.0000447706422, -0.0001904587156, -0.0005600000000, + -0.0006495412844, -0.0003078899083, +0.0001735779817, +0.0007502752294, + +0.0012095412844, +0.0013159633028, +0.0009183486239, +0.0003078899083, + -0.0000504587156, -0.0000168807339, -0.0000447706422, -0.0002911926606, + -0.0004535779817, -0.0004928440367, -0.0006214678899, -0.0007390825688, + -0.0007838532110, -0.0006664220183, -0.0004702752294, -0.0002352293578, + +0.0000111926606, +0.0002016513761, +0.0000895412844, -0.0001792660550, + -0.0005655045872, -0.0008847706422, -0.0009462385321, -0.0008623853211, + -0.0008007339450, -0.0005823853211, -0.0004143119266, -0.0003247706422, + -0.0002407339450, -0.0001231192661, +0.0000840366972, +0.0003078899083, + +0.0003192660550, +0.0002183486239, +0.0000447706422, -0.0001904587156, + -0.0004702752294, -0.0006943119266, -0.0009183486239, -0.0011255045872, + -0.0013774311927, -0.0017190825688, -0.0019766972477, -0.0019990825688, + -0.0017078899083, -0.0010807339450, -0.0003528440367, +0.0002295412844, + +0.0005264220183, +0.0004366972477, +0.0000783486239, -0.0003192660550, + -0.0006495412844, -0.0007950458716, -0.0007447706422, -0.0005431192661, + -0.0003528440367, -0.0003752293578, -0.0005319266055, -0.0007726605505, + -0.0012486238532, -0.0017245871560, -0.0018086238532, -0.0015231192661, + -0.0010919266055, -0.0006383486239, -0.0002855045872, -0.0000447706422, + +0.0000840366972, +0.0000168807339, -0.0001176146789, -0.0001623853211, + -0.0001566972477, -0.0001735779817, -0.0001343119266, -0.0002016513761, + -0.0003023853211, -0.0004535779817, -0.0006719266055, -0.0007559633028, + -0.0006495412844, -0.0004366972477, -0.0001959633028, -0.0001007339450, + -0.0001064220183, -0.0001959633028, -0.0004647706422, -0.0009350458716, + -0.0013662385321, -0.0016462385321, -0.0017750458716, -0.0017078899083, + -0.0013326605505, -0.0007895412844, -0.0002295412844, +0.0001176146789, + +0.0003192660550, +0.0002352293578, +0.0000056880734, -0.0002128440367, + -0.0003359633028, -0.0004311926606, -0.0004928440367, -0.0006607339450, + -0.0009295412844, -0.0011423853211, -0.0011423853211, -0.0012486238532, + -0.0015286238532, -0.0018757798165, -0.0020214678899, -0.0020550458716, + -0.0019262385321, -0.0015959633028, -0.0010078899083, -0.0003023853211, + +0.0005152293578, +0.0012431192661, +0.0015845871560, +0.0014390825688, + +0.0009238532110, +0.0001623853211, -0.0004478899083, -0.0007950458716, + -0.0008455045872, -0.0008064220183, -0.0008176146789, -0.0009183486239, + -0.0012319266055, -0.0015959633028, -0.0015622018349, -0.0014166972477, + -0.0012710091743, -0.0010695412844, -0.0009126605505, -0.0009631192661, + -0.0008902752294, -0.0004928440367, +0.0001959633028, +0.0006495412844, + +0.0007726605505, +0.0006102752294, +0.0004143119266, +0.0001288073394, + -0.0000335779817, -0.0000952293578, +0.0000000000000, +0.0002911926606, + +0.0006776146789, +0.0006552293578, +0.0001400000000, -0.0007614678899, + -0.0016910091743, -0.0022678899083, -0.0024750458716, -0.0024805504587, + -0.0022678899083, -0.0020269724771, -0.0016574311927, -0.0011143119266, + -0.0005207339450, +0.0002576146789, +0.0013326605505, +0.0021950458716, + +0.0025310091743, +0.0020662385321, +0.0007447706422, -0.0009238532110, + -0.0022957798165, -0.0029286238532, -0.0026262385321, -0.0015231192661, + +0.0000783486239, +0.0016407339450, +0.0024750458716, +0.0022622018349, + +0.0013326605505, +0.0002352293578, -0.0005376146789, -0.0010247706422, + -0.0012823853211, -0.0012766972477, -0.0011366972477, -0.0009743119266, + -0.0006888073394, -0.0002464220183, +0.0001847706422, +0.0006719266055, + +0.0011031192661, +0.0013214678899, +0.0012766972477, +0.0010471559633, + +0.0007614678899, +0.0005152293578, +0.0003078899083, +0.0002352293578, + +0.0002855045872, +0.0004031192661, +0.0006271559633, +0.0008511926606, + +0.0008288073394, +0.0005040366972, +0.0000056880734, -0.0005040366972, + -0.0009295412844, -0.0010526605505, -0.0008735779817, -0.0004759633028, + +0.0000111926606, +0.0005655045872, +0.0008847706422, +0.0008902752294, + +0.0006383486239, +0.0002071559633, -0.0001176146789, -0.0001735779817, + -0.0001511926606, -0.0000168807339, +0.0002855045872, +0.0005431192661, + +0.0005431192661, +0.0002855045872, -0.0001792660550, -0.0005655045872, + -0.0009519266055, -0.0013438532110, -0.0014559633028, -0.0010919266055, + -0.0005823853211, -0.0000671559633, +0.0004088073394, +0.0009014678899, + +0.0013214678899, +0.0017638532110, +0.0019319266055, +0.0017862385321, + +0.0014278899083, +0.0009350458716, +0.0001904587156, -0.0005543119266, + -0.0010359633028, -0.0009462385321, -0.0005990825688, -0.0001959633028, + +0.0001119266055, +0.0004200000000, +0.0006552293578, +0.0009350458716, + +0.0011871559633, +0.0014895412844, +0.0016295412844, +0.0013550458716, + +0.0006495412844, -0.0000728440367, -0.0006214678899, -0.0007390825688, + -0.0003919266055, +0.0002911926606, +0.0010302752294, +0.0017078899083, + +0.0020045871560, +0.0018702752294, +0.0014950458716, +0.0010919266055, + +0.0005264220183, -0.0000895412844, -0.0007502752294, -0.0012431192661, + -0.0012655045872, -0.0007559633028, +0.0000000000000, +0.0009743119266, + +0.0018702752294, +0.0024526605505, +0.0026093577982, +0.0021950458716, + +0.0012655045872, +0.0002966972477, -0.0005152293578, -0.0009855045872, + -0.0009462385321, -0.0005711926606, -0.0000783486239, +0.0004366972477, + +0.0007950458716, +0.0011311926606, +0.0015845871560, +0.0019319266055, + +0.0019262385321, +0.0015902752294, +0.0009462385321, +0.0001400000000, + -0.0006495412844, -0.0010862385321, -0.0009014678899, -0.0002407339450, + +0.0004702752294, +0.0010190825688, +0.0012543119266, +0.0011926605505, + +0.0008735779817, +0.0004143119266, +0.0000000000000, -0.0003023853211, + -0.0004200000000, -0.0001623853211, +0.0002576146789, +0.0005600000000, + +0.0006607339450, +0.0004983486239, +0.0001735779817, +0.0000504587156, + +0.0002128440367, +0.0004702752294, +0.0007166972477, +0.0008735779817, + +0.0009183486239, +0.0007559633028, +0.0003864220183, +0.0000447706422, + -0.0001735779817, -0.0004983486239, -0.0006664220183, -0.0005823853211, + -0.0002128440367, +0.0002911926606, +0.0008343119266, +0.0013438532110, + +0.0017357798165, +0.0016966972477, +0.0012710091743, +0.0005543119266, + -0.0001847706422, -0.0007950458716, -0.0010695412844, -0.0010583486239, + -0.0007335779817, -0.0002240366972, +0.0002295412844, +0.0004647706422, + +0.0006214678899, +0.0006943119266, +0.0006607339450, +0.0004983486239, + +0.0003471559633, +0.0001288073394, -0.0001007339450, -0.0003023853211, + -0.0002519266055, -0.0001343119266, -0.0000280733945, +0.0000447706422, + +0.0001959633028, +0.0003359633028, +0.0004590825688, +0.0002855045872, + +0.0000000000000, -0.0001792660550, -0.0002576146789, -0.0002800000000, + -0.0002407339450, -0.0002183486239, -0.0001007339450, +0.0000280733945, + +0.0002016513761, +0.0002743119266, +0.0002295412844, +0.0001623853211, + +0.0001288073394, +0.0000447706422, -0.0000335779817, -0.0001847706422, + -0.0003359633028, -0.0002576146789, +0.0000000000000, +0.0001735779817, + +0.0002240366972, +0.0001792660550, +0.0000559633028, -0.0001511926606, + -0.0004088073394, -0.0005543119266, -0.0003976146789, -0.0000952293578, + +0.0001400000000, +0.0001511926606, +0.0000671559633, -0.0000056880734, + -0.0001119266055, -0.0002352293578, -0.0002688073394, -0.0002464220183, + -0.0001792660550, -0.0000559633028, +0.0000280733945, +0.0000728440367, + +0.0002183486239, +0.0004928440367, +0.0006159633028, +0.0005823853211, + +0.0005990825688, +0.0006102752294, +0.0004143119266, +0.0002407339450, + +0.0002016513761, +0.0002071559633, +0.0002631192661, +0.0004088073394, + +0.0004478899083, +0.0002352293578, -0.0001231192661, -0.0004590825688, + -0.0007447706422, -0.0007335779817, -0.0002911926606, +0.0002240366972, + +0.0004816513761, +0.0005823853211, +0.0004423853211, -0.0000335779817, + -0.0005543119266, -0.0007111926606, -0.0006102752294, -0.0003583486239, + -0.0000335779817, +0.0001455045872, +0.0000783486239, -0.0000280733945, + -0.0002407339450, -0.0003807339450, -0.0002295412844, +0.0002855045872, + +0.0008623853211, +0.0012598165138, +0.0013383486239, +0.0011478899083, + +0.0007390825688, +0.0002016513761, -0.0002128440367, -0.0000952293578, + +0.0002743119266, +0.0006383486239, +0.0010526605505, +0.0012766972477, + +0.0010414678899, +0.0006552293578, +0.0003023853211, -0.0000392660550, + -0.0002743119266, -0.0001735779817, +0.0001176146789, +0.0003247706422, + +0.0004647706422, +0.0007223853211, +0.0007278899083, +0.0005040366972, + +0.0002240366972, +0.0001455045872, +0.0001959633028, +0.0001455045872, + +0.0002071559633, +0.0002855045872, -0.0001735779817, -0.0007223853211, + -0.0008176146789, -0.0007671559633, -0.0006888073394, -0.0004590825688, + -0.0003416513761, -0.0003976146789, -0.0003976146789, -0.0004590825688, + -0.0008007339450, -0.0012543119266, -0.0014166972477, -0.0013438532110, + -0.0013159633028, -0.0009911926606, -0.0002128440367, +0.0005040366972, + +0.0010359633028, +0.0013998165138, +0.0012655045872, +0.0006047706422, + -0.0001623853211, -0.0008064220183, -0.0011702752294, -0.0012598165138, + -0.0008847706422, -0.0000056880734, +0.0007166972477, +0.0008902752294, + +0.0006831192661, +0.0002407339450, -0.0001566972477, -0.0006159633028, + -0.0009966972477, -0.0011086238532, -0.0009966972477, -0.0008566972477, + -0.0004311926606, +0.0000000000000, +0.0002966972477, +0.0006102752294, + +0.0007000000000, +0.0004702752294, +0.0003528440367, +0.0002911926606, + +0.0001792660550, -0.0001064220183, -0.0007671559633, -0.0013998165138, + -0.0016798165138, -0.0016519266055, -0.0011926605505, -0.0003807339450, + +0.0003304587156, +0.0007111926606, +0.0007278899083, +0.0003359633028, + -0.0002519266055, -0.0008959633028, -0.0012710091743, -0.0011702752294, + -0.0006888073394, -0.0002688073394, +0.0000447706422, +0.0002407339450, + +0.0002407339450, +0.0000447706422, -0.0000504587156, +0.0000280733945, + +0.0002631192661, +0.0004088073394, +0.0005990825688, +0.0007055045872, + +0.0005935779817, +0.0004088073394, +0.0002183486239, +0.0000000000000, + -0.0003640366972, -0.0007726605505, -0.0009295412844, -0.0008176146789, + -0.0006271559633, -0.0004816513761, -0.0003416513761, -0.0002352293578, + -0.0001847706422, -0.0002183486239, -0.0001680733945, -0.0000111926606, + +0.0000895412844, +0.0000952293578, +0.0000559633028, -0.0000447706422, + -0.0001400000000, -0.0000223853211, +0.0003023853211, +0.0006719266055, + +0.0009911926606, +0.0013102752294, +0.0015062385321, +0.0015062385321, + +0.0013047706422, +0.0009911926606, +0.0008678899083, +0.0008119266055, + +0.0004647706422, +0.0001119266055, -0.0001288073394, -0.0003864220183, + -0.0005543119266, -0.0004647706422, -0.0000840366972, +0.0004478899083, + +0.0008623853211, +0.0010414678899, +0.0008176146789, +0.0003192660550, + -0.0000840366972, -0.0001735779817, +0.0000000000000, +0.0003192660550, + +0.0005990825688, +0.0008176146789, +0.0009743119266, +0.0010247706422, + +0.0009519266055, +0.0007783486239, +0.0004200000000, -0.0000728440367, + -0.0005711926606, -0.0009183486239, -0.0011535779817, -0.0012319266055, + -0.0011478899083, -0.0008343119266, -0.0003807339450, +0.0000335779817, + +0.0003583486239, +0.0006943119266, +0.0007447706422, +0.0004759633028, + +0.0000671559633, -0.0002519266055, -0.0005319266055, -0.0006831192661, + -0.0006495412844, -0.0003752293578, -0.0000335779817, +0.0003304587156, + +0.0005878899083, +0.0006271559633, +0.0005040366972, +0.0003192660550, + +0.0000504587156, -0.0001288073394, -0.0002631192661, -0.0003864220183, + -0.0004590825688, -0.0004478899083, -0.0003471559633, -0.0001680733945, + +0.0000000000000, +0.0001623853211, +0.0002464220183, +0.0001792660550, + +0.0001288073394, +0.0001680733945, +0.0002688073394, +0.0004816513761, + +0.0007166972477, +0.0007000000000, +0.0006159633028, +0.0007111926606, + +0.0007783486239, +0.0007838532110, +0.0008511926606, +0.0006607339450, + +0.0001007339450, -0.0004366972477, -0.0008007339450, -0.0009743119266, + -0.0009071559633, -0.0005711926606, -0.0000671559633, +0.0002800000000, + +0.0004816513761, +0.0006440366972, +0.0007166972477, +0.0005878899083, + +0.0003304587156, +0.0000168807339, -0.0001623853211, -0.0003528440367, + -0.0005319266055, -0.0005655045872, -0.0004478899083, -0.0003304587156, + -0.0001455045872, -0.0000335779817, -0.0000223853211, -0.0001064220183, + -0.0002295412844, -0.0003359633028, -0.0003192660550, -0.0002183486239, + -0.0000559633028, -0.0000840366972, -0.0003471559633, -0.0006326605505, + -0.0006440366972, -0.0003807339450, -0.0000280733945, +0.0001511926606, + +0.0001680733945, +0.0000728440367, +0.0000000000000, -0.0000223853211, + +0.0000895412844, +0.0003583486239, +0.0006719266055, +0.0007223853211, + +0.0004983486239, +0.0001735779817, -0.0001119266055, -0.0003807339450, + -0.0003416513761, +0.0000783486239, +0.0005990825688, +0.0008511926606, + +0.0008176146789, +0.0005935779817, +0.0004088073394, +0.0003304587156, + +0.0003192660550, +0.0003695412844, +0.0004200000000, +0.0002183486239, + -0.0002071559633, -0.0006383486239, -0.0009576146789, -0.0011366972477, + -0.0010359633028, -0.0006776146789, -0.0002183486239, +0.0002688073394, + +0.0007000000000, +0.0009183486239, +0.0009238532110, +0.0008511926606, + +0.0007726605505, +0.0006440366972, +0.0003192660550, -0.0000728440367, + -0.0003359633028, -0.0003695412844, -0.0003023853211, -0.0001680733945, + +0.0000559633028, +0.0004311926606, +0.0006831192661, +0.0006719266055, + +0.0005040366972, +0.0003416513761, +0.0002183486239, +0.0001566972477, + +0.0000616513761, +0.0000000000000, -0.0000952293578, -0.0002464220183, + -0.0003135779817, -0.0001007339450, +0.0001847706422, +0.0005319266055, + +0.0008735779817, +0.0011255045872, +0.0011255045872, +0.0008623853211, + +0.0003247706422, -0.0002240366972, -0.0007726605505, -0.0011031192661, + -0.0010919266055, -0.0007838532110, -0.0003135779817, +0.0001288073394, + +0.0003583486239, +0.0004816513761, +0.0004031192661, +0.0001343119266, + -0.0001119266055, -0.0001680733945, -0.0001511926606, -0.0000783486239, + -0.0001119266055, -0.0002464220183, -0.0003135779817, -0.0002576146789, + -0.0002071559633, -0.0000504587156, +0.0001792660550, +0.0005095412844, + +0.0007335779817, +0.0006664220183, +0.0003192660550, -0.0001007339450, + -0.0004983486239, -0.0007950458716, -0.0009183486239, -0.0008566972477, + -0.0008231192661, -0.0008678899083, -0.0008455045872, -0.0007111926606, + -0.0005264220183, -0.0002071559633, +0.0001064220183, +0.0002352293578, + +0.0001847706422, +0.0000559633028, -0.0001904587156, -0.0005264220183, + -0.0007000000000, -0.0005207339450, -0.0001680733945, +0.0000111926606, + +0.0000168807339, -0.0000392660550, -0.0000671559633, -0.0000952293578, + -0.0000895412844, +0.0000280733945, +0.0002519266055, +0.0002855045872, + +0.0000559633028, -0.0003192660550, -0.0006440366972, -0.0007335779817, + -0.0006383486239, -0.0004983486239, -0.0002407339450, +0.0000392660550, + +0.0001400000000, +0.0000111926606, -0.0001119266055, -0.0002128440367, + -0.0001904587156, -0.0001680733945, -0.0001680733945, -0.0001959633028, + -0.0002576146789, -0.0004366972477, -0.0005655045872, -0.0005878899083, + -0.0004702752294, -0.0002800000000, -0.0001176146789, -0.0000952293578, + -0.0001119266055, -0.0002631192661, -0.0005152293578, -0.0008231192661, + -0.0010807339450, -0.0012543119266, -0.0013102752294, -0.0010807339450, + -0.0004759633028, +0.0001847706422, +0.0007783486239, +0.0010695412844, + +0.0010414678899, +0.0007559633028, +0.0002464220183, -0.0002352293578, + -0.0004366972477, -0.0003583486239, -0.0000952293578, +0.0000952293578, + +0.0001455045872, +0.0001288073394, +0.0000000000000, -0.0002800000000, + -0.0004255045872, -0.0003135779817, -0.0002128440367, -0.0002911926606, + -0.0005488073394, -0.0008119266055, -0.0007895412844, -0.0005264220183, + -0.0002631192661, +0.0000000000000, +0.0003135779817, +0.0005207339450, + +0.0004702752294, +0.0002743119266, +0.0000504587156, -0.0001566972477, + -0.0002519266055, -0.0001231192661, +0.0000335779817, +0.0000728440367, + -0.0000223853211, -0.0002519266055, -0.0004535779817, -0.0004647706422, + -0.0003807339450, -0.0001064220183, +0.0003359633028, +0.0007223853211, + +0.0008343119266, +0.0007166972477, +0.0004816513761, +0.0002743119266, + +0.0001400000000, +0.0000783486239, +0.0000728440367, +0.0001735779817, + +0.0002743119266, +0.0002576146789, +0.0001288073394, +0.0000000000000, + -0.0000616513761, -0.0000504587156, +0.0000335779817, +0.0002071559633, + +0.0003416513761, +0.0003919266055, +0.0002631192661, +0.0000111926606, + -0.0001735779817, -0.0003135779817, -0.0003752293578, -0.0002352293578, + -0.0000223853211, +0.0001119266055, +0.0001959633028, +0.0001566972477, + +0.0000223853211, -0.0000392660550, +0.0000000000000, +0.0001288073394, + +0.0003078899083, +0.0004647706422, +0.0005543119266, +0.0004590825688, + +0.0002352293578, +0.0000559633028, +0.0000000000000, -0.0000056880734, + -0.0000559633028, -0.0001176146789, -0.0001566972477, -0.0002855045872, + -0.0003976146789, -0.0003416513761, -0.0001511926606, +0.0000280733945, + +0.0002016513761, +0.0003247706422, +0.0004366972477, +0.0004759633028, + +0.0003919266055, +0.0002128440367, +0.0000783486239, +0.0000504587156, + +0.0001176146789, +0.0001959633028, +0.0002688073394, +0.0002800000000, + +0.0002631192661, +0.0001792660550, -0.0000280733945, -0.0003078899083, + -0.0004478899083, -0.0004816513761, -0.0004200000000, -0.0002352293578, + -0.0000168807339, +0.0001343119266, +0.0002576146789, +0.0003416513761, + +0.0003192660550, +0.0002128440367, +0.0000559633028, -0.0001455045872, + -0.0003023853211, -0.0003023853211, -0.0002352293578, -0.0001511926606, + -0.0000895412844, -0.0000168807339, +0.0000335779817, -0.0000447706422, + -0.0002743119266, -0.0004088073394, -0.0004200000000, -0.0004200000000, + -0.0004759633028, -0.0004871559633, -0.0004311926606, -0.0003078899083, + -0.0001904587156, -0.0000335779817, +0.0001566972477, +0.0003976146789, + +0.0005711926606, +0.0005655045872, +0.0002855045872, -0.0000392660550, + -0.0002464220183, -0.0002800000000, -0.0001792660550, -0.0000056880734, + +0.0000783486239, +0.0001680733945, +0.0003023853211, +0.0004031192661, + +0.0002911926606, +0.0000504587156, -0.0002855045872, -0.0006552293578, + -0.0008400000000, -0.0007278899083, -0.0004255045872, -0.0000447706422, + +0.0002295412844, +0.0003583486239, +0.0003247706422, +0.0002240366972, + +0.0000504587156, -0.0001904587156, -0.0004983486239, -0.0007559633028, + -0.0009800000000, -0.0010471559633, -0.0008511926606, -0.0004759633028, + -0.0001231192661, +0.0001455045872, +0.0002631192661, +0.0002128440367, + +0.0001792660550, +0.0001959633028, +0.0001680733945, +0.0001176146789, + +0.0002071559633, +0.0004535779817, +0.0007000000000, +0.0008119266055, + +0.0008007339450, +0.0006664220183, +0.0004702752294, +0.0001904587156, + -0.0000895412844, -0.0003247706422, -0.0003471559633, -0.0002183486239, + -0.0000056880734, +0.0002071559633, +0.0004816513761, +0.0006719266055, + +0.0007335779817, +0.0006271559633, +0.0004255045872, +0.0001566972477, + -0.0000952293578, -0.0002295412844, -0.0001511926606, -0.0000447706422, + +0.0000000000000, +0.0000504587156, +0.0002464220183, +0.0004088073394, + +0.0004590825688, +0.0003528440367, +0.0001455045872, -0.0001400000000, + -0.0004200000000, -0.0006102752294, -0.0005823853211, -0.0003864220183, + -0.0001119266055, +0.0001231192661, +0.0003078899083, +0.0002855045872, + +0.0001231192661, -0.0000616513761, -0.0002071559633, -0.0002855045872, + -0.0002071559633, -0.0000559633028, +0.0001176146789, +0.0002519266055, + +0.0002911926606, +0.0002352293578, +0.0001792660550, +0.0001623853211, + +0.0001735779817, +0.0001119266055, -0.0000335779817, -0.0002016513761, + -0.0002800000000, -0.0002407339450, -0.0001176146789, +0.0000000000000, + +0.0001231192661, +0.0001735779817, +0.0001064220183, +0.0000616513761, + +0.0001231192661, +0.0001735779817, +0.0001231192661, +0.0000840366972, + +0.0001735779817, +0.0002464220183, +0.0001959633028, +0.0001680733945, + +0.0002183486239, +0.0002911926606, +0.0002519266055, +0.0001680733945, + +0.0000504587156, -0.0000280733945, -0.0001566972477, -0.0002688073394, + -0.0003192660550, -0.0001231192661, +0.0001343119266, +0.0002966972477, + +0.0003078899083, +0.0003752293578, +0.0004759633028, +0.0005600000000, + +0.0004590825688, +0.0002464220183, -0.0000056880734, -0.0002240366972, + -0.0004478899083, -0.0005488073394, -0.0005431192661, -0.0004031192661, + -0.0002631192661, -0.0001176146789, -0.0000280733945, -0.0000392660550, + -0.0001959633028, -0.0002855045872, -0.0002743119266, -0.0001904587156, + -0.0001343119266, -0.0000616513761, +0.0000447706422, +0.0002016513761, + +0.0002240366972, +0.0001288073394, -0.0000223853211, -0.0002071559633, + -0.0003919266055, -0.0005095412844, -0.0005655045872, -0.0005264220183, + -0.0004143119266, -0.0002688073394, -0.0001064220183, +0.0000000000000, + +0.0000168807339, -0.0000223853211, -0.0000728440367, -0.0000783486239, + -0.0000392660550, -0.0000223853211, +0.0000840366972, +0.0002631192661, + +0.0003807339450, +0.0003583486239, +0.0002352293578, +0.0000223853211, + -0.0001680733945, -0.0004031192661, -0.0005711926606, -0.0005600000000, + -0.0003135779817, +0.0000000000000, +0.0003528440367, +0.0005878899083, + +0.0006214678899, +0.0004590825688, +0.0001959633028, -0.0001400000000, + -0.0003583486239, -0.0004200000000, -0.0002688073394, -0.0001288073394, + -0.0000335779817, +0.0000168807339, +0.0000504587156, -0.0000559633028, + -0.0001288073394, -0.0001288073394, -0.0000223853211, +0.0000559633028, + +0.0001623853211, +0.0002352293578, +0.0003247706422, +0.0002855045872, + +0.0001623853211, +0.0000168807339, -0.0000447706422, -0.0000616513761, + -0.0000168807339, -0.0000168807339, -0.0000559633028, -0.0001735779817, + -0.0003192660550, -0.0004255045872, -0.0003864220183, -0.0002128440367, + +0.0000111926606, +0.0001511926606, +0.0001566972477, +0.0000728440367, + -0.0000392660550, -0.0001119266055, -0.0000280733945, +0.0001343119266, + +0.0003416513761, +0.0005207339450, +0.0005376146789, +0.0004816513761, + +0.0003919266055, +0.0001847706422, -0.0001400000000, -0.0004031192661, + -0.0005319266055, -0.0004871559633, -0.0003807339450, -0.0002519266055, + -0.0001400000000, +0.0000111926606, +0.0001176146789, +0.0001511926606, + +0.0001343119266, +0.0001007339450, -0.0000559633028, -0.0002855045872, + -0.0005319266055, -0.0006607339450, -0.0006943119266, -0.0006271559633, + -0.0005264220183, -0.0003304587156, -0.0001566972477, -0.0000056880734, + +0.0000000000000, -0.0001119266055, -0.0003247706422, -0.0003752293578, + -0.0003135779817, -0.0001400000000, +0.0000168807339, +0.0001400000000, + +0.0000504587156, -0.0001623853211, -0.0004647706422, -0.0006719266055, + -0.0007614678899, -0.0007000000000, -0.0005264220183, -0.0002855045872, + -0.0001288073394, -0.0000783486239, -0.0001288073394, -0.0002295412844, + -0.0002407339450, -0.0001288073394, +0.0000000000000, +0.0001064220183, + +0.0000895412844, +0.0000000000000, -0.0000392660550, -0.0000111926606, + +0.0000168807339, +0.0000559633028, +0.0000840366972, +0.0000000000000, + -0.0001680733945, -0.0004255045872, -0.0006383486239, -0.0007447706422, + -0.0006607339450, -0.0004478899083, -0.0001792660550, -0.0000447706422, + -0.0000559633028, -0.0001735779817, -0.0002519266055, -0.0002519266055, + -0.0001511926606, -0.0000447706422, +0.0000952293578, +0.0001959633028, + +0.0003078899083, +0.0003416513761, +0.0002966972477, +0.0001288073394, + -0.0000223853211, -0.0001455045872, -0.0001623853211, -0.0001847706422, + -0.0001904587156, -0.0002240366972, -0.0002631192661, -0.0002631192661, + -0.0001511926606, -0.0000616513761, +0.0000447706422, +0.0001511926606, + +0.0002183486239, +0.0002631192661, +0.0003471559633, +0.0004366972477, + +0.0005152293578, +0.0005488073394, +0.0005376146789, +0.0004423853211, + +0.0003528440367, +0.0003078899083, +0.0002240366972, +0.0001566972477, + +0.0001455045872, +0.0000895412844, +0.0000000000000, -0.0000447706422, + -0.0000840366972, -0.0000952293578, -0.0000335779817, +0.0001343119266, + +0.0003640366972, +0.0005152293578, +0.0004928440367, +0.0003976146789, + +0.0002407339450, +0.0000728440367, -0.0000728440367, -0.0001735779817, + -0.0002240366972, -0.0001231192661, +0.0000056880734, +0.0001343119266, + +0.0002016513761, +0.0003192660550, +0.0003807339450, +0.0004366972477, + +0.0005152293578, +0.0005878899083, +0.0005376146789, +0.0004983486239, + +0.0004200000000, +0.0003192660550, +0.0002183486239, +0.0002295412844, + +0.0003247706422, +0.0005152293578, +0.0006831192661, +0.0008119266055, + +0.0008176146789, +0.0007111926606, +0.0005152293578, +0.0003247706422, + +0.0001623853211, +0.0000840366972, +0.0001119266055, +0.0002240366972, + +0.0003192660550, +0.0003864220183, +0.0003807339450, +0.0003304587156, + +0.0003135779817, +0.0003471559633, +0.0003695412844, +0.0004088073394, + +0.0004478899083, +0.0003864220183, +0.0002071559633, -0.0000056880734, + -0.0002016513761, -0.0003192660550, -0.0003135779817, -0.0001959633028, + +0.0000223853211, +0.0001735779817, +0.0002128440367, +0.0002183486239, + +0.0002240366972, +0.0002128440367, +0.0002743119266, +0.0002855045872, + +0.0002966972477, +0.0003304587156, +0.0004478899083, +0.0005207339450, + +0.0005655045872, +0.0005376146789, +0.0006047706422, +0.0007614678899, + +0.0009014678899, +0.0008343119266, +0.0006326605505, +0.0003359633028, + +0.0000000000000, -0.0002911926606, -0.0003864220183, -0.0002911926606, + -0.0000111926606, +0.0003023853211, +0.0005711926606, +0.0006888073394, + +0.0006719266055, +0.0005711926606, +0.0005264220183, +0.0004871559633, + +0.0004478899083, +0.0003752293578, +0.0002800000000, +0.0001623853211, + +0.0000895412844, +0.0000952293578, +0.0002407339450, +0.0004759633028, + +0.0006214678899, +0.0006440366972, +0.0005766972477, +0.0004535779817, + +0.0002576146789, +0.0000111926606, -0.0001792660550, -0.0002911926606, + -0.0003864220183, -0.0004311926606, -0.0003864220183, -0.0001904587156, + +0.0000783486239, +0.0003528440367, +0.0005376146789, +0.0006495412844, + +0.0005431192661, +0.0002631192661, -0.0000559633028, -0.0002688073394, + -0.0003471559633, -0.0001566972477, +0.0001847706422, +0.0005600000000, + +0.0007838532110, +0.0007895412844, +0.0005600000000, +0.0003078899083, + +0.0000559633028, -0.0001400000000, -0.0003864220183, -0.0006383486239, + -0.0007838532110, -0.0007335779817, -0.0006047706422, -0.0003752293578, + -0.0000728440367, +0.0003135779817, +0.0007223853211, +0.0009295412844, + +0.0008511926606, +0.0006326605505, +0.0002743119266, -0.0001511926606, + -0.0005600000000, -0.0008678899083, -0.0009519266055, -0.0007278899083, + -0.0003695412844, -0.0000840366972, +0.0000504587156, +0.0001119266055, + +0.0000952293578, +0.0000783486239, +0.0001119266055, +0.0001064220183, + +0.0001176146789, +0.0002016513761, +0.0003078899083, +0.0003752293578, + +0.0004816513761, +0.0005711926606, +0.0006214678899, +0.0004928440367, + +0.0002183486239, -0.0001455045872, -0.0005878899083, -0.0011031192661, + -0.0014783486239, -0.0015510091743, -0.0011871559633, -0.0006047706422, + -0.0001400000000, +0.0000895412844, +0.0003247706422, +0.0005095412844, + +0.0005600000000, +0.0004478899083, +0.0003023853211, +0.0001735779817, + +0.0000895412844, -0.0000056880734, -0.0001566972477, -0.0003583486239, + -0.0004647706422, -0.0004311926606, -0.0001735779817, +0.0001455045872, + +0.0003192660550, +0.0002240366972, -0.0000280733945, -0.0004031192661, + -0.0007055045872, -0.0007223853211, -0.0004366972477, +0.0000056880734, + +0.0004031192661, +0.0004647706422, +0.0000783486239, -0.0003976146789, + -0.0006943119266, -0.0007223853211, -0.0006159633028, -0.0004871559633, + -0.0003752293578, -0.0002743119266, -0.0003304587156, -0.0004816513761, + -0.0004647706422, -0.0002631192661, -0.0000952293578, -0.0001064220183, + -0.0002855045872, -0.0004535779817, -0.0004928440367, -0.0003528440367, + -0.0001847706422, -0.0001904587156, -0.0003752293578, -0.0005878899083, + -0.0008288073394, -0.0010862385321, -0.0012543119266, -0.0012095412844, + -0.0009519266055, -0.0005152293578, -0.0000504587156, +0.0002855045872, + +0.0004590825688, +0.0004928440367, +0.0004702752294, +0.0004366972477, + +0.0003304587156, +0.0001455045872, -0.0000280733945, -0.0001847706422, + -0.0003359633028, -0.0004983486239, -0.0005823853211, -0.0004816513761, + -0.0001680733945, +0.0000728440367, +0.0001288073394, +0.0000000000000, + -0.0001511926606, -0.0002743119266, -0.0002631192661, -0.0001007339450, + +0.0001904587156, +0.0004535779817, +0.0004759633028, +0.0002407339450, + -0.0001176146789, -0.0004535779817, -0.0005766972477, -0.0005543119266, + -0.0003976146789, -0.0001623853211, +0.0000616513761, +0.0002240366972, + +0.0002240366972, +0.0000392660550, -0.0000559633028, +0.0000000000000, + +0.0000671559633, +0.0001007339450, +0.0001735779817, +0.0002407339450, + +0.0001847706422, +0.0000056880734, -0.0002240366972, -0.0004423853211, + -0.0005319266055, -0.0004871559633, -0.0003864220183, -0.0001847706422, + +0.0000616513761, +0.0002352293578, +0.0002295412844, +0.0001400000000, + +0.0000335779817, +0.0000000000000, +0.0000392660550, +0.0001959633028, + +0.0003640366972, +0.0004423853211, +0.0003304587156, +0.0001511926606, + -0.0000671559633, -0.0002911926606, -0.0004816513761, -0.0005766972477, + -0.0005935779817, -0.0004816513761, -0.0002966972477, -0.0000280733945, + +0.0001231192661, +0.0001735779817, +0.0001288073394, +0.0000000000000, + -0.0002743119266, -0.0004143119266, -0.0003247706422, -0.0001343119266, + +0.0000280733945, +0.0002295412844, +0.0003304587156, +0.0003023853211, + +0.0001511926606, -0.0000056880734, -0.0000671559633, +0.0000335779817, + +0.0001959633028, +0.0002966972477, +0.0003023853211, +0.0002016513761, + +0.0000671559633, -0.0000223853211, +0.0000000000000, +0.0001680733945, + +0.0004200000000, +0.0006047706422, +0.0006607339450, +0.0005431192661, + +0.0002911926606, -0.0000111926606, -0.0002240366972, -0.0003135779817, + -0.0002183486239, +0.0000000000000, +0.0002743119266, +0.0003919266055, + +0.0002911926606, +0.0000616513761, +0.0000000000000, +0.0000000000000, + +0.0001007339450, +0.0002183486239, +0.0003078899083, +0.0002743119266, + +0.0001511926606, -0.0000335779817, -0.0000728440367, +0.0000111926606, + +0.0001792660550, +0.0002352293578, +0.0002407339450, +0.0001847706422, + +0.0000783486239, -0.0000728440367, -0.0000783486239, +0.0000671559633, + +0.0003640366972, +0.0006831192661, +0.0009407339450, +0.0010135779817, + +0.0008790825688, +0.0006214678899, +0.0003864220183, +0.0001680733945, + +0.0000111926606, -0.0000280733945, -0.0000783486239, -0.0002128440367, + -0.0003807339450, -0.0004702752294, -0.0004871559633, -0.0004255045872, + -0.0002911926606, -0.0000783486239, +0.0001288073394, +0.0003752293578, + +0.0005040366972, +0.0005040366972, +0.0003192660550, +0.0000840366972, + -0.0001623853211, -0.0002743119266, -0.0002576146789, -0.0000335779817, + +0.0002183486239, +0.0004535779817, +0.0005207339450, +0.0005319266055, + +0.0004366972477, +0.0002855045872, +0.0000559633028, -0.0000559633028, + -0.0001064220183, -0.0000895412844, -0.0001119266055, -0.0000447706422, + +0.0000952293578, +0.0003135779817, +0.0003752293578, +0.0003023853211, + +0.0001231192661, -0.0000392660550, -0.0001680733945, -0.0001511926606, + -0.0000671559633, -0.0000056880734, -0.0000111926606, -0.0000504587156, + -0.0001400000000, -0.0002128440367, -0.0002071559633, -0.0001400000000, + -0.0000840366972, -0.0000559633028, -0.0000728440367, -0.0001792660550, + -0.0003416513761, -0.0005711926606, -0.0007502752294, -0.0008007339450, + -0.0006831192661, -0.0004983486239, -0.0002576146789, -0.0000895412844, + -0.0000056880734, -0.0000447706422, -0.0000952293578, -0.0001680733945, + -0.0001064220183, +0.0000223853211, +0.0002016513761, +0.0002966972477, + +0.0003976146789, +0.0004423853211, +0.0004928440367, +0.0004647706422, + +0.0004535779817, +0.0004200000000, +0.0003416513761, +0.0001288073394, + -0.0000504587156, -0.0002071559633, -0.0002855045872, -0.0003471559633, + -0.0002519266055, -0.0000671559633, +0.0001343119266, +0.0003023853211, + +0.0004088073394, +0.0003192660550, +0.0001343119266, -0.0000671559633, + -0.0002295412844, -0.0003023853211, -0.0002631192661, -0.0001566972477, + -0.0000223853211, +0.0000895412844, +0.0001400000000, +0.0001119266055, + +0.0000000000000, -0.0001511926606, -0.0003135779817, -0.0004031192661, + -0.0003807339450, -0.0002519266055, -0.0001288073394, +0.0000447706422, + +0.0002071559633, +0.0002407339450, +0.0000671559633, -0.0001231192661, + -0.0002631192661, -0.0002743119266, -0.0002743119266, -0.0002071559633, + -0.0001623853211, -0.0001904587156, -0.0003192660550, -0.0003976146789, + -0.0004535779817, -0.0003640366972, -0.0001566972477, +0.0001007339450, + +0.0002240366972, +0.0002071559633, +0.0000728440367, +0.0000000000000, + -0.0000223853211, +0.0000111926606, +0.0000840366972, +0.0002407339450, + +0.0003583486239, +0.0003640366972, +0.0002240366972, +0.0000895412844, + +0.0000280733945, +0.0000056880734, -0.0000392660550, -0.0001176146789, + -0.0001792660550, -0.0001959633028, -0.0001400000000, -0.0000392660550, + +0.0000280733945, +0.0000671559633, +0.0001343119266, +0.0002128440367, + +0.0003078899083, +0.0003583486239, +0.0003640366972, +0.0002407339450, + +0.0001343119266, +0.0000728440367, +0.0000392660550, -0.0000056880734, + -0.0000168807339, -0.0000447706422, -0.0000559633028, -0.0000728440367, + -0.0000392660550, +0.0000000000000, +0.0000840366972, +0.0001511926606, + +0.0002128440367, +0.0001904587156, +0.0001343119266, +0.0000000000000, + -0.0001792660550, -0.0003528440367, -0.0003976146789, -0.0003528440367, + -0.0002576146789, -0.0001735779817, -0.0001343119266, -0.0001400000000, + -0.0001288073394, -0.0000840366972, +0.0000111926606, +0.0001847706422, + +0.0003304587156, +0.0003416513761, +0.0002016513761, -0.0000056880734, + -0.0002016513761, -0.0003078899083, -0.0003416513761, -0.0002631192661, + -0.0001343119266, -0.0000447706422, -0.0001007339450, -0.0002519266055, + -0.0004478899083, -0.0005823853211, -0.0005935779817, -0.0004200000000, + -0.0001847706422, +0.0000504587156, +0.0002183486239, +0.0003416513761, + +0.0003471559633, +0.0002519266055, +0.0000783486239, -0.0000616513761, + -0.0002407339450, -0.0003583486239, -0.0003807339450, -0.0002743119266, + -0.0001176146789, +0.0000000000000, +0.0000223853211, +0.0000447706422, + +0.0000559633028, +0.0000392660550, +0.0000280733945, +0.0000056880734, + -0.0000447706422, -0.0001400000000, -0.0002631192661, -0.0004143119266, + -0.0005152293578, -0.0005319266055, -0.0004702752294, -0.0003864220183, + -0.0003304587156, -0.0002966972477, -0.0002295412844, -0.0001343119266, + +0.0000056880734, +0.0001455045872, +0.0001792660550, +0.0000223853211, + -0.0002128440367, -0.0004255045872, -0.0004647706422, -0.0003976146789, + -0.0001904587156, +0.0000952293578, +0.0004031192661, +0.0005376146789, + +0.0005264220183, +0.0003807339450, +0.0002071559633, +0.0000447706422, + -0.0000559633028, -0.0001176146789, -0.0000952293578, -0.0001064220183, + -0.0001400000000, -0.0001623853211, -0.0001566972477, -0.0000895412844, + +0.0000447706422, +0.0002016513761, +0.0003247706422, +0.0003528440367, + +0.0002519266055, +0.0000671559633, -0.0001064220183, -0.0001792660550, + -0.0000895412844, +0.0000671559633, +0.0001959633028, +0.0002800000000, + +0.0002855045872, +0.0002295412844, +0.0001176146789, +0.0000223853211, + +0.0000056880734, +0.0000952293578, +0.0001566972477, +0.0001511926606, + +0.0000111926606, -0.0001455045872, -0.0002631192661, -0.0002464220183, + -0.0001623853211, +0.0000223853211, +0.0002911926606, +0.0005878899083, + +0.0007783486239, +0.0008064220183, +0.0006047706422, +0.0002576146789, + -0.0000895412844, -0.0002966972477, -0.0003135779817, -0.0001511926606, + +0.0000280733945, +0.0001566972477, +0.0001959633028, +0.0001904587156, + +0.0001680733945, +0.0001847706422, +0.0002352293578, +0.0002519266055, + +0.0002071559633, +0.0001007339450, +0.0000000000000, -0.0000616513761, + -0.0000335779817, +0.0000335779817, +0.0001680733945, +0.0003023853211, + +0.0004031192661, +0.0004088073394, +0.0003192660550, +0.0001176146789, + -0.0000392660550, -0.0001400000000, -0.0001455045872, -0.0001119266055, + -0.0000616513761, -0.0000616513761, -0.0000616513761, -0.0000392660550, + +0.0000447706422, +0.0001904587156, +0.0003807339450, +0.0004647706422, + +0.0003752293578, +0.0001231192661, -0.0001176146789, -0.0002855045872, + -0.0003304587156, -0.0002800000000, -0.0001343119266, +0.0000056880734, + +0.0001007339450, +0.0001288073394, +0.0001400000000, +0.0001680733945, + +0.0002071559633, +0.0002519266055, +0.0002855045872, +0.0002966972477, + +0.0002464220183, +0.0001231192661, -0.0000559633028, -0.0001400000000, + -0.0000671559633, +0.0000504587156, +0.0001623853211, +0.0002576146789, + +0.0002576146789, +0.0001959633028, +0.0001288073394, +0.0001064220183, + +0.0001566972477, +0.0002688073394, +0.0003247706422, +0.0003078899083, + +0.0001904587156, +0.0000447706422, -0.0000728440367, -0.0000616513761, + +0.0000392660550, +0.0001847706422, +0.0002631192661, +0.0002855045872, + +0.0002016513761, +0.0000616513761, -0.0000392660550, -0.0000895412844, + -0.0000616513761, +0.0000223853211, +0.0000895412844, +0.0001176146789, + +0.0001343119266, +0.0001735779817, +0.0002071559633, +0.0002128440367, + +0.0002240366972, +0.0002240366972, +0.0002183486239, +0.0001792660550, + +0.0000783486239, -0.0001119266055, -0.0003135779817, -0.0004366972477, + -0.0004088073394, -0.0002295412844, +0.0000223853211, +0.0002128440367, + +0.0002800000000, +0.0001792660550, +0.0000056880734, -0.0001792660550, + -0.0002966972477, -0.0003135779817, -0.0002183486239, -0.0001064220183, + -0.0000111926606, -0.0000168807339, -0.0000616513761, -0.0001176146789, + -0.0001231192661, -0.0000504587156, +0.0000504587156, +0.0001231192661, + +0.0001959633028, +0.0002464220183, +0.0002407339450, +0.0002240366972, + +0.0002688073394, +0.0003416513761, +0.0003807339450, +0.0003864220183, + +0.0003583486239, +0.0002855045872, +0.0001623853211, +0.0000728440367, + +0.0000223853211, +0.0000000000000, -0.0000168807339, -0.0000392660550, + -0.0000728440367, -0.0000616513761, -0.0000056880734, +0.0001176146789, + +0.0002576146789, +0.0004031192661, +0.0005040366972, +0.0005431192661, + +0.0004702752294, +0.0002966972477, +0.0000280733945, -0.0001847706422, + -0.0003416513761, -0.0003640366972, -0.0002966972477, -0.0001511926606, + -0.0000335779817, +0.0000000000000, +0.0000000000000, -0.0000111926606, + +0.0000000000000, +0.0000504587156, +0.0000840366972, +0.0000840366972, + +0.0000671559633, +0.0000280733945, -0.0000223853211, -0.0000895412844, + -0.0001064220183, -0.0000895412844, -0.0000504587156, -0.0000056880734, + +0.0000392660550, +0.0000616513761, +0.0000616513761, +0.0000895412844, + +0.0001904587156, +0.0002743119266, +0.0003135779817, +0.0002800000000, + +0.0002295412844, +0.0001343119266, +0.0000335779817, -0.0000616513761, + -0.0000840366972, -0.0000504587156, +0.0000000000000, -0.0000168807339, + -0.0000783486239, -0.0001792660550, -0.0002519266055, -0.0002966972477, + -0.0002519266055, -0.0001511926606, -0.0000447706422, +0.0000056880734, + +0.0000616513761, +0.0000559633028, +0.0000000000000, -0.0000447706422, + -0.0001231192661, -0.0002183486239, -0.0003359633028, -0.0004143119266, + -0.0004088073394, -0.0002688073394, -0.0000671559633, +0.0001231192661, + +0.0002464220183, +0.0002576146789, +0.0001007339450, -0.0001119266055, + -0.0003247706422, -0.0003640366972, -0.0002352293578, +0.0000000000000, + +0.0001959633028, +0.0003192660550, +0.0002855045872, +0.0001566972477, + -0.0000168807339, -0.0001792660550, -0.0002911926606, -0.0002743119266, + -0.0001959633028, -0.0000783486239, -0.0000056880734, +0.0000000000000, + -0.0000616513761, -0.0001847706422, -0.0002911926606, -0.0002855045872, + -0.0001959633028, -0.0000616513761, +0.0000392660550, +0.0001007339450, + +0.0000952293578, +0.0000728440367, +0.0000840366972, +0.0000728440367, + +0.0000168807339, -0.0000840366972, -0.0002016513761, -0.0003023853211, + -0.0003471559633, -0.0003528440367, -0.0002464220183, -0.0000671559633, + +0.0001231192661, +0.0002183486239, +0.0002352293578, +0.0001566972477, + +0.0000111926606, -0.0001792660550, -0.0003078899083, -0.0003752293578, + -0.0003528440367, -0.0002743119266, -0.0001400000000, -0.0000616513761, + -0.0000280733945, -0.0000616513761, -0.0000895412844, -0.0001064220183, + -0.0000895412844, -0.0000728440367, -0.0000559633028, -0.0000728440367, + -0.0001343119266, -0.0001847706422, -0.0001231192661, -0.0000111926606, + +0.0000840366972, +0.0001847706422, +0.0002688073394, +0.0002966972477, + +0.0002407339450, +0.0001231192661, +0.0000056880734, -0.0000447706422, + -0.0001064220183, -0.0001176146789, -0.0001064220183, -0.0000559633028, + -0.0000335779817, -0.0000056880734, -0.0000168807339, +0.0000000000000, + +0.0000000000000, +0.0000335779817, +0.0000280733945, +0.0000000000000, + -0.0000840366972, -0.0001400000000, -0.0002071559633, -0.0002352293578, + -0.0002071559633, -0.0000559633028, +0.0001064220183, +0.0002688073394, + +0.0003304587156, +0.0003304587156, +0.0002352293578, +0.0000952293578, + -0.0000335779817, -0.0001176146789, -0.0001343119266, -0.0001231192661, + -0.0001231192661, -0.0001511926606, -0.0001847706422, -0.0001847706422, + -0.0001064220183, +0.0000168807339, +0.0001735779817, +0.0002576146789, + +0.0002688073394, +0.0001680733945, +0.0000223853211, -0.0001007339450, + -0.0001566972477, -0.0001566972477, -0.0000840366972, +0.0000000000000, + +0.0000783486239, +0.0001064220183, +0.0001400000000, +0.0001511926606, + +0.0001735779817, +0.0001623853211, +0.0001792660550, +0.0001623853211, + +0.0001176146789, +0.0000168807339, -0.0000447706422, -0.0001007339450, + -0.0000895412844, -0.0000728440367, -0.0000447706422, +0.0000000000000, + +0.0000504587156, +0.0001064220183, +0.0001511926606, +0.0001904587156, + +0.0002295412844, +0.0002407339450, +0.0001792660550, +0.0000671559633, + -0.0000168807339, -0.0000783486239, -0.0001566972477, -0.0002071559633, + -0.0002407339450, -0.0002071559633, -0.0001176146789, +0.0000168807339, + +0.0001064220183, +0.0001288073394, +0.0000447706422, -0.0000559633028, + -0.0001904587156, -0.0002464220183, -0.0002352293578, -0.0001343119266, + +0.0000000000000, +0.0001288073394, +0.0001735779817, +0.0001455045872, + +0.0000447706422, -0.0000616513761, -0.0002016513761, -0.0002407339450, + -0.0002183486239, -0.0001680733945, -0.0001343119266, -0.0000840366972, + -0.0000280733945, +0.0000111926606, +0.0000392660550, +0.0000168807339, + +0.0000000000000, -0.0000168807339, -0.0000447706422, -0.0000895412844, + -0.0001007339450, -0.0001119266055, -0.0001007339450, -0.0000952293578, + -0.0000616513761, -0.0000559633028, -0.0000559633028, -0.0001455045872, + -0.0002295412844, -0.0002911926606, -0.0003192660550, -0.0003695412844, + -0.0003471559633, -0.0002519266055, -0.0000616513761, +0.0000783486239, + +0.0001904587156, +0.0001959633028, +0.0001400000000, +0.0000111926606, + -0.0001119266055, -0.0002576146789, -0.0002966972477, -0.0002016513761, + -0.0000392660550, +0.0000559633028, +0.0000783486239, +0.0000056880734, + -0.0000783486239, -0.0001566972477, -0.0001735779817, -0.0001343119266, + -0.0000840366972, -0.0000671559633, -0.0001176146789, -0.0001566972477, + -0.0001792660550, -0.0001735779817, -0.0001959633028, -0.0001735779817, + -0.0001007339450, +0.0000056880734, +0.0000616513761, +0.0000447706422, + -0.0000168807339, -0.0000783486239, -0.0001847706422, -0.0002743119266, + -0.0003023853211, -0.0002071559633, -0.0000895412844, +0.0000168807339, + +0.0000783486239, +0.0000895412844, +0.0000504587156, +0.0000168807339, + -0.0000335779817, -0.0000559633028, -0.0000728440367, -0.0001119266055, + -0.0001792660550, -0.0002519266055, -0.0003359633028, -0.0003864220183, + -0.0003471559633, -0.0002295412844, -0.0000783486239, +0.0000223853211, + +0.0000728440367, +0.0000223853211, -0.0000671559633, -0.0001792660550, + -0.0002071559633, -0.0001623853211, -0.0000111926606, +0.0001288073394, + +0.0002295412844, +0.0002128440367, +0.0001288073394, +0.0000000000000, + -0.0000840366972, -0.0000952293578, -0.0000392660550, -0.0000111926606, + -0.0000335779817, -0.0001231192661, -0.0001847706422, -0.0002183486239, + -0.0001735779817, -0.0000840366972, +0.0000392660550, +0.0001566972477, + +0.0001904587156, +0.0001511926606, +0.0001231192661, +0.0000840366972, + +0.0000335779817, -0.0000056880734, -0.0000671559633, -0.0001176146789, + -0.0001400000000, -0.0001288073394, -0.0000840366972, +0.0000000000000, + +0.0001064220183, +0.0002519266055, +0.0003807339450, +0.0004590825688, + +0.0004535779817, +0.0004088073394, +0.0003247706422, +0.0001959633028, + +0.0000504587156, +0.0000111926606, +0.0000616513761, +0.0001566972477, + +0.0001904587156, +0.0002128440367, +0.0002295412844, +0.0002295412844, + +0.0001847706422, +0.0001511926606, +0.0001566972477, +0.0002016513761, + +0.0002464220183, +0.0002464220183, +0.0002071559633, +0.0001680733945, + +0.0001288073394, +0.0000840366972, +0.0000559633028, +0.0000504587156, + +0.0000504587156, +0.0000111926606, -0.0000280733945, -0.0000728440367, + -0.0001119266055, -0.0001623853211, -0.0001904587156, -0.0002016513761, + -0.0001623853211, -0.0001007339450, -0.0000056880734, +0.0000671559633, + +0.0001400000000, +0.0001735779817, +0.0001792660550, +0.0001400000000, + +0.0000671559633, +0.0000000000000, -0.0000504587156, -0.0000728440367, + -0.0000223853211, +0.0000447706422, +0.0001231192661, +0.0001792660550, + +0.0002016513761, +0.0001343119266, +0.0000111926606, -0.0000559633028, + -0.0000559633028, +0.0000000000000, +0.0000392660550, +0.0000559633028, + +0.0000111926606, -0.0000504587156, -0.0001231192661, -0.0001007339450, + +0.0000168807339, +0.0002128440367, +0.0003640366972, +0.0004143119266, + +0.0003359633028, +0.0001680733945, +0.0000111926606, -0.0000392660550, + -0.0000392660550, +0.0000000000000, +0.0000392660550, +0.0000671559633, + +0.0000616513761, +0.0000335779817, +0.0000000000000, +0.0000000000000, + +0.0000447706422, +0.0001007339450, +0.0001511926606, +0.0001847706422, + +0.0002128440367, +0.0002016513761, +0.0001959633028, +0.0001959633028, + +0.0002240366972, +0.0002128440367, +0.0001623853211, +0.0000504587156, + -0.0000447706422, -0.0001064220183, -0.0000671559633, +0.0000000000000, + +0.0001119266055, +0.0001680733945, +0.0001904587156, +0.0001623853211, + +0.0001064220183, +0.0000168807339, -0.0000223853211, -0.0000392660550, + +0.0000000000000, +0.0000559633028, +0.0000952293578, +0.0001119266055, + +0.0001288073394, +0.0001511926606, +0.0001566972477, +0.0001400000000, + +0.0001231192661, +0.0001455045872, +0.0001566972477, +0.0001680733945, + +0.0001792660550, +0.0002352293578, +0.0002688073394, +0.0002800000000, + +0.0001959633028, +0.0000783486239, -0.0000280733945, -0.0000783486239, + -0.0001007339450, -0.0000616513761, -0.0000559633028, -0.0000616513761, + -0.0001176146789, -0.0001455045872, -0.0001288073394, -0.0000168807339, + +0.0001007339450, +0.0002519266055, +0.0002688073394, +0.0001735779817, + -0.0000056880734, -0.0001959633028, -0.0003192660550, -0.0003078899083, + -0.0002240366972, -0.0000895412844, +0.0000392660550, +0.0001623853211, + +0.0002352293578, +0.0002295412844, +0.0001792660550, +0.0000895412844, + +0.0000223853211, +0.0000056880734, +0.0000840366972, +0.0002071559633, + +0.0003528440367, +0.0004311926606, +0.0004702752294, +0.0003919266055, + +0.0002519266055, +0.0000783486239, -0.0000111926606, -0.0001119266055, + -0.0001400000000, -0.0001566972477, -0.0000895412844, -0.0000168807339, + +0.0000671559633, +0.0001064220183, +0.0001566972477, +0.0001455045872, + +0.0001231192661, +0.0000616513761, +0.0000447706422, +0.0000280733945, + +0.0000392660550, +0.0000223853211, +0.0000056880734, +0.0000000000000, + -0.0000168807339, -0.0000335779817, -0.0000280733945, +0.0000000000000, + +0.0000056880734, +0.0000000000000, -0.0000559633028, -0.0001343119266, + -0.0002240366972, -0.0002800000000, -0.0002966972477, -0.0002128440367, + -0.0000895412844, +0.0000616513761, +0.0001566972477, +0.0002016513761, + +0.0001511926606, +0.0001007339450, +0.0000000000000, -0.0000447706422, + -0.0001176146789, -0.0001288073394, -0.0001176146789, -0.0000392660550, + +0.0000056880734, +0.0000895412844, +0.0001064220183, +0.0001064220183, + +0.0000335779817, -0.0000447706422, -0.0001680733945, -0.0002016513761, + -0.0001511926606, -0.0000168807339, +0.0001064220183, +0.0002240366972, + +0.0002352293578, +0.0001566972477, +0.0000335779817, -0.0000728440367, + -0.0001119266055, -0.0000447706422, +0.0000504587156, +0.0001007339450, + +0.0001119266055, +0.0000728440367, +0.0000335779817, -0.0000111926606, + -0.0000223853211, -0.0000168807339, +0.0000335779817, +0.0000559633028, + +0.0000616513761, +0.0000000000000, -0.0000504587156, -0.0001511926606, + -0.0001904587156, -0.0002128440367, -0.0001343119266, -0.0000504587156, + +0.0000504587156, +0.0001119266055, +0.0001064220183, +0.0000000000000, + -0.0000895412844, -0.0001343119266, -0.0000952293578, -0.0000223853211, + +0.0000671559633, +0.0001680733945, +0.0002071559633, +0.0001680733945, + +0.0000952293578, +0.0000504587156, +0.0000223853211, +0.0000447706422, + +0.0000504587156, +0.0000392660550, -0.0000111926606, -0.0000840366972, + -0.0001623853211, -0.0001455045872, -0.0000783486239, +0.0000223853211, + +0.0001119266055, +0.0001680733945, +0.0001176146789, +0.0000111926606, + -0.0001064220183, -0.0001455045872, -0.0001343119266, -0.0000392660550, + +0.0000559633028, +0.0001735779817, +0.0002576146789, +0.0003416513761, + +0.0003695412844, +0.0003528440367, +0.0002800000000, +0.0001680733945, + +0.0000000000000, -0.0001623853211, -0.0002800000000, -0.0003078899083, + -0.0002352293578, -0.0001176146789, +0.0000000000000, +0.0000447706422, + +0.0000559633028, +0.0000000000000, -0.0000223853211, -0.0000335779817, + +0.0000000000000, +0.0000335779817, +0.0000671559633, +0.0000223853211, + -0.0000223853211, -0.0000952293578, -0.0001455045872, -0.0001623853211, + -0.0000504587156, +0.0001064220183, +0.0002855045872, +0.0004031192661, + +0.0004647706422, +0.0003807339450, +0.0002071559633, +0.0000168807339, + -0.0001007339450, -0.0001623853211, -0.0001119266055, -0.0000335779817, + -0.0000056880734, -0.0000335779817, -0.0000840366972, -0.0000671559633, + +0.0000168807339, +0.0001680733945, +0.0002911926606, +0.0003583486239, + +0.0003416513761, +0.0002631192661, +0.0001400000000, +0.0000223853211, + -0.0000168807339, +0.0000168807339, +0.0001288073394, +0.0002576146789, + +0.0002855045872, +0.0002128440367, +0.0000447706422, -0.0001119266055, + -0.0002576146789, -0.0003359633028, -0.0003471559633, -0.0002855045872, + -0.0002128440367, -0.0001792660550, -0.0001680733945, -0.0001566972477, + -0.0001288073394, -0.0000783486239 +}; diff --git a/plugins/ladspa_effect/swh/impulses/all.h b/plugins/ladspa_effect/swh/impulses/all.h new file mode 100644 index 000000000..cf597bfeb --- /dev/null +++ b/plugins/ladspa_effect/swh/impulses/all.h @@ -0,0 +1,51 @@ +/* Generated file, do not edit */ + +#define IMPULSES 21 + +#include "impulses/01-unit.h" +#include "impulses/02-steves-flat.h" +#include "impulses/03-stk-m1.h" +#include "impulses/04-fender-68-vibrolux-sm57.h" +#include "impulses/05-fender-68-vibrolux-sm57-off.h" +#include "impulses/06-fender-68-vibrolux-at4050.h" +#include "impulses/07-fender-68-vibrolux-ui87.h" +#include "impulses/08-fender-bassman-sm57.h" +#include "impulses/09-fender-bassman-sm57-off.h" +#include "impulses/10-fender-bassman-at4050.h" +#include "impulses/11-fender-bassman-ui87.h" +#include "impulses/12-fender-superchamp-sm57.h" +#include "impulses/13-fender-superchamp-sm57-off.h" +#include "impulses/14-fender-superchamp-at4050.h" +#include "impulses/15-fender-superchamp-ui87.h" +#include "impulses/16-marshall-jcm2000-sm57.h" +#include "impulses/17-marshall-jcm2000-sm57-off.h" +#include "impulses/18-marshall-plexi-sm57.h" +#include "impulses/19-marshall-plexi-sm57-off.h" +#include "impulses/20-matchless-chieftain-sm57.h" +#include "impulses/21-matchless-chieftain-sm57-off.h" + +inline void mk_imps(fftw_real **impulse_freq) +{ + int c = 0; + MK_IMP(unit); + MK_IMP(steves_flat); + MK_IMP(stk_m1); + MK_IMP(fender_68_vibrolux_sm57); + MK_IMP(fender_68_vibrolux_sm57_off); + MK_IMP(fender_68_vibrolux_at4050); + MK_IMP(fender_68_vibrolux_ui87); + MK_IMP(fender_bassman_sm57); + MK_IMP(fender_bassman_sm57_off); + MK_IMP(fender_bassman_at4050); + MK_IMP(fender_bassman_ui87); + MK_IMP(fender_superchamp_sm57); + MK_IMP(fender_superchamp_sm57_off); + MK_IMP(fender_superchamp_at4050); + MK_IMP(fender_superchamp_ui87); + MK_IMP(marshall_jcm2000_sm57); + MK_IMP(marshall_jcm2000_sm57_off); + MK_IMP(marshall_plexi_sm57); + MK_IMP(marshall_plexi_sm57_off); + MK_IMP(matchless_chieftain_sm57); + MK_IMP(matchless_chieftain_sm57_off); +}; diff --git a/plugins/ladspa_effect/swh/inv_1429.c b/plugins/ladspa_effect/swh/inv_1429.c new file mode 100644 index 000000000..cbc51f548 --- /dev/null +++ b/plugins/ladspa_effect/swh/inv_1429.c @@ -0,0 +1,218 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + + +#define INV_INPUT 0 +#define INV_OUTPUT 1 + +static LADSPA_Descriptor *invDescriptor = NULL; + +typedef struct { + LADSPA_Data *input; + LADSPA_Data *output; + LADSPA_Data run_adding_gain; +} Inv; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return invDescriptor; + default: + return NULL; + } +} + +static void cleanupInv(LADSPA_Handle instance) { + free(instance); +} + +static void connectPortInv( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + Inv *plugin; + + plugin = (Inv *)instance; + switch (port) { + case INV_INPUT: + plugin->input = data; + break; + case INV_OUTPUT: + plugin->output = data; + break; + } +} + +static LADSPA_Handle instantiateInv( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + Inv *plugin_data = (Inv *)malloc(sizeof(Inv)); + plugin_data->run_adding_gain = 1.0f; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runInv(LADSPA_Handle instance, unsigned long sample_count) { + Inv *plugin_data = (Inv *)instance; + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + +#line 17 "inv_1429.xml" + unsigned long pos; + + for (pos = 0; pos < sample_count; pos++) { + buffer_write(output[pos], -input[pos]); + } +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainInv(LADSPA_Handle instance, LADSPA_Data gain) { + ((Inv *)instance)->run_adding_gain = gain; +} + +static void runAddingInv(LADSPA_Handle instance, unsigned long sample_count) { + Inv *plugin_data = (Inv *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + +#line 17 "inv_1429.xml" + unsigned long pos; + + for (pos = 0; pos < sample_count; pos++) { + buffer_write(output[pos], -input[pos]); + } +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + invDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (invDescriptor) { + invDescriptor->UniqueID = 1429; + invDescriptor->Label = "inv"; + invDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + invDescriptor->Name = + D_("Inverter"); + invDescriptor->Maker = + "Steve Harris "; + invDescriptor->Copyright = + "GPL"; + invDescriptor->PortCount = 2; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(2, + sizeof(LADSPA_PortDescriptor)); + invDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(2, + sizeof(LADSPA_PortRangeHint)); + invDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(2, sizeof(char*)); + invDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Input */ + port_descriptors[INV_INPUT] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[INV_INPUT] = + D_("Input"); + port_range_hints[INV_INPUT].HintDescriptor = 0; + + /* Parameters for Output */ + port_descriptors[INV_OUTPUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[INV_OUTPUT] = + D_("Output"); + port_range_hints[INV_OUTPUT].HintDescriptor = 0; + + invDescriptor->activate = NULL; + invDescriptor->cleanup = cleanupInv; + invDescriptor->connect_port = connectPortInv; + invDescriptor->deactivate = NULL; + invDescriptor->instantiate = instantiateInv; + invDescriptor->run = runInv; + invDescriptor->run_adding = runAddingInv; + invDescriptor->set_run_adding_gain = setRunAddingGainInv; + } +} + +void _fini() { + if (invDescriptor) { + free((LADSPA_PortDescriptor *)invDescriptor->PortDescriptors); + free((char **)invDescriptor->PortNames); + free((LADSPA_PortRangeHint *)invDescriptor->PortRangeHints); + free(invDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/karaoke_1409.c b/plugins/ladspa_effect/swh/karaoke_1409.c new file mode 100644 index 000000000..4c2f7355e --- /dev/null +++ b/plugins/ladspa_effect/swh/karaoke_1409.c @@ -0,0 +1,285 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + + +#define KARAOKE_GAIN 0 +#define KARAOKE_LIN 1 +#define KARAOKE_RIN 2 +#define KARAOKE_LOUT 3 +#define KARAOKE_ROUT 4 + +static LADSPA_Descriptor *karaokeDescriptor = NULL; + +typedef struct { + LADSPA_Data *gain; + LADSPA_Data *lin; + LADSPA_Data *rin; + LADSPA_Data *lout; + LADSPA_Data *rout; + LADSPA_Data run_adding_gain; +} Karaoke; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return karaokeDescriptor; + default: + return NULL; + } +} + +static void cleanupKaraoke(LADSPA_Handle instance) { + free(instance); +} + +static void connectPortKaraoke( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + Karaoke *plugin; + + plugin = (Karaoke *)instance; + switch (port) { + case KARAOKE_GAIN: + plugin->gain = data; + break; + case KARAOKE_LIN: + plugin->lin = data; + break; + case KARAOKE_RIN: + plugin->rin = data; + break; + case KARAOKE_LOUT: + plugin->lout = data; + break; + case KARAOKE_ROUT: + plugin->rout = data; + break; + } +} + +static LADSPA_Handle instantiateKaraoke( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + Karaoke *plugin_data = (Karaoke *)malloc(sizeof(Karaoke)); + plugin_data->run_adding_gain = 1.0f; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runKaraoke(LADSPA_Handle instance, unsigned long sample_count) { + Karaoke *plugin_data = (Karaoke *)instance; + + /* Vocal volume (dB) (float value) */ + const LADSPA_Data gain = *(plugin_data->gain); + + /* Left in (array of floats of length sample_count) */ + const LADSPA_Data * const lin = plugin_data->lin; + + /* Right in (array of floats of length sample_count) */ + const LADSPA_Data * const rin = plugin_data->rin; + + /* Left out (array of floats of length sample_count) */ + LADSPA_Data * const lout = plugin_data->lout; + + /* Right out (array of floats of length sample_count) */ + LADSPA_Data * const rout = plugin_data->rout; + +#line 17 "karaoke_1409.xml" + unsigned long pos; + float coef = pow(10.0f, gain * 0.05f) * 0.5f; + float m, s; + + for (pos = 0; pos < sample_count; pos++) { + m = lin[pos] + rin[pos]; + s = lin[pos] - rin[pos]; + buffer_write(lout[pos], m * coef + s * 0.5f); + buffer_write(rout[pos], m * coef - s * 0.5f); + } +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainKaraoke(LADSPA_Handle instance, LADSPA_Data gain) { + ((Karaoke *)instance)->run_adding_gain = gain; +} + +static void runAddingKaraoke(LADSPA_Handle instance, unsigned long sample_count) { + Karaoke *plugin_data = (Karaoke *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Vocal volume (dB) (float value) */ + const LADSPA_Data gain = *(plugin_data->gain); + + /* Left in (array of floats of length sample_count) */ + const LADSPA_Data * const lin = plugin_data->lin; + + /* Right in (array of floats of length sample_count) */ + const LADSPA_Data * const rin = plugin_data->rin; + + /* Left out (array of floats of length sample_count) */ + LADSPA_Data * const lout = plugin_data->lout; + + /* Right out (array of floats of length sample_count) */ + LADSPA_Data * const rout = plugin_data->rout; + +#line 17 "karaoke_1409.xml" + unsigned long pos; + float coef = pow(10.0f, gain * 0.05f) * 0.5f; + float m, s; + + for (pos = 0; pos < sample_count; pos++) { + m = lin[pos] + rin[pos]; + s = lin[pos] - rin[pos]; + buffer_write(lout[pos], m * coef + s * 0.5f); + buffer_write(rout[pos], m * coef - s * 0.5f); + } +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + karaokeDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (karaokeDescriptor) { + karaokeDescriptor->UniqueID = 1409; + karaokeDescriptor->Label = "karaoke"; + karaokeDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + karaokeDescriptor->Name = + D_("Karaoke"); + karaokeDescriptor->Maker = + "Steve Harris "; + karaokeDescriptor->Copyright = + "GPL"; + karaokeDescriptor->PortCount = 5; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(5, + sizeof(LADSPA_PortDescriptor)); + karaokeDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(5, + sizeof(LADSPA_PortRangeHint)); + karaokeDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(5, sizeof(char*)); + karaokeDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Vocal volume (dB) */ + port_descriptors[KARAOKE_GAIN] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[KARAOKE_GAIN] = + D_("Vocal volume (dB)"); + port_range_hints[KARAOKE_GAIN].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[KARAOKE_GAIN].LowerBound = -70; + port_range_hints[KARAOKE_GAIN].UpperBound = 0; + + /* Parameters for Left in */ + port_descriptors[KARAOKE_LIN] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[KARAOKE_LIN] = + D_("Left in"); + port_range_hints[KARAOKE_LIN].HintDescriptor = 0; + + /* Parameters for Right in */ + port_descriptors[KARAOKE_RIN] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[KARAOKE_RIN] = + D_("Right in"); + port_range_hints[KARAOKE_RIN].HintDescriptor = 0; + + /* Parameters for Left out */ + port_descriptors[KARAOKE_LOUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[KARAOKE_LOUT] = + D_("Left out"); + port_range_hints[KARAOKE_LOUT].HintDescriptor = 0; + + /* Parameters for Right out */ + port_descriptors[KARAOKE_ROUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[KARAOKE_ROUT] = + D_("Right out"); + port_range_hints[KARAOKE_ROUT].HintDescriptor = 0; + + karaokeDescriptor->activate = NULL; + karaokeDescriptor->cleanup = cleanupKaraoke; + karaokeDescriptor->connect_port = connectPortKaraoke; + karaokeDescriptor->deactivate = NULL; + karaokeDescriptor->instantiate = instantiateKaraoke; + karaokeDescriptor->run = runKaraoke; + karaokeDescriptor->run_adding = runAddingKaraoke; + karaokeDescriptor->set_run_adding_gain = setRunAddingGainKaraoke; + } +} + +void _fini() { + if (karaokeDescriptor) { + free((LADSPA_PortDescriptor *)karaokeDescriptor->PortDescriptors); + free((char **)karaokeDescriptor->PortNames); + free((LADSPA_PortRangeHint *)karaokeDescriptor->PortRangeHints); + free(karaokeDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/ladspa-util.c b/plugins/ladspa_effect/swh/ladspa-util.c new file mode 100644 index 000000000..57ce5bf15 --- /dev/null +++ b/plugins/ladspa_effect/swh/ladspa-util.c @@ -0,0 +1,22 @@ +/* truncate: + + Truncates a float down to an int without worrying about + the stack and crap like that. +*/ + +static const float _truncate_half = 0.5f; + +int truncate(float flt) { + int i; + + i = flt; +/* + asm ( + "flds 8(%ebp)\n" + "\tfsubs _truncate_half\n" + "\tfistpl -4(%ebp)\n" + ); +*/ + + return i; +} diff --git a/plugins/ladspa_effect/swh/latency_1914.c b/plugins/ladspa_effect/swh/latency_1914.c new file mode 100644 index 000000000..56d0365b6 --- /dev/null +++ b/plugins/ladspa_effect/swh/latency_1914.c @@ -0,0 +1,270 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + +#line 10 "latency_1914.xml" + +#include "ladspa-util.h" + +#define ARTIFICIALLATENCY_DELAY 0 +#define ARTIFICIALLATENCY_INPUT 1 +#define ARTIFICIALLATENCY_OUTPUT 2 +#define ARTIFICIALLATENCY_LATENCY 3 + +static LADSPA_Descriptor *artificialLatencyDescriptor = NULL; + +typedef struct { + LADSPA_Data *delay; + LADSPA_Data *input; + LADSPA_Data *output; + LADSPA_Data *latency; + float fs; + LADSPA_Data run_adding_gain; +} ArtificialLatency; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return artificialLatencyDescriptor; + default: + return NULL; + } +} + +static void cleanupArtificialLatency(LADSPA_Handle instance) { + free(instance); +} + +static void connectPortArtificialLatency( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + ArtificialLatency *plugin; + + plugin = (ArtificialLatency *)instance; + switch (port) { + case ARTIFICIALLATENCY_DELAY: + plugin->delay = data; + break; + case ARTIFICIALLATENCY_INPUT: + plugin->input = data; + break; + case ARTIFICIALLATENCY_OUTPUT: + plugin->output = data; + break; + case ARTIFICIALLATENCY_LATENCY: + plugin->latency = data; + break; + } +} + +static LADSPA_Handle instantiateArtificialLatency( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + ArtificialLatency *plugin_data = (ArtificialLatency *)malloc(sizeof(ArtificialLatency)); + float fs; + +#line 21 "latency_1914.xml" + fs = s_rate; + + plugin_data->fs = fs; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runArtificialLatency(LADSPA_Handle instance, unsigned long sample_count) { + ArtificialLatency *plugin_data = (ArtificialLatency *)instance; + + /* Delay (ms) (float value) */ + const LADSPA_Data delay = *(plugin_data->delay); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + float fs = plugin_data->fs; + +#line 25 "latency_1914.xml" + unsigned long pos; + const int delay_fr = f_round(delay * 0.001 * fs); + + if (input != output) { + for (pos = 0; pos < sample_count; pos++) { + buffer_write(output[pos], input[pos]); + } + } + *(plugin_data->latency) = (float)delay_fr; +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainArtificialLatency(LADSPA_Handle instance, LADSPA_Data gain) { + ((ArtificialLatency *)instance)->run_adding_gain = gain; +} + +static void runAddingArtificialLatency(LADSPA_Handle instance, unsigned long sample_count) { + ArtificialLatency *plugin_data = (ArtificialLatency *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Delay (ms) (float value) */ + const LADSPA_Data delay = *(plugin_data->delay); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + float fs = plugin_data->fs; + +#line 25 "latency_1914.xml" + unsigned long pos; + const int delay_fr = f_round(delay * 0.001 * fs); + + if (input != output) { + for (pos = 0; pos < sample_count; pos++) { + buffer_write(output[pos], input[pos]); + } + } + *(plugin_data->latency) = (float)delay_fr; +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + artificialLatencyDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (artificialLatencyDescriptor) { + artificialLatencyDescriptor->UniqueID = 1914; + artificialLatencyDescriptor->Label = "artificialLatency"; + artificialLatencyDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + artificialLatencyDescriptor->Name = + D_("Artificial latency"); + artificialLatencyDescriptor->Maker = + "Steve Harris "; + artificialLatencyDescriptor->Copyright = + "GPL"; + artificialLatencyDescriptor->PortCount = 4; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(4, + sizeof(LADSPA_PortDescriptor)); + artificialLatencyDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(4, + sizeof(LADSPA_PortRangeHint)); + artificialLatencyDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(4, sizeof(char*)); + artificialLatencyDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Delay (ms) */ + port_descriptors[ARTIFICIALLATENCY_DELAY] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[ARTIFICIALLATENCY_DELAY] = + D_("Delay (ms)"); + port_range_hints[ARTIFICIALLATENCY_DELAY].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_LOW; + port_range_hints[ARTIFICIALLATENCY_DELAY].LowerBound = 0; + port_range_hints[ARTIFICIALLATENCY_DELAY].UpperBound = 10000; + + /* Parameters for Input */ + port_descriptors[ARTIFICIALLATENCY_INPUT] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[ARTIFICIALLATENCY_INPUT] = + D_("Input"); + port_range_hints[ARTIFICIALLATENCY_INPUT].HintDescriptor = 0; + + /* Parameters for Output */ + port_descriptors[ARTIFICIALLATENCY_OUTPUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[ARTIFICIALLATENCY_OUTPUT] = + D_("Output"); + port_range_hints[ARTIFICIALLATENCY_OUTPUT].HintDescriptor = 0; + + /* Parameters for latency */ + port_descriptors[ARTIFICIALLATENCY_LATENCY] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_CONTROL; + port_names[ARTIFICIALLATENCY_LATENCY] = + D_("latency"); + port_range_hints[ARTIFICIALLATENCY_LATENCY].HintDescriptor = 0; + + artificialLatencyDescriptor->activate = NULL; + artificialLatencyDescriptor->cleanup = cleanupArtificialLatency; + artificialLatencyDescriptor->connect_port = connectPortArtificialLatency; + artificialLatencyDescriptor->deactivate = NULL; + artificialLatencyDescriptor->instantiate = instantiateArtificialLatency; + artificialLatencyDescriptor->run = runArtificialLatency; + artificialLatencyDescriptor->run_adding = runAddingArtificialLatency; + artificialLatencyDescriptor->set_run_adding_gain = setRunAddingGainArtificialLatency; + } +} + +void _fini() { + if (artificialLatencyDescriptor) { + free((LADSPA_PortDescriptor *)artificialLatencyDescriptor->PortDescriptors); + free((char **)artificialLatencyDescriptor->PortNames); + free((LADSPA_PortRangeHint *)artificialLatencyDescriptor->PortRangeHints); + free(artificialLatencyDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/lcr_delay_1436.c b/plugins/ladspa_effect/swh/lcr_delay_1436.c new file mode 100644 index 000000000..8e0c60243 --- /dev/null +++ b/plugins/ladspa_effect/swh/lcr_delay_1436.c @@ -0,0 +1,744 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + +#line 10 "lcr_delay_1436.xml" + +#include "ladspa-util.h" +#include "util/biquad.h" + +#define LCRDELAY_LDEL 0 +#define LCRDELAY_LLEV 1 +#define LCRDELAY_CDEL 2 +#define LCRDELAY_CLEV 3 +#define LCRDELAY_RDEL 4 +#define LCRDELAY_RLEV 5 +#define LCRDELAY_FEEDBACK 6 +#define LCRDELAY_HIGH_D 7 +#define LCRDELAY_LOW_D 8 +#define LCRDELAY_SPREAD 9 +#define LCRDELAY_WET 10 +#define LCRDELAY_IN_L 11 +#define LCRDELAY_IN_R 12 +#define LCRDELAY_OUT_L 13 +#define LCRDELAY_OUT_R 14 + +static LADSPA_Descriptor *lcrDelayDescriptor = NULL; + +typedef struct { + LADSPA_Data *ldel; + LADSPA_Data *llev; + LADSPA_Data *cdel; + LADSPA_Data *clev; + LADSPA_Data *rdel; + LADSPA_Data *rlev; + LADSPA_Data *feedback; + LADSPA_Data *high_d; + LADSPA_Data *low_d; + LADSPA_Data *spread; + LADSPA_Data *wet; + LADSPA_Data *in_l; + LADSPA_Data *in_r; + LADSPA_Data *out_l; + LADSPA_Data *out_r; + LADSPA_Data *buffer; + unsigned int buffer_mask; + unsigned int buffer_pos; + biquad * filters; + float fs; + float last_cd; + float last_cl; + float last_ld; + float last_ll; + float last_rd; + float last_rl; + LADSPA_Data run_adding_gain; +} LcrDelay; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return lcrDelayDescriptor; + default: + return NULL; + } +} + +static void activateLcrDelay(LADSPA_Handle instance) { + LcrDelay *plugin_data = (LcrDelay *)instance; + LADSPA_Data *buffer = plugin_data->buffer; + unsigned int buffer_mask = plugin_data->buffer_mask; + unsigned int buffer_pos = plugin_data->buffer_pos; + biquad *filters = plugin_data->filters; + float fs = plugin_data->fs; + float last_cd = plugin_data->last_cd; + float last_cl = plugin_data->last_cl; + float last_ld = plugin_data->last_ld; + float last_ll = plugin_data->last_ll; + float last_rd = plugin_data->last_rd; + float last_rl = plugin_data->last_rl; +#line 41 "lcr_delay_1436.xml" + memset(buffer, 0, (buffer_mask + 1) * sizeof(LADSPA_Data)); + last_ll = 0.0f; + last_cl = 0.0f; + last_rl = 0.0f; + last_ld = 0.0f; + last_cd = 0.0f; + last_rd = 0.0f; + biquad_init(filters); + biquad_init(filters + 1); + plugin_data->buffer = buffer; + plugin_data->buffer_mask = buffer_mask; + plugin_data->buffer_pos = buffer_pos; + plugin_data->filters = filters; + plugin_data->fs = fs; + plugin_data->last_cd = last_cd; + plugin_data->last_cl = last_cl; + plugin_data->last_ld = last_ld; + plugin_data->last_ll = last_ll; + plugin_data->last_rd = last_rd; + plugin_data->last_rl = last_rl; + +} + +static void cleanupLcrDelay(LADSPA_Handle instance) { +#line 53 "lcr_delay_1436.xml" + LcrDelay *plugin_data = (LcrDelay *)instance; + free(plugin_data->filters); + free(plugin_data->buffer); + free(instance); +} + +static void connectPortLcrDelay( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + LcrDelay *plugin; + + plugin = (LcrDelay *)instance; + switch (port) { + case LCRDELAY_LDEL: + plugin->ldel = data; + break; + case LCRDELAY_LLEV: + plugin->llev = data; + break; + case LCRDELAY_CDEL: + plugin->cdel = data; + break; + case LCRDELAY_CLEV: + plugin->clev = data; + break; + case LCRDELAY_RDEL: + plugin->rdel = data; + break; + case LCRDELAY_RLEV: + plugin->rlev = data; + break; + case LCRDELAY_FEEDBACK: + plugin->feedback = data; + break; + case LCRDELAY_HIGH_D: + plugin->high_d = data; + break; + case LCRDELAY_LOW_D: + plugin->low_d = data; + break; + case LCRDELAY_SPREAD: + plugin->spread = data; + break; + case LCRDELAY_WET: + plugin->wet = data; + break; + case LCRDELAY_IN_L: + plugin->in_l = data; + break; + case LCRDELAY_IN_R: + plugin->in_r = data; + break; + case LCRDELAY_OUT_L: + plugin->out_l = data; + break; + case LCRDELAY_OUT_R: + plugin->out_r = data; + break; + } +} + +static LADSPA_Handle instantiateLcrDelay( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + LcrDelay *plugin_data = (LcrDelay *)malloc(sizeof(LcrDelay)); + LADSPA_Data *buffer = NULL; + unsigned int buffer_mask; + unsigned int buffer_pos; + biquad *filters = NULL; + float fs; + float last_cd; + float last_cl; + float last_ld; + float last_ll; + float last_rd; + float last_rl; + +#line 21 "lcr_delay_1436.xml" + int buffer_size = 32768; + + fs = s_rate; + while (buffer_size < fs * 2.7f) { + buffer_size *= 2; + } + buffer = calloc(buffer_size, sizeof(LADSPA_Data)); + buffer_mask = buffer_size - 1; + buffer_pos = 0; + last_ll = 0.0f; + last_cl = 0.0f; + last_rl = 0.0f; + last_ld = 0.0f; + last_cd = 0.0f; + last_rd = 0.0f; + + filters = malloc(2 * sizeof(biquad)); + + plugin_data->buffer = buffer; + plugin_data->buffer_mask = buffer_mask; + plugin_data->buffer_pos = buffer_pos; + plugin_data->filters = filters; + plugin_data->fs = fs; + plugin_data->last_cd = last_cd; + plugin_data->last_cl = last_cl; + plugin_data->last_ld = last_ld; + plugin_data->last_ll = last_ll; + plugin_data->last_rd = last_rd; + plugin_data->last_rl = last_rl; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runLcrDelay(LADSPA_Handle instance, unsigned long sample_count) { + LcrDelay *plugin_data = (LcrDelay *)instance; + + /* L delay (ms) (float value) */ + const LADSPA_Data ldel = *(plugin_data->ldel); + + /* L level (float value) */ + const LADSPA_Data llev = *(plugin_data->llev); + + /* C delay (ms) (float value) */ + const LADSPA_Data cdel = *(plugin_data->cdel); + + /* C level (float value) */ + const LADSPA_Data clev = *(plugin_data->clev); + + /* R delay (ms) (float value) */ + const LADSPA_Data rdel = *(plugin_data->rdel); + + /* R level (float value) */ + const LADSPA_Data rlev = *(plugin_data->rlev); + + /* Feedback (float value) */ + const LADSPA_Data feedback = *(plugin_data->feedback); + + /* High damp (%) (float value) */ + const LADSPA_Data high_d = *(plugin_data->high_d); + + /* Low damp (%) (float value) */ + const LADSPA_Data low_d = *(plugin_data->low_d); + + /* Spread (float value) */ + const LADSPA_Data spread = *(plugin_data->spread); + + /* Dry/Wet level (float value) */ + const LADSPA_Data wet = *(plugin_data->wet); + + /* L input (array of floats of length sample_count) */ + const LADSPA_Data * const in_l = plugin_data->in_l; + + /* R input (array of floats of length sample_count) */ + const LADSPA_Data * const in_r = plugin_data->in_r; + + /* L output (array of floats of length sample_count) */ + LADSPA_Data * const out_l = plugin_data->out_l; + + /* R output (array of floats of length sample_count) */ + LADSPA_Data * const out_r = plugin_data->out_r; + LADSPA_Data * buffer = plugin_data->buffer; + unsigned int buffer_mask = plugin_data->buffer_mask; + unsigned int buffer_pos = plugin_data->buffer_pos; + biquad * filters = plugin_data->filters; + float fs = plugin_data->fs; + float last_cd = plugin_data->last_cd; + float last_cl = plugin_data->last_cl; + float last_ld = plugin_data->last_ld; + float last_ll = plugin_data->last_ll; + float last_rd = plugin_data->last_rd; + float last_rl = plugin_data->last_rl; + +#line 58 "lcr_delay_1436.xml" + unsigned long pos; + const float sc_r = 1.0f / (float)sample_count; + const float spr_t = 0.5f + spread * 0.01f; + const float spr_o = 0.5f - spread * 0.01f; + float fb = feedback * 0.01f; + float ll, cl, rl, ld, cd, rd; + float ll_d, cl_d, rl_d, ld_d, cd_d, rd_d; + float left, right; + float fbs; /* Feedback signal */ + + if (fb < -0.99f) { + fb = -0.99f; + } else if (fb > 0.99f) { + fb = 0.99f; + } + + ls_set_params(filters, fs * 0.0001f * powf(2.0f, low_d * 0.12f), + -0.5f * low_d, 0.5f, fs); + hs_set_params(filters + 1, fs * (0.41f - 0.0001f * + powf(2.0f, high_d * 0.12f)), -70.0f, 0.9f, fs); + + ll = last_ll; /* Start value of Left Level */ + ll_d = (llev * 0.01f - last_ll) * sc_r; /* Delta for Left Level */ + cl = last_cl; + cl_d = (clev * 0.01f - last_cl) * sc_r; + rl = last_rl; + rl_d = (rlev * 0.01f - last_rl) * sc_r; + + ld = last_ld; + ld_d = (ldel * fs * 0.001f - last_ld) * sc_r; + cd = last_cd; + cd_d = (cdel * fs * 0.001f - last_cd) * sc_r; + rd = last_rd; + rd_d = (rdel * fs * 0.001f - last_rd) * sc_r; + + for (pos = 0; pos < sample_count; pos++) { + /* Increment linear interpolators */ + ll += ll_d; + rl += rl_d; + cl += cl_d; + ld += ld_d; + rd += rd_d; + cd += cd_d; + + /* Write input into delay line */ + buffer[buffer_pos] = in_l[pos] + in_r[pos]; + /* Add feedback, must be done afterwards for case where C delay = 0 */ + fbs = buffer[(buffer_pos - f_round(cd)) & buffer_mask] * fb; + fbs = flush_to_zero(fbs); + fbs = biquad_run(filters, fbs); + fbs = biquad_run(filters + 1, fbs); + buffer[buffer_pos] += fbs; + + /* Outputs from left and right delay beffers + centre mix */ + left = buffer[(buffer_pos - f_round(ld)) & buffer_mask] * ll + + buffer[(buffer_pos - f_round(cd)) & buffer_mask] * cl; + right = buffer[(buffer_pos - f_round(rd)) & buffer_mask] * rl + + buffer[(buffer_pos - f_round(cd)) & buffer_mask] * cl; + + /* Left and right channel outs */ + buffer_write(out_l[pos], in_l[pos] * (1.0f - wet) + + (left * spr_t + right * spr_o) * wet); + buffer_write(out_r[pos], in_r[pos] * (1.0f - wet) + + (left * spr_o + right * spr_t) * wet); + + buffer_pos = (buffer_pos + 1) & buffer_mask; + } + + plugin_data->last_ll = ll; + plugin_data->last_cl = cl; + plugin_data->last_rl = rl; + plugin_data->last_ld = ld; + plugin_data->last_cd = cd; + plugin_data->last_rd = rd; + plugin_data->buffer_pos = buffer_pos; +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainLcrDelay(LADSPA_Handle instance, LADSPA_Data gain) { + ((LcrDelay *)instance)->run_adding_gain = gain; +} + +static void runAddingLcrDelay(LADSPA_Handle instance, unsigned long sample_count) { + LcrDelay *plugin_data = (LcrDelay *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* L delay (ms) (float value) */ + const LADSPA_Data ldel = *(plugin_data->ldel); + + /* L level (float value) */ + const LADSPA_Data llev = *(plugin_data->llev); + + /* C delay (ms) (float value) */ + const LADSPA_Data cdel = *(plugin_data->cdel); + + /* C level (float value) */ + const LADSPA_Data clev = *(plugin_data->clev); + + /* R delay (ms) (float value) */ + const LADSPA_Data rdel = *(plugin_data->rdel); + + /* R level (float value) */ + const LADSPA_Data rlev = *(plugin_data->rlev); + + /* Feedback (float value) */ + const LADSPA_Data feedback = *(plugin_data->feedback); + + /* High damp (%) (float value) */ + const LADSPA_Data high_d = *(plugin_data->high_d); + + /* Low damp (%) (float value) */ + const LADSPA_Data low_d = *(plugin_data->low_d); + + /* Spread (float value) */ + const LADSPA_Data spread = *(plugin_data->spread); + + /* Dry/Wet level (float value) */ + const LADSPA_Data wet = *(plugin_data->wet); + + /* L input (array of floats of length sample_count) */ + const LADSPA_Data * const in_l = plugin_data->in_l; + + /* R input (array of floats of length sample_count) */ + const LADSPA_Data * const in_r = plugin_data->in_r; + + /* L output (array of floats of length sample_count) */ + LADSPA_Data * const out_l = plugin_data->out_l; + + /* R output (array of floats of length sample_count) */ + LADSPA_Data * const out_r = plugin_data->out_r; + LADSPA_Data * buffer = plugin_data->buffer; + unsigned int buffer_mask = plugin_data->buffer_mask; + unsigned int buffer_pos = plugin_data->buffer_pos; + biquad * filters = plugin_data->filters; + float fs = plugin_data->fs; + float last_cd = plugin_data->last_cd; + float last_cl = plugin_data->last_cl; + float last_ld = plugin_data->last_ld; + float last_ll = plugin_data->last_ll; + float last_rd = plugin_data->last_rd; + float last_rl = plugin_data->last_rl; + +#line 58 "lcr_delay_1436.xml" + unsigned long pos; + const float sc_r = 1.0f / (float)sample_count; + const float spr_t = 0.5f + spread * 0.01f; + const float spr_o = 0.5f - spread * 0.01f; + float fb = feedback * 0.01f; + float ll, cl, rl, ld, cd, rd; + float ll_d, cl_d, rl_d, ld_d, cd_d, rd_d; + float left, right; + float fbs; /* Feedback signal */ + + if (fb < -0.99f) { + fb = -0.99f; + } else if (fb > 0.99f) { + fb = 0.99f; + } + + ls_set_params(filters, fs * 0.0001f * powf(2.0f, low_d * 0.12f), + -0.5f * low_d, 0.5f, fs); + hs_set_params(filters + 1, fs * (0.41f - 0.0001f * + powf(2.0f, high_d * 0.12f)), -70.0f, 0.9f, fs); + + ll = last_ll; /* Start value of Left Level */ + ll_d = (llev * 0.01f - last_ll) * sc_r; /* Delta for Left Level */ + cl = last_cl; + cl_d = (clev * 0.01f - last_cl) * sc_r; + rl = last_rl; + rl_d = (rlev * 0.01f - last_rl) * sc_r; + + ld = last_ld; + ld_d = (ldel * fs * 0.001f - last_ld) * sc_r; + cd = last_cd; + cd_d = (cdel * fs * 0.001f - last_cd) * sc_r; + rd = last_rd; + rd_d = (rdel * fs * 0.001f - last_rd) * sc_r; + + for (pos = 0; pos < sample_count; pos++) { + /* Increment linear interpolators */ + ll += ll_d; + rl += rl_d; + cl += cl_d; + ld += ld_d; + rd += rd_d; + cd += cd_d; + + /* Write input into delay line */ + buffer[buffer_pos] = in_l[pos] + in_r[pos]; + /* Add feedback, must be done afterwards for case where C delay = 0 */ + fbs = buffer[(buffer_pos - f_round(cd)) & buffer_mask] * fb; + fbs = flush_to_zero(fbs); + fbs = biquad_run(filters, fbs); + fbs = biquad_run(filters + 1, fbs); + buffer[buffer_pos] += fbs; + + /* Outputs from left and right delay beffers + centre mix */ + left = buffer[(buffer_pos - f_round(ld)) & buffer_mask] * ll + + buffer[(buffer_pos - f_round(cd)) & buffer_mask] * cl; + right = buffer[(buffer_pos - f_round(rd)) & buffer_mask] * rl + + buffer[(buffer_pos - f_round(cd)) & buffer_mask] * cl; + + /* Left and right channel outs */ + buffer_write(out_l[pos], in_l[pos] * (1.0f - wet) + + (left * spr_t + right * spr_o) * wet); + buffer_write(out_r[pos], in_r[pos] * (1.0f - wet) + + (left * spr_o + right * spr_t) * wet); + + buffer_pos = (buffer_pos + 1) & buffer_mask; + } + + plugin_data->last_ll = ll; + plugin_data->last_cl = cl; + plugin_data->last_rl = rl; + plugin_data->last_ld = ld; + plugin_data->last_cd = cd; + plugin_data->last_rd = rd; + plugin_data->buffer_pos = buffer_pos; +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + lcrDelayDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (lcrDelayDescriptor) { + lcrDelayDescriptor->UniqueID = 1436; + lcrDelayDescriptor->Label = "lcrDelay"; + lcrDelayDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + lcrDelayDescriptor->Name = + D_("L/C/R Delay"); + lcrDelayDescriptor->Maker = + "Steve Harris "; + lcrDelayDescriptor->Copyright = + "GPL"; + lcrDelayDescriptor->PortCount = 15; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(15, + sizeof(LADSPA_PortDescriptor)); + lcrDelayDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(15, + sizeof(LADSPA_PortRangeHint)); + lcrDelayDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(15, sizeof(char*)); + lcrDelayDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for L delay (ms) */ + port_descriptors[LCRDELAY_LDEL] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[LCRDELAY_LDEL] = + D_("L delay (ms)"); + port_range_hints[LCRDELAY_LDEL].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_LOW; + port_range_hints[LCRDELAY_LDEL].LowerBound = 0; + port_range_hints[LCRDELAY_LDEL].UpperBound = 2700; + + /* Parameters for L level */ + port_descriptors[LCRDELAY_LLEV] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[LCRDELAY_LLEV] = + D_("L level"); + port_range_hints[LCRDELAY_LLEV].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MIDDLE; + port_range_hints[LCRDELAY_LLEV].LowerBound = 0; + port_range_hints[LCRDELAY_LLEV].UpperBound = 50; + + /* Parameters for C delay (ms) */ + port_descriptors[LCRDELAY_CDEL] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[LCRDELAY_CDEL] = + D_("C delay (ms)"); + port_range_hints[LCRDELAY_CDEL].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_LOW; + port_range_hints[LCRDELAY_CDEL].LowerBound = 0; + port_range_hints[LCRDELAY_CDEL].UpperBound = 2700; + + /* Parameters for C level */ + port_descriptors[LCRDELAY_CLEV] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[LCRDELAY_CLEV] = + D_("C level"); + port_range_hints[LCRDELAY_CLEV].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MIDDLE; + port_range_hints[LCRDELAY_CLEV].LowerBound = 0; + port_range_hints[LCRDELAY_CLEV].UpperBound = 50; + + /* Parameters for R delay (ms) */ + port_descriptors[LCRDELAY_RDEL] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[LCRDELAY_RDEL] = + D_("R delay (ms)"); + port_range_hints[LCRDELAY_RDEL].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_LOW; + port_range_hints[LCRDELAY_RDEL].LowerBound = 0; + port_range_hints[LCRDELAY_RDEL].UpperBound = 2700; + + /* Parameters for R level */ + port_descriptors[LCRDELAY_RLEV] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[LCRDELAY_RLEV] = + D_("R level"); + port_range_hints[LCRDELAY_RLEV].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MIDDLE; + port_range_hints[LCRDELAY_RLEV].LowerBound = 0; + port_range_hints[LCRDELAY_RLEV].UpperBound = 50; + + /* Parameters for Feedback */ + port_descriptors[LCRDELAY_FEEDBACK] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[LCRDELAY_FEEDBACK] = + D_("Feedback"); + port_range_hints[LCRDELAY_FEEDBACK].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[LCRDELAY_FEEDBACK].LowerBound = -100; + port_range_hints[LCRDELAY_FEEDBACK].UpperBound = 100; + + /* Parameters for High damp (%) */ + port_descriptors[LCRDELAY_HIGH_D] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[LCRDELAY_HIGH_D] = + D_("High damp (%)"); + port_range_hints[LCRDELAY_HIGH_D].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MIDDLE; + port_range_hints[LCRDELAY_HIGH_D].LowerBound = 0; + port_range_hints[LCRDELAY_HIGH_D].UpperBound = 100; + + /* Parameters for Low damp (%) */ + port_descriptors[LCRDELAY_LOW_D] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[LCRDELAY_LOW_D] = + D_("Low damp (%)"); + port_range_hints[LCRDELAY_LOW_D].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MIDDLE; + port_range_hints[LCRDELAY_LOW_D].LowerBound = 0; + port_range_hints[LCRDELAY_LOW_D].UpperBound = 100; + + /* Parameters for Spread */ + port_descriptors[LCRDELAY_SPREAD] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[LCRDELAY_SPREAD] = + D_("Spread"); + port_range_hints[LCRDELAY_SPREAD].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MIDDLE; + port_range_hints[LCRDELAY_SPREAD].LowerBound = 0; + port_range_hints[LCRDELAY_SPREAD].UpperBound = 50; + + /* Parameters for Dry/Wet level */ + port_descriptors[LCRDELAY_WET] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[LCRDELAY_WET] = + D_("Dry/Wet level"); + port_range_hints[LCRDELAY_WET].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[LCRDELAY_WET].LowerBound = 0; + port_range_hints[LCRDELAY_WET].UpperBound = 1; + + /* Parameters for L input */ + port_descriptors[LCRDELAY_IN_L] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[LCRDELAY_IN_L] = + D_("L input"); + port_range_hints[LCRDELAY_IN_L].HintDescriptor = 0; + + /* Parameters for R input */ + port_descriptors[LCRDELAY_IN_R] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[LCRDELAY_IN_R] = + D_("R input"); + port_range_hints[LCRDELAY_IN_R].HintDescriptor = 0; + + /* Parameters for L output */ + port_descriptors[LCRDELAY_OUT_L] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[LCRDELAY_OUT_L] = + D_("L output"); + port_range_hints[LCRDELAY_OUT_L].HintDescriptor = 0; + + /* Parameters for R output */ + port_descriptors[LCRDELAY_OUT_R] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[LCRDELAY_OUT_R] = + D_("R output"); + port_range_hints[LCRDELAY_OUT_R].HintDescriptor = 0; + + lcrDelayDescriptor->activate = activateLcrDelay; + lcrDelayDescriptor->cleanup = cleanupLcrDelay; + lcrDelayDescriptor->connect_port = connectPortLcrDelay; + lcrDelayDescriptor->deactivate = NULL; + lcrDelayDescriptor->instantiate = instantiateLcrDelay; + lcrDelayDescriptor->run = runLcrDelay; + lcrDelayDescriptor->run_adding = runAddingLcrDelay; + lcrDelayDescriptor->set_run_adding_gain = setRunAddingGainLcrDelay; + } +} + +void _fini() { + if (lcrDelayDescriptor) { + free((LADSPA_PortDescriptor *)lcrDelayDescriptor->PortDescriptors); + free((char **)lcrDelayDescriptor->PortNames); + free((LADSPA_PortRangeHint *)lcrDelayDescriptor->PortRangeHints); + free(lcrDelayDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/lowpass_iir_1891.c b/plugins/ladspa_effect/swh/lowpass_iir_1891.c new file mode 100644 index 000000000..2538e9d5f --- /dev/null +++ b/plugins/ladspa_effect/swh/lowpass_iir_1891.c @@ -0,0 +1,298 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + +#line 9 "lowpass_iir_1891.xml" + +#include "config.h" +#include "util/iir.h" +#include "ladspa-util.h" + +#define LOWPASS_IIR_CUTOFF 0 +#define LOWPASS_IIR_STAGES 1 +#define LOWPASS_IIR_INPUT 2 +#define LOWPASS_IIR_OUTPUT 3 + +static LADSPA_Descriptor *lowpass_iirDescriptor = NULL; + +typedef struct { + LADSPA_Data *cutoff; + LADSPA_Data *stages; + LADSPA_Data *input; + LADSPA_Data *output; + iir_stage_t* gt; + iirf_t* iirf; + long sample_rate; + LADSPA_Data run_adding_gain; +} Lowpass_iir; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return lowpass_iirDescriptor; + default: + return NULL; + } +} + +static void activateLowpass_iir(LADSPA_Handle instance) { + Lowpass_iir *plugin_data = (Lowpass_iir *)instance; + iir_stage_t*gt = plugin_data->gt; + iirf_t*iirf = plugin_data->iirf; + long sample_rate = plugin_data->sample_rate; +#line 33 "lowpass_iir_1891.xml" + + gt = init_iir_stage(IIR_STAGE_LOWPASS,10,3,2); + iirf = init_iirf_t(gt); + chebyshev(iirf, gt, 2*CLAMP(f_round(*(plugin_data->stages)),1,10), IIR_STAGE_LOWPASS, + *(plugin_data->cutoff)/(float)sample_rate, 0.5f); + plugin_data->gt = gt; + plugin_data->iirf = iirf; + plugin_data->sample_rate = sample_rate; + +} + +static void cleanupLowpass_iir(LADSPA_Handle instance) { +#line 40 "lowpass_iir_1891.xml" + Lowpass_iir *plugin_data = (Lowpass_iir *)instance; + free_iirf_t(plugin_data->iirf, plugin_data->gt); + free_iir_stage(plugin_data->gt); + free(instance); +} + +static void connectPortLowpass_iir( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + Lowpass_iir *plugin; + + plugin = (Lowpass_iir *)instance; + switch (port) { + case LOWPASS_IIR_CUTOFF: + plugin->cutoff = data; + break; + case LOWPASS_IIR_STAGES: + plugin->stages = data; + break; + case LOWPASS_IIR_INPUT: + plugin->input = data; + break; + case LOWPASS_IIR_OUTPUT: + plugin->output = data; + break; + } +} + +static LADSPA_Handle instantiateLowpass_iir( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + Lowpass_iir *plugin_data = (Lowpass_iir *)malloc(sizeof(Lowpass_iir)); + iir_stage_t*gt = NULL; + iirf_t*iirf = NULL; + long sample_rate; + +#line 25 "lowpass_iir_1891.xml" + sample_rate = s_rate; + + plugin_data->gt = gt; + plugin_data->iirf = iirf; + plugin_data->sample_rate = sample_rate; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runLowpass_iir(LADSPA_Handle instance, unsigned long sample_count) { + Lowpass_iir *plugin_data = (Lowpass_iir *)instance; + + /* Cutoff Frequency (float value) */ + const LADSPA_Data cutoff = *(plugin_data->cutoff); + + /* Stages(2 poles per stage) (float value) */ + const LADSPA_Data stages = *(plugin_data->stages); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + iir_stage_t* gt = plugin_data->gt; + iirf_t* iirf = plugin_data->iirf; + long sample_rate = plugin_data->sample_rate; + +#line 28 "lowpass_iir_1891.xml" + chebyshev(iirf, gt, 2*CLAMP((int)stages,1,10), IIR_STAGE_LOWPASS, cutoff/(float)sample_rate, 0.5f); + iir_process_buffer_ns_5(iirf, gt, input, output, sample_count,RUN_ADDING); +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainLowpass_iir(LADSPA_Handle instance, LADSPA_Data gain) { + ((Lowpass_iir *)instance)->run_adding_gain = gain; +} + +static void runAddingLowpass_iir(LADSPA_Handle instance, unsigned long sample_count) { + Lowpass_iir *plugin_data = (Lowpass_iir *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Cutoff Frequency (float value) */ + const LADSPA_Data cutoff = *(plugin_data->cutoff); + + /* Stages(2 poles per stage) (float value) */ + const LADSPA_Data stages = *(plugin_data->stages); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + iir_stage_t* gt = plugin_data->gt; + iirf_t* iirf = plugin_data->iirf; + long sample_rate = plugin_data->sample_rate; + +#line 28 "lowpass_iir_1891.xml" + chebyshev(iirf, gt, 2*CLAMP((int)stages,1,10), IIR_STAGE_LOWPASS, cutoff/(float)sample_rate, 0.5f); + iir_process_buffer_ns_5(iirf, gt, input, output, sample_count,RUN_ADDING); +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + lowpass_iirDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (lowpass_iirDescriptor) { + lowpass_iirDescriptor->UniqueID = 1891; + lowpass_iirDescriptor->Label = "lowpass_iir"; + lowpass_iirDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + lowpass_iirDescriptor->Name = + D_("Glame Lowpass Filter"); + lowpass_iirDescriptor->Maker = + "Alexander Ehlert "; + lowpass_iirDescriptor->Copyright = + "GPL"; + lowpass_iirDescriptor->PortCount = 4; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(4, + sizeof(LADSPA_PortDescriptor)); + lowpass_iirDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(4, + sizeof(LADSPA_PortRangeHint)); + lowpass_iirDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(4, sizeof(char*)); + lowpass_iirDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Cutoff Frequency */ + port_descriptors[LOWPASS_IIR_CUTOFF] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[LOWPASS_IIR_CUTOFF] = + D_("Cutoff Frequency"); + port_range_hints[LOWPASS_IIR_CUTOFF].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_HIGH | LADSPA_HINT_SAMPLE_RATE | LADSPA_HINT_LOGARITHMIC; + port_range_hints[LOWPASS_IIR_CUTOFF].LowerBound = 0.0001; + port_range_hints[LOWPASS_IIR_CUTOFF].UpperBound = 0.45; + + /* Parameters for Stages(2 poles per stage) */ + port_descriptors[LOWPASS_IIR_STAGES] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[LOWPASS_IIR_STAGES] = + D_("Stages(2 poles per stage)"); + port_range_hints[LOWPASS_IIR_STAGES].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_1 | LADSPA_HINT_INTEGER; + port_range_hints[LOWPASS_IIR_STAGES].LowerBound = 1.0; + port_range_hints[LOWPASS_IIR_STAGES].UpperBound = 10.0; + + /* Parameters for Input */ + port_descriptors[LOWPASS_IIR_INPUT] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[LOWPASS_IIR_INPUT] = + D_("Input"); + port_range_hints[LOWPASS_IIR_INPUT].HintDescriptor = 0; + + /* Parameters for Output */ + port_descriptors[LOWPASS_IIR_OUTPUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[LOWPASS_IIR_OUTPUT] = + D_("Output"); + port_range_hints[LOWPASS_IIR_OUTPUT].HintDescriptor = 0; + + lowpass_iirDescriptor->activate = activateLowpass_iir; + lowpass_iirDescriptor->cleanup = cleanupLowpass_iir; + lowpass_iirDescriptor->connect_port = connectPortLowpass_iir; + lowpass_iirDescriptor->deactivate = NULL; + lowpass_iirDescriptor->instantiate = instantiateLowpass_iir; + lowpass_iirDescriptor->run = runLowpass_iir; + lowpass_iirDescriptor->run_adding = runAddingLowpass_iir; + lowpass_iirDescriptor->set_run_adding_gain = setRunAddingGainLowpass_iir; + } +} + +void _fini() { + if (lowpass_iirDescriptor) { + free((LADSPA_PortDescriptor *)lowpass_iirDescriptor->PortDescriptors); + free((char **)lowpass_iirDescriptor->PortNames); + free((LADSPA_PortRangeHint *)lowpass_iirDescriptor->PortRangeHints); + free(lowpass_iirDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/ls_filter_1908.c b/plugins/ladspa_effect/swh/ls_filter_1908.c new file mode 100644 index 000000000..6dc3ef2e8 --- /dev/null +++ b/plugins/ladspa_effect/swh/ls_filter_1908.c @@ -0,0 +1,319 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + +#line 10 "ls_filter_1908.xml" + +#include "ladspa-util.h" +#include "util/ls_filter.h" + +#define LSFILTER_TYPE 0 +#define LSFILTER_CUTOFF 1 +#define LSFILTER_RESONANCE 2 +#define LSFILTER_INPUT 3 +#define LSFILTER_OUTPUT 4 + +static LADSPA_Descriptor *lsFilterDescriptor = NULL; + +typedef struct { + LADSPA_Data *type; + LADSPA_Data *cutoff; + LADSPA_Data *resonance; + LADSPA_Data *input; + LADSPA_Data *output; + ls_filt * filt; + float fs; + LADSPA_Data run_adding_gain; +} LsFilter; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return lsFilterDescriptor; + default: + return NULL; + } +} + +static void activateLsFilter(LADSPA_Handle instance) { + LsFilter *plugin_data = (LsFilter *)instance; + ls_filt *filt = plugin_data->filt; + float fs = plugin_data->fs; +#line 26 "ls_filter_1908.xml" + ls_filt_init(filt); + plugin_data->filt = filt; + plugin_data->fs = fs; + +} + +static void cleanupLsFilter(LADSPA_Handle instance) { +#line 42 "ls_filter_1908.xml" + LsFilter *plugin_data = (LsFilter *)instance; + free(plugin_data->filt); + free(instance); +} + +static void connectPortLsFilter( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + LsFilter *plugin; + + plugin = (LsFilter *)instance; + switch (port) { + case LSFILTER_TYPE: + plugin->type = data; + break; + case LSFILTER_CUTOFF: + plugin->cutoff = data; + break; + case LSFILTER_RESONANCE: + plugin->resonance = data; + break; + case LSFILTER_INPUT: + plugin->input = data; + break; + case LSFILTER_OUTPUT: + plugin->output = data; + break; + } +} + +static LADSPA_Handle instantiateLsFilter( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + LsFilter *plugin_data = (LsFilter *)malloc(sizeof(LsFilter)); + ls_filt *filt = NULL; + float fs; + +#line 21 "ls_filter_1908.xml" + filt = malloc(sizeof(ls_filt)); + fs = s_rate; + + plugin_data->filt = filt; + plugin_data->fs = fs; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runLsFilter(LADSPA_Handle instance, unsigned long sample_count) { + LsFilter *plugin_data = (LsFilter *)instance; + + /* Filter type (0=LP, 1=BP, 2=HP) (float value) */ + const LADSPA_Data type = *(plugin_data->type); + + /* Cutoff frequency (Hz) (float value) */ + const LADSPA_Data cutoff = *(plugin_data->cutoff); + + /* Resonance (float value) */ + const LADSPA_Data resonance = *(plugin_data->resonance); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + ls_filt * filt = plugin_data->filt; + float fs = plugin_data->fs; + +#line 30 "ls_filter_1908.xml" + unsigned long pos; + const ls_filt_type t = (ls_filt_type)f_round(type); + + ls_filt_setup(filt, t, cutoff, resonance, fs); + + for (pos = 0; pos < sample_count; pos++) { + buffer_write(output[pos], ls_filt_run(filt, input[pos])); + } +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainLsFilter(LADSPA_Handle instance, LADSPA_Data gain) { + ((LsFilter *)instance)->run_adding_gain = gain; +} + +static void runAddingLsFilter(LADSPA_Handle instance, unsigned long sample_count) { + LsFilter *plugin_data = (LsFilter *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Filter type (0=LP, 1=BP, 2=HP) (float value) */ + const LADSPA_Data type = *(plugin_data->type); + + /* Cutoff frequency (Hz) (float value) */ + const LADSPA_Data cutoff = *(plugin_data->cutoff); + + /* Resonance (float value) */ + const LADSPA_Data resonance = *(plugin_data->resonance); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + ls_filt * filt = plugin_data->filt; + float fs = plugin_data->fs; + +#line 30 "ls_filter_1908.xml" + unsigned long pos; + const ls_filt_type t = (ls_filt_type)f_round(type); + + ls_filt_setup(filt, t, cutoff, resonance, fs); + + for (pos = 0; pos < sample_count; pos++) { + buffer_write(output[pos], ls_filt_run(filt, input[pos])); + } +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + lsFilterDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (lsFilterDescriptor) { + lsFilterDescriptor->UniqueID = 1908; + lsFilterDescriptor->Label = "lsFilter"; + lsFilterDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + lsFilterDescriptor->Name = + D_("LS Filter"); + lsFilterDescriptor->Maker = + "Steve Harris "; + lsFilterDescriptor->Copyright = + "GPL"; + lsFilterDescriptor->PortCount = 5; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(5, + sizeof(LADSPA_PortDescriptor)); + lsFilterDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(5, + sizeof(LADSPA_PortRangeHint)); + lsFilterDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(5, sizeof(char*)); + lsFilterDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Filter type (0=LP, 1=BP, 2=HP) */ + port_descriptors[LSFILTER_TYPE] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[LSFILTER_TYPE] = + D_("Filter type (0=LP, 1=BP, 2=HP)"); + port_range_hints[LSFILTER_TYPE].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0 | LADSPA_HINT_INTEGER; + port_range_hints[LSFILTER_TYPE].LowerBound = 0; + port_range_hints[LSFILTER_TYPE].UpperBound = 2; + + /* Parameters for Cutoff frequency (Hz) */ + port_descriptors[LSFILTER_CUTOFF] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[LSFILTER_CUTOFF] = + D_("Cutoff frequency (Hz)"); + port_range_hints[LSFILTER_CUTOFF].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MIDDLE | LADSPA_HINT_LOGARITHMIC | LADSPA_HINT_SAMPLE_RATE; + port_range_hints[LSFILTER_CUTOFF].LowerBound = 0.002; + port_range_hints[LSFILTER_CUTOFF].UpperBound = 0.5; + + /* Parameters for Resonance */ + port_descriptors[LSFILTER_RESONANCE] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[LSFILTER_RESONANCE] = + D_("Resonance"); + port_range_hints[LSFILTER_RESONANCE].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[LSFILTER_RESONANCE].LowerBound = 0.0; + port_range_hints[LSFILTER_RESONANCE].UpperBound = 1.0; + + /* Parameters for Input */ + port_descriptors[LSFILTER_INPUT] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[LSFILTER_INPUT] = + D_("Input"); + port_range_hints[LSFILTER_INPUT].HintDescriptor = 0; + + /* Parameters for Output */ + port_descriptors[LSFILTER_OUTPUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[LSFILTER_OUTPUT] = + D_("Output"); + port_range_hints[LSFILTER_OUTPUT].HintDescriptor = 0; + + lsFilterDescriptor->activate = activateLsFilter; + lsFilterDescriptor->cleanup = cleanupLsFilter; + lsFilterDescriptor->connect_port = connectPortLsFilter; + lsFilterDescriptor->deactivate = NULL; + lsFilterDescriptor->instantiate = instantiateLsFilter; + lsFilterDescriptor->run = runLsFilter; + lsFilterDescriptor->run_adding = runAddingLsFilter; + lsFilterDescriptor->set_run_adding_gain = setRunAddingGainLsFilter; + } +} + +void _fini() { + if (lsFilterDescriptor) { + free((LADSPA_PortDescriptor *)lsFilterDescriptor->PortDescriptors); + free((char **)lsFilterDescriptor->PortNames); + free((LADSPA_PortRangeHint *)lsFilterDescriptor->PortRangeHints); + free(lsFilterDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/matrix_ms_st_1421.c b/plugins/ladspa_effect/swh/matrix_ms_st_1421.c new file mode 100644 index 000000000..dd153866e --- /dev/null +++ b/plugins/ladspa_effect/swh/matrix_ms_st_1421.c @@ -0,0 +1,277 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + + +#define MATRIXMSST_WIDTH 0 +#define MATRIXMSST_MID 1 +#define MATRIXMSST_SIDE 2 +#define MATRIXMSST_LEFT 3 +#define MATRIXMSST_RIGHT 4 + +static LADSPA_Descriptor *matrixMSStDescriptor = NULL; + +typedef struct { + LADSPA_Data *width; + LADSPA_Data *mid; + LADSPA_Data *side; + LADSPA_Data *left; + LADSPA_Data *right; + LADSPA_Data run_adding_gain; +} MatrixMSSt; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return matrixMSStDescriptor; + default: + return NULL; + } +} + +static void cleanupMatrixMSSt(LADSPA_Handle instance) { + free(instance); +} + +static void connectPortMatrixMSSt( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + MatrixMSSt *plugin; + + plugin = (MatrixMSSt *)instance; + switch (port) { + case MATRIXMSST_WIDTH: + plugin->width = data; + break; + case MATRIXMSST_MID: + plugin->mid = data; + break; + case MATRIXMSST_SIDE: + plugin->side = data; + break; + case MATRIXMSST_LEFT: + plugin->left = data; + break; + case MATRIXMSST_RIGHT: + plugin->right = data; + break; + } +} + +static LADSPA_Handle instantiateMatrixMSSt( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + MatrixMSSt *plugin_data = (MatrixMSSt *)malloc(sizeof(MatrixMSSt)); + plugin_data->run_adding_gain = 1.0f; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runMatrixMSSt(LADSPA_Handle instance, unsigned long sample_count) { + MatrixMSSt *plugin_data = (MatrixMSSt *)instance; + + /* Width (float value) */ + const LADSPA_Data width = *(plugin_data->width); + + /* Mid (array of floats of length sample_count) */ + const LADSPA_Data * const mid = plugin_data->mid; + + /* Side (array of floats of length sample_count) */ + const LADSPA_Data * const side = plugin_data->side; + + /* Left (array of floats of length sample_count) */ + LADSPA_Data * const left = plugin_data->left; + + /* Right (array of floats of length sample_count) */ + LADSPA_Data * const right = plugin_data->right; + +#line 16 "matrix_ms_st_1421.xml" + unsigned long pos; + + for (pos = 0; pos < sample_count; pos++) { + buffer_write(left[pos], mid[pos] + side[pos] * width); + buffer_write(right[pos], mid[pos] - side[pos] * width); + } +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainMatrixMSSt(LADSPA_Handle instance, LADSPA_Data gain) { + ((MatrixMSSt *)instance)->run_adding_gain = gain; +} + +static void runAddingMatrixMSSt(LADSPA_Handle instance, unsigned long sample_count) { + MatrixMSSt *plugin_data = (MatrixMSSt *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Width (float value) */ + const LADSPA_Data width = *(plugin_data->width); + + /* Mid (array of floats of length sample_count) */ + const LADSPA_Data * const mid = plugin_data->mid; + + /* Side (array of floats of length sample_count) */ + const LADSPA_Data * const side = plugin_data->side; + + /* Left (array of floats of length sample_count) */ + LADSPA_Data * const left = plugin_data->left; + + /* Right (array of floats of length sample_count) */ + LADSPA_Data * const right = plugin_data->right; + +#line 16 "matrix_ms_st_1421.xml" + unsigned long pos; + + for (pos = 0; pos < sample_count; pos++) { + buffer_write(left[pos], mid[pos] + side[pos] * width); + buffer_write(right[pos], mid[pos] - side[pos] * width); + } +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + matrixMSStDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (matrixMSStDescriptor) { + matrixMSStDescriptor->UniqueID = 1421; + matrixMSStDescriptor->Label = "matrixMSSt"; + matrixMSStDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + matrixMSStDescriptor->Name = + D_("Matrix: MS to Stereo"); + matrixMSStDescriptor->Maker = + "Steve Harris "; + matrixMSStDescriptor->Copyright = + "GPL"; + matrixMSStDescriptor->PortCount = 5; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(5, + sizeof(LADSPA_PortDescriptor)); + matrixMSStDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(5, + sizeof(LADSPA_PortRangeHint)); + matrixMSStDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(5, sizeof(char*)); + matrixMSStDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Width */ + port_descriptors[MATRIXMSST_WIDTH] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[MATRIXMSST_WIDTH] = + D_("Width"); + port_range_hints[MATRIXMSST_WIDTH].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_1; + port_range_hints[MATRIXMSST_WIDTH].LowerBound = 0; + port_range_hints[MATRIXMSST_WIDTH].UpperBound = 2; + + /* Parameters for Mid */ + port_descriptors[MATRIXMSST_MID] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[MATRIXMSST_MID] = + D_("Mid"); + port_range_hints[MATRIXMSST_MID].HintDescriptor = 0; + + /* Parameters for Side */ + port_descriptors[MATRIXMSST_SIDE] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[MATRIXMSST_SIDE] = + D_("Side"); + port_range_hints[MATRIXMSST_SIDE].HintDescriptor = 0; + + /* Parameters for Left */ + port_descriptors[MATRIXMSST_LEFT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[MATRIXMSST_LEFT] = + D_("Left"); + port_range_hints[MATRIXMSST_LEFT].HintDescriptor = 0; + + /* Parameters for Right */ + port_descriptors[MATRIXMSST_RIGHT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[MATRIXMSST_RIGHT] = + D_("Right"); + port_range_hints[MATRIXMSST_RIGHT].HintDescriptor = 0; + + matrixMSStDescriptor->activate = NULL; + matrixMSStDescriptor->cleanup = cleanupMatrixMSSt; + matrixMSStDescriptor->connect_port = connectPortMatrixMSSt; + matrixMSStDescriptor->deactivate = NULL; + matrixMSStDescriptor->instantiate = instantiateMatrixMSSt; + matrixMSStDescriptor->run = runMatrixMSSt; + matrixMSStDescriptor->run_adding = runAddingMatrixMSSt; + matrixMSStDescriptor->set_run_adding_gain = setRunAddingGainMatrixMSSt; + } +} + +void _fini() { + if (matrixMSStDescriptor) { + free((LADSPA_PortDescriptor *)matrixMSStDescriptor->PortDescriptors); + free((char **)matrixMSStDescriptor->PortNames); + free((LADSPA_PortRangeHint *)matrixMSStDescriptor->PortRangeHints); + free(matrixMSStDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/matrix_spatialiser_1422.c b/plugins/ladspa_effect/swh/matrix_spatialiser_1422.c new file mode 100644 index 000000000..f041630b3 --- /dev/null +++ b/plugins/ladspa_effect/swh/matrix_spatialiser_1422.c @@ -0,0 +1,435 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + +#line 10 "matrix_spatialiser_1422.xml" + +/* + thanks to Steve Harris for walking me through my first plugin ! +*/ + +#include "ladspa-util.h" + +/* we use sin/cos panning and start at pi/4. this is the correction factor + to bring the signal back to unity gain in neutral position. + it should be 1/x : sin(x) = cos(x) (~1.41421...). but since we are using an + approximation of sin/cos, we take its equal gain point, which leads to 1.3333... +*/ +#define EQUALGAINPOINT_OFFSET 128.0f +#define EQUALGAINPOINT_TO_UNITY 4.0f / 3.0f + +#define BITSPERCYCLE 10 /* resolution of the width parameter for */ +#define BITSPERQUARTER (BITSPERCYCLE-2) /* one cycle (0-2pi) */ + +/* borrowed code: http://www.dspguru.com/comp.dsp/tricks/alg/sincos.htm + i'm using a constant of 0.75, which makes the calculations simpler and does + not yield discontinuities. + author: Olli Niemitalo (oniemita@mail.student.oulu.fi) +*/ +static inline void sin_cos_approx(int phasein, float *vsin, float *vcos) { + // Modulo phase into quarter, convert to float 0..1 + float modphase = (phasein & ((1<current_m_gain; + LADSPA_Data current_s_gain = plugin_data->current_s_gain; +#line 94 "matrix_spatialiser_1422.xml" + sin_cos_approx(EQUALGAINPOINT_OFFSET, ¤t_s_gain, ¤t_m_gain); + current_m_gain *= EQUALGAINPOINT_TO_UNITY; /* normalize the neutral */ + current_s_gain *= EQUALGAINPOINT_TO_UNITY; /* setting to unity gain. */ + plugin_data->current_m_gain = current_m_gain; + plugin_data->current_s_gain = current_s_gain; + +} + +static void cleanupMatrixSpatialiser(LADSPA_Handle instance) { + free(instance); +} + +static void connectPortMatrixSpatialiser( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + MatrixSpatialiser *plugin; + + plugin = (MatrixSpatialiser *)instance; + switch (port) { + case MATRIXSPATIALISER_I_LEFT: + plugin->i_left = data; + break; + case MATRIXSPATIALISER_I_RIGHT: + plugin->i_right = data; + break; + case MATRIXSPATIALISER_WIDTH: + plugin->width = data; + break; + case MATRIXSPATIALISER_O_LEFT: + plugin->o_left = data; + break; + case MATRIXSPATIALISER_O_RIGHT: + plugin->o_right = data; + break; + } +} + +static LADSPA_Handle instantiateMatrixSpatialiser( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + MatrixSpatialiser *plugin_data = (MatrixSpatialiser *)malloc(sizeof(MatrixSpatialiser)); + LADSPA_Data current_m_gain; + LADSPA_Data current_s_gain; + +#line 89 "matrix_spatialiser_1422.xml" + current_m_gain = 0.0f; + current_s_gain = 0.0f; + + plugin_data->current_m_gain = current_m_gain; + plugin_data->current_s_gain = current_s_gain; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runMatrixSpatialiser(LADSPA_Handle instance, unsigned long sample_count) { + MatrixSpatialiser *plugin_data = (MatrixSpatialiser *)instance; + + /* Input L (array of floats of length sample_count) */ + const LADSPA_Data * const i_left = plugin_data->i_left; + + /* Input R (array of floats of length sample_count) */ + const LADSPA_Data * const i_right = plugin_data->i_right; + + /* Width (float value) */ + const LADSPA_Data width = *(plugin_data->width); + + /* Output L (array of floats of length sample_count) */ + LADSPA_Data * const o_left = plugin_data->o_left; + + /* Output R (array of floats of length sample_count) */ + LADSPA_Data * const o_right = plugin_data->o_right; + LADSPA_Data current_m_gain = plugin_data->current_m_gain; + LADSPA_Data current_s_gain = plugin_data->current_s_gain; + +#line 100 "matrix_spatialiser_1422.xml" + unsigned long pos; + LADSPA_Data mid, side; + LADSPA_Data m_gain, s_gain; + int width_ = f_round(width + EQUALGAINPOINT_OFFSET); + + /* smoothen the gain changes. to spread the curve over the entire + buffer length (i.e.#sample_count samples), make lp dependent on + sample_count. + */ + const float lp = 7.0f / (float) sample_count; /* value found by experiment */ + const float lp_i = 1.0f - lp; + + /* do approximately the same as + s_gain = sin(width); m_gain = cos(width); + but a lot faster: + */ + sin_cos_approx(width_, &s_gain, &m_gain); + + m_gain *= EQUALGAINPOINT_TO_UNITY; /* normalize the neutral */ + s_gain *= EQUALGAINPOINT_TO_UNITY; /* setting to unity gain. */ + + #ifdef DEBUG + /* do a "hardware bypass" if width == 0 */ + /* no smoothing here */ + if (width_ == 128) { + for (pos = 0; pos < sample_count; pos++) { + buffer_write(o_left[pos], i_left[pos]); + buffer_write(o_right[pos], i_right[pos]); + } + } else + #endif + + for (pos = 0; pos < sample_count; pos++) { + current_m_gain = current_m_gain * lp_i + m_gain * lp; + current_s_gain = current_s_gain * lp_i + s_gain * lp; + mid = (i_left[pos] + i_right[pos]) * 0.5f * current_m_gain; + side = (i_left[pos] - i_right[pos]) * 0.5f * current_s_gain; + buffer_write(o_left[pos], mid + side); + buffer_write(o_right[pos], mid - side); + } + + plugin_data->current_m_gain = current_m_gain; + plugin_data->current_s_gain = current_s_gain; +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainMatrixSpatialiser(LADSPA_Handle instance, LADSPA_Data gain) { + ((MatrixSpatialiser *)instance)->run_adding_gain = gain; +} + +static void runAddingMatrixSpatialiser(LADSPA_Handle instance, unsigned long sample_count) { + MatrixSpatialiser *plugin_data = (MatrixSpatialiser *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Input L (array of floats of length sample_count) */ + const LADSPA_Data * const i_left = plugin_data->i_left; + + /* Input R (array of floats of length sample_count) */ + const LADSPA_Data * const i_right = plugin_data->i_right; + + /* Width (float value) */ + const LADSPA_Data width = *(plugin_data->width); + + /* Output L (array of floats of length sample_count) */ + LADSPA_Data * const o_left = plugin_data->o_left; + + /* Output R (array of floats of length sample_count) */ + LADSPA_Data * const o_right = plugin_data->o_right; + LADSPA_Data current_m_gain = plugin_data->current_m_gain; + LADSPA_Data current_s_gain = plugin_data->current_s_gain; + +#line 100 "matrix_spatialiser_1422.xml" + unsigned long pos; + LADSPA_Data mid, side; + LADSPA_Data m_gain, s_gain; + int width_ = f_round(width + EQUALGAINPOINT_OFFSET); + + /* smoothen the gain changes. to spread the curve over the entire + buffer length (i.e.#sample_count samples), make lp dependent on + sample_count. + */ + const float lp = 7.0f / (float) sample_count; /* value found by experiment */ + const float lp_i = 1.0f - lp; + + /* do approximately the same as + s_gain = sin(width); m_gain = cos(width); + but a lot faster: + */ + sin_cos_approx(width_, &s_gain, &m_gain); + + m_gain *= EQUALGAINPOINT_TO_UNITY; /* normalize the neutral */ + s_gain *= EQUALGAINPOINT_TO_UNITY; /* setting to unity gain. */ + + #ifdef DEBUG + /* do a "hardware bypass" if width == 0 */ + /* no smoothing here */ + if (width_ == 128) { + for (pos = 0; pos < sample_count; pos++) { + buffer_write(o_left[pos], i_left[pos]); + buffer_write(o_right[pos], i_right[pos]); + } + } else + #endif + + for (pos = 0; pos < sample_count; pos++) { + current_m_gain = current_m_gain * lp_i + m_gain * lp; + current_s_gain = current_s_gain * lp_i + s_gain * lp; + mid = (i_left[pos] + i_right[pos]) * 0.5f * current_m_gain; + side = (i_left[pos] - i_right[pos]) * 0.5f * current_s_gain; + buffer_write(o_left[pos], mid + side); + buffer_write(o_right[pos], mid - side); + } + + plugin_data->current_m_gain = current_m_gain; + plugin_data->current_s_gain = current_s_gain; +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + matrixSpatialiserDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (matrixSpatialiserDescriptor) { + matrixSpatialiserDescriptor->UniqueID = 1422; + matrixSpatialiserDescriptor->Label = "matrixSpatialiser"; + matrixSpatialiserDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + matrixSpatialiserDescriptor->Name = + D_("Matrix Spatialiser"); + matrixSpatialiserDescriptor->Maker = + "Joern Nettingsmeier "; + matrixSpatialiserDescriptor->Copyright = + "GPL"; + matrixSpatialiserDescriptor->PortCount = 5; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(5, + sizeof(LADSPA_PortDescriptor)); + matrixSpatialiserDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(5, + sizeof(LADSPA_PortRangeHint)); + matrixSpatialiserDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(5, sizeof(char*)); + matrixSpatialiserDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Input L */ + port_descriptors[MATRIXSPATIALISER_I_LEFT] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[MATRIXSPATIALISER_I_LEFT] = + D_("Input L"); + port_range_hints[MATRIXSPATIALISER_I_LEFT].HintDescriptor = 0; + + /* Parameters for Input R */ + port_descriptors[MATRIXSPATIALISER_I_RIGHT] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[MATRIXSPATIALISER_I_RIGHT] = + D_("Input R"); + port_range_hints[MATRIXSPATIALISER_I_RIGHT].HintDescriptor = 0; + + /* Parameters for Width */ + port_descriptors[MATRIXSPATIALISER_WIDTH] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[MATRIXSPATIALISER_WIDTH] = + D_("Width"); + port_range_hints[MATRIXSPATIALISER_WIDTH].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_INTEGER | LADSPA_HINT_DEFAULT_0; + port_range_hints[MATRIXSPATIALISER_WIDTH].LowerBound = -512; + port_range_hints[MATRIXSPATIALISER_WIDTH].UpperBound = 512; + + /* Parameters for Output L */ + port_descriptors[MATRIXSPATIALISER_O_LEFT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[MATRIXSPATIALISER_O_LEFT] = + D_("Output L"); + port_range_hints[MATRIXSPATIALISER_O_LEFT].HintDescriptor = 0; + + /* Parameters for Output R */ + port_descriptors[MATRIXSPATIALISER_O_RIGHT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[MATRIXSPATIALISER_O_RIGHT] = + D_("Output R"); + port_range_hints[MATRIXSPATIALISER_O_RIGHT].HintDescriptor = 0; + + matrixSpatialiserDescriptor->activate = activateMatrixSpatialiser; + matrixSpatialiserDescriptor->cleanup = cleanupMatrixSpatialiser; + matrixSpatialiserDescriptor->connect_port = connectPortMatrixSpatialiser; + matrixSpatialiserDescriptor->deactivate = NULL; + matrixSpatialiserDescriptor->instantiate = instantiateMatrixSpatialiser; + matrixSpatialiserDescriptor->run = runMatrixSpatialiser; + matrixSpatialiserDescriptor->run_adding = runAddingMatrixSpatialiser; + matrixSpatialiserDescriptor->set_run_adding_gain = setRunAddingGainMatrixSpatialiser; + } +} + +void _fini() { + if (matrixSpatialiserDescriptor) { + free((LADSPA_PortDescriptor *)matrixSpatialiserDescriptor->PortDescriptors); + free((char **)matrixSpatialiserDescriptor->PortNames); + free((LADSPA_PortRangeHint *)matrixSpatialiserDescriptor->PortRangeHints); + free(matrixSpatialiserDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/matrix_st_ms_1420.c b/plugins/ladspa_effect/swh/matrix_st_ms_1420.c new file mode 100644 index 000000000..c41c76210 --- /dev/null +++ b/plugins/ladspa_effect/swh/matrix_st_ms_1420.c @@ -0,0 +1,256 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + + +#define MATRIXSTMS_LEFT 0 +#define MATRIXSTMS_RIGHT 1 +#define MATRIXSTMS_MID 2 +#define MATRIXSTMS_SIDE 3 + +static LADSPA_Descriptor *matrixStMSDescriptor = NULL; + +typedef struct { + LADSPA_Data *left; + LADSPA_Data *right; + LADSPA_Data *mid; + LADSPA_Data *side; + LADSPA_Data run_adding_gain; +} MatrixStMS; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return matrixStMSDescriptor; + default: + return NULL; + } +} + +static void cleanupMatrixStMS(LADSPA_Handle instance) { + free(instance); +} + +static void connectPortMatrixStMS( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + MatrixStMS *plugin; + + plugin = (MatrixStMS *)instance; + switch (port) { + case MATRIXSTMS_LEFT: + plugin->left = data; + break; + case MATRIXSTMS_RIGHT: + plugin->right = data; + break; + case MATRIXSTMS_MID: + plugin->mid = data; + break; + case MATRIXSTMS_SIDE: + plugin->side = data; + break; + } +} + +static LADSPA_Handle instantiateMatrixStMS( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + MatrixStMS *plugin_data = (MatrixStMS *)malloc(sizeof(MatrixStMS)); + plugin_data->run_adding_gain = 1.0f; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runMatrixStMS(LADSPA_Handle instance, unsigned long sample_count) { + MatrixStMS *plugin_data = (MatrixStMS *)instance; + + /* Left (array of floats of length sample_count) */ + const LADSPA_Data * const left = plugin_data->left; + + /* Right (array of floats of length sample_count) */ + const LADSPA_Data * const right = plugin_data->right; + + /* Mid (array of floats of length sample_count) */ + LADSPA_Data * const mid = plugin_data->mid; + + /* Side (array of floats of length sample_count) */ + LADSPA_Data * const side = plugin_data->side; + +#line 16 "matrix_st_ms_1420.xml" + unsigned long pos; + + for (pos = 0; pos < sample_count; pos++) { + buffer_write(mid[pos], (left[pos] + right[pos]) * 0.5); + buffer_write(side[pos], (left[pos] - right[pos]) * 0.5); + } +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainMatrixStMS(LADSPA_Handle instance, LADSPA_Data gain) { + ((MatrixStMS *)instance)->run_adding_gain = gain; +} + +static void runAddingMatrixStMS(LADSPA_Handle instance, unsigned long sample_count) { + MatrixStMS *plugin_data = (MatrixStMS *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Left (array of floats of length sample_count) */ + const LADSPA_Data * const left = plugin_data->left; + + /* Right (array of floats of length sample_count) */ + const LADSPA_Data * const right = plugin_data->right; + + /* Mid (array of floats of length sample_count) */ + LADSPA_Data * const mid = plugin_data->mid; + + /* Side (array of floats of length sample_count) */ + LADSPA_Data * const side = plugin_data->side; + +#line 16 "matrix_st_ms_1420.xml" + unsigned long pos; + + for (pos = 0; pos < sample_count; pos++) { + buffer_write(mid[pos], (left[pos] + right[pos]) * 0.5); + buffer_write(side[pos], (left[pos] - right[pos]) * 0.5); + } +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + matrixStMSDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (matrixStMSDescriptor) { + matrixStMSDescriptor->UniqueID = 1420; + matrixStMSDescriptor->Label = "matrixStMS"; + matrixStMSDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + matrixStMSDescriptor->Name = + D_("Matrix: Stereo to MS"); + matrixStMSDescriptor->Maker = + "Steve Harris "; + matrixStMSDescriptor->Copyright = + "GPL"; + matrixStMSDescriptor->PortCount = 4; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(4, + sizeof(LADSPA_PortDescriptor)); + matrixStMSDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(4, + sizeof(LADSPA_PortRangeHint)); + matrixStMSDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(4, sizeof(char*)); + matrixStMSDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Left */ + port_descriptors[MATRIXSTMS_LEFT] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[MATRIXSTMS_LEFT] = + D_("Left"); + port_range_hints[MATRIXSTMS_LEFT].HintDescriptor = 0; + + /* Parameters for Right */ + port_descriptors[MATRIXSTMS_RIGHT] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[MATRIXSTMS_RIGHT] = + D_("Right"); + port_range_hints[MATRIXSTMS_RIGHT].HintDescriptor = 0; + + /* Parameters for Mid */ + port_descriptors[MATRIXSTMS_MID] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[MATRIXSTMS_MID] = + D_("Mid"); + port_range_hints[MATRIXSTMS_MID].HintDescriptor = 0; + + /* Parameters for Side */ + port_descriptors[MATRIXSTMS_SIDE] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[MATRIXSTMS_SIDE] = + D_("Side"); + port_range_hints[MATRIXSTMS_SIDE].HintDescriptor = 0; + + matrixStMSDescriptor->activate = NULL; + matrixStMSDescriptor->cleanup = cleanupMatrixStMS; + matrixStMSDescriptor->connect_port = connectPortMatrixStMS; + matrixStMSDescriptor->deactivate = NULL; + matrixStMSDescriptor->instantiate = instantiateMatrixStMS; + matrixStMSDescriptor->run = runMatrixStMS; + matrixStMSDescriptor->run_adding = runAddingMatrixStMS; + matrixStMSDescriptor->set_run_adding_gain = setRunAddingGainMatrixStMS; + } +} + +void _fini() { + if (matrixStMSDescriptor) { + free((LADSPA_PortDescriptor *)matrixStMSDescriptor->PortDescriptors); + free((char **)matrixStMSDescriptor->PortNames); + free((LADSPA_PortRangeHint *)matrixStMSDescriptor->PortRangeHints); + free(matrixStMSDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/mod_delay_1419.c b/plugins/ladspa_effect/swh/mod_delay_1419.c new file mode 100644 index 000000000..67e1a0337 --- /dev/null +++ b/plugins/ladspa_effect/swh/mod_delay_1419.c @@ -0,0 +1,329 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + +#line 10 "mod_delay_1419.xml" + +#include "ladspa-util.h" + +#define MODDELAY_BASE 0 +#define MODDELAY_DELAY 1 +#define MODDELAY_INPUT 2 +#define MODDELAY_OUTPUT 3 + +static LADSPA_Descriptor *modDelayDescriptor = NULL; + +typedef struct { + LADSPA_Data *base; + LADSPA_Data *delay; + LADSPA_Data *input; + LADSPA_Data *output; + LADSPA_Data *buffer; + unsigned int buffer_mask; + float fs; + unsigned int write_ptr; + LADSPA_Data run_adding_gain; +} ModDelay; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return modDelayDescriptor; + default: + return NULL; + } +} + +static void activateModDelay(LADSPA_Handle instance) { + ModDelay *plugin_data = (ModDelay *)instance; + LADSPA_Data *buffer = plugin_data->buffer; + unsigned int buffer_mask = plugin_data->buffer_mask; + float fs = plugin_data->fs; + unsigned int write_ptr = plugin_data->write_ptr; +#line 33 "mod_delay_1419.xml" + memset(buffer, 0, buffer_mask + 1); + write_ptr = 0; + plugin_data->buffer = buffer; + plugin_data->buffer_mask = buffer_mask; + plugin_data->fs = fs; + plugin_data->write_ptr = write_ptr; + +} + +static void cleanupModDelay(LADSPA_Handle instance) { +#line 38 "mod_delay_1419.xml" + ModDelay *plugin_data = (ModDelay *)instance; + free(plugin_data->buffer); + free(instance); +} + +static void connectPortModDelay( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + ModDelay *plugin; + + plugin = (ModDelay *)instance; + switch (port) { + case MODDELAY_BASE: + plugin->base = data; + break; + case MODDELAY_DELAY: + plugin->delay = data; + break; + case MODDELAY_INPUT: + plugin->input = data; + break; + case MODDELAY_OUTPUT: + plugin->output = data; + break; + } +} + +static LADSPA_Handle instantiateModDelay( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + ModDelay *plugin_data = (ModDelay *)malloc(sizeof(ModDelay)); + LADSPA_Data *buffer = NULL; + unsigned int buffer_mask; + float fs; + unsigned int write_ptr; + +#line 21 "mod_delay_1419.xml" + unsigned int size = 32768; + + fs = s_rate; + while (size < 2.7f * fs) { + size *= 2; + } + buffer = calloc(size, sizeof(LADSPA_Data)); + buffer_mask = size - 1; + write_ptr = 0; + + plugin_data->buffer = buffer; + plugin_data->buffer_mask = buffer_mask; + plugin_data->fs = fs; + plugin_data->write_ptr = write_ptr; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runModDelay(LADSPA_Handle instance, unsigned long sample_count) { + ModDelay *plugin_data = (ModDelay *)instance; + + /* Base delay (s) (float value) */ + const LADSPA_Data base = *(plugin_data->base); + + /* Delay (s) (array of floats of length sample_count) */ + const LADSPA_Data * const delay = plugin_data->delay; + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + LADSPA_Data * buffer = plugin_data->buffer; + unsigned int buffer_mask = plugin_data->buffer_mask; + float fs = plugin_data->fs; + unsigned int write_ptr = plugin_data->write_ptr; + +#line 42 "mod_delay_1419.xml" + unsigned long pos; + + for (pos = 0; pos < sample_count; pos++) { + float tmp; + const float rpf = modff((base + delay[pos]) * fs, &tmp); + const int rp = write_ptr - 4 - f_round(tmp); + + buffer[write_ptr++] = input[pos]; + write_ptr &= buffer_mask; + + buffer_write(output[pos], cube_interp(rpf, buffer[(rp - 1) & buffer_mask], buffer[rp & buffer_mask], buffer[(rp + 1) & buffer_mask], buffer[(rp + 2) & buffer_mask])); + } + plugin_data->write_ptr = write_ptr; +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainModDelay(LADSPA_Handle instance, LADSPA_Data gain) { + ((ModDelay *)instance)->run_adding_gain = gain; +} + +static void runAddingModDelay(LADSPA_Handle instance, unsigned long sample_count) { + ModDelay *plugin_data = (ModDelay *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Base delay (s) (float value) */ + const LADSPA_Data base = *(plugin_data->base); + + /* Delay (s) (array of floats of length sample_count) */ + const LADSPA_Data * const delay = plugin_data->delay; + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + LADSPA_Data * buffer = plugin_data->buffer; + unsigned int buffer_mask = plugin_data->buffer_mask; + float fs = plugin_data->fs; + unsigned int write_ptr = plugin_data->write_ptr; + +#line 42 "mod_delay_1419.xml" + unsigned long pos; + + for (pos = 0; pos < sample_count; pos++) { + float tmp; + const float rpf = modff((base + delay[pos]) * fs, &tmp); + const int rp = write_ptr - 4 - f_round(tmp); + + buffer[write_ptr++] = input[pos]; + write_ptr &= buffer_mask; + + buffer_write(output[pos], cube_interp(rpf, buffer[(rp - 1) & buffer_mask], buffer[rp & buffer_mask], buffer[(rp + 1) & buffer_mask], buffer[(rp + 2) & buffer_mask])); + } + plugin_data->write_ptr = write_ptr; +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + modDelayDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (modDelayDescriptor) { + modDelayDescriptor->UniqueID = 1419; + modDelayDescriptor->Label = "modDelay"; + modDelayDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + modDelayDescriptor->Name = + D_("Modulatable delay"); + modDelayDescriptor->Maker = + "Steve Harris "; + modDelayDescriptor->Copyright = + "GPL"; + modDelayDescriptor->PortCount = 4; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(4, + sizeof(LADSPA_PortDescriptor)); + modDelayDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(4, + sizeof(LADSPA_PortRangeHint)); + modDelayDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(4, sizeof(char*)); + modDelayDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Base delay (s) */ + port_descriptors[MODDELAY_BASE] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[MODDELAY_BASE] = + D_("Base delay (s)"); + port_range_hints[MODDELAY_BASE].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MAXIMUM; + port_range_hints[MODDELAY_BASE].LowerBound = 0; + port_range_hints[MODDELAY_BASE].UpperBound = 1; + + /* Parameters for Delay (s) */ + port_descriptors[MODDELAY_DELAY] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[MODDELAY_DELAY] = + D_("Delay (s)"); + port_range_hints[MODDELAY_DELAY].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[MODDELAY_DELAY].LowerBound = 0; + port_range_hints[MODDELAY_DELAY].UpperBound = 1.7; + + /* Parameters for Input */ + port_descriptors[MODDELAY_INPUT] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[MODDELAY_INPUT] = + D_("Input"); + port_range_hints[MODDELAY_INPUT].HintDescriptor = 0; + + /* Parameters for Output */ + port_descriptors[MODDELAY_OUTPUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[MODDELAY_OUTPUT] = + D_("Output"); + port_range_hints[MODDELAY_OUTPUT].HintDescriptor = 0; + + modDelayDescriptor->activate = activateModDelay; + modDelayDescriptor->cleanup = cleanupModDelay; + modDelayDescriptor->connect_port = connectPortModDelay; + modDelayDescriptor->deactivate = NULL; + modDelayDescriptor->instantiate = instantiateModDelay; + modDelayDescriptor->run = runModDelay; + modDelayDescriptor->run_adding = runAddingModDelay; + modDelayDescriptor->set_run_adding_gain = setRunAddingGainModDelay; + } +} + +void _fini() { + if (modDelayDescriptor) { + free((LADSPA_PortDescriptor *)modDelayDescriptor->PortDescriptors); + free((char **)modDelayDescriptor->PortNames); + free((LADSPA_PortRangeHint *)modDelayDescriptor->PortRangeHints); + free(modDelayDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/multivoice_chorus_1201.c b/plugins/ladspa_effect/swh/multivoice_chorus_1201.c new file mode 100644 index 000000000..81f4ae8a2 --- /dev/null +++ b/plugins/ladspa_effect/swh/multivoice_chorus_1201.c @@ -0,0 +1,667 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + +#line 9 "multivoice_chorus_1201.xml" + +#include "ladspa-util.h" +#define MAX_LAWS 7 + +#define MULTIVOICECHORUS_VOICES 0 +#define MULTIVOICECHORUS_DELAY_BASE 1 +#define MULTIVOICECHORUS_VOICE_SPREAD 2 +#define MULTIVOICECHORUS_DETUNE 3 +#define MULTIVOICECHORUS_LAW_FREQ 4 +#define MULTIVOICECHORUS_ATTENDB 5 +#define MULTIVOICECHORUS_INPUT 6 +#define MULTIVOICECHORUS_OUTPUT 7 + +static LADSPA_Descriptor *multivoiceChorusDescriptor = NULL; + +typedef struct { + LADSPA_Data *voices; + LADSPA_Data *delay_base; + LADSPA_Data *voice_spread; + LADSPA_Data *detune; + LADSPA_Data *law_freq; + LADSPA_Data *attendb; + LADSPA_Data *input; + LADSPA_Data *output; + long count; + unsigned int delay_mask; + unsigned int delay_pos; + unsigned int delay_size; + float * delay_tbl; + float * dp_curr; + float * dp_targ; + int last_law_p; + int law_pos; + int law_roll; + int max_law_p; + float * next_peak_amp; + unsigned int *next_peak_pos; + float * prev_peak_amp; + unsigned int *prev_peak_pos; + long sample_rate; + LADSPA_Data run_adding_gain; +} MultivoiceChorus; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return multivoiceChorusDescriptor; + default: + return NULL; + } +} + +static void activateMultivoiceChorus(LADSPA_Handle instance) { + MultivoiceChorus *plugin_data = (MultivoiceChorus *)instance; + long count = plugin_data->count; + unsigned int delay_mask = plugin_data->delay_mask; + unsigned int delay_pos = plugin_data->delay_pos; + unsigned int delay_size = plugin_data->delay_size; + float *delay_tbl = plugin_data->delay_tbl; + float *dp_curr = plugin_data->dp_curr; + float *dp_targ = plugin_data->dp_targ; + int last_law_p = plugin_data->last_law_p; + int law_pos = plugin_data->law_pos; + int law_roll = plugin_data->law_roll; + int max_law_p = plugin_data->max_law_p; + float *next_peak_amp = plugin_data->next_peak_amp; + unsigned int *next_peak_pos = plugin_data->next_peak_pos; + float *prev_peak_amp = plugin_data->prev_peak_amp; + unsigned int *prev_peak_pos = plugin_data->prev_peak_pos; + long sample_rate = plugin_data->sample_rate; +#line 46 "multivoice_chorus_1201.xml" + memset(delay_tbl, 0, sizeof(float) * delay_size); + memset(prev_peak_pos, 0, sizeof(unsigned int) * MAX_LAWS); + memset(next_peak_pos, 0, sizeof(unsigned int) * MAX_LAWS); + memset(prev_peak_amp, 0, sizeof(float) * MAX_LAWS); + memset(next_peak_amp, 0, sizeof(float) * MAX_LAWS); + memset(dp_targ, 0, sizeof(float) * MAX_LAWS); + memset(dp_curr, 0, sizeof(float) * MAX_LAWS); + plugin_data->count = count; + plugin_data->delay_mask = delay_mask; + plugin_data->delay_pos = delay_pos; + plugin_data->delay_size = delay_size; + plugin_data->delay_tbl = delay_tbl; + plugin_data->dp_curr = dp_curr; + plugin_data->dp_targ = dp_targ; + plugin_data->last_law_p = last_law_p; + plugin_data->law_pos = law_pos; + plugin_data->law_roll = law_roll; + plugin_data->max_law_p = max_law_p; + plugin_data->next_peak_amp = next_peak_amp; + plugin_data->next_peak_pos = next_peak_pos; + plugin_data->prev_peak_amp = prev_peak_amp; + plugin_data->prev_peak_pos = prev_peak_pos; + plugin_data->sample_rate = sample_rate; + +} + +static void cleanupMultivoiceChorus(LADSPA_Handle instance) { +#line 56 "multivoice_chorus_1201.xml" + MultivoiceChorus *plugin_data = (MultivoiceChorus *)instance; + free(plugin_data->delay_tbl); + free(plugin_data->prev_peak_pos); + free(plugin_data->next_peak_pos); + free(plugin_data->prev_peak_amp); + free(plugin_data->next_peak_amp); + free(plugin_data->dp_targ); + free(plugin_data->dp_curr); + free(instance); +} + +static void connectPortMultivoiceChorus( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + MultivoiceChorus *plugin; + + plugin = (MultivoiceChorus *)instance; + switch (port) { + case MULTIVOICECHORUS_VOICES: + plugin->voices = data; + break; + case MULTIVOICECHORUS_DELAY_BASE: + plugin->delay_base = data; + break; + case MULTIVOICECHORUS_VOICE_SPREAD: + plugin->voice_spread = data; + break; + case MULTIVOICECHORUS_DETUNE: + plugin->detune = data; + break; + case MULTIVOICECHORUS_LAW_FREQ: + plugin->law_freq = data; + break; + case MULTIVOICECHORUS_ATTENDB: + plugin->attendb = data; + break; + case MULTIVOICECHORUS_INPUT: + plugin->input = data; + break; + case MULTIVOICECHORUS_OUTPUT: + plugin->output = data; + break; + } +} + +static LADSPA_Handle instantiateMultivoiceChorus( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + MultivoiceChorus *plugin_data = (MultivoiceChorus *)malloc(sizeof(MultivoiceChorus)); + long count; + unsigned int delay_mask; + unsigned int delay_pos; + unsigned int delay_size; + float *delay_tbl = NULL; + float *dp_curr = NULL; + float *dp_targ = NULL; + int last_law_p; + int law_pos; + int law_roll; + int max_law_p; + float *next_peak_amp = NULL; + unsigned int *next_peak_pos = NULL; + float *prev_peak_amp = NULL; + unsigned int *prev_peak_pos = NULL; + long sample_rate; + +#line 20 "multivoice_chorus_1201.xml" + int min_size; + + sample_rate = s_rate; + + max_law_p = s_rate/2; + last_law_p = -1; + law_pos = 0; + law_roll = 0; + + min_size = sample_rate / 10; + for (delay_size = 1024; delay_size < min_size; delay_size *= 2); + delay_mask = delay_size - 1; + delay_tbl = calloc(sizeof(float), delay_size); + delay_pos = 0; + + prev_peak_pos = malloc(sizeof(unsigned int) * MAX_LAWS); + next_peak_pos = malloc(sizeof(unsigned int) * MAX_LAWS); + prev_peak_amp = malloc(sizeof(float) * MAX_LAWS); + next_peak_amp = malloc(sizeof(float) * MAX_LAWS); + dp_targ = malloc(sizeof(float) * MAX_LAWS); + dp_curr = malloc(sizeof(float) * MAX_LAWS); + + count = 0; + + plugin_data->count = count; + plugin_data->delay_mask = delay_mask; + plugin_data->delay_pos = delay_pos; + plugin_data->delay_size = delay_size; + plugin_data->delay_tbl = delay_tbl; + plugin_data->dp_curr = dp_curr; + plugin_data->dp_targ = dp_targ; + plugin_data->last_law_p = last_law_p; + plugin_data->law_pos = law_pos; + plugin_data->law_roll = law_roll; + plugin_data->max_law_p = max_law_p; + plugin_data->next_peak_amp = next_peak_amp; + plugin_data->next_peak_pos = next_peak_pos; + plugin_data->prev_peak_amp = prev_peak_amp; + plugin_data->prev_peak_pos = prev_peak_pos; + plugin_data->sample_rate = sample_rate; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runMultivoiceChorus(LADSPA_Handle instance, unsigned long sample_count) { + MultivoiceChorus *plugin_data = (MultivoiceChorus *)instance; + + /* Number of voices (float value) */ + const LADSPA_Data voices = *(plugin_data->voices); + + /* Delay base (ms) (float value) */ + const LADSPA_Data delay_base = *(plugin_data->delay_base); + + /* Voice separation (ms) (float value) */ + const LADSPA_Data voice_spread = *(plugin_data->voice_spread); + + /* Detune (%) (float value) */ + const LADSPA_Data detune = *(plugin_data->detune); + + /* LFO frequency (Hz) (float value) */ + const LADSPA_Data law_freq = *(plugin_data->law_freq); + + /* Output attenuation (dB) (float value) */ + const LADSPA_Data attendb = *(plugin_data->attendb); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + long count = plugin_data->count; + unsigned int delay_mask = plugin_data->delay_mask; + unsigned int delay_pos = plugin_data->delay_pos; + unsigned int delay_size = plugin_data->delay_size; + float * delay_tbl = plugin_data->delay_tbl; + float * dp_curr = plugin_data->dp_curr; + float * dp_targ = plugin_data->dp_targ; + int last_law_p = plugin_data->last_law_p; + int law_pos = plugin_data->law_pos; + int law_roll = plugin_data->law_roll; + int max_law_p = plugin_data->max_law_p; + float * next_peak_amp = plugin_data->next_peak_amp; + unsigned int * next_peak_pos = plugin_data->next_peak_pos; + float * prev_peak_amp = plugin_data->prev_peak_amp; + unsigned int * prev_peak_pos = plugin_data->prev_peak_pos; + long sample_rate = plugin_data->sample_rate; + +#line 66 "multivoice_chorus_1201.xml" + unsigned long pos; + int d_base, t; + LADSPA_Data out; + float delay_depth; + float dp; // float delay position + float dp_frac; // fractional part + int dp_idx; // Integer delay index + int laws, law_separation, base_offset; + int law_p; // Period of law + float atten; // Attenuation + + // Set law params + laws = LIMIT(f_round(voices) - 1, 0, 7); + law_p = LIMIT(f_round(sample_rate/f_clamp(law_freq, 0.0001f, 1000.0f)), 1, max_law_p); + if (laws > 0) { + law_separation = law_p / laws; + } else { + law_separation = 0; + } + + // Calculate voice spread in samples + base_offset = (f_clamp(voice_spread, 0.0f, 2.0f) * sample_rate) / 1000; + // Calculate base delay size in samples + d_base = (f_clamp(delay_base, 5.0f, 40.0f) * sample_rate) / 1000; + // Calculate delay depth in samples + delay_depth = f_clamp((law_p * f_clamp(detune, 0.0f, 10.0f)) / (100.0f * M_PI), 0.0f, delay_size - d_base - 1 - (base_offset * laws)); + + // Calculate output attenuation + atten = DB_CO(f_clamp(attendb, -100.0, 24.0)); + + for (pos = 0; pos < sample_count; pos++) { + // N times per law 'frequency' splurge a new set of windowed data + // into one of the N law buffers. Keeps the laws out of phase. + if (laws > 0 && (count % law_separation) == 0) { + next_peak_amp[law_roll] = (float)rand() / (float)RAND_MAX; + next_peak_pos[law_roll] = count + law_p; + } + if (laws > 0 && (count % law_separation) == law_separation/2) { + prev_peak_amp[law_roll] = (float)rand() / (float)RAND_MAX; + prev_peak_pos[law_roll] = count + law_p; + // Pick the next law to be changed + law_roll = (law_roll + 1) % laws; + } + + out = input[pos]; + if (count % 16 < laws) { + unsigned int t = count % 16; + // Calculate sinus phases + float n_ph = (float)(law_p - abs(next_peak_pos[t] - count))/law_p; + float p_ph = n_ph + 0.5f; + if (p_ph > 1.0f) { + p_ph -= 1.0f; + } + + dp_targ[t] = f_sin_sq(3.1415926f*p_ph)*prev_peak_amp[t] + f_sin_sq(3.1415926f*n_ph)*next_peak_amp[t]; + } + for (t=0; tcount = count; + plugin_data->law_pos = law_pos; + plugin_data->last_law_p = last_law_p; + plugin_data->law_roll = law_roll; + plugin_data->delay_pos = delay_pos; +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainMultivoiceChorus(LADSPA_Handle instance, LADSPA_Data gain) { + ((MultivoiceChorus *)instance)->run_adding_gain = gain; +} + +static void runAddingMultivoiceChorus(LADSPA_Handle instance, unsigned long sample_count) { + MultivoiceChorus *plugin_data = (MultivoiceChorus *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Number of voices (float value) */ + const LADSPA_Data voices = *(plugin_data->voices); + + /* Delay base (ms) (float value) */ + const LADSPA_Data delay_base = *(plugin_data->delay_base); + + /* Voice separation (ms) (float value) */ + const LADSPA_Data voice_spread = *(plugin_data->voice_spread); + + /* Detune (%) (float value) */ + const LADSPA_Data detune = *(plugin_data->detune); + + /* LFO frequency (Hz) (float value) */ + const LADSPA_Data law_freq = *(plugin_data->law_freq); + + /* Output attenuation (dB) (float value) */ + const LADSPA_Data attendb = *(plugin_data->attendb); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + long count = plugin_data->count; + unsigned int delay_mask = plugin_data->delay_mask; + unsigned int delay_pos = plugin_data->delay_pos; + unsigned int delay_size = plugin_data->delay_size; + float * delay_tbl = plugin_data->delay_tbl; + float * dp_curr = plugin_data->dp_curr; + float * dp_targ = plugin_data->dp_targ; + int last_law_p = plugin_data->last_law_p; + int law_pos = plugin_data->law_pos; + int law_roll = plugin_data->law_roll; + int max_law_p = plugin_data->max_law_p; + float * next_peak_amp = plugin_data->next_peak_amp; + unsigned int * next_peak_pos = plugin_data->next_peak_pos; + float * prev_peak_amp = plugin_data->prev_peak_amp; + unsigned int * prev_peak_pos = plugin_data->prev_peak_pos; + long sample_rate = plugin_data->sample_rate; + +#line 66 "multivoice_chorus_1201.xml" + unsigned long pos; + int d_base, t; + LADSPA_Data out; + float delay_depth; + float dp; // float delay position + float dp_frac; // fractional part + int dp_idx; // Integer delay index + int laws, law_separation, base_offset; + int law_p; // Period of law + float atten; // Attenuation + + // Set law params + laws = LIMIT(f_round(voices) - 1, 0, 7); + law_p = LIMIT(f_round(sample_rate/f_clamp(law_freq, 0.0001f, 1000.0f)), 1, max_law_p); + if (laws > 0) { + law_separation = law_p / laws; + } else { + law_separation = 0; + } + + // Calculate voice spread in samples + base_offset = (f_clamp(voice_spread, 0.0f, 2.0f) * sample_rate) / 1000; + // Calculate base delay size in samples + d_base = (f_clamp(delay_base, 5.0f, 40.0f) * sample_rate) / 1000; + // Calculate delay depth in samples + delay_depth = f_clamp((law_p * f_clamp(detune, 0.0f, 10.0f)) / (100.0f * M_PI), 0.0f, delay_size - d_base - 1 - (base_offset * laws)); + + // Calculate output attenuation + atten = DB_CO(f_clamp(attendb, -100.0, 24.0)); + + for (pos = 0; pos < sample_count; pos++) { + // N times per law 'frequency' splurge a new set of windowed data + // into one of the N law buffers. Keeps the laws out of phase. + if (laws > 0 && (count % law_separation) == 0) { + next_peak_amp[law_roll] = (float)rand() / (float)RAND_MAX; + next_peak_pos[law_roll] = count + law_p; + } + if (laws > 0 && (count % law_separation) == law_separation/2) { + prev_peak_amp[law_roll] = (float)rand() / (float)RAND_MAX; + prev_peak_pos[law_roll] = count + law_p; + // Pick the next law to be changed + law_roll = (law_roll + 1) % laws; + } + + out = input[pos]; + if (count % 16 < laws) { + unsigned int t = count % 16; + // Calculate sinus phases + float n_ph = (float)(law_p - abs(next_peak_pos[t] - count))/law_p; + float p_ph = n_ph + 0.5f; + if (p_ph > 1.0f) { + p_ph -= 1.0f; + } + + dp_targ[t] = f_sin_sq(3.1415926f*p_ph)*prev_peak_amp[t] + f_sin_sq(3.1415926f*n_ph)*next_peak_amp[t]; + } + for (t=0; tcount = count; + plugin_data->law_pos = law_pos; + plugin_data->last_law_p = last_law_p; + plugin_data->law_roll = law_roll; + plugin_data->delay_pos = delay_pos; +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + multivoiceChorusDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (multivoiceChorusDescriptor) { + multivoiceChorusDescriptor->UniqueID = 1201; + multivoiceChorusDescriptor->Label = "multivoiceChorus"; + multivoiceChorusDescriptor->Properties = + 0; + multivoiceChorusDescriptor->Name = + D_("Multivoice Chorus"); + multivoiceChorusDescriptor->Maker = + "Steve Harris "; + multivoiceChorusDescriptor->Copyright = + "GPL"; + multivoiceChorusDescriptor->PortCount = 8; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(8, + sizeof(LADSPA_PortDescriptor)); + multivoiceChorusDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(8, + sizeof(LADSPA_PortRangeHint)); + multivoiceChorusDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(8, sizeof(char*)); + multivoiceChorusDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Number of voices */ + port_descriptors[MULTIVOICECHORUS_VOICES] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[MULTIVOICECHORUS_VOICES] = + D_("Number of voices"); + port_range_hints[MULTIVOICECHORUS_VOICES].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_INTEGER | LADSPA_HINT_DEFAULT_1; + port_range_hints[MULTIVOICECHORUS_VOICES].LowerBound = 1; + port_range_hints[MULTIVOICECHORUS_VOICES].UpperBound = 8; + + /* Parameters for Delay base (ms) */ + port_descriptors[MULTIVOICECHORUS_DELAY_BASE] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[MULTIVOICECHORUS_DELAY_BASE] = + D_("Delay base (ms)"); + port_range_hints[MULTIVOICECHORUS_DELAY_BASE].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MINIMUM; + port_range_hints[MULTIVOICECHORUS_DELAY_BASE].LowerBound = 10; + port_range_hints[MULTIVOICECHORUS_DELAY_BASE].UpperBound = 40; + + /* Parameters for Voice separation (ms) */ + port_descriptors[MULTIVOICECHORUS_VOICE_SPREAD] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[MULTIVOICECHORUS_VOICE_SPREAD] = + D_("Voice separation (ms)"); + port_range_hints[MULTIVOICECHORUS_VOICE_SPREAD].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_LOW; + port_range_hints[MULTIVOICECHORUS_VOICE_SPREAD].LowerBound = 0; + port_range_hints[MULTIVOICECHORUS_VOICE_SPREAD].UpperBound = 2; + + /* Parameters for Detune (%) */ + port_descriptors[MULTIVOICECHORUS_DETUNE] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[MULTIVOICECHORUS_DETUNE] = + D_("Detune (%)"); + port_range_hints[MULTIVOICECHORUS_DETUNE].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_1; + port_range_hints[MULTIVOICECHORUS_DETUNE].LowerBound = 0; + port_range_hints[MULTIVOICECHORUS_DETUNE].UpperBound = 5; + + /* Parameters for LFO frequency (Hz) */ + port_descriptors[MULTIVOICECHORUS_LAW_FREQ] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[MULTIVOICECHORUS_LAW_FREQ] = + D_("LFO frequency (Hz)"); + port_range_hints[MULTIVOICECHORUS_LAW_FREQ].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_LOW; + port_range_hints[MULTIVOICECHORUS_LAW_FREQ].LowerBound = 2; + port_range_hints[MULTIVOICECHORUS_LAW_FREQ].UpperBound = 30; + + /* Parameters for Output attenuation (dB) */ + port_descriptors[MULTIVOICECHORUS_ATTENDB] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[MULTIVOICECHORUS_ATTENDB] = + D_("Output attenuation (dB)"); + port_range_hints[MULTIVOICECHORUS_ATTENDB].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[MULTIVOICECHORUS_ATTENDB].LowerBound = -20; + port_range_hints[MULTIVOICECHORUS_ATTENDB].UpperBound = 0; + + /* Parameters for Input */ + port_descriptors[MULTIVOICECHORUS_INPUT] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[MULTIVOICECHORUS_INPUT] = + D_("Input"); + port_range_hints[MULTIVOICECHORUS_INPUT].HintDescriptor = 0; + + /* Parameters for Output */ + port_descriptors[MULTIVOICECHORUS_OUTPUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[MULTIVOICECHORUS_OUTPUT] = + D_("Output"); + port_range_hints[MULTIVOICECHORUS_OUTPUT].HintDescriptor = 0; + + multivoiceChorusDescriptor->activate = activateMultivoiceChorus; + multivoiceChorusDescriptor->cleanup = cleanupMultivoiceChorus; + multivoiceChorusDescriptor->connect_port = connectPortMultivoiceChorus; + multivoiceChorusDescriptor->deactivate = NULL; + multivoiceChorusDescriptor->instantiate = instantiateMultivoiceChorus; + multivoiceChorusDescriptor->run = runMultivoiceChorus; + multivoiceChorusDescriptor->run_adding = runAddingMultivoiceChorus; + multivoiceChorusDescriptor->set_run_adding_gain = setRunAddingGainMultivoiceChorus; + } +} + +void _fini() { + if (multivoiceChorusDescriptor) { + free((LADSPA_PortDescriptor *)multivoiceChorusDescriptor->PortDescriptors); + free((char **)multivoiceChorusDescriptor->PortNames); + free((LADSPA_PortRangeHint *)multivoiceChorusDescriptor->PortRangeHints); + free(multivoiceChorusDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/notch_iir_1894.c b/plugins/ladspa_effect/swh/notch_iir_1894.c new file mode 100644 index 000000000..5c8c97d0c --- /dev/null +++ b/plugins/ladspa_effect/swh/notch_iir_1894.c @@ -0,0 +1,361 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + +#line 9 "notch_iir_1894.xml" + +#include "config.h" +#include "util/iir.h" + +#define NOTCH_IIR_CENTER 0 +#define NOTCH_IIR_WIDTH 1 +#define NOTCH_IIR_STAGES 2 +#define NOTCH_IIR_INPUT 3 +#define NOTCH_IIR_OUTPUT 4 + +static LADSPA_Descriptor *notch_iirDescriptor = NULL; + +typedef struct { + LADSPA_Data *center; + LADSPA_Data *width; + LADSPA_Data *stages; + LADSPA_Data *input; + LADSPA_Data *output; + iir_stage_t* first; + iirf_t* iirf1; + iirf_t* iirf2; + float lfc; + long sample_rate; + iir_stage_t* second; + float ufc; + LADSPA_Data run_adding_gain; +} Notch_iir; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return notch_iirDescriptor; + default: + return NULL; + } +} + +static void activateNotch_iir(LADSPA_Handle instance) { + Notch_iir *plugin_data = (Notch_iir *)instance; + iir_stage_t*first = plugin_data->first; + iirf_t*iirf1 = plugin_data->iirf1; + iirf_t*iirf2 = plugin_data->iirf2; + float lfc = plugin_data->lfc; + long sample_rate = plugin_data->sample_rate; + iir_stage_t*second = plugin_data->second; + float ufc = plugin_data->ufc; +#line 36 "notch_iir_1894.xml" + + ufc = (*(plugin_data->center) - *(plugin_data->width)*0.5f)/(float)sample_rate; + lfc = (*(plugin_data->center) + *(plugin_data->width)*0.5f)/(float)sample_rate; + first = init_iir_stage(IIR_STAGE_LOWPASS,10,3,2); + second = init_iir_stage(IIR_STAGE_HIGHPASS,10,3,2); + iirf1 = init_iirf_t(first); + iirf2 = init_iirf_t(second); + chebyshev(iirf1, first, 2*CLAMP((int)(*(plugin_data->stages)),1,10), IIR_STAGE_LOWPASS, ufc, 0.5f); + chebyshev(iirf2, second, 2*CLAMP((int)(*(plugin_data->stages)),1,10), IIR_STAGE_HIGHPASS, lfc, 0.5f); + plugin_data->first = first; + plugin_data->iirf1 = iirf1; + plugin_data->iirf2 = iirf2; + plugin_data->lfc = lfc; + plugin_data->sample_rate = sample_rate; + plugin_data->second = second; + plugin_data->ufc = ufc; + +} + +static void cleanupNotch_iir(LADSPA_Handle instance) { +#line 47 "notch_iir_1894.xml" + Notch_iir *plugin_data = (Notch_iir *)instance; + free_iirf_t(plugin_data->iirf1, plugin_data->first); + free_iirf_t(plugin_data->iirf2, plugin_data->second); + free_iir_stage(plugin_data->first); + free_iir_stage(plugin_data->second); + free(instance); +} + +static void connectPortNotch_iir( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + Notch_iir *plugin; + + plugin = (Notch_iir *)instance; + switch (port) { + case NOTCH_IIR_CENTER: + plugin->center = data; + break; + case NOTCH_IIR_WIDTH: + plugin->width = data; + break; + case NOTCH_IIR_STAGES: + plugin->stages = data; + break; + case NOTCH_IIR_INPUT: + plugin->input = data; + break; + case NOTCH_IIR_OUTPUT: + plugin->output = data; + break; + } +} + +static LADSPA_Handle instantiateNotch_iir( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + Notch_iir *plugin_data = (Notch_iir *)malloc(sizeof(Notch_iir)); + iir_stage_t*first = NULL; + iirf_t*iirf1 = NULL; + iirf_t*iirf2 = NULL; + float lfc; + long sample_rate; + iir_stage_t*second = NULL; + float ufc; + +#line 23 "notch_iir_1894.xml" + sample_rate = s_rate; + ufc = lfc = 0.0f; + + plugin_data->first = first; + plugin_data->iirf1 = iirf1; + plugin_data->iirf2 = iirf2; + plugin_data->lfc = lfc; + plugin_data->sample_rate = sample_rate; + plugin_data->second = second; + plugin_data->ufc = ufc; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runNotch_iir(LADSPA_Handle instance, unsigned long sample_count) { + Notch_iir *plugin_data = (Notch_iir *)instance; + + /* Center Frequency (Hz) (float value) */ + const LADSPA_Data center = *(plugin_data->center); + + /* Bandwidth (Hz) (float value) */ + const LADSPA_Data width = *(plugin_data->width); + + /* Stages(2 poles per stage) (float value) */ + const LADSPA_Data stages = *(plugin_data->stages); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + iir_stage_t* first = plugin_data->first; + iirf_t* iirf1 = plugin_data->iirf1; + iirf_t* iirf2 = plugin_data->iirf2; + float lfc = plugin_data->lfc; + long sample_rate = plugin_data->sample_rate; + iir_stage_t* second = plugin_data->second; + float ufc = plugin_data->ufc; + +#line 27 "notch_iir_1894.xml" + ufc = (center - width*0.5f)/(float)sample_rate; + lfc = (center + width*0.5f)/(float)sample_rate; + chebyshev(iirf1, first, 2*CLAMP((int)stages,1,10), IIR_STAGE_LOWPASS, ufc, 0.5f); + chebyshev(iirf2, second, 2*CLAMP((int)stages,1,10), IIR_STAGE_HIGHPASS, lfc, 0.5f); + iir_process_buffer_ns_5(iirf1, first, input, output, sample_count, RUN_ADDING); + iir_process_buffer_ns_5(iirf2, second, input, output, sample_count, 1); /* add to first buffer */ +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainNotch_iir(LADSPA_Handle instance, LADSPA_Data gain) { + ((Notch_iir *)instance)->run_adding_gain = gain; +} + +static void runAddingNotch_iir(LADSPA_Handle instance, unsigned long sample_count) { + Notch_iir *plugin_data = (Notch_iir *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Center Frequency (Hz) (float value) */ + const LADSPA_Data center = *(plugin_data->center); + + /* Bandwidth (Hz) (float value) */ + const LADSPA_Data width = *(plugin_data->width); + + /* Stages(2 poles per stage) (float value) */ + const LADSPA_Data stages = *(plugin_data->stages); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + iir_stage_t* first = plugin_data->first; + iirf_t* iirf1 = plugin_data->iirf1; + iirf_t* iirf2 = plugin_data->iirf2; + float lfc = plugin_data->lfc; + long sample_rate = plugin_data->sample_rate; + iir_stage_t* second = plugin_data->second; + float ufc = plugin_data->ufc; + +#line 27 "notch_iir_1894.xml" + ufc = (center - width*0.5f)/(float)sample_rate; + lfc = (center + width*0.5f)/(float)sample_rate; + chebyshev(iirf1, first, 2*CLAMP((int)stages,1,10), IIR_STAGE_LOWPASS, ufc, 0.5f); + chebyshev(iirf2, second, 2*CLAMP((int)stages,1,10), IIR_STAGE_HIGHPASS, lfc, 0.5f); + iir_process_buffer_ns_5(iirf1, first, input, output, sample_count, RUN_ADDING); + iir_process_buffer_ns_5(iirf2, second, input, output, sample_count, 1); /* add to first buffer */ +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + notch_iirDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (notch_iirDescriptor) { + notch_iirDescriptor->UniqueID = 1894; + notch_iirDescriptor->Label = "notch_iir"; + notch_iirDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + notch_iirDescriptor->Name = + D_("Mag's Notch Filter"); + notch_iirDescriptor->Maker = + "Alexander Ehlert "; + notch_iirDescriptor->Copyright = + "GPL"; + notch_iirDescriptor->PortCount = 5; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(5, + sizeof(LADSPA_PortDescriptor)); + notch_iirDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(5, + sizeof(LADSPA_PortRangeHint)); + notch_iirDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(5, sizeof(char*)); + notch_iirDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Center Frequency (Hz) */ + port_descriptors[NOTCH_IIR_CENTER] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[NOTCH_IIR_CENTER] = + D_("Center Frequency (Hz)"); + port_range_hints[NOTCH_IIR_CENTER].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MIDDLE | LADSPA_HINT_SAMPLE_RATE | LADSPA_HINT_LOGARITHMIC; + port_range_hints[NOTCH_IIR_CENTER].LowerBound = 0.0001; + port_range_hints[NOTCH_IIR_CENTER].UpperBound = 0.45; + + /* Parameters for Bandwidth (Hz) */ + port_descriptors[NOTCH_IIR_WIDTH] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[NOTCH_IIR_WIDTH] = + D_("Bandwidth (Hz)"); + port_range_hints[NOTCH_IIR_WIDTH].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MIDDLE | LADSPA_HINT_SAMPLE_RATE | LADSPA_HINT_LOGARITHMIC; + port_range_hints[NOTCH_IIR_WIDTH].LowerBound = 0.0001; + port_range_hints[NOTCH_IIR_WIDTH].UpperBound = 0.45; + + /* Parameters for Stages(2 poles per stage) */ + port_descriptors[NOTCH_IIR_STAGES] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[NOTCH_IIR_STAGES] = + D_("Stages(2 poles per stage)"); + port_range_hints[NOTCH_IIR_STAGES].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_1 | LADSPA_HINT_INTEGER; + port_range_hints[NOTCH_IIR_STAGES].LowerBound = 1.0; + port_range_hints[NOTCH_IIR_STAGES].UpperBound = 10.0; + + /* Parameters for Input */ + port_descriptors[NOTCH_IIR_INPUT] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[NOTCH_IIR_INPUT] = + D_("Input"); + port_range_hints[NOTCH_IIR_INPUT].HintDescriptor = 0; + + /* Parameters for Output */ + port_descriptors[NOTCH_IIR_OUTPUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[NOTCH_IIR_OUTPUT] = + D_("Output"); + port_range_hints[NOTCH_IIR_OUTPUT].HintDescriptor = 0; + + notch_iirDescriptor->activate = activateNotch_iir; + notch_iirDescriptor->cleanup = cleanupNotch_iir; + notch_iirDescriptor->connect_port = connectPortNotch_iir; + notch_iirDescriptor->deactivate = NULL; + notch_iirDescriptor->instantiate = instantiateNotch_iir; + notch_iirDescriptor->run = runNotch_iir; + notch_iirDescriptor->run_adding = runAddingNotch_iir; + notch_iirDescriptor->set_run_adding_gain = setRunAddingGainNotch_iir; + } +} + +void _fini() { + if (notch_iirDescriptor) { + free((LADSPA_PortDescriptor *)notch_iirDescriptor->PortDescriptors); + free((char **)notch_iirDescriptor->PortNames); + free((LADSPA_PortRangeHint *)notch_iirDescriptor->PortRangeHints); + free(notch_iirDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/pitch_scale_1193.c b/plugins/ladspa_effect/swh/pitch_scale_1193.c new file mode 100644 index 000000000..be797e48e --- /dev/null +++ b/plugins/ladspa_effect/swh/pitch_scale_1193.c @@ -0,0 +1,338 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + +#line 9 "pitch_scale_1193.xml" + +#include "util/pitchscale.h" + +#define FRAME_LENGTH 2048 +#define OVER_SAMP 4 + +#define PITCHSCALE_MULT 0 +#define PITCHSCALE_INPUT 1 +#define PITCHSCALE_OUTPUT 2 +#define PITCHSCALE_LATENCY 3 + +static LADSPA_Descriptor *pitchScaleDescriptor = NULL; + +typedef struct { + LADSPA_Data *mult; + LADSPA_Data *input; + LADSPA_Data *output; + LADSPA_Data *latency; + sbuffers * buffers; + long sample_rate; + LADSPA_Data run_adding_gain; +} PitchScale; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return pitchScaleDescriptor; + default: + return NULL; + } +} + +static void activatePitchScale(LADSPA_Handle instance) { + PitchScale *plugin_data = (PitchScale *)instance; + sbuffers *buffers = plugin_data->buffers; + long sample_rate = plugin_data->sample_rate; +#line 68 "pitch_scale_1193.xml" + memset(buffers->gInFIFO, 0, FRAME_LENGTH*sizeof(float)); + memset(buffers->gOutFIFO, 0, FRAME_LENGTH*sizeof(float)); + memset(buffers->gLastPhase, 0, FRAME_LENGTH*sizeof(float)/2); + memset(buffers->gSumPhase, 0, FRAME_LENGTH*sizeof(float)/2); + memset(buffers->gOutputAccum, 0, 2*FRAME_LENGTH*sizeof(float)); + memset(buffers->gAnaFreq, 0, FRAME_LENGTH*sizeof(float)); + memset(buffers->gAnaMagn, 0, FRAME_LENGTH*sizeof(float)); + buffers->gRover = 0; + sample_rate = sample_rate; + + /* do one run to make sure the plans are set up */ + pitch_scale(buffers, 1.0, FRAME_LENGTH, 4, FRAME_LENGTH, sample_rate, buffers->gInFIFO, buffers->gOutFIFO, 0, 0.0f); + plugin_data->buffers = buffers; + plugin_data->sample_rate = sample_rate; + +} + +static void cleanupPitchScale(LADSPA_Handle instance) { +#line 83 "pitch_scale_1193.xml" + PitchScale *plugin_data = (PitchScale *)instance; + free (plugin_data->buffers->gInFIFO); + free (plugin_data->buffers->gOutFIFO); + free (plugin_data->buffers->gLastPhase); + free (plugin_data->buffers->gSumPhase); + free (plugin_data->buffers->gOutputAccum); + free (plugin_data->buffers->gAnaFreq); + free (plugin_data->buffers->gAnaMagn); + free (plugin_data->buffers->gSynFreq); + free (plugin_data->buffers->gSynMagn); + free (plugin_data->buffers->gWindow); + free (plugin_data->buffers); + free(instance); +} + +static void connectPortPitchScale( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + PitchScale *plugin; + + plugin = (PitchScale *)instance; + switch (port) { + case PITCHSCALE_MULT: + plugin->mult = data; + break; + case PITCHSCALE_INPUT: + plugin->input = data; + break; + case PITCHSCALE_OUTPUT: + plugin->output = data; + break; + case PITCHSCALE_LATENCY: + plugin->latency = data; + break; + } +} + +static LADSPA_Handle instantiatePitchScale( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + PitchScale *plugin_data = (PitchScale *)malloc(sizeof(PitchScale)); + sbuffers *buffers = NULL; + long sample_rate; + +#line 30 "pitch_scale_1193.xml" + int i; + float arg; + + buffers = malloc(sizeof(sbuffers)); + sample_rate = s_rate; + buffers->gInFIFO = malloc(FRAME_LENGTH * sizeof(float)); + buffers->gOutFIFO = malloc(FRAME_LENGTH * sizeof(float)); + buffers->gLastPhase = malloc(FRAME_LENGTH * sizeof(float)); + buffers->gSumPhase = malloc(FRAME_LENGTH * sizeof(float)); + buffers->gOutputAccum = malloc(2*FRAME_LENGTH * sizeof(float)); + buffers->gAnaFreq = malloc(FRAME_LENGTH * sizeof(float)); + buffers->gAnaMagn = malloc(FRAME_LENGTH * sizeof(float)); + buffers->gSynFreq = malloc(FRAME_LENGTH * sizeof(float)); + buffers->gSynMagn = malloc(FRAME_LENGTH * sizeof(float)); + buffers->gWindow = malloc(FRAME_LENGTH * sizeof(float)); +/* + if (aplan == NULL) { +#ifdef FFTW3 + aplan = fftwf_plan_r2r_1d(FRAME_LENGTH, ps_in, ps_out, FFTW_R2HC, FFTW_MEASURE); + splan = fftwf_plan_r2r_1d(FRAME_LENGTH, ps_in, ps_out, FFTW_HC2R, FFTW_MEASURE); +#else + aplan = rfftw_create_plan(FRAME_LENGTH, FFTW_REAL_TO_COMPLEX, FFTW_ESTIMATE); + splan = rfftw_create_plan(FRAME_LENGTH, FFTW_COMPLEX_TO_REAL, FFTW_ESTIMATE); +#endif + } +*/ + + arg = 2.0f * M_PI / (float)(FRAME_LENGTH-1); + for (i=0; i < FRAME_LENGTH; i++) { + // Blackman-Harris + buffers->gWindow[i] = 0.35875f - 0.48829f * cos(arg * (float)i) + 0.14128f * cos(2.0f * arg * (float)i) - 0.01168f * cos(3.0f * arg * (float)i); + // Gain correction + buffers->gWindow[i] *= 0.761f; + + } + + plugin_data->buffers = buffers; + plugin_data->sample_rate = sample_rate; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runPitchScale(LADSPA_Handle instance, unsigned long sample_count) { + PitchScale *plugin_data = (PitchScale *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Pitch co-efficient (float value) */ + const LADSPA_Data mult = *(plugin_data->mult); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + sbuffers * buffers = plugin_data->buffers; + long sample_rate = plugin_data->sample_rate; + +#line 23 "pitch_scale_1193.xml" + pitch_scale(buffers, mult, FRAME_LENGTH, OVER_SAMP, sample_count, sample_rate, input, output, RUN_ADDING, run_adding_gain); + + *(plugin_data->latency) = FRAME_LENGTH - (FRAME_LENGTH / + OVER_SAMP); +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainPitchScale(LADSPA_Handle instance, LADSPA_Data gain) { + ((PitchScale *)instance)->run_adding_gain = gain; +} + +static void runAddingPitchScale(LADSPA_Handle instance, unsigned long sample_count) { + PitchScale *plugin_data = (PitchScale *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Pitch co-efficient (float value) */ + const LADSPA_Data mult = *(plugin_data->mult); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + sbuffers * buffers = plugin_data->buffers; + long sample_rate = plugin_data->sample_rate; + +#line 23 "pitch_scale_1193.xml" + pitch_scale(buffers, mult, FRAME_LENGTH, OVER_SAMP, sample_count, sample_rate, input, output, RUN_ADDING, run_adding_gain); + + *(plugin_data->latency) = FRAME_LENGTH - (FRAME_LENGTH / + OVER_SAMP); +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + pitchScaleDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (pitchScaleDescriptor) { + pitchScaleDescriptor->UniqueID = 1193; + pitchScaleDescriptor->Label = "pitchScale"; + pitchScaleDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + pitchScaleDescriptor->Name = + D_("Pitch Scaler"); + pitchScaleDescriptor->Maker = + "Steve Harris "; + pitchScaleDescriptor->Copyright = + "GPL"; + pitchScaleDescriptor->PortCount = 4; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(4, + sizeof(LADSPA_PortDescriptor)); + pitchScaleDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(4, + sizeof(LADSPA_PortRangeHint)); + pitchScaleDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(4, sizeof(char*)); + pitchScaleDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Pitch co-efficient */ + port_descriptors[PITCHSCALE_MULT] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[PITCHSCALE_MULT] = + D_("Pitch co-efficient"); + port_range_hints[PITCHSCALE_MULT].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_1; + port_range_hints[PITCHSCALE_MULT].LowerBound = 0.5; + port_range_hints[PITCHSCALE_MULT].UpperBound = 2; + + /* Parameters for Input */ + port_descriptors[PITCHSCALE_INPUT] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[PITCHSCALE_INPUT] = + D_("Input"); + port_range_hints[PITCHSCALE_INPUT].HintDescriptor = 0; + + /* Parameters for Output */ + port_descriptors[PITCHSCALE_OUTPUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[PITCHSCALE_OUTPUT] = + D_("Output"); + port_range_hints[PITCHSCALE_OUTPUT].HintDescriptor = 0; + + /* Parameters for latency */ + port_descriptors[PITCHSCALE_LATENCY] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_CONTROL; + port_names[PITCHSCALE_LATENCY] = + D_("latency"); + port_range_hints[PITCHSCALE_LATENCY].HintDescriptor = 0; + + pitchScaleDescriptor->activate = activatePitchScale; + pitchScaleDescriptor->cleanup = cleanupPitchScale; + pitchScaleDescriptor->connect_port = connectPortPitchScale; + pitchScaleDescriptor->deactivate = NULL; + pitchScaleDescriptor->instantiate = instantiatePitchScale; + pitchScaleDescriptor->run = runPitchScale; + pitchScaleDescriptor->run_adding = runAddingPitchScale; + pitchScaleDescriptor->set_run_adding_gain = setRunAddingGainPitchScale; + } +} + +void _fini() { + if (pitchScaleDescriptor) { + free((LADSPA_PortDescriptor *)pitchScaleDescriptor->PortDescriptors); + free((char **)pitchScaleDescriptor->PortNames); + free((LADSPA_PortRangeHint *)pitchScaleDescriptor->PortRangeHints); + free(pitchScaleDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/pitch_scale_1194.c b/plugins/ladspa_effect/swh/pitch_scale_1194.c new file mode 100644 index 000000000..4e22de6df --- /dev/null +++ b/plugins/ladspa_effect/swh/pitch_scale_1194.c @@ -0,0 +1,322 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + +#line 9 "pitch_scale_1194.xml" + +#include "util/pitchscale.h" + +#define FRAME_LENGTH 4096 +#define OVER_SAMP 16 + +#define PITCHSCALEHQ_MULT 0 +#define PITCHSCALEHQ_INPUT 1 +#define PITCHSCALEHQ_OUTPUT 2 +#define PITCHSCALEHQ_LATENCY 3 + +static LADSPA_Descriptor *pitchScaleHQDescriptor = NULL; + +typedef struct { + LADSPA_Data *mult; + LADSPA_Data *input; + LADSPA_Data *output; + LADSPA_Data *latency; + sbuffers * buffers; + long sample_rate; + LADSPA_Data run_adding_gain; +} PitchScaleHQ; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return pitchScaleHQDescriptor; + default: + return NULL; + } +} + +static void activatePitchScaleHQ(LADSPA_Handle instance) { + PitchScaleHQ *plugin_data = (PitchScaleHQ *)instance; + sbuffers *buffers = plugin_data->buffers; + long sample_rate = plugin_data->sample_rate; +#line 57 "pitch_scale_1194.xml" + memset(buffers->gInFIFO, 0, FRAME_LENGTH*sizeof(float)); + memset(buffers->gOutFIFO, 0, FRAME_LENGTH*sizeof(float)); + memset(buffers->gLastPhase, 0, FRAME_LENGTH*sizeof(float)/2); + memset(buffers->gSumPhase, 0, FRAME_LENGTH*sizeof(float)/2); + memset(buffers->gOutputAccum, 0, 2*FRAME_LENGTH*sizeof(float)); + memset(buffers->gAnaFreq, 0, FRAME_LENGTH*sizeof(float)); + memset(buffers->gAnaMagn, 0, FRAME_LENGTH*sizeof(float)); + buffers->gRover = 0; + pitch_scale(buffers, 1.0, FRAME_LENGTH, 16, FRAME_LENGTH, sample_rate, buffers->gInFIFO, buffers->gOutFIFO, 0, 0.0f); + plugin_data->buffers = buffers; + plugin_data->sample_rate = sample_rate; + +} + +static void cleanupPitchScaleHQ(LADSPA_Handle instance) { +#line 69 "pitch_scale_1194.xml" + PitchScaleHQ *plugin_data = (PitchScaleHQ *)instance; + free (plugin_data->buffers->gInFIFO); + free (plugin_data->buffers->gOutFIFO); + free (plugin_data->buffers->gLastPhase); + free (plugin_data->buffers->gSumPhase); + free (plugin_data->buffers->gOutputAccum); + free (plugin_data->buffers->gAnaFreq); + free (plugin_data->buffers->gAnaMagn); + free (plugin_data->buffers->gSynFreq); + free (plugin_data->buffers->gSynMagn); + free (plugin_data->buffers->gWindow); + free (plugin_data->buffers); + free(instance); +} + +static void connectPortPitchScaleHQ( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + PitchScaleHQ *plugin; + + plugin = (PitchScaleHQ *)instance; + switch (port) { + case PITCHSCALEHQ_MULT: + plugin->mult = data; + break; + case PITCHSCALEHQ_INPUT: + plugin->input = data; + break; + case PITCHSCALEHQ_OUTPUT: + plugin->output = data; + break; + case PITCHSCALEHQ_LATENCY: + plugin->latency = data; + break; + } +} + +static LADSPA_Handle instantiatePitchScaleHQ( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + PitchScaleHQ *plugin_data = (PitchScaleHQ *)malloc(sizeof(PitchScaleHQ)); + sbuffers *buffers = NULL; + long sample_rate; + +#line 29 "pitch_scale_1194.xml" + int i; + float arg; + + buffers = malloc(sizeof(sbuffers)); + sample_rate = s_rate; + buffers->gInFIFO = malloc(FRAME_LENGTH * sizeof(float)); + buffers->gOutFIFO = malloc(FRAME_LENGTH * sizeof(float)); + buffers->gLastPhase = malloc(FRAME_LENGTH * sizeof(float)); + buffers->gSumPhase = malloc(FRAME_LENGTH * sizeof(float)); + buffers->gOutputAccum = malloc(2*FRAME_LENGTH * sizeof(float)); + buffers->gAnaFreq = malloc(FRAME_LENGTH * sizeof(float)); + buffers->gAnaMagn = malloc(FRAME_LENGTH * sizeof(float)); + buffers->gSynFreq = malloc(FRAME_LENGTH * sizeof(float)); + buffers->gSynMagn = malloc(FRAME_LENGTH * sizeof(float)); + buffers->gWindow = malloc(FRAME_LENGTH * sizeof(float)); + + arg = 2.0f * M_PI / (float)(FRAME_LENGTH-1); + for (i=0; i < FRAME_LENGTH; i++) { + // Blackman-Harris + buffers->gWindow[i] = 0.35875f - 0.48829f * cos(arg * (float)i) + 0.14128f * cos(2.0f * arg * (float)i) - 0.01168f * cos(3.0f * arg * (float)i); + // Gain correction + buffers->gWindow[i] *= 0.761f; + + } + + plugin_data->buffers = buffers; + plugin_data->sample_rate = sample_rate; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runPitchScaleHQ(LADSPA_Handle instance, unsigned long sample_count) { + PitchScaleHQ *plugin_data = (PitchScaleHQ *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Pitch co-efficient (float value) */ + const LADSPA_Data mult = *(plugin_data->mult); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + sbuffers * buffers = plugin_data->buffers; + long sample_rate = plugin_data->sample_rate; + +#line 23 "pitch_scale_1194.xml" + pitch_scale(buffers, mult, FRAME_LENGTH, OVER_SAMP, sample_count, sample_rate, input, output, RUN_ADDING, run_adding_gain); + *(plugin_data->latency) = FRAME_LENGTH - (FRAME_LENGTH + / OVER_SAMP); +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainPitchScaleHQ(LADSPA_Handle instance, LADSPA_Data gain) { + ((PitchScaleHQ *)instance)->run_adding_gain = gain; +} + +static void runAddingPitchScaleHQ(LADSPA_Handle instance, unsigned long sample_count) { + PitchScaleHQ *plugin_data = (PitchScaleHQ *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Pitch co-efficient (float value) */ + const LADSPA_Data mult = *(plugin_data->mult); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + sbuffers * buffers = plugin_data->buffers; + long sample_rate = plugin_data->sample_rate; + +#line 23 "pitch_scale_1194.xml" + pitch_scale(buffers, mult, FRAME_LENGTH, OVER_SAMP, sample_count, sample_rate, input, output, RUN_ADDING, run_adding_gain); + *(plugin_data->latency) = FRAME_LENGTH - (FRAME_LENGTH + / OVER_SAMP); +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + pitchScaleHQDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (pitchScaleHQDescriptor) { + pitchScaleHQDescriptor->UniqueID = 1194; + pitchScaleHQDescriptor->Label = "pitchScaleHQ"; + pitchScaleHQDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + pitchScaleHQDescriptor->Name = + D_("Higher Quality Pitch Scaler"); + pitchScaleHQDescriptor->Maker = + "Steve Harris "; + pitchScaleHQDescriptor->Copyright = + "GPL"; + pitchScaleHQDescriptor->PortCount = 4; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(4, + sizeof(LADSPA_PortDescriptor)); + pitchScaleHQDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(4, + sizeof(LADSPA_PortRangeHint)); + pitchScaleHQDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(4, sizeof(char*)); + pitchScaleHQDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Pitch co-efficient */ + port_descriptors[PITCHSCALEHQ_MULT] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[PITCHSCALEHQ_MULT] = + D_("Pitch co-efficient"); + port_range_hints[PITCHSCALEHQ_MULT].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_1; + port_range_hints[PITCHSCALEHQ_MULT].LowerBound = 0.5; + port_range_hints[PITCHSCALEHQ_MULT].UpperBound = 2; + + /* Parameters for Input */ + port_descriptors[PITCHSCALEHQ_INPUT] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[PITCHSCALEHQ_INPUT] = + D_("Input"); + port_range_hints[PITCHSCALEHQ_INPUT].HintDescriptor = 0; + + /* Parameters for Output */ + port_descriptors[PITCHSCALEHQ_OUTPUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[PITCHSCALEHQ_OUTPUT] = + D_("Output"); + port_range_hints[PITCHSCALEHQ_OUTPUT].HintDescriptor = 0; + + /* Parameters for latency */ + port_descriptors[PITCHSCALEHQ_LATENCY] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_CONTROL; + port_names[PITCHSCALEHQ_LATENCY] = + D_("latency"); + port_range_hints[PITCHSCALEHQ_LATENCY].HintDescriptor = 0; + + pitchScaleHQDescriptor->activate = activatePitchScaleHQ; + pitchScaleHQDescriptor->cleanup = cleanupPitchScaleHQ; + pitchScaleHQDescriptor->connect_port = connectPortPitchScaleHQ; + pitchScaleHQDescriptor->deactivate = NULL; + pitchScaleHQDescriptor->instantiate = instantiatePitchScaleHQ; + pitchScaleHQDescriptor->run = runPitchScaleHQ; + pitchScaleHQDescriptor->run_adding = runAddingPitchScaleHQ; + pitchScaleHQDescriptor->set_run_adding_gain = setRunAddingGainPitchScaleHQ; + } +} + +void _fini() { + if (pitchScaleHQDescriptor) { + free((LADSPA_PortDescriptor *)pitchScaleHQDescriptor->PortDescriptors); + free((char **)pitchScaleHQDescriptor->PortNames); + free((LADSPA_PortRangeHint *)pitchScaleHQDescriptor->PortRangeHints); + free(pitchScaleHQDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/plate_1423.c b/plugins/ladspa_effect/swh/plate_1423.c new file mode 100644 index 000000000..644aac7bf --- /dev/null +++ b/plugins/ladspa_effect/swh/plate_1423.c @@ -0,0 +1,412 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + +#line 10 "plate_1423.xml" + +#include "util/waveguide_nl.h" + +#define LP_INNER 0.96f +#define LP_OUTER 0.983f + +#define RUN_WG(n, junct_a, junct_b) waveguide_nl_process_lin(w[n], junct_a - out[n*2+1], junct_b - out[n*2], out+n*2, out+n*2+1) + +#define PLATE_TIME 0 +#define PLATE_DAMPING 1 +#define PLATE_WET 2 +#define PLATE_INPUT 3 +#define PLATE_OUTPUTL 4 +#define PLATE_OUTPUTR 5 + +static LADSPA_Descriptor *plateDescriptor = NULL; + +typedef struct { + LADSPA_Data *time; + LADSPA_Data *damping; + LADSPA_Data *wet; + LADSPA_Data *input; + LADSPA_Data *outputl; + LADSPA_Data *outputr; + float * out; + waveguide_nl **w; + LADSPA_Data run_adding_gain; +} Plate; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return plateDescriptor; + default: + return NULL; + } +} + +static void activatePlate(LADSPA_Handle instance) { + Plate *plugin_data = (Plate *)instance; + float *out = plugin_data->out; + waveguide_nl **w = plugin_data->w; +#line 40 "plate_1423.xml" + unsigned int i; + + for (i = 0; i < 8; i++) { + waveguide_nl_reset(w[i]); + } + plugin_data->out = out; + plugin_data->w = w; + +} + +static void cleanupPlate(LADSPA_Handle instance) { +#line 85 "plate_1423.xml" + Plate *plugin_data = (Plate *)instance; + unsigned int i; + + for (i = 0; i < 8; i++) { + waveguide_nl_free(plugin_data->w[i]); + } + free(plugin_data->w); + free(plugin_data->out); + free(instance); +} + +static void connectPortPlate( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + Plate *plugin; + + plugin = (Plate *)instance; + switch (port) { + case PLATE_TIME: + plugin->time = data; + break; + case PLATE_DAMPING: + plugin->damping = data; + break; + case PLATE_WET: + plugin->wet = data; + break; + case PLATE_INPUT: + plugin->input = data; + break; + case PLATE_OUTPUTL: + plugin->outputl = data; + break; + case PLATE_OUTPUTR: + plugin->outputr = data; + break; + } +} + +static LADSPA_Handle instantiatePlate( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + Plate *plugin_data = (Plate *)malloc(sizeof(Plate)); + float *out = NULL; + waveguide_nl **w = NULL; + +#line 26 "plate_1423.xml" + w = malloc(8 * sizeof(waveguide_nl *)); + w[0] = waveguide_nl_new(2389, LP_INNER, 0.04f, 0.0f); + w[1] = waveguide_nl_new(4742, LP_INNER, 0.17f, 0.0f); + w[2] = waveguide_nl_new(4623, LP_INNER, 0.52f, 0.0f); + w[3] = waveguide_nl_new(2142, LP_INNER, 0.48f, 0.0f); + w[4] = waveguide_nl_new(5597, LP_OUTER, 0.32f, 0.0f); + w[5] = waveguide_nl_new(3692, LP_OUTER, 0.89f, 0.0f); + w[6] = waveguide_nl_new(5611, LP_OUTER, 0.28f, 0.0f); + w[7] = waveguide_nl_new(3703, LP_OUTER, 0.29f, 0.0f); + + out = calloc(32, sizeof(float)); + + plugin_data->out = out; + plugin_data->w = w; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runPlate(LADSPA_Handle instance, unsigned long sample_count) { + Plate *plugin_data = (Plate *)instance; + + /* Reverb time (float value) */ + const LADSPA_Data time = *(plugin_data->time); + + /* Damping (float value) */ + const LADSPA_Data damping = *(plugin_data->damping); + + /* Dry/wet mix (float value) */ + const LADSPA_Data wet = *(plugin_data->wet); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Left output (array of floats of length sample_count) */ + LADSPA_Data * const outputl = plugin_data->outputl; + + /* Right output (array of floats of length sample_count) */ + LADSPA_Data * const outputr = plugin_data->outputr; + float * out = plugin_data->out; + waveguide_nl ** w = plugin_data->w; + +#line 48 "plate_1423.xml" + unsigned long pos; + const float scale = powf(time * 0.117647f, 1.34f); + const float lpscale = 1.0f - damping * 0.93; + + for (pos=0; pos<8; pos++) { + waveguide_nl_set_delay(w[pos], w[pos]->size * scale); + } + for (pos=0; pos<4; pos++) { + waveguide_nl_set_fc(w[pos], LP_INNER * lpscale); + } + for (; pos<8; pos++) { + waveguide_nl_set_fc(w[pos], LP_OUTER * lpscale); + } + + for (pos = 0; pos < sample_count; pos++) { + const float alpha = (out[0] + out[2] + out[4] + out[6]) * 0.5f + + input[pos]; + const float beta = (out[1] + out[9] + out[14]) * 0.666666666f; + const float gamma = (out[3] + out[8] + out[11]) * 0.666666666f; + const float delta = (out[5] + out[10] + out[13]) * 0.666666666f; + const float epsilon = (out[7] + out[12] + out[15]) * 0.666666666f; + + RUN_WG(0, beta, alpha); + RUN_WG(1, gamma, alpha); + RUN_WG(2, delta, alpha); + RUN_WG(3, epsilon, alpha); + RUN_WG(4, beta, gamma); + RUN_WG(5, gamma, delta); + RUN_WG(6, delta, epsilon); + RUN_WG(7, epsilon, beta); + + buffer_write(outputl[pos], beta * wet + input[pos] * (1.0f - wet)); + buffer_write(outputr[pos], gamma * wet + input[pos] * (1.0f - wet)); + } +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainPlate(LADSPA_Handle instance, LADSPA_Data gain) { + ((Plate *)instance)->run_adding_gain = gain; +} + +static void runAddingPlate(LADSPA_Handle instance, unsigned long sample_count) { + Plate *plugin_data = (Plate *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Reverb time (float value) */ + const LADSPA_Data time = *(plugin_data->time); + + /* Damping (float value) */ + const LADSPA_Data damping = *(plugin_data->damping); + + /* Dry/wet mix (float value) */ + const LADSPA_Data wet = *(plugin_data->wet); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Left output (array of floats of length sample_count) */ + LADSPA_Data * const outputl = plugin_data->outputl; + + /* Right output (array of floats of length sample_count) */ + LADSPA_Data * const outputr = plugin_data->outputr; + float * out = plugin_data->out; + waveguide_nl ** w = plugin_data->w; + +#line 48 "plate_1423.xml" + unsigned long pos; + const float scale = powf(time * 0.117647f, 1.34f); + const float lpscale = 1.0f - damping * 0.93; + + for (pos=0; pos<8; pos++) { + waveguide_nl_set_delay(w[pos], w[pos]->size * scale); + } + for (pos=0; pos<4; pos++) { + waveguide_nl_set_fc(w[pos], LP_INNER * lpscale); + } + for (; pos<8; pos++) { + waveguide_nl_set_fc(w[pos], LP_OUTER * lpscale); + } + + for (pos = 0; pos < sample_count; pos++) { + const float alpha = (out[0] + out[2] + out[4] + out[6]) * 0.5f + + input[pos]; + const float beta = (out[1] + out[9] + out[14]) * 0.666666666f; + const float gamma = (out[3] + out[8] + out[11]) * 0.666666666f; + const float delta = (out[5] + out[10] + out[13]) * 0.666666666f; + const float epsilon = (out[7] + out[12] + out[15]) * 0.666666666f; + + RUN_WG(0, beta, alpha); + RUN_WG(1, gamma, alpha); + RUN_WG(2, delta, alpha); + RUN_WG(3, epsilon, alpha); + RUN_WG(4, beta, gamma); + RUN_WG(5, gamma, delta); + RUN_WG(6, delta, epsilon); + RUN_WG(7, epsilon, beta); + + buffer_write(outputl[pos], beta * wet + input[pos] * (1.0f - wet)); + buffer_write(outputr[pos], gamma * wet + input[pos] * (1.0f - wet)); + } +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + plateDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (plateDescriptor) { + plateDescriptor->UniqueID = 1423; + plateDescriptor->Label = "plate"; + plateDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + plateDescriptor->Name = + D_("Plate reverb"); + plateDescriptor->Maker = + "Steve Harris "; + plateDescriptor->Copyright = + "GPL"; + plateDescriptor->PortCount = 6; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(6, + sizeof(LADSPA_PortDescriptor)); + plateDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(6, + sizeof(LADSPA_PortRangeHint)); + plateDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(6, sizeof(char*)); + plateDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Reverb time */ + port_descriptors[PLATE_TIME] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[PLATE_TIME] = + D_("Reverb time"); + port_range_hints[PLATE_TIME].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MIDDLE; + port_range_hints[PLATE_TIME].LowerBound = 0.01; + port_range_hints[PLATE_TIME].UpperBound = 8.5; + + /* Parameters for Damping */ + port_descriptors[PLATE_DAMPING] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[PLATE_DAMPING] = + D_("Damping"); + port_range_hints[PLATE_DAMPING].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_LOW; + port_range_hints[PLATE_DAMPING].LowerBound = 0; + port_range_hints[PLATE_DAMPING].UpperBound = 1; + + /* Parameters for Dry/wet mix */ + port_descriptors[PLATE_WET] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[PLATE_WET] = + D_("Dry/wet mix"); + port_range_hints[PLATE_WET].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_LOW; + port_range_hints[PLATE_WET].LowerBound = 0; + port_range_hints[PLATE_WET].UpperBound = 1; + + /* Parameters for Input */ + port_descriptors[PLATE_INPUT] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[PLATE_INPUT] = + D_("Input"); + port_range_hints[PLATE_INPUT].HintDescriptor = 0; + + /* Parameters for Left output */ + port_descriptors[PLATE_OUTPUTL] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[PLATE_OUTPUTL] = + D_("Left output"); + port_range_hints[PLATE_OUTPUTL].HintDescriptor = 0; + + /* Parameters for Right output */ + port_descriptors[PLATE_OUTPUTR] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[PLATE_OUTPUTR] = + D_("Right output"); + port_range_hints[PLATE_OUTPUTR].HintDescriptor = 0; + + plateDescriptor->activate = activatePlate; + plateDescriptor->cleanup = cleanupPlate; + plateDescriptor->connect_port = connectPortPlate; + plateDescriptor->deactivate = NULL; + plateDescriptor->instantiate = instantiatePlate; + plateDescriptor->run = runPlate; + plateDescriptor->run_adding = runAddingPlate; + plateDescriptor->set_run_adding_gain = setRunAddingGainPlate; + } +} + +void _fini() { + if (plateDescriptor) { + free((LADSPA_PortDescriptor *)plateDescriptor->PortDescriptors); + free((char **)plateDescriptor->PortNames); + free((LADSPA_PortRangeHint *)plateDescriptor->PortRangeHints); + free(plateDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/pointer_cast_1910.c b/plugins/ladspa_effect/swh/pointer_cast_1910.c new file mode 100644 index 000000000..264821ad8 --- /dev/null +++ b/plugins/ladspa_effect/swh/pointer_cast_1910.c @@ -0,0 +1,321 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + +#line 10 "pointer_cast_1910.xml" + +#include + +#include "ladspa-util.h" +#include "util/biquad.h" + +typedef union { + LADSPA_Data fp; + int in; +} pcast; + +#define POINTERCASTDISTORTION_CUTOFF 0 +#define POINTERCASTDISTORTION_WET 1 +#define POINTERCASTDISTORTION_INPUT 2 +#define POINTERCASTDISTORTION_OUTPUT 3 + +static LADSPA_Descriptor *pointerCastDistortionDescriptor = NULL; + +typedef struct { + LADSPA_Data *cutoff; + LADSPA_Data *wet; + LADSPA_Data *input; + LADSPA_Data *output; + biquad * filt; + float fs; + LADSPA_Data run_adding_gain; +} PointerCastDistortion; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return pointerCastDistortionDescriptor; + default: + return NULL; + } +} + +static void activatePointerCastDistortion(LADSPA_Handle instance) { + PointerCastDistortion *plugin_data = (PointerCastDistortion *)instance; + biquad *filt = plugin_data->filt; + float fs = plugin_data->fs; +#line 36 "pointer_cast_1910.xml" + biquad_init(filt); + plugin_data->filt = filt; + plugin_data->fs = fs; + +} + +static void cleanupPointerCastDistortion(LADSPA_Handle instance) { +#line 59 "pointer_cast_1910.xml" + PointerCastDistortion *plugin_data = (PointerCastDistortion *)instance; + free(plugin_data->filt); + free(instance); +} + +static void connectPortPointerCastDistortion( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + PointerCastDistortion *plugin; + + plugin = (PointerCastDistortion *)instance; + switch (port) { + case POINTERCASTDISTORTION_CUTOFF: + plugin->cutoff = data; + break; + case POINTERCASTDISTORTION_WET: + plugin->wet = data; + break; + case POINTERCASTDISTORTION_INPUT: + plugin->input = data; + break; + case POINTERCASTDISTORTION_OUTPUT: + plugin->output = data; + break; + } +} + +static LADSPA_Handle instantiatePointerCastDistortion( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + PointerCastDistortion *plugin_data = (PointerCastDistortion *)malloc(sizeof(PointerCastDistortion)); + biquad *filt = NULL; + float fs; + +#line 31 "pointer_cast_1910.xml" + filt = malloc(sizeof(biquad)); + fs = s_rate; + + plugin_data->filt = filt; + plugin_data->fs = fs; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runPointerCastDistortion(LADSPA_Handle instance, unsigned long sample_count) { + PointerCastDistortion *plugin_data = (PointerCastDistortion *)instance; + + /* Effect cutoff freq (Hz) (float value) */ + const LADSPA_Data cutoff = *(plugin_data->cutoff); + + /* Dry/wet mix (float value) */ + const LADSPA_Data wet = *(plugin_data->wet); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + biquad * filt = plugin_data->filt; + float fs = plugin_data->fs; + +#line 40 "pointer_cast_1910.xml" + unsigned long pos; + const float filt_scale = cutoff < 50.0f ? cutoff / 50.0f : 1.0f; + + lp_set_params(filt, cutoff, 1.0f, fs); + + for (pos = 0; pos < sample_count; pos++) { + pcast val; + float sign, filt_val, dist_val; + + filt_val = biquad_run(filt, input[pos]) * filt_scale; + sign = filt_val < 0.0f ? -1.0f : 1.0f; + val.fp = fabs(filt_val); + dist_val = sign * (LADSPA_Data)val.in / (LADSPA_Data)INT_MAX + + (input[pos] - filt_val); + buffer_write(output[pos], LIN_INTERP(wet, input[pos], dist_val)); + } +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainPointerCastDistortion(LADSPA_Handle instance, LADSPA_Data gain) { + ((PointerCastDistortion *)instance)->run_adding_gain = gain; +} + +static void runAddingPointerCastDistortion(LADSPA_Handle instance, unsigned long sample_count) { + PointerCastDistortion *plugin_data = (PointerCastDistortion *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Effect cutoff freq (Hz) (float value) */ + const LADSPA_Data cutoff = *(plugin_data->cutoff); + + /* Dry/wet mix (float value) */ + const LADSPA_Data wet = *(plugin_data->wet); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + biquad * filt = plugin_data->filt; + float fs = plugin_data->fs; + +#line 40 "pointer_cast_1910.xml" + unsigned long pos; + const float filt_scale = cutoff < 50.0f ? cutoff / 50.0f : 1.0f; + + lp_set_params(filt, cutoff, 1.0f, fs); + + for (pos = 0; pos < sample_count; pos++) { + pcast val; + float sign, filt_val, dist_val; + + filt_val = biquad_run(filt, input[pos]) * filt_scale; + sign = filt_val < 0.0f ? -1.0f : 1.0f; + val.fp = fabs(filt_val); + dist_val = sign * (LADSPA_Data)val.in / (LADSPA_Data)INT_MAX + + (input[pos] - filt_val); + buffer_write(output[pos], LIN_INTERP(wet, input[pos], dist_val)); + } +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + pointerCastDistortionDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (pointerCastDistortionDescriptor) { + pointerCastDistortionDescriptor->UniqueID = 1910; + pointerCastDistortionDescriptor->Label = "pointerCastDistortion"; + pointerCastDistortionDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + pointerCastDistortionDescriptor->Name = + D_("Pointer cast distortion"); + pointerCastDistortionDescriptor->Maker = + "Steve Harris "; + pointerCastDistortionDescriptor->Copyright = + "GPL"; + pointerCastDistortionDescriptor->PortCount = 4; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(4, + sizeof(LADSPA_PortDescriptor)); + pointerCastDistortionDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(4, + sizeof(LADSPA_PortRangeHint)); + pointerCastDistortionDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(4, sizeof(char*)); + pointerCastDistortionDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Effect cutoff freq (Hz) */ + port_descriptors[POINTERCASTDISTORTION_CUTOFF] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[POINTERCASTDISTORTION_CUTOFF] = + D_("Effect cutoff freq (Hz)"); + port_range_hints[POINTERCASTDISTORTION_CUTOFF].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_LOGARITHMIC | LADSPA_HINT_SAMPLE_RATE | LADSPA_HINT_DEFAULT_LOW; + port_range_hints[POINTERCASTDISTORTION_CUTOFF].LowerBound = 0.0001; + port_range_hints[POINTERCASTDISTORTION_CUTOFF].UpperBound = 0.3; + + /* Parameters for Dry/wet mix */ + port_descriptors[POINTERCASTDISTORTION_WET] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[POINTERCASTDISTORTION_WET] = + D_("Dry/wet mix"); + port_range_hints[POINTERCASTDISTORTION_WET].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[POINTERCASTDISTORTION_WET].LowerBound = 0; + port_range_hints[POINTERCASTDISTORTION_WET].UpperBound = 1; + + /* Parameters for Input */ + port_descriptors[POINTERCASTDISTORTION_INPUT] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[POINTERCASTDISTORTION_INPUT] = + D_("Input"); + port_range_hints[POINTERCASTDISTORTION_INPUT].HintDescriptor = 0; + + /* Parameters for Output */ + port_descriptors[POINTERCASTDISTORTION_OUTPUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[POINTERCASTDISTORTION_OUTPUT] = + D_("Output"); + port_range_hints[POINTERCASTDISTORTION_OUTPUT].HintDescriptor = 0; + + pointerCastDistortionDescriptor->activate = activatePointerCastDistortion; + pointerCastDistortionDescriptor->cleanup = cleanupPointerCastDistortion; + pointerCastDistortionDescriptor->connect_port = connectPortPointerCastDistortion; + pointerCastDistortionDescriptor->deactivate = NULL; + pointerCastDistortionDescriptor->instantiate = instantiatePointerCastDistortion; + pointerCastDistortionDescriptor->run = runPointerCastDistortion; + pointerCastDistortionDescriptor->run_adding = runAddingPointerCastDistortion; + pointerCastDistortionDescriptor->set_run_adding_gain = setRunAddingGainPointerCastDistortion; + } +} + +void _fini() { + if (pointerCastDistortionDescriptor) { + free((LADSPA_PortDescriptor *)pointerCastDistortionDescriptor->PortDescriptors); + free((char **)pointerCastDistortionDescriptor->PortNames); + free((LADSPA_PortRangeHint *)pointerCastDistortionDescriptor->PortRangeHints); + free(pointerCastDistortionDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/rate_shifter_1417.c b/plugins/ladspa_effect/swh/rate_shifter_1417.c new file mode 100644 index 000000000..fc2501e98 --- /dev/null +++ b/plugins/ladspa_effect/swh/rate_shifter_1417.c @@ -0,0 +1,325 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + +#line 10 "rate_shifter_1417.xml" + +#include "ladspa-util.h" + +#define RATESHIFTER_RATE 0 +#define RATESHIFTER_INPUT 1 +#define RATESHIFTER_OUTPUT 2 + +static LADSPA_Descriptor *rateShifterDescriptor = NULL; + +typedef struct { + LADSPA_Data *rate; + LADSPA_Data *input; + LADSPA_Data *output; + LADSPA_Data *buffer; + unsigned int buffer_mask; + fixp32 read_ptr; + unsigned int write_ptr; + LADSPA_Data run_adding_gain; +} RateShifter; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return rateShifterDescriptor; + default: + return NULL; + } +} + +static void activateRateShifter(LADSPA_Handle instance) { + RateShifter *plugin_data = (RateShifter *)instance; + LADSPA_Data *buffer = plugin_data->buffer; + unsigned int buffer_mask = plugin_data->buffer_mask; + fixp32 read_ptr = plugin_data->read_ptr; + unsigned int write_ptr = plugin_data->write_ptr; +#line 36 "rate_shifter_1417.xml" + memset(buffer, 0, buffer_mask + 1); + read_ptr.all = 0; + write_ptr = (buffer_mask + 1) / 2; + write_ptr = 0; + plugin_data->buffer = buffer; + plugin_data->buffer_mask = buffer_mask; + plugin_data->read_ptr = read_ptr; + plugin_data->write_ptr = write_ptr; + +} + +static void cleanupRateShifter(LADSPA_Handle instance) { +#line 43 "rate_shifter_1417.xml" + RateShifter *plugin_data = (RateShifter *)instance; + free(plugin_data->buffer); + free(instance); +} + +static void connectPortRateShifter( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + RateShifter *plugin; + + plugin = (RateShifter *)instance; + switch (port) { + case RATESHIFTER_RATE: + plugin->rate = data; + break; + case RATESHIFTER_INPUT: + plugin->input = data; + break; + case RATESHIFTER_OUTPUT: + plugin->output = data; + break; + } +} + +static LADSPA_Handle instantiateRateShifter( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + RateShifter *plugin_data = (RateShifter *)malloc(sizeof(RateShifter)); + LADSPA_Data *buffer = NULL; + unsigned int buffer_mask; + fixp32 read_ptr; + unsigned int write_ptr; + +#line 23 "rate_shifter_1417.xml" + unsigned int size = 32768; + const float fs = s_rate; + + while (size < 2.7f * fs) { + size *= 2; + } + buffer = calloc(size, sizeof(LADSPA_Data)); + buffer_mask = size - 1; + read_ptr.all = 0; + write_ptr = size / 2; + + plugin_data->buffer = buffer; + plugin_data->buffer_mask = buffer_mask; + plugin_data->read_ptr = read_ptr; + plugin_data->write_ptr = write_ptr; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runRateShifter(LADSPA_Handle instance, unsigned long sample_count) { + RateShifter *plugin_data = (RateShifter *)instance; + + /* Rate (float value) */ + const LADSPA_Data rate = *(plugin_data->rate); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + LADSPA_Data * buffer = plugin_data->buffer; + unsigned int buffer_mask = plugin_data->buffer_mask; + fixp32 read_ptr = plugin_data->read_ptr; + unsigned int write_ptr = plugin_data->write_ptr; + +#line 47 "rate_shifter_1417.xml" + unsigned long pos; + fixp32 read_inc; + + read_inc.all = (long long)(rate * 4294967296.0f); + + for (pos = 0; pos < sample_count; pos++) { + const unsigned int rp = read_ptr.part.in; + + /* Do write pointer stuff */ + buffer[write_ptr] = input[pos]; + write_ptr = (write_ptr + 1) & buffer_mask; + + /* And now read pointer */ + buffer_write(output[pos], cube_interp((float)read_ptr.part.fr / 4294967296.0f, buffer[(rp - 1) & buffer_mask], buffer[rp], buffer[(rp + 1) & buffer_mask], buffer[(rp + 2) & buffer_mask])); + read_ptr.all += read_inc.all; + read_ptr.part.in &= buffer_mask; + } + + plugin_data->read_ptr.all = read_ptr.all; + plugin_data->write_ptr = write_ptr; +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainRateShifter(LADSPA_Handle instance, LADSPA_Data gain) { + ((RateShifter *)instance)->run_adding_gain = gain; +} + +static void runAddingRateShifter(LADSPA_Handle instance, unsigned long sample_count) { + RateShifter *plugin_data = (RateShifter *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Rate (float value) */ + const LADSPA_Data rate = *(plugin_data->rate); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + LADSPA_Data * buffer = plugin_data->buffer; + unsigned int buffer_mask = plugin_data->buffer_mask; + fixp32 read_ptr = plugin_data->read_ptr; + unsigned int write_ptr = plugin_data->write_ptr; + +#line 47 "rate_shifter_1417.xml" + unsigned long pos; + fixp32 read_inc; + + read_inc.all = (long long)(rate * 4294967296.0f); + + for (pos = 0; pos < sample_count; pos++) { + const unsigned int rp = read_ptr.part.in; + + /* Do write pointer stuff */ + buffer[write_ptr] = input[pos]; + write_ptr = (write_ptr + 1) & buffer_mask; + + /* And now read pointer */ + buffer_write(output[pos], cube_interp((float)read_ptr.part.fr / 4294967296.0f, buffer[(rp - 1) & buffer_mask], buffer[rp], buffer[(rp + 1) & buffer_mask], buffer[(rp + 2) & buffer_mask])); + read_ptr.all += read_inc.all; + read_ptr.part.in &= buffer_mask; + } + + plugin_data->read_ptr.all = read_ptr.all; + plugin_data->write_ptr = write_ptr; +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + rateShifterDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (rateShifterDescriptor) { + rateShifterDescriptor->UniqueID = 1417; + rateShifterDescriptor->Label = "rateShifter"; + rateShifterDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + rateShifterDescriptor->Name = + D_("Rate shifter"); + rateShifterDescriptor->Maker = + "Steve Harris "; + rateShifterDescriptor->Copyright = + "GPL"; + rateShifterDescriptor->PortCount = 3; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(3, + sizeof(LADSPA_PortDescriptor)); + rateShifterDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(3, + sizeof(LADSPA_PortRangeHint)); + rateShifterDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(3, sizeof(char*)); + rateShifterDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Rate */ + port_descriptors[RATESHIFTER_RATE] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[RATESHIFTER_RATE] = + D_("Rate"); + port_range_hints[RATESHIFTER_RATE].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_1; + port_range_hints[RATESHIFTER_RATE].LowerBound = -4; + port_range_hints[RATESHIFTER_RATE].UpperBound = 4; + + /* Parameters for Input */ + port_descriptors[RATESHIFTER_INPUT] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[RATESHIFTER_INPUT] = + D_("Input"); + port_range_hints[RATESHIFTER_INPUT].HintDescriptor = 0; + + /* Parameters for Output */ + port_descriptors[RATESHIFTER_OUTPUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[RATESHIFTER_OUTPUT] = + D_("Output"); + port_range_hints[RATESHIFTER_OUTPUT].HintDescriptor = 0; + + rateShifterDescriptor->activate = activateRateShifter; + rateShifterDescriptor->cleanup = cleanupRateShifter; + rateShifterDescriptor->connect_port = connectPortRateShifter; + rateShifterDescriptor->deactivate = NULL; + rateShifterDescriptor->instantiate = instantiateRateShifter; + rateShifterDescriptor->run = runRateShifter; + rateShifterDescriptor->run_adding = runAddingRateShifter; + rateShifterDescriptor->set_run_adding_gain = setRunAddingGainRateShifter; + } +} + +void _fini() { + if (rateShifterDescriptor) { + free((LADSPA_PortDescriptor *)rateShifterDescriptor->PortDescriptors); + free((char **)rateShifterDescriptor->PortNames); + free((LADSPA_PortRangeHint *)rateShifterDescriptor->PortRangeHints); + free(rateShifterDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/retro_flange_1208.c b/plugins/ladspa_effect/swh/retro_flange_1208.c new file mode 100644 index 000000000..5a4124bfd --- /dev/null +++ b/plugins/ladspa_effect/swh/retro_flange_1208.c @@ -0,0 +1,592 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + +#line 10 "retro_flange_1208.xml" + +#include "ladspa-util.h" + +#define BASE_BUFFER 0.001 // Base buffer length (s) + +inline LADSPA_Data sat(LADSPA_Data x, float q, float dist) { + if (x == q) { + return 1.0f / dist + q / (1.0f - f_exp(dist * q)); + } + return ((x - q) / (1.0f - f_exp(-dist * (x - q))) + q / + (1.0f - f_exp(dist * q))); +} + +#define RETROFLANGE_DELAY_DEPTH_AVG 0 +#define RETROFLANGE_LAW_FREQ 1 +#define RETROFLANGE_INPUT 2 +#define RETROFLANGE_OUTPUT 3 + +static LADSPA_Descriptor *retroFlangeDescriptor = NULL; + +typedef struct { + LADSPA_Data *delay_depth_avg; + LADSPA_Data *law_freq; + LADSPA_Data *input; + LADSPA_Data *output; + LADSPA_Data *buffer; + long buffer_size; + long count; + LADSPA_Data *delay_line; + int delay_line_length; + int delay_pos; + LADSPA_Data last_in; + int last_law_p; + int last_phase; + int max_law_p; + float next_law_peak; + int next_law_pos; + float phase; + float prev_law_peak; + int prev_law_pos; + long sample_rate; + LADSPA_Data z0; + LADSPA_Data z1; + LADSPA_Data z2; + LADSPA_Data run_adding_gain; +} RetroFlange; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return retroFlangeDescriptor; + default: + return NULL; + } +} + +static void activateRetroFlange(LADSPA_Handle instance) { + RetroFlange *plugin_data = (RetroFlange *)instance; + LADSPA_Data *buffer = plugin_data->buffer; + long buffer_size = plugin_data->buffer_size; + long count = plugin_data->count; + LADSPA_Data *delay_line = plugin_data->delay_line; + int delay_line_length = plugin_data->delay_line_length; + int delay_pos = plugin_data->delay_pos; + LADSPA_Data last_in = plugin_data->last_in; + int last_law_p = plugin_data->last_law_p; + int last_phase = plugin_data->last_phase; + int max_law_p = plugin_data->max_law_p; + float next_law_peak = plugin_data->next_law_peak; + int next_law_pos = plugin_data->next_law_pos; + float phase = plugin_data->phase; + float prev_law_peak = plugin_data->prev_law_peak; + int prev_law_pos = plugin_data->prev_law_pos; + long sample_rate = plugin_data->sample_rate; + LADSPA_Data z0 = plugin_data->z0; + LADSPA_Data z1 = plugin_data->z1; + LADSPA_Data z2 = plugin_data->z2; +#line 57 "retro_flange_1208.xml" + memset(delay_line, 0, sizeof(float) * delay_line_length); + memset(buffer, 0, sizeof(LADSPA_Data) * buffer_size); + z0 = 0.0f; + z1 = 0.0f; + z2 = 0.0f; + + prev_law_peak = 0.0f; + next_law_peak = 1.0f; + prev_law_pos = 0; + next_law_pos = 10; + plugin_data->buffer = buffer; + plugin_data->buffer_size = buffer_size; + plugin_data->count = count; + plugin_data->delay_line = delay_line; + plugin_data->delay_line_length = delay_line_length; + plugin_data->delay_pos = delay_pos; + plugin_data->last_in = last_in; + plugin_data->last_law_p = last_law_p; + plugin_data->last_phase = last_phase; + plugin_data->max_law_p = max_law_p; + plugin_data->next_law_peak = next_law_peak; + plugin_data->next_law_pos = next_law_pos; + plugin_data->phase = phase; + plugin_data->prev_law_peak = prev_law_peak; + plugin_data->prev_law_pos = prev_law_pos; + plugin_data->sample_rate = sample_rate; + plugin_data->z0 = z0; + plugin_data->z1 = z1; + plugin_data->z2 = z2; + +} + +static void cleanupRetroFlange(LADSPA_Handle instance) { +#line 70 "retro_flange_1208.xml" + RetroFlange *plugin_data = (RetroFlange *)instance; + free(plugin_data->delay_line); + free(plugin_data->buffer); + free(instance); +} + +static void connectPortRetroFlange( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + RetroFlange *plugin; + + plugin = (RetroFlange *)instance; + switch (port) { + case RETROFLANGE_DELAY_DEPTH_AVG: + plugin->delay_depth_avg = data; + break; + case RETROFLANGE_LAW_FREQ: + plugin->law_freq = data; + break; + case RETROFLANGE_INPUT: + plugin->input = data; + break; + case RETROFLANGE_OUTPUT: + plugin->output = data; + break; + } +} + +static LADSPA_Handle instantiateRetroFlange( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + RetroFlange *plugin_data = (RetroFlange *)malloc(sizeof(RetroFlange)); + LADSPA_Data *buffer = NULL; + long buffer_size; + long count; + LADSPA_Data *delay_line = NULL; + int delay_line_length; + int delay_pos; + LADSPA_Data last_in; + int last_law_p; + int last_phase; + int max_law_p; + float next_law_peak; + int next_law_pos; + float phase; + float prev_law_peak; + int prev_law_pos; + long sample_rate; + LADSPA_Data z0; + LADSPA_Data z1; + LADSPA_Data z2; + +#line 32 "retro_flange_1208.xml" + sample_rate = s_rate; + buffer_size = BASE_BUFFER * s_rate; + buffer = calloc(buffer_size, sizeof(LADSPA_Data)); + phase = 0; + last_phase = 0; + last_in = 0.0f; + max_law_p = s_rate*2; + last_law_p = -1; + delay_line_length = sample_rate * 0.01f; + delay_line = calloc(sizeof(float), delay_line_length); + + delay_pos = 0; + count = 0; + + prev_law_peak = 0.0f; + next_law_peak = 1.0f; + prev_law_pos = 0; + next_law_pos = 10; + + z0 = 0.0f; + z1 = 0.0f; + z2 = 0.0f; + + plugin_data->buffer = buffer; + plugin_data->buffer_size = buffer_size; + plugin_data->count = count; + plugin_data->delay_line = delay_line; + plugin_data->delay_line_length = delay_line_length; + plugin_data->delay_pos = delay_pos; + plugin_data->last_in = last_in; + plugin_data->last_law_p = last_law_p; + plugin_data->last_phase = last_phase; + plugin_data->max_law_p = max_law_p; + plugin_data->next_law_peak = next_law_peak; + plugin_data->next_law_pos = next_law_pos; + plugin_data->phase = phase; + plugin_data->prev_law_peak = prev_law_peak; + plugin_data->prev_law_pos = prev_law_pos; + plugin_data->sample_rate = sample_rate; + plugin_data->z0 = z0; + plugin_data->z1 = z1; + plugin_data->z2 = z2; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runRetroFlange(LADSPA_Handle instance, unsigned long sample_count) { + RetroFlange *plugin_data = (RetroFlange *)instance; + + /* Average stall (ms) (float value) */ + const LADSPA_Data delay_depth_avg = *(plugin_data->delay_depth_avg); + + /* Flange frequency (Hz) (float value) */ + const LADSPA_Data law_freq = *(plugin_data->law_freq); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + LADSPA_Data * buffer = plugin_data->buffer; + long buffer_size = plugin_data->buffer_size; + long count = plugin_data->count; + LADSPA_Data * delay_line = plugin_data->delay_line; + int delay_line_length = plugin_data->delay_line_length; + int delay_pos = plugin_data->delay_pos; + LADSPA_Data last_in = plugin_data->last_in; + int last_law_p = plugin_data->last_law_p; + int last_phase = plugin_data->last_phase; + int max_law_p = plugin_data->max_law_p; + float next_law_peak = plugin_data->next_law_peak; + int next_law_pos = plugin_data->next_law_pos; + float phase = plugin_data->phase; + float prev_law_peak = plugin_data->prev_law_peak; + int prev_law_pos = plugin_data->prev_law_pos; + long sample_rate = plugin_data->sample_rate; + LADSPA_Data z0 = plugin_data->z0; + LADSPA_Data z1 = plugin_data->z1; + LADSPA_Data z2 = plugin_data->z2; + +#line 75 "retro_flange_1208.xml" + long int pos; + int law_p = f_trunc(LIMIT(sample_rate / f_clamp(law_freq, 0.0001f, 100.0f), 1, max_law_p)); + float increment; + float lin_int, lin_inc; + int track; + int fph; + LADSPA_Data out = 0.0f; + const float dda_c = f_clamp(delay_depth_avg, 0.0f, 10.0f); + int dl_used = (dda_c * sample_rate) / 1000; + float inc_base = 1000.0f * (float)BASE_BUFFER; + const float delay_depth = 2.0f * dda_c; + float n_ph, p_ph, law; + + for (pos = 0; pos < sample_count; pos++) { + // Write into the delay line + delay_line[delay_pos] = input[pos]; + z0 = delay_line[MOD(delay_pos - dl_used, delay_line_length)] + 0.12919609397f*z1 - 0.31050847f*z2; + out = sat(z0*0.20466966f + z1*0.40933933f + z2*0.40933933f, + -0.23f, 3.3f); + z2 = z1; z1 = z0; + delay_pos = (delay_pos + 1) % delay_line_length; + + if ((count++ % law_p) == 0) { + // Value for amplitude of law peak + next_law_peak = (float)rand() / (float)RAND_MAX; + next_law_pos = count + law_p; + } else if (count % law_p == law_p / 2) { + // Value for amplitude of law peak + prev_law_peak = (float)rand() / (float)RAND_MAX; + prev_law_pos = count + law_p; + } + + n_ph = (float)(law_p - abs(next_law_pos - count))/(float)law_p; + p_ph = n_ph + 0.5f; + if (p_ph > 1.0f) { + p_ph -= 1.0f; + } + law = f_sin_sq(3.1415926f*p_ph)*prev_law_peak + + f_sin_sq(3.1415926f*n_ph)*next_law_peak; + + increment = inc_base / (delay_depth * law + 0.2); + fph = f_trunc(phase); + last_phase = fph; + lin_int = phase - (float)fph; + out += LIN_INTERP(lin_int, buffer[(fph+1) % buffer_size], + buffer[(fph+2) % buffer_size]); + phase += increment; + lin_inc = 1.0f / (floor(phase) - last_phase + 1); + lin_inc = lin_inc > 1.0f ? 1.0f : lin_inc; + lin_int = 0.0f; + for (track = last_phase; track < phase; track++) { + lin_int += lin_inc; + buffer[track % buffer_size] = + LIN_INTERP(lin_int, last_in, input[pos]); + } + last_in = input[pos]; + buffer_write(output[pos], out * 0.707f); + if (phase >= buffer_size) { + phase -= buffer_size; + } + } + + // Store current phase in instance + plugin_data->phase = phase; + plugin_data->prev_law_peak = prev_law_peak; + plugin_data->next_law_peak = next_law_peak; + plugin_data->prev_law_pos = prev_law_pos; + plugin_data->next_law_pos = next_law_pos; + plugin_data->last_phase = last_phase; + plugin_data->last_in = last_in; + plugin_data->count = count; + plugin_data->last_law_p = last_law_p; + plugin_data->delay_pos = delay_pos; + plugin_data->z0 = z0; + plugin_data->z1 = z1; + plugin_data->z2 = z2; +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainRetroFlange(LADSPA_Handle instance, LADSPA_Data gain) { + ((RetroFlange *)instance)->run_adding_gain = gain; +} + +static void runAddingRetroFlange(LADSPA_Handle instance, unsigned long sample_count) { + RetroFlange *plugin_data = (RetroFlange *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Average stall (ms) (float value) */ + const LADSPA_Data delay_depth_avg = *(plugin_data->delay_depth_avg); + + /* Flange frequency (Hz) (float value) */ + const LADSPA_Data law_freq = *(plugin_data->law_freq); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + LADSPA_Data * buffer = plugin_data->buffer; + long buffer_size = plugin_data->buffer_size; + long count = plugin_data->count; + LADSPA_Data * delay_line = plugin_data->delay_line; + int delay_line_length = plugin_data->delay_line_length; + int delay_pos = plugin_data->delay_pos; + LADSPA_Data last_in = plugin_data->last_in; + int last_law_p = plugin_data->last_law_p; + int last_phase = plugin_data->last_phase; + int max_law_p = plugin_data->max_law_p; + float next_law_peak = plugin_data->next_law_peak; + int next_law_pos = plugin_data->next_law_pos; + float phase = plugin_data->phase; + float prev_law_peak = plugin_data->prev_law_peak; + int prev_law_pos = plugin_data->prev_law_pos; + long sample_rate = plugin_data->sample_rate; + LADSPA_Data z0 = plugin_data->z0; + LADSPA_Data z1 = plugin_data->z1; + LADSPA_Data z2 = plugin_data->z2; + +#line 75 "retro_flange_1208.xml" + long int pos; + int law_p = f_trunc(LIMIT(sample_rate / f_clamp(law_freq, 0.0001f, 100.0f), 1, max_law_p)); + float increment; + float lin_int, lin_inc; + int track; + int fph; + LADSPA_Data out = 0.0f; + const float dda_c = f_clamp(delay_depth_avg, 0.0f, 10.0f); + int dl_used = (dda_c * sample_rate) / 1000; + float inc_base = 1000.0f * (float)BASE_BUFFER; + const float delay_depth = 2.0f * dda_c; + float n_ph, p_ph, law; + + for (pos = 0; pos < sample_count; pos++) { + // Write into the delay line + delay_line[delay_pos] = input[pos]; + z0 = delay_line[MOD(delay_pos - dl_used, delay_line_length)] + 0.12919609397f*z1 - 0.31050847f*z2; + out = sat(z0*0.20466966f + z1*0.40933933f + z2*0.40933933f, + -0.23f, 3.3f); + z2 = z1; z1 = z0; + delay_pos = (delay_pos + 1) % delay_line_length; + + if ((count++ % law_p) == 0) { + // Value for amplitude of law peak + next_law_peak = (float)rand() / (float)RAND_MAX; + next_law_pos = count + law_p; + } else if (count % law_p == law_p / 2) { + // Value for amplitude of law peak + prev_law_peak = (float)rand() / (float)RAND_MAX; + prev_law_pos = count + law_p; + } + + n_ph = (float)(law_p - abs(next_law_pos - count))/(float)law_p; + p_ph = n_ph + 0.5f; + if (p_ph > 1.0f) { + p_ph -= 1.0f; + } + law = f_sin_sq(3.1415926f*p_ph)*prev_law_peak + + f_sin_sq(3.1415926f*n_ph)*next_law_peak; + + increment = inc_base / (delay_depth * law + 0.2); + fph = f_trunc(phase); + last_phase = fph; + lin_int = phase - (float)fph; + out += LIN_INTERP(lin_int, buffer[(fph+1) % buffer_size], + buffer[(fph+2) % buffer_size]); + phase += increment; + lin_inc = 1.0f / (floor(phase) - last_phase + 1); + lin_inc = lin_inc > 1.0f ? 1.0f : lin_inc; + lin_int = 0.0f; + for (track = last_phase; track < phase; track++) { + lin_int += lin_inc; + buffer[track % buffer_size] = + LIN_INTERP(lin_int, last_in, input[pos]); + } + last_in = input[pos]; + buffer_write(output[pos], out * 0.707f); + if (phase >= buffer_size) { + phase -= buffer_size; + } + } + + // Store current phase in instance + plugin_data->phase = phase; + plugin_data->prev_law_peak = prev_law_peak; + plugin_data->next_law_peak = next_law_peak; + plugin_data->prev_law_pos = prev_law_pos; + plugin_data->next_law_pos = next_law_pos; + plugin_data->last_phase = last_phase; + plugin_data->last_in = last_in; + plugin_data->count = count; + plugin_data->last_law_p = last_law_p; + plugin_data->delay_pos = delay_pos; + plugin_data->z0 = z0; + plugin_data->z1 = z1; + plugin_data->z2 = z2; +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + retroFlangeDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (retroFlangeDescriptor) { + retroFlangeDescriptor->UniqueID = 1208; + retroFlangeDescriptor->Label = "retroFlange"; + retroFlangeDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + retroFlangeDescriptor->Name = + D_("Retro Flanger"); + retroFlangeDescriptor->Maker = + "Steve Harris "; + retroFlangeDescriptor->Copyright = + "GPL"; + retroFlangeDescriptor->PortCount = 4; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(4, + sizeof(LADSPA_PortDescriptor)); + retroFlangeDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(4, + sizeof(LADSPA_PortRangeHint)); + retroFlangeDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(4, sizeof(char*)); + retroFlangeDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Average stall (ms) */ + port_descriptors[RETROFLANGE_DELAY_DEPTH_AVG] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[RETROFLANGE_DELAY_DEPTH_AVG] = + D_("Average stall (ms)"); + port_range_hints[RETROFLANGE_DELAY_DEPTH_AVG].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_LOW; + port_range_hints[RETROFLANGE_DELAY_DEPTH_AVG].LowerBound = 0; + port_range_hints[RETROFLANGE_DELAY_DEPTH_AVG].UpperBound = 10; + + /* Parameters for Flange frequency (Hz) */ + port_descriptors[RETROFLANGE_LAW_FREQ] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[RETROFLANGE_LAW_FREQ] = + D_("Flange frequency (Hz)"); + port_range_hints[RETROFLANGE_LAW_FREQ].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_1; + port_range_hints[RETROFLANGE_LAW_FREQ].LowerBound = 0.5; + port_range_hints[RETROFLANGE_LAW_FREQ].UpperBound = 8; + + /* Parameters for Input */ + port_descriptors[RETROFLANGE_INPUT] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[RETROFLANGE_INPUT] = + D_("Input"); + port_range_hints[RETROFLANGE_INPUT].HintDescriptor = 0; + + /* Parameters for Output */ + port_descriptors[RETROFLANGE_OUTPUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[RETROFLANGE_OUTPUT] = + D_("Output"); + port_range_hints[RETROFLANGE_OUTPUT].HintDescriptor = 0; + + retroFlangeDescriptor->activate = activateRetroFlange; + retroFlangeDescriptor->cleanup = cleanupRetroFlange; + retroFlangeDescriptor->connect_port = connectPortRetroFlange; + retroFlangeDescriptor->deactivate = NULL; + retroFlangeDescriptor->instantiate = instantiateRetroFlange; + retroFlangeDescriptor->run = runRetroFlange; + retroFlangeDescriptor->run_adding = runAddingRetroFlange; + retroFlangeDescriptor->set_run_adding_gain = setRunAddingGainRetroFlange; + } +} + +void _fini() { + if (retroFlangeDescriptor) { + free((LADSPA_PortDescriptor *)retroFlangeDescriptor->PortDescriptors); + free((char **)retroFlangeDescriptor->PortNames); + free((LADSPA_PortRangeHint *)retroFlangeDescriptor->PortRangeHints); + free(retroFlangeDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/revdelay_1605.c b/plugins/ladspa_effect/swh/revdelay_1605.c new file mode 100644 index 000000000..33f809a90 --- /dev/null +++ b/plugins/ladspa_effect/swh/revdelay_1605.c @@ -0,0 +1,559 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + +#line 10 "revdelay_1605.xml" + +#include "ladspa-util.h" +#include + +#define MIN(a,b) ((a) < (b) ? (a) : (b)) +#define CALC_DELAY(delaytime) \ + (f_clamp (delaytime * sample_rate, 1.f, (float)(buffer_size + 1))) + +#define REVDELAY_IN 0 +#define REVDELAY_OUT 1 +#define REVDELAY_DELAY_TIME 2 +#define REVDELAY_DRY_LEVEL 3 +#define REVDELAY_WET_LEVEL 4 +#define REVDELAY_FEEDBACK 5 +#define REVDELAY_XFADE_SAMP 6 + +static LADSPA_Descriptor *revdelayDescriptor = NULL; + +typedef struct { + LADSPA_Data *in; + LADSPA_Data *out; + LADSPA_Data *delay_time; + LADSPA_Data *dry_level; + LADSPA_Data *wet_level; + LADSPA_Data *feedback; + LADSPA_Data *xfade_samp; + LADSPA_Data *buffer; + unsigned int buffer_size; + LADSPA_Data delay_samples; + LADSPA_Data last_delay_time; + unsigned int sample_rate; + long write_phase; + LADSPA_Data run_adding_gain; +} Revdelay; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return revdelayDescriptor; + default: + return NULL; + } +} + +static void activateRevdelay(LADSPA_Handle instance) { + Revdelay *plugin_data = (Revdelay *)instance; + LADSPA_Data *buffer = plugin_data->buffer; + unsigned int buffer_size = plugin_data->buffer_size; + LADSPA_Data delay_samples = plugin_data->delay_samples; + LADSPA_Data last_delay_time = plugin_data->last_delay_time; + unsigned int sample_rate = plugin_data->sample_rate; + long write_phase = plugin_data->write_phase; +#line 38 "revdelay_1605.xml" + unsigned int size; + + size = sample_rate * 5 * 2; /* 5 second maximum */ + + /* calloc sets the buffer to zero. */ + buffer = calloc(size, sizeof(LADSPA_Data)); + + buffer_size = size; + write_phase = 0; + delay_samples = 0; + plugin_data->buffer = buffer; + plugin_data->buffer_size = buffer_size; + plugin_data->delay_samples = delay_samples; + plugin_data->last_delay_time = last_delay_time; + plugin_data->sample_rate = sample_rate; + plugin_data->write_phase = write_phase; + +} + +static void cleanupRevdelay(LADSPA_Handle instance) { +#line 51 "revdelay_1605.xml" + Revdelay *plugin_data = (Revdelay *)instance; + free(plugin_data->buffer); + free(instance); +} + +static void connectPortRevdelay( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + Revdelay *plugin; + + plugin = (Revdelay *)instance; + switch (port) { + case REVDELAY_IN: + plugin->in = data; + break; + case REVDELAY_OUT: + plugin->out = data; + break; + case REVDELAY_DELAY_TIME: + plugin->delay_time = data; + break; + case REVDELAY_DRY_LEVEL: + plugin->dry_level = data; + break; + case REVDELAY_WET_LEVEL: + plugin->wet_level = data; + break; + case REVDELAY_FEEDBACK: + plugin->feedback = data; + break; + case REVDELAY_XFADE_SAMP: + plugin->xfade_samp = data; + break; + } +} + +static LADSPA_Handle instantiateRevdelay( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + Revdelay *plugin_data = (Revdelay *)malloc(sizeof(Revdelay)); + LADSPA_Data *buffer = NULL; + unsigned int buffer_size; + LADSPA_Data delay_samples; + LADSPA_Data last_delay_time; + unsigned int sample_rate; + long write_phase; + +#line 30 "revdelay_1605.xml" + sample_rate = s_rate; + buffer_size = 0; + delay_samples = 0; + last_delay_time = 0; + write_phase = 0; + + plugin_data->buffer = buffer; + plugin_data->buffer_size = buffer_size; + plugin_data->delay_samples = delay_samples; + plugin_data->last_delay_time = last_delay_time; + plugin_data->sample_rate = sample_rate; + plugin_data->write_phase = write_phase; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runRevdelay(LADSPA_Handle instance, unsigned long sample_count) { + Revdelay *plugin_data = (Revdelay *)instance; + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const in = plugin_data->in; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const out = plugin_data->out; + + /* Delay Time (s) (float value) */ + const LADSPA_Data delay_time = *(plugin_data->delay_time); + + /* Dry Level (dB) (float value) */ + const LADSPA_Data dry_level = *(plugin_data->dry_level); + + /* Wet Level (dB) (float value) */ + const LADSPA_Data wet_level = *(plugin_data->wet_level); + + /* Feedback (float value) */ + const LADSPA_Data feedback = *(plugin_data->feedback); + + /* Crossfade samples (float value) */ + const LADSPA_Data xfade_samp = *(plugin_data->xfade_samp); + LADSPA_Data * buffer = plugin_data->buffer; + unsigned int buffer_size = plugin_data->buffer_size; + LADSPA_Data delay_samples = plugin_data->delay_samples; + LADSPA_Data last_delay_time = plugin_data->last_delay_time; + unsigned int sample_rate = plugin_data->sample_rate; + long write_phase = plugin_data->write_phase; + +#line 55 "revdelay_1605.xml" + int i; + unsigned long delay2; + float dry = DB_CO(dry_level); + float wet = DB_CO(wet_level); + float fadescale; + unsigned long xfadesamp = xfade_samp; + + if (write_phase == 0) { + plugin_data->last_delay_time = delay_time; + plugin_data->delay_samples = delay_samples = CALC_DELAY (delay_time); + } + + if (delay_time == last_delay_time) { + long idelay_samples = (long)delay_samples; + delay2 = idelay_samples * 2; + + if (xfadesamp > idelay_samples) { + /* force it to half */ + xfadesamp = idelay_samples / 2; + } + + for (i=0; i (idelay_samples - xfadesamp)) { + fadescale = (idelay_samples - (write_phase % idelay_samples)) / (1.0 * xfadesamp); + } + else { + fadescale = 1.0; + } + + buffer[write_phase] = fadescale * (insamp + (feedback * read)); + buffer[write_phase] = flush_to_zero(buffer[write_phase]); + + buffer_write(out[i], read); + write_phase = (write_phase + 1) % delay2; + } + } else { + float next_delay_samples = CALC_DELAY (delay_time); + float delay_samples_slope = (next_delay_samples - delay_samples) / sample_count; + + for (i=0; i (idelay_samples - xfade_samp)) { + fadescale = (idelay_samples - (write_phase % idelay_samples)) / (1.0 * xfade_samp); + } + else { + fadescale = 1.0; + } + + buffer[write_phase] = fadescale * (insamp + (feedback * read)); + buffer[write_phase] = flush_to_zero(buffer[write_phase]); + + buffer_write(out[i], read); + } + + plugin_data->last_delay_time = delay_time; + plugin_data->delay_samples = delay_samples; + } + + plugin_data->write_phase = write_phase; +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainRevdelay(LADSPA_Handle instance, LADSPA_Data gain) { + ((Revdelay *)instance)->run_adding_gain = gain; +} + +static void runAddingRevdelay(LADSPA_Handle instance, unsigned long sample_count) { + Revdelay *plugin_data = (Revdelay *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const in = plugin_data->in; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const out = plugin_data->out; + + /* Delay Time (s) (float value) */ + const LADSPA_Data delay_time = *(plugin_data->delay_time); + + /* Dry Level (dB) (float value) */ + const LADSPA_Data dry_level = *(plugin_data->dry_level); + + /* Wet Level (dB) (float value) */ + const LADSPA_Data wet_level = *(plugin_data->wet_level); + + /* Feedback (float value) */ + const LADSPA_Data feedback = *(plugin_data->feedback); + + /* Crossfade samples (float value) */ + const LADSPA_Data xfade_samp = *(plugin_data->xfade_samp); + LADSPA_Data * buffer = plugin_data->buffer; + unsigned int buffer_size = plugin_data->buffer_size; + LADSPA_Data delay_samples = plugin_data->delay_samples; + LADSPA_Data last_delay_time = plugin_data->last_delay_time; + unsigned int sample_rate = plugin_data->sample_rate; + long write_phase = plugin_data->write_phase; + +#line 55 "revdelay_1605.xml" + int i; + unsigned long delay2; + float dry = DB_CO(dry_level); + float wet = DB_CO(wet_level); + float fadescale; + unsigned long xfadesamp = xfade_samp; + + if (write_phase == 0) { + plugin_data->last_delay_time = delay_time; + plugin_data->delay_samples = delay_samples = CALC_DELAY (delay_time); + } + + if (delay_time == last_delay_time) { + long idelay_samples = (long)delay_samples; + delay2 = idelay_samples * 2; + + if (xfadesamp > idelay_samples) { + /* force it to half */ + xfadesamp = idelay_samples / 2; + } + + for (i=0; i (idelay_samples - xfadesamp)) { + fadescale = (idelay_samples - (write_phase % idelay_samples)) / (1.0 * xfadesamp); + } + else { + fadescale = 1.0; + } + + buffer[write_phase] = fadescale * (insamp + (feedback * read)); + buffer[write_phase] = flush_to_zero(buffer[write_phase]); + + buffer_write(out[i], read); + write_phase = (write_phase + 1) % delay2; + } + } else { + float next_delay_samples = CALC_DELAY (delay_time); + float delay_samples_slope = (next_delay_samples - delay_samples) / sample_count; + + for (i=0; i (idelay_samples - xfade_samp)) { + fadescale = (idelay_samples - (write_phase % idelay_samples)) / (1.0 * xfade_samp); + } + else { + fadescale = 1.0; + } + + buffer[write_phase] = fadescale * (insamp + (feedback * read)); + buffer[write_phase] = flush_to_zero(buffer[write_phase]); + + buffer_write(out[i], read); + } + + plugin_data->last_delay_time = delay_time; + plugin_data->delay_samples = delay_samples; + } + + plugin_data->write_phase = write_phase; +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + revdelayDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (revdelayDescriptor) { + revdelayDescriptor->UniqueID = 1605; + revdelayDescriptor->Label = "revdelay"; + revdelayDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + revdelayDescriptor->Name = + D_("Reverse Delay (5s max)"); + revdelayDescriptor->Maker = + "Jesse Chappell "; + revdelayDescriptor->Copyright = + "GPL"; + revdelayDescriptor->PortCount = 7; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(7, + sizeof(LADSPA_PortDescriptor)); + revdelayDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(7, + sizeof(LADSPA_PortRangeHint)); + revdelayDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(7, sizeof(char*)); + revdelayDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Input */ + port_descriptors[REVDELAY_IN] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[REVDELAY_IN] = + D_("Input"); + port_range_hints[REVDELAY_IN].HintDescriptor = 0; + + /* Parameters for Output */ + port_descriptors[REVDELAY_OUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[REVDELAY_OUT] = + D_("Output"); + port_range_hints[REVDELAY_OUT].HintDescriptor = 0; + + /* Parameters for Delay Time (s) */ + port_descriptors[REVDELAY_DELAY_TIME] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[REVDELAY_DELAY_TIME] = + D_("Delay Time (s)"); + port_range_hints[REVDELAY_DELAY_TIME].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[REVDELAY_DELAY_TIME].LowerBound = 0; + port_range_hints[REVDELAY_DELAY_TIME].UpperBound = 5.0; + + /* Parameters for Dry Level (dB) */ + port_descriptors[REVDELAY_DRY_LEVEL] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[REVDELAY_DRY_LEVEL] = + D_("Dry Level (dB)"); + port_range_hints[REVDELAY_DRY_LEVEL].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[REVDELAY_DRY_LEVEL].LowerBound = -70; + port_range_hints[REVDELAY_DRY_LEVEL].UpperBound = 0; + + /* Parameters for Wet Level (dB) */ + port_descriptors[REVDELAY_WET_LEVEL] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[REVDELAY_WET_LEVEL] = + D_("Wet Level (dB)"); + port_range_hints[REVDELAY_WET_LEVEL].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[REVDELAY_WET_LEVEL].LowerBound = -70; + port_range_hints[REVDELAY_WET_LEVEL].UpperBound = 0; + + /* Parameters for Feedback */ + port_descriptors[REVDELAY_FEEDBACK] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[REVDELAY_FEEDBACK] = + D_("Feedback"); + port_range_hints[REVDELAY_FEEDBACK].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[REVDELAY_FEEDBACK].LowerBound = 0; + port_range_hints[REVDELAY_FEEDBACK].UpperBound = 1; + + /* Parameters for Crossfade samples */ + port_descriptors[REVDELAY_XFADE_SAMP] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[REVDELAY_XFADE_SAMP] = + D_("Crossfade samples"); + port_range_hints[REVDELAY_XFADE_SAMP].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_LOW | LADSPA_HINT_INTEGER; + port_range_hints[REVDELAY_XFADE_SAMP].LowerBound = 0; + port_range_hints[REVDELAY_XFADE_SAMP].UpperBound = 5000; + + revdelayDescriptor->activate = activateRevdelay; + revdelayDescriptor->cleanup = cleanupRevdelay; + revdelayDescriptor->connect_port = connectPortRevdelay; + revdelayDescriptor->deactivate = NULL; + revdelayDescriptor->instantiate = instantiateRevdelay; + revdelayDescriptor->run = runRevdelay; + revdelayDescriptor->run_adding = runAddingRevdelay; + revdelayDescriptor->set_run_adding_gain = setRunAddingGainRevdelay; + } +} + +void _fini() { + if (revdelayDescriptor) { + free((LADSPA_PortDescriptor *)revdelayDescriptor->PortDescriptors); + free((char **)revdelayDescriptor->PortNames); + free((LADSPA_PortRangeHint *)revdelayDescriptor->PortRangeHints); + free(revdelayDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/ringmod_1188.c b/plugins/ladspa_effect/swh/ringmod_1188.c new file mode 100644 index 000000000..531081d93 --- /dev/null +++ b/plugins/ladspa_effect/swh/ringmod_1188.c @@ -0,0 +1,649 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + +#line 9 "ringmod_1188.xml" + +#include "ladspa-util.h" + +int refcount; +LADSPA_Data *sin_tbl, *tri_tbl, *saw_tbl, *squ_tbl; +long sample_rate; + +#define RINGMOD_2I1O_DEPTH 0 +#define RINGMOD_2I1O_INPUT 1 +#define RINGMOD_2I1O_MODULATOR 2 +#define RINGMOD_2I1O_OUTPUT 3 +#define RINGMOD_1I1O1L_DEPTHP 0 +#define RINGMOD_1I1O1L_FREQ 1 +#define RINGMOD_1I1O1L_SIN 2 +#define RINGMOD_1I1O1L_TRI 3 +#define RINGMOD_1I1O1L_SAW 4 +#define RINGMOD_1I1O1L_SQU 5 +#define RINGMOD_1I1O1L_INPUT 6 +#define RINGMOD_1I1O1L_OUTPUT 7 + +static LADSPA_Descriptor *ringmod_2i1oDescriptor = NULL; + +typedef struct { + LADSPA_Data *depth; + LADSPA_Data *input; + LADSPA_Data *modulator; + LADSPA_Data *output; + LADSPA_Data run_adding_gain; +} Ringmod_2i1o; + +static LADSPA_Descriptor *ringmod_1i1o1lDescriptor = NULL; + +typedef struct { + LADSPA_Data *depthp; + LADSPA_Data *freq; + LADSPA_Data *sin; + LADSPA_Data *tri; + LADSPA_Data *saw; + LADSPA_Data *squ; + LADSPA_Data *input; + LADSPA_Data *output; + LADSPA_Data offset; + LADSPA_Data run_adding_gain; +} Ringmod_1i1o1l; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return ringmod_2i1oDescriptor; + case 1: + return ringmod_1i1o1lDescriptor; + default: + return NULL; + } +} + +static void cleanupRingmod_2i1o(LADSPA_Handle instance) { + free(instance); +} + +static void connectPortRingmod_2i1o( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + Ringmod_2i1o *plugin; + + plugin = (Ringmod_2i1o *)instance; + switch (port) { + case RINGMOD_2I1O_DEPTH: + plugin->depth = data; + break; + case RINGMOD_2I1O_INPUT: + plugin->input = data; + break; + case RINGMOD_2I1O_MODULATOR: + plugin->modulator = data; + break; + case RINGMOD_2I1O_OUTPUT: + plugin->output = data; + break; + } +} + +static LADSPA_Handle instantiateRingmod_2i1o( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + Ringmod_2i1o *plugin_data = (Ringmod_2i1o *)malloc(sizeof(Ringmod_2i1o)); + plugin_data->run_adding_gain = 1.0f; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runRingmod_2i1o(LADSPA_Handle instance, unsigned long sample_count) { + Ringmod_2i1o *plugin_data = (Ringmod_2i1o *)instance; + + /* Modulation depth (0=none, 1=AM, 2=RM) (float value) */ + const LADSPA_Data depth = *(plugin_data->depth); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Modulator (array of floats of length sample_count) */ + const LADSPA_Data * const modulator = plugin_data->modulator; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + +#line 24 "ringmod_1188.xml" + unsigned long pos; + float tmpa = depth * 0.5f; + float tmpb = 2.0f - depth; + + for (pos = 0; pos < sample_count; pos++) { + buffer_write(output[pos], input[pos] * (tmpa * modulator[pos] + tmpb)); + } +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainRingmod_2i1o(LADSPA_Handle instance, LADSPA_Data gain) { + ((Ringmod_2i1o *)instance)->run_adding_gain = gain; +} + +static void runAddingRingmod_2i1o(LADSPA_Handle instance, unsigned long sample_count) { + Ringmod_2i1o *plugin_data = (Ringmod_2i1o *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Modulation depth (0=none, 1=AM, 2=RM) (float value) */ + const LADSPA_Data depth = *(plugin_data->depth); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Modulator (array of floats of length sample_count) */ + const LADSPA_Data * const modulator = plugin_data->modulator; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + +#line 24 "ringmod_1188.xml" + unsigned long pos; + float tmpa = depth * 0.5f; + float tmpb = 2.0f - depth; + + for (pos = 0; pos < sample_count; pos++) { + buffer_write(output[pos], input[pos] * (tmpa * modulator[pos] + tmpb)); + } +} + +static void activateRingmod_1i1o1l(LADSPA_Handle instance) { + Ringmod_1i1o1l *plugin_data = (Ringmod_1i1o1l *)instance; + LADSPA_Data offset = plugin_data->offset; +#line 89 "ringmod_1188.xml" + offset = 0; + plugin_data->offset = offset; + +} + +static void cleanupRingmod_1i1o1l(LADSPA_Handle instance) { +#line 93 "ringmod_1188.xml" + Ringmod_1i1o1l *plugin_data = (Ringmod_1i1o1l *)instance; + plugin_data = plugin_data; + if (--refcount == 0) { + free(sin_tbl); + free(tri_tbl); + free(squ_tbl); + free(saw_tbl); + } + free(instance); +} + +static void connectPortRingmod_1i1o1l( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + Ringmod_1i1o1l *plugin; + + plugin = (Ringmod_1i1o1l *)instance; + switch (port) { + case RINGMOD_1I1O1L_DEPTHP: + plugin->depthp = data; + break; + case RINGMOD_1I1O1L_FREQ: + plugin->freq = data; + break; + case RINGMOD_1I1O1L_SIN: + plugin->sin = data; + break; + case RINGMOD_1I1O1L_TRI: + plugin->tri = data; + break; + case RINGMOD_1I1O1L_SAW: + plugin->saw = data; + break; + case RINGMOD_1I1O1L_SQU: + plugin->squ = data; + break; + case RINGMOD_1I1O1L_INPUT: + plugin->input = data; + break; + case RINGMOD_1I1O1L_OUTPUT: + plugin->output = data; + break; + } +} + +static LADSPA_Handle instantiateRingmod_1i1o1l( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + Ringmod_1i1o1l *plugin_data = (Ringmod_1i1o1l *)malloc(sizeof(Ringmod_1i1o1l)); + LADSPA_Data offset; + +#line 59 "ringmod_1188.xml" + long i; + + sample_rate = s_rate; + + if (refcount++ == 0) { + sin_tbl = malloc(sizeof(LADSPA_Data) * sample_rate); + for (i = 0; i < sample_rate; i++) { + sin_tbl[i] = sin(i * 2 * M_PI / sample_rate); + } + + tri_tbl = malloc(sizeof(LADSPA_Data) * sample_rate); + for (i = 0; i < sample_rate; i++) { + tri_tbl[i] = acos(cos(i * 2 * M_PI / sample_rate)) / M_PI * 2 - 1; + } + + squ_tbl = malloc(sizeof(LADSPA_Data) * sample_rate); + for (i = 0; i < sample_rate; i++) { + squ_tbl[i] = (i < sample_rate/2) ? 1 : -1; + } + + saw_tbl = malloc(sizeof(LADSPA_Data) * sample_rate); + for (i = 0; i < sample_rate; i++) { + saw_tbl[i] = ((2.0 * i) - (float)sample_rate) / (float)sample_rate; + } + } + + offset = 0; + + plugin_data->offset = offset; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runRingmod_1i1o1l(LADSPA_Handle instance, unsigned long sample_count) { + Ringmod_1i1o1l *plugin_data = (Ringmod_1i1o1l *)instance; + + /* Modulation depth (0=none, 1=AM, 2=RM) (float value) */ + const LADSPA_Data depthp = *(plugin_data->depthp); + + /* Frequency (Hz) (float value) */ + const LADSPA_Data freq = *(plugin_data->freq); + + /* Sine level (float value) */ + const LADSPA_Data sin = *(plugin_data->sin); + + /* Triangle level (float value) */ + const LADSPA_Data tri = *(plugin_data->tri); + + /* Sawtooth level (float value) */ + const LADSPA_Data saw = *(plugin_data->saw); + + /* Square level (float value) */ + const LADSPA_Data squ = *(plugin_data->squ); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + LADSPA_Data offset = plugin_data->offset; + +#line 24 "ringmod_1188.xml" + LADSPA_Data scale = fabs(sin) + fabs(tri) + + fabs(saw) + fabs(squ); + int o; + unsigned long pos; + + // Rescale to more useful value + const float depth = depthp * 0.5f; + + if (scale == 0.0) { + scale = 1.0; + } + + for (pos = 0; pos < sample_count; pos++) { + o = f_round(offset); + buffer_write(output[pos], input[pos] * + (depth * (((sin / scale) * sin_tbl[o]) + + ((tri / scale) * tri_tbl[o]) + + ((saw / scale) * saw_tbl[o]) + + ((squ / scale) * squ_tbl[o])) + + (1.0f - depth))); + offset += freq; + if (offset > sample_rate) { + offset -= sample_rate; + } + } + + plugin_data->offset = offset; +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainRingmod_1i1o1l(LADSPA_Handle instance, LADSPA_Data gain) { + ((Ringmod_1i1o1l *)instance)->run_adding_gain = gain; +} + +static void runAddingRingmod_1i1o1l(LADSPA_Handle instance, unsigned long sample_count) { + Ringmod_1i1o1l *plugin_data = (Ringmod_1i1o1l *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Modulation depth (0=none, 1=AM, 2=RM) (float value) */ + const LADSPA_Data depthp = *(plugin_data->depthp); + + /* Frequency (Hz) (float value) */ + const LADSPA_Data freq = *(plugin_data->freq); + + /* Sine level (float value) */ + const LADSPA_Data sin = *(plugin_data->sin); + + /* Triangle level (float value) */ + const LADSPA_Data tri = *(plugin_data->tri); + + /* Sawtooth level (float value) */ + const LADSPA_Data saw = *(plugin_data->saw); + + /* Square level (float value) */ + const LADSPA_Data squ = *(plugin_data->squ); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + LADSPA_Data offset = plugin_data->offset; + +#line 24 "ringmod_1188.xml" + LADSPA_Data scale = fabs(sin) + fabs(tri) + + fabs(saw) + fabs(squ); + int o; + unsigned long pos; + + // Rescale to more useful value + const float depth = depthp * 0.5f; + + if (scale == 0.0) { + scale = 1.0; + } + + for (pos = 0; pos < sample_count; pos++) { + o = f_round(offset); + buffer_write(output[pos], input[pos] * + (depth * (((sin / scale) * sin_tbl[o]) + + ((tri / scale) * tri_tbl[o]) + + ((saw / scale) * saw_tbl[o]) + + ((squ / scale) * squ_tbl[o])) + + (1.0f - depth))); + offset += freq; + if (offset > sample_rate) { + offset -= sample_rate; + } + } + + plugin_data->offset = offset; +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + ringmod_2i1oDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (ringmod_2i1oDescriptor) { + ringmod_2i1oDescriptor->UniqueID = 1188; + ringmod_2i1oDescriptor->Label = "ringmod_2i1o"; + ringmod_2i1oDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + ringmod_2i1oDescriptor->Name = + D_("Ringmod with two inputs"); + ringmod_2i1oDescriptor->Maker = + "Steve Harris "; + ringmod_2i1oDescriptor->Copyright = + "GPL"; + ringmod_2i1oDescriptor->PortCount = 4; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(4, + sizeof(LADSPA_PortDescriptor)); + ringmod_2i1oDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(4, + sizeof(LADSPA_PortRangeHint)); + ringmod_2i1oDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(4, sizeof(char*)); + ringmod_2i1oDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Modulation depth (0=none, 1=AM, 2=RM) */ + port_descriptors[RINGMOD_2I1O_DEPTH] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[RINGMOD_2I1O_DEPTH] = + D_("Modulation depth (0=none, 1=AM, 2=RM)"); + port_range_hints[RINGMOD_2I1O_DEPTH].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[RINGMOD_2I1O_DEPTH].LowerBound = 0; + port_range_hints[RINGMOD_2I1O_DEPTH].UpperBound = 2; + + /* Parameters for Input */ + port_descriptors[RINGMOD_2I1O_INPUT] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[RINGMOD_2I1O_INPUT] = + D_("Input"); + port_range_hints[RINGMOD_2I1O_INPUT].HintDescriptor = 0; + + /* Parameters for Modulator */ + port_descriptors[RINGMOD_2I1O_MODULATOR] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[RINGMOD_2I1O_MODULATOR] = + D_("Modulator"); + port_range_hints[RINGMOD_2I1O_MODULATOR].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[RINGMOD_2I1O_MODULATOR].LowerBound = -1; + port_range_hints[RINGMOD_2I1O_MODULATOR].UpperBound = +1; + + /* Parameters for Output */ + port_descriptors[RINGMOD_2I1O_OUTPUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[RINGMOD_2I1O_OUTPUT] = + D_("Output"); + port_range_hints[RINGMOD_2I1O_OUTPUT].HintDescriptor = 0; + + ringmod_2i1oDescriptor->activate = NULL; + ringmod_2i1oDescriptor->cleanup = cleanupRingmod_2i1o; + ringmod_2i1oDescriptor->connect_port = connectPortRingmod_2i1o; + ringmod_2i1oDescriptor->deactivate = NULL; + ringmod_2i1oDescriptor->instantiate = instantiateRingmod_2i1o; + ringmod_2i1oDescriptor->run = runRingmod_2i1o; + ringmod_2i1oDescriptor->run_adding = runAddingRingmod_2i1o; + ringmod_2i1oDescriptor->set_run_adding_gain = setRunAddingGainRingmod_2i1o; + } + + ringmod_1i1o1lDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (ringmod_1i1o1lDescriptor) { + ringmod_1i1o1lDescriptor->UniqueID = 1189; + ringmod_1i1o1lDescriptor->Label = "ringmod_1i1o1l"; + ringmod_1i1o1lDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + ringmod_1i1o1lDescriptor->Name = + D_("Ringmod with LFO"); + ringmod_1i1o1lDescriptor->Maker = + "Steve Harris "; + ringmod_1i1o1lDescriptor->Copyright = + "GPL"; + ringmod_1i1o1lDescriptor->PortCount = 8; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(8, + sizeof(LADSPA_PortDescriptor)); + ringmod_1i1o1lDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(8, + sizeof(LADSPA_PortRangeHint)); + ringmod_1i1o1lDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(8, sizeof(char*)); + ringmod_1i1o1lDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Modulation depth (0=none, 1=AM, 2=RM) */ + port_descriptors[RINGMOD_1I1O1L_DEPTHP] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[RINGMOD_1I1O1L_DEPTHP] = + D_("Modulation depth (0=none, 1=AM, 2=RM)"); + port_range_hints[RINGMOD_1I1O1L_DEPTHP].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[RINGMOD_1I1O1L_DEPTHP].LowerBound = 0; + port_range_hints[RINGMOD_1I1O1L_DEPTHP].UpperBound = 2; + + /* Parameters for Frequency (Hz) */ + port_descriptors[RINGMOD_1I1O1L_FREQ] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[RINGMOD_1I1O1L_FREQ] = + D_("Frequency (Hz)"); + port_range_hints[RINGMOD_1I1O1L_FREQ].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_440; + port_range_hints[RINGMOD_1I1O1L_FREQ].LowerBound = 1; + port_range_hints[RINGMOD_1I1O1L_FREQ].UpperBound = 1000; + + /* Parameters for Sine level */ + port_descriptors[RINGMOD_1I1O1L_SIN] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[RINGMOD_1I1O1L_SIN] = + D_("Sine level"); + port_range_hints[RINGMOD_1I1O1L_SIN].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_1; + port_range_hints[RINGMOD_1I1O1L_SIN].LowerBound = -1; + port_range_hints[RINGMOD_1I1O1L_SIN].UpperBound = +1; + + /* Parameters for Triangle level */ + port_descriptors[RINGMOD_1I1O1L_TRI] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[RINGMOD_1I1O1L_TRI] = + D_("Triangle level"); + port_range_hints[RINGMOD_1I1O1L_TRI].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[RINGMOD_1I1O1L_TRI].LowerBound = -1; + port_range_hints[RINGMOD_1I1O1L_TRI].UpperBound = +1; + + /* Parameters for Sawtooth level */ + port_descriptors[RINGMOD_1I1O1L_SAW] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[RINGMOD_1I1O1L_SAW] = + D_("Sawtooth level"); + port_range_hints[RINGMOD_1I1O1L_SAW].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[RINGMOD_1I1O1L_SAW].LowerBound = -1; + port_range_hints[RINGMOD_1I1O1L_SAW].UpperBound = +1; + + /* Parameters for Square level */ + port_descriptors[RINGMOD_1I1O1L_SQU] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[RINGMOD_1I1O1L_SQU] = + D_("Square level"); + port_range_hints[RINGMOD_1I1O1L_SQU].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[RINGMOD_1I1O1L_SQU].LowerBound = -1; + port_range_hints[RINGMOD_1I1O1L_SQU].UpperBound = +1; + + /* Parameters for Input */ + port_descriptors[RINGMOD_1I1O1L_INPUT] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[RINGMOD_1I1O1L_INPUT] = + D_("Input"); + port_range_hints[RINGMOD_1I1O1L_INPUT].HintDescriptor = 0; + + /* Parameters for Output */ + port_descriptors[RINGMOD_1I1O1L_OUTPUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[RINGMOD_1I1O1L_OUTPUT] = + D_("Output"); + port_range_hints[RINGMOD_1I1O1L_OUTPUT].HintDescriptor = 0; + + ringmod_1i1o1lDescriptor->activate = activateRingmod_1i1o1l; + ringmod_1i1o1lDescriptor->cleanup = cleanupRingmod_1i1o1l; + ringmod_1i1o1lDescriptor->connect_port = connectPortRingmod_1i1o1l; + ringmod_1i1o1lDescriptor->deactivate = NULL; + ringmod_1i1o1lDescriptor->instantiate = instantiateRingmod_1i1o1l; + ringmod_1i1o1lDescriptor->run = runRingmod_1i1o1l; + ringmod_1i1o1lDescriptor->run_adding = runAddingRingmod_1i1o1l; + ringmod_1i1o1lDescriptor->set_run_adding_gain = setRunAddingGainRingmod_1i1o1l; + } +} + +void _fini() { + if (ringmod_2i1oDescriptor) { + free((LADSPA_PortDescriptor *)ringmod_2i1oDescriptor->PortDescriptors); + free((char **)ringmod_2i1oDescriptor->PortNames); + free((LADSPA_PortRangeHint *)ringmod_2i1oDescriptor->PortRangeHints); + free(ringmod_2i1oDescriptor); + } + if (ringmod_1i1o1lDescriptor) { + free((LADSPA_PortDescriptor *)ringmod_1i1o1lDescriptor->PortDescriptors); + free((char **)ringmod_1i1o1lDescriptor->PortNames); + free((LADSPA_PortRangeHint *)ringmod_1i1o1lDescriptor->PortRangeHints); + free(ringmod_1i1o1lDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/satan_maximiser_1408.c b/plugins/ladspa_effect/swh/satan_maximiser_1408.c new file mode 100644 index 000000000..d9b3c4fa3 --- /dev/null +++ b/plugins/ladspa_effect/swh/satan_maximiser_1408.c @@ -0,0 +1,355 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + +#line 10 "satan_maximiser_1408.xml" + +#include +#include "ladspa-util.h" + +#define BUFFER_SIZE 16 +#define BUFFER_MASK 15 + +#define SATANMAXIMISER_ENV_TIME_P 0 +#define SATANMAXIMISER_KNEE_POINT 1 +#define SATANMAXIMISER_INPUT 2 +#define SATANMAXIMISER_OUTPUT 3 + +static LADSPA_Descriptor *satanMaximiserDescriptor = NULL; + +typedef struct { + LADSPA_Data *env_time_p; + LADSPA_Data *knee_point; + LADSPA_Data *input; + LADSPA_Data *output; + LADSPA_Data *buffer; + unsigned int buffer_pos; + float env; + LADSPA_Data run_adding_gain; +} SatanMaximiser; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return satanMaximiserDescriptor; + default: + return NULL; + } +} + +static void activateSatanMaximiser(LADSPA_Handle instance) { + SatanMaximiser *plugin_data = (SatanMaximiser *)instance; + LADSPA_Data *buffer = plugin_data->buffer; + unsigned int buffer_pos = plugin_data->buffer_pos; + float env = plugin_data->env; +#line 33 "satan_maximiser_1408.xml" + env = 0.0f; + memset(buffer, 0, sizeof(LADSPA_Data) * BUFFER_SIZE); + buffer_pos = 0; + plugin_data->buffer = buffer; + plugin_data->buffer_pos = buffer_pos; + plugin_data->env = env; + +} + +static void cleanupSatanMaximiser(LADSPA_Handle instance) { +#line 39 "satan_maximiser_1408.xml" + SatanMaximiser *plugin_data = (SatanMaximiser *)instance; + free(plugin_data->buffer); + free(instance); +} + +static void connectPortSatanMaximiser( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + SatanMaximiser *plugin; + + plugin = (SatanMaximiser *)instance; + switch (port) { + case SATANMAXIMISER_ENV_TIME_P: + plugin->env_time_p = data; + break; + case SATANMAXIMISER_KNEE_POINT: + plugin->knee_point = data; + break; + case SATANMAXIMISER_INPUT: + plugin->input = data; + break; + case SATANMAXIMISER_OUTPUT: + plugin->output = data; + break; + } +} + +static LADSPA_Handle instantiateSatanMaximiser( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + SatanMaximiser *plugin_data = (SatanMaximiser *)malloc(sizeof(SatanMaximiser)); + LADSPA_Data *buffer = NULL; + unsigned int buffer_pos; + float env; + +#line 27 "satan_maximiser_1408.xml" + env = 0.0f; + buffer = malloc(sizeof(LADSPA_Data) * BUFFER_SIZE); + buffer_pos = 0; + + plugin_data->buffer = buffer; + plugin_data->buffer_pos = buffer_pos; + plugin_data->env = env; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runSatanMaximiser(LADSPA_Handle instance, unsigned long sample_count) { + SatanMaximiser *plugin_data = (SatanMaximiser *)instance; + + /* Decay time (samples) (float value) */ + const LADSPA_Data env_time_p = *(plugin_data->env_time_p); + + /* Knee point (dB) (float value) */ + const LADSPA_Data knee_point = *(plugin_data->knee_point); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + LADSPA_Data * buffer = plugin_data->buffer; + unsigned int buffer_pos = plugin_data->buffer_pos; + float env = plugin_data->env; + +#line 43 "satan_maximiser_1408.xml" + unsigned long pos; + int delay; + float env_tr, env_sc, knee; + float env_time = env_time_p; + + if (env_time < 2.0f) { + env_time = 2.0f; + } + knee = DB_CO(knee_point); + delay = f_round(env_time * 0.5f); + env_tr = 1.0f / env_time; + + for (pos = 0; pos < sample_count; pos++) { + if (fabs(input[pos]) > env) { + env = fabs(input[pos]); + } else { + env = fabs(input[pos]) * env_tr + env * (1.0f - env_tr); + } + if (env <= knee) { + env_sc = 1.0f / knee; + } else { + env_sc = 1.0f / env; + } + buffer[buffer_pos] = input[pos]; + buffer_write(output[pos], buffer[(buffer_pos - delay) & BUFFER_MASK] * env_sc); + buffer_pos = (buffer_pos + 1) & BUFFER_MASK; + } + + plugin_data->env = env; + plugin_data->buffer_pos = buffer_pos; +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainSatanMaximiser(LADSPA_Handle instance, LADSPA_Data gain) { + ((SatanMaximiser *)instance)->run_adding_gain = gain; +} + +static void runAddingSatanMaximiser(LADSPA_Handle instance, unsigned long sample_count) { + SatanMaximiser *plugin_data = (SatanMaximiser *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Decay time (samples) (float value) */ + const LADSPA_Data env_time_p = *(plugin_data->env_time_p); + + /* Knee point (dB) (float value) */ + const LADSPA_Data knee_point = *(plugin_data->knee_point); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + LADSPA_Data * buffer = plugin_data->buffer; + unsigned int buffer_pos = plugin_data->buffer_pos; + float env = plugin_data->env; + +#line 43 "satan_maximiser_1408.xml" + unsigned long pos; + int delay; + float env_tr, env_sc, knee; + float env_time = env_time_p; + + if (env_time < 2.0f) { + env_time = 2.0f; + } + knee = DB_CO(knee_point); + delay = f_round(env_time * 0.5f); + env_tr = 1.0f / env_time; + + for (pos = 0; pos < sample_count; pos++) { + if (fabs(input[pos]) > env) { + env = fabs(input[pos]); + } else { + env = fabs(input[pos]) * env_tr + env * (1.0f - env_tr); + } + if (env <= knee) { + env_sc = 1.0f / knee; + } else { + env_sc = 1.0f / env; + } + buffer[buffer_pos] = input[pos]; + buffer_write(output[pos], buffer[(buffer_pos - delay) & BUFFER_MASK] * env_sc); + buffer_pos = (buffer_pos + 1) & BUFFER_MASK; + } + + plugin_data->env = env; + plugin_data->buffer_pos = buffer_pos; +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + satanMaximiserDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (satanMaximiserDescriptor) { + satanMaximiserDescriptor->UniqueID = 1408; + satanMaximiserDescriptor->Label = "satanMaximiser"; + satanMaximiserDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + satanMaximiserDescriptor->Name = + D_("Barry's Satan Maximiser"); + satanMaximiserDescriptor->Maker = + "Steve Harris "; + satanMaximiserDescriptor->Copyright = + "GPL"; + satanMaximiserDescriptor->PortCount = 4; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(4, + sizeof(LADSPA_PortDescriptor)); + satanMaximiserDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(4, + sizeof(LADSPA_PortRangeHint)); + satanMaximiserDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(4, sizeof(char*)); + satanMaximiserDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Decay time (samples) */ + port_descriptors[SATANMAXIMISER_ENV_TIME_P] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[SATANMAXIMISER_ENV_TIME_P] = + D_("Decay time (samples)"); + port_range_hints[SATANMAXIMISER_ENV_TIME_P].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MAXIMUM; + port_range_hints[SATANMAXIMISER_ENV_TIME_P].LowerBound = 2; + port_range_hints[SATANMAXIMISER_ENV_TIME_P].UpperBound = 30; + + /* Parameters for Knee point (dB) */ + port_descriptors[SATANMAXIMISER_KNEE_POINT] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[SATANMAXIMISER_KNEE_POINT] = + D_("Knee point (dB)"); + port_range_hints[SATANMAXIMISER_KNEE_POINT].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[SATANMAXIMISER_KNEE_POINT].LowerBound = -90; + port_range_hints[SATANMAXIMISER_KNEE_POINT].UpperBound = 0; + + /* Parameters for Input */ + port_descriptors[SATANMAXIMISER_INPUT] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[SATANMAXIMISER_INPUT] = + D_("Input"); + port_range_hints[SATANMAXIMISER_INPUT].HintDescriptor = 0; + + /* Parameters for Output */ + port_descriptors[SATANMAXIMISER_OUTPUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[SATANMAXIMISER_OUTPUT] = + D_("Output"); + port_range_hints[SATANMAXIMISER_OUTPUT].HintDescriptor = 0; + + satanMaximiserDescriptor->activate = activateSatanMaximiser; + satanMaximiserDescriptor->cleanup = cleanupSatanMaximiser; + satanMaximiserDescriptor->connect_port = connectPortSatanMaximiser; + satanMaximiserDescriptor->deactivate = NULL; + satanMaximiserDescriptor->instantiate = instantiateSatanMaximiser; + satanMaximiserDescriptor->run = runSatanMaximiser; + satanMaximiserDescriptor->run_adding = runAddingSatanMaximiser; + satanMaximiserDescriptor->set_run_adding_gain = setRunAddingGainSatanMaximiser; + } +} + +void _fini() { + if (satanMaximiserDescriptor) { + free((LADSPA_PortDescriptor *)satanMaximiserDescriptor->PortDescriptors); + free((char **)satanMaximiserDescriptor->PortNames); + free((LADSPA_PortRangeHint *)satanMaximiserDescriptor->PortRangeHints); + free(satanMaximiserDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/sc1_1425.c b/plugins/ladspa_effect/swh/sc1_1425.c new file mode 100644 index 000000000..0a94773e2 --- /dev/null +++ b/plugins/ladspa_effect/swh/sc1_1425.c @@ -0,0 +1,484 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + +#line 10 "sc1_1425.xml" + +#include "util/db.h" +#include "util/rms.h" + +#define A_TBL 256 + +#define SC1_ATTACK 0 +#define SC1_RELEASE 1 +#define SC1_THRESHOLD 2 +#define SC1_RATIO 3 +#define SC1_KNEE 4 +#define SC1_MAKEUP_GAIN 5 +#define SC1_INPUT 6 +#define SC1_OUTPUT 7 + +static LADSPA_Descriptor *sc1Descriptor = NULL; + +typedef struct { + LADSPA_Data *attack; + LADSPA_Data *release; + LADSPA_Data *threshold; + LADSPA_Data *ratio; + LADSPA_Data *knee; + LADSPA_Data *makeup_gain; + LADSPA_Data *input; + LADSPA_Data *output; + float amp; + float * as; + unsigned int count; + float env; + float gain; + float gain_t; + rms_env * rms; + float sum; + LADSPA_Data run_adding_gain; +} Sc1; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return sc1Descriptor; + default: + return NULL; + } +} + +static void cleanupSc1(LADSPA_Handle instance) { +#line 45 "sc1_1425.xml" + Sc1 *plugin_data = (Sc1 *)instance; + rms_env_free(plugin_data->rms); + free(plugin_data->as); + free(instance); +} + +static void connectPortSc1( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + Sc1 *plugin; + + plugin = (Sc1 *)instance; + switch (port) { + case SC1_ATTACK: + plugin->attack = data; + break; + case SC1_RELEASE: + plugin->release = data; + break; + case SC1_THRESHOLD: + plugin->threshold = data; + break; + case SC1_RATIO: + plugin->ratio = data; + break; + case SC1_KNEE: + plugin->knee = data; + break; + case SC1_MAKEUP_GAIN: + plugin->makeup_gain = data; + break; + case SC1_INPUT: + plugin->input = data; + break; + case SC1_OUTPUT: + plugin->output = data; + break; + } +} + +static LADSPA_Handle instantiateSc1( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + Sc1 *plugin_data = (Sc1 *)malloc(sizeof(Sc1)); + float amp; + float *as = NULL; + unsigned int count; + float env; + float gain; + float gain_t; + rms_env *rms = NULL; + float sum; + +#line 24 "sc1_1425.xml" + unsigned int i; + float sample_rate = (float)s_rate; + + rms = rms_env_new(); + sum = 0.0f; + amp = 0.0f; + gain = 0.0f; + gain_t = 0.0f; + env = 0.0f; + count = 0; + + as = malloc(A_TBL * sizeof(float)); + as[0] = 1.0f; + for (i=1; iamp = amp; + plugin_data->as = as; + plugin_data->count = count; + plugin_data->env = env; + plugin_data->gain = gain; + plugin_data->gain_t = gain_t; + plugin_data->rms = rms; + plugin_data->sum = sum; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runSc1(LADSPA_Handle instance, unsigned long sample_count) { + Sc1 *plugin_data = (Sc1 *)instance; + + /* Attack time (ms) (float value) */ + const LADSPA_Data attack = *(plugin_data->attack); + + /* Release time (ms) (float value) */ + const LADSPA_Data release = *(plugin_data->release); + + /* Threshold level (dB) (float value) */ + const LADSPA_Data threshold = *(plugin_data->threshold); + + /* Ratio (1:n) (float value) */ + const LADSPA_Data ratio = *(plugin_data->ratio); + + /* Knee radius (dB) (float value) */ + const LADSPA_Data knee = *(plugin_data->knee); + + /* Makeup gain (dB) (float value) */ + const LADSPA_Data makeup_gain = *(plugin_data->makeup_gain); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + float amp = plugin_data->amp; + float * as = plugin_data->as; + unsigned int count = plugin_data->count; + float env = plugin_data->env; + float gain = plugin_data->gain; + float gain_t = plugin_data->gain_t; + rms_env * rms = plugin_data->rms; + float sum = plugin_data->sum; + +#line 50 "sc1_1425.xml" + unsigned long pos; + + const float ga = as[f_round(attack * 0.001f * (float)(A_TBL-1))]; + const float gr = as[f_round(release * 0.001f * (float)(A_TBL-1))]; + const float rs = (ratio - 1.0f) / ratio; + const float mug = db2lin(makeup_gain); + const float knee_min = db2lin(threshold - knee); + const float knee_max = db2lin(threshold + knee); + const float ef_a = ga * 0.25f; + const float ef_ai = 1.0f - ef_a; + + for (pos = 0; pos < sample_count; pos++) { + sum += input[pos] * input[pos]; + + if (amp > env) { + env = env * ga + amp * (1.0f - ga); + } else { + env = env * gr + amp * (1.0f - gr); + } + if (count++ % 4 == 3) { + amp = rms_env_process(rms, sum * 0.25f); + sum = 0.0f; + if (env <= knee_min) { + gain_t = 1.0f; + } else if (env < knee_max) { + const float x = -(threshold - knee - lin2db(env)) / knee; + gain_t = db2lin(-knee * rs * x * x * 0.25f); + } else { + gain_t = db2lin((threshold - lin2db(env)) * rs); + } + } + gain = gain * ef_a + gain_t * ef_ai; + buffer_write(output[pos], input[pos] * gain * mug); + } + plugin_data->sum = sum; + plugin_data->amp = amp; + plugin_data->gain = gain; + plugin_data->gain_t = gain_t; + plugin_data->env = env; + plugin_data->count = count; +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainSc1(LADSPA_Handle instance, LADSPA_Data gain) { + ((Sc1 *)instance)->run_adding_gain = gain; +} + +static void runAddingSc1(LADSPA_Handle instance, unsigned long sample_count) { + Sc1 *plugin_data = (Sc1 *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Attack time (ms) (float value) */ + const LADSPA_Data attack = *(plugin_data->attack); + + /* Release time (ms) (float value) */ + const LADSPA_Data release = *(plugin_data->release); + + /* Threshold level (dB) (float value) */ + const LADSPA_Data threshold = *(plugin_data->threshold); + + /* Ratio (1:n) (float value) */ + const LADSPA_Data ratio = *(plugin_data->ratio); + + /* Knee radius (dB) (float value) */ + const LADSPA_Data knee = *(plugin_data->knee); + + /* Makeup gain (dB) (float value) */ + const LADSPA_Data makeup_gain = *(plugin_data->makeup_gain); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + float amp = plugin_data->amp; + float * as = plugin_data->as; + unsigned int count = plugin_data->count; + float env = plugin_data->env; + float gain = plugin_data->gain; + float gain_t = plugin_data->gain_t; + rms_env * rms = plugin_data->rms; + float sum = plugin_data->sum; + +#line 50 "sc1_1425.xml" + unsigned long pos; + + const float ga = as[f_round(attack * 0.001f * (float)(A_TBL-1))]; + const float gr = as[f_round(release * 0.001f * (float)(A_TBL-1))]; + const float rs = (ratio - 1.0f) / ratio; + const float mug = db2lin(makeup_gain); + const float knee_min = db2lin(threshold - knee); + const float knee_max = db2lin(threshold + knee); + const float ef_a = ga * 0.25f; + const float ef_ai = 1.0f - ef_a; + + for (pos = 0; pos < sample_count; pos++) { + sum += input[pos] * input[pos]; + + if (amp > env) { + env = env * ga + amp * (1.0f - ga); + } else { + env = env * gr + amp * (1.0f - gr); + } + if (count++ % 4 == 3) { + amp = rms_env_process(rms, sum * 0.25f); + sum = 0.0f; + if (env <= knee_min) { + gain_t = 1.0f; + } else if (env < knee_max) { + const float x = -(threshold - knee - lin2db(env)) / knee; + gain_t = db2lin(-knee * rs * x * x * 0.25f); + } else { + gain_t = db2lin((threshold - lin2db(env)) * rs); + } + } + gain = gain * ef_a + gain_t * ef_ai; + buffer_write(output[pos], input[pos] * gain * mug); + } + plugin_data->sum = sum; + plugin_data->amp = amp; + plugin_data->gain = gain; + plugin_data->gain_t = gain_t; + plugin_data->env = env; + plugin_data->count = count; +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + sc1Descriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (sc1Descriptor) { + sc1Descriptor->UniqueID = 1425; + sc1Descriptor->Label = "sc1"; + sc1Descriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + sc1Descriptor->Name = + D_("SC1"); + sc1Descriptor->Maker = + "Steve Harris "; + sc1Descriptor->Copyright = + "GPL"; + sc1Descriptor->PortCount = 8; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(8, + sizeof(LADSPA_PortDescriptor)); + sc1Descriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(8, + sizeof(LADSPA_PortRangeHint)); + sc1Descriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(8, sizeof(char*)); + sc1Descriptor->PortNames = + (const char **)port_names; + + /* Parameters for Attack time (ms) */ + port_descriptors[SC1_ATTACK] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[SC1_ATTACK] = + D_("Attack time (ms)"); + port_range_hints[SC1_ATTACK].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_LOW; + port_range_hints[SC1_ATTACK].LowerBound = 2; + port_range_hints[SC1_ATTACK].UpperBound = 400; + + /* Parameters for Release time (ms) */ + port_descriptors[SC1_RELEASE] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[SC1_RELEASE] = + D_("Release time (ms)"); + port_range_hints[SC1_RELEASE].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MIDDLE; + port_range_hints[SC1_RELEASE].LowerBound = 2; + port_range_hints[SC1_RELEASE].UpperBound = 800; + + /* Parameters for Threshold level (dB) */ + port_descriptors[SC1_THRESHOLD] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[SC1_THRESHOLD] = + D_("Threshold level (dB)"); + port_range_hints[SC1_THRESHOLD].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MAXIMUM; + port_range_hints[SC1_THRESHOLD].LowerBound = -30; + port_range_hints[SC1_THRESHOLD].UpperBound = 0; + + /* Parameters for Ratio (1:n) */ + port_descriptors[SC1_RATIO] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[SC1_RATIO] = + D_("Ratio (1:n)"); + port_range_hints[SC1_RATIO].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_1; + port_range_hints[SC1_RATIO].LowerBound = 1; + port_range_hints[SC1_RATIO].UpperBound = 10; + + /* Parameters for Knee radius (dB) */ + port_descriptors[SC1_KNEE] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[SC1_KNEE] = + D_("Knee radius (dB)"); + port_range_hints[SC1_KNEE].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_LOW; + port_range_hints[SC1_KNEE].LowerBound = 1; + port_range_hints[SC1_KNEE].UpperBound = 10; + + /* Parameters for Makeup gain (dB) */ + port_descriptors[SC1_MAKEUP_GAIN] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[SC1_MAKEUP_GAIN] = + D_("Makeup gain (dB)"); + port_range_hints[SC1_MAKEUP_GAIN].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[SC1_MAKEUP_GAIN].LowerBound = 0; + port_range_hints[SC1_MAKEUP_GAIN].UpperBound = +24; + + /* Parameters for Input */ + port_descriptors[SC1_INPUT] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[SC1_INPUT] = + D_("Input"); + port_range_hints[SC1_INPUT].HintDescriptor = 0; + + /* Parameters for Output */ + port_descriptors[SC1_OUTPUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[SC1_OUTPUT] = + D_("Output"); + port_range_hints[SC1_OUTPUT].HintDescriptor = 0; + + sc1Descriptor->activate = NULL; + sc1Descriptor->cleanup = cleanupSc1; + sc1Descriptor->connect_port = connectPortSc1; + sc1Descriptor->deactivate = NULL; + sc1Descriptor->instantiate = instantiateSc1; + sc1Descriptor->run = runSc1; + sc1Descriptor->run_adding = runAddingSc1; + sc1Descriptor->set_run_adding_gain = setRunAddingGainSc1; + } +} + +void _fini() { + if (sc1Descriptor) { + free((LADSPA_PortDescriptor *)sc1Descriptor->PortDescriptors); + free((char **)sc1Descriptor->PortNames); + free((LADSPA_PortRangeHint *)sc1Descriptor->PortRangeHints); + free(sc1Descriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/sc2_1426.c b/plugins/ladspa_effect/swh/sc2_1426.c new file mode 100644 index 000000000..dd7a20d94 --- /dev/null +++ b/plugins/ladspa_effect/swh/sc2_1426.c @@ -0,0 +1,502 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + +#line 10 "sc2_1426.xml" + +#include "util/db.h" +#include "util/rms.h" + +#define A_TBL 256 + +#define SC2_ATTACK 0 +#define SC2_RELEASE 1 +#define SC2_THRESHOLD 2 +#define SC2_RATIO 3 +#define SC2_KNEE 4 +#define SC2_MAKEUP_GAIN 5 +#define SC2_SIDECHAIN 6 +#define SC2_INPUT 7 +#define SC2_OUTPUT 8 + +static LADSPA_Descriptor *sc2Descriptor = NULL; + +typedef struct { + LADSPA_Data *attack; + LADSPA_Data *release; + LADSPA_Data *threshold; + LADSPA_Data *ratio; + LADSPA_Data *knee; + LADSPA_Data *makeup_gain; + LADSPA_Data *sidechain; + LADSPA_Data *input; + LADSPA_Data *output; + float amp; + float * as; + unsigned int count; + float env; + float gain; + float gain_t; + rms_env * rms; + float sum; + LADSPA_Data run_adding_gain; +} Sc2; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return sc2Descriptor; + default: + return NULL; + } +} + +static void cleanupSc2(LADSPA_Handle instance) { +#line 44 "sc2_1426.xml" + Sc2 *plugin_data = (Sc2 *)instance; + rms_env_free(plugin_data->rms); + free(plugin_data->as); + free(instance); +} + +static void connectPortSc2( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + Sc2 *plugin; + + plugin = (Sc2 *)instance; + switch (port) { + case SC2_ATTACK: + plugin->attack = data; + break; + case SC2_RELEASE: + plugin->release = data; + break; + case SC2_THRESHOLD: + plugin->threshold = data; + break; + case SC2_RATIO: + plugin->ratio = data; + break; + case SC2_KNEE: + plugin->knee = data; + break; + case SC2_MAKEUP_GAIN: + plugin->makeup_gain = data; + break; + case SC2_SIDECHAIN: + plugin->sidechain = data; + break; + case SC2_INPUT: + plugin->input = data; + break; + case SC2_OUTPUT: + plugin->output = data; + break; + } +} + +static LADSPA_Handle instantiateSc2( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + Sc2 *plugin_data = (Sc2 *)malloc(sizeof(Sc2)); + float amp; + float *as = NULL; + unsigned int count; + float env; + float gain; + float gain_t; + rms_env *rms = NULL; + float sum; + +#line 23 "sc2_1426.xml" + unsigned int i; + float sample_rate = (float)s_rate; + + rms = rms_env_new(); + sum = 0.0f; + amp = 0.0f; + gain = 0.0f; + gain_t = 0.0f; + env = 0.0f; + count = 0; + + as = malloc(A_TBL * sizeof(float)); + as[0] = 1.0f; + for (i=1; iamp = amp; + plugin_data->as = as; + plugin_data->count = count; + plugin_data->env = env; + plugin_data->gain = gain; + plugin_data->gain_t = gain_t; + plugin_data->rms = rms; + plugin_data->sum = sum; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runSc2(LADSPA_Handle instance, unsigned long sample_count) { + Sc2 *plugin_data = (Sc2 *)instance; + + /* Attack time (ms) (float value) */ + const LADSPA_Data attack = *(plugin_data->attack); + + /* Release time (ms) (float value) */ + const LADSPA_Data release = *(plugin_data->release); + + /* Threshold level (dB) (float value) */ + const LADSPA_Data threshold = *(plugin_data->threshold); + + /* Ratio (1:n) (float value) */ + const LADSPA_Data ratio = *(plugin_data->ratio); + + /* Knee radius (dB) (float value) */ + const LADSPA_Data knee = *(plugin_data->knee); + + /* Makeup gain (dB) (float value) */ + const LADSPA_Data makeup_gain = *(plugin_data->makeup_gain); + + /* Sidechain (array of floats of length sample_count) */ + const LADSPA_Data * const sidechain = plugin_data->sidechain; + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + float amp = plugin_data->amp; + float * as = plugin_data->as; + unsigned int count = plugin_data->count; + float env = plugin_data->env; + float gain = plugin_data->gain; + float gain_t = plugin_data->gain_t; + rms_env * rms = plugin_data->rms; + float sum = plugin_data->sum; + +#line 49 "sc2_1426.xml" + unsigned long pos; + + const float ga = as[f_round(attack * 0.001f * (float)(A_TBL-1))]; + const float gr = as[f_round(release * 0.001f * (float)(A_TBL-1))]; + const float rs = (ratio - 1.0f) / ratio; + const float mug = db2lin(makeup_gain); + const float knee_min = db2lin(threshold - knee); + const float knee_max = db2lin(threshold + knee); + const float ef_a = ga * 0.25f; + const float ef_ai = 1.0f - ef_a; + + for (pos = 0; pos < sample_count; pos++) { + sum += sidechain[pos] * sidechain[pos]; + + if (amp > env) { + env = env * ga + amp * (1.0f - ga); + } else { + env = env * gr + amp * (1.0f - gr); + } + if (count++ % 4 == 3) { + amp = rms_env_process(rms, sum * 0.25f); + sum = 0.0f; + if (env <= knee_min) { + gain_t = 1.0f; + } else if (env < knee_max) { + const float x = -(threshold - knee - lin2db(env)) / knee; + gain_t = db2lin(-knee * rs * x * x * 0.25f); + } else { + gain_t = db2lin((threshold - lin2db(env)) * rs); + } + } + gain = gain * ef_a + gain_t * ef_ai; + buffer_write(output[pos], input[pos] * gain * mug); + } + plugin_data->sum = sum; + plugin_data->amp = amp; + plugin_data->gain = gain; + plugin_data->gain_t = gain_t; + plugin_data->env = env; + plugin_data->count = count; +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainSc2(LADSPA_Handle instance, LADSPA_Data gain) { + ((Sc2 *)instance)->run_adding_gain = gain; +} + +static void runAddingSc2(LADSPA_Handle instance, unsigned long sample_count) { + Sc2 *plugin_data = (Sc2 *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Attack time (ms) (float value) */ + const LADSPA_Data attack = *(plugin_data->attack); + + /* Release time (ms) (float value) */ + const LADSPA_Data release = *(plugin_data->release); + + /* Threshold level (dB) (float value) */ + const LADSPA_Data threshold = *(plugin_data->threshold); + + /* Ratio (1:n) (float value) */ + const LADSPA_Data ratio = *(plugin_data->ratio); + + /* Knee radius (dB) (float value) */ + const LADSPA_Data knee = *(plugin_data->knee); + + /* Makeup gain (dB) (float value) */ + const LADSPA_Data makeup_gain = *(plugin_data->makeup_gain); + + /* Sidechain (array of floats of length sample_count) */ + const LADSPA_Data * const sidechain = plugin_data->sidechain; + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + float amp = plugin_data->amp; + float * as = plugin_data->as; + unsigned int count = plugin_data->count; + float env = plugin_data->env; + float gain = plugin_data->gain; + float gain_t = plugin_data->gain_t; + rms_env * rms = plugin_data->rms; + float sum = plugin_data->sum; + +#line 49 "sc2_1426.xml" + unsigned long pos; + + const float ga = as[f_round(attack * 0.001f * (float)(A_TBL-1))]; + const float gr = as[f_round(release * 0.001f * (float)(A_TBL-1))]; + const float rs = (ratio - 1.0f) / ratio; + const float mug = db2lin(makeup_gain); + const float knee_min = db2lin(threshold - knee); + const float knee_max = db2lin(threshold + knee); + const float ef_a = ga * 0.25f; + const float ef_ai = 1.0f - ef_a; + + for (pos = 0; pos < sample_count; pos++) { + sum += sidechain[pos] * sidechain[pos]; + + if (amp > env) { + env = env * ga + amp * (1.0f - ga); + } else { + env = env * gr + amp * (1.0f - gr); + } + if (count++ % 4 == 3) { + amp = rms_env_process(rms, sum * 0.25f); + sum = 0.0f; + if (env <= knee_min) { + gain_t = 1.0f; + } else if (env < knee_max) { + const float x = -(threshold - knee - lin2db(env)) / knee; + gain_t = db2lin(-knee * rs * x * x * 0.25f); + } else { + gain_t = db2lin((threshold - lin2db(env)) * rs); + } + } + gain = gain * ef_a + gain_t * ef_ai; + buffer_write(output[pos], input[pos] * gain * mug); + } + plugin_data->sum = sum; + plugin_data->amp = amp; + plugin_data->gain = gain; + plugin_data->gain_t = gain_t; + plugin_data->env = env; + plugin_data->count = count; +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + sc2Descriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (sc2Descriptor) { + sc2Descriptor->UniqueID = 1426; + sc2Descriptor->Label = "sc2"; + sc2Descriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + sc2Descriptor->Name = + D_("SC2"); + sc2Descriptor->Maker = + "Steve Harris "; + sc2Descriptor->Copyright = + "GPL"; + sc2Descriptor->PortCount = 9; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(9, + sizeof(LADSPA_PortDescriptor)); + sc2Descriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(9, + sizeof(LADSPA_PortRangeHint)); + sc2Descriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(9, sizeof(char*)); + sc2Descriptor->PortNames = + (const char **)port_names; + + /* Parameters for Attack time (ms) */ + port_descriptors[SC2_ATTACK] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[SC2_ATTACK] = + D_("Attack time (ms)"); + port_range_hints[SC2_ATTACK].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_LOW; + port_range_hints[SC2_ATTACK].LowerBound = 2; + port_range_hints[SC2_ATTACK].UpperBound = 400; + + /* Parameters for Release time (ms) */ + port_descriptors[SC2_RELEASE] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[SC2_RELEASE] = + D_("Release time (ms)"); + port_range_hints[SC2_RELEASE].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MIDDLE; + port_range_hints[SC2_RELEASE].LowerBound = 2; + port_range_hints[SC2_RELEASE].UpperBound = 800; + + /* Parameters for Threshold level (dB) */ + port_descriptors[SC2_THRESHOLD] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[SC2_THRESHOLD] = + D_("Threshold level (dB)"); + port_range_hints[SC2_THRESHOLD].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MAXIMUM; + port_range_hints[SC2_THRESHOLD].LowerBound = -30; + port_range_hints[SC2_THRESHOLD].UpperBound = 0; + + /* Parameters for Ratio (1:n) */ + port_descriptors[SC2_RATIO] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[SC2_RATIO] = + D_("Ratio (1:n)"); + port_range_hints[SC2_RATIO].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_1; + port_range_hints[SC2_RATIO].LowerBound = 1; + port_range_hints[SC2_RATIO].UpperBound = 10; + + /* Parameters for Knee radius (dB) */ + port_descriptors[SC2_KNEE] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[SC2_KNEE] = + D_("Knee radius (dB)"); + port_range_hints[SC2_KNEE].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_LOW; + port_range_hints[SC2_KNEE].LowerBound = 1; + port_range_hints[SC2_KNEE].UpperBound = 10; + + /* Parameters for Makeup gain (dB) */ + port_descriptors[SC2_MAKEUP_GAIN] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[SC2_MAKEUP_GAIN] = + D_("Makeup gain (dB)"); + port_range_hints[SC2_MAKEUP_GAIN].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[SC2_MAKEUP_GAIN].LowerBound = 0; + port_range_hints[SC2_MAKEUP_GAIN].UpperBound = +24; + + /* Parameters for Sidechain */ + port_descriptors[SC2_SIDECHAIN] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[SC2_SIDECHAIN] = + D_("Sidechain"); + port_range_hints[SC2_SIDECHAIN].HintDescriptor = 0; + + /* Parameters for Input */ + port_descriptors[SC2_INPUT] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[SC2_INPUT] = + D_("Input"); + port_range_hints[SC2_INPUT].HintDescriptor = 0; + + /* Parameters for Output */ + port_descriptors[SC2_OUTPUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[SC2_OUTPUT] = + D_("Output"); + port_range_hints[SC2_OUTPUT].HintDescriptor = 0; + + sc2Descriptor->activate = NULL; + sc2Descriptor->cleanup = cleanupSc2; + sc2Descriptor->connect_port = connectPortSc2; + sc2Descriptor->deactivate = NULL; + sc2Descriptor->instantiate = instantiateSc2; + sc2Descriptor->run = runSc2; + sc2Descriptor->run_adding = runAddingSc2; + sc2Descriptor->set_run_adding_gain = setRunAddingGainSc2; + } +} + +void _fini() { + if (sc2Descriptor) { + free((LADSPA_PortDescriptor *)sc2Descriptor->PortDescriptors); + free((char **)sc2Descriptor->PortNames); + free((LADSPA_PortRangeHint *)sc2Descriptor->PortRangeHints); + free(sc2Descriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/sc3_1427.c b/plugins/ladspa_effect/swh/sc3_1427.c new file mode 100644 index 000000000..f7f4ceba5 --- /dev/null +++ b/plugins/ladspa_effect/swh/sc3_1427.c @@ -0,0 +1,573 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + +#line 10 "sc3_1427.xml" + +#include "util/db.h" +#include "util/rms.h" + +#define A_TBL 256 + +#define SC3_ATTACK 0 +#define SC3_RELEASE 1 +#define SC3_THRESHOLD 2 +#define SC3_RATIO 3 +#define SC3_KNEE 4 +#define SC3_MAKEUP_GAIN 5 +#define SC3_CHAIN_BAL 6 +#define SC3_SIDECHAIN 7 +#define SC3_LEFT_IN 8 +#define SC3_RIGHT_IN 9 +#define SC3_LEFT_OUT 10 +#define SC3_RIGHT_OUT 11 + +static LADSPA_Descriptor *sc3Descriptor = NULL; + +typedef struct { + LADSPA_Data *attack; + LADSPA_Data *release; + LADSPA_Data *threshold; + LADSPA_Data *ratio; + LADSPA_Data *knee; + LADSPA_Data *makeup_gain; + LADSPA_Data *chain_bal; + LADSPA_Data *sidechain; + LADSPA_Data *left_in; + LADSPA_Data *right_in; + LADSPA_Data *left_out; + LADSPA_Data *right_out; + float amp; + float * as; + unsigned int count; + float env; + float gain; + float gain_t; + rms_env * rms; + float sum; + LADSPA_Data run_adding_gain; +} Sc3; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return sc3Descriptor; + default: + return NULL; + } +} + +static void cleanupSc3(LADSPA_Handle instance) { +#line 44 "sc3_1427.xml" + Sc3 *plugin_data = (Sc3 *)instance; + rms_env_free(plugin_data->rms); + free(plugin_data->as); + free(instance); +} + +static void connectPortSc3( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + Sc3 *plugin; + + plugin = (Sc3 *)instance; + switch (port) { + case SC3_ATTACK: + plugin->attack = data; + break; + case SC3_RELEASE: + plugin->release = data; + break; + case SC3_THRESHOLD: + plugin->threshold = data; + break; + case SC3_RATIO: + plugin->ratio = data; + break; + case SC3_KNEE: + plugin->knee = data; + break; + case SC3_MAKEUP_GAIN: + plugin->makeup_gain = data; + break; + case SC3_CHAIN_BAL: + plugin->chain_bal = data; + break; + case SC3_SIDECHAIN: + plugin->sidechain = data; + break; + case SC3_LEFT_IN: + plugin->left_in = data; + break; + case SC3_RIGHT_IN: + plugin->right_in = data; + break; + case SC3_LEFT_OUT: + plugin->left_out = data; + break; + case SC3_RIGHT_OUT: + plugin->right_out = data; + break; + } +} + +static LADSPA_Handle instantiateSc3( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + Sc3 *plugin_data = (Sc3 *)malloc(sizeof(Sc3)); + float amp; + float *as = NULL; + unsigned int count; + float env; + float gain; + float gain_t; + rms_env *rms = NULL; + float sum; + +#line 23 "sc3_1427.xml" + unsigned int i; + float sample_rate = (float)s_rate; + + rms = rms_env_new(); + sum = 0.0f; + amp = 0.0f; + gain = 0.0f; + gain_t = 0.0f; + env = 0.0f; + count = 0; + + as = malloc(A_TBL * sizeof(float)); + as[0] = 1.0f; + for (i=1; iamp = amp; + plugin_data->as = as; + plugin_data->count = count; + plugin_data->env = env; + plugin_data->gain = gain; + plugin_data->gain_t = gain_t; + plugin_data->rms = rms; + plugin_data->sum = sum; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runSc3(LADSPA_Handle instance, unsigned long sample_count) { + Sc3 *plugin_data = (Sc3 *)instance; + + /* Attack time (ms) (float value) */ + const LADSPA_Data attack = *(plugin_data->attack); + + /* Release time (ms) (float value) */ + const LADSPA_Data release = *(plugin_data->release); + + /* Threshold level (dB) (float value) */ + const LADSPA_Data threshold = *(plugin_data->threshold); + + /* Ratio (1:n) (float value) */ + const LADSPA_Data ratio = *(plugin_data->ratio); + + /* Knee radius (dB) (float value) */ + const LADSPA_Data knee = *(plugin_data->knee); + + /* Makeup gain (dB) (float value) */ + const LADSPA_Data makeup_gain = *(plugin_data->makeup_gain); + + /* Chain balance (float value) */ + const LADSPA_Data chain_bal = *(plugin_data->chain_bal); + + /* Sidechain (array of floats of length sample_count) */ + const LADSPA_Data * const sidechain = plugin_data->sidechain; + + /* Left input (array of floats of length sample_count) */ + const LADSPA_Data * const left_in = plugin_data->left_in; + + /* Right input (array of floats of length sample_count) */ + const LADSPA_Data * const right_in = plugin_data->right_in; + + /* Left output (array of floats of length sample_count) */ + LADSPA_Data * const left_out = plugin_data->left_out; + + /* Right output (array of floats of length sample_count) */ + LADSPA_Data * const right_out = plugin_data->right_out; + float amp = plugin_data->amp; + float * as = plugin_data->as; + unsigned int count = plugin_data->count; + float env = plugin_data->env; + float gain = plugin_data->gain; + float gain_t = plugin_data->gain_t; + rms_env * rms = plugin_data->rms; + float sum = plugin_data->sum; + +#line 49 "sc3_1427.xml" + unsigned long pos; + + const float ga = as[f_round(attack * 0.001f * (float)(A_TBL-1))]; + const float gr = as[f_round(release * 0.001f * (float)(A_TBL-1))]; + const float rs = (ratio - 1.0f) / ratio; + const float mug = db2lin(makeup_gain); + const float knee_min = db2lin(threshold - knee); + const float knee_max = db2lin(threshold + knee); + const float chain_bali = 1.0f - chain_bal; + const float ef_a = ga * 0.25f; + const float ef_ai = 1.0f - ef_a; + + for (pos = 0; pos < sample_count; pos++) { + const float lev_in = chain_bali * (left_in[pos] + right_in[pos]) * 0.5f + + chain_bal * sidechain[pos]; + sum += lev_in * lev_in; + + if (amp > env) { + env = env * ga + amp * (1.0f - ga); + } else { + env = env * gr + amp * (1.0f - gr); + } + if (count++ % 4 == 3) { + amp = rms_env_process(rms, sum * 0.25f); + sum = 0.0f; + if (isnan(env)) { + // This can happen sometimes, but I dont know why + env = 0.0f; + } else if (env <= knee_min) { + gain_t = 1.0f; + } else if (env < knee_max) { + const float x = -(threshold - knee - lin2db(env)) / knee; + gain_t = db2lin(-knee * rs * x * x * 0.25f); + } else { + gain_t = db2lin((threshold - lin2db(env)) * rs); + } + } + gain = gain * ef_a + gain_t * ef_ai; + buffer_write(left_out[pos], left_in[pos] * gain * mug); + buffer_write(right_out[pos], right_in[pos] * gain * mug); + } + plugin_data->sum = sum; + plugin_data->amp = amp; + plugin_data->gain = gain; + plugin_data->gain_t = gain_t; + plugin_data->env = env; + plugin_data->count = count; +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainSc3(LADSPA_Handle instance, LADSPA_Data gain) { + ((Sc3 *)instance)->run_adding_gain = gain; +} + +static void runAddingSc3(LADSPA_Handle instance, unsigned long sample_count) { + Sc3 *plugin_data = (Sc3 *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Attack time (ms) (float value) */ + const LADSPA_Data attack = *(plugin_data->attack); + + /* Release time (ms) (float value) */ + const LADSPA_Data release = *(plugin_data->release); + + /* Threshold level (dB) (float value) */ + const LADSPA_Data threshold = *(plugin_data->threshold); + + /* Ratio (1:n) (float value) */ + const LADSPA_Data ratio = *(plugin_data->ratio); + + /* Knee radius (dB) (float value) */ + const LADSPA_Data knee = *(plugin_data->knee); + + /* Makeup gain (dB) (float value) */ + const LADSPA_Data makeup_gain = *(plugin_data->makeup_gain); + + /* Chain balance (float value) */ + const LADSPA_Data chain_bal = *(plugin_data->chain_bal); + + /* Sidechain (array of floats of length sample_count) */ + const LADSPA_Data * const sidechain = plugin_data->sidechain; + + /* Left input (array of floats of length sample_count) */ + const LADSPA_Data * const left_in = plugin_data->left_in; + + /* Right input (array of floats of length sample_count) */ + const LADSPA_Data * const right_in = plugin_data->right_in; + + /* Left output (array of floats of length sample_count) */ + LADSPA_Data * const left_out = plugin_data->left_out; + + /* Right output (array of floats of length sample_count) */ + LADSPA_Data * const right_out = plugin_data->right_out; + float amp = plugin_data->amp; + float * as = plugin_data->as; + unsigned int count = plugin_data->count; + float env = plugin_data->env; + float gain = plugin_data->gain; + float gain_t = plugin_data->gain_t; + rms_env * rms = plugin_data->rms; + float sum = plugin_data->sum; + +#line 49 "sc3_1427.xml" + unsigned long pos; + + const float ga = as[f_round(attack * 0.001f * (float)(A_TBL-1))]; + const float gr = as[f_round(release * 0.001f * (float)(A_TBL-1))]; + const float rs = (ratio - 1.0f) / ratio; + const float mug = db2lin(makeup_gain); + const float knee_min = db2lin(threshold - knee); + const float knee_max = db2lin(threshold + knee); + const float chain_bali = 1.0f - chain_bal; + const float ef_a = ga * 0.25f; + const float ef_ai = 1.0f - ef_a; + + for (pos = 0; pos < sample_count; pos++) { + const float lev_in = chain_bali * (left_in[pos] + right_in[pos]) * 0.5f + + chain_bal * sidechain[pos]; + sum += lev_in * lev_in; + + if (amp > env) { + env = env * ga + amp * (1.0f - ga); + } else { + env = env * gr + amp * (1.0f - gr); + } + if (count++ % 4 == 3) { + amp = rms_env_process(rms, sum * 0.25f); + sum = 0.0f; + if (isnan(env)) { + // This can happen sometimes, but I dont know why + env = 0.0f; + } else if (env <= knee_min) { + gain_t = 1.0f; + } else if (env < knee_max) { + const float x = -(threshold - knee - lin2db(env)) / knee; + gain_t = db2lin(-knee * rs * x * x * 0.25f); + } else { + gain_t = db2lin((threshold - lin2db(env)) * rs); + } + } + gain = gain * ef_a + gain_t * ef_ai; + buffer_write(left_out[pos], left_in[pos] * gain * mug); + buffer_write(right_out[pos], right_in[pos] * gain * mug); + } + plugin_data->sum = sum; + plugin_data->amp = amp; + plugin_data->gain = gain; + plugin_data->gain_t = gain_t; + plugin_data->env = env; + plugin_data->count = count; +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + sc3Descriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (sc3Descriptor) { + sc3Descriptor->UniqueID = 1427; + sc3Descriptor->Label = "sc3"; + sc3Descriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + sc3Descriptor->Name = + D_("SC3"); + sc3Descriptor->Maker = + "Steve Harris "; + sc3Descriptor->Copyright = + "GPL"; + sc3Descriptor->PortCount = 12; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(12, + sizeof(LADSPA_PortDescriptor)); + sc3Descriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(12, + sizeof(LADSPA_PortRangeHint)); + sc3Descriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(12, sizeof(char*)); + sc3Descriptor->PortNames = + (const char **)port_names; + + /* Parameters for Attack time (ms) */ + port_descriptors[SC3_ATTACK] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[SC3_ATTACK] = + D_("Attack time (ms)"); + port_range_hints[SC3_ATTACK].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_LOW; + port_range_hints[SC3_ATTACK].LowerBound = 2; + port_range_hints[SC3_ATTACK].UpperBound = 400; + + /* Parameters for Release time (ms) */ + port_descriptors[SC3_RELEASE] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[SC3_RELEASE] = + D_("Release time (ms)"); + port_range_hints[SC3_RELEASE].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MIDDLE; + port_range_hints[SC3_RELEASE].LowerBound = 2; + port_range_hints[SC3_RELEASE].UpperBound = 800; + + /* Parameters for Threshold level (dB) */ + port_descriptors[SC3_THRESHOLD] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[SC3_THRESHOLD] = + D_("Threshold level (dB)"); + port_range_hints[SC3_THRESHOLD].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MAXIMUM; + port_range_hints[SC3_THRESHOLD].LowerBound = -30; + port_range_hints[SC3_THRESHOLD].UpperBound = 0; + + /* Parameters for Ratio (1:n) */ + port_descriptors[SC3_RATIO] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[SC3_RATIO] = + D_("Ratio (1:n)"); + port_range_hints[SC3_RATIO].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_1; + port_range_hints[SC3_RATIO].LowerBound = 1; + port_range_hints[SC3_RATIO].UpperBound = 10; + + /* Parameters for Knee radius (dB) */ + port_descriptors[SC3_KNEE] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[SC3_KNEE] = + D_("Knee radius (dB)"); + port_range_hints[SC3_KNEE].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_LOW; + port_range_hints[SC3_KNEE].LowerBound = 1; + port_range_hints[SC3_KNEE].UpperBound = 10; + + /* Parameters for Makeup gain (dB) */ + port_descriptors[SC3_MAKEUP_GAIN] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[SC3_MAKEUP_GAIN] = + D_("Makeup gain (dB)"); + port_range_hints[SC3_MAKEUP_GAIN].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[SC3_MAKEUP_GAIN].LowerBound = 0; + port_range_hints[SC3_MAKEUP_GAIN].UpperBound = +24; + + /* Parameters for Chain balance */ + port_descriptors[SC3_CHAIN_BAL] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[SC3_CHAIN_BAL] = + D_("Chain balance"); + port_range_hints[SC3_CHAIN_BAL].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[SC3_CHAIN_BAL].LowerBound = 0; + port_range_hints[SC3_CHAIN_BAL].UpperBound = 1; + + /* Parameters for Sidechain */ + port_descriptors[SC3_SIDECHAIN] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[SC3_SIDECHAIN] = + D_("Sidechain"); + port_range_hints[SC3_SIDECHAIN].HintDescriptor = 0; + + /* Parameters for Left input */ + port_descriptors[SC3_LEFT_IN] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[SC3_LEFT_IN] = + D_("Left input"); + port_range_hints[SC3_LEFT_IN].HintDescriptor = 0; + + /* Parameters for Right input */ + port_descriptors[SC3_RIGHT_IN] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[SC3_RIGHT_IN] = + D_("Right input"); + port_range_hints[SC3_RIGHT_IN].HintDescriptor = 0; + + /* Parameters for Left output */ + port_descriptors[SC3_LEFT_OUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[SC3_LEFT_OUT] = + D_("Left output"); + port_range_hints[SC3_LEFT_OUT].HintDescriptor = 0; + + /* Parameters for Right output */ + port_descriptors[SC3_RIGHT_OUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[SC3_RIGHT_OUT] = + D_("Right output"); + port_range_hints[SC3_RIGHT_OUT].HintDescriptor = 0; + + sc3Descriptor->activate = NULL; + sc3Descriptor->cleanup = cleanupSc3; + sc3Descriptor->connect_port = connectPortSc3; + sc3Descriptor->deactivate = NULL; + sc3Descriptor->instantiate = instantiateSc3; + sc3Descriptor->run = runSc3; + sc3Descriptor->run_adding = runAddingSc3; + sc3Descriptor->set_run_adding_gain = setRunAddingGainSc3; + } +} + +void _fini() { + if (sc3Descriptor) { + free((LADSPA_PortDescriptor *)sc3Descriptor->PortDescriptors); + free((char **)sc3Descriptor->PortNames); + free((LADSPA_PortRangeHint *)sc3Descriptor->PortRangeHints); + free(sc3Descriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/sc4_1882.c b/plugins/ladspa_effect/swh/sc4_1882.c new file mode 100644 index 000000000..63493383b --- /dev/null +++ b/plugins/ladspa_effect/swh/sc4_1882.c @@ -0,0 +1,629 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + +#line 10 "sc4_1882.xml" + +#include "util/db.h" +#include "util/rms.h" + +#define A_TBL 256 + +#define SC4_RMS_PEAK 0 +#define SC4_ATTACK 1 +#define SC4_RELEASE 2 +#define SC4_THRESHOLD 3 +#define SC4_RATIO 4 +#define SC4_KNEE 5 +#define SC4_MAKEUP_GAIN 6 +#define SC4_AMPLITUDE 7 +#define SC4_GAIN_RED 8 +#define SC4_LEFT_IN 9 +#define SC4_RIGHT_IN 10 +#define SC4_LEFT_OUT 11 +#define SC4_RIGHT_OUT 12 + +static LADSPA_Descriptor *sc4Descriptor = NULL; + +typedef struct { + LADSPA_Data *rms_peak; + LADSPA_Data *attack; + LADSPA_Data *release; + LADSPA_Data *threshold; + LADSPA_Data *ratio; + LADSPA_Data *knee; + LADSPA_Data *makeup_gain; + LADSPA_Data *amplitude; + LADSPA_Data *gain_red; + LADSPA_Data *left_in; + LADSPA_Data *right_in; + LADSPA_Data *left_out; + LADSPA_Data *right_out; + float amp; + float * as; + unsigned int count; + float env; + float env_peak; + float env_rms; + float gain; + float gain_t; + rms_env * rms; + float sum; + LADSPA_Data run_adding_gain; +} Sc4; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return sc4Descriptor; + default: + return NULL; + } +} + +static void cleanupSc4(LADSPA_Handle instance) { +#line 46 "sc4_1882.xml" + Sc4 *plugin_data = (Sc4 *)instance; + rms_env_free(plugin_data->rms); + free(plugin_data->as); + free(instance); +} + +static void connectPortSc4( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + Sc4 *plugin; + + plugin = (Sc4 *)instance; + switch (port) { + case SC4_RMS_PEAK: + plugin->rms_peak = data; + break; + case SC4_ATTACK: + plugin->attack = data; + break; + case SC4_RELEASE: + plugin->release = data; + break; + case SC4_THRESHOLD: + plugin->threshold = data; + break; + case SC4_RATIO: + plugin->ratio = data; + break; + case SC4_KNEE: + plugin->knee = data; + break; + case SC4_MAKEUP_GAIN: + plugin->makeup_gain = data; + break; + case SC4_AMPLITUDE: + plugin->amplitude = data; + break; + case SC4_GAIN_RED: + plugin->gain_red = data; + break; + case SC4_LEFT_IN: + plugin->left_in = data; + break; + case SC4_RIGHT_IN: + plugin->right_in = data; + break; + case SC4_LEFT_OUT: + plugin->left_out = data; + break; + case SC4_RIGHT_OUT: + plugin->right_out = data; + break; + } +} + +static LADSPA_Handle instantiateSc4( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + Sc4 *plugin_data = (Sc4 *)malloc(sizeof(Sc4)); + float amp; + float *as = NULL; + unsigned int count; + float env; + float env_peak; + float env_rms; + float gain; + float gain_t; + rms_env *rms = NULL; + float sum; + +#line 23 "sc4_1882.xml" + unsigned int i; + float sample_rate = (float)s_rate; + + rms = rms_env_new(); + sum = 0.0f; + amp = 0.0f; + gain = 0.0f; + gain_t = 0.0f; + env = 0.0f; + env_rms = 0.0f; + env_peak = 0.0f; + count = 0; + + as = malloc(A_TBL * sizeof(float)); + as[0] = 1.0f; + for (i=1; iamp = amp; + plugin_data->as = as; + plugin_data->count = count; + plugin_data->env = env; + plugin_data->env_peak = env_peak; + plugin_data->env_rms = env_rms; + plugin_data->gain = gain; + plugin_data->gain_t = gain_t; + plugin_data->rms = rms; + plugin_data->sum = sum; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runSc4(LADSPA_Handle instance, unsigned long sample_count) { + Sc4 *plugin_data = (Sc4 *)instance; + + /* RMS/peak (float value) */ + const LADSPA_Data rms_peak = *(plugin_data->rms_peak); + + /* Attack time (ms) (float value) */ + const LADSPA_Data attack = *(plugin_data->attack); + + /* Release time (ms) (float value) */ + const LADSPA_Data release = *(plugin_data->release); + + /* Threshold level (dB) (float value) */ + const LADSPA_Data threshold = *(plugin_data->threshold); + + /* Ratio (1:n) (float value) */ + const LADSPA_Data ratio = *(plugin_data->ratio); + + /* Knee radius (dB) (float value) */ + const LADSPA_Data knee = *(plugin_data->knee); + + /* Makeup gain (dB) (float value) */ + const LADSPA_Data makeup_gain = *(plugin_data->makeup_gain); + + /* Left input (array of floats of length sample_count) */ + const LADSPA_Data * const left_in = plugin_data->left_in; + + /* Right input (array of floats of length sample_count) */ + const LADSPA_Data * const right_in = plugin_data->right_in; + + /* Left output (array of floats of length sample_count) */ + LADSPA_Data * const left_out = plugin_data->left_out; + + /* Right output (array of floats of length sample_count) */ + LADSPA_Data * const right_out = plugin_data->right_out; + float amp = plugin_data->amp; + float * as = plugin_data->as; + unsigned int count = plugin_data->count; + float env = plugin_data->env; + float env_peak = plugin_data->env_peak; + float env_rms = plugin_data->env_rms; + float gain = plugin_data->gain; + float gain_t = plugin_data->gain_t; + rms_env * rms = plugin_data->rms; + float sum = plugin_data->sum; + +#line 51 "sc4_1882.xml" + unsigned long pos; + + const float ga = attack < 2.0f ? 0.0f : as[f_round(attack * 0.001f * (float)(A_TBL-1))]; + const float gr = as[f_round(release * 0.001f * (float)(A_TBL-1))]; + const float rs = (ratio - 1.0f) / ratio; + const float mug = db2lin(makeup_gain); + const float knee_min = db2lin(threshold - knee); + const float knee_max = db2lin(threshold + knee); + const float ef_a = ga * 0.25f; + const float ef_ai = 1.0f - ef_a; + + for (pos = 0; pos < sample_count; pos++) { + const float la = fabs(left_in[pos]); + const float ra = fabs(right_in[pos]); + const float lev_in = f_max(la, ra); + sum += lev_in * lev_in; + + if (amp > env_rms) { + env_rms = env_rms * ga + amp * (1.0f - ga); + } else { + env_rms = env_rms * gr + amp * (1.0f - gr); + } + round_to_zero(&env_rms); + if (lev_in > env_peak) { + env_peak = env_peak * ga + lev_in * (1.0f - ga); + } else { + env_peak = env_peak * gr + lev_in * (1.0f - gr); + } + round_to_zero(&env_peak); + if ((count++ & 3) == 3) { + amp = rms_env_process(rms, sum * 0.25f); + sum = 0.0f; + if (isnan(env_rms)) { + // This can happen sometimes, but I don't know why + env_rms = 0.0f; + } + + env = LIN_INTERP(rms_peak, env_rms, env_peak); + + if (env <= knee_min) { + gain_t = 1.0f; + } else if (env < knee_max) { + const float x = -(threshold - knee - lin2db(env)) / knee; + gain_t = db2lin(-knee * rs * x * x * 0.25f); + } else { + gain_t = db2lin((threshold - lin2db(env)) * rs); + } + } + gain = gain * ef_a + gain_t * ef_ai; + buffer_write(left_out[pos], left_in[pos] * gain * mug); + buffer_write(right_out[pos], right_in[pos] * gain * mug); + } + plugin_data->sum = sum; + plugin_data->amp = amp; + plugin_data->gain = gain; + plugin_data->gain_t = gain_t; + plugin_data->env = env; + plugin_data->env_rms = env_rms; + plugin_data->env_peak = env_peak; + plugin_data->count = count; + + *(plugin_data->amplitude) = lin2db(env); + *(plugin_data->gain_red) = lin2db(gain); +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainSc4(LADSPA_Handle instance, LADSPA_Data gain) { + ((Sc4 *)instance)->run_adding_gain = gain; +} + +static void runAddingSc4(LADSPA_Handle instance, unsigned long sample_count) { + Sc4 *plugin_data = (Sc4 *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* RMS/peak (float value) */ + const LADSPA_Data rms_peak = *(plugin_data->rms_peak); + + /* Attack time (ms) (float value) */ + const LADSPA_Data attack = *(plugin_data->attack); + + /* Release time (ms) (float value) */ + const LADSPA_Data release = *(plugin_data->release); + + /* Threshold level (dB) (float value) */ + const LADSPA_Data threshold = *(plugin_data->threshold); + + /* Ratio (1:n) (float value) */ + const LADSPA_Data ratio = *(plugin_data->ratio); + + /* Knee radius (dB) (float value) */ + const LADSPA_Data knee = *(plugin_data->knee); + + /* Makeup gain (dB) (float value) */ + const LADSPA_Data makeup_gain = *(plugin_data->makeup_gain); + + /* Left input (array of floats of length sample_count) */ + const LADSPA_Data * const left_in = plugin_data->left_in; + + /* Right input (array of floats of length sample_count) */ + const LADSPA_Data * const right_in = plugin_data->right_in; + + /* Left output (array of floats of length sample_count) */ + LADSPA_Data * const left_out = plugin_data->left_out; + + /* Right output (array of floats of length sample_count) */ + LADSPA_Data * const right_out = plugin_data->right_out; + float amp = plugin_data->amp; + float * as = plugin_data->as; + unsigned int count = plugin_data->count; + float env = plugin_data->env; + float env_peak = plugin_data->env_peak; + float env_rms = plugin_data->env_rms; + float gain = plugin_data->gain; + float gain_t = plugin_data->gain_t; + rms_env * rms = plugin_data->rms; + float sum = plugin_data->sum; + +#line 51 "sc4_1882.xml" + unsigned long pos; + + const float ga = attack < 2.0f ? 0.0f : as[f_round(attack * 0.001f * (float)(A_TBL-1))]; + const float gr = as[f_round(release * 0.001f * (float)(A_TBL-1))]; + const float rs = (ratio - 1.0f) / ratio; + const float mug = db2lin(makeup_gain); + const float knee_min = db2lin(threshold - knee); + const float knee_max = db2lin(threshold + knee); + const float ef_a = ga * 0.25f; + const float ef_ai = 1.0f - ef_a; + + for (pos = 0; pos < sample_count; pos++) { + const float la = fabs(left_in[pos]); + const float ra = fabs(right_in[pos]); + const float lev_in = f_max(la, ra); + sum += lev_in * lev_in; + + if (amp > env_rms) { + env_rms = env_rms * ga + amp * (1.0f - ga); + } else { + env_rms = env_rms * gr + amp * (1.0f - gr); + } + round_to_zero(&env_rms); + if (lev_in > env_peak) { + env_peak = env_peak * ga + lev_in * (1.0f - ga); + } else { + env_peak = env_peak * gr + lev_in * (1.0f - gr); + } + round_to_zero(&env_peak); + if ((count++ & 3) == 3) { + amp = rms_env_process(rms, sum * 0.25f); + sum = 0.0f; + if (isnan(env_rms)) { + // This can happen sometimes, but I don't know why + env_rms = 0.0f; + } + + env = LIN_INTERP(rms_peak, env_rms, env_peak); + + if (env <= knee_min) { + gain_t = 1.0f; + } else if (env < knee_max) { + const float x = -(threshold - knee - lin2db(env)) / knee; + gain_t = db2lin(-knee * rs * x * x * 0.25f); + } else { + gain_t = db2lin((threshold - lin2db(env)) * rs); + } + } + gain = gain * ef_a + gain_t * ef_ai; + buffer_write(left_out[pos], left_in[pos] * gain * mug); + buffer_write(right_out[pos], right_in[pos] * gain * mug); + } + plugin_data->sum = sum; + plugin_data->amp = amp; + plugin_data->gain = gain; + plugin_data->gain_t = gain_t; + plugin_data->env = env; + plugin_data->env_rms = env_rms; + plugin_data->env_peak = env_peak; + plugin_data->count = count; + + *(plugin_data->amplitude) = lin2db(env); + *(plugin_data->gain_red) = lin2db(gain); +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + sc4Descriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (sc4Descriptor) { + sc4Descriptor->UniqueID = 1882; + sc4Descriptor->Label = "sc4"; + sc4Descriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + sc4Descriptor->Name = + D_("SC4"); + sc4Descriptor->Maker = + "Steve Harris "; + sc4Descriptor->Copyright = + "GPL"; + sc4Descriptor->PortCount = 13; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(13, + sizeof(LADSPA_PortDescriptor)); + sc4Descriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(13, + sizeof(LADSPA_PortRangeHint)); + sc4Descriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(13, sizeof(char*)); + sc4Descriptor->PortNames = + (const char **)port_names; + + /* Parameters for RMS/peak */ + port_descriptors[SC4_RMS_PEAK] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[SC4_RMS_PEAK] = + D_("RMS/peak"); + port_range_hints[SC4_RMS_PEAK].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MINIMUM; + port_range_hints[SC4_RMS_PEAK].LowerBound = 0; + port_range_hints[SC4_RMS_PEAK].UpperBound = 1; + + /* Parameters for Attack time (ms) */ + port_descriptors[SC4_ATTACK] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[SC4_ATTACK] = + D_("Attack time (ms)"); + port_range_hints[SC4_ATTACK].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_LOW; + port_range_hints[SC4_ATTACK].LowerBound = 1.5; + port_range_hints[SC4_ATTACK].UpperBound = 400; + + /* Parameters for Release time (ms) */ + port_descriptors[SC4_RELEASE] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[SC4_RELEASE] = + D_("Release time (ms)"); + port_range_hints[SC4_RELEASE].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MIDDLE; + port_range_hints[SC4_RELEASE].LowerBound = 2; + port_range_hints[SC4_RELEASE].UpperBound = 800; + + /* Parameters for Threshold level (dB) */ + port_descriptors[SC4_THRESHOLD] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[SC4_THRESHOLD] = + D_("Threshold level (dB)"); + port_range_hints[SC4_THRESHOLD].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MAXIMUM; + port_range_hints[SC4_THRESHOLD].LowerBound = -30; + port_range_hints[SC4_THRESHOLD].UpperBound = 0; + + /* Parameters for Ratio (1:n) */ + port_descriptors[SC4_RATIO] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[SC4_RATIO] = + D_("Ratio (1:n)"); + port_range_hints[SC4_RATIO].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_1; + port_range_hints[SC4_RATIO].LowerBound = 1; + port_range_hints[SC4_RATIO].UpperBound = 20; + + /* Parameters for Knee radius (dB) */ + port_descriptors[SC4_KNEE] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[SC4_KNEE] = + D_("Knee radius (dB)"); + port_range_hints[SC4_KNEE].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_LOW; + port_range_hints[SC4_KNEE].LowerBound = 1; + port_range_hints[SC4_KNEE].UpperBound = 10; + + /* Parameters for Makeup gain (dB) */ + port_descriptors[SC4_MAKEUP_GAIN] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[SC4_MAKEUP_GAIN] = + D_("Makeup gain (dB)"); + port_range_hints[SC4_MAKEUP_GAIN].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[SC4_MAKEUP_GAIN].LowerBound = 0; + port_range_hints[SC4_MAKEUP_GAIN].UpperBound = +24; + + /* Parameters for Amplitude (dB) */ + port_descriptors[SC4_AMPLITUDE] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_CONTROL; + port_names[SC4_AMPLITUDE] = + D_("Amplitude (dB)"); + port_range_hints[SC4_AMPLITUDE].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE; + port_range_hints[SC4_AMPLITUDE].LowerBound = -40; + port_range_hints[SC4_AMPLITUDE].UpperBound = +12; + + /* Parameters for Gain reduction (dB) */ + port_descriptors[SC4_GAIN_RED] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_CONTROL; + port_names[SC4_GAIN_RED] = + D_("Gain reduction (dB)"); + port_range_hints[SC4_GAIN_RED].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE; + port_range_hints[SC4_GAIN_RED].LowerBound = -24; + port_range_hints[SC4_GAIN_RED].UpperBound = 0; + + /* Parameters for Left input */ + port_descriptors[SC4_LEFT_IN] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[SC4_LEFT_IN] = + D_("Left input"); + port_range_hints[SC4_LEFT_IN].HintDescriptor = 0; + + /* Parameters for Right input */ + port_descriptors[SC4_RIGHT_IN] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[SC4_RIGHT_IN] = + D_("Right input"); + port_range_hints[SC4_RIGHT_IN].HintDescriptor = 0; + + /* Parameters for Left output */ + port_descriptors[SC4_LEFT_OUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[SC4_LEFT_OUT] = + D_("Left output"); + port_range_hints[SC4_LEFT_OUT].HintDescriptor = 0; + + /* Parameters for Right output */ + port_descriptors[SC4_RIGHT_OUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[SC4_RIGHT_OUT] = + D_("Right output"); + port_range_hints[SC4_RIGHT_OUT].HintDescriptor = 0; + + sc4Descriptor->activate = NULL; + sc4Descriptor->cleanup = cleanupSc4; + sc4Descriptor->connect_port = connectPortSc4; + sc4Descriptor->deactivate = NULL; + sc4Descriptor->instantiate = instantiateSc4; + sc4Descriptor->run = runSc4; + sc4Descriptor->run_adding = runAddingSc4; + sc4Descriptor->set_run_adding_gain = setRunAddingGainSc4; + } +} + +void _fini() { + if (sc4Descriptor) { + free((LADSPA_PortDescriptor *)sc4Descriptor->PortDescriptors); + free((char **)sc4Descriptor->PortNames); + free((LADSPA_PortRangeHint *)sc4Descriptor->PortRangeHints); + free(sc4Descriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/sc4m_1916.c b/plugins/ladspa_effect/swh/sc4m_1916.c new file mode 100644 index 000000000..e9a07a0d2 --- /dev/null +++ b/plugins/ladspa_effect/swh/sc4m_1916.c @@ -0,0 +1,579 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + +#line 10 "sc4m_1916.xml" + +#include "util/db.h" +#include "util/rms.h" + +#define A_TBL 256 + +#define SC4M_RMS_PEAK 0 +#define SC4M_ATTACK 1 +#define SC4M_RELEASE 2 +#define SC4M_THRESHOLD 3 +#define SC4M_RATIO 4 +#define SC4M_KNEE 5 +#define SC4M_MAKEUP_GAIN 6 +#define SC4M_AMPLITUDE 7 +#define SC4M_GAIN_RED 8 +#define SC4M_INPUT 9 +#define SC4M_OUTPUT 10 + +static LADSPA_Descriptor *sc4mDescriptor = NULL; + +typedef struct { + LADSPA_Data *rms_peak; + LADSPA_Data *attack; + LADSPA_Data *release; + LADSPA_Data *threshold; + LADSPA_Data *ratio; + LADSPA_Data *knee; + LADSPA_Data *makeup_gain; + LADSPA_Data *amplitude; + LADSPA_Data *gain_red; + LADSPA_Data *input; + LADSPA_Data *output; + float amp; + float * as; + unsigned int count; + float env; + float env_peak; + float env_rms; + float gain; + float gain_t; + rms_env * rms; + float sum; + LADSPA_Data run_adding_gain; +} Sc4m; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return sc4mDescriptor; + default: + return NULL; + } +} + +static void cleanupSc4m(LADSPA_Handle instance) { +#line 46 "sc4m_1916.xml" + Sc4m *plugin_data = (Sc4m *)instance; + rms_env_free(plugin_data->rms); + free(plugin_data->as); + free(instance); +} + +static void connectPortSc4m( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + Sc4m *plugin; + + plugin = (Sc4m *)instance; + switch (port) { + case SC4M_RMS_PEAK: + plugin->rms_peak = data; + break; + case SC4M_ATTACK: + plugin->attack = data; + break; + case SC4M_RELEASE: + plugin->release = data; + break; + case SC4M_THRESHOLD: + plugin->threshold = data; + break; + case SC4M_RATIO: + plugin->ratio = data; + break; + case SC4M_KNEE: + plugin->knee = data; + break; + case SC4M_MAKEUP_GAIN: + plugin->makeup_gain = data; + break; + case SC4M_AMPLITUDE: + plugin->amplitude = data; + break; + case SC4M_GAIN_RED: + plugin->gain_red = data; + break; + case SC4M_INPUT: + plugin->input = data; + break; + case SC4M_OUTPUT: + plugin->output = data; + break; + } +} + +static LADSPA_Handle instantiateSc4m( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + Sc4m *plugin_data = (Sc4m *)malloc(sizeof(Sc4m)); + float amp; + float *as = NULL; + unsigned int count; + float env; + float env_peak; + float env_rms; + float gain; + float gain_t; + rms_env *rms = NULL; + float sum; + +#line 23 "sc4m_1916.xml" + unsigned int i; + float sample_rate = (float)s_rate; + + rms = rms_env_new(); + sum = 0.0f; + amp = 0.0f; + gain = 0.0f; + gain_t = 0.0f; + env = 0.0f; + env_rms = 0.0f; + env_peak = 0.0f; + count = 0; + + as = malloc(A_TBL * sizeof(float)); + as[0] = 1.0f; + for (i=1; iamp = amp; + plugin_data->as = as; + plugin_data->count = count; + plugin_data->env = env; + plugin_data->env_peak = env_peak; + plugin_data->env_rms = env_rms; + plugin_data->gain = gain; + plugin_data->gain_t = gain_t; + plugin_data->rms = rms; + plugin_data->sum = sum; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runSc4m(LADSPA_Handle instance, unsigned long sample_count) { + Sc4m *plugin_data = (Sc4m *)instance; + + /* RMS/peak (float value) */ + const LADSPA_Data rms_peak = *(plugin_data->rms_peak); + + /* Attack time (ms) (float value) */ + const LADSPA_Data attack = *(plugin_data->attack); + + /* Release time (ms) (float value) */ + const LADSPA_Data release = *(plugin_data->release); + + /* Threshold level (dB) (float value) */ + const LADSPA_Data threshold = *(plugin_data->threshold); + + /* Ratio (1:n) (float value) */ + const LADSPA_Data ratio = *(plugin_data->ratio); + + /* Knee radius (dB) (float value) */ + const LADSPA_Data knee = *(plugin_data->knee); + + /* Makeup gain (dB) (float value) */ + const LADSPA_Data makeup_gain = *(plugin_data->makeup_gain); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + float amp = plugin_data->amp; + float * as = plugin_data->as; + unsigned int count = plugin_data->count; + float env = plugin_data->env; + float env_peak = plugin_data->env_peak; + float env_rms = plugin_data->env_rms; + float gain = plugin_data->gain; + float gain_t = plugin_data->gain_t; + rms_env * rms = plugin_data->rms; + float sum = plugin_data->sum; + +#line 51 "sc4m_1916.xml" + unsigned long pos; + + const float ga = attack < 2.0f ? 0.0f : as[f_round(attack * 0.001f * (float)(A_TBL-1))]; + const float gr = as[f_round(release * 0.001f * (float)(A_TBL-1))]; + const float rs = (ratio - 1.0f) / ratio; + const float mug = db2lin(makeup_gain); + const float knee_min = db2lin(threshold - knee); + const float knee_max = db2lin(threshold + knee); + const float ef_a = ga * 0.25f; + const float ef_ai = 1.0f - ef_a; + + for (pos = 0; pos < sample_count; pos++) { + const float lev_in = input[pos]; + sum += lev_in * lev_in; + + if (amp > env_rms) { + env_rms = env_rms * ga + amp * (1.0f - ga); + } else { + env_rms = env_rms * gr + amp * (1.0f - gr); + } + round_to_zero(&env_rms); + if (lev_in > env_peak) { + env_peak = env_peak * ga + lev_in * (1.0f - ga); + } else { + env_peak = env_peak * gr + lev_in * (1.0f - gr); + } + round_to_zero(&env_peak); + if ((count++ & 3) == 3) { + amp = rms_env_process(rms, sum * 0.25f); + sum = 0.0f; + + env = LIN_INTERP(rms_peak, env_rms, env_peak); + + if (env <= knee_min) { + gain_t = 1.0f; + } else if (env < knee_max) { + const float x = -(threshold - knee - lin2db(env)) / knee; + gain_t = db2lin(-knee * rs * x * x * 0.25f); + } else { + gain_t = db2lin((threshold - lin2db(env)) * rs); + } + } + gain = gain * ef_a + gain_t * ef_ai; + buffer_write(output[pos], input[pos] * gain * mug); + } + plugin_data->sum = sum; + plugin_data->amp = amp; + plugin_data->gain = gain; + plugin_data->gain_t = gain_t; + plugin_data->env = env; + plugin_data->env_rms = env_rms; + plugin_data->env_peak = env_peak; + plugin_data->count = count; + + *(plugin_data->amplitude) = lin2db(env); + *(plugin_data->gain_red) = lin2db(gain); +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainSc4m(LADSPA_Handle instance, LADSPA_Data gain) { + ((Sc4m *)instance)->run_adding_gain = gain; +} + +static void runAddingSc4m(LADSPA_Handle instance, unsigned long sample_count) { + Sc4m *plugin_data = (Sc4m *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* RMS/peak (float value) */ + const LADSPA_Data rms_peak = *(plugin_data->rms_peak); + + /* Attack time (ms) (float value) */ + const LADSPA_Data attack = *(plugin_data->attack); + + /* Release time (ms) (float value) */ + const LADSPA_Data release = *(plugin_data->release); + + /* Threshold level (dB) (float value) */ + const LADSPA_Data threshold = *(plugin_data->threshold); + + /* Ratio (1:n) (float value) */ + const LADSPA_Data ratio = *(plugin_data->ratio); + + /* Knee radius (dB) (float value) */ + const LADSPA_Data knee = *(plugin_data->knee); + + /* Makeup gain (dB) (float value) */ + const LADSPA_Data makeup_gain = *(plugin_data->makeup_gain); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + float amp = plugin_data->amp; + float * as = plugin_data->as; + unsigned int count = plugin_data->count; + float env = plugin_data->env; + float env_peak = plugin_data->env_peak; + float env_rms = plugin_data->env_rms; + float gain = plugin_data->gain; + float gain_t = plugin_data->gain_t; + rms_env * rms = plugin_data->rms; + float sum = plugin_data->sum; + +#line 51 "sc4m_1916.xml" + unsigned long pos; + + const float ga = attack < 2.0f ? 0.0f : as[f_round(attack * 0.001f * (float)(A_TBL-1))]; + const float gr = as[f_round(release * 0.001f * (float)(A_TBL-1))]; + const float rs = (ratio - 1.0f) / ratio; + const float mug = db2lin(makeup_gain); + const float knee_min = db2lin(threshold - knee); + const float knee_max = db2lin(threshold + knee); + const float ef_a = ga * 0.25f; + const float ef_ai = 1.0f - ef_a; + + for (pos = 0; pos < sample_count; pos++) { + const float lev_in = input[pos]; + sum += lev_in * lev_in; + + if (amp > env_rms) { + env_rms = env_rms * ga + amp * (1.0f - ga); + } else { + env_rms = env_rms * gr + amp * (1.0f - gr); + } + round_to_zero(&env_rms); + if (lev_in > env_peak) { + env_peak = env_peak * ga + lev_in * (1.0f - ga); + } else { + env_peak = env_peak * gr + lev_in * (1.0f - gr); + } + round_to_zero(&env_peak); + if ((count++ & 3) == 3) { + amp = rms_env_process(rms, sum * 0.25f); + sum = 0.0f; + + env = LIN_INTERP(rms_peak, env_rms, env_peak); + + if (env <= knee_min) { + gain_t = 1.0f; + } else if (env < knee_max) { + const float x = -(threshold - knee - lin2db(env)) / knee; + gain_t = db2lin(-knee * rs * x * x * 0.25f); + } else { + gain_t = db2lin((threshold - lin2db(env)) * rs); + } + } + gain = gain * ef_a + gain_t * ef_ai; + buffer_write(output[pos], input[pos] * gain * mug); + } + plugin_data->sum = sum; + plugin_data->amp = amp; + plugin_data->gain = gain; + plugin_data->gain_t = gain_t; + plugin_data->env = env; + plugin_data->env_rms = env_rms; + plugin_data->env_peak = env_peak; + plugin_data->count = count; + + *(plugin_data->amplitude) = lin2db(env); + *(plugin_data->gain_red) = lin2db(gain); +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + sc4mDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (sc4mDescriptor) { + sc4mDescriptor->UniqueID = 1916; + sc4mDescriptor->Label = "sc4m"; + sc4mDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + sc4mDescriptor->Name = + D_("SC4 mono"); + sc4mDescriptor->Maker = + "Steve Harris "; + sc4mDescriptor->Copyright = + "GPL"; + sc4mDescriptor->PortCount = 11; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(11, + sizeof(LADSPA_PortDescriptor)); + sc4mDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(11, + sizeof(LADSPA_PortRangeHint)); + sc4mDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(11, sizeof(char*)); + sc4mDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for RMS/peak */ + port_descriptors[SC4M_RMS_PEAK] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[SC4M_RMS_PEAK] = + D_("RMS/peak"); + port_range_hints[SC4M_RMS_PEAK].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MINIMUM; + port_range_hints[SC4M_RMS_PEAK].LowerBound = 0; + port_range_hints[SC4M_RMS_PEAK].UpperBound = 1; + + /* Parameters for Attack time (ms) */ + port_descriptors[SC4M_ATTACK] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[SC4M_ATTACK] = + D_("Attack time (ms)"); + port_range_hints[SC4M_ATTACK].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_LOW; + port_range_hints[SC4M_ATTACK].LowerBound = 1.5; + port_range_hints[SC4M_ATTACK].UpperBound = 400; + + /* Parameters for Release time (ms) */ + port_descriptors[SC4M_RELEASE] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[SC4M_RELEASE] = + D_("Release time (ms)"); + port_range_hints[SC4M_RELEASE].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MIDDLE; + port_range_hints[SC4M_RELEASE].LowerBound = 2; + port_range_hints[SC4M_RELEASE].UpperBound = 800; + + /* Parameters for Threshold level (dB) */ + port_descriptors[SC4M_THRESHOLD] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[SC4M_THRESHOLD] = + D_("Threshold level (dB)"); + port_range_hints[SC4M_THRESHOLD].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MAXIMUM; + port_range_hints[SC4M_THRESHOLD].LowerBound = -30; + port_range_hints[SC4M_THRESHOLD].UpperBound = 0; + + /* Parameters for Ratio (1:n) */ + port_descriptors[SC4M_RATIO] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[SC4M_RATIO] = + D_("Ratio (1:n)"); + port_range_hints[SC4M_RATIO].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_1; + port_range_hints[SC4M_RATIO].LowerBound = 1; + port_range_hints[SC4M_RATIO].UpperBound = 20; + + /* Parameters for Knee radius (dB) */ + port_descriptors[SC4M_KNEE] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[SC4M_KNEE] = + D_("Knee radius (dB)"); + port_range_hints[SC4M_KNEE].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_LOW; + port_range_hints[SC4M_KNEE].LowerBound = 1; + port_range_hints[SC4M_KNEE].UpperBound = 10; + + /* Parameters for Makeup gain (dB) */ + port_descriptors[SC4M_MAKEUP_GAIN] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[SC4M_MAKEUP_GAIN] = + D_("Makeup gain (dB)"); + port_range_hints[SC4M_MAKEUP_GAIN].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[SC4M_MAKEUP_GAIN].LowerBound = 0; + port_range_hints[SC4M_MAKEUP_GAIN].UpperBound = +24; + + /* Parameters for Amplitude (dB) */ + port_descriptors[SC4M_AMPLITUDE] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_CONTROL; + port_names[SC4M_AMPLITUDE] = + D_("Amplitude (dB)"); + port_range_hints[SC4M_AMPLITUDE].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE; + port_range_hints[SC4M_AMPLITUDE].LowerBound = -40; + port_range_hints[SC4M_AMPLITUDE].UpperBound = +12; + + /* Parameters for Gain reduction (dB) */ + port_descriptors[SC4M_GAIN_RED] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_CONTROL; + port_names[SC4M_GAIN_RED] = + D_("Gain reduction (dB)"); + port_range_hints[SC4M_GAIN_RED].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE; + port_range_hints[SC4M_GAIN_RED].LowerBound = -24; + port_range_hints[SC4M_GAIN_RED].UpperBound = 0; + + /* Parameters for Input */ + port_descriptors[SC4M_INPUT] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[SC4M_INPUT] = + D_("Input"); + port_range_hints[SC4M_INPUT].HintDescriptor = 0; + + /* Parameters for Output */ + port_descriptors[SC4M_OUTPUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[SC4M_OUTPUT] = + D_("Output"); + port_range_hints[SC4M_OUTPUT].HintDescriptor = 0; + + sc4mDescriptor->activate = NULL; + sc4mDescriptor->cleanup = cleanupSc4m; + sc4mDescriptor->connect_port = connectPortSc4m; + sc4mDescriptor->deactivate = NULL; + sc4mDescriptor->instantiate = instantiateSc4m; + sc4mDescriptor->run = runSc4m; + sc4mDescriptor->run_adding = runAddingSc4m; + sc4mDescriptor->set_run_adding_gain = setRunAddingGainSc4m; + } +} + +void _fini() { + if (sc4mDescriptor) { + free((LADSPA_PortDescriptor *)sc4mDescriptor->PortDescriptors); + free((char **)sc4mDescriptor->PortNames); + free((LADSPA_PortRangeHint *)sc4mDescriptor->PortRangeHints); + free(sc4mDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/se4_1883.c b/plugins/ladspa_effect/swh/se4_1883.c new file mode 100644 index 000000000..f3de1ec88 --- /dev/null +++ b/plugins/ladspa_effect/swh/se4_1883.c @@ -0,0 +1,625 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + +#line 10 "se4_1883.xml" + +#include "util/db.h" +#include "util/rms.h" + +#define A_TBL 256 + +#define SE4_RMS_PEAK 0 +#define SE4_ATTACK 1 +#define SE4_RELEASE 2 +#define SE4_THRESHOLD 3 +#define SE4_RATIO 4 +#define SE4_KNEE 5 +#define SE4_ATTENUATION 6 +#define SE4_AMPLITUDE 7 +#define SE4_GAIN_EXP 8 +#define SE4_LEFT_IN 9 +#define SE4_RIGHT_IN 10 +#define SE4_LEFT_OUT 11 +#define SE4_RIGHT_OUT 12 + +static LADSPA_Descriptor *se4Descriptor = NULL; + +typedef struct { + LADSPA_Data *rms_peak; + LADSPA_Data *attack; + LADSPA_Data *release; + LADSPA_Data *threshold; + LADSPA_Data *ratio; + LADSPA_Data *knee; + LADSPA_Data *attenuation; + LADSPA_Data *amplitude; + LADSPA_Data *gain_exp; + LADSPA_Data *left_in; + LADSPA_Data *right_in; + LADSPA_Data *left_out; + LADSPA_Data *right_out; + float amp; + float * as; + unsigned int count; + float env; + float env_peak; + float env_rms; + float gain; + float gain_t; + rms_env * rms; + float sum; + LADSPA_Data run_adding_gain; +} Se4; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return se4Descriptor; + default: + return NULL; + } +} + +static void cleanupSe4(LADSPA_Handle instance) { +#line 46 "se4_1883.xml" + Se4 *plugin_data = (Se4 *)instance; + rms_env_free(plugin_data->rms); + free(plugin_data->as); + free(instance); +} + +static void connectPortSe4( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + Se4 *plugin; + + plugin = (Se4 *)instance; + switch (port) { + case SE4_RMS_PEAK: + plugin->rms_peak = data; + break; + case SE4_ATTACK: + plugin->attack = data; + break; + case SE4_RELEASE: + plugin->release = data; + break; + case SE4_THRESHOLD: + plugin->threshold = data; + break; + case SE4_RATIO: + plugin->ratio = data; + break; + case SE4_KNEE: + plugin->knee = data; + break; + case SE4_ATTENUATION: + plugin->attenuation = data; + break; + case SE4_AMPLITUDE: + plugin->amplitude = data; + break; + case SE4_GAIN_EXP: + plugin->gain_exp = data; + break; + case SE4_LEFT_IN: + plugin->left_in = data; + break; + case SE4_RIGHT_IN: + plugin->right_in = data; + break; + case SE4_LEFT_OUT: + plugin->left_out = data; + break; + case SE4_RIGHT_OUT: + plugin->right_out = data; + break; + } +} + +static LADSPA_Handle instantiateSe4( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + Se4 *plugin_data = (Se4 *)malloc(sizeof(Se4)); + float amp; + float *as = NULL; + unsigned int count; + float env; + float env_peak; + float env_rms; + float gain; + float gain_t; + rms_env *rms = NULL; + float sum; + +#line 23 "se4_1883.xml" + unsigned int i; + float sample_rate = (float)s_rate; + + rms = rms_env_new(); + sum = 0.0f; + amp = 0.0f; + gain = 0.0f; + gain_t = 0.0f; + env = 0.0f; + env_rms = 0.0f; + env_peak = 0.0f; + count = 0; + + as = malloc(A_TBL * sizeof(float)); + as[0] = 1.0f; + for (i=1; iamp = amp; + plugin_data->as = as; + plugin_data->count = count; + plugin_data->env = env; + plugin_data->env_peak = env_peak; + plugin_data->env_rms = env_rms; + plugin_data->gain = gain; + plugin_data->gain_t = gain_t; + plugin_data->rms = rms; + plugin_data->sum = sum; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runSe4(LADSPA_Handle instance, unsigned long sample_count) { + Se4 *plugin_data = (Se4 *)instance; + + /* RMS/peak (float value) */ + const LADSPA_Data rms_peak = *(plugin_data->rms_peak); + + /* Attack time (ms) (float value) */ + const LADSPA_Data attack = *(plugin_data->attack); + + /* Release time (ms) (float value) */ + const LADSPA_Data release = *(plugin_data->release); + + /* Threshold level (dB) (float value) */ + const LADSPA_Data threshold = *(plugin_data->threshold); + + /* Ratio (1:n) (float value) */ + const LADSPA_Data ratio = *(plugin_data->ratio); + + /* Knee radius (dB) (float value) */ + const LADSPA_Data knee = *(plugin_data->knee); + + /* Attenuation (dB) (float value) */ + const LADSPA_Data attenuation = *(plugin_data->attenuation); + + /* Left input (array of floats of length sample_count) */ + const LADSPA_Data * const left_in = plugin_data->left_in; + + /* Right input (array of floats of length sample_count) */ + const LADSPA_Data * const right_in = plugin_data->right_in; + + /* Left output (array of floats of length sample_count) */ + LADSPA_Data * const left_out = plugin_data->left_out; + + /* Right output (array of floats of length sample_count) */ + LADSPA_Data * const right_out = plugin_data->right_out; + float amp = plugin_data->amp; + float * as = plugin_data->as; + unsigned int count = plugin_data->count; + float env = plugin_data->env; + float env_peak = plugin_data->env_peak; + float env_rms = plugin_data->env_rms; + float gain = plugin_data->gain; + float gain_t = plugin_data->gain_t; + rms_env * rms = plugin_data->rms; + float sum = plugin_data->sum; + +#line 51 "se4_1883.xml" + unsigned long pos; + + const float ga = attack < 2.0f ? 0.0f : as[f_round(attack * 0.001f * (float)(A_TBL-1))]; + const float gr = as[f_round(release * 0.001f * (float)(A_TBL-1))]; + const float rs = ratio / (ratio - 1.0f); + const float mug = db2lin(attenuation); + const float knee_min = db2lin(threshold - knee); + const float knee_max = db2lin(threshold + knee); + const float ef_a = ga * 0.25f; + const float ef_ai = 1.0f - ef_a; + + for (pos = 0; pos < sample_count; pos++) { + const float la = fabs(left_in[pos]); + const float ra = fabs(right_in[pos]); + const float lev_in = f_max(la, ra); + sum += lev_in * lev_in; + + if (amp > env_rms) { + env_rms = env_rms * ga + amp * (1.0f - ga); + } else { + env_rms = env_rms * gr + amp * (1.0f - gr); + } + if (lev_in > env_peak) { + env_peak = env_peak * ga + lev_in * (1.0f - ga); + } else { + env_peak = env_peak * gr + lev_in * (1.0f - gr); + } + if ((count++ & 3) == 3) { + amp = rms_env_process(rms, sum * 0.25f); + sum = 0.0f; + if (isnan(env_rms)) { + // This can happen sometimes, but I don't know why + env_rms = 0.0f; + } + + env = LIN_INTERP(rms_peak, env_rms, env_peak); + + if (env <= knee_min) { + gain_t = 1.0f; + } else if (env < knee_max) { + const float x = -(threshold - knee - lin2db(env)) / knee; + gain_t = db2lin(-knee * rs * x * x * 0.25f); + } else { + gain_t = db2lin((threshold - lin2db(env)) * rs); + } + } + gain = gain * ef_a + gain_t * ef_ai; + buffer_write(left_out[pos], left_in[pos] * gain * mug); + buffer_write(right_out[pos], right_in[pos] * gain * mug); + } + plugin_data->sum = sum; + plugin_data->amp = amp; + plugin_data->gain = gain; + plugin_data->gain_t = gain_t; + plugin_data->env = env; + plugin_data->env_rms = env_rms; + plugin_data->env_peak = env_peak; + plugin_data->count = count; + + *(plugin_data->amplitude) = lin2db(env); + *(plugin_data->gain_exp) = lin2db(gain); +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainSe4(LADSPA_Handle instance, LADSPA_Data gain) { + ((Se4 *)instance)->run_adding_gain = gain; +} + +static void runAddingSe4(LADSPA_Handle instance, unsigned long sample_count) { + Se4 *plugin_data = (Se4 *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* RMS/peak (float value) */ + const LADSPA_Data rms_peak = *(plugin_data->rms_peak); + + /* Attack time (ms) (float value) */ + const LADSPA_Data attack = *(plugin_data->attack); + + /* Release time (ms) (float value) */ + const LADSPA_Data release = *(plugin_data->release); + + /* Threshold level (dB) (float value) */ + const LADSPA_Data threshold = *(plugin_data->threshold); + + /* Ratio (1:n) (float value) */ + const LADSPA_Data ratio = *(plugin_data->ratio); + + /* Knee radius (dB) (float value) */ + const LADSPA_Data knee = *(plugin_data->knee); + + /* Attenuation (dB) (float value) */ + const LADSPA_Data attenuation = *(plugin_data->attenuation); + + /* Left input (array of floats of length sample_count) */ + const LADSPA_Data * const left_in = plugin_data->left_in; + + /* Right input (array of floats of length sample_count) */ + const LADSPA_Data * const right_in = plugin_data->right_in; + + /* Left output (array of floats of length sample_count) */ + LADSPA_Data * const left_out = plugin_data->left_out; + + /* Right output (array of floats of length sample_count) */ + LADSPA_Data * const right_out = plugin_data->right_out; + float amp = plugin_data->amp; + float * as = plugin_data->as; + unsigned int count = plugin_data->count; + float env = plugin_data->env; + float env_peak = plugin_data->env_peak; + float env_rms = plugin_data->env_rms; + float gain = plugin_data->gain; + float gain_t = plugin_data->gain_t; + rms_env * rms = plugin_data->rms; + float sum = plugin_data->sum; + +#line 51 "se4_1883.xml" + unsigned long pos; + + const float ga = attack < 2.0f ? 0.0f : as[f_round(attack * 0.001f * (float)(A_TBL-1))]; + const float gr = as[f_round(release * 0.001f * (float)(A_TBL-1))]; + const float rs = ratio / (ratio - 1.0f); + const float mug = db2lin(attenuation); + const float knee_min = db2lin(threshold - knee); + const float knee_max = db2lin(threshold + knee); + const float ef_a = ga * 0.25f; + const float ef_ai = 1.0f - ef_a; + + for (pos = 0; pos < sample_count; pos++) { + const float la = fabs(left_in[pos]); + const float ra = fabs(right_in[pos]); + const float lev_in = f_max(la, ra); + sum += lev_in * lev_in; + + if (amp > env_rms) { + env_rms = env_rms * ga + amp * (1.0f - ga); + } else { + env_rms = env_rms * gr + amp * (1.0f - gr); + } + if (lev_in > env_peak) { + env_peak = env_peak * ga + lev_in * (1.0f - ga); + } else { + env_peak = env_peak * gr + lev_in * (1.0f - gr); + } + if ((count++ & 3) == 3) { + amp = rms_env_process(rms, sum * 0.25f); + sum = 0.0f; + if (isnan(env_rms)) { + // This can happen sometimes, but I don't know why + env_rms = 0.0f; + } + + env = LIN_INTERP(rms_peak, env_rms, env_peak); + + if (env <= knee_min) { + gain_t = 1.0f; + } else if (env < knee_max) { + const float x = -(threshold - knee - lin2db(env)) / knee; + gain_t = db2lin(-knee * rs * x * x * 0.25f); + } else { + gain_t = db2lin((threshold - lin2db(env)) * rs); + } + } + gain = gain * ef_a + gain_t * ef_ai; + buffer_write(left_out[pos], left_in[pos] * gain * mug); + buffer_write(right_out[pos], right_in[pos] * gain * mug); + } + plugin_data->sum = sum; + plugin_data->amp = amp; + plugin_data->gain = gain; + plugin_data->gain_t = gain_t; + plugin_data->env = env; + plugin_data->env_rms = env_rms; + plugin_data->env_peak = env_peak; + plugin_data->count = count; + + *(plugin_data->amplitude) = lin2db(env); + *(plugin_data->gain_exp) = lin2db(gain); +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + se4Descriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (se4Descriptor) { + se4Descriptor->UniqueID = 1883; + se4Descriptor->Label = "se4"; + se4Descriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + se4Descriptor->Name = + D_("SE4"); + se4Descriptor->Maker = + "Steve Harris "; + se4Descriptor->Copyright = + "GPL"; + se4Descriptor->PortCount = 13; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(13, + sizeof(LADSPA_PortDescriptor)); + se4Descriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(13, + sizeof(LADSPA_PortRangeHint)); + se4Descriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(13, sizeof(char*)); + se4Descriptor->PortNames = + (const char **)port_names; + + /* Parameters for RMS/peak */ + port_descriptors[SE4_RMS_PEAK] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[SE4_RMS_PEAK] = + D_("RMS/peak"); + port_range_hints[SE4_RMS_PEAK].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MINIMUM; + port_range_hints[SE4_RMS_PEAK].LowerBound = 0; + port_range_hints[SE4_RMS_PEAK].UpperBound = 1; + + /* Parameters for Attack time (ms) */ + port_descriptors[SE4_ATTACK] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[SE4_ATTACK] = + D_("Attack time (ms)"); + port_range_hints[SE4_ATTACK].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_LOW; + port_range_hints[SE4_ATTACK].LowerBound = 1.5; + port_range_hints[SE4_ATTACK].UpperBound = 400; + + /* Parameters for Release time (ms) */ + port_descriptors[SE4_RELEASE] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[SE4_RELEASE] = + D_("Release time (ms)"); + port_range_hints[SE4_RELEASE].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MIDDLE; + port_range_hints[SE4_RELEASE].LowerBound = 2; + port_range_hints[SE4_RELEASE].UpperBound = 800; + + /* Parameters for Threshold level (dB) */ + port_descriptors[SE4_THRESHOLD] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[SE4_THRESHOLD] = + D_("Threshold level (dB)"); + port_range_hints[SE4_THRESHOLD].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MAXIMUM; + port_range_hints[SE4_THRESHOLD].LowerBound = -30; + port_range_hints[SE4_THRESHOLD].UpperBound = 0; + + /* Parameters for Ratio (1:n) */ + port_descriptors[SE4_RATIO] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[SE4_RATIO] = + D_("Ratio (1:n)"); + port_range_hints[SE4_RATIO].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_1; + port_range_hints[SE4_RATIO].LowerBound = 1; + port_range_hints[SE4_RATIO].UpperBound = 20; + + /* Parameters for Knee radius (dB) */ + port_descriptors[SE4_KNEE] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[SE4_KNEE] = + D_("Knee radius (dB)"); + port_range_hints[SE4_KNEE].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_LOW; + port_range_hints[SE4_KNEE].LowerBound = 1; + port_range_hints[SE4_KNEE].UpperBound = 10; + + /* Parameters for Attenuation (dB) */ + port_descriptors[SE4_ATTENUATION] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[SE4_ATTENUATION] = + D_("Attenuation (dB)"); + port_range_hints[SE4_ATTENUATION].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[SE4_ATTENUATION].LowerBound = -24; + port_range_hints[SE4_ATTENUATION].UpperBound = 0; + + /* Parameters for Amplitude (dB) */ + port_descriptors[SE4_AMPLITUDE] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_CONTROL; + port_names[SE4_AMPLITUDE] = + D_("Amplitude (dB)"); + port_range_hints[SE4_AMPLITUDE].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE; + port_range_hints[SE4_AMPLITUDE].LowerBound = -40; + port_range_hints[SE4_AMPLITUDE].UpperBound = +12; + + /* Parameters for Gain expansion (dB) */ + port_descriptors[SE4_GAIN_EXP] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_CONTROL; + port_names[SE4_GAIN_EXP] = + D_("Gain expansion (dB)"); + port_range_hints[SE4_GAIN_EXP].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE; + port_range_hints[SE4_GAIN_EXP].LowerBound = 0; + port_range_hints[SE4_GAIN_EXP].UpperBound = +24; + + /* Parameters for Left input */ + port_descriptors[SE4_LEFT_IN] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[SE4_LEFT_IN] = + D_("Left input"); + port_range_hints[SE4_LEFT_IN].HintDescriptor = 0; + + /* Parameters for Right input */ + port_descriptors[SE4_RIGHT_IN] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[SE4_RIGHT_IN] = + D_("Right input"); + port_range_hints[SE4_RIGHT_IN].HintDescriptor = 0; + + /* Parameters for Left output */ + port_descriptors[SE4_LEFT_OUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[SE4_LEFT_OUT] = + D_("Left output"); + port_range_hints[SE4_LEFT_OUT].HintDescriptor = 0; + + /* Parameters for Right output */ + port_descriptors[SE4_RIGHT_OUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[SE4_RIGHT_OUT] = + D_("Right output"); + port_range_hints[SE4_RIGHT_OUT].HintDescriptor = 0; + + se4Descriptor->activate = NULL; + se4Descriptor->cleanup = cleanupSe4; + se4Descriptor->connect_port = connectPortSe4; + se4Descriptor->deactivate = NULL; + se4Descriptor->instantiate = instantiateSe4; + se4Descriptor->run = runSe4; + se4Descriptor->run_adding = runAddingSe4; + se4Descriptor->set_run_adding_gain = setRunAddingGainSe4; + } +} + +void _fini() { + if (se4Descriptor) { + free((LADSPA_PortDescriptor *)se4Descriptor->PortDescriptors); + free((char **)se4Descriptor->PortNames); + free((LADSPA_PortRangeHint *)se4Descriptor->PortRangeHints); + free(se4Descriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/shaper_1187.c b/plugins/ladspa_effect/swh/shaper_1187.c new file mode 100644 index 000000000..039367216 --- /dev/null +++ b/plugins/ladspa_effect/swh/shaper_1187.c @@ -0,0 +1,271 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + + +#define SHAPER_SHAPEP 0 +#define SHAPER_INPUT 1 +#define SHAPER_OUTPUT 2 + +static LADSPA_Descriptor *shaperDescriptor = NULL; + +typedef struct { + LADSPA_Data *shapep; + LADSPA_Data *input; + LADSPA_Data *output; + LADSPA_Data run_adding_gain; +} Shaper; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return shaperDescriptor; + default: + return NULL; + } +} + +static void cleanupShaper(LADSPA_Handle instance) { + free(instance); +} + +static void connectPortShaper( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + Shaper *plugin; + + plugin = (Shaper *)instance; + switch (port) { + case SHAPER_SHAPEP: + plugin->shapep = data; + break; + case SHAPER_INPUT: + plugin->input = data; + break; + case SHAPER_OUTPUT: + plugin->output = data; + break; + } +} + +static LADSPA_Handle instantiateShaper( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + Shaper *plugin_data = (Shaper *)malloc(sizeof(Shaper)); + plugin_data->run_adding_gain = 1.0f; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runShaper(LADSPA_Handle instance, unsigned long sample_count) { + Shaper *plugin_data = (Shaper *)instance; + + /* Waveshape (float value) */ + const LADSPA_Data shapep = *(plugin_data->shapep); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + +#line 17 "shaper_1187.xml" + int pos; + float shape = 0.0f; + + if (shapep < 1.0f && shapep > -1.0f) { + shape = 1.0f; + } else if (shape < 0) { + shape = -1.0f / shape; + } else { + shape = shapep; + } + + for (pos = 0; pos < sample_count; pos++) { + if (input[pos] < 0.0f) { + buffer_write(output[pos], -pow(-input[pos], shape)); + } else { + buffer_write(output[pos], pow(input[pos], shape)); + } + } +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainShaper(LADSPA_Handle instance, LADSPA_Data gain) { + ((Shaper *)instance)->run_adding_gain = gain; +} + +static void runAddingShaper(LADSPA_Handle instance, unsigned long sample_count) { + Shaper *plugin_data = (Shaper *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Waveshape (float value) */ + const LADSPA_Data shapep = *(plugin_data->shapep); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + +#line 17 "shaper_1187.xml" + int pos; + float shape = 0.0f; + + if (shapep < 1.0f && shapep > -1.0f) { + shape = 1.0f; + } else if (shape < 0) { + shape = -1.0f / shape; + } else { + shape = shapep; + } + + for (pos = 0; pos < sample_count; pos++) { + if (input[pos] < 0.0f) { + buffer_write(output[pos], -pow(-input[pos], shape)); + } else { + buffer_write(output[pos], pow(input[pos], shape)); + } + } +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + shaperDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (shaperDescriptor) { + shaperDescriptor->UniqueID = 1187; + shaperDescriptor->Label = "shaper"; + shaperDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + shaperDescriptor->Name = + D_("Wave shaper"); + shaperDescriptor->Maker = + "Steve Harris "; + shaperDescriptor->Copyright = + "GPL"; + shaperDescriptor->PortCount = 3; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(3, + sizeof(LADSPA_PortDescriptor)); + shaperDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(3, + sizeof(LADSPA_PortRangeHint)); + shaperDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(3, sizeof(char*)); + shaperDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Waveshape */ + port_descriptors[SHAPER_SHAPEP] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[SHAPER_SHAPEP] = + D_("Waveshape"); + port_range_hints[SHAPER_SHAPEP].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[SHAPER_SHAPEP].LowerBound = -10; + port_range_hints[SHAPER_SHAPEP].UpperBound = +10; + + /* Parameters for Input */ + port_descriptors[SHAPER_INPUT] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[SHAPER_INPUT] = + D_("Input"); + port_range_hints[SHAPER_INPUT].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE; + port_range_hints[SHAPER_INPUT].LowerBound = -1; + port_range_hints[SHAPER_INPUT].UpperBound = +1; + + /* Parameters for Output */ + port_descriptors[SHAPER_OUTPUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[SHAPER_OUTPUT] = + D_("Output"); + port_range_hints[SHAPER_OUTPUT].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE; + port_range_hints[SHAPER_OUTPUT].LowerBound = -1; + port_range_hints[SHAPER_OUTPUT].UpperBound = +1; + + shaperDescriptor->activate = NULL; + shaperDescriptor->cleanup = cleanupShaper; + shaperDescriptor->connect_port = connectPortShaper; + shaperDescriptor->deactivate = NULL; + shaperDescriptor->instantiate = instantiateShaper; + shaperDescriptor->run = runShaper; + shaperDescriptor->run_adding = runAddingShaper; + shaperDescriptor->set_run_adding_gain = setRunAddingGainShaper; + } +} + +void _fini() { + if (shaperDescriptor) { + free((LADSPA_PortDescriptor *)shaperDescriptor->PortDescriptors); + free((char **)shaperDescriptor->PortNames); + free((LADSPA_PortRangeHint *)shaperDescriptor->PortRangeHints); + free(shaperDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/sifter_1210.c b/plugins/ladspa_effect/swh/sifter_1210.c new file mode 100644 index 000000000..891e56ee1 --- /dev/null +++ b/plugins/ladspa_effect/swh/sifter_1210.c @@ -0,0 +1,445 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + +#line 9 "sifter_1210.xml" + +#include "ladspa-util.h" + +#define MAX_BSIZE 1000 + +inline int partition(LADSPA_Data array[], int left, int right); + +inline void q_sort(LADSPA_Data array[], int left, int right) { + float pivot = partition(array, left, right); + + if (left < pivot) { + q_sort(array, left, pivot-1); + } + if (right > pivot) { + q_sort(array, pivot+1, right); + } +} + +inline int partition(LADSPA_Data array[], int left, int right) { + float pivot = array[left]; + + while (left < right) { + while (array[right] >= pivot && left < right) { + right--; + } + if (left != right) { + array[left] = array[right]; + left++; + } + while (array[left] <= pivot && left < right) { + left++; + } + if (left != right) { + array[right] = array[left]; + right--; + } + } + array[left] = pivot; + + return left; +} + +#define SIFTER_SIZE 0 +#define SIFTER_INPUT 1 +#define SIFTER_OUTPUT 2 + +static LADSPA_Descriptor *sifterDescriptor = NULL; + +typedef struct { + LADSPA_Data *size; + LADSPA_Data *input; + LADSPA_Data *output; + LADSPA_Data *b1; + long b1ptr; + LADSPA_Data *b2; + long b2ptr; + LADSPA_Data *ob; + LADSPA_Data *rc; + LADSPA_Data run_adding_gain; +} Sifter; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return sifterDescriptor; + default: + return NULL; + } +} + +static void activateSifter(LADSPA_Handle instance) { + Sifter *plugin_data = (Sifter *)instance; + LADSPA_Data *b1 = plugin_data->b1; + long b1ptr = plugin_data->b1ptr; + LADSPA_Data *b2 = plugin_data->b2; + long b2ptr = plugin_data->b2ptr; + LADSPA_Data *ob = plugin_data->ob; + LADSPA_Data *rc = plugin_data->rc; +#line 84 "sifter_1210.xml" + b1ptr = 0; + b2ptr = 0; + memset(b1, 0, MAX_BSIZE * sizeof(LADSPA_Data)); + memset(b2, 0, MAX_BSIZE * sizeof(LADSPA_Data)); + memset(ob, 0, MAX_BSIZE * sizeof(LADSPA_Data)); + plugin_data->b1 = b1; + plugin_data->b1ptr = b1ptr; + plugin_data->b2 = b2; + plugin_data->b2ptr = b2ptr; + plugin_data->ob = ob; + plugin_data->rc = rc; + +} + +static void cleanupSifter(LADSPA_Handle instance) { +#line 92 "sifter_1210.xml" + Sifter *plugin_data = (Sifter *)instance; + free(plugin_data->b1); + free(plugin_data->b2); + free(plugin_data->ob); + free(plugin_data->rc); + free(instance); +} + +static void connectPortSifter( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + Sifter *plugin; + + plugin = (Sifter *)instance; + switch (port) { + case SIFTER_SIZE: + plugin->size = data; + break; + case SIFTER_INPUT: + plugin->input = data; + break; + case SIFTER_OUTPUT: + plugin->output = data; + break; + } +} + +static LADSPA_Handle instantiateSifter( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + Sifter *plugin_data = (Sifter *)malloc(sizeof(Sifter)); + LADSPA_Data *b1 = NULL; + long b1ptr; + LADSPA_Data *b2 = NULL; + long b2ptr; + LADSPA_Data *ob = NULL; + LADSPA_Data *rc = NULL; + +#line 60 "sifter_1210.xml" + long i; + float scla = (float)MAX_BSIZE * 0.5f; + float sclb = (float)MAX_BSIZE; + + b1 = (LADSPA_Data *)calloc(MAX_BSIZE, sizeof(LADSPA_Data)); + b2 = (LADSPA_Data *)calloc(MAX_BSIZE, sizeof(LADSPA_Data)); + ob = (LADSPA_Data *)calloc(MAX_BSIZE, sizeof(LADSPA_Data)); + rc = (LADSPA_Data *)calloc(MAX_BSIZE, sizeof(LADSPA_Data)); + + // Calculate raised cosine table, to build windowing function from + rc[0] = cos(((0.0f - scla) / sclb) * M_PI); + rc[0] *= rc[0]; + for (i=1; ib1 = b1; + plugin_data->b1ptr = b1ptr; + plugin_data->b2 = b2; + plugin_data->b2ptr = b2ptr; + plugin_data->ob = ob; + plugin_data->rc = rc; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runSifter(LADSPA_Handle instance, unsigned long sample_count) { + Sifter *plugin_data = (Sifter *)instance; + + /* Sift size (float value) */ + const LADSPA_Data size = *(plugin_data->size); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + LADSPA_Data * b1 = plugin_data->b1; + long b1ptr = plugin_data->b1ptr; + LADSPA_Data * b2 = plugin_data->b2; + long b2ptr = plugin_data->b2ptr; + LADSPA_Data * ob = plugin_data->ob; + LADSPA_Data * rc = plugin_data->rc; + +#line 99 "sifter_1210.xml" + unsigned long pos, i; + long bsize = f_round(LIMIT(size, 1, MAX_BSIZE)); + + for (pos = 0; pos < sample_count; pos++) { + if (b1ptr >= bsize) { + float wstep = (float)MAX_BSIZE / (float)b1ptr, wpos = 0.0f; + + q_sort(b1, 0, b1ptr); + for (i=0; i= bsize) { + float wstep = (float)MAX_BSIZE / (float)b2ptr, wpos = 0.0f; + int offset = (b2ptr+1)/2; + + q_sort(b2, 0, b2ptr); + for (i=0; ib1ptr = b1ptr; + plugin_data->b2ptr = b2ptr; +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainSifter(LADSPA_Handle instance, LADSPA_Data gain) { + ((Sifter *)instance)->run_adding_gain = gain; +} + +static void runAddingSifter(LADSPA_Handle instance, unsigned long sample_count) { + Sifter *plugin_data = (Sifter *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Sift size (float value) */ + const LADSPA_Data size = *(plugin_data->size); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + LADSPA_Data * b1 = plugin_data->b1; + long b1ptr = plugin_data->b1ptr; + LADSPA_Data * b2 = plugin_data->b2; + long b2ptr = plugin_data->b2ptr; + LADSPA_Data * ob = plugin_data->ob; + LADSPA_Data * rc = plugin_data->rc; + +#line 99 "sifter_1210.xml" + unsigned long pos, i; + long bsize = f_round(LIMIT(size, 1, MAX_BSIZE)); + + for (pos = 0; pos < sample_count; pos++) { + if (b1ptr >= bsize) { + float wstep = (float)MAX_BSIZE / (float)b1ptr, wpos = 0.0f; + + q_sort(b1, 0, b1ptr); + for (i=0; i= bsize) { + float wstep = (float)MAX_BSIZE / (float)b2ptr, wpos = 0.0f; + int offset = (b2ptr+1)/2; + + q_sort(b2, 0, b2ptr); + for (i=0; ib1ptr = b1ptr; + plugin_data->b2ptr = b2ptr; +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + sifterDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (sifterDescriptor) { + sifterDescriptor->UniqueID = 1210; + sifterDescriptor->Label = "sifter"; + sifterDescriptor->Properties = + 0; + sifterDescriptor->Name = + D_("Signal sifter"); + sifterDescriptor->Maker = + "Steve Harris "; + sifterDescriptor->Copyright = + "GPL"; + sifterDescriptor->PortCount = 3; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(3, + sizeof(LADSPA_PortDescriptor)); + sifterDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(3, + sizeof(LADSPA_PortRangeHint)); + sifterDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(3, sizeof(char*)); + sifterDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Sift size */ + port_descriptors[SIFTER_SIZE] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[SIFTER_SIZE] = + D_("Sift size"); + port_range_hints[SIFTER_SIZE].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_1; + port_range_hints[SIFTER_SIZE].LowerBound = 1; + port_range_hints[SIFTER_SIZE].UpperBound = MAX_BSIZE; + + /* Parameters for Input */ + port_descriptors[SIFTER_INPUT] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[SIFTER_INPUT] = + D_("Input"); + port_range_hints[SIFTER_INPUT].HintDescriptor = 0; + + /* Parameters for Output */ + port_descriptors[SIFTER_OUTPUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[SIFTER_OUTPUT] = + D_("Output"); + port_range_hints[SIFTER_OUTPUT].HintDescriptor = 0; + + sifterDescriptor->activate = activateSifter; + sifterDescriptor->cleanup = cleanupSifter; + sifterDescriptor->connect_port = connectPortSifter; + sifterDescriptor->deactivate = NULL; + sifterDescriptor->instantiate = instantiateSifter; + sifterDescriptor->run = runSifter; + sifterDescriptor->run_adding = runAddingSifter; + sifterDescriptor->set_run_adding_gain = setRunAddingGainSifter; + } +} + +void _fini() { + if (sifterDescriptor) { + free((LADSPA_PortDescriptor *)sifterDescriptor->PortDescriptors); + free((char **)sifterDescriptor->PortNames); + free((LADSPA_PortRangeHint *)sifterDescriptor->PortRangeHints); + free(sifterDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/sin_cos_1881.c b/plugins/ladspa_effect/swh/sin_cos_1881.c new file mode 100644 index 000000000..fd5e440b3 --- /dev/null +++ b/plugins/ladspa_effect/swh/sin_cos_1881.c @@ -0,0 +1,307 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + +#line 10 "sin_cos_1881.xml" + +#include "ladspa-util.h" + +#define SINCOS_FREQ 0 +#define SINCOS_PITCH 1 +#define SINCOS_SINE 2 +#define SINCOS_COSINE 3 + +static LADSPA_Descriptor *sinCosDescriptor = NULL; + +typedef struct { + LADSPA_Data *freq; + LADSPA_Data *pitch; + LADSPA_Data *sine; + LADSPA_Data *cosine; + float fs; + double last_om; + double phi; + LADSPA_Data run_adding_gain; +} SinCos; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return sinCosDescriptor; + default: + return NULL; + } +} + +static void cleanupSinCos(LADSPA_Handle instance) { + free(instance); +} + +static void connectPortSinCos( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + SinCos *plugin; + + plugin = (SinCos *)instance; + switch (port) { + case SINCOS_FREQ: + plugin->freq = data; + break; + case SINCOS_PITCH: + plugin->pitch = data; + break; + case SINCOS_SINE: + plugin->sine = data; + break; + case SINCOS_COSINE: + plugin->cosine = data; + break; + } +} + +static LADSPA_Handle instantiateSinCos( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + SinCos *plugin_data = (SinCos *)malloc(sizeof(SinCos)); + float fs; + double last_om; + double phi; + +#line 21 "sin_cos_1881.xml" + fs = (float)s_rate; + phi = 0.0; + last_om = 0.0; + + plugin_data->fs = fs; + plugin_data->last_om = last_om; + plugin_data->phi = phi; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runSinCos(LADSPA_Handle instance, unsigned long sample_count) { + SinCos *plugin_data = (SinCos *)instance; + + /* Base frequency (Hz) (float value) */ + const LADSPA_Data freq = *(plugin_data->freq); + + /* Pitch offset (float value) */ + const LADSPA_Data pitch = *(plugin_data->pitch); + + /* Sine output (array of floats of length sample_count) */ + LADSPA_Data * const sine = plugin_data->sine; + + /* Cosine output (array of floats of length sample_count) */ + LADSPA_Data * const cosine = plugin_data->cosine; + float fs = plugin_data->fs; + double last_om = plugin_data->last_om; + double phi = plugin_data->phi; + +#line 27 "sin_cos_1881.xml" + unsigned long pos; + const double target_om = 2.0 * M_PI * f_clamp(freq, 0.0f, 0.5f) * pow(2.0, f_clamp(pitch, 0.0f, 16.0f)) / fs; + const double om_d = (target_om - last_om) / (double)sample_count; + double om = last_om; + + for (pos = 0; pos < sample_count; pos++) { + buffer_write(sine[pos], sin(phi)); + buffer_write(cosine[pos], cos(phi)); + om += om_d; + phi += om; + } + while (phi > 2.0 * M_PI) { + phi -= 2.0 * M_PI; + } + + plugin_data->phi = phi; + plugin_data->last_om = target_om; +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainSinCos(LADSPA_Handle instance, LADSPA_Data gain) { + ((SinCos *)instance)->run_adding_gain = gain; +} + +static void runAddingSinCos(LADSPA_Handle instance, unsigned long sample_count) { + SinCos *plugin_data = (SinCos *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Base frequency (Hz) (float value) */ + const LADSPA_Data freq = *(plugin_data->freq); + + /* Pitch offset (float value) */ + const LADSPA_Data pitch = *(plugin_data->pitch); + + /* Sine output (array of floats of length sample_count) */ + LADSPA_Data * const sine = plugin_data->sine; + + /* Cosine output (array of floats of length sample_count) */ + LADSPA_Data * const cosine = plugin_data->cosine; + float fs = plugin_data->fs; + double last_om = plugin_data->last_om; + double phi = plugin_data->phi; + +#line 27 "sin_cos_1881.xml" + unsigned long pos; + const double target_om = 2.0 * M_PI * f_clamp(freq, 0.0f, 0.5f) * pow(2.0, f_clamp(pitch, 0.0f, 16.0f)) / fs; + const double om_d = (target_om - last_om) / (double)sample_count; + double om = last_om; + + for (pos = 0; pos < sample_count; pos++) { + buffer_write(sine[pos], sin(phi)); + buffer_write(cosine[pos], cos(phi)); + om += om_d; + phi += om; + } + while (phi > 2.0 * M_PI) { + phi -= 2.0 * M_PI; + } + + plugin_data->phi = phi; + plugin_data->last_om = target_om; +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + sinCosDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (sinCosDescriptor) { + sinCosDescriptor->UniqueID = 1881; + sinCosDescriptor->Label = "sinCos"; + sinCosDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + sinCosDescriptor->Name = + D_("Sine + cosine oscillator"); + sinCosDescriptor->Maker = + "Steve Harris "; + sinCosDescriptor->Copyright = + "GPL"; + sinCosDescriptor->PortCount = 4; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(4, + sizeof(LADSPA_PortDescriptor)); + sinCosDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(4, + sizeof(LADSPA_PortRangeHint)); + sinCosDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(4, sizeof(char*)); + sinCosDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Base frequency (Hz) */ + port_descriptors[SINCOS_FREQ] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[SINCOS_FREQ] = + D_("Base frequency (Hz)"); + port_range_hints[SINCOS_FREQ].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_440 | LADSPA_HINT_SAMPLE_RATE | LADSPA_HINT_LOGARITHMIC; + port_range_hints[SINCOS_FREQ].LowerBound = 0.000001; + port_range_hints[SINCOS_FREQ].UpperBound = 0.5; + + /* Parameters for Pitch offset */ + port_descriptors[SINCOS_PITCH] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[SINCOS_PITCH] = + D_("Pitch offset"); + port_range_hints[SINCOS_PITCH].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[SINCOS_PITCH].LowerBound = 0; + port_range_hints[SINCOS_PITCH].UpperBound = 8; + + /* Parameters for Sine output */ + port_descriptors[SINCOS_SINE] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[SINCOS_SINE] = + D_("Sine output"); + port_range_hints[SINCOS_SINE].HintDescriptor = 0; + + /* Parameters for Cosine output */ + port_descriptors[SINCOS_COSINE] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[SINCOS_COSINE] = + D_("Cosine output"); + port_range_hints[SINCOS_COSINE].HintDescriptor = 0; + + sinCosDescriptor->activate = NULL; + sinCosDescriptor->cleanup = cleanupSinCos; + sinCosDescriptor->connect_port = connectPortSinCos; + sinCosDescriptor->deactivate = NULL; + sinCosDescriptor->instantiate = instantiateSinCos; + sinCosDescriptor->run = runSinCos; + sinCosDescriptor->run_adding = runAddingSinCos; + sinCosDescriptor->set_run_adding_gain = setRunAddingGainSinCos; + } +} + +void _fini() { + if (sinCosDescriptor) { + free((LADSPA_PortDescriptor *)sinCosDescriptor->PortDescriptors); + free((char **)sinCosDescriptor->PortNames); + free((LADSPA_PortRangeHint *)sinCosDescriptor->PortRangeHints); + free(sinCosDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/single_para_1203.c b/plugins/ladspa_effect/swh/single_para_1203.c new file mode 100644 index 000000000..75977a38c --- /dev/null +++ b/plugins/ladspa_effect/swh/single_para_1203.c @@ -0,0 +1,323 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + +#line 10 "single_para_1203.xml" + +#include "util/biquad.h" + +#define SINGLEPARA_GAIN 0 +#define SINGLEPARA_FC 1 +#define SINGLEPARA_BW 2 +#define SINGLEPARA_INPUT 3 +#define SINGLEPARA_OUTPUT 4 + +static LADSPA_Descriptor *singleParaDescriptor = NULL; + +typedef struct { + LADSPA_Data *gain; + LADSPA_Data *fc; + LADSPA_Data *bw; + LADSPA_Data *input; + LADSPA_Data *output; + biquad * filter; + float fs; + LADSPA_Data run_adding_gain; +} SinglePara; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return singleParaDescriptor; + default: + return NULL; + } +} + +static void activateSinglePara(LADSPA_Handle instance) { + SinglePara *plugin_data = (SinglePara *)instance; + biquad *filter = plugin_data->filter; + float fs = plugin_data->fs; +#line 26 "single_para_1203.xml" + biquad_init(filter); + plugin_data->filter = filter; + plugin_data->fs = fs; + +} + +static void cleanupSinglePara(LADSPA_Handle instance) { +#line 30 "single_para_1203.xml" + SinglePara *plugin_data = (SinglePara *)instance; + free(plugin_data->filter); + free(instance); +} + +static void connectPortSinglePara( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + SinglePara *plugin; + + plugin = (SinglePara *)instance; + switch (port) { + case SINGLEPARA_GAIN: + plugin->gain = data; + break; + case SINGLEPARA_FC: + plugin->fc = data; + break; + case SINGLEPARA_BW: + plugin->bw = data; + break; + case SINGLEPARA_INPUT: + plugin->input = data; + break; + case SINGLEPARA_OUTPUT: + plugin->output = data; + break; + } +} + +static LADSPA_Handle instantiateSinglePara( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + SinglePara *plugin_data = (SinglePara *)malloc(sizeof(SinglePara)); + biquad *filter = NULL; + float fs; + +#line 20 "single_para_1203.xml" + fs = (float)s_rate; + filter = malloc(sizeof(biquad)); + biquad_init(filter); + + plugin_data->filter = filter; + plugin_data->fs = fs; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runSinglePara(LADSPA_Handle instance, unsigned long sample_count) { + SinglePara *plugin_data = (SinglePara *)instance; + + /* Gain (dB) (float value) */ + const LADSPA_Data gain = *(plugin_data->gain); + + /* Frequency (Hz) (float value) */ + const LADSPA_Data fc = *(plugin_data->fc); + + /* Bandwidth (octaves) (float value) */ + const LADSPA_Data bw = *(plugin_data->bw); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + biquad * filter = plugin_data->filter; + float fs = plugin_data->fs; + +#line 34 "single_para_1203.xml" + unsigned long pos; + + eq_set_params(filter, fc, gain, bw, fs); + + for (pos = 0; pos < sample_count; pos++) { + buffer_write(output[pos], biquad_run(filter, input[pos])); + } +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainSinglePara(LADSPA_Handle instance, LADSPA_Data gain) { + ((SinglePara *)instance)->run_adding_gain = gain; +} + +static void runAddingSinglePara(LADSPA_Handle instance, unsigned long sample_count) { + SinglePara *plugin_data = (SinglePara *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Gain (dB) (float value) */ + const LADSPA_Data gain = *(plugin_data->gain); + + /* Frequency (Hz) (float value) */ + const LADSPA_Data fc = *(plugin_data->fc); + + /* Bandwidth (octaves) (float value) */ + const LADSPA_Data bw = *(plugin_data->bw); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + biquad * filter = plugin_data->filter; + float fs = plugin_data->fs; + +#line 34 "single_para_1203.xml" + unsigned long pos; + + eq_set_params(filter, fc, gain, bw, fs); + + for (pos = 0; pos < sample_count; pos++) { + buffer_write(output[pos], biquad_run(filter, input[pos])); + } +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + singleParaDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (singleParaDescriptor) { + singleParaDescriptor->UniqueID = 1203; + singleParaDescriptor->Label = "singlePara"; + singleParaDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + singleParaDescriptor->Name = + D_("Single band parametric"); + singleParaDescriptor->Maker = + "Steve Harris "; + singleParaDescriptor->Copyright = + "GPL"; + singleParaDescriptor->PortCount = 5; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(5, + sizeof(LADSPA_PortDescriptor)); + singleParaDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(5, + sizeof(LADSPA_PortRangeHint)); + singleParaDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(5, sizeof(char*)); + singleParaDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Gain (dB) */ + port_descriptors[SINGLEPARA_GAIN] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[SINGLEPARA_GAIN] = + D_("Gain (dB)"); + port_range_hints[SINGLEPARA_GAIN].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[SINGLEPARA_GAIN].LowerBound = -70; + port_range_hints[SINGLEPARA_GAIN].UpperBound = +30; + + /* Parameters for Frequency (Hz) */ + port_descriptors[SINGLEPARA_FC] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[SINGLEPARA_FC] = + D_("Frequency (Hz)"); + port_range_hints[SINGLEPARA_FC].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_SAMPLE_RATE | LADSPA_HINT_DEFAULT_440; + port_range_hints[SINGLEPARA_FC].LowerBound = 0; + port_range_hints[SINGLEPARA_FC].UpperBound = 0.4; + + /* Parameters for Bandwidth (octaves) */ + port_descriptors[SINGLEPARA_BW] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[SINGLEPARA_BW] = + D_("Bandwidth (octaves)"); + port_range_hints[SINGLEPARA_BW].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_1; + port_range_hints[SINGLEPARA_BW].LowerBound = 0; + port_range_hints[SINGLEPARA_BW].UpperBound = 4; + + /* Parameters for Input */ + port_descriptors[SINGLEPARA_INPUT] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[SINGLEPARA_INPUT] = + D_("Input"); + port_range_hints[SINGLEPARA_INPUT].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE; + port_range_hints[SINGLEPARA_INPUT].LowerBound = -1.0; + port_range_hints[SINGLEPARA_INPUT].UpperBound = +1.0; + + /* Parameters for Output */ + port_descriptors[SINGLEPARA_OUTPUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[SINGLEPARA_OUTPUT] = + D_("Output"); + port_range_hints[SINGLEPARA_OUTPUT].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE; + port_range_hints[SINGLEPARA_OUTPUT].LowerBound = -1.0; + port_range_hints[SINGLEPARA_OUTPUT].UpperBound = +1.0; + + singleParaDescriptor->activate = activateSinglePara; + singleParaDescriptor->cleanup = cleanupSinglePara; + singleParaDescriptor->connect_port = connectPortSinglePara; + singleParaDescriptor->deactivate = NULL; + singleParaDescriptor->instantiate = instantiateSinglePara; + singleParaDescriptor->run = runSinglePara; + singleParaDescriptor->run_adding = runAddingSinglePara; + singleParaDescriptor->set_run_adding_gain = setRunAddingGainSinglePara; + } +} + +void _fini() { + if (singleParaDescriptor) { + free((LADSPA_PortDescriptor *)singleParaDescriptor->PortDescriptors); + free((char **)singleParaDescriptor->PortNames); + free((LADSPA_PortRangeHint *)singleParaDescriptor->PortRangeHints); + free(singleParaDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/sinus_wavewrapper_1198.c b/plugins/ladspa_effect/swh/sinus_wavewrapper_1198.c new file mode 100644 index 000000000..8703d2ba1 --- /dev/null +++ b/plugins/ladspa_effect/swh/sinus_wavewrapper_1198.c @@ -0,0 +1,255 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + + +#define SINUSWAVEWRAPPER_WRAP 0 +#define SINUSWAVEWRAPPER_INPUT 1 +#define SINUSWAVEWRAPPER_OUTPUT 2 + +static LADSPA_Descriptor *sinusWavewrapperDescriptor = NULL; + +typedef struct { + LADSPA_Data *wrap; + LADSPA_Data *input; + LADSPA_Data *output; + LADSPA_Data run_adding_gain; +} SinusWavewrapper; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return sinusWavewrapperDescriptor; + default: + return NULL; + } +} + +static void cleanupSinusWavewrapper(LADSPA_Handle instance) { + free(instance); +} + +static void connectPortSinusWavewrapper( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + SinusWavewrapper *plugin; + + plugin = (SinusWavewrapper *)instance; + switch (port) { + case SINUSWAVEWRAPPER_WRAP: + plugin->wrap = data; + break; + case SINUSWAVEWRAPPER_INPUT: + plugin->input = data; + break; + case SINUSWAVEWRAPPER_OUTPUT: + plugin->output = data; + break; + } +} + +static LADSPA_Handle instantiateSinusWavewrapper( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + SinusWavewrapper *plugin_data = (SinusWavewrapper *)malloc(sizeof(SinusWavewrapper)); + plugin_data->run_adding_gain = 1.0f; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runSinusWavewrapper(LADSPA_Handle instance, unsigned long sample_count) { + SinusWavewrapper *plugin_data = (SinusWavewrapper *)instance; + + /* Wrap degree (float value) */ + const LADSPA_Data wrap = *(plugin_data->wrap); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + +#line 16 "sinus_wavewrapper_1198.xml" + float coef = wrap * M_PI; + unsigned long pos; + + if (coef < 0.05f) { + coef = 0.05f; + } + + for (pos = 0; pos < sample_count; pos++) { + buffer_write(output[pos], sin(input[pos] * coef)); + } +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainSinusWavewrapper(LADSPA_Handle instance, LADSPA_Data gain) { + ((SinusWavewrapper *)instance)->run_adding_gain = gain; +} + +static void runAddingSinusWavewrapper(LADSPA_Handle instance, unsigned long sample_count) { + SinusWavewrapper *plugin_data = (SinusWavewrapper *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Wrap degree (float value) */ + const LADSPA_Data wrap = *(plugin_data->wrap); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + +#line 16 "sinus_wavewrapper_1198.xml" + float coef = wrap * M_PI; + unsigned long pos; + + if (coef < 0.05f) { + coef = 0.05f; + } + + for (pos = 0; pos < sample_count; pos++) { + buffer_write(output[pos], sin(input[pos] * coef)); + } +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + sinusWavewrapperDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (sinusWavewrapperDescriptor) { + sinusWavewrapperDescriptor->UniqueID = 1198; + sinusWavewrapperDescriptor->Label = "sinusWavewrapper"; + sinusWavewrapperDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + sinusWavewrapperDescriptor->Name = + D_("Sinus wavewrapper"); + sinusWavewrapperDescriptor->Maker = + "Steve Harris "; + sinusWavewrapperDescriptor->Copyright = + "GPL"; + sinusWavewrapperDescriptor->PortCount = 3; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(3, + sizeof(LADSPA_PortDescriptor)); + sinusWavewrapperDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(3, + sizeof(LADSPA_PortRangeHint)); + sinusWavewrapperDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(3, sizeof(char*)); + sinusWavewrapperDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Wrap degree */ + port_descriptors[SINUSWAVEWRAPPER_WRAP] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[SINUSWAVEWRAPPER_WRAP] = + D_("Wrap degree"); + port_range_hints[SINUSWAVEWRAPPER_WRAP].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[SINUSWAVEWRAPPER_WRAP].LowerBound = 0; + port_range_hints[SINUSWAVEWRAPPER_WRAP].UpperBound = 10; + + /* Parameters for Input */ + port_descriptors[SINUSWAVEWRAPPER_INPUT] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[SINUSWAVEWRAPPER_INPUT] = + D_("Input"); + port_range_hints[SINUSWAVEWRAPPER_INPUT].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE; + port_range_hints[SINUSWAVEWRAPPER_INPUT].LowerBound = -1; + port_range_hints[SINUSWAVEWRAPPER_INPUT].UpperBound = +1; + + /* Parameters for Output */ + port_descriptors[SINUSWAVEWRAPPER_OUTPUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[SINUSWAVEWRAPPER_OUTPUT] = + D_("Output"); + port_range_hints[SINUSWAVEWRAPPER_OUTPUT].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE; + port_range_hints[SINUSWAVEWRAPPER_OUTPUT].LowerBound = -1; + port_range_hints[SINUSWAVEWRAPPER_OUTPUT].UpperBound = +1; + + sinusWavewrapperDescriptor->activate = NULL; + sinusWavewrapperDescriptor->cleanup = cleanupSinusWavewrapper; + sinusWavewrapperDescriptor->connect_port = connectPortSinusWavewrapper; + sinusWavewrapperDescriptor->deactivate = NULL; + sinusWavewrapperDescriptor->instantiate = instantiateSinusWavewrapper; + sinusWavewrapperDescriptor->run = runSinusWavewrapper; + sinusWavewrapperDescriptor->run_adding = runAddingSinusWavewrapper; + sinusWavewrapperDescriptor->set_run_adding_gain = setRunAddingGainSinusWavewrapper; + } +} + +void _fini() { + if (sinusWavewrapperDescriptor) { + free((LADSPA_PortDescriptor *)sinusWavewrapperDescriptor->PortDescriptors); + free((char **)sinusWavewrapperDescriptor->PortNames); + free((LADSPA_PortRangeHint *)sinusWavewrapperDescriptor->PortRangeHints); + free(sinusWavewrapperDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/smooth_decimate_1414.c b/plugins/ladspa_effect/swh/smooth_decimate_1414.c new file mode 100644 index 000000000..a6f13853f --- /dev/null +++ b/plugins/ladspa_effect/swh/smooth_decimate_1414.c @@ -0,0 +1,340 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + +#line 10 "smooth_decimate_1414.xml" + +#include "ladspa-util.h" + +#define SMOOTHDECIMATE_RATE 0 +#define SMOOTHDECIMATE_SMOOTH 1 +#define SMOOTHDECIMATE_INPUT 2 +#define SMOOTHDECIMATE_OUTPUT 3 + +static LADSPA_Descriptor *smoothDecimateDescriptor = NULL; + +typedef struct { + LADSPA_Data *rate; + LADSPA_Data *smooth; + LADSPA_Data *input; + LADSPA_Data *output; + float accum; + float * buffer; + int buffer_pos; + float fs; + LADSPA_Data run_adding_gain; +} SmoothDecimate; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return smoothDecimateDescriptor; + default: + return NULL; + } +} + +static void activateSmoothDecimate(LADSPA_Handle instance) { + SmoothDecimate *plugin_data = (SmoothDecimate *)instance; + float accum = plugin_data->accum; + float *buffer = plugin_data->buffer; + int buffer_pos = plugin_data->buffer_pos; + float fs = plugin_data->fs; +#line 26 "smooth_decimate_1414.xml" + buffer_pos = 0; + accum = 0.0f; + plugin_data->accum = accum; + plugin_data->buffer = buffer; + plugin_data->buffer_pos = buffer_pos; + plugin_data->fs = fs; + +} + +static void cleanupSmoothDecimate(LADSPA_Handle instance) { +#line 55 "smooth_decimate_1414.xml" + SmoothDecimate *plugin_data = (SmoothDecimate *)instance; + free(plugin_data->buffer); + free(instance); +} + +static void connectPortSmoothDecimate( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + SmoothDecimate *plugin; + + plugin = (SmoothDecimate *)instance; + switch (port) { + case SMOOTHDECIMATE_RATE: + plugin->rate = data; + break; + case SMOOTHDECIMATE_SMOOTH: + plugin->smooth = data; + break; + case SMOOTHDECIMATE_INPUT: + plugin->input = data; + break; + case SMOOTHDECIMATE_OUTPUT: + plugin->output = data; + break; + } +} + +static LADSPA_Handle instantiateSmoothDecimate( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + SmoothDecimate *plugin_data = (SmoothDecimate *)malloc(sizeof(SmoothDecimate)); + float accum; + float *buffer = NULL; + int buffer_pos; + float fs; + +#line 19 "smooth_decimate_1414.xml" + buffer = calloc(8, sizeof(float)); + buffer_pos = 0; + accum = 0.0f; + fs = (float)s_rate; + + plugin_data->accum = accum; + plugin_data->buffer = buffer; + plugin_data->buffer_pos = buffer_pos; + plugin_data->fs = fs; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runSmoothDecimate(LADSPA_Handle instance, unsigned long sample_count) { + SmoothDecimate *plugin_data = (SmoothDecimate *)instance; + + /* Resample rate (float value) */ + const LADSPA_Data rate = *(plugin_data->rate); + + /* Smoothing (float value) */ + const LADSPA_Data smooth = *(plugin_data->smooth); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + float accum = plugin_data->accum; + float * buffer = plugin_data->buffer; + int buffer_pos = plugin_data->buffer_pos; + float fs = plugin_data->fs; + +#line 31 "smooth_decimate_1414.xml" + unsigned long pos; + float smoothed; + float inc = (rate / fs); + inc = f_clamp(inc, 0.0f, 1.0f); + + for (pos = 0; pos < sample_count; pos++) { + accum += inc; + if (accum >= 1.0f) { + accum -= 1.0f; + buffer_pos = (buffer_pos + 1) & 7; + buffer[buffer_pos] = input[pos]; + } + smoothed = cube_interp(accum, buffer[(buffer_pos - 3) & 7], + buffer[(buffer_pos - 2) & 7], + buffer[(buffer_pos - 1) & 7], + buffer[buffer_pos]); + buffer_write(output[pos], LIN_INTERP(smooth, buffer[(buffer_pos - 3) & 7], smoothed)); + } + + plugin_data->accum = accum; + plugin_data->buffer_pos = buffer_pos; +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainSmoothDecimate(LADSPA_Handle instance, LADSPA_Data gain) { + ((SmoothDecimate *)instance)->run_adding_gain = gain; +} + +static void runAddingSmoothDecimate(LADSPA_Handle instance, unsigned long sample_count) { + SmoothDecimate *plugin_data = (SmoothDecimate *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Resample rate (float value) */ + const LADSPA_Data rate = *(plugin_data->rate); + + /* Smoothing (float value) */ + const LADSPA_Data smooth = *(plugin_data->smooth); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + float accum = plugin_data->accum; + float * buffer = plugin_data->buffer; + int buffer_pos = plugin_data->buffer_pos; + float fs = plugin_data->fs; + +#line 31 "smooth_decimate_1414.xml" + unsigned long pos; + float smoothed; + float inc = (rate / fs); + inc = f_clamp(inc, 0.0f, 1.0f); + + for (pos = 0; pos < sample_count; pos++) { + accum += inc; + if (accum >= 1.0f) { + accum -= 1.0f; + buffer_pos = (buffer_pos + 1) & 7; + buffer[buffer_pos] = input[pos]; + } + smoothed = cube_interp(accum, buffer[(buffer_pos - 3) & 7], + buffer[(buffer_pos - 2) & 7], + buffer[(buffer_pos - 1) & 7], + buffer[buffer_pos]); + buffer_write(output[pos], LIN_INTERP(smooth, buffer[(buffer_pos - 3) & 7], smoothed)); + } + + plugin_data->accum = accum; + plugin_data->buffer_pos = buffer_pos; +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + smoothDecimateDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (smoothDecimateDescriptor) { + smoothDecimateDescriptor->UniqueID = 1414; + smoothDecimateDescriptor->Label = "smoothDecimate"; + smoothDecimateDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + smoothDecimateDescriptor->Name = + D_("Smooth Decimator"); + smoothDecimateDescriptor->Maker = + "Steve Harris "; + smoothDecimateDescriptor->Copyright = + "GPL"; + smoothDecimateDescriptor->PortCount = 4; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(4, + sizeof(LADSPA_PortDescriptor)); + smoothDecimateDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(4, + sizeof(LADSPA_PortRangeHint)); + smoothDecimateDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(4, sizeof(char*)); + smoothDecimateDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Resample rate */ + port_descriptors[SMOOTHDECIMATE_RATE] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[SMOOTHDECIMATE_RATE] = + D_("Resample rate"); + port_range_hints[SMOOTHDECIMATE_RATE].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_SAMPLE_RATE | LADSPA_HINT_DEFAULT_MAXIMUM; + port_range_hints[SMOOTHDECIMATE_RATE].LowerBound = 0; + port_range_hints[SMOOTHDECIMATE_RATE].UpperBound = 1; + + /* Parameters for Smoothing */ + port_descriptors[SMOOTHDECIMATE_SMOOTH] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[SMOOTHDECIMATE_SMOOTH] = + D_("Smoothing"); + port_range_hints[SMOOTHDECIMATE_SMOOTH].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MAXIMUM; + port_range_hints[SMOOTHDECIMATE_SMOOTH].LowerBound = 0; + port_range_hints[SMOOTHDECIMATE_SMOOTH].UpperBound = 1; + + /* Parameters for Input */ + port_descriptors[SMOOTHDECIMATE_INPUT] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[SMOOTHDECIMATE_INPUT] = + D_("Input"); + port_range_hints[SMOOTHDECIMATE_INPUT].HintDescriptor = 0; + + /* Parameters for Output */ + port_descriptors[SMOOTHDECIMATE_OUTPUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[SMOOTHDECIMATE_OUTPUT] = + D_("Output"); + port_range_hints[SMOOTHDECIMATE_OUTPUT].HintDescriptor = 0; + + smoothDecimateDescriptor->activate = activateSmoothDecimate; + smoothDecimateDescriptor->cleanup = cleanupSmoothDecimate; + smoothDecimateDescriptor->connect_port = connectPortSmoothDecimate; + smoothDecimateDescriptor->deactivate = NULL; + smoothDecimateDescriptor->instantiate = instantiateSmoothDecimate; + smoothDecimateDescriptor->run = runSmoothDecimate; + smoothDecimateDescriptor->run_adding = runAddingSmoothDecimate; + smoothDecimateDescriptor->set_run_adding_gain = setRunAddingGainSmoothDecimate; + } +} + +void _fini() { + if (smoothDecimateDescriptor) { + free((LADSPA_PortDescriptor *)smoothDecimateDescriptor->PortDescriptors); + free((char **)smoothDecimateDescriptor->PortNames); + free((LADSPA_PortRangeHint *)smoothDecimateDescriptor->PortRangeHints); + free(smoothDecimateDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/split_1406.c b/plugins/ladspa_effect/swh/split_1406.c new file mode 100644 index 000000000..80bc268cd --- /dev/null +++ b/plugins/ladspa_effect/swh/split_1406.c @@ -0,0 +1,251 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + + +#define SPLIT_INPUT 0 +#define SPLIT_OUT2 1 +#define SPLIT_OUT1 2 + +static LADSPA_Descriptor *splitDescriptor = NULL; + +typedef struct { + LADSPA_Data *input; + LADSPA_Data *out2; + LADSPA_Data *out1; + LADSPA_Data run_adding_gain; +} Split; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return splitDescriptor; + default: + return NULL; + } +} + +static void cleanupSplit(LADSPA_Handle instance) { + free(instance); +} + +static void connectPortSplit( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + Split *plugin; + + plugin = (Split *)instance; + switch (port) { + case SPLIT_INPUT: + plugin->input = data; + break; + case SPLIT_OUT2: + plugin->out2 = data; + break; + case SPLIT_OUT1: + plugin->out1 = data; + break; + } +} + +static LADSPA_Handle instantiateSplit( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + Split *plugin_data = (Split *)malloc(sizeof(Split)); + plugin_data->run_adding_gain = 1.0f; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runSplit(LADSPA_Handle instance, unsigned long sample_count) { + Split *plugin_data = (Split *)instance; + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output 1 (array of floats of length sample_count) */ + LADSPA_Data * const out2 = plugin_data->out2; + + /* Output 2 (array of floats of length sample_count) */ + LADSPA_Data * const out1 = plugin_data->out1; + +#line 16 "split_1406.xml" + unsigned long pos; + + for (pos = 0; pos < sample_count; pos++) { + const LADSPA_Data in = input[pos]; + + buffer_write(out1[pos], in); + buffer_write(out2[pos], in); + } +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainSplit(LADSPA_Handle instance, LADSPA_Data gain) { + ((Split *)instance)->run_adding_gain = gain; +} + +static void runAddingSplit(LADSPA_Handle instance, unsigned long sample_count) { + Split *plugin_data = (Split *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output 1 (array of floats of length sample_count) */ + LADSPA_Data * const out2 = plugin_data->out2; + + /* Output 2 (array of floats of length sample_count) */ + LADSPA_Data * const out1 = plugin_data->out1; + +#line 16 "split_1406.xml" + unsigned long pos; + + for (pos = 0; pos < sample_count; pos++) { + const LADSPA_Data in = input[pos]; + + buffer_write(out1[pos], in); + buffer_write(out2[pos], in); + } +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + splitDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (splitDescriptor) { + splitDescriptor->UniqueID = 1406; + splitDescriptor->Label = "split"; + splitDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + splitDescriptor->Name = + D_("Mono to Stereo splitter"); + splitDescriptor->Maker = + "Frank Neumann "; + splitDescriptor->Copyright = + "GPL"; + splitDescriptor->PortCount = 3; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(3, + sizeof(LADSPA_PortDescriptor)); + splitDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(3, + sizeof(LADSPA_PortRangeHint)); + splitDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(3, sizeof(char*)); + splitDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Input */ + port_descriptors[SPLIT_INPUT] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[SPLIT_INPUT] = + D_("Input"); + port_range_hints[SPLIT_INPUT].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE; + port_range_hints[SPLIT_INPUT].LowerBound = -1; + port_range_hints[SPLIT_INPUT].UpperBound = +1; + + /* Parameters for Output 1 */ + port_descriptors[SPLIT_OUT2] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[SPLIT_OUT2] = + D_("Output 1"); + port_range_hints[SPLIT_OUT2].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE; + port_range_hints[SPLIT_OUT2].LowerBound = -1; + port_range_hints[SPLIT_OUT2].UpperBound = +1; + + /* Parameters for Output 2 */ + port_descriptors[SPLIT_OUT1] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[SPLIT_OUT1] = + D_("Output 2"); + port_range_hints[SPLIT_OUT1].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE; + port_range_hints[SPLIT_OUT1].LowerBound = -1; + port_range_hints[SPLIT_OUT1].UpperBound = +1; + + splitDescriptor->activate = NULL; + splitDescriptor->cleanup = cleanupSplit; + splitDescriptor->connect_port = connectPortSplit; + splitDescriptor->deactivate = NULL; + splitDescriptor->instantiate = instantiateSplit; + splitDescriptor->run = runSplit; + splitDescriptor->run_adding = runAddingSplit; + splitDescriptor->set_run_adding_gain = setRunAddingGainSplit; + } +} + +void _fini() { + if (splitDescriptor) { + free((LADSPA_PortDescriptor *)splitDescriptor->PortDescriptors); + free((char **)splitDescriptor->PortNames); + free((LADSPA_PortRangeHint *)splitDescriptor->PortRangeHints); + free(splitDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/step_muxer_1212.c b/plugins/ladspa_effect/swh/step_muxer_1212.c new file mode 100644 index 000000000..da231a58a --- /dev/null +++ b/plugins/ladspa_effect/swh/step_muxer_1212.c @@ -0,0 +1,543 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + +#line 10 "step_muxer_1212.xml" + +#define FADE_IN 1 +#define STABLE 2 +#define FADE_OUT 3 + +#define STEPMUXER_XFADET 0 +#define STEPMUXER_CLOCK 1 +#define STEPMUXER_INPUT0 2 +#define STEPMUXER_INPUT1 3 +#define STEPMUXER_INPUT2 4 +#define STEPMUXER_INPUT3 5 +#define STEPMUXER_INPUT4 6 +#define STEPMUXER_INPUT5 7 +#define STEPMUXER_INPUT6 8 +#define STEPMUXER_INPUT7 9 +#define STEPMUXER_OUTPUT 10 + +static LADSPA_Descriptor *stepMuxerDescriptor = NULL; + +typedef struct { + LADSPA_Data *xfadet; + LADSPA_Data *clock; + LADSPA_Data *input0; + LADSPA_Data *input1; + LADSPA_Data *input2; + LADSPA_Data *input3; + LADSPA_Data *input4; + LADSPA_Data *input5; + LADSPA_Data *input6; + LADSPA_Data *input7; + LADSPA_Data *output; + float * ch_gain; + int * ch_state; + int current_ch; + LADSPA_Data last_clock; + float sample_rate; + LADSPA_Data run_adding_gain; +} StepMuxer; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return stepMuxerDescriptor; + default: + return NULL; + } +} + +static void activateStepMuxer(LADSPA_Handle instance) { + StepMuxer *plugin_data = (StepMuxer *)instance; + float *ch_gain = plugin_data->ch_gain; + int *ch_state = plugin_data->ch_state; + int current_ch = plugin_data->current_ch; + LADSPA_Data last_clock = plugin_data->last_clock; + float sample_rate = plugin_data->sample_rate; +#line 31 "step_muxer_1212.xml" + int i; + + ch_state[0] = STABLE; + ch_gain[0] = 1.0f; + for (i = 1; i < 8; i++) { + ch_state[i] = STABLE; + ch_gain[i] = 0.0f; + } + current_ch = 0; + last_clock = 0.0f; + sample_rate = sample_rate; + plugin_data->ch_gain = ch_gain; + plugin_data->ch_state = ch_state; + plugin_data->current_ch = current_ch; + plugin_data->last_clock = last_clock; + plugin_data->sample_rate = sample_rate; + +} + +static void cleanupStepMuxer(LADSPA_Handle instance) { +#line 45 "step_muxer_1212.xml" + StepMuxer *plugin_data = (StepMuxer *)instance; + free(plugin_data->ch_state); + free(plugin_data->ch_gain); + free(instance); +} + +static void connectPortStepMuxer( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + StepMuxer *plugin; + + plugin = (StepMuxer *)instance; + switch (port) { + case STEPMUXER_XFADET: + plugin->xfadet = data; + break; + case STEPMUXER_CLOCK: + plugin->clock = data; + break; + case STEPMUXER_INPUT0: + plugin->input0 = data; + break; + case STEPMUXER_INPUT1: + plugin->input1 = data; + break; + case STEPMUXER_INPUT2: + plugin->input2 = data; + break; + case STEPMUXER_INPUT3: + plugin->input3 = data; + break; + case STEPMUXER_INPUT4: + plugin->input4 = data; + break; + case STEPMUXER_INPUT5: + plugin->input5 = data; + break; + case STEPMUXER_INPUT6: + plugin->input6 = data; + break; + case STEPMUXER_INPUT7: + plugin->input7 = data; + break; + case STEPMUXER_OUTPUT: + plugin->output = data; + break; + } +} + +static LADSPA_Handle instantiateStepMuxer( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + StepMuxer *plugin_data = (StepMuxer *)malloc(sizeof(StepMuxer)); + float *ch_gain = NULL; + int *ch_state = NULL; + int current_ch; + LADSPA_Data last_clock; + float sample_rate; + +#line 23 "step_muxer_1212.xml" + sample_rate = s_rate; + ch_state = malloc(sizeof(int) * 8); + ch_gain = malloc(sizeof(float) * 8); + current_ch = 0; + last_clock = 0.0f; + + plugin_data->ch_gain = ch_gain; + plugin_data->ch_state = ch_state; + plugin_data->current_ch = current_ch; + plugin_data->last_clock = last_clock; + plugin_data->sample_rate = sample_rate; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runStepMuxer(LADSPA_Handle instance, unsigned long sample_count) { + StepMuxer *plugin_data = (StepMuxer *)instance; + + /* Crossfade time (in ms) (float value) */ + const LADSPA_Data xfadet = *(plugin_data->xfadet); + + /* Clock (array of floats of length sample_count) */ + const LADSPA_Data * const clock = plugin_data->clock; + + /* Input 1 (array of floats of length sample_count) */ + const LADSPA_Data * const input0 = plugin_data->input0; + + /* Input 2 (array of floats of length sample_count) */ + const LADSPA_Data * const input1 = plugin_data->input1; + + /* Input 3 (array of floats of length sample_count) */ + const LADSPA_Data * const input2 = plugin_data->input2; + + /* Input 4 (array of floats of length sample_count) */ + const LADSPA_Data * const input3 = plugin_data->input3; + + /* Input 5 (array of floats of length sample_count) */ + const LADSPA_Data * const input4 = plugin_data->input4; + + /* Input 6 (array of floats of length sample_count) */ + const LADSPA_Data * const input5 = plugin_data->input5; + + /* Input 7 (array of floats of length sample_count) */ + const LADSPA_Data * const input6 = plugin_data->input6; + + /* Input 8 (array of floats of length sample_count) */ + const LADSPA_Data * const input7 = plugin_data->input7; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + float * ch_gain = plugin_data->ch_gain; + int * ch_state = plugin_data->ch_state; + int current_ch = plugin_data->current_ch; + LADSPA_Data last_clock = plugin_data->last_clock; + float sample_rate = plugin_data->sample_rate; + +#line 50 "step_muxer_1212.xml" + unsigned long pos; + float fade_inc = 1.0f / (xfadet * sample_rate * 1000.0f); + float accum; + int ch; + + for (pos = 0; pos < sample_count; pos++) { + + // Calculate output value for this sample + accum = 0.0f; + accum += input0[pos] * ch_gain[0]; + accum += input1[pos] * ch_gain[1]; + accum += input2[pos] * ch_gain[2]; + accum += input3[pos] * ch_gain[3]; + accum += input4[pos] * ch_gain[4]; + accum += input5[pos] * ch_gain[5]; + accum += input6[pos] * ch_gain[6]; + accum += input7[pos] * ch_gain[7]; + buffer_write(output[pos], accum); + + // Run crossfades + for (ch = 0; ch < 8; ch++) { + + // Channel is still being faded in + if (ch_state[ch] == FADE_IN) { + ch_gain[ch] += fade_inc; + if (ch_gain[ch] >= 1.0f) { + ch_gain[ch] = 1.0f; + ch_state[ch] = STABLE; + } + + // Channel is still being faded out + } else if (ch_state[ch] == FADE_OUT) { + ch_gain[ch] -= fade_inc; + if (ch_gain[ch] <= 0.0f) { + ch_gain[ch] = 0.0f; + ch_state[ch] = STABLE; + } + } + } + + // Check for clock signal + if (last_clock <= 0.0f && clock[pos] > 0.0f) { + ch_state[current_ch] = FADE_OUT; + current_ch = (current_ch + 1) % 8; + ch_state[current_ch] = FADE_IN; + } + } + + // Save state data + plugin_data->current_ch = current_ch; + plugin_data->last_clock = last_clock; +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainStepMuxer(LADSPA_Handle instance, LADSPA_Data gain) { + ((StepMuxer *)instance)->run_adding_gain = gain; +} + +static void runAddingStepMuxer(LADSPA_Handle instance, unsigned long sample_count) { + StepMuxer *plugin_data = (StepMuxer *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Crossfade time (in ms) (float value) */ + const LADSPA_Data xfadet = *(plugin_data->xfadet); + + /* Clock (array of floats of length sample_count) */ + const LADSPA_Data * const clock = plugin_data->clock; + + /* Input 1 (array of floats of length sample_count) */ + const LADSPA_Data * const input0 = plugin_data->input0; + + /* Input 2 (array of floats of length sample_count) */ + const LADSPA_Data * const input1 = plugin_data->input1; + + /* Input 3 (array of floats of length sample_count) */ + const LADSPA_Data * const input2 = plugin_data->input2; + + /* Input 4 (array of floats of length sample_count) */ + const LADSPA_Data * const input3 = plugin_data->input3; + + /* Input 5 (array of floats of length sample_count) */ + const LADSPA_Data * const input4 = plugin_data->input4; + + /* Input 6 (array of floats of length sample_count) */ + const LADSPA_Data * const input5 = plugin_data->input5; + + /* Input 7 (array of floats of length sample_count) */ + const LADSPA_Data * const input6 = plugin_data->input6; + + /* Input 8 (array of floats of length sample_count) */ + const LADSPA_Data * const input7 = plugin_data->input7; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + float * ch_gain = plugin_data->ch_gain; + int * ch_state = plugin_data->ch_state; + int current_ch = plugin_data->current_ch; + LADSPA_Data last_clock = plugin_data->last_clock; + float sample_rate = plugin_data->sample_rate; + +#line 50 "step_muxer_1212.xml" + unsigned long pos; + float fade_inc = 1.0f / (xfadet * sample_rate * 1000.0f); + float accum; + int ch; + + for (pos = 0; pos < sample_count; pos++) { + + // Calculate output value for this sample + accum = 0.0f; + accum += input0[pos] * ch_gain[0]; + accum += input1[pos] * ch_gain[1]; + accum += input2[pos] * ch_gain[2]; + accum += input3[pos] * ch_gain[3]; + accum += input4[pos] * ch_gain[4]; + accum += input5[pos] * ch_gain[5]; + accum += input6[pos] * ch_gain[6]; + accum += input7[pos] * ch_gain[7]; + buffer_write(output[pos], accum); + + // Run crossfades + for (ch = 0; ch < 8; ch++) { + + // Channel is still being faded in + if (ch_state[ch] == FADE_IN) { + ch_gain[ch] += fade_inc; + if (ch_gain[ch] >= 1.0f) { + ch_gain[ch] = 1.0f; + ch_state[ch] = STABLE; + } + + // Channel is still being faded out + } else if (ch_state[ch] == FADE_OUT) { + ch_gain[ch] -= fade_inc; + if (ch_gain[ch] <= 0.0f) { + ch_gain[ch] = 0.0f; + ch_state[ch] = STABLE; + } + } + } + + // Check for clock signal + if (last_clock <= 0.0f && clock[pos] > 0.0f) { + ch_state[current_ch] = FADE_OUT; + current_ch = (current_ch + 1) % 8; + ch_state[current_ch] = FADE_IN; + } + } + + // Save state data + plugin_data->current_ch = current_ch; + plugin_data->last_clock = last_clock; +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + stepMuxerDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (stepMuxerDescriptor) { + stepMuxerDescriptor->UniqueID = 1212; + stepMuxerDescriptor->Label = "stepMuxer"; + stepMuxerDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + stepMuxerDescriptor->Name = + D_("Step Demuxer"); + stepMuxerDescriptor->Maker = + "Steve Harris "; + stepMuxerDescriptor->Copyright = + "GPL"; + stepMuxerDescriptor->PortCount = 11; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(11, + sizeof(LADSPA_PortDescriptor)); + stepMuxerDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(11, + sizeof(LADSPA_PortRangeHint)); + stepMuxerDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(11, sizeof(char*)); + stepMuxerDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Crossfade time (in ms) */ + port_descriptors[STEPMUXER_XFADET] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[STEPMUXER_XFADET] = + D_("Crossfade time (in ms)"); + port_range_hints[STEPMUXER_XFADET].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MIDDLE; + port_range_hints[STEPMUXER_XFADET].LowerBound = 0; + port_range_hints[STEPMUXER_XFADET].UpperBound = 100; + + /* Parameters for Clock */ + port_descriptors[STEPMUXER_CLOCK] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[STEPMUXER_CLOCK] = + D_("Clock"); + port_range_hints[STEPMUXER_CLOCK].HintDescriptor = 0; + + /* Parameters for Input 1 */ + port_descriptors[STEPMUXER_INPUT0] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[STEPMUXER_INPUT0] = + D_("Input 1"); + port_range_hints[STEPMUXER_INPUT0].HintDescriptor = 0; + + /* Parameters for Input 2 */ + port_descriptors[STEPMUXER_INPUT1] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[STEPMUXER_INPUT1] = + D_("Input 2"); + port_range_hints[STEPMUXER_INPUT1].HintDescriptor = 0; + + /* Parameters for Input 3 */ + port_descriptors[STEPMUXER_INPUT2] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[STEPMUXER_INPUT2] = + D_("Input 3"); + port_range_hints[STEPMUXER_INPUT2].HintDescriptor = 0; + + /* Parameters for Input 4 */ + port_descriptors[STEPMUXER_INPUT3] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[STEPMUXER_INPUT3] = + D_("Input 4"); + port_range_hints[STEPMUXER_INPUT3].HintDescriptor = 0; + + /* Parameters for Input 5 */ + port_descriptors[STEPMUXER_INPUT4] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[STEPMUXER_INPUT4] = + D_("Input 5"); + port_range_hints[STEPMUXER_INPUT4].HintDescriptor = 0; + + /* Parameters for Input 6 */ + port_descriptors[STEPMUXER_INPUT5] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[STEPMUXER_INPUT5] = + D_("Input 6"); + port_range_hints[STEPMUXER_INPUT5].HintDescriptor = 0; + + /* Parameters for Input 7 */ + port_descriptors[STEPMUXER_INPUT6] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[STEPMUXER_INPUT6] = + D_("Input 7"); + port_range_hints[STEPMUXER_INPUT6].HintDescriptor = 0; + + /* Parameters for Input 8 */ + port_descriptors[STEPMUXER_INPUT7] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[STEPMUXER_INPUT7] = + D_("Input 8"); + port_range_hints[STEPMUXER_INPUT7].HintDescriptor = 0; + + /* Parameters for Output */ + port_descriptors[STEPMUXER_OUTPUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[STEPMUXER_OUTPUT] = + D_("Output"); + port_range_hints[STEPMUXER_OUTPUT].HintDescriptor = 0; + + stepMuxerDescriptor->activate = activateStepMuxer; + stepMuxerDescriptor->cleanup = cleanupStepMuxer; + stepMuxerDescriptor->connect_port = connectPortStepMuxer; + stepMuxerDescriptor->deactivate = NULL; + stepMuxerDescriptor->instantiate = instantiateStepMuxer; + stepMuxerDescriptor->run = runStepMuxer; + stepMuxerDescriptor->run_adding = runAddingStepMuxer; + stepMuxerDescriptor->set_run_adding_gain = setRunAddingGainStepMuxer; + } +} + +void _fini() { + if (stepMuxerDescriptor) { + free((LADSPA_PortDescriptor *)stepMuxerDescriptor->PortDescriptors); + free((char **)stepMuxerDescriptor->PortNames); + free((LADSPA_PortRangeHint *)stepMuxerDescriptor->PortRangeHints); + free(stepMuxerDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/surround_encoder_1401.c b/plugins/ladspa_effect/swh/surround_encoder_1401.c new file mode 100644 index 000000000..c11188657 --- /dev/null +++ b/plugins/ladspa_effect/swh/surround_encoder_1401.c @@ -0,0 +1,425 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + +#line 10 "surround_encoder_1401.xml" + +#include "ladspa-util.h" + +#define D_SIZE 256 +#define NZEROS 200 + +/* The non-zero taps of the Hilbert transformer */ +static float xcoeffs[] = { + +0.0008103736f, +0.0008457886f, +0.0009017196f, +0.0009793364f, + +0.0010798341f, +0.0012044365f, +0.0013544008f, +0.0015310235f, + +0.0017356466f, +0.0019696659f, +0.0022345404f, +0.0025318040f, + +0.0028630784f, +0.0032300896f, +0.0036346867f, +0.0040788644f, + +0.0045647903f, +0.0050948365f, +0.0056716186f, +0.0062980419f, + +0.0069773575f, +0.0077132300f, +0.0085098208f, +0.0093718901f, + +0.0103049226f, +0.0113152847f, +0.0124104218f, +0.0135991079f, + +0.0148917649f, +0.0163008758f, +0.0178415242f, +0.0195321089f, + +0.0213953037f, +0.0234593652f, +0.0257599469f, +0.0283426636f, + +0.0312667947f, +0.0346107648f, +0.0384804823f, +0.0430224431f, + +0.0484451086f, +0.0550553725f, +0.0633242001f, +0.0740128560f, + +0.0884368322f, +0.1090816773f, +0.1412745301f, +0.1988673273f, + +0.3326528346f, +0.9997730178f, -0.9997730178f, -0.3326528346f, + -0.1988673273f, -0.1412745301f, -0.1090816773f, -0.0884368322f, + -0.0740128560f, -0.0633242001f, -0.0550553725f, -0.0484451086f, + -0.0430224431f, -0.0384804823f, -0.0346107648f, -0.0312667947f, + -0.0283426636f, -0.0257599469f, -0.0234593652f, -0.0213953037f, + -0.0195321089f, -0.0178415242f, -0.0163008758f, -0.0148917649f, + -0.0135991079f, -0.0124104218f, -0.0113152847f, -0.0103049226f, + -0.0093718901f, -0.0085098208f, -0.0077132300f, -0.0069773575f, + -0.0062980419f, -0.0056716186f, -0.0050948365f, -0.0045647903f, + -0.0040788644f, -0.0036346867f, -0.0032300896f, -0.0028630784f, + -0.0025318040f, -0.0022345404f, -0.0019696659f, -0.0017356466f, + -0.0015310235f, -0.0013544008f, -0.0012044365f, -0.0010798341f, + -0.0009793364f, -0.0009017196f, -0.0008457886f, -0.0008103736f, +}; + +#define SURROUNDENCODER_L 0 +#define SURROUNDENCODER_R 1 +#define SURROUNDENCODER_C 2 +#define SURROUNDENCODER_S 3 +#define SURROUNDENCODER_LT 4 +#define SURROUNDENCODER_RT 5 + +static LADSPA_Descriptor *surroundEncoderDescriptor = NULL; + +typedef struct { + LADSPA_Data *l; + LADSPA_Data *r; + LADSPA_Data *c; + LADSPA_Data *s; + LADSPA_Data *lt; + LADSPA_Data *rt; + LADSPA_Data *buffer; + unsigned int buffer_pos; + unsigned int buffer_size; + LADSPA_Data *delay; + unsigned int dptr; + LADSPA_Data run_adding_gain; +} SurroundEncoder; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return surroundEncoderDescriptor; + default: + return NULL; + } +} + +static void activateSurroundEncoder(LADSPA_Handle instance) { + SurroundEncoder *plugin_data = (SurroundEncoder *)instance; + LADSPA_Data *buffer = plugin_data->buffer; + unsigned int buffer_pos = plugin_data->buffer_pos; + unsigned int buffer_size = plugin_data->buffer_size; + LADSPA_Data *delay = plugin_data->delay; + unsigned int dptr = plugin_data->dptr; +#line 75 "surround_encoder_1401.xml" + memset(buffer, 0, buffer_size * sizeof(LADSPA_Data)); + plugin_data->buffer = buffer; + plugin_data->buffer_pos = buffer_pos; + plugin_data->buffer_size = buffer_size; + plugin_data->delay = delay; + plugin_data->dptr = dptr; + +} + +static void cleanupSurroundEncoder(LADSPA_Handle instance) { +#line 79 "surround_encoder_1401.xml" + SurroundEncoder *plugin_data = (SurroundEncoder *)instance; + free(plugin_data->buffer); + + free(plugin_data->delay); + free(instance); +} + +static void connectPortSurroundEncoder( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + SurroundEncoder *plugin; + + plugin = (SurroundEncoder *)instance; + switch (port) { + case SURROUNDENCODER_L: + plugin->l = data; + break; + case SURROUNDENCODER_R: + plugin->r = data; + break; + case SURROUNDENCODER_C: + plugin->c = data; + break; + case SURROUNDENCODER_S: + plugin->s = data; + break; + case SURROUNDENCODER_LT: + plugin->lt = data; + break; + case SURROUNDENCODER_RT: + plugin->rt = data; + break; + } +} + +static LADSPA_Handle instantiateSurroundEncoder( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + SurroundEncoder *plugin_data = (SurroundEncoder *)malloc(sizeof(SurroundEncoder)); + LADSPA_Data *buffer = NULL; + unsigned int buffer_pos; + unsigned int buffer_size; + LADSPA_Data *delay = NULL; + unsigned int dptr; + +#line 65 "surround_encoder_1401.xml" + buffer_size = (int)(0.0072f * s_rate); + buffer_pos = 0; + buffer = calloc(buffer_size, sizeof(LADSPA_Data)); + + delay = calloc(D_SIZE, sizeof(LADSPA_Data)); + + dptr = 0; + + plugin_data->buffer = buffer; + plugin_data->buffer_pos = buffer_pos; + plugin_data->buffer_size = buffer_size; + plugin_data->delay = delay; + plugin_data->dptr = dptr; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runSurroundEncoder(LADSPA_Handle instance, unsigned long sample_count) { + SurroundEncoder *plugin_data = (SurroundEncoder *)instance; + + /* L (array of floats of length sample_count) */ + const LADSPA_Data * const l = plugin_data->l; + + /* R (array of floats of length sample_count) */ + const LADSPA_Data * const r = plugin_data->r; + + /* C (array of floats of length sample_count) */ + const LADSPA_Data * const c = plugin_data->c; + + /* S (array of floats of length sample_count) */ + const LADSPA_Data * const s = plugin_data->s; + + /* Lt (array of floats of length sample_count) */ + LADSPA_Data * const lt = plugin_data->lt; + + /* Rt (array of floats of length sample_count) */ + LADSPA_Data * const rt = plugin_data->rt; + LADSPA_Data * buffer = plugin_data->buffer; + unsigned int buffer_pos = plugin_data->buffer_pos; + unsigned int buffer_size = plugin_data->buffer_size; + LADSPA_Data * delay = plugin_data->delay; + unsigned int dptr = plugin_data->dptr; + +#line 85 "surround_encoder_1401.xml" + unsigned long pos; + LADSPA_Data s_delayed; + unsigned int i; + float hilb; + + for (pos = 0; pos < sample_count; pos++) { + delay[dptr] = s[pos]; + hilb = 0.0f; + for (i = 0; i <= NZEROS/2; i++) { + hilb += (xcoeffs[i] * delay[(dptr - i*2) & (D_SIZE - 1)]); + } + dptr = (dptr + 1) & (D_SIZE - 1); + + + s_delayed = buffer[buffer_pos]; + buffer[buffer_pos++] = hilb; + buffer_pos %= buffer_size; + + buffer_write(lt[pos], l[pos] + c[pos] * 0.707946f - + s_delayed * 0.707946f); + buffer_write(rt[pos], r[pos] + c[pos] * 0.707946f + + s_delayed * 0.707946f); + } + + plugin_data->dptr = dptr; + + plugin_data->buffer_pos = buffer_pos; +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainSurroundEncoder(LADSPA_Handle instance, LADSPA_Data gain) { + ((SurroundEncoder *)instance)->run_adding_gain = gain; +} + +static void runAddingSurroundEncoder(LADSPA_Handle instance, unsigned long sample_count) { + SurroundEncoder *plugin_data = (SurroundEncoder *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* L (array of floats of length sample_count) */ + const LADSPA_Data * const l = plugin_data->l; + + /* R (array of floats of length sample_count) */ + const LADSPA_Data * const r = plugin_data->r; + + /* C (array of floats of length sample_count) */ + const LADSPA_Data * const c = plugin_data->c; + + /* S (array of floats of length sample_count) */ + const LADSPA_Data * const s = plugin_data->s; + + /* Lt (array of floats of length sample_count) */ + LADSPA_Data * const lt = plugin_data->lt; + + /* Rt (array of floats of length sample_count) */ + LADSPA_Data * const rt = plugin_data->rt; + LADSPA_Data * buffer = plugin_data->buffer; + unsigned int buffer_pos = plugin_data->buffer_pos; + unsigned int buffer_size = plugin_data->buffer_size; + LADSPA_Data * delay = plugin_data->delay; + unsigned int dptr = plugin_data->dptr; + +#line 85 "surround_encoder_1401.xml" + unsigned long pos; + LADSPA_Data s_delayed; + unsigned int i; + float hilb; + + for (pos = 0; pos < sample_count; pos++) { + delay[dptr] = s[pos]; + hilb = 0.0f; + for (i = 0; i <= NZEROS/2; i++) { + hilb += (xcoeffs[i] * delay[(dptr - i*2) & (D_SIZE - 1)]); + } + dptr = (dptr + 1) & (D_SIZE - 1); + + + s_delayed = buffer[buffer_pos]; + buffer[buffer_pos++] = hilb; + buffer_pos %= buffer_size; + + buffer_write(lt[pos], l[pos] + c[pos] * 0.707946f - + s_delayed * 0.707946f); + buffer_write(rt[pos], r[pos] + c[pos] * 0.707946f + + s_delayed * 0.707946f); + } + + plugin_data->dptr = dptr; + + plugin_data->buffer_pos = buffer_pos; +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + surroundEncoderDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (surroundEncoderDescriptor) { + surroundEncoderDescriptor->UniqueID = 1401; + surroundEncoderDescriptor->Label = "surroundEncoder"; + surroundEncoderDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + surroundEncoderDescriptor->Name = + D_("Surround matrix encoder"); + surroundEncoderDescriptor->Maker = + "Steve Harris "; + surroundEncoderDescriptor->Copyright = + "GPL"; + surroundEncoderDescriptor->PortCount = 6; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(6, + sizeof(LADSPA_PortDescriptor)); + surroundEncoderDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(6, + sizeof(LADSPA_PortRangeHint)); + surroundEncoderDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(6, sizeof(char*)); + surroundEncoderDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for L */ + port_descriptors[SURROUNDENCODER_L] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[SURROUNDENCODER_L] = + D_("L"); + port_range_hints[SURROUNDENCODER_L].HintDescriptor = 0; + + /* Parameters for R */ + port_descriptors[SURROUNDENCODER_R] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[SURROUNDENCODER_R] = + D_("R"); + port_range_hints[SURROUNDENCODER_R].HintDescriptor = 0; + + /* Parameters for C */ + port_descriptors[SURROUNDENCODER_C] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[SURROUNDENCODER_C] = + D_("C"); + port_range_hints[SURROUNDENCODER_C].HintDescriptor = 0; + + /* Parameters for S */ + port_descriptors[SURROUNDENCODER_S] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[SURROUNDENCODER_S] = + D_("S"); + port_range_hints[SURROUNDENCODER_S].HintDescriptor = 0; + + /* Parameters for Lt */ + port_descriptors[SURROUNDENCODER_LT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[SURROUNDENCODER_LT] = + D_("Lt"); + port_range_hints[SURROUNDENCODER_LT].HintDescriptor = 0; + + /* Parameters for Rt */ + port_descriptors[SURROUNDENCODER_RT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[SURROUNDENCODER_RT] = + D_("Rt"); + port_range_hints[SURROUNDENCODER_RT].HintDescriptor = 0; + + surroundEncoderDescriptor->activate = activateSurroundEncoder; + surroundEncoderDescriptor->cleanup = cleanupSurroundEncoder; + surroundEncoderDescriptor->connect_port = connectPortSurroundEncoder; + surroundEncoderDescriptor->deactivate = NULL; + surroundEncoderDescriptor->instantiate = instantiateSurroundEncoder; + surroundEncoderDescriptor->run = runSurroundEncoder; + surroundEncoderDescriptor->run_adding = runAddingSurroundEncoder; + surroundEncoderDescriptor->set_run_adding_gain = setRunAddingGainSurroundEncoder; + } +} + +void _fini() { + if (surroundEncoderDescriptor) { + free((LADSPA_PortDescriptor *)surroundEncoderDescriptor->PortDescriptors); + free((char **)surroundEncoderDescriptor->PortNames); + free((LADSPA_PortRangeHint *)surroundEncoderDescriptor->PortRangeHints); + free(surroundEncoderDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/svf_1214.c b/plugins/ladspa_effect/swh/svf_1214.c new file mode 100644 index 000000000..f17a353ef --- /dev/null +++ b/plugins/ladspa_effect/swh/svf_1214.c @@ -0,0 +1,419 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + +#line 9 "svf_1214.xml" + +#include "ladspa-util.h" + +// Constants to match filter types +#define F_LP 1 +#define F_HP 2 +#define F_BP 3 +#define F_BR 4 +#define F_AP 5 + +// Number of filter oversamples +#define F_R 3 + +/* Structure to hold parameters for SV filter */ + +typedef struct { + float f; // 2.0*sin(PI*fs/(fc*r)); + float q; // 2.0*cos(pow(q, 0.1)*PI*0.5); + float qnrm; // sqrt(m/2.0f+0.01f); + float h; // high pass output + float b; // band pass output + float l; // low pass output + float p; // peaking output (allpass with resonance) + float n; // notch output + float *op; // pointer to output value +} sv_filter; + +/* Store data in SVF struct, takes the sampling frequency, cutoff frequency + and Q, and fills in the structure passed */ + +static inline void setup_svf(sv_filter *sv, float fs, float fc, float q, int t) { + sv->f = 2.0f * sin(M_PI * fc / (float)(fs * F_R)); + sv->q = 2.0f * cos(pow(q, 0.1f) * M_PI * 0.5f); + sv->qnrm = sqrt(sv->q/2.0+0.01); + switch(t) { + case F_LP: + sv->op = &(sv->l); + break; + case F_HP: + sv->op = &(sv->h); + break; + case F_BP: + sv->op = &(sv->b); + break; + case F_BR: + sv->op = &(sv->n); + break; + default: + sv->op = &(sv->p); + } +} + +/* Run one sample through the SV filter. Filter is by andy@vellocet */ + +static inline float run_svf(sv_filter *sv, float in) { + float out; + int i; + + in = sv->qnrm * in ; + for (i=0; i < F_R; i++) { + // very slight waveshape for extra stability + sv->b = flush_to_zero(sv->b - sv->b * sv->b * sv->b * 0.001f); + + // regular state variable code here + // the notch and peaking outputs are optional + sv->h = flush_to_zero(in - sv->l - sv->q * sv->b); + sv->b = sv->b + sv->f * sv->h; + sv->l = flush_to_zero(sv->l + sv->f * sv->b); + sv->n = sv->l + sv->h; + sv->p = sv->l - sv->h; + + out = *(sv->op); + in = out; + } + + return out; +} + +#define SVF_INPUT 0 +#define SVF_OUTPUT 1 +#define SVF_FILT_TYPE 2 +#define SVF_FILT_FREQ 3 +#define SVF_FILT_Q 4 +#define SVF_FILT_RES 5 + +static LADSPA_Descriptor *svfDescriptor = NULL; + +typedef struct { + LADSPA_Data *input; + LADSPA_Data *output; + LADSPA_Data *filt_type; + LADSPA_Data *filt_freq; + LADSPA_Data *filt_q; + LADSPA_Data *filt_res; + int sample_rate; + sv_filter * svf; + LADSPA_Data run_adding_gain; +} Svf; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return svfDescriptor; + default: + return NULL; + } +} + +static void activateSvf(LADSPA_Handle instance) { + Svf *plugin_data = (Svf *)instance; + int sample_rate = plugin_data->sample_rate; + sv_filter *svf = plugin_data->svf; +#line 100 "svf_1214.xml" + setup_svf(svf, 0, 0, 0, 0); + plugin_data->sample_rate = sample_rate; + plugin_data->svf = svf; + +} + +static void cleanupSvf(LADSPA_Handle instance) { +#line 104 "svf_1214.xml" + Svf *plugin_data = (Svf *)instance; + free(plugin_data->svf); + free(instance); +} + +static void connectPortSvf( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + Svf *plugin; + + plugin = (Svf *)instance; + switch (port) { + case SVF_INPUT: + plugin->input = data; + break; + case SVF_OUTPUT: + plugin->output = data; + break; + case SVF_FILT_TYPE: + plugin->filt_type = data; + break; + case SVF_FILT_FREQ: + plugin->filt_freq = data; + break; + case SVF_FILT_Q: + plugin->filt_q = data; + break; + case SVF_FILT_RES: + plugin->filt_res = data; + break; + } +} + +static LADSPA_Handle instantiateSvf( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + Svf *plugin_data = (Svf *)malloc(sizeof(Svf)); + int sample_rate; + sv_filter *svf = NULL; + +#line 94 "svf_1214.xml" + sample_rate = s_rate; + + svf = calloc(1, sizeof(sv_filter)); + + plugin_data->sample_rate = sample_rate; + plugin_data->svf = svf; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runSvf(LADSPA_Handle instance, unsigned long sample_count) { + Svf *plugin_data = (Svf *)instance; + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + + /* Filter type (0=none, 1=LP, 2=HP, 3=BP, 4=BR, 5=AP) (float value) */ + const LADSPA_Data filt_type = *(plugin_data->filt_type); + + /* Filter freq (float value) */ + const LADSPA_Data filt_freq = *(plugin_data->filt_freq); + + /* Filter Q (float value) */ + const LADSPA_Data filt_q = *(plugin_data->filt_q); + + /* Filter resonance (float value) */ + const LADSPA_Data filt_res = *(plugin_data->filt_res); + int sample_rate = plugin_data->sample_rate; + sv_filter * svf = plugin_data->svf; + +#line 108 "svf_1214.xml" + long int pos; + + setup_svf(svf, sample_rate, filt_freq, filt_q, f_round(filt_type)); + + for (pos = 0; pos < sample_count; pos++) { + buffer_write(output[pos], run_svf(svf, input[pos] + (svf->b * filt_res))); + } +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainSvf(LADSPA_Handle instance, LADSPA_Data gain) { + ((Svf *)instance)->run_adding_gain = gain; +} + +static void runAddingSvf(LADSPA_Handle instance, unsigned long sample_count) { + Svf *plugin_data = (Svf *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + + /* Filter type (0=none, 1=LP, 2=HP, 3=BP, 4=BR, 5=AP) (float value) */ + const LADSPA_Data filt_type = *(plugin_data->filt_type); + + /* Filter freq (float value) */ + const LADSPA_Data filt_freq = *(plugin_data->filt_freq); + + /* Filter Q (float value) */ + const LADSPA_Data filt_q = *(plugin_data->filt_q); + + /* Filter resonance (float value) */ + const LADSPA_Data filt_res = *(plugin_data->filt_res); + int sample_rate = plugin_data->sample_rate; + sv_filter * svf = plugin_data->svf; + +#line 108 "svf_1214.xml" + long int pos; + + setup_svf(svf, sample_rate, filt_freq, filt_q, f_round(filt_type)); + + for (pos = 0; pos < sample_count; pos++) { + buffer_write(output[pos], run_svf(svf, input[pos] + (svf->b * filt_res))); + } +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + svfDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (svfDescriptor) { + svfDescriptor->UniqueID = 1214; + svfDescriptor->Label = "svf"; + svfDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + svfDescriptor->Name = + D_("State Variable Filter"); + svfDescriptor->Maker = + "Steve Harris "; + svfDescriptor->Copyright = + "GPL"; + svfDescriptor->PortCount = 6; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(6, + sizeof(LADSPA_PortDescriptor)); + svfDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(6, + sizeof(LADSPA_PortRangeHint)); + svfDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(6, sizeof(char*)); + svfDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Input */ + port_descriptors[SVF_INPUT] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[SVF_INPUT] = + D_("Input"); + port_range_hints[SVF_INPUT].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE; + port_range_hints[SVF_INPUT].LowerBound = -1; + port_range_hints[SVF_INPUT].UpperBound = 1; + + /* Parameters for Output */ + port_descriptors[SVF_OUTPUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[SVF_OUTPUT] = + D_("Output"); + port_range_hints[SVF_OUTPUT].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE; + port_range_hints[SVF_OUTPUT].LowerBound = -1; + port_range_hints[SVF_OUTPUT].UpperBound = 1; + + /* Parameters for Filter type (0=none, 1=LP, 2=HP, 3=BP, 4=BR, 5=AP) */ + port_descriptors[SVF_FILT_TYPE] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[SVF_FILT_TYPE] = + D_("Filter type (0=none, 1=LP, 2=HP, 3=BP, 4=BR, 5=AP)"); + port_range_hints[SVF_FILT_TYPE].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_INTEGER | LADSPA_HINT_DEFAULT_0; + port_range_hints[SVF_FILT_TYPE].LowerBound = 0; + port_range_hints[SVF_FILT_TYPE].UpperBound = 5; + + /* Parameters for Filter freq */ + port_descriptors[SVF_FILT_FREQ] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[SVF_FILT_FREQ] = + D_("Filter freq"); + port_range_hints[SVF_FILT_FREQ].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_440; + port_range_hints[SVF_FILT_FREQ].LowerBound = 0; + port_range_hints[SVF_FILT_FREQ].UpperBound = 6000; + + /* Parameters for Filter Q */ + port_descriptors[SVF_FILT_Q] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[SVF_FILT_Q] = + D_("Filter Q"); + port_range_hints[SVF_FILT_Q].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_LOW; + port_range_hints[SVF_FILT_Q].LowerBound = 0; + port_range_hints[SVF_FILT_Q].UpperBound = 1; + + /* Parameters for Filter resonance */ + port_descriptors[SVF_FILT_RES] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[SVF_FILT_RES] = + D_("Filter resonance"); + port_range_hints[SVF_FILT_RES].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[SVF_FILT_RES].LowerBound = 0; + port_range_hints[SVF_FILT_RES].UpperBound = 1; + + svfDescriptor->activate = activateSvf; + svfDescriptor->cleanup = cleanupSvf; + svfDescriptor->connect_port = connectPortSvf; + svfDescriptor->deactivate = NULL; + svfDescriptor->instantiate = instantiateSvf; + svfDescriptor->run = runSvf; + svfDescriptor->run_adding = runAddingSvf; + svfDescriptor->set_run_adding_gain = setRunAddingGainSvf; + } +} + +void _fini() { + if (svfDescriptor) { + free((LADSPA_PortDescriptor *)svfDescriptor->PortDescriptors); + free((char **)svfDescriptor->PortNames); + free((LADSPA_PortRangeHint *)svfDescriptor->PortRangeHints); + free(svfDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/tape_delay_1211.c b/plugins/ladspa_effect/swh/tape_delay_1211.c new file mode 100644 index 000000000..d31a494d1 --- /dev/null +++ b/plugins/ladspa_effect/swh/tape_delay_1211.c @@ -0,0 +1,656 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + +#line 8 "tape_delay_1211.xml" + +#include "ladspa-util.h" + +#define BASE_BUFFER 8 // Tape length (inches) + +#define TAPEDELAY_SPEED 0 +#define TAPEDELAY_DA_DB 1 +#define TAPEDELAY_T1D 2 +#define TAPEDELAY_T1A_DB 3 +#define TAPEDELAY_T2D 4 +#define TAPEDELAY_T2A_DB 5 +#define TAPEDELAY_T3D 6 +#define TAPEDELAY_T3A_DB 7 +#define TAPEDELAY_T4D 8 +#define TAPEDELAY_T4A_DB 9 +#define TAPEDELAY_INPUT 10 +#define TAPEDELAY_OUTPUT 11 + +static LADSPA_Descriptor *tapeDelayDescriptor = NULL; + +typedef struct { + LADSPA_Data *speed; + LADSPA_Data *da_db; + LADSPA_Data *t1d; + LADSPA_Data *t1a_db; + LADSPA_Data *t2d; + LADSPA_Data *t2a_db; + LADSPA_Data *t3d; + LADSPA_Data *t3a_db; + LADSPA_Data *t4d; + LADSPA_Data *t4a_db; + LADSPA_Data *input; + LADSPA_Data *output; + LADSPA_Data *buffer; + unsigned int buffer_mask; + unsigned int buffer_size; + LADSPA_Data last2_in; + LADSPA_Data last3_in; + LADSPA_Data last_in; + unsigned int last_phase; + float phase; + int sample_rate; + LADSPA_Data z0; + LADSPA_Data z1; + LADSPA_Data z2; + LADSPA_Data run_adding_gain; +} TapeDelay; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return tapeDelayDescriptor; + default: + return NULL; + } +} + +static void activateTapeDelay(LADSPA_Handle instance) { + TapeDelay *plugin_data = (TapeDelay *)instance; + LADSPA_Data *buffer = plugin_data->buffer; + unsigned int buffer_mask = plugin_data->buffer_mask; + unsigned int buffer_size = plugin_data->buffer_size; + LADSPA_Data last2_in = plugin_data->last2_in; + LADSPA_Data last3_in = plugin_data->last3_in; + LADSPA_Data last_in = plugin_data->last_in; + unsigned int last_phase = plugin_data->last_phase; + float phase = plugin_data->phase; + int sample_rate = plugin_data->sample_rate; + LADSPA_Data z0 = plugin_data->z0; + LADSPA_Data z1 = plugin_data->z1; + LADSPA_Data z2 = plugin_data->z2; +#line 38 "tape_delay_1211.xml" + int i; + + for (i = 0; i < buffer_size; i++) { + buffer[i] = 0; + } + phase = 0; + last_phase = 0; + last_in = 0.0f; + last2_in = 0.0f; + last3_in = 0.0f; + sample_rate = sample_rate; + z0 = 0.0f; + z1 = 0.0f; + z2 = 0.0f; + plugin_data->buffer = buffer; + plugin_data->buffer_mask = buffer_mask; + plugin_data->buffer_size = buffer_size; + plugin_data->last2_in = last2_in; + plugin_data->last3_in = last3_in; + plugin_data->last_in = last_in; + plugin_data->last_phase = last_phase; + plugin_data->phase = phase; + plugin_data->sample_rate = sample_rate; + plugin_data->z0 = z0; + plugin_data->z1 = z1; + plugin_data->z2 = z2; + +} + +static void cleanupTapeDelay(LADSPA_Handle instance) { +#line 55 "tape_delay_1211.xml" + TapeDelay *plugin_data = (TapeDelay *)instance; + free(plugin_data->buffer); + free(instance); +} + +static void connectPortTapeDelay( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + TapeDelay *plugin; + + plugin = (TapeDelay *)instance; + switch (port) { + case TAPEDELAY_SPEED: + plugin->speed = data; + break; + case TAPEDELAY_DA_DB: + plugin->da_db = data; + break; + case TAPEDELAY_T1D: + plugin->t1d = data; + break; + case TAPEDELAY_T1A_DB: + plugin->t1a_db = data; + break; + case TAPEDELAY_T2D: + plugin->t2d = data; + break; + case TAPEDELAY_T2A_DB: + plugin->t2a_db = data; + break; + case TAPEDELAY_T3D: + plugin->t3d = data; + break; + case TAPEDELAY_T3A_DB: + plugin->t3a_db = data; + break; + case TAPEDELAY_T4D: + plugin->t4d = data; + break; + case TAPEDELAY_T4A_DB: + plugin->t4a_db = data; + break; + case TAPEDELAY_INPUT: + plugin->input = data; + break; + case TAPEDELAY_OUTPUT: + plugin->output = data; + break; + } +} + +static LADSPA_Handle instantiateTapeDelay( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + TapeDelay *plugin_data = (TapeDelay *)malloc(sizeof(TapeDelay)); + LADSPA_Data *buffer = NULL; + unsigned int buffer_mask; + unsigned int buffer_size; + LADSPA_Data last2_in; + LADSPA_Data last3_in; + LADSPA_Data last_in; + unsigned int last_phase; + float phase; + int sample_rate; + LADSPA_Data z0; + LADSPA_Data z1; + LADSPA_Data z2; + +#line 21 "tape_delay_1211.xml" + unsigned int mbs = BASE_BUFFER * s_rate; + sample_rate = s_rate; + for (buffer_size = 4096; buffer_size < mbs; + buffer_size *= 2); + buffer = malloc(buffer_size * sizeof(LADSPA_Data)); + buffer_mask = buffer_size - 1; + phase = 0; + last_phase = 0; + last_in = 0.0f; + last2_in = 0.0f; + last3_in = 0.0f; + z0 = 0.0f; + z1 = 0.0f; + z2 = 0.0f; + + plugin_data->buffer = buffer; + plugin_data->buffer_mask = buffer_mask; + plugin_data->buffer_size = buffer_size; + plugin_data->last2_in = last2_in; + plugin_data->last3_in = last3_in; + plugin_data->last_in = last_in; + plugin_data->last_phase = last_phase; + plugin_data->phase = phase; + plugin_data->sample_rate = sample_rate; + plugin_data->z0 = z0; + plugin_data->z1 = z1; + plugin_data->z2 = z2; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runTapeDelay(LADSPA_Handle instance, unsigned long sample_count) { + TapeDelay *plugin_data = (TapeDelay *)instance; + + /* Tape speed (inches/sec, 1=normal) (float value) */ + const LADSPA_Data speed = *(plugin_data->speed); + + /* Dry level (dB) (float value) */ + const LADSPA_Data da_db = *(plugin_data->da_db); + + /* Tap 1 distance (inches) (float value) */ + const LADSPA_Data t1d = *(plugin_data->t1d); + + /* Tap 1 level (dB) (float value) */ + const LADSPA_Data t1a_db = *(plugin_data->t1a_db); + + /* Tap 2 distance (inches) (float value) */ + const LADSPA_Data t2d = *(plugin_data->t2d); + + /* Tap 2 level (dB) (float value) */ + const LADSPA_Data t2a_db = *(plugin_data->t2a_db); + + /* Tap 3 distance (inches) (float value) */ + const LADSPA_Data t3d = *(plugin_data->t3d); + + /* Tap 3 level (dB) (float value) */ + const LADSPA_Data t3a_db = *(plugin_data->t3a_db); + + /* Tap 4 distance (inches) (float value) */ + const LADSPA_Data t4d = *(plugin_data->t4d); + + /* Tap 4 level (dB) (float value) */ + const LADSPA_Data t4a_db = *(plugin_data->t4a_db); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + LADSPA_Data * buffer = plugin_data->buffer; + unsigned int buffer_mask = plugin_data->buffer_mask; + unsigned int buffer_size = plugin_data->buffer_size; + LADSPA_Data last2_in = plugin_data->last2_in; + LADSPA_Data last3_in = plugin_data->last3_in; + LADSPA_Data last_in = plugin_data->last_in; + unsigned int last_phase = plugin_data->last_phase; + float phase = plugin_data->phase; + int sample_rate = plugin_data->sample_rate; + LADSPA_Data z0 = plugin_data->z0; + LADSPA_Data z1 = plugin_data->z1; + LADSPA_Data z2 = plugin_data->z2; + +#line 59 "tape_delay_1211.xml" + unsigned int pos; + float increment = f_clamp(speed, 0.0f, 40.0f); + float lin_int, lin_inc; + unsigned int track; + unsigned int fph; + LADSPA_Data out; + + const float da = DB_CO(da_db); + const float t1a = DB_CO(t1a_db); + const float t2a = DB_CO(t2a_db); + const float t3a = DB_CO(t3a_db); + const float t4a = DB_CO(t4a_db); + const unsigned int t1d_s = f_round(t1d * sample_rate); + const unsigned int t2d_s = f_round(t2d * sample_rate); + const unsigned int t3d_s = f_round(t3d * sample_rate); + const unsigned int t4d_s = f_round(t4d * sample_rate); + + for (pos = 0; pos < sample_count; pos++) { + fph = f_trunc(phase); + last_phase = fph; + lin_int = phase - (float)fph; + + out = buffer[(unsigned int)(fph - t1d_s) & buffer_mask] * t1a; + out += buffer[(unsigned int)(fph - t2d_s) & buffer_mask] * t2a; + out += buffer[(unsigned int)(fph - t3d_s) & buffer_mask] * t3a; + out += buffer[(unsigned int)(fph - t4d_s) & buffer_mask] * t4a; + + phase += increment; + lin_inc = 1.0f / (floor(phase) - last_phase + 1); + lin_inc = lin_inc > 1.0f ? 1.0f : lin_inc; + lin_int = 0.0f; + for (track = last_phase; track < phase; track++) { + lin_int += lin_inc; + buffer[track & buffer_mask] = + cube_interp(lin_int, last3_in, last2_in, last_in, input[pos]); + } + last3_in = last2_in; + last2_in = last_in; + last_in = input[pos]; + out += input[pos] * da; + buffer_write(output[pos], out); + if (phase >= buffer_size) { + phase -= buffer_size; + } + } + + // Store current phase in instance + plugin_data->phase = phase; + plugin_data->last_phase = last_phase; + plugin_data->last_in = last_in; + plugin_data->last2_in = last2_in; + plugin_data->last3_in = last3_in; + plugin_data->z0 = z0; + plugin_data->z1 = z1; + plugin_data->z2 = z2; +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainTapeDelay(LADSPA_Handle instance, LADSPA_Data gain) { + ((TapeDelay *)instance)->run_adding_gain = gain; +} + +static void runAddingTapeDelay(LADSPA_Handle instance, unsigned long sample_count) { + TapeDelay *plugin_data = (TapeDelay *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Tape speed (inches/sec, 1=normal) (float value) */ + const LADSPA_Data speed = *(plugin_data->speed); + + /* Dry level (dB) (float value) */ + const LADSPA_Data da_db = *(plugin_data->da_db); + + /* Tap 1 distance (inches) (float value) */ + const LADSPA_Data t1d = *(plugin_data->t1d); + + /* Tap 1 level (dB) (float value) */ + const LADSPA_Data t1a_db = *(plugin_data->t1a_db); + + /* Tap 2 distance (inches) (float value) */ + const LADSPA_Data t2d = *(plugin_data->t2d); + + /* Tap 2 level (dB) (float value) */ + const LADSPA_Data t2a_db = *(plugin_data->t2a_db); + + /* Tap 3 distance (inches) (float value) */ + const LADSPA_Data t3d = *(plugin_data->t3d); + + /* Tap 3 level (dB) (float value) */ + const LADSPA_Data t3a_db = *(plugin_data->t3a_db); + + /* Tap 4 distance (inches) (float value) */ + const LADSPA_Data t4d = *(plugin_data->t4d); + + /* Tap 4 level (dB) (float value) */ + const LADSPA_Data t4a_db = *(plugin_data->t4a_db); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + LADSPA_Data * buffer = plugin_data->buffer; + unsigned int buffer_mask = plugin_data->buffer_mask; + unsigned int buffer_size = plugin_data->buffer_size; + LADSPA_Data last2_in = plugin_data->last2_in; + LADSPA_Data last3_in = plugin_data->last3_in; + LADSPA_Data last_in = plugin_data->last_in; + unsigned int last_phase = plugin_data->last_phase; + float phase = plugin_data->phase; + int sample_rate = plugin_data->sample_rate; + LADSPA_Data z0 = plugin_data->z0; + LADSPA_Data z1 = plugin_data->z1; + LADSPA_Data z2 = plugin_data->z2; + +#line 59 "tape_delay_1211.xml" + unsigned int pos; + float increment = f_clamp(speed, 0.0f, 40.0f); + float lin_int, lin_inc; + unsigned int track; + unsigned int fph; + LADSPA_Data out; + + const float da = DB_CO(da_db); + const float t1a = DB_CO(t1a_db); + const float t2a = DB_CO(t2a_db); + const float t3a = DB_CO(t3a_db); + const float t4a = DB_CO(t4a_db); + const unsigned int t1d_s = f_round(t1d * sample_rate); + const unsigned int t2d_s = f_round(t2d * sample_rate); + const unsigned int t3d_s = f_round(t3d * sample_rate); + const unsigned int t4d_s = f_round(t4d * sample_rate); + + for (pos = 0; pos < sample_count; pos++) { + fph = f_trunc(phase); + last_phase = fph; + lin_int = phase - (float)fph; + + out = buffer[(unsigned int)(fph - t1d_s) & buffer_mask] * t1a; + out += buffer[(unsigned int)(fph - t2d_s) & buffer_mask] * t2a; + out += buffer[(unsigned int)(fph - t3d_s) & buffer_mask] * t3a; + out += buffer[(unsigned int)(fph - t4d_s) & buffer_mask] * t4a; + + phase += increment; + lin_inc = 1.0f / (floor(phase) - last_phase + 1); + lin_inc = lin_inc > 1.0f ? 1.0f : lin_inc; + lin_int = 0.0f; + for (track = last_phase; track < phase; track++) { + lin_int += lin_inc; + buffer[track & buffer_mask] = + cube_interp(lin_int, last3_in, last2_in, last_in, input[pos]); + } + last3_in = last2_in; + last2_in = last_in; + last_in = input[pos]; + out += input[pos] * da; + buffer_write(output[pos], out); + if (phase >= buffer_size) { + phase -= buffer_size; + } + } + + // Store current phase in instance + plugin_data->phase = phase; + plugin_data->last_phase = last_phase; + plugin_data->last_in = last_in; + plugin_data->last2_in = last2_in; + plugin_data->last3_in = last3_in; + plugin_data->z0 = z0; + plugin_data->z1 = z1; + plugin_data->z2 = z2; +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + tapeDelayDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (tapeDelayDescriptor) { + tapeDelayDescriptor->UniqueID = 1211; + tapeDelayDescriptor->Label = "tapeDelay"; + tapeDelayDescriptor->Properties = + 0; + tapeDelayDescriptor->Name = + D_("Tape Delay Simulation"); + tapeDelayDescriptor->Maker = + "Steve Harris "; + tapeDelayDescriptor->Copyright = + "GPL"; + tapeDelayDescriptor->PortCount = 12; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(12, + sizeof(LADSPA_PortDescriptor)); + tapeDelayDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(12, + sizeof(LADSPA_PortRangeHint)); + tapeDelayDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(12, sizeof(char*)); + tapeDelayDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Tape speed (inches/sec, 1=normal) */ + port_descriptors[TAPEDELAY_SPEED] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[TAPEDELAY_SPEED] = + D_("Tape speed (inches/sec, 1=normal)"); + port_range_hints[TAPEDELAY_SPEED].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_1; + port_range_hints[TAPEDELAY_SPEED].LowerBound = 0; + port_range_hints[TAPEDELAY_SPEED].UpperBound = 10; + + /* Parameters for Dry level (dB) */ + port_descriptors[TAPEDELAY_DA_DB] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[TAPEDELAY_DA_DB] = + D_("Dry level (dB)"); + port_range_hints[TAPEDELAY_DA_DB].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MINIMUM; + port_range_hints[TAPEDELAY_DA_DB].LowerBound = -90; + port_range_hints[TAPEDELAY_DA_DB].UpperBound = 0; + + /* Parameters for Tap 1 distance (inches) */ + port_descriptors[TAPEDELAY_T1D] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[TAPEDELAY_T1D] = + D_("Tap 1 distance (inches)"); + port_range_hints[TAPEDELAY_T1D].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[TAPEDELAY_T1D].LowerBound = 0; + port_range_hints[TAPEDELAY_T1D].UpperBound = 4; + + /* Parameters for Tap 1 level (dB) */ + port_descriptors[TAPEDELAY_T1A_DB] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[TAPEDELAY_T1A_DB] = + D_("Tap 1 level (dB)"); + port_range_hints[TAPEDELAY_T1A_DB].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[TAPEDELAY_T1A_DB].LowerBound = -90; + port_range_hints[TAPEDELAY_T1A_DB].UpperBound = 0; + + /* Parameters for Tap 2 distance (inches) */ + port_descriptors[TAPEDELAY_T2D] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[TAPEDELAY_T2D] = + D_("Tap 2 distance (inches)"); + port_range_hints[TAPEDELAY_T2D].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_LOW; + port_range_hints[TAPEDELAY_T2D].LowerBound = 0; + port_range_hints[TAPEDELAY_T2D].UpperBound = 4; + + /* Parameters for Tap 2 level (dB) */ + port_descriptors[TAPEDELAY_T2A_DB] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[TAPEDELAY_T2A_DB] = + D_("Tap 2 level (dB)"); + port_range_hints[TAPEDELAY_T2A_DB].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MINIMUM; + port_range_hints[TAPEDELAY_T2A_DB].LowerBound = -90; + port_range_hints[TAPEDELAY_T2A_DB].UpperBound = 0; + + /* Parameters for Tap 3 distance (inches) */ + port_descriptors[TAPEDELAY_T3D] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[TAPEDELAY_T3D] = + D_("Tap 3 distance (inches)"); + port_range_hints[TAPEDELAY_T3D].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MIDDLE; + port_range_hints[TAPEDELAY_T3D].LowerBound = 0; + port_range_hints[TAPEDELAY_T3D].UpperBound = 4; + + /* Parameters for Tap 3 level (dB) */ + port_descriptors[TAPEDELAY_T3A_DB] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[TAPEDELAY_T3A_DB] = + D_("Tap 3 level (dB)"); + port_range_hints[TAPEDELAY_T3A_DB].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MINIMUM; + port_range_hints[TAPEDELAY_T3A_DB].LowerBound = -90; + port_range_hints[TAPEDELAY_T3A_DB].UpperBound = 0; + + /* Parameters for Tap 4 distance (inches) */ + port_descriptors[TAPEDELAY_T4D] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[TAPEDELAY_T4D] = + D_("Tap 4 distance (inches)"); + port_range_hints[TAPEDELAY_T4D].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_HIGH; + port_range_hints[TAPEDELAY_T4D].LowerBound = 0; + port_range_hints[TAPEDELAY_T4D].UpperBound = 4; + + /* Parameters for Tap 4 level (dB) */ + port_descriptors[TAPEDELAY_T4A_DB] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[TAPEDELAY_T4A_DB] = + D_("Tap 4 level (dB)"); + port_range_hints[TAPEDELAY_T4A_DB].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MINIMUM; + port_range_hints[TAPEDELAY_T4A_DB].LowerBound = -90; + port_range_hints[TAPEDELAY_T4A_DB].UpperBound = 0; + + /* Parameters for Input */ + port_descriptors[TAPEDELAY_INPUT] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[TAPEDELAY_INPUT] = + D_("Input"); + port_range_hints[TAPEDELAY_INPUT].HintDescriptor = 0; + + /* Parameters for Output */ + port_descriptors[TAPEDELAY_OUTPUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[TAPEDELAY_OUTPUT] = + D_("Output"); + port_range_hints[TAPEDELAY_OUTPUT].HintDescriptor = 0; + + tapeDelayDescriptor->activate = activateTapeDelay; + tapeDelayDescriptor->cleanup = cleanupTapeDelay; + tapeDelayDescriptor->connect_port = connectPortTapeDelay; + tapeDelayDescriptor->deactivate = NULL; + tapeDelayDescriptor->instantiate = instantiateTapeDelay; + tapeDelayDescriptor->run = runTapeDelay; + tapeDelayDescriptor->run_adding = runAddingTapeDelay; + tapeDelayDescriptor->set_run_adding_gain = setRunAddingGainTapeDelay; + } +} + +void _fini() { + if (tapeDelayDescriptor) { + free((LADSPA_PortDescriptor *)tapeDelayDescriptor->PortDescriptors); + free((char **)tapeDelayDescriptor->PortNames); + free((LADSPA_PortRangeHint *)tapeDelayDescriptor->PortRangeHints); + free(tapeDelayDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/transient_1206.c b/plugins/ladspa_effect/swh/transient_1206.c new file mode 100644 index 000000000..c2be769f4 --- /dev/null +++ b/plugins/ladspa_effect/swh/transient_1206.c @@ -0,0 +1,476 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + +#line 10 "transient_1206.xml" + +#include "ladspa-util.h" + +#define BUFFER_SIZE 10240 +#define SSTAB 0.00001f +#define ASTAB 0.02f + +#define TRANSIENT_ATTACK 0 +#define TRANSIENT_SUSTAIN 1 +#define TRANSIENT_INPUT 2 +#define TRANSIENT_OUTPUT 3 + +static LADSPA_Descriptor *transientDescriptor = NULL; + +typedef struct { + LADSPA_Data *attack; + LADSPA_Data *sustain; + LADSPA_Data *input; + LADSPA_Data *output; + float * buffer; + int buffer_pos; + long count; + float fast_buffer_sum; + float fast_track; + float medi_buffer_sum; + float medi_track; + int sample_rate; + float slow_buffer_sum; + float slow_track; + LADSPA_Data run_adding_gain; +} Transient; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return transientDescriptor; + default: + return NULL; + } +} + +static void activateTransient(LADSPA_Handle instance) { + Transient *plugin_data = (Transient *)instance; + float *buffer = plugin_data->buffer; + int buffer_pos = plugin_data->buffer_pos; + long count = plugin_data->count; + float fast_buffer_sum = plugin_data->fast_buffer_sum; + float fast_track = plugin_data->fast_track; + float medi_buffer_sum = plugin_data->medi_buffer_sum; + float medi_track = plugin_data->medi_track; + int sample_rate = plugin_data->sample_rate; + float slow_buffer_sum = plugin_data->slow_buffer_sum; + float slow_track = plugin_data->slow_track; +#line 36 "transient_1206.xml" + memset(buffer, '\0', BUFFER_SIZE * sizeof(float)); + fast_buffer_sum = 0.1; + medi_buffer_sum = 0.1; + slow_buffer_sum = 0.1; + buffer_pos = 0; + fast_track = 0.1; + medi_track = 0.1; + slow_track = 0.1; + count = 0; + sample_rate = sample_rate; + plugin_data->buffer = buffer; + plugin_data->buffer_pos = buffer_pos; + plugin_data->count = count; + plugin_data->fast_buffer_sum = fast_buffer_sum; + plugin_data->fast_track = fast_track; + plugin_data->medi_buffer_sum = medi_buffer_sum; + plugin_data->medi_track = medi_track; + plugin_data->sample_rate = sample_rate; + plugin_data->slow_buffer_sum = slow_buffer_sum; + plugin_data->slow_track = slow_track; + +} + +static void cleanupTransient(LADSPA_Handle instance) { +#line 49 "transient_1206.xml" + Transient *plugin_data = (Transient *)instance; + free(plugin_data->buffer); + free(instance); +} + +static void connectPortTransient( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + Transient *plugin; + + plugin = (Transient *)instance; + switch (port) { + case TRANSIENT_ATTACK: + plugin->attack = data; + break; + case TRANSIENT_SUSTAIN: + plugin->sustain = data; + break; + case TRANSIENT_INPUT: + plugin->input = data; + break; + case TRANSIENT_OUTPUT: + plugin->output = data; + break; + } +} + +static LADSPA_Handle instantiateTransient( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + Transient *plugin_data = (Transient *)malloc(sizeof(Transient)); + float *buffer = NULL; + int buffer_pos; + long count; + float fast_buffer_sum; + float fast_track; + float medi_buffer_sum; + float medi_track; + int sample_rate; + float slow_buffer_sum; + float slow_track; + +#line 23 "transient_1206.xml" + buffer = calloc(BUFFER_SIZE, sizeof(float)); + fast_buffer_sum = 0.1; + medi_buffer_sum = 0.1; + slow_buffer_sum = 0.1; + buffer_pos = 0; + fast_track = 0.0; + medi_track = 0.0; + slow_track = 0.0; + count = 0; + sample_rate = s_rate; + + plugin_data->buffer = buffer; + plugin_data->buffer_pos = buffer_pos; + plugin_data->count = count; + plugin_data->fast_buffer_sum = fast_buffer_sum; + plugin_data->fast_track = fast_track; + plugin_data->medi_buffer_sum = medi_buffer_sum; + plugin_data->medi_track = medi_track; + plugin_data->sample_rate = sample_rate; + plugin_data->slow_buffer_sum = slow_buffer_sum; + plugin_data->slow_track = slow_track; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runTransient(LADSPA_Handle instance, unsigned long sample_count) { + Transient *plugin_data = (Transient *)instance; + + /* Attack speed (float value) */ + const LADSPA_Data attack = *(plugin_data->attack); + + /* Sustain time (float value) */ + const LADSPA_Data sustain = *(plugin_data->sustain); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + float * buffer = plugin_data->buffer; + int buffer_pos = plugin_data->buffer_pos; + long count = plugin_data->count; + float fast_buffer_sum = plugin_data->fast_buffer_sum; + float fast_track = plugin_data->fast_track; + float medi_buffer_sum = plugin_data->medi_buffer_sum; + float medi_track = plugin_data->medi_track; + int sample_rate = plugin_data->sample_rate; + float slow_buffer_sum = plugin_data->slow_buffer_sum; + float slow_track = plugin_data->slow_track; + +#line 53 "transient_1206.xml" + unsigned long pos; + const int fast_sum_size = (2 * sample_rate) / 1000; + const int medi_sum_size = (25 * sample_rate) / 1000; + const int slow_sum_size = (100 * sample_rate) / 1000; + const float fast_track_lag = 1.5f / fast_sum_size; + const float medi_track_lag = 1.0f / medi_sum_size; + const float slow_track_lag = 1.3f / slow_sum_size; + float ratio; + LADSPA_Data in; + + for (pos = 0; pos < sample_count; pos++) { + in = input[pos]; + buffer[buffer_pos] = fabs(in); + fast_buffer_sum += buffer[buffer_pos]; + medi_buffer_sum += buffer[buffer_pos]; + slow_buffer_sum += buffer[buffer_pos]; + fast_buffer_sum -= buffer[MOD(buffer_pos - fast_sum_size, BUFFER_SIZE)]; + medi_buffer_sum -= buffer[MOD(buffer_pos - medi_sum_size, BUFFER_SIZE)]; + slow_buffer_sum -= buffer[MOD(buffer_pos - slow_sum_size, BUFFER_SIZE)]; + if (count++ > slow_sum_size) { + fast_track += (fast_buffer_sum/fast_sum_size - fast_track) + * fast_track_lag; + medi_track += (medi_buffer_sum/medi_sum_size - medi_track) + * medi_track_lag; + slow_track += (slow_buffer_sum/slow_sum_size - slow_track) + * slow_track_lag; + } + + // Attack + ratio = (fast_track + ASTAB) / (medi_track + ASTAB); + if (ratio * attack > 1.0f) { + in *= ratio * attack; + } else if (ratio * attack < -1.0f) { + in /= ratio * -attack; + } + + // Sustain + ratio = (slow_track + SSTAB) / (medi_track + SSTAB); + if (ratio * sustain > 1.0f) { + in *= ratio * sustain; + } else if (ratio * sustain < -1.0f) { + in /= ratio * -sustain; + } + + buffer_write(output[pos], in); + buffer_pos = (buffer_pos + 1) % BUFFER_SIZE; + } + + plugin_data->count = count; + plugin_data->fast_track = fast_track; + plugin_data->medi_track = medi_track; + plugin_data->slow_track = slow_track; + plugin_data->buffer_pos = buffer_pos; + plugin_data->fast_buffer_sum = fast_buffer_sum; + plugin_data->medi_buffer_sum = medi_buffer_sum; + plugin_data->slow_buffer_sum = slow_buffer_sum; +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainTransient(LADSPA_Handle instance, LADSPA_Data gain) { + ((Transient *)instance)->run_adding_gain = gain; +} + +static void runAddingTransient(LADSPA_Handle instance, unsigned long sample_count) { + Transient *plugin_data = (Transient *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Attack speed (float value) */ + const LADSPA_Data attack = *(plugin_data->attack); + + /* Sustain time (float value) */ + const LADSPA_Data sustain = *(plugin_data->sustain); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + float * buffer = plugin_data->buffer; + int buffer_pos = plugin_data->buffer_pos; + long count = plugin_data->count; + float fast_buffer_sum = plugin_data->fast_buffer_sum; + float fast_track = plugin_data->fast_track; + float medi_buffer_sum = plugin_data->medi_buffer_sum; + float medi_track = plugin_data->medi_track; + int sample_rate = plugin_data->sample_rate; + float slow_buffer_sum = plugin_data->slow_buffer_sum; + float slow_track = plugin_data->slow_track; + +#line 53 "transient_1206.xml" + unsigned long pos; + const int fast_sum_size = (2 * sample_rate) / 1000; + const int medi_sum_size = (25 * sample_rate) / 1000; + const int slow_sum_size = (100 * sample_rate) / 1000; + const float fast_track_lag = 1.5f / fast_sum_size; + const float medi_track_lag = 1.0f / medi_sum_size; + const float slow_track_lag = 1.3f / slow_sum_size; + float ratio; + LADSPA_Data in; + + for (pos = 0; pos < sample_count; pos++) { + in = input[pos]; + buffer[buffer_pos] = fabs(in); + fast_buffer_sum += buffer[buffer_pos]; + medi_buffer_sum += buffer[buffer_pos]; + slow_buffer_sum += buffer[buffer_pos]; + fast_buffer_sum -= buffer[MOD(buffer_pos - fast_sum_size, BUFFER_SIZE)]; + medi_buffer_sum -= buffer[MOD(buffer_pos - medi_sum_size, BUFFER_SIZE)]; + slow_buffer_sum -= buffer[MOD(buffer_pos - slow_sum_size, BUFFER_SIZE)]; + if (count++ > slow_sum_size) { + fast_track += (fast_buffer_sum/fast_sum_size - fast_track) + * fast_track_lag; + medi_track += (medi_buffer_sum/medi_sum_size - medi_track) + * medi_track_lag; + slow_track += (slow_buffer_sum/slow_sum_size - slow_track) + * slow_track_lag; + } + + // Attack + ratio = (fast_track + ASTAB) / (medi_track + ASTAB); + if (ratio * attack > 1.0f) { + in *= ratio * attack; + } else if (ratio * attack < -1.0f) { + in /= ratio * -attack; + } + + // Sustain + ratio = (slow_track + SSTAB) / (medi_track + SSTAB); + if (ratio * sustain > 1.0f) { + in *= ratio * sustain; + } else if (ratio * sustain < -1.0f) { + in /= ratio * -sustain; + } + + buffer_write(output[pos], in); + buffer_pos = (buffer_pos + 1) % BUFFER_SIZE; + } + + plugin_data->count = count; + plugin_data->fast_track = fast_track; + plugin_data->medi_track = medi_track; + plugin_data->slow_track = slow_track; + plugin_data->buffer_pos = buffer_pos; + plugin_data->fast_buffer_sum = fast_buffer_sum; + plugin_data->medi_buffer_sum = medi_buffer_sum; + plugin_data->slow_buffer_sum = slow_buffer_sum; +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + transientDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (transientDescriptor) { + transientDescriptor->UniqueID = 1206; + transientDescriptor->Label = "transient"; + transientDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + transientDescriptor->Name = + D_("Transient mangler"); + transientDescriptor->Maker = + "Steve Harris "; + transientDescriptor->Copyright = + "GPL"; + transientDescriptor->PortCount = 4; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(4, + sizeof(LADSPA_PortDescriptor)); + transientDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(4, + sizeof(LADSPA_PortRangeHint)); + transientDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(4, sizeof(char*)); + transientDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Attack speed */ + port_descriptors[TRANSIENT_ATTACK] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[TRANSIENT_ATTACK] = + D_("Attack speed"); + port_range_hints[TRANSIENT_ATTACK].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[TRANSIENT_ATTACK].LowerBound = -1; + port_range_hints[TRANSIENT_ATTACK].UpperBound = 1; + + /* Parameters for Sustain time */ + port_descriptors[TRANSIENT_SUSTAIN] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[TRANSIENT_SUSTAIN] = + D_("Sustain time"); + port_range_hints[TRANSIENT_SUSTAIN].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[TRANSIENT_SUSTAIN].LowerBound = -1; + port_range_hints[TRANSIENT_SUSTAIN].UpperBound = 1; + + /* Parameters for Input */ + port_descriptors[TRANSIENT_INPUT] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[TRANSIENT_INPUT] = + D_("Input"); + port_range_hints[TRANSIENT_INPUT].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE; + port_range_hints[TRANSIENT_INPUT].LowerBound = -1.0; + port_range_hints[TRANSIENT_INPUT].UpperBound = 1.0; + + /* Parameters for Output */ + port_descriptors[TRANSIENT_OUTPUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[TRANSIENT_OUTPUT] = + D_("Output"); + port_range_hints[TRANSIENT_OUTPUT].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE; + port_range_hints[TRANSIENT_OUTPUT].LowerBound = -1.0; + port_range_hints[TRANSIENT_OUTPUT].UpperBound = 1.0; + + transientDescriptor->activate = activateTransient; + transientDescriptor->cleanup = cleanupTransient; + transientDescriptor->connect_port = connectPortTransient; + transientDescriptor->deactivate = NULL; + transientDescriptor->instantiate = instantiateTransient; + transientDescriptor->run = runTransient; + transientDescriptor->run_adding = runAddingTransient; + transientDescriptor->set_run_adding_gain = setRunAddingGainTransient; + } +} + +void _fini() { + if (transientDescriptor) { + free((LADSPA_PortDescriptor *)transientDescriptor->PortDescriptors); + free((char **)transientDescriptor->PortNames); + free((LADSPA_PortRangeHint *)transientDescriptor->PortRangeHints); + free(transientDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/triple_para_1204.c b/plugins/ladspa_effect/swh/triple_para_1204.c new file mode 100644 index 000000000..e2ee41361 --- /dev/null +++ b/plugins/ladspa_effect/swh/triple_para_1204.c @@ -0,0 +1,604 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + +#line 10 "triple_para_1204.xml" + +#include "util/biquad.h" + +#define TRIPLEPARA_GAIN_L 0 +#define TRIPLEPARA_FC_L 1 +#define TRIPLEPARA_BW_L 2 +#define TRIPLEPARA_GAIN_1 3 +#define TRIPLEPARA_FC_1 4 +#define TRIPLEPARA_BW_1 5 +#define TRIPLEPARA_GAIN_2 6 +#define TRIPLEPARA_FC_2 7 +#define TRIPLEPARA_BW_2 8 +#define TRIPLEPARA_GAIN_3 9 +#define TRIPLEPARA_FC_3 10 +#define TRIPLEPARA_BW_3 11 +#define TRIPLEPARA_GAIN_H 12 +#define TRIPLEPARA_FC_H 13 +#define TRIPLEPARA_BW_H 14 +#define TRIPLEPARA_INPUT 15 +#define TRIPLEPARA_OUTPUT 16 + +static LADSPA_Descriptor *tripleParaDescriptor = NULL; + +typedef struct { + LADSPA_Data *gain_L; + LADSPA_Data *fc_L; + LADSPA_Data *bw_L; + LADSPA_Data *gain_1; + LADSPA_Data *fc_1; + LADSPA_Data *bw_1; + LADSPA_Data *gain_2; + LADSPA_Data *fc_2; + LADSPA_Data *bw_2; + LADSPA_Data *gain_3; + LADSPA_Data *fc_3; + LADSPA_Data *bw_3; + LADSPA_Data *gain_H; + LADSPA_Data *fc_H; + LADSPA_Data *bw_H; + LADSPA_Data *input; + LADSPA_Data *output; + biquad * filters; + float fs; + LADSPA_Data run_adding_gain; +} TriplePara; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return tripleParaDescriptor; + default: + return NULL; + } +} + +static void activateTriplePara(LADSPA_Handle instance) { + TriplePara *plugin_data = (TriplePara *)instance; + biquad *filters = plugin_data->filters; + float fs = plugin_data->fs; +#line 32 "triple_para_1204.xml" + biquad_init(&filters[0]); + biquad_init(&filters[1]); + biquad_init(&filters[2]); + biquad_init(&filters[3]); + biquad_init(&filters[4]); + plugin_data->filters = filters; + plugin_data->fs = fs; + +} + +static void cleanupTriplePara(LADSPA_Handle instance) { +#line 68 "triple_para_1204.xml" + TriplePara *plugin_data = (TriplePara *)instance; + free(plugin_data->filters); + free(instance); +} + +static void connectPortTriplePara( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + TriplePara *plugin; + + plugin = (TriplePara *)instance; + switch (port) { + case TRIPLEPARA_GAIN_L: + plugin->gain_L = data; + break; + case TRIPLEPARA_FC_L: + plugin->fc_L = data; + break; + case TRIPLEPARA_BW_L: + plugin->bw_L = data; + break; + case TRIPLEPARA_GAIN_1: + plugin->gain_1 = data; + break; + case TRIPLEPARA_FC_1: + plugin->fc_1 = data; + break; + case TRIPLEPARA_BW_1: + plugin->bw_1 = data; + break; + case TRIPLEPARA_GAIN_2: + plugin->gain_2 = data; + break; + case TRIPLEPARA_FC_2: + plugin->fc_2 = data; + break; + case TRIPLEPARA_BW_2: + plugin->bw_2 = data; + break; + case TRIPLEPARA_GAIN_3: + plugin->gain_3 = data; + break; + case TRIPLEPARA_FC_3: + plugin->fc_3 = data; + break; + case TRIPLEPARA_BW_3: + plugin->bw_3 = data; + break; + case TRIPLEPARA_GAIN_H: + plugin->gain_H = data; + break; + case TRIPLEPARA_FC_H: + plugin->fc_H = data; + break; + case TRIPLEPARA_BW_H: + plugin->bw_H = data; + break; + case TRIPLEPARA_INPUT: + plugin->input = data; + break; + case TRIPLEPARA_OUTPUT: + plugin->output = data; + break; + } +} + +static LADSPA_Handle instantiateTriplePara( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + TriplePara *plugin_data = (TriplePara *)malloc(sizeof(TriplePara)); + biquad *filters = NULL; + float fs; + +#line 21 "triple_para_1204.xml" + fs = s_rate; + + filters = calloc(5, sizeof(biquad)); + biquad_init(&filters[0]); + biquad_init(&filters[1]); + biquad_init(&filters[2]); + biquad_init(&filters[3]); + biquad_init(&filters[4]); + + plugin_data->filters = filters; + plugin_data->fs = fs; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runTriplePara(LADSPA_Handle instance, unsigned long sample_count) { + TriplePara *plugin_data = (TriplePara *)instance; + + /* Low-shelving gain (dB) (float value) */ + const LADSPA_Data gain_L = *(plugin_data->gain_L); + + /* Low-shelving frequency (Hz) (float value) */ + const LADSPA_Data fc_L = *(plugin_data->fc_L); + + /* Low-shelving slope (float value) */ + const LADSPA_Data bw_L = *(plugin_data->bw_L); + + /* Band 1 gain (dB) (float value) */ + const LADSPA_Data gain_1 = *(plugin_data->gain_1); + + /* Band 1 frequency (Hz) (float value) */ + const LADSPA_Data fc_1 = *(plugin_data->fc_1); + + /* Band 1 bandwidth (octaves) (float value) */ + const LADSPA_Data bw_1 = *(plugin_data->bw_1); + + /* Band 2 gain (dB) (float value) */ + const LADSPA_Data gain_2 = *(plugin_data->gain_2); + + /* Band 2 frequency (Hz) (float value) */ + const LADSPA_Data fc_2 = *(plugin_data->fc_2); + + /* Band 2 bandwidth (octaves) (float value) */ + const LADSPA_Data bw_2 = *(plugin_data->bw_2); + + /* Band 3 gain (dB) (float value) */ + const LADSPA_Data gain_3 = *(plugin_data->gain_3); + + /* Band 3 frequency (Hz) (float value) */ + const LADSPA_Data fc_3 = *(plugin_data->fc_3); + + /* Band 3 bandwidth (octaves) (float value) */ + const LADSPA_Data bw_3 = *(plugin_data->bw_3); + + /* High-shelving gain (dB) (float value) */ + const LADSPA_Data gain_H = *(plugin_data->gain_H); + + /* High-shelving frequency (Hz) (float value) */ + const LADSPA_Data fc_H = *(plugin_data->fc_H); + + /* High-shelving slope (float value) */ + const LADSPA_Data bw_H = *(plugin_data->bw_H); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + biquad * filters = plugin_data->filters; + float fs = plugin_data->fs; + +#line 40 "triple_para_1204.xml" + unsigned long pos; + float in; + + ls_set_params(&filters[0], fc_L, gain_L, bw_L, fs); + eq_set_params(&filters[1], fc_1, gain_1, bw_1, fs); + eq_set_params(&filters[2], fc_2, gain_2, bw_2, fs); + eq_set_params(&filters[3], fc_3, gain_3, bw_3, fs); + hs_set_params(&filters[4], fc_H, gain_H, bw_H, fs); + + for (pos = 0; pos < sample_count; pos++) { + in = biquad_run(&filters[0], input[pos]); + in = biquad_run(&filters[1], in); + in = biquad_run(&filters[2], in); + in = biquad_run(&filters[3], in); + in = biquad_run(&filters[4], in); + buffer_write(output[pos], in); + } +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainTriplePara(LADSPA_Handle instance, LADSPA_Data gain) { + ((TriplePara *)instance)->run_adding_gain = gain; +} + +static void runAddingTriplePara(LADSPA_Handle instance, unsigned long sample_count) { + TriplePara *plugin_data = (TriplePara *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Low-shelving gain (dB) (float value) */ + const LADSPA_Data gain_L = *(plugin_data->gain_L); + + /* Low-shelving frequency (Hz) (float value) */ + const LADSPA_Data fc_L = *(plugin_data->fc_L); + + /* Low-shelving slope (float value) */ + const LADSPA_Data bw_L = *(plugin_data->bw_L); + + /* Band 1 gain (dB) (float value) */ + const LADSPA_Data gain_1 = *(plugin_data->gain_1); + + /* Band 1 frequency (Hz) (float value) */ + const LADSPA_Data fc_1 = *(plugin_data->fc_1); + + /* Band 1 bandwidth (octaves) (float value) */ + const LADSPA_Data bw_1 = *(plugin_data->bw_1); + + /* Band 2 gain (dB) (float value) */ + const LADSPA_Data gain_2 = *(plugin_data->gain_2); + + /* Band 2 frequency (Hz) (float value) */ + const LADSPA_Data fc_2 = *(plugin_data->fc_2); + + /* Band 2 bandwidth (octaves) (float value) */ + const LADSPA_Data bw_2 = *(plugin_data->bw_2); + + /* Band 3 gain (dB) (float value) */ + const LADSPA_Data gain_3 = *(plugin_data->gain_3); + + /* Band 3 frequency (Hz) (float value) */ + const LADSPA_Data fc_3 = *(plugin_data->fc_3); + + /* Band 3 bandwidth (octaves) (float value) */ + const LADSPA_Data bw_3 = *(plugin_data->bw_3); + + /* High-shelving gain (dB) (float value) */ + const LADSPA_Data gain_H = *(plugin_data->gain_H); + + /* High-shelving frequency (Hz) (float value) */ + const LADSPA_Data fc_H = *(plugin_data->fc_H); + + /* High-shelving slope (float value) */ + const LADSPA_Data bw_H = *(plugin_data->bw_H); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + biquad * filters = plugin_data->filters; + float fs = plugin_data->fs; + +#line 40 "triple_para_1204.xml" + unsigned long pos; + float in; + + ls_set_params(&filters[0], fc_L, gain_L, bw_L, fs); + eq_set_params(&filters[1], fc_1, gain_1, bw_1, fs); + eq_set_params(&filters[2], fc_2, gain_2, bw_2, fs); + eq_set_params(&filters[3], fc_3, gain_3, bw_3, fs); + hs_set_params(&filters[4], fc_H, gain_H, bw_H, fs); + + for (pos = 0; pos < sample_count; pos++) { + in = biquad_run(&filters[0], input[pos]); + in = biquad_run(&filters[1], in); + in = biquad_run(&filters[2], in); + in = biquad_run(&filters[3], in); + in = biquad_run(&filters[4], in); + buffer_write(output[pos], in); + } +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + tripleParaDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (tripleParaDescriptor) { + tripleParaDescriptor->UniqueID = 1204; + tripleParaDescriptor->Label = "triplePara"; + tripleParaDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + tripleParaDescriptor->Name = + D_("Triple band parametric with shelves"); + tripleParaDescriptor->Maker = + "Steve Harris "; + tripleParaDescriptor->Copyright = + "GPL"; + tripleParaDescriptor->PortCount = 17; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(17, + sizeof(LADSPA_PortDescriptor)); + tripleParaDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(17, + sizeof(LADSPA_PortRangeHint)); + tripleParaDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(17, sizeof(char*)); + tripleParaDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Low-shelving gain (dB) */ + port_descriptors[TRIPLEPARA_GAIN_L] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[TRIPLEPARA_GAIN_L] = + D_("Low-shelving gain (dB)"); + port_range_hints[TRIPLEPARA_GAIN_L].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[TRIPLEPARA_GAIN_L].LowerBound = -70; + port_range_hints[TRIPLEPARA_GAIN_L].UpperBound = +30; + + /* Parameters for Low-shelving frequency (Hz) */ + port_descriptors[TRIPLEPARA_FC_L] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[TRIPLEPARA_FC_L] = + D_("Low-shelving frequency (Hz)"); + port_range_hints[TRIPLEPARA_FC_L].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_LOGARITHMIC | LADSPA_HINT_SAMPLE_RATE | LADSPA_HINT_DEFAULT_MINIMUM; + port_range_hints[TRIPLEPARA_FC_L].LowerBound = 0.0001; + port_range_hints[TRIPLEPARA_FC_L].UpperBound = 0.49; + + /* Parameters for Low-shelving slope */ + port_descriptors[TRIPLEPARA_BW_L] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[TRIPLEPARA_BW_L] = + D_("Low-shelving slope"); + port_range_hints[TRIPLEPARA_BW_L].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MIDDLE; + port_range_hints[TRIPLEPARA_BW_L].LowerBound = 0; + port_range_hints[TRIPLEPARA_BW_L].UpperBound = 1; + + /* Parameters for Band 1 gain (dB) */ + port_descriptors[TRIPLEPARA_GAIN_1] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[TRIPLEPARA_GAIN_1] = + D_("Band 1 gain (dB)"); + port_range_hints[TRIPLEPARA_GAIN_1].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[TRIPLEPARA_GAIN_1].LowerBound = -70; + port_range_hints[TRIPLEPARA_GAIN_1].UpperBound = +30; + + /* Parameters for Band 1 frequency (Hz) */ + port_descriptors[TRIPLEPARA_FC_1] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[TRIPLEPARA_FC_1] = + D_("Band 1 frequency (Hz)"); + port_range_hints[TRIPLEPARA_FC_1].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_LOGARITHMIC | LADSPA_HINT_SAMPLE_RATE | LADSPA_HINT_DEFAULT_LOW; + port_range_hints[TRIPLEPARA_FC_1].LowerBound = 0.0001; + port_range_hints[TRIPLEPARA_FC_1].UpperBound = 0.49; + + /* Parameters for Band 1 bandwidth (octaves) */ + port_descriptors[TRIPLEPARA_BW_1] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[TRIPLEPARA_BW_1] = + D_("Band 1 bandwidth (octaves)"); + port_range_hints[TRIPLEPARA_BW_1].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_1; + port_range_hints[TRIPLEPARA_BW_1].LowerBound = 0; + port_range_hints[TRIPLEPARA_BW_1].UpperBound = 4; + + /* Parameters for Band 2 gain (dB) */ + port_descriptors[TRIPLEPARA_GAIN_2] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[TRIPLEPARA_GAIN_2] = + D_("Band 2 gain (dB)"); + port_range_hints[TRIPLEPARA_GAIN_2].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[TRIPLEPARA_GAIN_2].LowerBound = -70; + port_range_hints[TRIPLEPARA_GAIN_2].UpperBound = +30; + + /* Parameters for Band 2 frequency (Hz) */ + port_descriptors[TRIPLEPARA_FC_2] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[TRIPLEPARA_FC_2] = + D_("Band 2 frequency (Hz)"); + port_range_hints[TRIPLEPARA_FC_2].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_LOGARITHMIC | LADSPA_HINT_SAMPLE_RATE | LADSPA_HINT_DEFAULT_MIDDLE; + port_range_hints[TRIPLEPARA_FC_2].LowerBound = 0.0001; + port_range_hints[TRIPLEPARA_FC_2].UpperBound = 0.49; + + /* Parameters for Band 2 bandwidth (octaves) */ + port_descriptors[TRIPLEPARA_BW_2] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[TRIPLEPARA_BW_2] = + D_("Band 2 bandwidth (octaves)"); + port_range_hints[TRIPLEPARA_BW_2].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_1; + port_range_hints[TRIPLEPARA_BW_2].LowerBound = 0; + port_range_hints[TRIPLEPARA_BW_2].UpperBound = 4; + + /* Parameters for Band 3 gain (dB) */ + port_descriptors[TRIPLEPARA_GAIN_3] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[TRIPLEPARA_GAIN_3] = + D_("Band 3 gain (dB)"); + port_range_hints[TRIPLEPARA_GAIN_3].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[TRIPLEPARA_GAIN_3].LowerBound = -70; + port_range_hints[TRIPLEPARA_GAIN_3].UpperBound = +30; + + /* Parameters for Band 3 frequency (Hz) */ + port_descriptors[TRIPLEPARA_FC_3] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[TRIPLEPARA_FC_3] = + D_("Band 3 frequency (Hz)"); + port_range_hints[TRIPLEPARA_FC_3].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_LOGARITHMIC | LADSPA_HINT_SAMPLE_RATE | LADSPA_HINT_DEFAULT_HIGH; + port_range_hints[TRIPLEPARA_FC_3].LowerBound = 0.0001; + port_range_hints[TRIPLEPARA_FC_3].UpperBound = 0.49; + + /* Parameters for Band 3 bandwidth (octaves) */ + port_descriptors[TRIPLEPARA_BW_3] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[TRIPLEPARA_BW_3] = + D_("Band 3 bandwidth (octaves)"); + port_range_hints[TRIPLEPARA_BW_3].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_1; + port_range_hints[TRIPLEPARA_BW_3].LowerBound = 0; + port_range_hints[TRIPLEPARA_BW_3].UpperBound = 4; + + /* Parameters for High-shelving gain (dB) */ + port_descriptors[TRIPLEPARA_GAIN_H] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[TRIPLEPARA_GAIN_H] = + D_("High-shelving gain (dB)"); + port_range_hints[TRIPLEPARA_GAIN_H].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[TRIPLEPARA_GAIN_H].LowerBound = -70; + port_range_hints[TRIPLEPARA_GAIN_H].UpperBound = +30; + + /* Parameters for High-shelving frequency (Hz) */ + port_descriptors[TRIPLEPARA_FC_H] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[TRIPLEPARA_FC_H] = + D_("High-shelving frequency (Hz)"); + port_range_hints[TRIPLEPARA_FC_H].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_LOGARITHMIC | LADSPA_HINT_SAMPLE_RATE | LADSPA_HINT_DEFAULT_MAXIMUM; + port_range_hints[TRIPLEPARA_FC_H].LowerBound = 0.0001; + port_range_hints[TRIPLEPARA_FC_H].UpperBound = 0.49; + + /* Parameters for High-shelving slope */ + port_descriptors[TRIPLEPARA_BW_H] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[TRIPLEPARA_BW_H] = + D_("High-shelving slope"); + port_range_hints[TRIPLEPARA_BW_H].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_MIDDLE; + port_range_hints[TRIPLEPARA_BW_H].LowerBound = 0; + port_range_hints[TRIPLEPARA_BW_H].UpperBound = 1; + + /* Parameters for Input */ + port_descriptors[TRIPLEPARA_INPUT] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[TRIPLEPARA_INPUT] = + D_("Input"); + port_range_hints[TRIPLEPARA_INPUT].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE; + port_range_hints[TRIPLEPARA_INPUT].LowerBound = -1.0; + port_range_hints[TRIPLEPARA_INPUT].UpperBound = +1.0; + + /* Parameters for Output */ + port_descriptors[TRIPLEPARA_OUTPUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[TRIPLEPARA_OUTPUT] = + D_("Output"); + port_range_hints[TRIPLEPARA_OUTPUT].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE; + port_range_hints[TRIPLEPARA_OUTPUT].LowerBound = -1.0; + port_range_hints[TRIPLEPARA_OUTPUT].UpperBound = +1.0; + + tripleParaDescriptor->activate = activateTriplePara; + tripleParaDescriptor->cleanup = cleanupTriplePara; + tripleParaDescriptor->connect_port = connectPortTriplePara; + tripleParaDescriptor->deactivate = NULL; + tripleParaDescriptor->instantiate = instantiateTriplePara; + tripleParaDescriptor->run = runTriplePara; + tripleParaDescriptor->run_adding = runAddingTriplePara; + tripleParaDescriptor->set_run_adding_gain = setRunAddingGainTriplePara; + } +} + +void _fini() { + if (tripleParaDescriptor) { + free((LADSPA_PortDescriptor *)tripleParaDescriptor->PortDescriptors); + free((char **)tripleParaDescriptor->PortNames); + free((LADSPA_PortRangeHint *)tripleParaDescriptor->PortRangeHints); + free(tripleParaDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/util/blo.c b/plugins/ladspa_effect/swh/util/blo.c new file mode 100644 index 000000000..6a9a2d9d0 --- /dev/null +++ b/plugins/ladspa_effect/swh/util/blo.c @@ -0,0 +1,266 @@ +/* + Copyright (C) 2002 Steve Harris + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +*/ + +#include +#include +#include +#include +#ifndef WIN32 +#include +#endif + +#include "blo.h" + +/* Create the lookup tables needed to generate the bandlimited signals, we + * create sin tables (As well as the usual sin, square, saw), which is almost + * completely pointless, but doesn't cost much ram. + * + * Memory use is roughly 8 * table_size * num_of_harmonics, eg. 2048 point + * tables with 64 harmonics costs ~1Meg. The oscilators will be accurate down + * to sample_rate / (2 * number_of_harmonics) Hz, below that they will sound a + * bit soft. + */ + +blo_h_tables *blo_h_tables_new(int table_size) +{ + blo_h_tables *this; + float *all_tables = NULL; + float *table; + float table_size_f = table_size; + float max; + unsigned int table_count = 0; + unsigned int i, h; + size_t all_tables_size = sizeof(float) * (table_size + BLO_TABLE_WR) + * (BLO_N_HARMONICS - 1) * 2; + int shm_fd; + char shm_path[128]; + + this = malloc(sizeof(blo_h_tables)); + this->alloc_size = all_tables_size; + this->table_size = table_size; + this->table_mask = table_size - 1; + this->store_type = BLO_MMAP; + + snprintf(shm_path, 128, "/blo-1-%dx%dx%d.tbl", BLO_N_WAVES, + BLO_N_HARMONICS, table_size + BLO_TABLE_WR); + if ((shm_fd = shm_open(shm_path, O_RDONLY, 0)) > 0) { + /* There is an existing SHM segment that matches what we want */ + + all_tables = mmap(0, all_tables_size, PROT_READ, MAP_SHARED, + shm_fd, 0); + close(shm_fd); + this->alloc_space = all_tables; + + /* Map the pointers to the correct places in SHM */ + + /* The zero harmonics tables (trivial) */ + table = BLO_NEXT_TABLE; + for (i=0; ih_tables[i][0] = table; + } + + /* The 1st harmonic table (trivial) */ + table = BLO_NEXT_TABLE; + for (i=0; ih_tables[i][1] = table; + } + + /* The sin 2nd+ harmonics sine tables (trivial) */ + for (h=2; hh_tables[BLO_SINE][h] = table; + } + + /* The tri 2nd+ harmonics tables */ + table = this->h_tables[BLO_TRI][1]; + for (h=2; hh_tables[BLO_TRI][h] = table; + } else { + /* Odd harmonic add sin(hp)/h^2 */ + table = BLO_NEXT_TABLE; + this->h_tables[BLO_TRI][h] = table; + } + } + + /* The square 2nd+ harmonics tables */ + table = this->h_tables[BLO_SQUARE][1]; + for (h=2; hh_tables[BLO_SQUARE][h] = table; + } else { + /* Odd harmonic add sin(hp)/h */ + table = BLO_NEXT_TABLE; + this->h_tables[BLO_SQUARE][h] = table; + } + } + + /* The saw 2nd+ harmonics tables */ + for (h=2; hh_tables[BLO_SAW][h] = table; + } + + return this; + } else if ((shm_fd = shm_open(shm_path, O_CREAT | O_RDWR, 0644)) > 0) { + /* There is no existing SHM segment, but we can make one */ + ftruncate(shm_fd, all_tables_size); + + all_tables = mmap(0, all_tables_size, PROT_READ | PROT_WRITE, + MAP_SHARED, shm_fd, 0); + close(shm_fd); + } + + /* Fallback case, can't map a SHM segment, just malloc it and suffer */ + if (!all_tables) { + all_tables = malloc(all_tables_size); + this->store_type = BLO_MALLOC; + } + this->alloc_space = all_tables; + + /* Calculate the harmonic amplitudes and place the index pointers */ + + /* Make a zero harmonics table (trivial) */ + table = BLO_NEXT_TABLE; + for (i=0; ih_tables[i][0] = table; + } + + /* Make a 1st harmonic table (trivial) */ + table = BLO_NEXT_TABLE; + for (i=0; ih_tables[i][1] = table; + } + + /* Make the sin 2nd+ harmonics tables (trivial) */ + for (h=2; hh_tables[BLO_SINE][h] = table; + } + + /* Make the tri 2nd+ harmonics tables */ + table = this->h_tables[BLO_TRI][1]; + for (h=2; hh_tables[BLO_TRI][h] = table; + } else { + float sign = 1.0f; + if (h % 4 == 3) { + sign = -1.0f; + } + /* Odd harmonic add sin(hp)/h^2 */ + table = BLO_NEXT_TABLE; + this->h_tables[BLO_TRI][h] = table; + for (i=0; ih_tables[BLO_TRI][h - 1][i] + + sign * BLO_SIN_GEN((float)i * (float)h) / + ((float)h * (float) h); + } + } + } + + /* Make the square 2nd+ harmonics tables */ + table = this->h_tables[BLO_SQUARE][1]; + for (h=2; hh_tables[BLO_SQUARE][h] = table; + } else { + /* Odd harmonic add sin(hp)/h */ + table = BLO_NEXT_TABLE; + this->h_tables[BLO_SQUARE][h] = table; + for (i=0; ih_tables[BLO_SQUARE][h - 1][i] + + BLO_SIN_GEN((float)i * (float)h) / (float)h; + } + } + } + + /* Make the saw 2nd+ harmonics tables */ + for (h=2; hh_tables[BLO_SAW][h] = table; + for (i=0; ih_tables[BLO_SAW][h - 1][i] + + BLO_SIN_GEN((float)i * (float)h) / (float)h; + } + } + + /* Normalise table levels */ + for (h=1; h max) { + max = fabs(table[i]); + } + } + max = 1.0f / max; + for (i=0; istore_type == BLO_MMAP) { + munmap(tables->alloc_space, tables->alloc_size); + } else { + free(tables->alloc_space); + } + free(tables); +} + +blo_h_osc *blo_h_new(blo_h_tables *tables, unsigned int wave, float sample_rate) +{ + blo_h_osc *this = malloc(sizeof(blo_h_osc)); + + this->tables = tables; + this->wave = wave; + this->sample_rate = sample_rate; + this->nyquist = sample_rate * 0.49f; + this->ph.all = 0; + this->ph_coef = ((float)(tables->table_size) * 65536.0f) / sample_rate; + this->ph_mask = tables->table_size * 65536 - 1; + this->table_mask = tables->table_mask; + this->table_size = tables->table_size; + this->table = tables->h_tables[0][0]; + this->table_b = tables->h_tables[0][0]; + + return this; +} + +void blo_h_free(blo_h_osc *osc) +{ + free(osc); +} diff --git a/plugins/ladspa_effect/swh/util/blo.h b/plugins/ladspa_effect/swh/util/blo.h new file mode 100644 index 000000000..2254d972f --- /dev/null +++ b/plugins/ladspa_effect/swh/util/blo.h @@ -0,0 +1,213 @@ +/* + Copyright (C) 2002 Steve Harris + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +*/ + +#include +#include +#include + +#include "ladspa-util.h" + +#define BLO_N_WAVES 4 +#define BLO_SINE 0 +#define BLO_TRI 1 +#define BLO_SQUARE 2 +#define BLO_SAW 3 + +#define BLO_MMAP 0 +#define BLO_MALLOC 1 + +#ifndef BLO_N_HARMONICS +#define BLO_N_HARMONICS 64 +#endif + +/* The wraparaound off the end of the basic wavetable, used by the + * interpolators. */ +#define BLO_TABLE_WR 4 + +#define BLO_SIN_GEN(phase) sin((phase) * 2.0f * (float)M_PI / table_size_f) +#define BLO_NEXT_TABLE (all_tables + (table_count++ * (table_size + BLO_TABLE_WR))) + +typedef struct { + float *h_tables[BLO_N_WAVES][BLO_N_HARMONICS]; + float *alloc_space; + size_t alloc_size; + int table_size; + int table_mask; + int store_type; +} blo_h_tables; + +typedef union { + int all; + struct { + unsigned short fr; + short in; + } part; +} blo_fixp; + +typedef struct { + blo_h_tables *tables; + float sample_rate; + float nyquist; + unsigned int wave; + blo_fixp ph; + blo_fixp om; + float ph_coef; + int ph_mask; + int table_mask; + int table_size; + int topbit; + float *table; + float *table_b; + float xfade; +} blo_h_osc; + +blo_h_tables *blo_h_tables_new(int table_size); + +void blo_h_tables_free(blo_h_tables *tables); + +blo_h_osc *blo_h_new(blo_h_tables *tables, unsigned int wave, + float sample_rate); + +void blo_h_free(blo_h_osc *osc); + +/* Set frequency for static oscilator, less cycles, but won't modulate as well + * You can't use blo_osc_hd_run_* until you've called the _hd version of this + * function. + */ + +static inline void blo_hs_set_freq(blo_h_osc *this, const float f) +{ + unsigned int tab_num; + const float ff = fabs(f) + 0.00001f; // Prevent div by zero + + // This needs to be a cast, no idea why + this->om.all = (int)(f * this->ph_coef); + tab_num = f_round(this->nyquist / ff - 0.5f); + if (tab_num >= BLO_N_HARMONICS) { + tab_num = BLO_N_HARMONICS - 1; + } + this->table_b = this->tables->h_tables[this->wave][tab_num]; +} + +/* Set frequency for dynamic oscilator, can only used with _hd run calls. + */ + +static inline void blo_hd_set_freq(blo_h_osc *this, const float f) +{ + int tab_num; + const float ff = fabs(f) + 0.00001f; // Prevent div by zero + + this->om.all = f_round(f * this->ph_coef); + tab_num = abs(f_round(this->nyquist / ff - 0.5f)); + if (tab_num >= BLO_N_HARMONICS) { + tab_num = BLO_N_HARMONICS - 1; + } else if (tab_num < 0) { + tab_num = 0; + } + this->table = this->tables->h_tables[this->wave][tab_num]; + this->xfade = this->nyquist / ff - tab_num; + if (this->xfade > 1.0f) { + this->xfade = 1.0f; + } + if (--tab_num < 0) { + tab_num = 0; + } + this->table_b = this->tables->h_tables[this->wave][tab_num]; +} + +/* Run static oscilator, returns amplitude for current phase and advances the + * phase. Uses linear interpoation */ + +static inline float blo_hs_run_lin(blo_h_osc *this) +{ + const float frac = (float)(this->ph.part.fr) * 0.00001525878f; + const int idx = this->ph.part.in; + + this->ph.all += this->om.all; + this->ph.all &= this->ph_mask; + if (this->topbit != (this->ph.all & this->table_size)) { + this->topbit = this->ph.all & this->table_size; + this->table = this->table_b; + } + + return this->table[idx] * (1.0f - frac) + this->table[idx+1] * frac; +} + +/* Run static oscilator, returns amplitude for current phase and advances the + * phase. Uses cubic interpoation */ + +static inline float blo_hs_run_cub(blo_h_osc *this) +{ + const float frac = (float)(this->ph.part.fr) * 0.00001525878f; + const int idx = this->ph.part.in; + float *t = this->table; + + this->ph.all += this->om.all; + this->ph.all &= this->ph_mask; + + if (this->topbit != (this->ph.all & this->table_size)) { + this->topbit = this->ph.all & this->table_size; + this->table = this->table_b; + t = this->table_b; + } + + return cube_interp(frac, t[idx], t[idx+1], t[idx+2], t[idx+3]); +} + +/* Run dynamic oscilator, returns amplitude for current phase and advances the + * phase, ensures harmonics won't suddently pop into existence, takes more + * cycles and has slightly less high frequency partials than the static + * version */ + +static inline float blo_hd_run_lin(blo_h_osc * const this) +{ + float low, high; + const float frac = (float)(this->ph.part.fr) * 0.00001525878f; + const int idx = this->ph.part.in; + + this->ph.all += this->om.all; + this->ph.all &= this->ph_mask; + + low = LIN_INTERP(frac, this->table_b[idx], this->table_b[idx+1]); + high = LIN_INTERP(frac, this->table[idx], this->table[idx+1]); + + return LIN_INTERP(this->xfade, low, high); +} + +/* Run dynamic oscilator, returns amplitude for current phase and advances the + * phase, ensures harmonics won't suddently pop into existence, takes more + * cycles and has slightly less high frequency partials than the static + * version. This one uses cubic interpolation. */ + +static inline float blo_hd_run_cub(blo_h_osc * const this) +{ + float low, high; + const float frac = (float)(this->ph.part.fr) * 0.00001525878f; + const int idx = this->ph.part.in; + const float *tl = this->table_b; + const float *th = this->table; + + + this->ph.all += this->om.all; + this->ph.all &= this->ph_mask; + + low = cube_interp(frac, tl[idx], tl[idx+1], tl[idx+2], tl[idx+3]); + high = cube_interp(frac, th[idx], th[idx+1], th[idx+2], th[idx+3]); + + return LIN_INTERP(this->xfade, low, high); +} diff --git a/plugins/ladspa_effect/swh/util/buffer.h b/plugins/ladspa_effect/swh/util/buffer.h new file mode 100644 index 000000000..eab355e71 --- /dev/null +++ b/plugins/ladspa_effect/swh/util/buffer.h @@ -0,0 +1,17 @@ +#ifndef _BUFFER_H +#define _BUFFER_H + +/* substract buffer b from a, save in c + * + * this could be sped up by vector operations + */ + +static inline void buffer_sub(const float* a, const float *b, const float *c, int cnt) { + int i; + float *h; + h = c; + for(i=0;i +#include + +#include "db.h" + +float db_data[DB_TABLE_SIZE]; +float lin_data[LIN_TABLE_SIZE]; + +void db_init() +{ + unsigned int i; + + for (i=0; i LIN_TABLE_SIZE - 3) { + return lin_data[LIN_TABLE_SIZE - 2]; + } + return cube_interp(ofs, lin_data[base-1], lin_data[base], lin_data[base+1], lin_data[base+2]); +} + +static inline float f_db2lin_lerp(float db) +{ + float scale = (db - DB_MIN) * (float)LIN_TABLE_SIZE / (DB_MAX - DB_MIN); + int base = f_round(scale - 0.5f); + float ofs = scale - base; + + if (base < 1) { + return 0.0f; + } else if (base > LIN_TABLE_SIZE - 3) { + return lin_data[LIN_TABLE_SIZE - 2]; + } + return (1.0f - ofs) * lin_data[base] + ofs * lin_data[base+1]; +} + +static inline float f_lin2db_cube(float lin) +{ + float scale = (lin - LIN_MIN) * (float)DB_TABLE_SIZE / (LIN_MAX - LIN_MIN); + int base = f_round(scale - 0.5f); + float ofs = scale - base; + + if (base < 2) { + return db_data[2] * scale * 0.5f - 23 * (2.0f - scale); + } else if (base > DB_TABLE_SIZE - 3) { + return db_data[DB_TABLE_SIZE - 2]; + } + return cube_interp(ofs, db_data[base-1], db_data[base], db_data[base+1], db_data[base+2]); +} + +static inline float f_lin2db_lerp(float lin) +{ + float scale = (lin - LIN_MIN) * (float)DB_TABLE_SIZE / (LIN_MAX - LIN_MIN); + int base = f_round(scale - 0.5f); + float ofs = scale - base; + + if (base < 2) { + return db_data[2] * scale * 0.5f - 23.0f * (2.0f - scale); + } else if (base > DB_TABLE_SIZE - 2) { + return db_data[DB_TABLE_SIZE - 1]; + } + return (1.0f - ofs) * db_data[base] + ofs * db_data[base+1]; +} + +#endif diff --git a/plugins/ladspa_effect/swh/util/iir.c b/plugins/ladspa_effect/swh/util/iir.c new file mode 100644 index 000000000..6fcc5638e --- /dev/null +++ b/plugins/ladspa_effect/swh/util/iir.c @@ -0,0 +1,236 @@ +/* + * iir.c + * Copyright (C) 2000-2003 Alexander Ehlert + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * A port of my glame lowpass/highpass/bandpass filters due to public demand in #lad + * Try out the original at glame.sourceforge.net ;-) + */ + +#include +#include "../config.h" +#include +#include +#include "iir.h" + +/* To get better filter accuracy I decided to compute the single + * stages of the filter seperatly and apply them one by one + * to the sample data. According to the DSPGUIDE chapter 20 pp339 + * filters are more stable when applied in stages. + * Who doesn't like that can still combine + * all stages to one stage by just convoluting the single stages. + * But in the moment it's up to the user that he knows what he's doing. + * float accuracy can't be enough for certain parameters. + */ + +#define DPRINTF(x) + +/* (hopefully) generic description of an iir filter */ + + + +iir_stage_t *init_iir_stage(int mode, int nstages, int na, int nb){ + iir_stage_t *dum=NULL; + int i; + if ((dum=ALLOCN(1,iir_stage_t))){ + dum->mode=mode; + dum->nstages=0; + dum->availst=nstages; + dum->na=na; + dum->nb=nb; + dum->fc=-1.0; + dum->coeff=(gliirt **)malloc(nstages*sizeof(gliirt *)); + for(i=0;icoeff[i]=(gliirt *)malloc((na+nb)*sizeof(gliirt)); + } + return dum; +} + +/* be sure to combine stages with some na, nb count! */ +void combine_iir_stages(int mode, iir_stage_t* gt, iir_stage_t *first, iir_stage_t *second, int upf, int ups){ + int stages, i, j, cnt; + + if ( (upf==-1) && (ups==-1)) + return; + + stages = first->nstages + second->nstages; + gt->nstages = stages; + + cnt = first->na + first->nb; + + /* copy coefficients */ + if (upf!=-1) + for(i=0; instages; i++) + for(j=0; jcoeff[i][j]=first->coeff[i][j]; + + if (ups!=-1) + for(i=first->nstages; icoeff[i][j]=second->coeff[i-first->nstages][j]; +} + +void free_iir_stage(iir_stage_t *gt){ + int i; + for(i=0;iavailst;i++) + free(gt->coeff[i]); + free(gt->coeff); + free(gt); +} + +/* center: frequency already normalized between 0 and 0.5 of sampling + * bandwidth given in octaves between lower and upper -3dB point + */ + +void calc_2polebandpass(iirf_t* iirf, iir_stage_t* gt, float fc, float bw, long sample_rate) +{ + double omega, alpha, bandwidth, center, gain; + int i; + + if ( (gt->fc==fc) && (gt->bw==bw) ) + return; + + /*reset_iirf_t(iirf, gt, 1);*/ + gt->fc = fc; + gt->bw = bw; + gt->nstages = 1; + + fc = CLAMP(fc, 0.0, (float)sample_rate*0.45f); /* if i go all the way up to 0.5 it doesn't work */ + + center = fc/(float)sample_rate; + /* bandwidth is given in octaves */ + bandwidth = log((fc+bw*0.5)/MAX(fc-bw*0.5,0.01))/log(2.0); + + omega = 2.0*M_PI*center; + alpha = sin(omega)*sinh(log(2.0)/2.0*bandwidth*omega/sin(omega)); + + gt->coeff[0][0] = alpha; + gt->coeff[0][1] = 0.0; + gt->coeff[0][2] = -alpha; + gt->coeff[0][3] = 2.0 * cos(omega); + gt->coeff[0][4] = alpha - 1.0; + gain = 1.0 + alpha; + for(i=0;i<5;i++) + gt->coeff[0][i]/=gain; +} + +/* chebyshev calculates coefficients for a chebyshev filter + * a,b coefficients + * n number of poles(2,4,6,...) + * m 0..lowpass, 1..highpass + * fc cutoff frequency in percent of samplerate + * pr percent ripple in passband (0.5 is optimal) + * + * Code from DSPGUIDE Chapter 20, pp341 + * online version http://www.dspguide.com + */ + +#define chebtype double + +int chebyshev_stage(iir_stage_t *gt, int n){ + chebtype h,rp,ip,es,kx,vx,t,w,m,d,k,gain; + chebtype x[3], y[2], a[3], b[2]; + int res=-1,i; + + if (n>gt->availst) + goto _error; + if (gt->na+gt->nb!=5) + goto _error; + + h=M_PI/((chebtype)gt->np*2.0)+n*M_PI/(chebtype)gt->np; + rp=-cos(h); + ip=sin(h); + + if(gt->ppr>0.0) { + h=100.0/(100.0-gt->ppr); + es=sqrt(h*h-1.0); + h=1.0/es; + vx=1.0/(chebtype)gt->np*log(h+sqrt(h*h+1.0)); + kx=1.0/(chebtype)gt->np*log(h+sqrt(h*h-1.0)); + kx=(exp(kx)+exp(-kx))/2.0; + h=exp(vx); + rp*=(h-1.0/h)*0.5/kx; + ip*=(h+1.0/h)*0.5/kx; + } + + t=2.0*tan(0.5); + w=2.0*M_PI*gt->fc; + m=rp*rp+ip*ip; + d=4.0-4.0*rp*t+m*t*t; + x[0]=t*t/d; + x[1]=2*x[0]; + x[2]=x[0]; + y[0]=(8.0-2.0*m*t*t)/d; + y[1]=(-4.0-4.0*rp*t-m*t*t)/d; + + if (gt->mode==IIR_STAGE_HIGHPASS) + k=-cos(w*0.5+0.5)/cos(w*0.5-0.5); + else + k=sin(0.5-w*0.5)/sin(0.5+w*0.5); + d=1+y[0]*k-y[1]*k*k; + a[0]=(x[0]-x[1]*k+x[2]*k*k)/d; + a[1]=(-2.0*x[0]*k+x[1]+x[1]*k*k-2.0*x[2]*k)/d; + a[2]=(x[0]*k*k-x[1]*k+x[2])/d; + b[0]=(2.0*k+y[0]+y[0]*k*k-2.0*y[1]*k)/d; + b[1]=(-k*k-y[0]*k+y[1])/d; + if(gt->mode==IIR_STAGE_HIGHPASS){ + a[1]=-a[1]; + b[0]=-b[0]; + } + + if(gt->mode==IIR_STAGE_HIGHPASS) + gain=(a[0]-a[1]+a[2])/(1.0+b[0]-b[1]); + else + gain=(a[0]+a[1]+a[2])/(1.0-b[0]-b[1]); + for(i=0;i<3;i++) a[i]/=gain; + + gt->coeff[n][0]=(gliirt)(a[0]); + gt->coeff[n][1]=(gliirt)(a[1]); + gt->coeff[n][2]=(gliirt)(a[2]); + gt->coeff[n][3]=(gliirt)(b[0]); + gt->coeff[n][4]=(gliirt)(b[1]); + + res=0; +_error: + return res; +} + +int chebyshev(iirf_t* iirf, iir_stage_t* gt, int n, int mode, float fc, float pr){ + int i; + + if ( (gt->fc==fc) && (gt->np==n) && (gt->ppr=pr) ) + return -1; + + if (n%2!=0) + return -1; + + if ((mode!=IIR_STAGE_HIGHPASS) && (mode!=IIR_STAGE_LOWPASS)) + return -1; + + fc=CLAMP(fc, 0.0001f, 0.4999f); + + if ((n/2)>gt->nstages) + reset_iirf_t(iirf,gt,n/2); + + gt->ppr=pr; + gt->fc=fc; + gt->np=n; + gt->nstages=n/2; + for(i=0;ima) ? ma : x)) +#ifndef MIN +#define MIN(a, b) ((a)<(b)?(a):(b)) +#endif +#ifndef MAX +#define MAX(a, b) ((a)>(b)?(a):(b)) +#endif +/* alloc zeroed mem, malloc/calloc syntax. */ +#define ALLOC(type) (type *)calloc(1, sizeof(type)) +#define ALLOCN(n, type) (n == 0 ? NULL : (type *)calloc((n), sizeof(type))) + +/* supported filter modes by lib */ +#define IIR_STAGE_LOWPASS 0 +#define IIR_STAGE_HIGHPASS 1 +#define IIR_STAGE_BANDPASS 2 +#define IIR_STAGE_BANDPASS_A 3 + +struct iir_stage { + int np; /* Number of poles */ + int mode; /* Filter mode low/high/bandpass... */ + int availst; /* Number of allocated stages */ + int nstages; /* Number of active filterstages */ + int na; /* number of a coefficients per stage */ + int nb; /* number of b coefficients per stage */ + gliirt fc; /* cutoff/center frequency */ + gliirt bw; /* bandwidth for bandpass */ + gliirt ppr; /* percent of ripple in passband */ + gliirt spr; /* percent of ripple in stopband */ + gliirt **coeff; /* Actual filter coefficients */ +}; + +struct iirf { + gliirt *iring; + gliirt *oring; + int ipos; + int opos; +}; +// allocate ringbuffers for iir calculation +static inline iirf_t* init_iirf_t(iir_stage_t* gt) { + int i; + iirf_t* iirf=ALLOCN(gt->availst,iirf_t); + + for(i=0;iavailst;i++){ + iirf[i].iring=ALLOCN(gt->na,gliirt); + iirf[i].oring=ALLOCN(gt->nb+1,gliirt); + iirf[i].ipos=0; + iirf[i].opos=0; + } + + return iirf; +}; + +static inline void free_iirf_t(iirf_t* iirf, iir_stage_t* gt) { + int i; + for(i=0;iavailst;i++){ + free(iirf[i].iring); + free(iirf[i].oring); + } + free(iirf); +}; + +static inline void reset_iirf_t(iirf_t* iirf, iir_stage_t* gt, int n) { + int i; + for(i=0;ina); + memset(iirf[i].oring, 0, sizeof(gliirt)*(gt->nb+1)); + } +}; + +iir_stage_t *init_iir_stage(int mode, int nstages, int na, int nb); +void combine_iir_stages(int mode, iir_stage_t* gt, iir_stage_t *first, iir_stage_t *second, int upf, int ups); +void free_iir_stage(iir_stage_t *gt); +void calc_2polebandpass(iirf_t* iirf, iir_stage_t* gt, float fc, float bw, long sample_rate); +// for chebyshev we need iir stages with na=3, nb=2 +// na are the forward coefficients +// nb are the recursive coefficients +int chebyshev(iirf_t* iirf, iir_stage_t* gt, int n, int mode, float fc, float pr); + +/* calculate butterworth coefficients + * coefficient calculation taken from http://musicdsp.org/showArchiveComment.php?ArchiveID=38 + * mode = 0 -> lowpass + * mode !=0 -> highpass + * + * f -> cutoff frequency + * r -> resonance + */ + +static inline void butterworth_stage(iir_stage_t *gt, int mode, float f, float r, long sample_rate) +{ + float c, a1, a2, a3, b1, b2; + + /* lowpass coefficients */ + + if (mode==0) { + c = 1.0f / tan(M_PI * f / sample_rate ) ; + + a1 = 1.0f / ( 1.0f + r * c + c * c); + a2 = 2.0f * a1; + a3 = a1; + b1 = -2.0f * ( 1.0f - c*c) * a1; + b2 = -( 1.0f - r * c + c * c) * a1; + } else { + /* highpass coefficients */ + c = tan(M_PI * f / sample_rate ); + + a1 = 1.0f / ( 1.0f + r * c + c * c); + a2 = -2.0f*a1; + a3 = a1; + b1 = -2.0f * ( c*c - 1.0f) * a1; + b2 = -( 1.0f - r * c + c * c) * a1; + } + + gt->fc = f; + gt->nstages = 1; + + gt->coeff[0][0] = a1; + gt->coeff[0][1] = a2; + gt->coeff[0][2] = a3; + gt->coeff[0][3] = b1; + gt->coeff[0][4] = b2; +}; + +/* process function */ +static inline void iir_process_buffer(iirf_t* iirf, iir_stage_t* gt, const float *indata, float *outdata, const long numSampsToProcess, int add) { + unsigned long pos; + int i,nb,nt,j,z,ipos,opos; + + if(gt->nstages==0) { + if (indata==outdata) + return; + memcpy(outdata, indata, numSampsToProcess*sizeof(float)); + return; + } + + nb=gt->nb+1; + nt=gt->na+gt->nb; + + ipos = iirf[0].ipos; + opos = iirf[0].opos; + + if (add==0) + for(pos=0; posnstages;i++){ + if (i>0) + iirf[i].iring[ipos]=iirf[i-1].oring[opos]; + iirf[i].oring[opos]=0.0; + /* y[n]=a0*x[n]+a1*x[n-1]+... */ + z=ipos; + for(j=0;jna;j++){ + if(z==-1) + z=gt->na-1; + iirf[i].oring[opos]+=gt->coeff[i][j]*iirf[i].iring[z--]; + } + /* y[n]=y[n]+b1*y[n-1]+b2*y[n-2]+... */ + z=opos-1; + for(j=gt->na;jnb; + iirf[i].oring[opos]+=gt->coeff[i][j]*iirf[i].oring[z--]; + } + } + /* No matter if we process it in place */ + outdata[pos]=(float)iirf[gt->nstages-1].oring[opos]; + + /* Adjust ringbuffers */ + ipos++; + if (ipos==gt->na) + ipos=0; + opos++; + if (opos==nb) + opos=0; + } + else + for(pos=0; posnstages;i++){ + if (i>0) + iirf[i].iring[ipos]=iirf[i-1].oring[opos]; + iirf[i].oring[opos]=0.0; + /* y[n]=a0*x[n]+a1*x[n-1]+... */ + z=ipos; + for(j=0;jna;j++){ + if(z==-1) + z=gt->na-1; + iirf[i].oring[opos]+=gt->coeff[i][j]*iirf[i].iring[z--]; + } + /* y[n]=y[n]+b1*y[n-1]+b2*y[n-2]+... */ + z=opos-1; + for(j=gt->na;jnb; + iirf[i].oring[opos]+=gt->coeff[i][j]*iirf[i].oring[z--]; + } + } + /* Now it matters if we process it in place */ + outdata[pos]+=(float)iirf[gt->nstages-1].oring[opos]; + + /* Adjust ringbuffers */ + ipos++; + if (ipos==gt->na) + ipos=0; + opos++; + if (opos==nb) + opos=0; + } + + iirf[0].ipos = ipos; + iirf[0].opos = opos; +}; + +/* process function for 3a and 2b coeffs */ +static inline void iir_process_buffer_1s_5(iirf_t* iirf, iir_stage_t* gt, const float *indata, + float *outdata, const long numSampsToProcess, int add) { + unsigned long pos; + + if (add==0) + for(pos=0; poscoeff[0][0]*iirf[0].iring[2] + + gt->coeff[0][1]*iirf[0].iring[1] + + gt->coeff[0][2]*iirf[0].iring[0] + + gt->coeff[0][3]*iirf[0].oring[1] + + gt->coeff[0][4]*iirf[0].oring[0]); + outdata[pos]=(float)iirf[0].oring[2]; + } + else + for(pos=0; poscoeff[0][0]*iirf[0].iring[2] + + gt->coeff[0][1]*iirf[0].iring[1] + + gt->coeff[0][2]*iirf[0].iring[0] + + gt->coeff[0][3]*iirf[0].oring[1] + + gt->coeff[0][4]*iirf[0].oring[0]); + } +}; + +/* process function */ +static inline void iir_process_buffer_ns_5(iirf_t* iirf, iir_stage_t* gt, const float *indata, float *outdata, const long numSampsToProcess, int add) { + unsigned long pos; + int i; + + if (add==0) + for(pos=0; poscoeff[0][0]*iirf[0].iring[2] + + gt->coeff[0][1]*iirf[0].iring[1] + + gt->coeff[0][2]*iirf[0].iring[0] + + gt->coeff[0][3]*iirf[0].oring[1] + + gt->coeff[0][4]*iirf[0].oring[0]); + + for(i=1;instages;i++){ + iirf[i].iring[0]=iirf[i].iring[1]; + iirf[i].iring[1]=iirf[i].iring[2]; + iirf[i].iring[2]=iirf[i-1].oring[2]; + + iirf[i].oring[0]=iirf[i].oring[1]; + iirf[i].oring[1]=iirf[i].oring[2]; + /* y[n]=a0*x[n]+a1*x[n-1]+... */ + /* y[n]=y[n]+b1*y[n-1]+b2*y[n-2]+... */ + iirf[i].oring[2] = + flush_to_zero(gt->coeff[i][0]*iirf[i].iring[2] + + gt->coeff[i][1]*iirf[i].iring[1] + + gt->coeff[i][2]*iirf[i].iring[0] + + gt->coeff[i][3]*iirf[i].oring[1] + + gt->coeff[i][4]*iirf[i].oring[0]); + } + /* No matter if we process it in place */ + outdata[pos]=(float)iirf[gt->nstages-1].oring[2]; + } + else + for(pos=0; poscoeff[0][0]*iirf[0].iring[2] + + gt->coeff[0][1]*iirf[0].iring[1] + + gt->coeff[0][2]*iirf[0].iring[0] + + gt->coeff[0][3]*iirf[0].oring[1] + + gt->coeff[0][4]*iirf[0].oring[0]); + + for(i=1;instages;i++){ + iirf[i].iring[0]=iirf[i].iring[1]; + iirf[i].iring[1]=iirf[i].iring[2]; + iirf[i].iring[2]=iirf[i-1].oring[2]; + + iirf[i].oring[0]=iirf[i].oring[1]; + iirf[i].oring[1]=iirf[i].oring[2]; + /* y[n]=a0*x[n]+a1*x[n-1]+... */ + /* y[n]=y[n]+b1*y[n-1]+b2*y[n-2]+... */ + iirf[i].oring[2] = flush_to_zero( + gt->coeff[i][0]*iirf[i].iring[2] + + gt->coeff[i][1]*iirf[i].iring[1] + + gt->coeff[i][2]*iirf[i].iring[0] + + gt->coeff[i][3]*iirf[i].oring[1] + + gt->coeff[i][4]*iirf[i].oring[0]); + } + /* No matter if we process it in place */ + outdata[pos]+=(float)iirf[gt->nstages-1].oring[2]; + } +}; + +#endif diff --git a/plugins/ladspa_effect/swh/util/ls_filter.h b/plugins/ladspa_effect/swh/util/ls_filter.h new file mode 100644 index 000000000..3268d7cf4 --- /dev/null +++ b/plugins/ladspa_effect/swh/util/ls_filter.h @@ -0,0 +1,64 @@ +#ifndef LS_FILTER_H +#define LS_FILTER_H + +#include + +#define FILT_MIDI_2_FREQ(m) (m * 80.0f + 10.0f) +#define FILT_MIDI_2_RESO(m) (m * 0.00787f) + +#define LSF_BW 0.9 +#define LSF_FB 0.9f + +typedef struct { + biquad filt; + biquad bp_filt; + bq_t scale; + bq_t resonance; +} ls_filt; + +typedef enum { + LS_FILT_TYPE_LP = 0, + LS_FILT_TYPE_BP = 1, + LS_FILT_TYPE_HP = 2 +} ls_filt_type; + +static inline void ls_filt_init(ls_filt *f) +{ + biquad_init(&(f->filt)); + biquad_init(&(f->bp_filt)); +} + +static inline void ls_filt_setup(ls_filt *f, ls_filt_type t, bq_t cutoff, + bq_t resonance, bq_t fs) +{ + bp_set_params(&(f->bp_filt), cutoff, 0.7, fs); + + switch(t) { + case LS_FILT_TYPE_LP: + lp_set_params(&(f->filt), cutoff, 1.0 - resonance * LSF_BW, fs); + break; + case LS_FILT_TYPE_BP: + bp_set_params(&(f->filt), cutoff, 1.0 - resonance * LSF_BW, fs); + break; + case LS_FILT_TYPE_HP: + hp_set_params(&(f->filt), cutoff, 1.0 - resonance * LSF_BW, fs); + break; + default: + /* oops, its not a known type - should really happen, but + lets make the output silent just in case */ + lp_set_params(&(f->filt), 1.0, 1.0, fs); + break; + } + + f->scale = 1.0f - resonance * 0.7f; + f->resonance = resonance; +} + +static inline bq_t ls_filt_run(ls_filt *f, bq_t in) +{ + return biquad_run(&(f->filt), in) * f->scale + + biquad_run_fb(&(f->bp_filt), in, f->resonance * LSF_FB) * + f->resonance; +} + +#endif diff --git a/plugins/ladspa_effect/swh/util/pitchscale.c b/plugins/ladspa_effect/swh/util/pitchscale.c new file mode 100644 index 000000000..7032e86b4 --- /dev/null +++ b/plugins/ladspa_effect/swh/util/pitchscale.c @@ -0,0 +1,335 @@ +/**************************************************************************** +* +* NAME: smsPitchScale.cp +* VERSION: 1.01 +* HOME URL: http://www.dspdimension.com +* KNOWN BUGS: none +* +* SYNOPSIS: Routine for doing pitch scaling while maintaining +* duration using the Short Time Fourier Transform. +* +* DESCRIPTION: The routine takes a pitchScale factor value which is between 0.5 +* (one octave down) and 2. (one octave up). A value of exactly 1 does not change +* the pitch. numSampsToProcess tells the routine how many samples in indata[0... +* numSampsToProcess-1] should be pitch scaled and moved to outdata[0 ... +* numSampsToProcess-1]. The two buffers can be identical (ie. it can process the +* data in-place). fftFrameLength defines the FFT frame size used for the +* processing. Typical values are 1024, 2048 and 4096. It may be any value <= +* MAX_FFT_FRAME_LENGTH but it MUST be a power of 2. osamp is the STFT +* oversampling factor which also determines the overlap between adjacent STFT +* frames. It should at least be 4 for moderate scaling ratios. A value of 32 is +* recommended for best quality. sampleRate takes the sample rate for the signal +* in unit Hz, ie. 44100 for 44.1 kHz audio. The data passed to the routine in +* indata[] should be in the range [-1.0, 1.0), which is also the output range +* for the data. +* +* COPYRIGHT 1999 Stephan M. Sprenger +* +* The Wide Open License (WOL) +* +* Permission to use, copy, modify, distribute and sell this software and its +* documentation for any purpose is hereby granted without fee, provided that +* the above copyright notice and this license appear in all source copies. +* THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY OF +* ANY KIND. See http://www.dspguru.com/wol.htm for more information. +* +*****************************************************************************/ + +#include +#include "../config.h" +#include + +#include "pitchscale.h" + +static float ps_in[MAX_FRAME_LENGTH*2], ps_out[MAX_FRAME_LENGTH*2]; +static fft_plan aplan = NULL, splan = NULL; + +void pitch_scale(sbuffers *buffers, const double pitchScale, const long + fftFrameLength, const long osamp, const long numSampsToProcess, + const double sampleRate, const float *indata, float *outdata, + const int adding, const float gain) { +/* + Routine smsPitchScale(). See top of file for explanation Purpose: doing + pitch scaling while maintaining duration using the Short Time Fourier + Transform. Author: (c)1999 Stephan M. Sprenger +*/ + double magn, phase, tmp; + double freqPerBin, expct, fadeZoneLen; + long i,k, qpd, index, inFifoLatency, stepSize, + fftFrameSize2; + double phaseArr[MAX_FRAME_LENGTH]; + float ri[16]; + + float *gInFIFO = buffers->gInFIFO; + float *gOutFIFO = buffers->gOutFIFO; + float *gLastPhase = buffers->gLastPhase; + float *gSumPhase = buffers->gSumPhase; + float *gOutputAccum = buffers->gOutputAccum; + float *gAnaFreq = buffers->gAnaFreq; + float *gAnaMagn = buffers->gAnaMagn; + float *gSynFreq = buffers->gSynFreq; + float *gSynMagn = buffers->gSynMagn; + float *gWindow = buffers->gWindow; + long gRover = buffers->gRover; + + if (aplan == NULL) { + int i; + + for (i=0; i= fftFrameLength) { + gRover = inFifoLatency; + + /* do windowing and store */ + for (k = 0; k < fftFrameLength; k++) { + ps_in[k] = gInFIFO[k] * gWindow[k]; + } + + /* As long as we have not yet collected enough data just read in */ + + /* ***************** ANALYSIS ******************* */ + /* do transform */ +#ifdef FFTW3 + fftwf_execute(aplan); +#else + rfftw_one(aplan, ps_in, ps_out); +#endif + + /* this is the analysis step */ + + /* Hard math first, we can 3dnow this */ + for (k = 1; k <= fftFrameSize2; k+=8) { + float *mb = &gAnaMagn[k]; + + ri[0] = ps_out[k]; + ri[2] = ps_out[k+1]; + ri[4] = ps_out[k+2]; + ri[6] = ps_out[k+3]; + ri[8] = ps_out[k+4]; + ri[10] = ps_out[k+5]; + ri[12] = ps_out[k+6]; + ri[14] = ps_out[k+7]; + + ri[1] = ps_out[fftFrameLength - k]; + ri[3] = ps_out[fftFrameLength - (k + 1)]; + ri[5] = ps_out[fftFrameLength - (k + 2)]; + ri[7] = ps_out[fftFrameLength - (k + 3)]; + ri[9] = ps_out[fftFrameLength - (k + 4)]; + ri[11] = ps_out[fftFrameLength - (k + 5)]; + ri[13] = ps_out[fftFrameLength - (k + 6)]; + ri[15] = ps_out[fftFrameLength - (k + 7)]; + + /* compute magnitude and phase. */ +#ifdef ACCEL_3DNOW +#warning Using processor specific 3DNow! accelerations + __asm__ __volatile__ ( + " \n\ + femms \n\ + movq (%%eax), %%mm0 \n\ + movq 8(%%eax), %%mm1 \n\ + movq 16(%%eax), %%mm2 \n\ + movq 24(%%eax), %%mm3 \n\ + movq 32(%%eax), %%mm4 \n\ + movq 40(%%eax), %%mm5 \n\ + movq 48(%%eax), %%mm6 \n\ + movq 56(%%eax), %%mm7 \n\ + # do the squares and add \n\ + pfmul %%mm0, %%mm0 \n\ + pfacc %%mm0, %%mm0 \n\ + pfmul %%mm1, %%mm1 \n\ + pfacc %%mm1, %%mm1 \n\ + pfmul %%mm2, %%mm2 \n\ + pfacc %%mm2, %%mm2 \n\ + pfmul %%mm3, %%mm3 \n\ + pfacc %%mm3, %%mm3 \n\ + pfmul %%mm4, %%mm4 \n\ + pfacc %%mm4, %%mm4 \n\ + pfmul %%mm5, %%mm5 \n\ + pfacc %%mm5, %%mm5 \n\ + pfmul %%mm6, %%mm6 \n\ + pfacc %%mm6, %%mm6 \n\ + pfmul %%mm7, %%mm7 \n\ + pfacc %%mm7, %%mm7 \n\ + # Recip square roots. \n\ + pfrsqrt %%mm0, %%mm0 \n\ + pfrsqrt %%mm1, %%mm1 \n\ + pfrsqrt %%mm2, %%mm2 \n\ + pfrsqrt %%mm3, %%mm3 \n\ + pfrsqrt %%mm4, %%mm4 \n\ + pfrsqrt %%mm5, %%mm5 \n\ + pfrsqrt %%mm6, %%mm6 \n\ + pfrsqrt %%mm7, %%mm7 \n\ + pfrcp %%mm0, %%mm0 \n\ + pfrcp %%mm1, %%mm1 \n\ + pfrcp %%mm2, %%mm2 \n\ + pfrcp %%mm3, %%mm3 \n\ + pfrcp %%mm4, %%mm4 \n\ + pfrcp %%mm5, %%mm5 \n\ + pfrcp %%mm6, %%mm6 \n\ + pfrcp %%mm7, %%mm7 \n\ + # ship em out \n\ + movd %%mm0, (%%edx) \n\ + movd %%mm1, 4(%%edx) \n\ + movd %%mm2, 8(%%edx) \n\ + movd %%mm3, 12(%%edx) \n\ + movd %%mm4, 16(%%edx) \n\ + movd %%mm5, 20(%%edx) \n\ + movd %%mm6, 24(%%edx) \n\ + movd %%mm7, 28(%%edx) \n\ + femms \n\ + " + : + : "a" (ri), "d" (mb) + : "memory"); + + +#else + mb[0] = sqrt(ri[0]*ri[0]+ ri[1]*ri[1]); + mb[1] = sqrt(ri[2]*ri[2] + ri[3]*ri[3]); + mb[2] = sqrt(ri[4]*ri[4] + ri[5]*ri[5]); + mb[3] = sqrt(ri[6]*ri[6] + ri[7]*ri[7]); +#endif + + phaseArr[k] = atan2(ri[1], ri[0]); + phaseArr[k+1] = atan2(ri[3], ri[2]); + phaseArr[k+2] = atan2(ri[5], ri[4]); + phaseArr[k+3] = atan2(ri[7], ri[6]); + phaseArr[k+4] = atan2(ri[9], ri[8]); + phaseArr[k+5] = atan2(ri[11], ri[10]); + phaseArr[k+6] = atan2(ri[13], ri[12]); + phaseArr[k+7] = atan2(ri[15], ri[14]); + } + + for (k = 1; k <= fftFrameSize2; k++) { + + /* compute phase difference */ + tmp = phaseArr[k] - gLastPhase[k]; + gLastPhase[k] = phaseArr[k]; + + /* subtract expected phase difference */ + tmp -= (double)k*expct; + + /* map delta phase into +/- Pi interval */ + qpd = tmp/M_PI; + if (qpd >= 0) qpd += qpd&1; + else qpd -= qpd&1; + tmp -= M_PI*(double)qpd; + + /* get deviation from bin frequency from the +/- Pi interval */ + tmp = osamp*tmp/(2.0f*M_PI); + + /* compute the k-th partials' true frequency */ + tmp = (double)k*freqPerBin + tmp*freqPerBin; + + /* store magnitude and true frequency in analysis arrays */ + gAnaFreq[k] = tmp; + + } + + /* ***************** PROCESSING ******************* */ + /* this does the actual pitch scaling */ + memset(gSynMagn, 0, fftFrameLength*sizeof(float)); + memset(gSynFreq, 0, fftFrameLength*sizeof(float)); + for (k = 0; k <= fftFrameSize2; k++) { + index = k/pitchScale; + if (index <= fftFrameSize2) { + /* new bin overrides existing if magnitude is higher */ + if (gAnaMagn[index] > gSynMagn[k]) { + gSynMagn[k] = gAnaMagn[index]; + gSynFreq[k] = gAnaFreq[index] * pitchScale; + } + + /* fill empty bins with nearest neighbour */ + + if ((gSynFreq[k] == 0.) && (k > 0)) { + gSynFreq[k] = gSynFreq[k-1]; + gSynMagn[k] = gSynMagn[k-1]; + } + } + } + + + /* ***************** SYNTHESIS ******************* */ + /* this is the synthesis step */ + for (k = 1; k <= fftFrameSize2; k++) { + + /* get magnitude and true frequency from synthesis arrays */ + magn = gSynMagn[k]; + tmp = gSynFreq[k]; + + /* subtract bin mid frequency */ + tmp -= (double)k*freqPerBin; + + /* get bin deviation from freq deviation */ + tmp /= freqPerBin; + + /* take osamp into account */ + tmp = 2.*M_PI*tmp/osamp; + + /* add the overlap phase advance back in */ + tmp += (double)k*expct; + + /* accumulate delta phase to get bin phase */ + gSumPhase[k] += tmp; + phase = gSumPhase[k]; + + ps_in[k] = magn*cosf(phase); + ps_in[fftFrameLength - k] = magn*sinf(phase); + } + + /* do inverse transform */ +#ifdef FFTW3 + fftwf_execute(splan); +#else + rfftw_one(splan, ps_in, ps_out); +#endif + + /* do windowing and add to output accumulator */ + for(k=0; k < fftFrameLength; k++) { + gOutputAccum[k] += 2.0f*gWindow[k]*ps_out[k]/(fftFrameSize2*osamp); + } + for (k = 0; k < stepSize; k++) gOutFIFO[k] = gOutputAccum[k]; + + /* shift accumulator */ + memmove(gOutputAccum, gOutputAccum+stepSize, fftFrameLength*sizeof(float)); + + /* move input FIFO */ + for (k = 0; k < inFifoLatency; k++) gInFIFO[k] = gInFIFO[k+stepSize]; + } + } + + buffers->gRover = gRover; +} diff --git a/plugins/ladspa_effect/swh/util/pitchscale.h b/plugins/ladspa_effect/swh/util/pitchscale.h new file mode 100644 index 000000000..7ca6631fa --- /dev/null +++ b/plugins/ladspa_effect/swh/util/pitchscale.h @@ -0,0 +1,49 @@ +#ifndef PITCHSCALE_H +#define PITCHSCALE_H + +#include + +#ifdef FFTW3 + +#include + +typedef fftwf_plan fft_plan; +typedef float fftw_real; + +#else + +#ifdef EXPLICIT_S +#include +#else +#include +#endif //EXPLICIT_S + +typedef rfftw_plan fft_plan; + +#endif //FFTW3 + +typedef struct { + float *gInFIFO; + float *gOutFIFO; + float *gLastPhase; + float *gSumPhase; + float *gOutputAccum; + float *gAnaFreq; + float *gAnaMagn; + float *gSynFreq; + float *gSynMagn; + float *gWindow; + long gRover; +} sbuffers; + +#define MAX_FRAME_LENGTH 4096 + +#define true 1 +#define false 0 + +void pitch_scale(sbuffers *buffers, const double pitchScale, const long + fftFrameLength, const long osamp, const long numSampsToProcess, + const double sampleRate, const float *indata, float *outdata, + const int adding, const float gain); + +#endif diff --git a/plugins/ladspa_effect/swh/util/rms.c b/plugins/ladspa_effect/swh/util/rms.c new file mode 100644 index 000000000..cca1ce665 --- /dev/null +++ b/plugins/ladspa_effect/swh/util/rms.c @@ -0,0 +1,25 @@ +#include +#include "rms.h" + +rms_env *rms_env_new() +{ + rms_env *new = (rms_env *)calloc(1, sizeof(rms_env)); + + return new; +} + +void rms_env_reset(rms_env *r) +{ + unsigned int i; + + for (i=0; ibuffer[i] = 0.0f; + } + r->pos = 0; + r->sum = 0.0f; +} + +void rms_env_free(rms_env *r) +{ + free(r); +} diff --git a/plugins/ladspa_effect/swh/util/rms.h b/plugins/ladspa_effect/swh/util/rms.h new file mode 100644 index 000000000..efaee6745 --- /dev/null +++ b/plugins/ladspa_effect/swh/util/rms.h @@ -0,0 +1,35 @@ +#ifndef _RMS_H +#define _RMS_H + +#include + +#define RMS_BUF_SIZE 64 + +typedef struct { + float buffer[RMS_BUF_SIZE]; + unsigned int pos; + float sum; +} rms_env; + +rms_env *rms_env_new(); + +static inline float rms_env_process(rms_env *r, float x); + +void rms_env_reset(rms_env *r); + +void rms_env_free(rms_env *r); + +inline static float rms_env_process(rms_env *r, const float x) +{ + r->sum -= r->buffer[r->pos]; + r->sum += x; + if (r->sum < 1.0e-6) { + r->sum = 0.0f; + } + r->buffer[r->pos] = x; + r->pos = (r->pos + 1) & (RMS_BUF_SIZE - 1); + + return sqrt(r->sum / (float)RMS_BUF_SIZE); +} + +#endif diff --git a/plugins/ladspa_effect/swh/util/waveguide_nl.h b/plugins/ladspa_effect/swh/util/waveguide_nl.h new file mode 100644 index 000000000..64a322278 --- /dev/null +++ b/plugins/ladspa_effect/swh/util/waveguide_nl.h @@ -0,0 +1,148 @@ +#ifndef WAVEGUIDE_NL_H +#define WAVEGUIDE_NL_H + +#include +#include + +typedef struct { + int size; + float *buffer[2]; + int ptr; + int delay; + float fc; + float lp[2]; + float a1a; + float a1b; + float zm1[2]; +} waveguide_nl; + +waveguide_nl *waveguide_nl_new(int size, float fc, float da, float db) +{ + waveguide_nl *wg = malloc(sizeof(waveguide_nl)); + wg->size = size; + wg->delay = size; + wg->buffer[0] = calloc(size, sizeof(float)); + wg->buffer[1] = calloc(size, sizeof(float)); + wg->ptr = 0; + wg->fc = fc; + wg->lp[0] = 0.0f; + wg->lp[1] = 0.0f; + wg->zm1[0] = 0.0f; + wg->zm1[1] = 0.0f; + wg->a1a = (1.0f - da) / (1.0f + da); + wg->a1b = (1.0f - db) / (1.0f + db); + + return wg; +} + +inline void waveguide_nl_reset(waveguide_nl *wg) +{ + memset(wg->buffer[0], 0, wg->size * sizeof(float)); + memset(wg->buffer[1], 0, wg->size * sizeof(float)); + wg->lp[0] = 0.0f; + wg->lp[1] = 0.0f; + wg->zm1[0] = 0.0f; + wg->zm1[1] = 0.0f; +} + +inline void waveguide_nl_free(waveguide_nl *wg) +{ + if (!wg) { + return; + } + free(wg->buffer[0]); + free(wg->buffer[1]); + free(wg); +} + +inline void waveguide_nl_set_delay(waveguide_nl *wg, int delay) +{ + if (delay > wg->size) { + wg->delay = wg->size; + } else if (delay < 1) { + wg->delay = 1; + } else { + wg->delay = delay; + } +} + +inline void waveguide_nl_set_fc(waveguide_nl *wg, float fc) +{ + wg->fc = fc; +} + +inline void waveguide_nl_set_ap(waveguide_nl *wg, float da, float db) +{ + wg->a1a = (1.0f - da) / (1.0f + da); + wg->a1b = (1.0f - db) / (1.0f + db); +} + +inline void waveguide_nl_process_lin(waveguide_nl *wg, float in0, float in1, float *out0, float *out1) +{ + float tmp; + + *out0 = wg->buffer[0][(wg->ptr + wg->delay) % wg->size]; + *out0 = wg->lp[0] * (wg->fc - 1.0f) + wg->fc * *out0; + wg->lp[0] = *out0; + tmp = *out0 * -(wg->a1a) + wg->zm1[0]; + wg->zm1[0] = tmp * wg->a1a + *out0; + *out0 = tmp; + + *out1 = wg->buffer[1][(wg->ptr + wg->delay) % wg->size]; + *out1 = wg->lp[1] * (wg->fc - 1.0f) + wg->fc * *out1; + wg->lp[1] = *out1; + tmp = *out1 * -(wg->a1a) + wg->zm1[1]; + wg->zm1[1] = tmp * wg->a1a + *out1; + *out1 = tmp; + + wg->buffer[0][wg->ptr] = in0; + wg->buffer[1][wg->ptr] = in1; + wg->ptr--; + if (wg->ptr < 0) { + wg->ptr += wg->size; + } +} + +inline void waveguide_nl_process(waveguide_nl *wg, float in0, float in1, float *out0, float *out1) +{ + float tmp; + float a1; + float b; + + *out0 = wg->buffer[0][(wg->ptr + wg->delay) % wg->size]; + *out0 = wg->lp[0] * (wg->fc - 1.0f) + wg->fc * *out0; + wg->lp[0] = *out0; + b = (*out0 + 1.0) * 6.0f; + if (b > 1.0f) { + b = 1.0f; + } else if (b < 0.0f) { + b = 0.0f; + } + a1 = b * wg->a1a + (1.0f - b) * wg->a1b; + tmp = *out0 * -a1 + wg->zm1[0]; + wg->zm1[0] = tmp * a1 + *out0; + *out0 = tmp; + + *out1 = wg->buffer[1][(wg->ptr + wg->delay) % wg->size]; + *out1 = wg->lp[1] * (wg->fc - 1.0f) + wg->fc * *out1; + wg->lp[1] = *out1; + b = (*out1 + 1.0) * 6.0f; + if (b > 1.0f) { + b = 1.0f; + } else if (b < 0.0f) { + b = 0.0f; + } + a1 = b * wg->a1a + (1.0f - b) * wg->a1b; + tmp = *out1 * -a1 + wg->zm1[1]; + wg->zm1[1] = tmp * a1 + *out1; + *out1 = tmp; + + wg->buffer[0][wg->ptr] = in0; + wg->buffer[1][wg->ptr] = in1; + wg->ptr--; + if (wg->ptr < 0) { + wg->ptr += wg->size; + } +} + +#endif diff --git a/plugins/ladspa_effect/swh/valve_1209.c b/plugins/ladspa_effect/swh/valve_1209.c new file mode 100644 index 000000000..8e4dd6f13 --- /dev/null +++ b/plugins/ladspa_effect/swh/valve_1209.c @@ -0,0 +1,343 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + +#line 10 "valve_1209.xml" + +#include "ladspa-util.h" + +#define VALVE_Q_P 0 +#define VALVE_DIST_P 1 +#define VALVE_INPUT 2 +#define VALVE_OUTPUT 3 + +static LADSPA_Descriptor *valveDescriptor = NULL; + +typedef struct { + LADSPA_Data *q_p; + LADSPA_Data *dist_p; + LADSPA_Data *input; + LADSPA_Data *output; + LADSPA_Data itm1; + LADSPA_Data otm1; + LADSPA_Data run_adding_gain; +} Valve; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return valveDescriptor; + default: + return NULL; + } +} + +static void activateValve(LADSPA_Handle instance) { + Valve *plugin_data = (Valve *)instance; + LADSPA_Data itm1 = plugin_data->itm1; + LADSPA_Data otm1 = plugin_data->otm1; +#line 21 "valve_1209.xml" + itm1 = 0.0f; + otm1 = 0.0f; + plugin_data->itm1 = itm1; + plugin_data->otm1 = otm1; + +} + +static void cleanupValve(LADSPA_Handle instance) { + free(instance); +} + +static void connectPortValve( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + Valve *plugin; + + plugin = (Valve *)instance; + switch (port) { + case VALVE_Q_P: + plugin->q_p = data; + break; + case VALVE_DIST_P: + plugin->dist_p = data; + break; + case VALVE_INPUT: + plugin->input = data; + break; + case VALVE_OUTPUT: + plugin->output = data; + break; + } +} + +static LADSPA_Handle instantiateValve( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + Valve *plugin_data = (Valve *)malloc(sizeof(Valve)); + plugin_data->run_adding_gain = 1.0f; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runValve(LADSPA_Handle instance, unsigned long sample_count) { + Valve *plugin_data = (Valve *)instance; + + /* Distortion level (float value) */ + const LADSPA_Data q_p = *(plugin_data->q_p); + + /* Distortion character (float value) */ + const LADSPA_Data dist_p = *(plugin_data->dist_p); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + LADSPA_Data itm1 = plugin_data->itm1; + LADSPA_Data otm1 = plugin_data->otm1; + +#line 26 "valve_1209.xml" + unsigned long pos; + LADSPA_Data fx; + + const float q = q_p - 0.999f; + const float dist = dist_p * 40.0f + 0.1f; + + if (q == 0.0f) { + for (pos = 0; pos < sample_count; pos++) { + if (input[pos] == q) { + fx = 1.0f / dist; + } else { + fx = input[pos] / (1.0f - f_exp(-dist * input[pos])); + } + otm1 = 0.999f * otm1 + fx - itm1; + round_to_zero(&otm1); + itm1 = fx; + buffer_write(output[pos], otm1); + } + } else { + for (pos = 0; pos < sample_count; pos++) { + if (input[pos] == q) { + fx = 1.0f / dist + q / (1.0f - f_exp(dist * q)); + } else { + fx = (input[pos] - q) / + (1.0f - f_exp(-dist * (input[pos] - q))) + + q / (1.0f - f_exp(dist * q)); + } + otm1 = 0.999f * otm1 + fx - itm1; + round_to_zero(&otm1); + itm1 = fx; + buffer_write(output[pos], otm1); + } + } + + plugin_data->itm1 = itm1; + plugin_data->otm1 = otm1; +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainValve(LADSPA_Handle instance, LADSPA_Data gain) { + ((Valve *)instance)->run_adding_gain = gain; +} + +static void runAddingValve(LADSPA_Handle instance, unsigned long sample_count) { + Valve *plugin_data = (Valve *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Distortion level (float value) */ + const LADSPA_Data q_p = *(plugin_data->q_p); + + /* Distortion character (float value) */ + const LADSPA_Data dist_p = *(plugin_data->dist_p); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + LADSPA_Data itm1 = plugin_data->itm1; + LADSPA_Data otm1 = plugin_data->otm1; + +#line 26 "valve_1209.xml" + unsigned long pos; + LADSPA_Data fx; + + const float q = q_p - 0.999f; + const float dist = dist_p * 40.0f + 0.1f; + + if (q == 0.0f) { + for (pos = 0; pos < sample_count; pos++) { + if (input[pos] == q) { + fx = 1.0f / dist; + } else { + fx = input[pos] / (1.0f - f_exp(-dist * input[pos])); + } + otm1 = 0.999f * otm1 + fx - itm1; + round_to_zero(&otm1); + itm1 = fx; + buffer_write(output[pos], otm1); + } + } else { + for (pos = 0; pos < sample_count; pos++) { + if (input[pos] == q) { + fx = 1.0f / dist + q / (1.0f - f_exp(dist * q)); + } else { + fx = (input[pos] - q) / + (1.0f - f_exp(-dist * (input[pos] - q))) + + q / (1.0f - f_exp(dist * q)); + } + otm1 = 0.999f * otm1 + fx - itm1; + round_to_zero(&otm1); + itm1 = fx; + buffer_write(output[pos], otm1); + } + } + + plugin_data->itm1 = itm1; + plugin_data->otm1 = otm1; +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + valveDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (valveDescriptor) { + valveDescriptor->UniqueID = 1209; + valveDescriptor->Label = "valve"; + valveDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + valveDescriptor->Name = + D_("Valve saturation"); + valveDescriptor->Maker = + "Steve Harris "; + valveDescriptor->Copyright = + "GPL"; + valveDescriptor->PortCount = 4; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(4, + sizeof(LADSPA_PortDescriptor)); + valveDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(4, + sizeof(LADSPA_PortRangeHint)); + valveDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(4, sizeof(char*)); + valveDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Distortion level */ + port_descriptors[VALVE_Q_P] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[VALVE_Q_P] = + D_("Distortion level"); + port_range_hints[VALVE_Q_P].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[VALVE_Q_P].LowerBound = 0; + port_range_hints[VALVE_Q_P].UpperBound = 1; + + /* Parameters for Distortion character */ + port_descriptors[VALVE_DIST_P] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[VALVE_DIST_P] = + D_("Distortion character"); + port_range_hints[VALVE_DIST_P].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[VALVE_DIST_P].LowerBound = 0; + port_range_hints[VALVE_DIST_P].UpperBound = 1; + + /* Parameters for Input */ + port_descriptors[VALVE_INPUT] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[VALVE_INPUT] = + D_("Input"); + port_range_hints[VALVE_INPUT].HintDescriptor = 0; + + /* Parameters for Output */ + port_descriptors[VALVE_OUTPUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[VALVE_OUTPUT] = + D_("Output"); + port_range_hints[VALVE_OUTPUT].HintDescriptor = 0; + + valveDescriptor->activate = activateValve; + valveDescriptor->cleanup = cleanupValve; + valveDescriptor->connect_port = connectPortValve; + valveDescriptor->deactivate = NULL; + valveDescriptor->instantiate = instantiateValve; + valveDescriptor->run = runValve; + valveDescriptor->run_adding = runAddingValve; + valveDescriptor->set_run_adding_gain = setRunAddingGainValve; + } +} + +void _fini() { + if (valveDescriptor) { + free((LADSPA_PortDescriptor *)valveDescriptor->PortDescriptors); + free((char **)valveDescriptor->PortNames); + free((LADSPA_PortRangeHint *)valveDescriptor->PortRangeHints); + free(valveDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/valve_rect_1405.c b/plugins/ladspa_effect/swh/valve_rect_1405.c new file mode 100644 index 000000000..3c971118f --- /dev/null +++ b/plugins/ladspa_effect/swh/valve_rect_1405.c @@ -0,0 +1,412 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + +#line 10 "valve_rect_1405.xml" + +#include "ladspa-util.h" + +#define VALVERECT_SAG 0 +#define VALVERECT_DIST_P 1 +#define VALVERECT_INPUT 2 +#define VALVERECT_OUTPUT 3 + +static LADSPA_Descriptor *valveRectDescriptor = NULL; + +typedef struct { + LADSPA_Data *sag; + LADSPA_Data *dist_p; + LADSPA_Data *input; + LADSPA_Data *output; + unsigned int apos; + float * avg; + int avg_size; + float avg_sizer; + float avgs; + float lp1tm1; + float lp2tm1; + LADSPA_Data run_adding_gain; +} ValveRect; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return valveRectDescriptor; + default: + return NULL; + } +} + +static void activateValveRect(LADSPA_Handle instance) { + ValveRect *plugin_data = (ValveRect *)instance; + unsigned int apos = plugin_data->apos; + float *avg = plugin_data->avg; + int avg_size = plugin_data->avg_size; + float avg_sizer = plugin_data->avg_sizer; + float avgs = plugin_data->avgs; + float lp1tm1 = plugin_data->lp1tm1; + float lp2tm1 = plugin_data->lp2tm1; +#line 36 "valve_rect_1405.xml" + memset(avg, 0, avg_size * sizeof(float)); + avgs = 0.0f; + apos = 0; + lp1tm1 = 0.0f; + lp2tm1 = 0.0f; + plugin_data->apos = apos; + plugin_data->avg = avg; + plugin_data->avg_size = avg_size; + plugin_data->avg_sizer = avg_sizer; + plugin_data->avgs = avgs; + plugin_data->lp1tm1 = lp1tm1; + plugin_data->lp2tm1 = lp2tm1; + +} + +static void cleanupValveRect(LADSPA_Handle instance) { +#line 44 "valve_rect_1405.xml" + ValveRect *plugin_data = (ValveRect *)instance; + free(plugin_data->avg); + free(instance); +} + +static void connectPortValveRect( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + ValveRect *plugin; + + plugin = (ValveRect *)instance; + switch (port) { + case VALVERECT_SAG: + plugin->sag = data; + break; + case VALVERECT_DIST_P: + plugin->dist_p = data; + break; + case VALVERECT_INPUT: + plugin->input = data; + break; + case VALVERECT_OUTPUT: + plugin->output = data; + break; + } +} + +static LADSPA_Handle instantiateValveRect( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + ValveRect *plugin_data = (ValveRect *)malloc(sizeof(ValveRect)); + unsigned int apos; + float *avg = NULL; + int avg_size; + float avg_sizer; + float avgs; + float lp1tm1; + float lp2tm1; + +#line 19 "valve_rect_1405.xml" + // Number of samples in averaging buffer + avg_size = s_rate / 9; + // Reciprocal of obove + avg_sizer = 9.0f / (float)s_rate; + // Averaging buffer + avg = calloc(avg_size, sizeof(float)); + // Sum of samples in averaging buffer + avgs = 0.0f; + // Position in averaging buffer + apos = 0; + // Last value in lowpass 1 + lp1tm1 = 0.0f; + // Last value in lowpass 2 + lp2tm1 = 0.0f; + + plugin_data->apos = apos; + plugin_data->avg = avg; + plugin_data->avg_size = avg_size; + plugin_data->avg_sizer = avg_sizer; + plugin_data->avgs = avgs; + plugin_data->lp1tm1 = lp1tm1; + plugin_data->lp2tm1 = lp2tm1; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runValveRect(LADSPA_Handle instance, unsigned long sample_count) { + ValveRect *plugin_data = (ValveRect *)instance; + + /* Sag level (float value) */ + const LADSPA_Data sag = *(plugin_data->sag); + + /* Distortion (float value) */ + const LADSPA_Data dist_p = *(plugin_data->dist_p); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + unsigned int apos = plugin_data->apos; + float * avg = plugin_data->avg; + int avg_size = plugin_data->avg_size; + float avg_sizer = plugin_data->avg_sizer; + float avgs = plugin_data->avgs; + float lp1tm1 = plugin_data->lp1tm1; + float lp2tm1 = plugin_data->lp2tm1; + +#line 48 "valve_rect_1405.xml" + unsigned long pos; + float q, x, fx; + const float dist = dist_p * 40.0f + 0.1f; + + for (pos = 0; pos < sample_count; pos++) { + x = fabs(input[pos]); + if (x > lp1tm1) { + lp1tm1 = x; + } else { + lp1tm1 = 0.9999f * lp1tm1 + 0.0001f * x; + } + + avgs -= avg[apos]; + avgs += lp1tm1; + avg[apos++] = lp1tm1; + apos %= avg_size; + + lp2tm1 = 0.999f * lp2tm1 + avgs*avg_sizer * 0.001f; + q = lp1tm1 * sag - lp2tm1 * 1.02f - 1.0f; + if (q > -0.01f) { + q = -0.01f; + } else if (q < -1.0f) { + q = -1.0f; + } + + if (input[pos] == q) { + fx = 1.0f / dist + q / (1.0f - f_exp(dist * q)); + } else { + fx = (input[pos] - q) / + (1.0f - f_exp(-dist * (input[pos] - q))) + + q / (1.0f - f_exp(dist * q)); + } + + buffer_write(output[pos], fx); + } + + plugin_data->lp1tm1 = lp1tm1; + plugin_data->lp2tm1 = lp2tm1; + plugin_data->avgs = avgs; + plugin_data->apos = apos; +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainValveRect(LADSPA_Handle instance, LADSPA_Data gain) { + ((ValveRect *)instance)->run_adding_gain = gain; +} + +static void runAddingValveRect(LADSPA_Handle instance, unsigned long sample_count) { + ValveRect *plugin_data = (ValveRect *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Sag level (float value) */ + const LADSPA_Data sag = *(plugin_data->sag); + + /* Distortion (float value) */ + const LADSPA_Data dist_p = *(plugin_data->dist_p); + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + unsigned int apos = plugin_data->apos; + float * avg = plugin_data->avg; + int avg_size = plugin_data->avg_size; + float avg_sizer = plugin_data->avg_sizer; + float avgs = plugin_data->avgs; + float lp1tm1 = plugin_data->lp1tm1; + float lp2tm1 = plugin_data->lp2tm1; + +#line 48 "valve_rect_1405.xml" + unsigned long pos; + float q, x, fx; + const float dist = dist_p * 40.0f + 0.1f; + + for (pos = 0; pos < sample_count; pos++) { + x = fabs(input[pos]); + if (x > lp1tm1) { + lp1tm1 = x; + } else { + lp1tm1 = 0.9999f * lp1tm1 + 0.0001f * x; + } + + avgs -= avg[apos]; + avgs += lp1tm1; + avg[apos++] = lp1tm1; + apos %= avg_size; + + lp2tm1 = 0.999f * lp2tm1 + avgs*avg_sizer * 0.001f; + q = lp1tm1 * sag - lp2tm1 * 1.02f - 1.0f; + if (q > -0.01f) { + q = -0.01f; + } else if (q < -1.0f) { + q = -1.0f; + } + + if (input[pos] == q) { + fx = 1.0f / dist + q / (1.0f - f_exp(dist * q)); + } else { + fx = (input[pos] - q) / + (1.0f - f_exp(-dist * (input[pos] - q))) + + q / (1.0f - f_exp(dist * q)); + } + + buffer_write(output[pos], fx); + } + + plugin_data->lp1tm1 = lp1tm1; + plugin_data->lp2tm1 = lp2tm1; + plugin_data->avgs = avgs; + plugin_data->apos = apos; +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + valveRectDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (valveRectDescriptor) { + valveRectDescriptor->UniqueID = 1405; + valveRectDescriptor->Label = "valveRect"; + valveRectDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + valveRectDescriptor->Name = + D_("Valve rectifier"); + valveRectDescriptor->Maker = + "Steve Harris "; + valveRectDescriptor->Copyright = + "GPL"; + valveRectDescriptor->PortCount = 4; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(4, + sizeof(LADSPA_PortDescriptor)); + valveRectDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(4, + sizeof(LADSPA_PortRangeHint)); + valveRectDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(4, sizeof(char*)); + valveRectDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Sag level */ + port_descriptors[VALVERECT_SAG] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[VALVERECT_SAG] = + D_("Sag level"); + port_range_hints[VALVERECT_SAG].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[VALVERECT_SAG].LowerBound = 0; + port_range_hints[VALVERECT_SAG].UpperBound = 1; + + /* Parameters for Distortion */ + port_descriptors[VALVERECT_DIST_P] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[VALVERECT_DIST_P] = + D_("Distortion"); + port_range_hints[VALVERECT_DIST_P].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[VALVERECT_DIST_P].LowerBound = 0; + port_range_hints[VALVERECT_DIST_P].UpperBound = 1; + + /* Parameters for Input */ + port_descriptors[VALVERECT_INPUT] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[VALVERECT_INPUT] = + D_("Input"); + port_range_hints[VALVERECT_INPUT].HintDescriptor = 0; + + /* Parameters for Output */ + port_descriptors[VALVERECT_OUTPUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[VALVERECT_OUTPUT] = + D_("Output"); + port_range_hints[VALVERECT_OUTPUT].HintDescriptor = 0; + + valveRectDescriptor->activate = activateValveRect; + valveRectDescriptor->cleanup = cleanupValveRect; + valveRectDescriptor->connect_port = connectPortValveRect; + valveRectDescriptor->deactivate = NULL; + valveRectDescriptor->instantiate = instantiateValveRect; + valveRectDescriptor->run = runValveRect; + valveRectDescriptor->run_adding = runAddingValveRect; + valveRectDescriptor->set_run_adding_gain = setRunAddingGainValveRect; + } +} + +void _fini() { + if (valveRectDescriptor) { + free((LADSPA_PortDescriptor *)valveRectDescriptor->PortDescriptors); + free((char **)valveRectDescriptor->PortNames); + free((LADSPA_PortRangeHint *)valveRectDescriptor->PortRangeHints); + free(valveRectDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/wave_terrain_1412.c b/plugins/ladspa_effect/swh/wave_terrain_1412.c new file mode 100644 index 000000000..00c2efef5 --- /dev/null +++ b/plugins/ladspa_effect/swh/wave_terrain_1412.c @@ -0,0 +1,242 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + + +#define WAVETERRAIN_XB 0 +#define WAVETERRAIN_YB 1 +#define WAVETERRAIN_ZB 2 + +static LADSPA_Descriptor *waveTerrainDescriptor = NULL; + +typedef struct { + LADSPA_Data *xb; + LADSPA_Data *yb; + LADSPA_Data *zb; + LADSPA_Data run_adding_gain; +} WaveTerrain; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return waveTerrainDescriptor; + default: + return NULL; + } +} + +static void cleanupWaveTerrain(LADSPA_Handle instance) { + free(instance); +} + +static void connectPortWaveTerrain( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + WaveTerrain *plugin; + + plugin = (WaveTerrain *)instance; + switch (port) { + case WAVETERRAIN_XB: + plugin->xb = data; + break; + case WAVETERRAIN_YB: + plugin->yb = data; + break; + case WAVETERRAIN_ZB: + plugin->zb = data; + break; + } +} + +static LADSPA_Handle instantiateWaveTerrain( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + WaveTerrain *plugin_data = (WaveTerrain *)malloc(sizeof(WaveTerrain)); + plugin_data->run_adding_gain = 1.0f; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runWaveTerrain(LADSPA_Handle instance, unsigned long sample_count) { + WaveTerrain *plugin_data = (WaveTerrain *)instance; + + /* x (array of floats of length sample_count) */ + const LADSPA_Data * const xb = plugin_data->xb; + + /* y (array of floats of length sample_count) */ + const LADSPA_Data * const yb = plugin_data->yb; + + /* z (array of floats of length sample_count) */ + LADSPA_Data * const zb = plugin_data->zb; + +#line 18 "wave_terrain_1412.xml" + unsigned long pos; + float x, y; + + for (pos = 0; pos < sample_count; pos++) { + x = xb[pos]; + y = yb[pos]; + buffer_write(zb[pos], (x - y) * (x - 1.0f) * (x + 1.0f) * (y - 1.0f) * (y + 1.0f) ); + } +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainWaveTerrain(LADSPA_Handle instance, LADSPA_Data gain) { + ((WaveTerrain *)instance)->run_adding_gain = gain; +} + +static void runAddingWaveTerrain(LADSPA_Handle instance, unsigned long sample_count) { + WaveTerrain *plugin_data = (WaveTerrain *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* x (array of floats of length sample_count) */ + const LADSPA_Data * const xb = plugin_data->xb; + + /* y (array of floats of length sample_count) */ + const LADSPA_Data * const yb = plugin_data->yb; + + /* z (array of floats of length sample_count) */ + LADSPA_Data * const zb = plugin_data->zb; + +#line 18 "wave_terrain_1412.xml" + unsigned long pos; + float x, y; + + for (pos = 0; pos < sample_count; pos++) { + x = xb[pos]; + y = yb[pos]; + buffer_write(zb[pos], (x - y) * (x - 1.0f) * (x + 1.0f) * (y - 1.0f) * (y + 1.0f) ); + } +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + waveTerrainDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (waveTerrainDescriptor) { + waveTerrainDescriptor->UniqueID = 1412; + waveTerrainDescriptor->Label = "waveTerrain"; + waveTerrainDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + waveTerrainDescriptor->Name = + D_("Wave Terrain Oscillator"); + waveTerrainDescriptor->Maker = + "Steve Harris "; + waveTerrainDescriptor->Copyright = + "GPL"; + waveTerrainDescriptor->PortCount = 3; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(3, + sizeof(LADSPA_PortDescriptor)); + waveTerrainDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(3, + sizeof(LADSPA_PortRangeHint)); + waveTerrainDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(3, sizeof(char*)); + waveTerrainDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for x */ + port_descriptors[WAVETERRAIN_XB] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[WAVETERRAIN_XB] = + D_("x"); + port_range_hints[WAVETERRAIN_XB].HintDescriptor = 0; + + /* Parameters for y */ + port_descriptors[WAVETERRAIN_YB] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[WAVETERRAIN_YB] = + D_("y"); + port_range_hints[WAVETERRAIN_YB].HintDescriptor = 0; + + /* Parameters for z */ + port_descriptors[WAVETERRAIN_ZB] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[WAVETERRAIN_ZB] = + D_("z"); + port_range_hints[WAVETERRAIN_ZB].HintDescriptor = 0; + + waveTerrainDescriptor->activate = NULL; + waveTerrainDescriptor->cleanup = cleanupWaveTerrain; + waveTerrainDescriptor->connect_port = connectPortWaveTerrain; + waveTerrainDescriptor->deactivate = NULL; + waveTerrainDescriptor->instantiate = instantiateWaveTerrain; + waveTerrainDescriptor->run = runWaveTerrain; + waveTerrainDescriptor->run_adding = runAddingWaveTerrain; + waveTerrainDescriptor->set_run_adding_gain = setRunAddingGainWaveTerrain; + } +} + +void _fini() { + if (waveTerrainDescriptor) { + free((LADSPA_PortDescriptor *)waveTerrainDescriptor->PortDescriptors); + free((char **)waveTerrainDescriptor->PortNames); + free((LADSPA_PortRangeHint *)waveTerrainDescriptor->PortRangeHints); + free(waveTerrainDescriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/xfade_1915.c b/plugins/ladspa_effect/swh/xfade_1915.c new file mode 100644 index 000000000..a8c8dd5bd --- /dev/null +++ b/plugins/ladspa_effect/swh/xfade_1915.c @@ -0,0 +1,615 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + +#line 10 "xfade_1915.xml" + +#include "ladspa-util.h" + +#define XFADE_XFADE 0 +#define XFADE_INPUTLA 1 +#define XFADE_INPUTRA 2 +#define XFADE_INPUTLB 3 +#define XFADE_INPUTRB 4 +#define XFADE_OUTPUTL 5 +#define XFADE_OUTPUTR 6 +#define XFADE4_XFADE 0 +#define XFADE4_INPUTLA 1 +#define XFADE4_INPUTRA 2 +#define XFADE4_INPUTLB 3 +#define XFADE4_INPUTRB 4 +#define XFADE4_OUTPUTLA 5 +#define XFADE4_OUTPUTRA 6 +#define XFADE4_OUTPUTLB 7 +#define XFADE4_OUTPUTRB 8 + +static LADSPA_Descriptor *xfadeDescriptor = NULL; + +typedef struct { + LADSPA_Data *xfade; + LADSPA_Data *inputLA; + LADSPA_Data *inputRA; + LADSPA_Data *inputLB; + LADSPA_Data *inputRB; + LADSPA_Data *outputL; + LADSPA_Data *outputR; + LADSPA_Data run_adding_gain; +} Xfade; + +static LADSPA_Descriptor *xfade4Descriptor = NULL; + +typedef struct { + LADSPA_Data *xfade; + LADSPA_Data *inputLA; + LADSPA_Data *inputRA; + LADSPA_Data *inputLB; + LADSPA_Data *inputRB; + LADSPA_Data *outputLA; + LADSPA_Data *outputRA; + LADSPA_Data *outputLB; + LADSPA_Data *outputRB; + LADSPA_Data run_adding_gain; +} Xfade4; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return xfadeDescriptor; + case 1: + return xfade4Descriptor; + default: + return NULL; + } +} + +static void cleanupXfade(LADSPA_Handle instance) { + free(instance); +} + +static void connectPortXfade( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + Xfade *plugin; + + plugin = (Xfade *)instance; + switch (port) { + case XFADE_XFADE: + plugin->xfade = data; + break; + case XFADE_INPUTLA: + plugin->inputLA = data; + break; + case XFADE_INPUTRA: + plugin->inputRA = data; + break; + case XFADE_INPUTLB: + plugin->inputLB = data; + break; + case XFADE_INPUTRB: + plugin->inputRB = data; + break; + case XFADE_OUTPUTL: + plugin->outputL = data; + break; + case XFADE_OUTPUTR: + plugin->outputR = data; + break; + } +} + +static LADSPA_Handle instantiateXfade( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + Xfade *plugin_data = (Xfade *)malloc(sizeof(Xfade)); + plugin_data->run_adding_gain = 1.0f; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runXfade(LADSPA_Handle instance, unsigned long sample_count) { + Xfade *plugin_data = (Xfade *)instance; + + /* Crossfade (float value) */ + const LADSPA_Data xfade = *(plugin_data->xfade); + + /* Input A left (array of floats of length sample_count) */ + const LADSPA_Data * const inputLA = plugin_data->inputLA; + + /* Input A right (array of floats of length sample_count) */ + const LADSPA_Data * const inputRA = plugin_data->inputRA; + + /* Input B left (array of floats of length sample_count) */ + const LADSPA_Data * const inputLB = plugin_data->inputLB; + + /* Input B right (array of floats of length sample_count) */ + const LADSPA_Data * const inputRB = plugin_data->inputRB; + + /* Output left (array of floats of length sample_count) */ + LADSPA_Data * const outputL = plugin_data->outputL; + + /* Output right (array of floats of length sample_count) */ + LADSPA_Data * const outputR = plugin_data->outputR; + +#line 19 "xfade_1915.xml" + unsigned long pos; + const float coefB = (xfade + 1.0f) * 0.5f; + const float coefA = 1.0f - coefB; + + for (pos = 0; pos < sample_count; pos++) { + buffer_write(outputL[pos], inputLA[pos] * coefA + inputLB[pos] * coefB); + buffer_write(outputR[pos], inputRA[pos] * coefA + inputRB[pos] * coefB); + } +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainXfade(LADSPA_Handle instance, LADSPA_Data gain) { + ((Xfade *)instance)->run_adding_gain = gain; +} + +static void runAddingXfade(LADSPA_Handle instance, unsigned long sample_count) { + Xfade *plugin_data = (Xfade *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Crossfade (float value) */ + const LADSPA_Data xfade = *(plugin_data->xfade); + + /* Input A left (array of floats of length sample_count) */ + const LADSPA_Data * const inputLA = plugin_data->inputLA; + + /* Input A right (array of floats of length sample_count) */ + const LADSPA_Data * const inputRA = plugin_data->inputRA; + + /* Input B left (array of floats of length sample_count) */ + const LADSPA_Data * const inputLB = plugin_data->inputLB; + + /* Input B right (array of floats of length sample_count) */ + const LADSPA_Data * const inputRB = plugin_data->inputRB; + + /* Output left (array of floats of length sample_count) */ + LADSPA_Data * const outputL = plugin_data->outputL; + + /* Output right (array of floats of length sample_count) */ + LADSPA_Data * const outputR = plugin_data->outputR; + +#line 19 "xfade_1915.xml" + unsigned long pos; + const float coefB = (xfade + 1.0f) * 0.5f; + const float coefA = 1.0f - coefB; + + for (pos = 0; pos < sample_count; pos++) { + buffer_write(outputL[pos], inputLA[pos] * coefA + inputLB[pos] * coefB); + buffer_write(outputR[pos], inputRA[pos] * coefA + inputRB[pos] * coefB); + } +} + +static void cleanupXfade4(LADSPA_Handle instance) { + free(instance); +} + +static void connectPortXfade4( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + Xfade4 *plugin; + + plugin = (Xfade4 *)instance; + switch (port) { + case XFADE4_XFADE: + plugin->xfade = data; + break; + case XFADE4_INPUTLA: + plugin->inputLA = data; + break; + case XFADE4_INPUTRA: + plugin->inputRA = data; + break; + case XFADE4_INPUTLB: + plugin->inputLB = data; + break; + case XFADE4_INPUTRB: + plugin->inputRB = data; + break; + case XFADE4_OUTPUTLA: + plugin->outputLA = data; + break; + case XFADE4_OUTPUTRA: + plugin->outputRA = data; + break; + case XFADE4_OUTPUTLB: + plugin->outputLB = data; + break; + case XFADE4_OUTPUTRB: + plugin->outputRB = data; + break; + } +} + +static LADSPA_Handle instantiateXfade4( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + Xfade4 *plugin_data = (Xfade4 *)malloc(sizeof(Xfade4)); + plugin_data->run_adding_gain = 1.0f; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runXfade4(LADSPA_Handle instance, unsigned long sample_count) { + Xfade4 *plugin_data = (Xfade4 *)instance; + + /* Crossfade (float value) */ + const LADSPA_Data xfade = *(plugin_data->xfade); + + /* Input A left (array of floats of length sample_count) */ + const LADSPA_Data * const inputLA = plugin_data->inputLA; + + /* Input A right (array of floats of length sample_count) */ + const LADSPA_Data * const inputRA = plugin_data->inputRA; + + /* Input B left (array of floats of length sample_count) */ + const LADSPA_Data * const inputLB = plugin_data->inputLB; + + /* Input B right (array of floats of length sample_count) */ + const LADSPA_Data * const inputRB = plugin_data->inputRB; + + /* Output A left (array of floats of length sample_count) */ + LADSPA_Data * const outputLA = plugin_data->outputLA; + + /* Output A right (array of floats of length sample_count) */ + LADSPA_Data * const outputRA = plugin_data->outputRA; + + /* Output B left (array of floats of length sample_count) */ + LADSPA_Data * const outputLB = plugin_data->outputLB; + + /* Output B right (array of floats of length sample_count) */ + LADSPA_Data * const outputRB = plugin_data->outputRB; + +#line 19 "xfade_1915.xml" + unsigned long pos; + const float coefB = (xfade + 1.0f) * 0.5f; + const float coefA = 1.0f - coefB; + + for (pos = 0; pos < sample_count; pos++) { + buffer_write(outputLA[pos], inputLA[pos] * coefA); + buffer_write(outputRA[pos], inputRA[pos] * coefA); + buffer_write(outputLB[pos], inputLB[pos] * coefB); + buffer_write(outputRB[pos], inputRB[pos] * coefB); + } +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainXfade4(LADSPA_Handle instance, LADSPA_Data gain) { + ((Xfade4 *)instance)->run_adding_gain = gain; +} + +static void runAddingXfade4(LADSPA_Handle instance, unsigned long sample_count) { + Xfade4 *plugin_data = (Xfade4 *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Crossfade (float value) */ + const LADSPA_Data xfade = *(plugin_data->xfade); + + /* Input A left (array of floats of length sample_count) */ + const LADSPA_Data * const inputLA = plugin_data->inputLA; + + /* Input A right (array of floats of length sample_count) */ + const LADSPA_Data * const inputRA = plugin_data->inputRA; + + /* Input B left (array of floats of length sample_count) */ + const LADSPA_Data * const inputLB = plugin_data->inputLB; + + /* Input B right (array of floats of length sample_count) */ + const LADSPA_Data * const inputRB = plugin_data->inputRB; + + /* Output A left (array of floats of length sample_count) */ + LADSPA_Data * const outputLA = plugin_data->outputLA; + + /* Output A right (array of floats of length sample_count) */ + LADSPA_Data * const outputRA = plugin_data->outputRA; + + /* Output B left (array of floats of length sample_count) */ + LADSPA_Data * const outputLB = plugin_data->outputLB; + + /* Output B right (array of floats of length sample_count) */ + LADSPA_Data * const outputRB = plugin_data->outputRB; + +#line 19 "xfade_1915.xml" + unsigned long pos; + const float coefB = (xfade + 1.0f) * 0.5f; + const float coefA = 1.0f - coefB; + + for (pos = 0; pos < sample_count; pos++) { + buffer_write(outputLA[pos], inputLA[pos] * coefA); + buffer_write(outputRA[pos], inputRA[pos] * coefA); + buffer_write(outputLB[pos], inputLB[pos] * coefB); + buffer_write(outputRB[pos], inputRB[pos] * coefB); + } +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + xfadeDescriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (xfadeDescriptor) { + xfadeDescriptor->UniqueID = 1915; + xfadeDescriptor->Label = "xfade"; + xfadeDescriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + xfadeDescriptor->Name = + D_("Crossfade"); + xfadeDescriptor->Maker = + "Steve Harris "; + xfadeDescriptor->Copyright = + "GPL"; + xfadeDescriptor->PortCount = 7; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(7, + sizeof(LADSPA_PortDescriptor)); + xfadeDescriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(7, + sizeof(LADSPA_PortRangeHint)); + xfadeDescriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(7, sizeof(char*)); + xfadeDescriptor->PortNames = + (const char **)port_names; + + /* Parameters for Crossfade */ + port_descriptors[XFADE_XFADE] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[XFADE_XFADE] = + D_("Crossfade"); + port_range_hints[XFADE_XFADE].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[XFADE_XFADE].LowerBound = -1; + port_range_hints[XFADE_XFADE].UpperBound = 1; + + /* Parameters for Input A left */ + port_descriptors[XFADE_INPUTLA] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[XFADE_INPUTLA] = + D_("Input A left"); + port_range_hints[XFADE_INPUTLA].HintDescriptor = 0; + + /* Parameters for Input A right */ + port_descriptors[XFADE_INPUTRA] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[XFADE_INPUTRA] = + D_("Input A right"); + port_range_hints[XFADE_INPUTRA].HintDescriptor = 0; + + /* Parameters for Input B left */ + port_descriptors[XFADE_INPUTLB] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[XFADE_INPUTLB] = + D_("Input B left"); + port_range_hints[XFADE_INPUTLB].HintDescriptor = 0; + + /* Parameters for Input B right */ + port_descriptors[XFADE_INPUTRB] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[XFADE_INPUTRB] = + D_("Input B right"); + port_range_hints[XFADE_INPUTRB].HintDescriptor = 0; + + /* Parameters for Output left */ + port_descriptors[XFADE_OUTPUTL] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[XFADE_OUTPUTL] = + D_("Output left"); + port_range_hints[XFADE_OUTPUTL].HintDescriptor = 0; + + /* Parameters for Output right */ + port_descriptors[XFADE_OUTPUTR] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[XFADE_OUTPUTR] = + D_("Output right"); + port_range_hints[XFADE_OUTPUTR].HintDescriptor = 0; + + xfadeDescriptor->activate = NULL; + xfadeDescriptor->cleanup = cleanupXfade; + xfadeDescriptor->connect_port = connectPortXfade; + xfadeDescriptor->deactivate = NULL; + xfadeDescriptor->instantiate = instantiateXfade; + xfadeDescriptor->run = runXfade; + xfadeDescriptor->run_adding = runAddingXfade; + xfadeDescriptor->set_run_adding_gain = setRunAddingGainXfade; + } + + xfade4Descriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (xfade4Descriptor) { + xfade4Descriptor->UniqueID = 1917; + xfade4Descriptor->Label = "xfade4"; + xfade4Descriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + xfade4Descriptor->Name = + D_("Crossfade (4 outs)"); + xfade4Descriptor->Maker = + "Steve Harris "; + xfade4Descriptor->Copyright = + "GPL"; + xfade4Descriptor->PortCount = 9; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(9, + sizeof(LADSPA_PortDescriptor)); + xfade4Descriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(9, + sizeof(LADSPA_PortRangeHint)); + xfade4Descriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(9, sizeof(char*)); + xfade4Descriptor->PortNames = + (const char **)port_names; + + /* Parameters for Crossfade */ + port_descriptors[XFADE4_XFADE] = + LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL; + port_names[XFADE4_XFADE] = + D_("Crossfade"); + port_range_hints[XFADE4_XFADE].HintDescriptor = + LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_DEFAULT_0; + port_range_hints[XFADE4_XFADE].LowerBound = -1; + port_range_hints[XFADE4_XFADE].UpperBound = 1; + + /* Parameters for Input A left */ + port_descriptors[XFADE4_INPUTLA] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[XFADE4_INPUTLA] = + D_("Input A left"); + port_range_hints[XFADE4_INPUTLA].HintDescriptor = 0; + + /* Parameters for Input A right */ + port_descriptors[XFADE4_INPUTRA] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[XFADE4_INPUTRA] = + D_("Input A right"); + port_range_hints[XFADE4_INPUTRA].HintDescriptor = 0; + + /* Parameters for Input B left */ + port_descriptors[XFADE4_INPUTLB] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[XFADE4_INPUTLB] = + D_("Input B left"); + port_range_hints[XFADE4_INPUTLB].HintDescriptor = 0; + + /* Parameters for Input B right */ + port_descriptors[XFADE4_INPUTRB] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[XFADE4_INPUTRB] = + D_("Input B right"); + port_range_hints[XFADE4_INPUTRB].HintDescriptor = 0; + + /* Parameters for Output A left */ + port_descriptors[XFADE4_OUTPUTLA] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[XFADE4_OUTPUTLA] = + D_("Output A left"); + port_range_hints[XFADE4_OUTPUTLA].HintDescriptor = 0; + + /* Parameters for Output A right */ + port_descriptors[XFADE4_OUTPUTRA] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[XFADE4_OUTPUTRA] = + D_("Output A right"); + port_range_hints[XFADE4_OUTPUTRA].HintDescriptor = 0; + + /* Parameters for Output B left */ + port_descriptors[XFADE4_OUTPUTLB] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[XFADE4_OUTPUTLB] = + D_("Output B left"); + port_range_hints[XFADE4_OUTPUTLB].HintDescriptor = 0; + + /* Parameters for Output B right */ + port_descriptors[XFADE4_OUTPUTRB] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[XFADE4_OUTPUTRB] = + D_("Output B right"); + port_range_hints[XFADE4_OUTPUTRB].HintDescriptor = 0; + + xfade4Descriptor->activate = NULL; + xfade4Descriptor->cleanup = cleanupXfade4; + xfade4Descriptor->connect_port = connectPortXfade4; + xfade4Descriptor->deactivate = NULL; + xfade4Descriptor->instantiate = instantiateXfade4; + xfade4Descriptor->run = runXfade4; + xfade4Descriptor->run_adding = runAddingXfade4; + xfade4Descriptor->set_run_adding_gain = setRunAddingGainXfade4; + } +} + +void _fini() { + if (xfadeDescriptor) { + free((LADSPA_PortDescriptor *)xfadeDescriptor->PortDescriptors); + free((char **)xfadeDescriptor->PortNames); + free((LADSPA_PortRangeHint *)xfadeDescriptor->PortRangeHints); + free(xfadeDescriptor); + } + if (xfade4Descriptor) { + free((LADSPA_PortDescriptor *)xfade4Descriptor->PortDescriptors); + free((char **)xfade4Descriptor->PortNames); + free((LADSPA_PortRangeHint *)xfade4Descriptor->PortRangeHints); + free(xfade4Descriptor); + } + +} diff --git a/plugins/ladspa_effect/swh/zm1_1428.c b/plugins/ladspa_effect/swh/zm1_1428.c new file mode 100644 index 000000000..048631ebb --- /dev/null +++ b/plugins/ladspa_effect/swh/zm1_1428.c @@ -0,0 +1,243 @@ +#include +#include +#ifndef WIN32 +#include "config.h" +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#define _ISOC9X_SOURCE 1 +#define _ISOC99_SOURCE 1 +#define __USE_ISOC99 1 +#define __USE_ISOC9X 1 + +#include + +#include "ladspa.h" + +#ifdef WIN32 +#define _WINDOWS_DLL_EXPORT_ __declspec(dllexport) +int bIsFirstTime = 1; +void _init(); // forward declaration +#else +#define _WINDOWS_DLL_EXPORT_ +#endif + + +#define ZM1_INPUT 0 +#define ZM1_OUTPUT 1 + +static LADSPA_Descriptor *zm1Descriptor = NULL; + +typedef struct { + LADSPA_Data *input; + LADSPA_Data *output; + LADSPA_Data xm1; + LADSPA_Data run_adding_gain; +} Zm1; + +_WINDOWS_DLL_EXPORT_ +const LADSPA_Descriptor *ladspa_descriptor(unsigned long index) { + +#ifdef WIN32 + if (bIsFirstTime) { + _init(); + bIsFirstTime = 0; + } +#endif + switch (index) { + case 0: + return zm1Descriptor; + default: + return NULL; + } +} + +static void activateZm1(LADSPA_Handle instance) { + Zm1 *plugin_data = (Zm1 *)instance; + LADSPA_Data xm1 = plugin_data->xm1; +#line 21 "zm1_1428.xml" + xm1 = 0.0f; + plugin_data->xm1 = xm1; + +} + +static void cleanupZm1(LADSPA_Handle instance) { + free(instance); +} + +static void connectPortZm1( + LADSPA_Handle instance, + unsigned long port, + LADSPA_Data *data) { + Zm1 *plugin; + + plugin = (Zm1 *)instance; + switch (port) { + case ZM1_INPUT: + plugin->input = data; + break; + case ZM1_OUTPUT: + plugin->output = data; + break; + } +} + +static LADSPA_Handle instantiateZm1( + const LADSPA_Descriptor *descriptor, + unsigned long s_rate) { + Zm1 *plugin_data = (Zm1 *)malloc(sizeof(Zm1)); + LADSPA_Data xm1; + +#line 17 "zm1_1428.xml" + xm1 = 0.0f; + + plugin_data->xm1 = xm1; + + return (LADSPA_Handle)plugin_data; +} + +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b = v) +#define RUN_ADDING 0 +#define RUN_REPLACING 1 + +static void runZm1(LADSPA_Handle instance, unsigned long sample_count) { + Zm1 *plugin_data = (Zm1 *)instance; + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + LADSPA_Data xm1 = plugin_data->xm1; + +#line 25 "zm1_1428.xml" + unsigned long pos; + LADSPA_Data tmp; + + for (pos = 0; pos < sample_count; pos++) { + tmp = input[pos]; + buffer_write(output[pos], xm1); + xm1 = tmp; + } + plugin_data->xm1 = xm1; +} +#undef buffer_write +#undef RUN_ADDING +#undef RUN_REPLACING + +#define buffer_write(b, v) (b += (v) * run_adding_gain) +#define RUN_ADDING 1 +#define RUN_REPLACING 0 + +static void setRunAddingGainZm1(LADSPA_Handle instance, LADSPA_Data gain) { + ((Zm1 *)instance)->run_adding_gain = gain; +} + +static void runAddingZm1(LADSPA_Handle instance, unsigned long sample_count) { + Zm1 *plugin_data = (Zm1 *)instance; + LADSPA_Data run_adding_gain = plugin_data->run_adding_gain; + + /* Input (array of floats of length sample_count) */ + const LADSPA_Data * const input = plugin_data->input; + + /* Output (array of floats of length sample_count) */ + LADSPA_Data * const output = plugin_data->output; + LADSPA_Data xm1 = plugin_data->xm1; + +#line 25 "zm1_1428.xml" + unsigned long pos; + LADSPA_Data tmp; + + for (pos = 0; pos < sample_count; pos++) { + tmp = input[pos]; + buffer_write(output[pos], xm1); + xm1 = tmp; + } + plugin_data->xm1 = xm1; +} + +void _init() { + char **port_names; + LADSPA_PortDescriptor *port_descriptors; + LADSPA_PortRangeHint *port_range_hints; + +#ifdef ENABLE_NLS +#define D_(s) dgettext(PACKAGE, s) + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); +#else +#define D_(s) (s) +#endif + + + zm1Descriptor = + (LADSPA_Descriptor *)malloc(sizeof(LADSPA_Descriptor)); + + if (zm1Descriptor) { + zm1Descriptor->UniqueID = 1428; + zm1Descriptor->Label = "zm1"; + zm1Descriptor->Properties = + LADSPA_PROPERTY_HARD_RT_CAPABLE; + zm1Descriptor->Name = + D_("z-1"); + zm1Descriptor->Maker = + "Steve Harris "; + zm1Descriptor->Copyright = + "GPL"; + zm1Descriptor->PortCount = 2; + + port_descriptors = (LADSPA_PortDescriptor *)calloc(2, + sizeof(LADSPA_PortDescriptor)); + zm1Descriptor->PortDescriptors = + (const LADSPA_PortDescriptor *)port_descriptors; + + port_range_hints = (LADSPA_PortRangeHint *)calloc(2, + sizeof(LADSPA_PortRangeHint)); + zm1Descriptor->PortRangeHints = + (const LADSPA_PortRangeHint *)port_range_hints; + + port_names = (char **)calloc(2, sizeof(char*)); + zm1Descriptor->PortNames = + (const char **)port_names; + + /* Parameters for Input */ + port_descriptors[ZM1_INPUT] = + LADSPA_PORT_INPUT | LADSPA_PORT_AUDIO; + port_names[ZM1_INPUT] = + D_("Input"); + port_range_hints[ZM1_INPUT].HintDescriptor = 0; + + /* Parameters for Output */ + port_descriptors[ZM1_OUTPUT] = + LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO; + port_names[ZM1_OUTPUT] = + D_("Output"); + port_range_hints[ZM1_OUTPUT].HintDescriptor = 0; + + zm1Descriptor->activate = activateZm1; + zm1Descriptor->cleanup = cleanupZm1; + zm1Descriptor->connect_port = connectPortZm1; + zm1Descriptor->deactivate = NULL; + zm1Descriptor->instantiate = instantiateZm1; + zm1Descriptor->run = runZm1; + zm1Descriptor->run_adding = runAddingZm1; + zm1Descriptor->set_run_adding_gain = setRunAddingGainZm1; + } +} + +void _fini() { + if (zm1Descriptor) { + free((LADSPA_PortDescriptor *)zm1Descriptor->PortDescriptors); + free((char **)zm1Descriptor->PortNames); + free((LADSPA_PortRangeHint *)zm1Descriptor->PortRangeHints); + free(zm1Descriptor); + } + +}