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); + } + +}