shithub: leaf

Download patch

ref: 69671e50422797756d6679068c18a3d7f526504f
parent: 844078b59ddd849b2ae43d8dd2297e69ba2bc44e
parent: 41afc5ad5cda59b2db0a6d3330296203269102cf
author: Matthew Wang <mjw7@princeton.edu>
date: Mon Dec 21 14:53:04 EST 2020

merge with pitchshiftRework

--- a/TestPlugin/LEAF.jucer
+++ b/TestPlugin/LEAF.jucer
@@ -76,6 +76,7 @@
         <FILE id="VTmuyj" name="leaf-tables.c" compile="1" resource="0" file="../leaf/Src/leaf-tables.c"/>
         <FILE id="HKEtqp" name="leaf.c" compile="1" resource="0" file="../leaf/Src/leaf.c"/>
       </GROUP>
+      <FILE id="a85MuA" name="leaf-config.h" compile="0" resource="0" file="../leaf/leaf-config.h"/>
       <FILE id="a1IWV9" name="leaf.cpp" compile="1" resource="0" file="../leaf/leaf.cpp"/>
       <FILE id="TzDyuj" name="leaf.h" compile="0" resource="0" file="../leaf/leaf.h"/>
     </GROUP>
--- a/TestPlugin/Source/LEAFLink.cpp
+++ b/TestPlugin/Source/LEAFLink.cpp
@@ -20,9 +20,9 @@
 
 std::vector<juce::String> cSliderNames =  std::vector<juce::String>
 {
-    "on/off",
-    "mod freq",
-    "mod depth"
+    "slider1",
+    "slider2",
+    "slider3"
 };
 
 std::vector<juce::String> cComboBoxNames =  std::vector<juce::String>
--- a/TestPlugin/Source/MyTest.cpp
+++ b/TestPlugin/Source/MyTest.cpp
@@ -18,7 +18,8 @@
 tMBTriangle btri;
 tMBPulse bpulse;
 
-tDualPitchDetector detector;
+tRetune retune;
+tSimpleRetune sretune;
 
 tCompressor compressor;
 
@@ -54,36 +55,9 @@
 {
     LEAF_init(&leaf, sampleRate, blockSize, memory, MSIZE, &getRandomFloat);
     
-    tMBSaw_init(&bsaw, &leaf);
-    tMBSaw_setFreq(&bsaw, -100);
-    tMBTriangle_init(&btri, &leaf);
-    tMBTriangle_setFreq(&btri, -200);
-    tMBPulse_init(&bpulse, &leaf);
-    tMBPulse_setFreq(&bpulse, -500);
-    
-    bufIn = (float*) leaf_alloc(&leaf, sizeof(float) * 4096);
-    bufOut = (float*) leaf_alloc(&leaf, sizeof(float) * 4096);
-    
-    tDualPitchDetector_init(&detector, mtof(48), mtof(84), &leaf);
-    
-    tCompressor_init(&compressor, &leaf);
-    
-    tSVF_init(&lp, SVFTypeLowpass, mtof(84) * 2.0f, 1.0f, &leaf);
-    tSVF_init(&hp, SVFTypeHighpass, mtof(48) * 0.5f, 1.0f, &leaf);
-    
-    tPeriodDetection_init(&pd, bufIn, bufOut, 4096, 1024, &leaf);
-    
-    tZeroCrossingCounter_init(&zc, 128, &leaf);
-    tEnvelopeFollower_init(&ef, 0.02f, 0.9999f, &leaf);
-    
-    tTriangle_init(&tri, &leaf);
-    tTriangle_setFreq(&tri, 100);
-    
-    tBuffer_init(&samp, 5.0f * leaf.sampleRate, &leaf);
-    tMBSampler_init(&sampler, &samp, &leaf);
-    
-    tMBSampler_setMode(&sampler, PlayLoop);
-    tMBSampler_setEnd(&sampler, samp->bufferLength);
+    tRetune_init(&retune, 1, mtof(48), mtof(72), 2048, &leaf);
+    tSimpleRetune_init(&sretune, 1, mtof(48), mtof(72), 2048, &leaf);
+    tSimpleRetune_setMode(&sretune, 1);
 }
 
 inline double getSawFall(double angle) {
@@ -97,41 +71,8 @@
 
 float   LEAFTest_tick            (float input)
 {
-//    tBuffer_tick(&samp, input);
-//
-//    return tMBSampler_tick(&sampler);
-    
-    tMBTriangle_tick(&btri);
-    tMBSaw_syncIn(&bsaw, tMBTriangle_syncOut(&btri));
-    return tMBSaw_tick(&bsaw);
-    
-//    tMBSaw_setFreq(&bsaw, x);
-//    tMBTriangle_setFreq(&btri, x);
-//    tMBPulse_setFreq(&bpulse, x);
-//
-//    tMBTriangle_setWidth(&btri, y);
-//    tMBPulse_setWidth(&bpulse, y);
-//
-////    return tMBSaw_tick(&bsaw);
-////    return tMBTriangle_tick(&btri);
-//    return tMBPulse_tick(&bpulse);
-    
-//    input = tSVF_tick(&hp, tSVF_tick(&lp, tCompressor_tick(&compressor, input)));
-//    
-////    float freq = 1.0f/tPeriodDetection_tick(&pd, input) * leaf.sampleRate;
-//    tDualPitchDetector_tick(&detector, input);
-//    float altFreq = tDualPitchDetector_getFrequency(&detector);
-//
-////    if (fabsf(1.0f - (freq / altFreq)) < 0.05f)
-////    if (tZeroCrossingCounter_tick(&zc, input) < 0.05 && freq > 0.0f)
-//    if (altFreq > 0.0f)
-//    {
-//        tTriangle_setFreq(&tri, altFreq);
-//    }
-//
-//    float g = tEnvelopeFollower_tick(&ef, input);
-//
-//    return tTriangle_tick(&tri) * g;
+//    return tRetune_tick(&retune, input)[0];
+    return tSimpleRetune_tick(&sretune, input);
 }
 
 int firstFrame = 1;
@@ -138,34 +79,16 @@
 bool lastState = false, lastPlayState = false;
 void    LEAFTest_block           (void)
 {
-    float periodicity = tDualPitchDetector_getPeriodicity(&detector);
-    if (periodicity > 0.99f)
-    {
-        DBG(tDualPitchDetector_getFrequency(&detector));
-        DBG(tDualPitchDetector_getPeriodicity(&detector));
-    }
-    
-    float val = getSliderValue("on/off");
-    
-    if (val > 0.5f && !sampler->active)
-    {
-        tBuffer_record(&samp);
-        tMBSampler_play(&sampler);
-    }
-    else if (val < 0.5f && sampler->active)
-    {
-        tMBSampler_stop(&sampler);
-    }
-    
-    val = getSliderValue("mod freq");
-    
-    tMBSampler_setStart(&sampler, val * 5.0f * leaf.sampleRate);
+    float val = getSliderValue("slider1");
+    tRetune_tuneVoice(&retune, 0, val * 3.0f + 0.5f);
+    tSimpleRetune_tuneVoice(&sretune, 0, 300);
 
+    val = getSliderValue("slider2");
+//    tRetune_setPitchFactor(&retune, val * 3.0f + 0.5f, 1);
     
-    val = getSliderValue("mod depth");
-    
-    tMBSampler_setRate(&sampler, val * 8.0f - 4.0f);
-    
+    val = getSliderValue("slider3");
+//    tRetune_setPitchFactor(&retune, val * 3.0f + 0.5f, 2);
+        
 }
 
 void    LEAFTest_controllerInput (int cnum, float cval)
@@ -216,46 +139,46 @@
 static void run_pool_test(void)
 {
     leaf_pool_report();
-    
+
     DBG("ALLOC BUFFER 1");
     int size = 50;
     float* buffer;
     buffer = (float*) leaf_alloc(&leaf, sizeof(float) * size);
-    
+
     for (int i = 0; i < size; i++)
     {
         buffer[i] = (float)i;
-        
+
     }
-    
+
     leaf_pool_report();
-    
+
     DBG("ALLOC BUFFER 2");
     size = 25;
-    
+
     buffer = (float*) leaf_alloc(&leaf, sizeof(float) * size);
-    
+
     leaf_pool_report();
-    
+
     for (int i = 0; i < size; i++)
     {
         buffer[i] = (float)(i*2);
     }
     leaf_free(&leaf, (char*)buffer);
-    
+
     leaf_pool_report();
-    
+
     DBG("ALLOC BUFFER 3");
     size = 15;
-    
+
     buffer = (float*) leaf_alloc(&leaf, sizeof(float) * size);
-    
+
     for (int i = 0; i < size; i++)
     {
         buffer[i] = (float)(i*3);
     }
-    
+
     leaf_pool_report();
-    
+
     leaf_pool_dump();
 }
--- a/leaf/Inc/leaf-analysis.h
+++ b/leaf/Inc/leaf-analysis.h
@@ -17,6 +17,7 @@
     
 #include "leaf-global.h"
 #include "leaf-mempool.h"
+#include "leaf-distortion.h"
 #include "leaf-math.h"
 #include "leaf-filters.h"
 #include "leaf-envelopes.h"
@@ -39,21 +40,22 @@
      @{
      
      @fn void    tEnvelopeFollower_init          (tEnvelopeFollower* const follower, float attackThreshold, float decayCoeff, LEAF* const leaf)
-     @brief Initialize a tEnvelopeFollower to the default LEAF mempool.
-     @param follower A pointer to the tEnvelopeFollower to be initialized.
+     @brief Initialize a tEnvelopeFollower to the default mempool of a LEAF instance.
+     @param follower A pointer to the tEnvelopeFollower to initialize.
      @param attackThreshold Amplitude threshold for determining an envelope onset. 0.0 to 1.0
      @param decayCoefficient Multiplier to determine the envelope rate of decay. 0.0 to 1.0, above 0.95 recommended.
+     @param leaf A pointer to the leaf instance.
      
      @fn void    tEnvelopeFollower_initToPool    (tEnvelopeFollower* const follower, float attackThreshold, float decayCoeff, tMempool* const mempool)
      @brief Initialize a tEnvelopeFollower to a specified mempool.
-     @param follower A pointer to the tEnvelopeFollower to be initialized.
+     @param follower A pointer to the tEnvelopeFollower to initialize.
      @param attackThreshold Amplitude threshold for determining an envelope onset. 0.0 to 1.0
      @param decayCoefficient Multiplier to determine the envelope rate of decay. 0.0 to 1.0, above 0.95 recommended.
-     @param mempool A pointer to the tMempool to which the tEnvelopeFollower should be initialized.
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    tEnvelopeFollower_free          (tEnvelopeFollower* const follower)
      @brief Free a tEnvelopeFollower from its mempool.
-     @param follower A pointer to the tEnvelopeFollower to be freed.
+     @param follower A pointer to the tEnvelopeFollower to free.
      
      @fn float   tEnvelopeFollower_tick          (tEnvelopeFollower* const follower, float input)
      @brief Tick the tEnvelopeFollower.
@@ -67,8 +69,9 @@
      @param decayCoefficient Multiplier to determine the envelope rate of decay. 0.0 to 1.0, above 0.95 recommended.
      
      @fn void    tEnvelopeFollower_setAttackThreshold  (tEnvelopeFollower* const follower, float attackThresh)
-     @brief Set the envelope attack  threshold.
+     @brief Set the envelope attack threshold.
      @param follower A pointer to the relevant tEnvelopeFollower.
+     @param attackThreshold The new threshold to determine envelope onset as an amplitude from 0.0 to 1.0
      
      @} */
     
@@ -95,23 +98,24 @@
     /*!
      @defgroup tzerocrossingcounter tZeroCrossingCounter
      @ingroup analysis
-     @brief Counts the amount of zero crossings within a window of the input audio data
+     @brief Count the amount of zero crossings within a window of the input audio data
      @{
      
      @fn void    tZeroCrossingCounter_init         (tZeroCrossingCounter* const counter, int maxWindowSize, LEAF* const leaf)
-     @brief Initialize a tZeroCrossingCounter to the default LEAF mempool.
-     @param counter A pointer to the tZeroCrossingCounter to be initialized.
+     @brief Initialize a tZeroCrossingCounter to the default mempool of a LEAF instance.
+     @param counter A pointer to the tZeroCrossingCounter to initialize.
      @param maxWindowSize The max and initial size of the window.
+     @param leaf A pointer to the leaf instance.
      
      @fn void    tZeroCrossingCounter_initToPool   (tZeroCrossingCounter* const counter, int maxWindowSize, tMempool* const mempool)
      @brief Initialize a tZeroCrossingCounter to a specified mempool.
-     @param counter A pointer to the tZeroCrossingCounter to be initialized.
+     @param counter A pointer to the tZeroCrossingCounter to initialize.
      @param maxWindowSize The max and initial size of the window.
-     @param mempool A pointer to the tMempool to which the tZeroCrossingCounter should be initialized.
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    tZeroCrossingCounter_free         (tZeroCrossingCounter* const counter)
      @brief Free a tZeroCrossingCounter from its mempool.
-     @param counter A pointer to the tZeroCrossingCounter to be freed.
+     @param counter A pointer to the tZeroCrossingCounter to free.
      
      @fn float   tZeroCrossingCounter_tick         (tZeroCrossingCounter* const counter, float input)
      @brief Tick the tZeroCrossingCounter.
@@ -155,32 +159,40 @@
     /*!
      @defgroup tpowerfollower tPowerFollower
      @ingroup analysis
-     @brief
+     @brief Measure and follow the power of an input signal using an exponential moving average for smoothing.
      @{
      
      @fn void    tPowerFollower_init         (tPowerFollower* const, float factor, LEAF* const leaf)
-     @brief Initialize a tPowerFollower to the default LEAF mempool.
-     @param
+     @brief Initialize a tPowerFollower to the default mempool of a LEAF instance.
+     @param follower A pointer to the tPowerFollower to initialize.
+     @param factor Smoothing factor of the moving average. 0.0-1.0, with a higher value discounting older inputs more quickly.
+     @param leaf A pointer to the leaf instance.
      
      @fn void    tPowerFollower_initToPool   (tPowerFollower* const, float factor, tMempool* const)
      @brief Initialize a tPowerFollower to a specified mempool.
-     @param
+     @param follower A pointer to the tPowerFollower to initialize.
+     @param factor Smoothing factor of the moving average. 0.0-1.0, with a higher value discounting older inputs more quickly.
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    tPowerFollower_free         (tPowerFollower* const)
-     @brief
-     @param
+     @brief Free a tPowerFollower from its mempool.
+     @param follower A pointer to the tPowerFollower to free.
      
      @fn float   tPowerFollower_tick         (tPowerFollower* const, float input)
-     @brief
-     @param
+     @brief Pass a sample into the power follower and return the current power.
+     @param follower A pointer to the relevant tPowerFollower.
+     @param input The input sample
+     @return The current power.
      
-     @fn float   tPowerFollower_sample       (tPowerFollower* const)
-     @brief
-     @param
+     @fn float   tPowerFollower_getPower       (tPowerFollower* const)
+     @brief Get the current power.
+     @param follower A pointer to the relevant tPowerFollower.
+     @return The current power.
      
      @fn int     tPowerFollower_setFactor    (tPowerFollower* const, float factor)
-     @brief
-     @param
+     @brief Set the smoothing factor for the moving average.
+     @param follower A pointer to the relevant tPowerFollower.
+     @param factor Smoothing factor of the moving average. 0.0-1.0, with a higher value discounting older inputs more quickly.
      
      @} */
     
@@ -201,8 +213,8 @@
     void    tPowerFollower_free         (tPowerFollower* const);
     
     float   tPowerFollower_tick         (tPowerFollower* const, float input);
-    float   tPowerFollower_sample       (tPowerFollower* const);
-    int     tPowerFollower_setFactor    (tPowerFollower* const, float factor);
+    float   tPowerFollower_getPower     (tPowerFollower* const);
+    void    tPowerFollower_setFactor    (tPowerFollower* const, float factor);
     
     // ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
     
@@ -213,24 +225,33 @@
      @{
      
      @fn void    tEnvPD_init             (tEnvPD* const, int windowSize, int hopSize, int blockSize, LEAF* const leaf)
-     @brief Initialize a tEnvPD to the default LEAF mempool.
-     @param
+     @brief Initialize a tEnvPD to the default mempool of a LEAF instance.
+     @param env A pointer to the tEnvPD to initialize.
+     @param windowSize
+     @param hopSize
+     @param blockSize
+     @param leaf A pointer to the leaf instance.
      
      @fn void    tEnvPD_initToPool       (tEnvPD* const, int windowSize, int hopSize, int blockSize, tMempool* const)
      @brief Initialize a tEnvPD to a specified mempool.
-     @param
+     @param env A pointer to the tEnvPD to initialize.
+     @param windowSize
+     @param hopSize
+     @param blockSize
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    tEnvPD_free             (tEnvPD* const)
-     @brief
-     @param
+     @brief Free a tEnvPD from its mempool.
+     @param env  A pointer to the tEnvPD to free.
      
      @fn float   tEnvPD_tick             (tEnvPD* const)
      @brief
-     @param
+     @param env
      
      @fn void    tEnvPD_processBlock     (tEnvPD* const, float* in)
      @brief
-     @param
+     @param env
+     @param inputBlock
      
      @} */
     
@@ -269,44 +290,59 @@
     /*!
      @defgroup tattackdetection tAttackDetection
      @ingroup analysis
-     @brief
+     @brief Detect attacks in an input signal
      @{
      
      @fn void    tAttackDetection_init           (tAttackDetection* const, int blocksize, int atk, int rel, LEAF* const leaf)
-     @brief Initialize a tAttackDetection to the default LEAF mempool.
-     @param
+     @brief Initialize a tAttackDetection to the default mempool of a LEAF instance.
+     @param detection A pointer to the tAttackDetection to initialize.
+     @param blockSize
+     @param attack
+     @param release
+     @param leaf A pointer to the leaf instance.
      
      @fn void    tAttackDetection_initToPool     (tAttackDetection* const, int blocksize, int atk, int rel, tMempool* const)
      @brief Initialize a tAttackDetection to a specified mempool.
-     @param
+     @param detection A pointer to the tAttackDetection to initialize.
+     @param blockSize
+     @param attack
+     @param release
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    tAttackDetection_free           (tAttackDetection* const)
-     @brief
-     @param
+     @brief Free a tAttackDetection from its mempool.
+     @param detection A pointer to the tAttackDetection to free.
      
      @fn void    tAttackDetection_setBlocksize   (tAttackDetection* const, int size)
      @brief Set expected input blocksize
-     @param
+     @param detection A pointer to the relevant tAttackDetection.
+     @param blockSize
      
      @fn void    tAttackDetection_setSamplerate  (tAttackDetection* const, int inRate)
      @brief Set attack detection sample rate
-     @param
+     @param detection A pointer to the relevant tAttackDetection.
+     @param sampleRate
      
      @fn void    tAttackDetection_setAttack      (tAttackDetection* const, int inAtk)
      @brief Set attack time and coeff
-     @param
+     @param detection A pointer to the relevant tAttackDetection.
+     @param attack
      
      @fn void    tAttackDetection_setRelease     (tAttackDetection* const, int inRel)
      @brief Set release time and coeff
-     @param
+     @param detection A pointer to the relevant tAttackDetection.
+     @param release
      
      @fn void    tAttackDetection_setThreshold   (tAttackDetection* const, float thres)
      @brief Set level above which values are identified as attacks
-     @param
+     @param detection A pointer to the relevant tAttackDetection.
+     @param threshold
      
      @fn int     tAttackDetection_detect         (tAttackDetection* const, float *in)
      @brief Find the largest transient in input block, return index of attack
-     @param
+     @param detection A pointer to the relevant tAttackDetection.
+     @param inputBlock
+     @return Index of the largest transient in the input.
      
      @} */
     
@@ -317,9 +353,7 @@
     
     typedef struct _tAttackDetection
     {
-        
         tMempool mempool;
-        
         float env;
         
         //Attack & Release times in msec
@@ -357,44 +391,56 @@
     /*!
      @defgroup tsnac tSNAC
      @ingroup analysis
-     @brief Period detection algorithm from Katja Vetters http://www.katjaas.nl/helmholtz/helmholtz.html
+     @brief Component of period detection algorithm from Katja Vetters http://www.katjaas.nl/helmholtz/helmholtz.html
      @{
      
      @fn void    tSNAC_init          (tSNAC* const, int overlaparg, LEAF* const leaf)
-     @brief Initialize a tSNAC to the default LEAF mempool.
-     @param
+     @brief Initialize a tSNAC to the default mempool of a LEAF instance.
+     @param snac A pointer to the tSNAC to initialize.
+     @param overlap
+     @param leaf A pointer to the leaf instance.
      
      @fn void    tSNAC_initToPool    (tSNAC* const, int overlaparg, tMempool* const)
      @brief Initialize a tSNAC to a specified mempool.
-     @param
+     @param snac A pointer to the tSNAC to initialize.
+     @param overlap
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    tSNAC_free          (tSNAC* const)
-     @brief
-     @param
+     @brief Free a tSNAC from its mempool.
+     @param snac A pointer to the tSNAC to free.
      
      @fn void    tSNAC_ioSamples     (tSNAC *s, float *in, float *out, int size)
      @brief
-     @param
+     @param snac A pointer to the relevant tSNAC.
+     @param input
+     @param output
+     @param size
      
      @fn void    tSNAC_setOverlap    (tSNAC *s, int lap)
      @brief
-     @param
+     @param snac A pointer to the relevant tSNAC.
+     @param overlap
      
      @fn void    tSNAC_setBias       (tSNAC *s, float bias)
      @brief
-     @param
+     @param snac A pointer to the relevant tSNAC.
+     @param bias
      
      @fn void    tSNAC_setMinRMS     (tSNAC *s, float rms)
      @brief
-     @param
+     @param snac A pointer to the relevant tSNAC.
+     @param rms
      
      @fn float   tSNAC_getPeriod     (tSNAC *s)
      @brief
-     @param
+     @param snac A pointer to the relevant tSNAC.
+     @return The detected period of the input
      
      @fn float   tSNAC_getFidelity   (tSNAC *s)
      @brief
-     @param
+     @param snac A pointer to the relevant tSNAC.
+     @return The periodic fidelity of the input
      
      @} */
     
@@ -406,7 +452,6 @@
     
     typedef struct _tSNAC
     {
-        
         tMempool mempool;
         
         float* inputbuf;
@@ -431,7 +476,7 @@
     void    tSNAC_initToPool    (tSNAC* const, int overlaparg, tMempool* const);
     void    tSNAC_free          (tSNAC* const);
     
-    void    tSNAC_ioSamples     (tSNAC *s, float *in, float *out, int size);
+    void    tSNAC_ioSamples     (tSNAC *s, float *in, int size);
     void    tSNAC_setOverlap    (tSNAC *s, int lap);
     void    tSNAC_setBias       (tSNAC *s, float bias);
     void    tSNAC_setMinRMS     (tSNAC *s, float rms);
@@ -440,68 +485,81 @@
     float   tSNAC_getPeriod     (tSNAC *s);
     float   tSNAC_getFidelity   (tSNAC *s);
     
-    
     /*!
      @defgroup tperioddetection tPeriodDetection
      @ingroup analysis
-     @brief
+     @brief Period detection algorithm from Katja Vetters http://www.katjaas.nl/helmholtz/helmholtz.html
      @{
-     */
-    
-    
-    /*!
+
      @fn void    tPeriodDetection_init               (tPeriodDetection* const, float* in, float* out, int bufSize, int frameSize, LEAF* const leaf)
-     @brief Initialize a tPeriodDetection to the default LEAF mempool.
-     @param
+     @brief Initialize a tPeriodDetection to the default mempool of a LEAF instance.
+     @param detection A pointer to the tPeriodDetection to initialize.
+     @param in
+     @param out
+     @param bufferSize
+     @param frameSize
+     @param leaf A pointer to the leaf instance.
      
      @fn void    tPeriodDetection_initToPool  (tPeriodDetection* const, float* in, float* out, int bufSize, int frameSize, tMempool* const)
      @brief Initialize a tPeriodDetection to a specified mempool.
-     @param
+     @param detection A pointer to the tPeriodDetection to initialize.
+     @param in
+     @param out
+     @param bufferSize
+     @param frameSize
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    tPeriodDetection_free               (tPeriodDetection* const)
-     @brief
-     @param
+     @brief Free a tPeriodDetection from its mempool.
+     @param detection A pointer to the tPeriodDetection to free.
      
      @fn float   tPeriodDetection_tick               (tPeriodDetection* const, float sample)
      @brief
-     @param
+     @param detection A pointer to the relevant tPeriodDetection.
+     @param input
+     @return
      
      @fn float   tPeriodDetection_getPeriod          (tPeriodDetection* const)
      @brief
-     @param
+     @param detection A pointer to the relevant tPeriodDetection.
+     @return The detected period.
      
      @fn void    tPeriodDetection_setHopSize         (tPeriodDetection* const, int hs)
      @brief
-     @param
+     @param detection A pointer to the relevant tPeriodDetection.
+     @param hopSize
      
      @fn void    tPeriodDetection_setWindowSize      (tPeriodDetection* const, int ws)
      @brief
-     @param
+     @param detection A pointer to the relevant tPeriodDetection.
+     @param windowSize
      
      @fn void    tPeriodDetection_setFidelityThreshold(tPeriodDetection* const, float threshold)
      @brief
-     @param
+     @param detection A pointer to the relevant tPeriodDetection.
+     @param threshold
      
      @fn void    tPeriodDetection_setAlpha           (tPeriodDetection* const, float alpha)
      @brief
-     @param
+     @param detection A pointer to the relevant tPeriodDetection.
+     @param alpha
      
      @fn void    tPeriodDetection_setTolerance       (tPeriodDetection* const, float tolerance)
      @brief
-     @param
+     @param detection A pointer to the relevant tPeriodDetection.
+     @param tolerance
      
      @} */
     
-#define DEFPITCHRATIO 2.0f
+#define DEFPITCHRATIO 1.0f
 #define DEFTIMECONSTANT 100.0f
 #define DEFHOPSIZE 64
 #define DEFWINDOWSIZE 64
 #define FBA 20
-#define HPFREQ 40.0f
+#define HPFREQ 20.0f
     
     typedef struct _tPeriodDetection
     {
-        
         tMempool mempool;
         
         tEnvPD env;
@@ -539,12 +597,13 @@
     
     typedef _tPeriodDetection* tPeriodDetection;
     
-    void    tPeriodDetection_init               (tPeriodDetection* const, float* in, float* out, int bufSize, int frameSize, LEAF* const leaf);
-    void    tPeriodDetection_initToPool         (tPeriodDetection* const, float* in, float* out, int bufSize, int frameSize, tMempool* const);
+    void    tPeriodDetection_init               (tPeriodDetection* const, float* in, int bufSize, int frameSize, LEAF* const leaf);
+    void    tPeriodDetection_initToPool         (tPeriodDetection* const, float* in, int bufSize, int frameSize, tMempool* const);
     void    tPeriodDetection_free               (tPeriodDetection* const);
     
     float   tPeriodDetection_tick               (tPeriodDetection* const, float sample);
     float   tPeriodDetection_getPeriod          (tPeriodDetection* const);
+    float   tPeriodDetection_getFidelity        (tPeriodDetection* pd);
     void    tPeriodDetection_setHopSize         (tPeriodDetection* const, int hs);
     void    tPeriodDetection_setWindowSize      (tPeriodDetection* const, int ws);
     void    tPeriodDetection_setFidelityThreshold(tPeriodDetection* const, float threshold);
@@ -553,8 +612,7 @@
     
     //==============================================================================
     
-    // Maybe keep these up to PeriodDetector internal?
-    
+    // Maybe keep from here to tPeriodDetector internal?
     typedef struct _tZeroCrossingInfo
     {
         
@@ -681,20 +739,22 @@
     /*!
      @defgroup tperioddetector tPeriodDetector
      @ingroup analysis
-     @brief
+     @brief Period detection algorithm from Joel de Guzman's Q Audio DSP Library
      @{
      
      @fn void    tPeriodDetector_init    (tPeriodDetector* const detector, float lowestFreq, float highestFreq, float hysteresis, LEAF* const leaf)
-     @brief Initialize a tPeriodDetector to the default LEAF mempool.
+     @brief Initialize a tPeriodDetector to the default mempool of a LEAF instance.
      @param
+     @param leaf A pointer to the leaf instance.
      
      @fn void    tPeriodDetector_initToPool  (tPeriodDetector* const detector, float lowestFreq, float highestFreq, float hysteresis, tMempool* const mempool)
      @brief Initialize a tPeriodDetector to a specified mempool.
      @param
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    tPeriodDetector_free    (tPeriodDetector* const detector)
-     @brief
-     @param
+     @brief Free a tPeriodDetector from its mempool.
+     @param detector A pointer to the tPeriodDetector to free.
      
      @fn int     tPeriodDetector_tick    (tPeriodDetector* const detector, float sample)
      @brief
@@ -769,7 +829,6 @@
 
     typedef struct _tPeriodDetector
     {
-        
         tMempool mempool;
         
         tZeroCrossingCollector          _zc;
@@ -813,14 +872,15 @@
     /*!
      @defgroup tpitchdetector tPitchDetector
      @ingroup analysis
-     @brief
+     @brief Pitch detection algorithm from Joel de Guzman's Q Audio DSP Library
      @{
      
      @fn void    tPitchDetector_init (tPitchDetector* const detector, float lowestFreq, float highestFreq, LEAF* const leaf)
-     @brief Initialize a tPitchDetector to the default LEAF mempool.
+     @brief Initialize a tPitchDetector to the default mempool of a LEAF instance.
      @param detector A pointer to the relevant tPitchDetector.
      @param lowestFreq
      @param highestFreq
+     @param leaf A pointer to the leaf instance.
      
      
      @fn void    tPitchDetector_initToPool   (tPitchDetector* const detector, float lowestFreq, float highestFreq, tMempool* const mempool)
@@ -828,15 +888,16 @@
      @param detector A pointer to the relevant tPitchDetector.
      @param lowestFreq
      @param highestFreq
-     @param mempool
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    tPitchDetector_free (tPitchDetector* const detector)
-     @brief
+     @brief Free a tPitchDetector from its mempool.
      @param detector A pointer to the relevant tPitchDetector.
      
      @fn int     tPitchDetector_tick    (tPitchDetector* const detector, float sample)
      @brief
      @param detector A pointer to the relevant tPitchDetector.
+     @param input
      
      @fn float   tPitchDetector_getFrequency    (tPitchDetector* const detector)
      @brief
@@ -849,6 +910,7 @@
      @fn float   tPitchDetector_harmonic    (tPitchDetector* const detector, int harmonicIndex)
      @brief
      @param detector A pointer to the relevant tPitchDetector.
+     @param harmonicIndex
      
      @fn float   tPitchDetector_predictFrequency (tPitchDetector* const detector)
      @brief
@@ -863,7 +925,7 @@
     
 #define ONSET_PERIODICITY 0.95f
 #define MIN_PERIODICITY 0.9f
-#define DEFAULT_HYSTERESIS -40.0f
+#define DEFAULT_HYSTERESIS -200.0f
 
     typedef struct _pitch_info
     {
@@ -898,13 +960,79 @@
     void    tPitchDetector_setHysteresis    (tPitchDetector* const detector, float hysteresis);
     
     
+    //==============================================================================
+    
+    /*!
+     @defgroup tdualpitchdetector tPitchDetector
+     @ingroup analysis
+     @brief Combined pitch detection algorithm using boht Joel de Guzman's Q Audio DSP Library and Katya Vetters algorithms
+     @{
+     
+     @fn void tDualPitchDetector_init (tDualPitchDetector* const detector, float lowestFreq, float highestFreq, float* inBuffer, int bufSize, LEAF* const leaf)
+     @brief Initialize a tDualPitchDetector to the default mempool of a LEAF instance.
+     @param detector A pointer to the relevant tDualPitchDetector.
+     @param lowestFreq
+     @param highestFreq
+     @param inputBuffer A buffer of float to store input to the pitch detector.
+     @param bufferSize Size of the input buffer.
+     @param leaf A pointer to the leaf instance.
+     
+     @fn void tDualPitchDetector_initToPool (tDualPitchDetector* const detector, float lowestFreq, float highestFreq, float* inBuffer, int bufSize, tMempool* const mempool)
+     @brief Initialize a tDualPitchDetector to a specified mempool.
+     @param detector A pointer to the relevant tPitchDualDetector.
+     @param lowestFreq
+     @param highestFreq
+     @param inputBuffer A buffer of float to store input to the pitch detector.
+     @param bufferSize Size of the input buffer.
+     @param mempool A pointer to the tMempool to use.
+     
+     @fn void    tDualPitchDetector_free (tDualPitchDetector* const detector)
+     @brief Free a tDualPitchDetector from its mempool.
+     @param detector A pointer to the relevant tDualPitchDetector.
+     
+     @fn int     tDualPitchDetector_tick    (tDualPitchDetector* const detector, float sample)
+     @brief
+     @param detector A pointer to the relevant tDualPitchDetector.
+     @param input
+     
+     @fn float   tDualPitchDetector_getFrequency    (tDualPitchDetector* const detector)
+     @brief
+     @param detector A pointer to the relevant tDualPitchDetector.
+     @return The detected frequency.
+     
+     @fn float   tDualPitchDetector_getPeriodicity  (tDualPitchDetector* const detector)
+     @brief
+     @param detector A pointer to the relevant tDualPitchDetector.
+     @return The periodicity of the input.
+     
+     @fn float   tDualPitchDetector_harmonic    (tDualPitchDetector* const detector, int harmonicIndex)
+     @brief
+     @param detector A pointer to the relevant tDualPitchDetector.
+     @param harmonicIndex
+     @return
+     
+     @fn float tDualPitchDetector_predictFrequency (tDualPitchDetector* const detector)
+     @brief
+     @param detector A pointer to the relevant tDualPitchDetector.
+     @return The predicted frequency in Hz.
+     
+     @fn void    tDualPitchDetector_setHysteresis    (tDualPitchDetector* const detector, float hysteresis)
+     @brief Set the hysteresis used in zero crossing detection.
+     @param detector A pointer to the relevant tDualPitchDetector.
+     @param hysteresis The hysteresis in decibels. Defaults to -40db.
+     
+     @fn void    tDualPitchDetector_setPeriodicityThreshold (tDualPitchDetector* const detector, float thresh)
+     @brief Set the threshold for periodicity of a signal to be considered as pitched.
+     @param detector A pointer to the relevant tDualPitchDetector.
+     @param threshold The periodicity threshold from 0.0 to 1.0 with 1.0 being perfectly periodic.
+     
+     @} */
 
     typedef struct _tDualPitchDetector
     {
-        
         tMempool mempool;
         
-        tPitchDetector _pd1;
+        tPeriodDetection _pd1;
         tPitchDetector _pd2;
         _pitch_info _current;
         float _mean;
@@ -911,12 +1039,15 @@
         float _predicted_frequency;
         int _first;
         
+        float highest, lowest;
+        float thresh;
+
     } _tDualPitchDetector;
     
     typedef _tDualPitchDetector* tDualPitchDetector;
     
-    void    tDualPitchDetector_init (tDualPitchDetector* const detector, float lowestFreq, float highestFreq, LEAF* const leaf);
-    void    tDualPitchDetector_initToPool   (tDualPitchDetector* const detector, float lowestFreq, float highestFreq, tMempool* const mempool);
+    void    tDualPitchDetector_init (tDualPitchDetector* const detector, float lowestFreq, float highestFreq, float* inBuffer, int bufSize, LEAF* const leaf);
+    void    tDualPitchDetector_initToPool   (tDualPitchDetector* const detector, float lowestFreq, float highestFreq, float* inBuffer, int bufSize, tMempool* const mempool);
     void    tDualPitchDetector_free (tDualPitchDetector* const detector);
     
     int     tDualPitchDetector_tick    (tDualPitchDetector* const detector, float sample);
@@ -926,6 +1057,7 @@
     float   tDualPitchDetector_predictFrequency (tDualPitchDetector* const detector);
     
     void    tDualPitchDetector_setHysteresis    (tDualPitchDetector* const detector, float hysteresis);
+    void    tDualPitchDetector_setPeriodicityThreshold (tDualPitchDetector* const detector, float thresh);
     
     
     
--- a/leaf/Inc/leaf-delay.h
+++ b/leaf/Inc/leaf-delay.h
@@ -35,58 +35,76 @@
      @{
      
      @fn void        tDelay_init         (tDelay* const, uint32_t delay, uint32_t maxDelay, LEAF* const leaf)
-     @brief
-     @param
+     @brief Initialize a tDelay to the default mempool of a LEAF instance.
+     @param delay A pointer to the tDelay to initialize.
+     @param initalLength
+     @param maxLength
+     @param leaf A pointer to the leaf instance.
      
      @fn void        tDelay_initToPool   (tDelay* const, uint32_t delay, uint32_t maxDelay, tMempool* const)
-     @brief
-     @param
+     @brief Initialize a tDelay to a specified mempool.
+     @param delay A pointer to the tDelay to initialize.
+     @param initalLength
+     @param maxLength
+     @param mempool A pointer to the tMempool to use.
      
      @fn void        tDelay_free         (tDelay* const)
-     @brief
-     @param
+     @brief Free a tDelay from its mempool.
+     @param delay A pointer to the tDelay to free.
      
      @fn void        tDelay_clear        (tDelay* const)
      @brief
-     @param
+     @param delay A pointer to the relevant tDelay.
      
-     @fn int         tDelay_setDelay     (tDelay* const, uint32_t delay)
+     @fn void        tDelay_setDelay     (tDelay* const, uint32_t delay)
      @brief
-     @param
+     @param delay A pointer to the relevant tDelay.
+     @param delayLength The new delay length in samples. Cannot be greater than the max delay length given on initialization.
      
      @fn uint32_t    tDelay_getDelay     (tDelay* const)
      @brief
-     @param
+     @param delay A pointer to the relevant tDelay.
+     @return The current delay length.
      
      @fn void        tDelay_tapIn        (tDelay* const, float in, uint32_t tapDelay)
      @brief
-     @param
+     @param delay A pointer to the relevant tDelay.
+     @param input
+     @param position
      
      @fn float       tDelay_tapOut       (tDelay* const, uint32_t tapDelay)
      @brief
-     @param
+     @param delay A pointer to the relevant tDelay.
+     @param position
+     @return
      
      @fn float       tDelay_addTo        (tDelay* const, float value, uint32_t tapDelay)
      @brief
-     @param
+     @param delay A pointer to the relevant tDelay.
+     @param input
+     @param position
+     @return
      
      @fn float       tDelay_tick         (tDelay* const, float sample)
      @brief
-     @param
+     @param delay A pointer to the relevant tDelay.
+     @param input
+     @return
      
      @fn float       tDelay_getLastOut   (tDelay* const)
      @brief
-     @param
+     @param delay A pointer to the relevant tDelay.
+     @return
      
      @fn float       tDelay_getLastIn    (tDelay* const)
      @brief
-     @param
+     @param delay A pointer to the relevant tDelay.
+     @return
      
      @} */
     
     typedef struct _tDelay
     {
-        
         tMempool mempool;
         
         float gain;
@@ -107,7 +125,7 @@
     void        tDelay_free         (tDelay* const);
     
     void        tDelay_clear        (tDelay* const);
-    int         tDelay_setDelay     (tDelay* const, uint32_t delay);
+    void        tDelay_setDelay     (tDelay* const, uint32_t delay);
     uint32_t    tDelay_getDelay     (tDelay* const);
     void        tDelay_tapIn        (tDelay* const, float in, uint32_t tapDelay);
     float       tDelay_tapOut       (tDelay* const, uint32_t tapDelay);
@@ -125,66 +143,86 @@
      @{
      
      @fn void    tLinearDelay_init        (tLinearDelay* const, float delay, uint32_t maxDelay, LEAF* const leaf)
-     @brief
-     @param
+     @brief Initialize a tLinearDelay to the default mempool of a LEAF instance.
+     @param delay A pointer to the tLinearDelay to initialize.
+     @param initialLength
+     @param maxLength
+     @param leaf A pointer to the leaf instance.
      
      @fn void    tLinearDelay_initToPool  (tLinearDelay* const, float delay, uint32_t maxDelay, tMempool* const)
-     @brief
-     @param
+     @brief Initialize a tLinearDelay to a specified mempool.
+     @param delay A pointer to the tLinearDelay to initialize.
+     @param initialLength
+     @param maxLength
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    tLinearDelay_free        (tLinearDelay* const)
-     @brief
-     @param
+     @brief Free a tLinearDelay from its mempool.
+     @param delay A pointer to the tLinearDelay to free.
      
      @fn void    tLinearDelay_clear         (tLinearDelay* const dl)
      @brief
-     @param
+     @param delay A pointer to the relevant tLinearDelay.
      
-     @fn int     tLinearDelay_setDelay    (tLinearDelay* const, float delay)
+     @fn void   tLinearDelay_setDelay    (tLinearDelay* const, float delay)
      @brief
-     @param
+     @param delay A pointer to the relevant tLinearDelay.
+     @param delayLength The new delay length in samples. Cannot be greater than the max delay length given on initialization.
      
      @fn float   tLinearDelay_getDelay    (tLinearDelay* const)
      @brief
-     @param
+     @param delay A pointer to the relevant tLinearDelay.
+     @return
      
      @fn void    tLinearDelay_tapIn       (tLinearDelay* const, float in, uint32_t tapDelay)
      @brief
-     @param
+     @param delay A pointer to the relevant tLinearDelay.
+     @param input
+     @param position
      
      @fn float     tLinearDelay_tapOut      (tLinearDelay* const, uint32_t tapDelay)
      @brief
-     @param
+     @param delay A pointer to the relevant tLinearDelay.
+     @param position
+     @return
      
      @fn float   tLinearDelay_addTo       (tLinearDelay* const, float value, uint32_t tapDelay)
      @brief
-     @param
+     @param delay A pointer to the relevant tLinearDelay.
+     @param input
+     @param position
+     @return
      
      @fn float   tLinearDelay_tick        (tLinearDelay* const, float sample)
      @brief
-     @param
+     @param delay A pointer to the relevant tLinearDelay.
+     @param input
+     @return
      
      @fn void    tLinearDelay_tickIn      (tLinearDelay* const, float input)
      @brief
-     @param
+     @param delay A pointer to the relevant tLinearDelay.
+     @param input
      
      @fn float   tLinearDelay_tickOut     (tLinearDelay* const)
      @brief
-     @param
+     @param delay A pointer to the relevant tLinearDelay.
+     @return
      
      @fn float   tLinearDelay_getLastOut  (tLinearDelay* const)
      @brief
-     @param
+     @param delay A pointer to the relevant tLinearDelay.
+     @return
      
      @fn float   tLinearDelay_getLastIn   (tLinearDelay* const)
      @brief
-     @param
+     @param delay A pointer to the relevant tLinearDelay.
+     @return
      
      @} */
     
     typedef struct _tLinearDelay
     {
-        
         tMempool mempool;
         
         float gain;
@@ -209,10 +247,10 @@
     void    tLinearDelay_free        (tLinearDelay* const);
     
     void    tLinearDelay_clear         (tLinearDelay* const dl);
-    int     tLinearDelay_setDelay    (tLinearDelay* const, float delay);
+    void    tLinearDelay_setDelay    (tLinearDelay* const, float delay);
     float   tLinearDelay_getDelay    (tLinearDelay* const);
     void    tLinearDelay_tapIn       (tLinearDelay* const, float in, uint32_t tapDelay);
-    float     tLinearDelay_tapOut      (tLinearDelay* const, uint32_t tapDelay);
+    float   tLinearDelay_tapOut      (tLinearDelay* const, uint32_t tapDelay);
     float   tLinearDelay_addTo       (tLinearDelay* const, float value, uint32_t tapDelay);
     float   tLinearDelay_tick        (tLinearDelay* const, float sample);
     void    tLinearDelay_tickIn      (tLinearDelay* const, float input);
@@ -231,74 +269,96 @@
      @{
      
      @fn void       tHermiteDelay_init             (tHermiteDelay* const dl, float delay, uint32_t maxDelay, LEAF* const leaf)
-     @brief
-     @param
+     @brief Initialize a tHermiteDelay to the default mempool of a LEAF instance.
+     @param delay A pointer to the tHermiteDelay to initialize.
+     @param initialLength
+     @param maxLength
+     @param leaf A pointer to the leaf instance.
      
      @fn void    tHermiteDelay_initToPool      (tHermiteDelay* const dl, float delay, uint32_t maxDelay, tMempool* const mp)
-     @brief
-     @param
+     @brief Initialize a tHermiteDelay to a specified mempool.
+     @param delay A pointer to the tHermiteDelay to initialize.
+     @param initialLength
+     @param maxLength
+     @param mempool A pointer to the tMempool to use.
      
      @fn void     tHermiteDelay_free            (tHermiteDelay* const dl)
-     @brief
-     @param
+     @brief Free a tHermiteDelay from its mempool.
+     @param delay A pointer to the tHermiteDelay to free.
      
      @fn void    tHermiteDelay_clear            (tHermiteDelay* const dl)
      @brief
-     @param
+     @param delay A pointer to the relevant tHermiteDelay.
      
      @fn float   tHermiteDelay_tick             (tHermiteDelay* const dl, float input)
      @brief
-     @param
+     @param delay A pointer to the relevant tHermiteDelay.
+     @param input
+     @return
      
      @fn void       tHermiteDelay_tickIn         (tHermiteDelay* const dl, float input)
      @brief
-     @param
+     @param delay A pointer to the relevant tHermiteDelay.
+     @param input
      
      @fn float   tHermiteDelay_tickOut         (tHermiteDelay* const dl)
      @brief
-     @param
+     @param delay A pointer to the relevant tHermiteDelay.
+     @return
      
-     @fn int     tHermiteDelay_setDelay         (tHermiteDelay* const dl, float delay)
+     @fn void    tHermiteDelay_setDelay         (tHermiteDelay* const dl, float delay)
      @brief
-     @param
+     @param delay A pointer to the relevant tHermiteDelay.
+     @param delayLength The new delay length in samples. Cannot be greater than the max delay length given on initialization.
      
      @fn float     tHermiteDelay_tapOut         (tHermiteDelay* const dl, uint32_t tapDelay)
      @brief
-     @param
+     @param delay A pointer to the relevant tHermiteDelay.
+     @param position
+     @return
      
      @fn void     tHermiteDelay_tapIn         (tHermiteDelay* const dl, float value, uint32_t tapDelay)
      @brief
-     @param
+     @param delay A pointer to the relevant tHermiteDelay.
+     @param input
+     @param position
      
      @fn float     tHermiteDelay_addTo         (tHermiteDelay* const dl, float value, uint32_t tapDelay)
      @brief
-     @param
+     @param delay A pointer to the relevant tHermiteDelay.
+     @param input
+     @param position
+     @return
      
      @fn float   tHermiteDelay_getDelay         (tHermiteDelay* const dl)
      @brief
-     @param
+     @param delay A pointer to the relevant tHermiteDelay.
+     @return
      
      @fn float   tHermiteDelay_getLastOut     (tHermiteDelay* const dl)
      @brief
-     @param
+     @param delay A pointer to the relevant tHermiteDelay.
+     @return
      
      @fn float   tHermiteDelay_getLastIn     (tHermiteDelay* const dl)
      @brief
-     @param
+     @param delay A pointer to the relevant tHermiteDelay.
+     @return
      
      @fn void     tHermiteDelay_setGain         (tHermiteDelay* const dl, float gain)
      @brief
-     @param
+     @param delay A pointer to the relevant tHermiteDelay.
+     @param gain
      
      @fn float     tHermiteDelay_getGain         (tHermiteDelay* const dl)
      @brief
-     @param
+     @param delay A pointer to the relevant tHermiteDelay.
+     @return
      
      @} */
     
     typedef struct _tHermiteDelay
     {
-        
         tMempool mempool;
         
         float gain;
@@ -317,23 +377,23 @@
     
     typedef _tHermiteDelay* tHermiteDelay;
     
-    void       tHermiteDelay_init             (tHermiteDelay* const dl, float delay, uint32_t maxDelay, LEAF* const leaf);
-    void    tHermiteDelay_initToPool      (tHermiteDelay* const dl, float delay, uint32_t maxDelay, tMempool* const mp);
-    void     tHermiteDelay_free            (tHermiteDelay* const dl);
+    void    tHermiteDelay_init (tHermiteDelay* const dl, float delay, uint32_t maxDelay, LEAF* const leaf);
+    void    tHermiteDelay_initToPool (tHermiteDelay* const dl, float delay, uint32_t maxDelay, tMempool* const mp);
+    void    tHermiteDelay_free          (tHermiteDelay* const dl);
     
-    void    tHermiteDelay_clear            (tHermiteDelay* const dl);
-    float   tHermiteDelay_tick             (tHermiteDelay* const dl, float input);
-    void       tHermiteDelay_tickIn         (tHermiteDelay* const dl, float input);
-    float   tHermiteDelay_tickOut         (tHermiteDelay* const dl);
-    int     tHermiteDelay_setDelay         (tHermiteDelay* const dl, float delay);
-    float     tHermiteDelay_tapOut         (tHermiteDelay* const dl, uint32_t tapDelay);
-    void     tHermiteDelay_tapIn         (tHermiteDelay* const dl, float value, uint32_t tapDelay);
-    float     tHermiteDelay_addTo         (tHermiteDelay* const dl, float value, uint32_t tapDelay);
-    float   tHermiteDelay_getDelay         (tHermiteDelay* const dl);
-    float   tHermiteDelay_getLastOut     (tHermiteDelay* const dl);
+    void    tHermiteDelay_clear         (tHermiteDelay* const dl);
+    float   tHermiteDelay_tick          (tHermiteDelay* const dl, float input);
+    void    tHermiteDelay_tickIn        (tHermiteDelay* const dl, float input);
+    float   tHermiteDelay_tickOut       (tHermiteDelay* const dl);
+    void    tHermiteDelay_setDelay      (tHermiteDelay* const dl, float delay);
+    float   tHermiteDelay_tapOut        (tHermiteDelay* const dl, uint32_t tapDelay);
+    void    tHermiteDelay_tapIn         (tHermiteDelay* const dl, float value, uint32_t tapDelay);
+    float   tHermiteDelay_addTo         (tHermiteDelay* const dl, float value, uint32_t tapDelay);
+    float   tHermiteDelay_getDelay      (tHermiteDelay* const dl);
+    float   tHermiteDelay_getLastOut    (tHermiteDelay* const dl);
     float   tHermiteDelay_getLastIn     (tHermiteDelay* const dl);
-    void     tHermiteDelay_setGain         (tHermiteDelay* const dl, float gain);
-    float     tHermiteDelay_getGain         (tHermiteDelay* const dl);
+    void    tHermiteDelay_setGain       (tHermiteDelay* const dl, float gain);
+    float   tHermiteDelay_getGain       (tHermiteDelay* const dl);
     
     
     //==============================================================================
@@ -345,58 +405,76 @@
      @{
      
      @fn void    tAllpassDelay_init        (tAllpassDelay* const, float delay, uint32_t maxDelay, LEAF* const leaf)
-     @brief
-     @param
+     @brief Initialize a tAllpassDelay to the default mempool of a LEAF instance.
+     @param delay A pointer to the tAllpassDelay to initialize.
+     @param initialLength
+     @param maxLength
+     @param leaf A pointer to the leaf instance.
      
      @fn void    tAllpassDelay_initToPool  (tAllpassDelay* const, float delay, uint32_t maxDelay, tMempool* const)
-     @brief
-     @param
+     @brief Initialize a tAllpassDelay to a specified mempool.
+     @param delay A pointer to the tAllpassDelay to initialize.
+     @param initialLength
+     @param maxLength
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    tAllpassDelay_free        (tAllpassDelay* const)
-     @brief
-     @param
+     @brief Free a tAllpassDelay from its mempool.
+     @param delay A pointer to the tAllpassDelay to free.
      
      @fn void    tAllpassDelay_clear       (tAllpassDelay* const)
      @brief
-     @param
+     @param delay A pointer to the relevant tAllpassDelay.
      
-     @fn int     tAllpassDelay_setDelay    (tAllpassDelay* const, float delay)
+     @fn void    tAllpassDelay_setDelay    (tAllpassDelay* const, float delay)
      @brief
-     @param
+     @param delay A pointer to the relevant tAllpassDelay.
+     @param delayLength The new delay length in samples. Cannot be greater than the max delay length given on initialization.
      
      @fn float   tAllpassDelay_getDelay    (tAllpassDelay* const)
      @brief
-     @param
+     @param delay A pointer to the relevant tAllpassDelay.
+     @return The current delay length in samples.
      
      @fn void    tAllpassDelay_tapIn       (tAllpassDelay* const, float in, uint32_t tapDelay)
      @brief
-     @param
+     @param delay A pointer to the relevant tAllpassDelay.
+     @param inptu
+     @param position
      
      @fn float   tAllpassDelay_tapOut      (tAllpassDelay* const, uint32_t tapDelay)
      @brief
-     @param
+     @param delay A pointer to the relevant tAllpassDelay.
+     @param position
+     @return
      
      @fn float   tAllpassDelay_addTo       (tAllpassDelay* const, float value, uint32_t tapDelay)
      @brief
-     @param
+     @param delay A pointer to the relevant tAllpassDelay.
+     @param input
+     @param position
+     @return
      
      @fn float   tAllpassDelay_tick        (tAllpassDelay* const, float sample)
      @brief
-     @param
+     @param delay A pointer to the relevant tAllpassDelay.
+     @param input
+     @return
      
      @fn float   tAllpassDelay_getLastOut  (tAllpassDelay* const)
      @brief
-     @param
+     @param delay A pointer to the relevant tAllpassDelay.
+     @return
      
      @fn float   tAllpassDelay_getLastIn   (tAllpassDelay* const)
      @brief
-     @param
+     @param delay A pointer to the relevant tAllpassDelay.
+     @return
      
      @} */
     
     typedef struct _tAllpassDelay
     {
-        
         tMempool mempool;
         
         float gain;
@@ -423,7 +501,7 @@
     void    tAllpassDelay_free        (tAllpassDelay* const);
     
     void    tAllpassDelay_clear       (tAllpassDelay* const);
-    int     tAllpassDelay_setDelay    (tAllpassDelay* const, float delay);
+    void    tAllpassDelay_setDelay    (tAllpassDelay* const, float delay);
     float   tAllpassDelay_getDelay    (tAllpassDelay* const);
     void    tAllpassDelay_tapIn       (tAllpassDelay* const, float in, uint32_t tapDelay);
     float   tAllpassDelay_tapOut      (tAllpassDelay* const, uint32_t tapDelay);
@@ -441,62 +519,80 @@
      @{
      
      @fn void    tTapeDelay_init        (tTapeDelay* const, float delay, uint32_t maxDelay, LEAF* const leaf)
-     @brief
-     @param
+     @brief Initialize a tTapeDelay to the default mempool of a LEAF instance.
+     @param delay A pointer to the tTapeDelay to initialize.
+     @param initialLength
+     @param maxLength
+     @param leaf A pointer to the leaf instance.
      
      @fn void    tTapeDelay_initToPool  (tTapeDelay* const, float delay, uint32_t maxDelay, tMempool* const)
-     @brief
-     @param
+     @brief Initialize a tTapeDelay to a specified mempool.
+     @param delay A pointer to the tTapeDelay to initialize.
+     @param initialLength
+     @param maxLength
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    tTapeDelay_free        (tTapeDelay* const)
-     @brief
-     @param
+     @brief Free a tTapeDelay from its mempool.
+     @param delay A pointer to the tTapeDelay to free.
      
      @fn void    tTapeDelay_clear       (tTapeDelay* const)
-     @brief
-     @param
+     @brief 
+     @param delay A pointer to the relevant tTapeDelay.
      
      @fn void    tTapeDelay_setDelay    (tTapeDelay* const, float delay)
      @brief
-     @param
+     @param delay A pointer to the relevant tTapeDelay.
+     @param delayLength The new delay length in samples. Cannot be greater than the max delay length given on initialization.
      
      @fn float   tTapeDelay_getDelay    (tTapeDelay* const)
      @brief
-     @param
+     @param delay A pointer to the relevant tTapeDelay.
+     @return
      
      @fn void    tTapeDelay_tapIn       (tTapeDelay* const, float in, uint32_t tapDelay)
      @brief
-     @param
+     @param delay A pointer to the relevant tTapeDelay.
+     @param input
+     @param position
      
      @fn float   tTapeDelay_tapOut      (tTapeDelay* const d, float tapDelay)
      @brief
-     @param
+     @param delay A pointer to the relevant tTapeDelay.
+     @param position
+     @return
      
      @fn float   tTapeDelay_addTo       (tTapeDelay* const, float value, uint32_t tapDelay)
      @brief
-     @param
+     @param delay A pointer to the relevant tTapeDelay.
+     @param input
+     @param position
+     @return
      
      @fn float   tTapeDelay_tick        (tTapeDelay* const, float sample)
      @brief
-     @param
+     @param delay A pointer to the relevant tTapeDelay.
+     @param input
+     @return
      
      @fn void    tTapeDelay_incrementInPoint(tTapeDelay* const dl)
      @brief
-     @param
+     @param delay A pointer to the relevant tTapeDelay.
      
      @fn float   tTapeDelay_getLastOut  (tTapeDelay* const)
      @brief
-     @param
+     @param delay A pointer to the relevant tTapeDelay.
+     @return
      
      @fn float   tTapeDelay_getLastIn   (tTapeDelay* const)
      @brief
-     @param
+     @param delay A pointer to the relevant tTapeDelay.
+     @return
      
      @} */
     
     typedef struct _tTapeDelay
     {
-        
         tMempool mempool;
         
         float gain;
@@ -540,40 +636,46 @@
      @{
      
      @fn void    tRingBuffer_init     (tRingBuffer* const ring, int size, LEAF* const leaf)
-     @brief
-     @param
+     @brief Initialize a tRingBuffer to the default mempool of a LEAF instance.
+     @param buffer A pointer to the tRingbuffer to initialize.
+     @param size Size of the buffer. Should be a power of 2. Will otherwise be adjusted to the nearest greater power of 2.
+     @param leaf A pointer to the leaf instance.
      
      @fn void    tRingBuffer_initToPool   (tRingBuffer* const ring, int size, tMempool* const mempool)
-     @brief
-     @param
+     @brief Initialize a tRingBuffer to a specified mempool.
+     @param buffer A pointer to the tRingbuffer to initialize.
+     @param size Size of the buffer. Should be a power of 2. Will otherwise be adjusted to the nearest greater power of 2.
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    tRingBuffer_free     (tRingBuffer* const ring)
-     @brief
-     @param
+     @brief Free a tRingBuffer from its mempool.
+     @param buffer A pointer to the tRingBuffer to free.
      
      @fn void    tRingBuffer_push     (tRingBuffer* const ring, float val)
-     @brief
-     @param
+     @brief Push a value to the ring buffer, overwriting the oldest value if the buffer is full.
+     @param buffer A pointer to the relevant tRingBuffer.
+     @param input The value to push to the buffer.
      
      @fn float   tRingBuffer_getNewest    (tRingBuffer* const ring)
-     @brief
-     @param
+     @brief Get the newest value in the ring buffer.
+     @param buffer A pointer to the relevant tRingBuffer.
+     @return The newest value in the ring buffer.
      
      @fn float   tRingBuffer_getOldest    (tRingBuffer* const ring)
-     @brief
-     @param
+     @brief Get the oldest value in the ring buffer.
+     @param buffer A pointer to the relevant tRingBuffer.
+     @return The oldest value in the ring buffer.
      
      @fn float   tRingBuffer_get      (tRingBuffer* const ring, int index)
-     @brief
-     @param
-     
-     @fn float   tRingBuffer_clear    (tRingBuffer* const ring)
-     @brief
-     @param
-     
+     @brief Get the value at an index of the buffer.
+     @param buffer A pointer to the relevant tRingBuffer.
+     @param index The index to access.
+     @return The value at the given index.
+
      @fn int     tRingBuffer_getSize  (tRingBuffer* const ring)
-     @brief
-     @param
+     @brief Get the size of the ring buffer.
+     @param buffer A pointer to the relevant tRingBuffer.
+     @return The size of the buffer.
      
      @} */
     typedef struct _tRingBuffer
@@ -597,7 +699,6 @@
     float   tRingBuffer_getNewest    (tRingBuffer* const ring);
     float   tRingBuffer_getOldest    (tRingBuffer* const ring);
     float   tRingBuffer_get      (tRingBuffer* const ring, int index);
-    float   tRingBuffer_clear    (tRingBuffer* const ring);
     int     tRingBuffer_getSize  (tRingBuffer* const ring);
     
 #ifdef __cplusplus
--- a/leaf/Inc/leaf-distortion.h
+++ b/leaf/Inc/leaf-distortion.h
@@ -36,24 +36,26 @@
      @{
      
      @fn void    tSampleReducer_init    (tSampleReducer* const, LEAF* const leaf)
-     @brief
-     @param
+     @brief Initialize a tSampleReducer to the default mempool of a LEAF instance.
+     @param reducer A pointer to the tSampleReducer to initialize.
+     @param leaf A pointer to the leaf instance.
      
      @fn void    tSampleReducer_initToPool   (tSampleReducer* const, tMempool* const)
-     @brief
-     @param
+     @brief Initialize a tSampleReducer to a specified mempool.
+     @param reducer A pointer to the tSampleReducer to initialize.
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    tSampleReducer_free    (tSampleReducer* const)
-     @brief
-     @param
+     @brief Free a tSampleReducer from its mempool.
+     @param reducer A pointer to the tSampleReducer to free.
      
      @fn float   tSampleReducer_tick    (tSampleReducer* const, float input)
      @brief
-     @param
+     @param reducer A pointer to the relevant tSampleReducer.
      
      @fn void    tSampleReducer_setRatio (tSampleReducer* const, float ratio)
      @brief
-     @param
+     @param reducer A pointer to the relevant tSampleReducer.
      
      @} */
     
@@ -84,32 +86,34 @@
      @{
      
      @fn void    tOversampler_init           (tOversampler* const, int order, int extraQuality, LEAF* const leaf)
-     @brief
-     @param
+     @brief Initialize a tOversampler to the default mempool of a LEAF instance.
+     @param oversampler A pointer to the tOversampler to initialize.
+     @param leaf A pointer to the leaf instance.
      
      @fn void    tOversampler_initToPool     (tOversampler* const, int order, int extraQuality, tMempool* const)
-     @brief
-     @param
+     @brief Initialize a tOversampler to a specified mempool.
+     @param oversampler A pointer to the tOversampler to initialize.
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    tOversampler_free           (tOversampler* const)
-     @brief
-     @param
+     @brief Free a tOversampler from its mempool.
+     @param oversampler A pointer to the tOversampler to free.
      
      @fn void    tOversampler_upsample       (tOversampler* const, float input, float* output)
      @brief
-     @param
+     @param oversampler A pointer to the relevant tOversampler.
      
      @fn float   tOversampler_downsample     (tOversampler* const os, float* input)
      @brief
-     @param
+     @param oversampler A pointer to the relevant tOversampler.
      
      @fn float   tOversampler_tick           (tOversampler* const, float input, float* oversample, float (*effectTick)(float))
      @brief
-     @param
+     @param oversampler A pointer to the relevant tOversampler.
      
      @fn int     tOversampler_getLatency     (tOversampler* const os)
      @brief
-     @param
+     @param oversampler A pointer to the relevant tOversampler.
      
      @} */
     
@@ -145,20 +149,22 @@
      @{
      
      @fn void    tLockhartWavefolder_init    (tLockhartWavefolder* const, LEAF* const leaf)
-     @brief
-     @param
+     @brief Initialize a tLockhartWavefolder to the default mempool of a LEAF instance.
+     @param wavefolder A pointer to the tLockhartWavefolder to initialize.
+     @param leaf A pointer to the leaf instance.
      
      @fn void    tLockhartWavefolder_initToPool   (tLockhartWavefolder* const, tMempool* const)
-     @brief
-     @param
+     @brief Initialize a tLockhartWavefolder to a specified mempool.
+     @param wavefolder A pointer to the tLockhartWavefolder to initialize.
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    tLockhartWavefolder_free    (tLockhartWavefolder* const)
-     @brief
-     @param
+     @brief Free a tLockhartWavefolder from its mempool.
+     @param wavefolder A pointer to the tLockhartWavefolder to free.
      
      @fn float   tLockhartWavefolder_tick    (tLockhartWavefolder* const, float samp)
      @brief
-     @param
+     @param wavefolder A pointer to the relevant tLockhartWavefolder.
      
      @} */
     
@@ -211,35 +217,41 @@
      @{
      
      @fn void    tCrusher_init    (tCrusher* const, LEAF* const leaf)
-     @brief
-     @param
+     @brief Initialize a tCrusher to the default mempool of a LEAF instance.
+     @param crusher A pointer to the tCrusher to initialize.
+     @param leaf A pointer to the leaf instance.f
      
      @fn void    tCrusher_initToPool   (tCrusher* const, tMempool* const)
-     @brief
-     @param
+     @brief Initialize a tCrusher to a specified mempool.
+     @param crusher A pointer to the tCrusher to initialize.
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    tCrusher_free    (tCrusher* const)
-     @brief
-     @param
+     @brief Free a tCrusher from its mempool.
+     @param crusher A pointer to the tCrusher to free.
      
      @fn float   tCrusher_tick    (tCrusher* const, float input)
      @brief
-     @param
+     @param crusher A pointer to the relevant tCrusher.
      
      @fn void    tCrusher_setOperation (tCrusher* const, float op)
      @brief
-     @param 0.0 - 1.0
+     @param crusher A pointer to the relevant tCrusher.
+     @param operation 0.0 - 1.0
      
      @fn void    tCrusher_setQuality (tCrusher* const, float val)
      @brief
-     @param 0.0 - 1.0
+     @param crusher A pointer to the relevant tCrusher.
+     @param quality 0.0 - 1.0
      
      @fn void    tCrusher_setRound (tCrusher* const, float rnd)
      @brief
+     @param crusher A pointer to the relevant tCrusher.
      @param what division to round to
      
      @fn void    tCrusher_setSamplingRatio (tCrusher* const, float ratio)
      @brief
+     @param crusher A pointer to the relevant tCrusher.
      @param sampling ratio
      
      @} */
--- a/leaf/Inc/leaf-dynamics.h
+++ b/leaf/Inc/leaf-dynamics.h
@@ -38,20 +38,22 @@
      @{
      
      @fn void    tCompressor_init        (tCompressor* const, LEAF* const leaf)
-     @brief
-     @param
+     @brief Initialize a tCompressor to the default mempool of a LEAF instance.
+     @param compressor A pointer to the tCompressor to initialize.
+     @param leaf A pointer to the leaf instance.
      
      @fn void    tCompressor_initToPool  (tCompressor* const, tMempool* const)
-     @brief
-     @param
+     @brief Initialize a tCompressor to a specified mempool.
+     @param compressor A pointer to the tCompressor to initialize.
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    tCompressor_free        (tCompressor* const)
-     @brief
-     @param
+     @brief Free a tCompressor from its mempool.
+     @param compressor A pointer to the tCompressor to free.
      
      @fn float   tCompressor_tick        (tCompressor* const, float input)
      @brief
-     @param
+     @param compressor A pointer to the relevant tCompressor.
      
      @} */
    
@@ -82,44 +84,47 @@
      @defgroup tfeedbackleveler tFeedbackLeveler
      @ingroup dynamics
      @brief An auto VCA that you put into a feedback circuit to make it stay at the same level.
-     @detail An auto VCA that you put into a feedback circuit to make it stay at the same level. It can enforce level bidirectionally (amplifying and attenuating as needed) or just attenutating. The former option allows for infinite sustain strings, for example, while The latter option allows for decaying strings, which can never exceed a specific level.
+     @detail An auto VCA that you put into a feedback circuit to make it stay at the same level. It can enforce level bidirectionally (amplifying and attenuating as needed) or just attenutating. The former option allows for infinite sustain strings, for example, while the latter option allows for decaying strings, which can never exceed a specific level.
      @{
      
      @fn void tFeedbackLeveler_init (tFeedbackLeveler* const, float targetLevel, float factor, float strength, int mode, LEAF* const leaf)
-     @brief
-     @param
+     @brief Initialize a tFeedbackLeveler to the default mempool of a LEAF instance.
+     @param leveler A pointer to the tFeedbackLeveler to initialize.
+     @param leaf A pointer to the leaf instance.
      
      @fn void tFeedbackLeveler_initToPool (tFeedbackLeveler* const, float targetLevel, float factor, float strength, int mode, tMempool* const)
-     @brief
-     @param
+     @brief Initialize a tFeedbackLeveler to a specified mempool.
+     @param leveler A pointer to the tFeedbackLeveler to initialize.
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    tFeedbackLeveler_free           (tFeedbackLeveler* const)
-     @brief
-     @param
+     @brief Free a tFeedbackLeveler from its mempool.
+     @param leveler A pointer to the tFeedbackLeveler to free.
      
      @fn float   tFeedbackLeveler_tick           (tFeedbackLeveler* const, float input)
      @brief
-     @param
+     @param leveler A pointer to the relevant tFeedbackLeveler.
      
      @fn float   tFeedbackLeveler_sample         (tFeedbackLeveler* const)
      @brief
-     @param
+     @param leveler A pointer to the relevant tFeedbackLeveler.
      
      @fn void    tFeedbackLeveler_setTargetLevel (tFeedbackLeveler* const, float TargetLevel)
      @brief
-     @param
+     @param leveler A pointer to the relevant tFeedbackLeveler.
      
      @fn void    tFeedbackLeveler_setFactor      (tFeedbackLeveler* const, float factor)
      @brief
-     @param
+     @param leveler A pointer to the relevant tFeedbackLeveler.
      
      @fn void    tFeedbackLeveler_setMode        (tFeedbackLeveler* const, int mode)
      @brief
-     @param 0 for upwards limiting only, 1 for biderctional limiting
+     @param leveler A pointer to the relevant tFeedbackLeveler.
+     @param mode 0 for upwards limiting only, 1 for biderctional limiting
     
      @fn void    tFeedbackLeveler_setStrength    (tFeedbackLeveler* const, float strength)
      @brief
-     @param
+     @param leveler A pointer to the relevant tFeedbackLeveler.
      
      @} */
     
@@ -159,28 +164,30 @@
      @{
      
      @fn void    tThreshold_init        (tThreshold* const, float low, float high, LEAF* const leaf)
-     @brief
-     @param
+     @brief Initialize a tThreshold to the default mempool of a LEAF instance.
+     @param threshold A pointer to the tThreshold to initialize.
+     @param leaf A pointer to the leaf instance.
      
      @fn void    tThreshold_initToPool  (tThreshold* const, float low, float high, tMempool* const)
-     @brief
-     @param
+     @brief Initialize a tThreshold to a specified mempool.
+     @param threshold A pointer to the tThreshold to initialize.
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    tThreshold_free        (tThreshold* const)
-     @brief
-     @param
+     @brief Free a tThreshold from its mempool.
+     @param threshold A pointer to the tThreshold to free.
      
      @fn int   tThreshold_tick        (tThreshold* const, float input)
      @brief
-     @param
+     @param threshold A pointer to the relevant tThreshold.
      
      @fn void   tThreshold_setLow        (tThreshold* const, float low)
      @brief
-     @param
+     @param threshold A pointer to the relevant tThreshold.
      
      @fn void   tThreshold_setHigh       (tThreshold* const, float high)
      @brief
-     @param
+     @param threshold A pointer to the relevant tThreshold.
      
      @} */
 
@@ -198,7 +205,7 @@
     void    tThreshold_initToPool  (tThreshold* const, float low, float high, tMempool* const);
     void    tThreshold_free        (tThreshold* const);
 
-    int   tThreshold_tick        (tThreshold* const, float input);
+    int    tThreshold_tick        (tThreshold* const, float input);
     void   tThreshold_setLow        (tThreshold* const, float low);
     void   tThreshold_setHigh       (tThreshold* const, float high);
 
--- a/leaf/Inc/leaf-effects.h
+++ b/leaf/Inc/leaf-effects.h
@@ -31,60 +31,62 @@
      @{
      
      @fn void    tTalkbox_init           (tTalkbox* const, int bufsize, LEAF* const leaf)
-     @brief
-     @param
+     @brief Initialize a tTalkbox to the default mempool of a LEAF instance.
+     @param talkbox A pointer to the tTalkbox to initialize.
+     @param leaf A pointer to the leaf instance.
      
      @fn void    tTalkbox_initToPool     (tTalkbox* const, int bufsize, tMempool* const)
-     @brief
-     @param
+     @brief Initialize a tTalkbox to a specified mempool.
+     @param talkbox A pointer to the tTalkbox to initialize.
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    tTalkbox_free           (tTalkbox* const)
-     @brief
-     @param
+     @brief Free a tTalkbox from its mempool.
+     @param talkbox A pointer to the tTalkbox to free.
      
      @fn float   tTalkbox_tick           (tTalkbox* const, float synth, float voice)
      @brief
-     @param
+     @param talkbox A pointer to the relevant tTalkbox.
      
      @fn float     tTalkbox_tickFrozen        (tTalkbox* const voc, float synth, float voice)
      @brief
-     @param
+     @param talkbox A pointer to the relevant tTalkbox.
      
      @fn void    tTalkbox_update         (tTalkbox* const)
      @brief
-     @param
+     @param talkbox A pointer to the relevant tTalkbox.
      
      @fn void    tTalkbox_suspend        (tTalkbox* const)
      @brief
-     @param
+     @param talkbox A pointer to the relevant tTalkbox.
      
      @fn void    tTalkbox_lpcDurbin      (float *r, int p, float *k, float *g)
      @brief
-     @param
+     @param talkbox A pointer to the relevant tTalkbox.
      
      @fn void     tTalkbox_lpc            (float *buf, float *car, double* dl, double* Rt, int32_t n, int32_t o, float warp, int warpOn, float *k, int freeze, float *G)
      @brief
-     @param
+     @param talkbox A pointer to the relevant tTalkbox.
      
      @fn void    tTalkbox_setQuality     (tTalkbox* const, float quality)
      @brief
-     @param
+     @param talkbox A pointer to the relevant tTalkbox.
      
      @fn void     tTalkbox_setWarpFactor    (tTalkbox* const voc, float warp)
      @brief
-     @param
+     @param talkbox A pointer to the relevant tTalkbox.
      
      @fn void     tTalkbox_setWarpOn        (tTalkbox* const voc, float warpOn)
      @brief
-     @param
+     @param talkbox A pointer to the relevant tTalkbox.
      
      @fn void     tTalkbox_setFreeze        (tTalkbox* const voc, float freeze)
      @brief
-     @param
+     @param talkbox A pointer to the relevant tTalkbox.
      
      @fn void     tTalkbox_warpedAutocorrelate    (float * x, double* dl, double* Rt, unsigned int L, float * R, unsigned int P, float lambda)
      @brief
-     @param
+     @param talkbox A pointer to the relevant tTalkbox.
      
      @} */
      
@@ -148,60 +150,62 @@
      @{
      
      @fn void    tTalkboxFloat_init           (tTalkboxFloat* const, int bufsize, LEAF* const leaf)
-     @brief
-     @param
+     @brief Initialize a tTalkboxFloat to the default mempool of a LEAF instance.
+     @param talkbox A pointer to the tTalkboxFloat to initialize.
+     @param leaf A pointer to the leaf instance.
      
      @fn void    tTalkboxFloat_initToPool     (tTalkboxFloat* const, int bufsize, tMempool* const)
-     @brief
-     @param
+     @brief Initialize a tTalkboxFloat to a specified mempool.
+     @param talkbox A pointer to the tTalkboxFloat to initialize.
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    tTalkboxFloat_free           (tTalkboxFloat* const)
-     @brief
-     @param
+     @brief Free a tTalkboxFloat from its mempool.
+     @param talkbox A pointer to the tTalkboxFloat to free.
      
      @fn float   tTalkboxFloat_tick           (tTalkboxFloat* const, float synth, float voice)
      @brief
-     @param
+     @param talkbox A pointer to the relevant tTalkboxFloat.
      
      @fn float     tTalkboxFloat_tickFrozen        (tTalkboxFloat* const voc, float synth, float voice)
      @brief
-     @param
+     @param talkbox A pointer to the relevant tTalkboxFloat.
      
      @fn void    tTalkboxFloat_update         (tTalkboxFloat* const)
      @brief
-     @param
+     @param talkbox A pointer to the relevant tTalkboxFloat.
      
      @fn void    tTalkboxFloat_suspend        (tTalkboxFloat* const)
      @brief
-     @param
+     @param talkbox A pointer to the relevant tTalkboxFloat.
      
      @fn void    tTalkboxFloat_lpcDurbin      (float *r, int p, float *k, float *g)
      @brief
-     @param
+     @param talkbox A pointer to the relevant tTalkboxFloat.
      
      @fn void     tTalkboxFloat_lpc            (float *buf, float *car, float* dl, float* Rt, int32_t n, int32_t o, float warp, int warpOn, float *k, int freeze, float *G)
      @brief
-     @param
+     @param talkbox A pointer to the relevant tTalkboxFloat.
      
      @fn void    tTalkboxFloat_setQuality     (tTalkboxFloat* const, float quality)
      @brief
-     @param
+     @param talkbox A pointer to the relevant tTalkboxFloat.
      
      @fn void     tTalkboxFloat_setWarpFactor    (tTalkboxFloat* const voc, float warp)
      @brief
-     @param
+     @param talkbox A pointer to the relevant tTalkboxFloat.
      
      @fn void     tTalkboxFloat_setWarpOn        (tTalkboxFloat* const voc, float warpOn)
      @brief
-     @param
+     @param talkbox A pointer to the relevant tTalkboxFloat.
      
      @fn void     tTalkboxFloat_setFreeze        (tTalkboxFloat* const voc, float freeze)
      @brief
-     @param
+     @param talkbox A pointer to the relevant tTalkboxFloat.
      
      @fn void     tTalkboxFloat_warpedAutocorrelate    (float * x, float* dl, float* Rt, unsigned int L, float * R, unsigned int P, float lambda)
      @brief
-     @param
+     @param talkbox A pointer to the relevant tTalkboxFloat.
      
      @} */
 
@@ -260,28 +264,30 @@
      @{
      
      @fn void    tVocoder_init           (tVocoder* const, LEAF* const leaf)
-     @brief
-     @param
+     @brief Initialize a tVocoder to the default mempool of a LEAF instance.
+     @param vocoder A pointer to the tVocoder to initialize.
+     @param leaf A pointer to the leaf instance.
      
      @fn void    tVocoder_initToPool     (tVocoder* const, tMempool* const)
-     @brief
-     @param
+     @brief Initialize a tVocoder to a specified mempool.
+     @param vocoder A pointer to the tVocoder to initialize.
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    tVocoder_free           (tVocoder* const)
-     @brief
-     @param
+     @brief Free a tVocoder from its mempool.
+     @param vocoder A pointer to the tVocoder to free.
      
      @fn float   tVocoder_tick           (tVocoder* const, float synth, float voice)
      @brief
-     @param
+     @param vocoder A pointer to the relevant tVocoder.
      
      @fn void    tVocoder_update         (tVocoder* const)
      @brief
-     @param
+     @param vocoder A pointer to the relevant tVocoder.
      
      @fn void    tVocoder_suspend        (tVocoder* const)
      @brief
-     @param
+     @param vocoder A pointer to the relevant tVocoder.
      
      @} */
     
@@ -325,40 +331,42 @@
      @{
      
      @fn void    tRosenbergGlottalPulse_init           (tRosenbergGlottalPulse* const, LEAF* const leaf)
-     @brief
-     @param
+     @brief Initialize a tRosenbergGlottalPulse to the default mempool of a LEAF instance.
+     @param pulse A pointer to the tRosenbergGlottalPulse to initialize.
+     @param leaf A pointer to the leaf instance.
      
      @fn void    tRosenbergGlottalPulse_initToPool     (tRosenbergGlottalPulse* const, tMempool* const)
-     @brief
-     @param
+     @brief Initialize a tRosenbergGlottalPulse to a specified mempool.
+     @param pulse A pointer to the tRosenbergGlottalPulse to initialize.
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    tRosenbergGlottalPulse_free           (tRosenbergGlottalPulse* const)
-     @brief
-     @param
+     @brief Free a tRosenbergGlottalPulse from its mempool.
+     @param pulse A pointer to the tRosenbergGlottalPulse to free.
      
      @fn float   tRosenbergGlottalPulse_tick           (tRosenbergGlottalPulse* const)
      @brief
-     @param
+     @param pulse A pointer to the relevant tRosenbergGlottalPulse.
      
      @fn float   tRosenbergGlottalPulse_tickHQ           (tRosenbergGlottalPulse* const gp)
      @brief
-     @param
+     @param pulse A pointer to the relevant tRosenbergGlottalPulse.
      
      @fn void   tRosenbergGlottalPulse_setFreq           (tRosenbergGlottalPulse* const, float freq)
      @brief
-     @param
+     @param pulse A pointer to the relevant tRosenbergGlottalPulse.
      
      @fn void   tRosenbergGlottalPulse_setOpenLength           (tRosenbergGlottalPulse* const, float openLength)
      @brief
-     @param
+     @param pulse A pointer to the relevant tRosenbergGlottalPulse.
      
      @fn void   tRosenbergGlottalPulse_setPulseLength           (tRosenbergGlottalPulse* const, float pulseLength)
      @brief
-     @param
+     @param pulse A pointer to the relevant tRosenbergGlottalPulse.
      
      @fn void   tRosenbergGlottalPulse_setOpenLengthAndPulseLength           (tRosenbergGlottalPulse* const gp, float openLength, float pulseLength)
      @brief
-     @param
+     @param pulse A pointer to the relevant tRosenbergGlottalPulse.
      
      @} */
 
@@ -397,51 +405,56 @@
      @{
      
      @fn void    tSOLAD_init             (tSOLAD* const, LEAF* const leaf)
-     @brief
-     @param
+     @brief Initialize a tSOLAD to the default mempool of a LEAF instance.
+     @param solad A pointer to the tSOLAD to initialize.
+     @param leaf A pointer to the leaf instance.
      
      @fn void    tSOLAD_initToPool       (tSOLAD* const, tMempool* const)
-     @brief
-     @param
+     @brief Initialize a tSOLAD to a specified mempool.
+     @param solad A pointer to the tSOLAD to initialize.
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    tSOLAD_free             (tSOLAD* const)
-     @brief
-     @param
+     @brief Free a tSOLAD from its mempool.
+     @param solad A pointer to the tSOLAD to free.
      
      @fn void    tSOLAD_ioSamples        (tSOLAD *w, float* in, float* out, int blocksize)
-     @brief send one block of input samples, receive one block of output samples
-     @param
+     @brief Send one block of input samples, receive one block of output samples
+     @param solad A pointer to the relevant tSOLAD.
 
      @fn void    tSOLAD_setPeriod        (tSOLAD *w, float period)
-     @brief set periodicity analysis data
-     @param
+     @brief Set periodicity analysis data
+     @param solad A pointer to the relevant tSOLAD.
      
      @fn void    tSOLAD_setPitchFactor   (tSOLAD *w, float pitchfactor)
-     @brief set pitch factor between 0.25 and 4
-     @param
+     @brief Set pitch factor between 0.25 and 4
+     @param solad A pointer to the relevant tSOLAD.
      
      @fn void    tSOLAD_setReadLag       (tSOLAD *w, float readlag)
-     @brief force readpointer lag
-     @param
+     @brief Force readpointer lag
+     @param solad A pointer to the relevant tSOLAD.
      
      @fn void    tSOLAD_resetState       (tSOLAD *w)
-     @brief reset state variables
-     @param
+     @brief Reset state variables
+     @param solad A pointer to the relevant tSOLAD.
      
      @} */
     
-#define LOOPSIZE (2048*2)      // (4096*2) // loop size must be power of two
-#define LOOPMASK (LOOPSIZE - 1)
+//#define LOOPSIZE (2048*2)      // (4096*2) // loop size must be power of two
+//#define LOOPMASK (LOOPSIZE - 1)
 #define PITCHFACTORDEFAULT 1.0f
 #define INITPERIOD 64.0f
-#define MAXPERIOD (float)((LOOPSIZE - w->blocksize) * 0.8f)
+//#define MAXPERIOD (float)((LOOPSIZE - w->blocksize) * 0.8f)
 #define MINPERIOD 8.0f
     
     typedef struct _tSOLAD
     {
-        
         tMempool mempool;
         
+        tAttackDetection ad;
+        tHighpass hp;
+        
+        int loopSize;
         uint16_t timeindex;              // current reference time, write index
         uint16_t blocksize;              // signal input / output block size
         float pitchfactor;        // pitch factor between 0.25 and 4
@@ -457,8 +470,8 @@
     
     typedef _tSOLAD* tSOLAD;
     
-    void    tSOLAD_init             (tSOLAD* const, LEAF* const leaf);
-    void    tSOLAD_initToPool       (tSOLAD* const, tMempool* const);
+    void    tSOLAD_init             (tSOLAD* const, int loopSize, LEAF* const leaf);
+    void    tSOLAD_initToPool       (tSOLAD* const, int loopSize, tMempool* const);
     void    tSOLAD_free             (tSOLAD* const);
     
     // send one block of input samples, receive one block of output samples
@@ -479,286 +492,209 @@
      @{
      
      @fn void    tPitchShift_init            (tPitchShift* const, tPeriodDetection* const, float* out, int bufSize, LEAF* const leaf)
-     @brief
-     @param
+     @brief Initialize a tPitchShift to the default mempool of a LEAF instance.
+     @param pitchshift A pointer to the tPitchShift to initialize.
+     @param leaf A pointer to the leaf instance.
      
      @fn void    tPitchShift_initToPool      (tPitchShift* const, tPeriodDetection* const, float* out, int bufSize, tMempool* const)
-     @brief
-     @param
+     @brief Initialize a tPitchShift to a specified mempool.
+     @param pitchshift A pointer to the tPitchShift to initialize.
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    tPitchShift_free            (tPitchShift* const)
-     @brief
-     @param
+     @brief Free a tPitchShift from its mempool.
+     @param pitchshift A pointer to the tPitchShift to free.
      
      @fn float   tPitchShift_shift           (tPitchShift* const)
      @brief
-     @param
+     @param pitchshift A pointer to the relevant tPitchShift.
      
      @fn float   tPitchShift_shiftToFunc     (tPitchShift* const, float (*fun)(float))
      @brief
-     @param
+     @param pitchshift A pointer to the relevant tPitchShift.
      
      @fn float   tPitchShift_shiftToFreq     (tPitchShift* const, float freq)
      @brief
-     @param
+     @param pitchshift A pointer to the relevant tPitchShift.
      
      @fn void    tPitchShift_setPitchFactor  (tPitchShift* const, float pf)
      @brief
-     @param
+     @param pitchshift A pointer to the relevant tPitchShift.
      
      @} */
     
     typedef struct _tPitchShift
     {
-        
         tMempool mempool;
         
+        _tDualPitchDetector* pd;
         tSOLAD sola;
-        tHighpass hp;
-        tPeriodDetection* p;
         
         float* outBuffer;
-        int frameSize;
+        float* inBuffer;
         int bufSize;
-        
-        int framesPerBuffer;
-        int curBlock;
-        int lastBlock;
         int index;
         
-        float pitchFactor;
-        float timeConstant;
-        float radius;
+        float pickiness;
     } _tPitchShift;
     
     typedef _tPitchShift* tPitchShift;
     
-    void    tPitchShift_init            (tPitchShift* const, tPeriodDetection* const, float* out, int bufSize, LEAF* const leaf);
-    void    tPitchShift_initToPool      (tPitchShift* const, tPeriodDetection* const, float* out, int bufSize, tMempool* const);
-    void    tPitchShift_free            (tPitchShift* const);
+    void    tPitchShift_init (tPitchShift* const, tDualPitchDetector* const, int bufSize, LEAF* const leaf);
+    void    tPitchShift_initToPool (tPitchShift* const, tDualPitchDetector* const, int bufSize, tMempool* const);
+    void    tPitchShift_free (tPitchShift* const);
     
-    float   tPitchShift_shift           (tPitchShift* const);
-    float   tPitchShift_shiftToFunc     (tPitchShift* const, float (*fun)(float));
-    float   tPitchShift_shiftToFreq     (tPitchShift* const, float freq);
-    void    tPitchShift_setPitchFactor  (tPitchShift* const, float pf);
+    void    tPitchShift_shiftBy (tPitchShift* const, float factor, float* in, float* out);
+    void    tPitchShift_shiftTo (tPitchShift* const, float freq, float* in, float* out);
     
+    void    tPitchShift_setPickiness (tPitchShift* const, float p);
+    
     /*!
-     @defgroup tretune tRetune
+     @defgroup tsimpleretune tSimpleRetune
      @ingroup effects
      @brief
      @{
      
-     @fn void    tRetune_init                (tRetune* const, int numVoices, int bufSize, int frameSize, LEAF* const leaf)
-     @brief
-     @param
+     @fn void    tSimpleRetune_init                  (tSimpleRetune* const, int numVoices, int bufSize, int frameSize, LEAF* const leaf)
+     @brief Initialize a tSimpleRetune to the default mempool of a LEAF instance.
+     @param retune A pointer to the tSimpleRetune to initialize.
+     @param leaf A pointer to the leaf instance.
      
-     @fn void    tRetune_initToPool          (tRetune* const, int numVoices, int bufSize, int frameSize, tMempool* const)
-     @brief
-     @param
+     @fn void    tSimpleRetune_initToPool            (tSimpleRetune* const, int numVoices, int bufSize, int frameSize, tMempool* const)
+     @brief Initialize a tSimpleRetune to a specified mempool.
+     @param retune A pointer to the tSimpleRetune to initialize.
+     @param mempool A pointer to the tMempool to use.
      
-     @fn void    tRetune_free                (tRetune* const)
-     @brief
-     @param
+     @fn void    tSimpleRetune_free                  (tSimpleRetune* const)
+     @brief Free a tSimpleRetune from its mempool.
+     @param retune A pointer to the tSimpleRetune to free.
      
-     @fn float*  tRetune_tick                (tRetune* const, float sample)
+     @fn float*  tSimpleRetune_tick                  (tSimpleRetune* const, float sample)
      @brief
-     @param
+     @param retune A pointer to the relevant tSimpleRetune.
      
-     @fn void    tRetune_setNumVoices        (tRetune* const, int numVoices)
+     @fn void    tSimpleRetune_setNumVoices          (tSimpleRetune* const, int numVoices)
      @brief
-     @param
+     @param retune A pointer to the relevant tSimpleRetune.
      
-     @fn void    tRetune_setPitchFactors     (tRetune* const, float pf)
+     @fn void    tSimpleRetune_tuneVoices              (tSimpleRetune* const, float f)
      @brief
-     @param
+     @param retune A pointer to the relevant tSimpleRetune.
      
-     @fn void    tRetune_setPitchFactor      (tRetune* const, float pf, int voice)
+     @fn void    tSimpleRetune_tuneVoice              (tSimpleRetune* const, float f, int voice)
      @brief
-     @param
+     @param retune A pointer to the relevant tSimpleRetune.
      
-     @fn void    tRetune_setTimeConstant     (tRetune* const, float tc)
-     @brief
-     @param
-     
-     @fn void    tRetune_setHopSize          (tRetune* const, int hs)
-     @brief
-     @param
-     
-     @fn void    tRetune_setWindowSize       (tRetune* const, int ws)
-     @brief
-     @param
-     
-     @fn void    tRetune_setFidelityThreshold(tRetune* const, float threshold)
-     @brief
-     @param
-     
-     @fn float   tRetune_getInputPeriod      (tRetune* const)
-     @brief
-     @param
-     
-     @fn float   tRetune_getInputFreq        (tRetune* const)
-     @brief
-     @param
-     
      @} */
     
-    typedef struct _tRetune
+    typedef struct _tSimpleRetune
     {
-        
         tMempool mempool;
         
-        tPeriodDetection pd;
+        tDualPitchDetector dp;
+        float minInputFreq, maxInputFreq;
+        
         tPitchShift* ps;
         
         float* inBuffer;
-        float** outBuffers;
-        float* tickOutput;
-        int frameSize;
+        float* outBuffer;
         int bufSize;
+        int index;
         
-        uint16_t hopSize;
-        uint16_t windowSize;
-        uint8_t fba;
+        void (*shiftFunction)(tPitchShift* const, float, float*, float*);
         
-        float* pitchFactor;
-        float timeConstant;
-        float radius;
-        
-        float inputPeriod;
-        
+        float* shiftValues;
         int numVoices;
-    } _tRetune;
+    } _tSimpleRetune;
     
-    typedef _tRetune* tRetune;
+    typedef _tSimpleRetune* tSimpleRetune;
     
-    void    tRetune_init                (tRetune* const, int numVoices, int bufSize, int frameSize, LEAF* const leaf);
-    void    tRetune_initToPool          (tRetune* const, int numVoices, int bufSize, int frameSize, tMempool* const);
-    void    tRetune_free                (tRetune* const);
+    void    tSimpleRetune_init                  (tSimpleRetune* const, int numVoices, float minInputFreq, float maxInputFreq, int bufSize, LEAF* const leaf);
+    void    tSimpleRetune_initToPool            (tSimpleRetune* const, int numVoices, float minInputFreq, float maxInputFreq, int bufSize, tMempool* const);
+    void    tSimpleRetune_free                  (tSimpleRetune* const);
     
-    float*  tRetune_tick                (tRetune* const, float sample);
-    void    tRetune_setNumVoices        (tRetune* const, int numVoices);
-    void    tRetune_setPitchFactors     (tRetune* const, float pf);
-    void    tRetune_setPitchFactor      (tRetune* const, float pf, int voice);
-    void    tRetune_setTimeConstant     (tRetune* const, float tc);
-    void    tRetune_setHopSize          (tRetune* const, int hs);
-    void    tRetune_setWindowSize       (tRetune* const, int ws);
-    void    tRetune_setFidelityThreshold(tRetune* const, float threshold);
-    float   tRetune_getInputPeriod      (tRetune* const);
-    float   tRetune_getInputFreq        (tRetune* const);
+    float   tSimpleRetune_tick                  (tSimpleRetune* const, float sample);
+    void    tSimpleRetune_setMode               (tSimpleRetune* const, int mode);
+    void    tSimpleRetune_setNumVoices          (tSimpleRetune* const, int numVoices);
+    void    tSimpleRetune_setPickiness          (tSimpleRetune* const, float p);
+    void    tSimpleRetune_tuneVoices            (tSimpleRetune* const, float* t);
+    void    tSimpleRetune_tuneVoice             (tSimpleRetune* const, int voice, float t);
+    float   tSimpleRetune_getInputFrequency     (tSimpleRetune* const);
     
     /*!
-     @defgroup tautotune tAutotune
+     @defgroup tretune tRetune
      @ingroup effects
      @brief
      @{
      
-     @fn void    tAutotune_init                  (tAutotune* const, int numVoices, int bufSize, int frameSize, LEAF* const leaf)
-     @brief
-     @param
+     @fn void    tRetune_init                (tRetune* const, int numVoices, int bufSize, int frameSize, LEAF* const leaf)
+     @brief Initialize a tRetune to the default mempool of a LEAF instance.
+     @param retune A pointer to the tRetune to initialize.
+     @param leaf A pointer to the leaf instance.
      
-     @fn void    tAutotune_initToPool            (tAutotune* const, int numVoices, int bufSize, int frameSize, tMempool* const)
-     @brief
-     @param
+     @fn void    tRetune_initToPool          (tRetune* const, int numVoices, int bufSize, int frameSize, tMempool* const)
+     @brief Initialize a tRetune to a specified mempool.
+     @param retune A pointer to the tRetune to initialize.
+     @param mempool A pointer to the tMempool to use.
      
-     @fn void    tAutotune_free                  (tAutotune* const)
-     @brief
-     @param
+     @fn void    tRetune_free                (tRetune* const)
+     @brief Free a tRetune from its mempool.
+     @param retune A pointer to the tRetune to free.
      
-     @fn float*  tAutotune_tick                  (tAutotune* const, float sample)
+     @fn float*  tRetune_tick                (tRetune* const, float sample)
      @brief
-     @param
+     @param retune A pointer to the relevant tRetune.
      
-     @fn void    tAutotune_setNumVoices          (tAutotune* const, int numVoices)
+     @fn void    tRetune_setNumVoices        (tRetune* const, int numVoices)
      @brief
-     @param
+     @param retune A pointer to the relevant tRetune.
      
-     @fn void    tAutotune_setFreqs              (tAutotune* const, float f)
+     @fn void    tRetune_setPitchFactors     (tRetune* const, float pf)
      @brief
-     @param
+     @param retune A pointer to the relevant tRetune.
      
-     @fn void    tAutotune_setFreq               (tAutotune* const, float f, int voice)
+     @fn void    tRetune_setPitchFactor      (tRetune* const, float pf, int voice)
      @brief
-     @param
+     @param retune A pointer to the relevant tRetune.
      
-     @fn void    tAutotune_setTimeConstant       (tAutotune* const, float tc)
-     @brief
-     @param
-     
-     @fn void    tAutotune_setHopSize            (tAutotune* const, int hs)
-     @brief
-     @param
-     
-     @fn void    tAutotune_setWindowSize         (tAutotune* const, int ws)
-     @brief
-     @param
-     
-     @fn void    tAutotune_setFidelityThreshold  (tAutotune* const, float threshold)
-     @brief
-     @param
-     
-     @fn void    tAutotune_setAlpha              (tAutotune* const, float alpha)
-     @brief
-     @param
-     
-     @fn void    tAutotune_setTolerance          (tAutotune* const, float tolerance)
-     @brief
-     @param
-     
-     @fn float   tAutotune_getInputPeriod        (tAutotune* const)
-     @brief
-     @param
-     
-     @fn float   tAutotune_getInputFreq          (tAutotune* const)
-     @brief
-     @param
-     
      @} */
     
-    typedef struct _tAutotune
+    typedef struct _tRetune
     {
-        
         tMempool mempool;
         
-        tPeriodDetection pd;
+        tDualPitchDetector dp;
+        float minInputFreq, maxInputFreq;
+        
         tPitchShift* ps;
         
+        float* pdBuffer;
         float* inBuffer;
         float** outBuffers;
-        float* tickOutput;
-        int frameSize;
         int bufSize;
+        int index;
         
-        uint16_t hopSize;
-        uint16_t windowSize;
-        uint8_t fba;
+        float* output;
         
-        float* freq;
-        float timeConstant;
-        float radius;
+        void (*shiftFunction)(tPitchShift* const, float, float*, float*);
         
-        float inputPeriod;
-        int shiftOn;
+        float* shiftValues;
         int numVoices;
-    } _tAutotune;
+    } _tRetune;
     
-    typedef _tAutotune* tAutotune;
+    typedef _tRetune* tRetune;
     
-    void    tAutotune_init                  (tAutotune* const, int numVoices, int bufSize, int frameSize, LEAF* const leaf);
-    void    tAutotune_initToPool            (tAutotune* const, int numVoices, int bufSize, int frameSize, tMempool* const);
-    void    tAutotune_free                  (tAutotune* const);
+    void    tRetune_init                (tRetune* const, int numVoices, float minInputFreq, float maxInputFreq,  int bufSize, LEAF* const leaf);
+    void    tRetune_initToPool          (tRetune* const,  int numVoices, float minInputFreq, float maxInputFreq, int bufSize, tMempool* const);
+    void    tRetune_free                (tRetune* const);
     
-    float*  tAutotune_tick                  (tAutotune* const, float sample);
-    void    tAutotune_setNumVoices          (tAutotune* const, int numVoices);
-    void    tAutotune_setFreqs              (tAutotune* const, float f);
-    void    tAutotune_setFreq               (tAutotune* const, float f, int voice);
-    void    tAutotune_setTimeConstant       (tAutotune* const, float tc);
-    void    tAutotune_setHopSize            (tAutotune* const, int hs);
-    void    tAutotune_setWindowSize         (tAutotune* const, int ws);
-    void    tAutotune_setFidelityThreshold  (tAutotune* const, float threshold);
-    void    tAutotune_setAlpha              (tAutotune* const, float alpha);
-    void    tAutotune_setTolerance          (tAutotune* const, float tolerance);
-    float   tAutotune_getInputPeriod        (tAutotune* const);
-    float   tAutotune_getInputFreq          (tAutotune* const);
+    float*  tRetune_tick                (tRetune* const, float sample);
+    void    tRetune_setMode             (tRetune* const, int mode);
+    void    tRetune_setNumVoices        (tRetune* const, int numVoices);
+    void    tRetune_setPickiness        (tRetune* const, float p);
+    void    tRetune_tuneVoices          (tRetune* const, float* t);
+    void    tRetune_tuneVoice           (tRetune* const, int voice, float t);
+    float   tRetune_getInputFrequency   (tRetune* const);
     
     //==============================================================================
     
@@ -769,40 +705,42 @@
      @{
      
      @fn void    tFormantShifter_init            (tFormantShifter* const, int order, LEAF* const leaf)
-     @brief
-     @param
+     @brief Initialize a tFormantShifter to the default mempool of a LEAF instance.
+     @param formant A pointer to the tFormantShifter to initialize.
+     @param leaf A pointer to the leaf instance.
      
      @fn void    tFormantShifter_initToPool      (tFormantShifter* const, int order, tMempool* const)
-     @brief
-     @param
+     @brief Initialize a tFormantShifter to a specified mempool.
+     @param formant A pointer to the tFormantShifter to initialize.
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    tFormantShifter_free            (tFormantShifter* const)
-     @brief
-     @param
+     @brief Free a tFormantShifter from its mempool.
+     @param formant A pointer to the tFormantShifter to free.
      
      @fn float   tFormantShifter_tick            (tFormantShifter* const, float input)
      @brief
-     @param
+     @param formant A pointer to the relevant tFormantShifter.
      
      @fn float   tFormantShifter_remove          (tFormantShifter* const, float input)
      @brief
-     @param
+     @param formant A pointer to the relevant tFormantShifter.
      
      @fn float   tFormantShifter_add             (tFormantShifter* const, float input)
      @brief
-     @param
+     @param formant A pointer to the relevant tFormantShifter.
      
      @fn void    tFormantShifter_ioSamples       (tFormantShifter* const, float* in, float* out, int size, float fwarp)
      @brief
-     @param
+     @param formant A pointer to the relevant tFormantShifter.
      
      @fn void    tFormantShifter_setShiftFactor  (tFormantShifter* const, float shiftFactor)
      @brief
-     @param
+     @param formant A pointer to the relevant tFormantShifter.
      
      @fn void    tFormantShifter_setIntensity    (tFormantShifter* const, float intensity)
      @brief
-     @param
+     @param formant A pointer to the relevant tFormantShifter.
      
      @} */
     
--- a/leaf/Inc/leaf-electrical.h
+++ b/leaf/Inc/leaf-electrical.h
@@ -35,57 +35,59 @@
      @{
      
      @fn void    tWDF_init                   (tWDF* const, WDFComponentType type, float value, tWDF* const rL, tWDF* const rR, LEAF* const leaf)
-     @brief
-     @param
+     @brief Initialize a tWDF to the default mempool of a LEAF instance.
+     @param wdf A pointer to the tWDF to initialize.
+     @param leaf A pointer to the leaf instance.
      
      @fn void    tWDF_initToPool             (tWDF* const, WDFComponentType type, float value, tWDF* const rL, tWDF* const rR, tMempool* const)
-     @brief
-     @param
+     @brief Initialize a tWDF to a specified mempool.
+     @param wdf A pointer to the tWDF to initialize.
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    tWDF_free                   (tWDF* const)
-     @brief
-     @param
+     @brief Free a tWDF from its mempool.
+     @param wdf A pointer to the tWDF to free.
      
      @fn float   tWDF_tick                   (tWDF* const, float sample, tWDF* const outputPoint, uint8_t paramsChanged)
      @brief
-     @param
+     @param wdf A pointer to the relevant tWDF.
      
      @fn void    tWDF_setValue               (tWDF* const, float value)
      @brief
-     @param
+     @param wdf A pointer to the relevant tWDF.
      
      @fn void    tWDF_setSampleRate          (tWDF* const, float sample_rate)
      @brief
-     @param
+     @param wdf A pointer to the relevant tWDF.
      
      @fn uint8_t tWDF_isLeaf                 (tWDF* const)
      @brief
-     @param
+     @param wdf A pointer to the relevant tWDF.
      
      @fn float   tWDF_getPortResistance      (tWDF* const)
      @brief
-     @param
+     @param wdf A pointer to the relevant tWDF.
      
      @fn float   tWDF_getReflectedWaveUp     (tWDF* const, float input)
      @brief
-     @param
+     @param wdf A pointer to the relevant tWDF.
      
      @fn float   tWDF_getReflectedWaveDown   (tWDF* const, float input, float incident_wave)
      @brief
-     @param
+     @param wdf A pointer to the relevant tWDF.
      
      @fn void    tWDF_setIncidentWave        (tWDF* const, float incident_wave, float input)
      @brief
-     @param
+     @param wdf A pointer to the relevant tWDF.
      
      @fn float   tWDF_getVoltage             (tWDF* const)
      @brief
-     @param
+     @param wdf A pointer to the relevant tWDF.
      
      @fn float   tWDF_getCurrent             (tWDF* const)
      @brief
-     @param
-     
+     @param wdf A pointer to the relevant tWDF.
+      
      @} */
     
     typedef enum WDFComponentType
--- a/leaf/Inc/leaf-envelopes.h
+++ b/leaf/Inc/leaf-envelopes.h
@@ -41,36 +41,38 @@
      @{
      
      @fn void    tEnvelope_init          (tEnvelope* const, float attack, float decay, int loop, LEAF* const leaf)
-     @brief
-     @param
+     @brief Initialize a tEnvelope to the default mempool of a LEAF instance.
+     @param envelope A pointer to the tEnvelope to initialize.
+     @param leaf A pointer to the leaf instance.
      
      @fn void    tEnvelope_initToPool    (tEnvelope* const, float attack, float decay, int loop, tMempool* const)
-     @brief
-     @param
+     @brief Initialize a tEnvelope to a specified mempool.
+     @param envelope A pointer to the tEnvelope to initialize.
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    tEnvelope_free          (tEnvelope* const)
-     @brief
-     @param
+     @brief Free a tEnvelope from its mempool.
+     @param envelope A pointer to the tEnvelope to free.
      
      @fn float   tEnvelope_tick          (tEnvelope* const)
      @brief
-     @param
+     @param envelope A pointer to the relevant tEnvelope.
      
      @fn void    tEnvelope_setAttack     (tEnvelope* const, float attack)
      @brief
-     @param
+     @param envelope A pointer to the relevant tEnvelope.
      
      @fn void    tEnvelope_setDecay      (tEnvelope* const, float decay)
      @brief
-     @param
+     @param envelope A pointer to the relevant tEnvelope.
      
      @fn void    tEnvelope_loop          (tEnvelope* const, int loop)
      @brief
-     @param
+     @param envelope A pointer to the relevant tEnvelope.
      
      @fn void    tEnvelope_on            (tEnvelope* const, float velocity)
      @brief
-     @param
+     @param envelope A pointer to the relevant tEnvelope.
      
      @} */
     
@@ -119,40 +121,42 @@
      @{
      
      @fn void    tExpSmooth_init         (tExpSmooth* const, float val, float factor, LEAF* const leaf)
-     @brief
-     @param
+     @brief Initialize a tExpSmooth to the default mempool of a LEAF instance.
+     @param smooth A pointer to the tExpSmooth to initialize.
+     @param leaf A pointer to the leaf instance.
      
      @fn void    tExpSmooth_initToPool   (tExpSmooth* const, float val, float factor, tMempool* const)
-     @brief
-     @param
+     @brief Initialize a tExpSmooth to a specified mempool.
+     @param smooth A pointer to the tExpSmooth to initialize.
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    tExpSmooth_free         (tExpSmooth* const)
-     @brief
-     @param
+     @brief Free a tExpSmooth from its mempool.
+     @param smooth A pointer to the tExpSmooth to free.
      
      @fn float   tExpSmooth_tick         (tExpSmooth* const)
      @brief
-     @param
+     @param smooth A pointer to the relevant tExpSmooth.
      
      @fn float   tExpSmooth_sample       (tExpSmooth* const)
      @brief
-     @param
+     @param smooth A pointer to the relevant tExpSmooth.
      
      @fn void    tExpSmooth_setFactor    (tExpSmooth* const, float factor)
      @brief
-     @param
+     @param smooth A pointer to the relevant tExpSmooth.
      
      @fn void    tExpSmooth_setDest      (tExpSmooth* const, float dest)
      @brief
-     @param
+     @param smooth A pointer to the relevant tExpSmooth.
      
      @fn void    tExpSmooth_setVal       (tExpSmooth* const, float val)
      @brief
-     @param
+     @param smooth A pointer to the relevant tExpSmooth.
      
      @fn  void    tExpSmooth_setValAndDest(tExpSmooth* const expsmooth, float val)
      @brief
-     @param
+     @param smooth A pointer to the relevant tExpSmooth.
      
      @} */
     
@@ -189,48 +193,50 @@
      @{
      
      @fn void    tADSR_init    (tADSR* const adsrenv, float attack, float decay, float sustain, float release, LEAF* const leaf)
-     @brief
-     @param
+     @brief Initialize a tADSR to the default mempool of a LEAF instance.
+     @param adsr A pointer to the tADSR to initialize.
+     @param leaf A pointer to the leaf instance.
      
      @fn void    tADSR_initToPool    (tADSR* const adsrenv, float attack, float decay, float sustain, float release, tMempool* const mp)
-     @brief
-     @param
+     @brief Initialize a tADSR to a specified mempool.
+     @param adsr A pointer to the tADSR to initialize.
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    tADSR_free          (tADSR* const)
-     @brief
-     @param
+     @brief Free a tADSR from its mempool.
+     @param adsr A pointer to the tADSR to free.
      
      @fn float   tADSR_tick          (tADSR* const)
      @brief
-     @param
+     @param adsr A pointer to the relevant tADSR.
      
      @fn void    tADSR_setAttack     (tADSR* const, float attack)
      @brief
-     @param
+     @param adsr A pointer to the relevant tADSR.
      
      @fn void    tADSR_setDecay      (tADSR* const, float decay)
      @brief
-     @param
+     @param adsr A pointer to the relevant tADSR.
      
      @fn void    tADSR_setSustain    (tADSR* const, float sustain)
      @brief
-     @param
+     @param adsr A pointer to the relevant tADSR.
      
      @fn void    tADSR_setRelease    (tADSR* const, float release)
      @brief
-     @param
+     @param adsr A pointer to the relevant tADSR.
      
      @fn void    tADSR_setLeakFactor (tADSR* const, float leakFactor)
      @brief
-     @param
+     @param adsr A pointer to the relevant tADSR.
      
      @fn void    tADSR_on            (tADSR* const, float velocity)
      @brief
-     @param
+     @param adsr A pointer to the relevant tADSR.
      
      @fn void    tADSR_off           (tADSR* const)
      @brief
-     @param
+     @param adsr A pointer to the relevant tADSR.
      
      @} */
     
@@ -281,48 +287,50 @@
      @{
      
      @fn void    tADSR2_init          (tADSR2* const, float attack, float decay, float sustain, float release, LEAF* const leaf)
-     @brief
-     @param
+     @brief Initialize a tADSR2 to the default mempool of a LEAF instance.
+     @param adsr A pointer to the tADSR2 to initialize.
+     @param leaf A pointer to the leaf instance.
      
      @fn void    tADSR2_initToPool    (tADSR2* const, float attack, float decay, float sustain, float release, tMempool* const)
-     @brief
-     @param
+     @brief Initialize a tADSR2 to a specified mempool.
+     @param adsr A pointer to the tADSR2 to initialize.
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    tADSR2_free          (tADSR2* const)
-     @brief
-     @param
+     @brief Free a tADSR2 from its mempool.
+     @param adsr A pointer to the tADSR2 to free.
      
      @fn float   tADSR2_tick          (tADSR2* const)
      @brief
-     @param
-     
+     @param adsr A pointer to the relevant tADSR2.
+      
      @fn void    tADSR2_setAttack     (tADSR2* const, float attack)
      @brief
-     @param
+     @param adsr A pointer to the relevant tADSR2.
      
      @fn void    tADSR2_setDecay      (tADSR2* const, float decay)
      @brief
-     @param
+     @param adsr A pointer to the relevant tADSR2.
      
      @fn void    tADSR2_setSustain    (tADSR2* const, float sustain)
      @brief
-     @param
+     @param adsr A pointer to the relevant tADSR2.
      
      @fn void    tADSR2_setRelease    (tADSR2* const, float release)
      @brief
-     @param
+     @param adsr A pointer to the relevant tADSR2.
      
      @fn void    tADSR2_setLeakFactor (tADSR2* const, float leakFactor)
      @brief
-     @param
+     @param adsr A pointer to the relevant tADSR2.
      
      @fn void    tADSR2_on            (tADSR2* const, float velocity)
      @brief
-     @param
+     @param adsr A pointer to the relevant tADSR2.
      
      @fn void    tADSR2_off           (tADSR2* const)
      @brief
-     @param
+     @param adsr A pointer to the relevant tADSR2.
      
      @} */
     
@@ -375,48 +383,50 @@
      @{
      
      @fn void    tADSR3_init          (tADSR3* const, float attack, float decay, float sustain, float release, LEAF* const leaf)
-     @brief
-     @param
+     @brief Initialize a tADSR3 to the default mempool of a LEAF instance.
+     @param adsr A pointer to the tADSR3 to initialize.
+     @param leaf A pointer to the leaf instance.
      
      @fn void    tADSR3_initToPool    (tADSR3* const, float attack, float decay, float sustain, float release, tMempool* const)
-     @brief
-     @param
+     @brief Initialize a tADSR3 to a specified mempool.
+     @param adsr A pointer to the tADSR3 to initialize.
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    tADSR3_free          (tADSR3* const)
-     @brief
-     @param
+     @brief Free a tADSR3 from its mempool.
+     @param adsr A pointer to the tADSR3 to free.
      
      @fn float   tADSR3_tick          (tADSR3* const)
      @brief
-     @param
+     @param adsr A pointer to the relevant tADSR3.
      
      @fn void    tADSR3_setAttack     (tADSR3* const, float attack)
      @brief
-     @param
+     @param adsr A pointer to the relevant tADSR3.
      
      @fn void    tADSR3_setDecay      (tADSR3* const, float decay)
      @brief
-     @param
+     @param adsr A pointer to the relevant tADSR3.
      
      @fn void    tADSR3_setSustain    (tADSR3* const, float sustain)
      @brief
-     @param
+     @param adsr A pointer to the relevant tADSR3.
      
      @fn void    tADSR3_setRelease    (tADSR3* const, float release)
      @brief
-     @param
+     @param adsr A pointer to the relevant tADSR3.
      
      @fn void    tADSR3_setLeakFactor (tADSR3* const, float leakFactor)
      @brief
-     @param
+     @param adsr A pointer to the relevant tADSR3.
      
      @fn void    tADSR3_on            (tADSR3* const, float velocity)
      @brief
-     @param
+     @param adsr A pointer to the relevant tADSR3.
      
      @fn void    tADSR3_off           (tADSR3* const)
      @brief
-     @param
+     @param adsr A pointer to the relevant tADSR3.
      
      @} */
     
@@ -480,52 +490,54 @@
      @{
      
      @fn void    tADSR4_init          (tADSR4* const, float attack, float decay, float sustain, float release, float* expBuffer, int bufferSize, LEAF* const leaf)
-     @brief
-     @param
+     @brief Initialize a tADSR4 to the default mempool of a LEAF instance.
+     @param adsr A pointer to the tADSR4 to initialize.
+     @param leaf A pointer to the leaf instance.
      
      @fn void    tADSR4_initToPool    (tADSR4* const, float attack, float decay, float sustain, float release, float* expBuffer, int bufferSize, tMempool* const)
-     @brief
-     @param
+     @brief Initialize a tADSR4 to a specified mempool.
+     @param adsr A pointer to the tADSR4 to initialize.
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    tADSR4_free          (tADSR4* const)
-     @brief
-     @param
+     @brief Free a tADSR4 from its mempool.
+     @param adsr A pointer to the tADSR4 to free.
      
      @fn float   tADSR4_tick          (tADSR4* const)
      @brief
-     @param
+     @param adsr A pointer to the relevant tADSR4.
      
      @fn float   tADSR4_tickNoInterp  (tADSR4* const adsrenv)
      @brief
-     @param
+     @param adsr A pointer to the relevant tADSR4.
      
      @fn void    tADSR4_setAttack     (tADSR4* const, float attack)
      @brief
-     @param
+     @param adsr A pointer to the relevant tADSR4.
      
      @fn void    tADSR4_setDecay      (tADSR4* const, float decay)
      @brief
-     @param
+     @param adsr A pointer to the relevant tADSR4.
      
      @fn void    tADSR4_setSustain    (tADSR4* const, float sustain)
      @brief
-     @param
+     @param adsr A pointer to the relevant tADSR4.
      
      @fn void    tADSR4_setRelease    (tADSR4* const, float release)
      @brief
-     @param
+     @param adsr A pointer to the relevant tADSR4.
      
      @fn void    tADSR4_setLeakFactor (tADSR4* const, float leakFactor)
      @brief
-     @param
+     @param adsr A pointer to the relevant tADSR4.
      
      @fn void    tADSR4_on            (tADSR4* const, float velocity)
      @brief
-     @param
+     @param adsr A pointer to the relevant tADSR4.
      
      @fn void    tADSR4_off           (tADSR4* const)
      @brief
-     @param
+     @param adsr A pointer to the relevant tADSR4.
      
      @} */
     
@@ -575,36 +587,38 @@
      @{
      
      @fn void    tRamp_init          (tRamp* const, float time, int samplesPerTick, LEAF* const leaf)
-     @brief
-     @param
+     @brief Initialize a tRamp to the default mempool of a LEAF instance.
+     @param ramp A pointer to the tRamp to initialize.
+     @param leaf A pointer to the leaf instance.
      
      @fn void    tRamp_initToPool    (tRamp* const, float time, int samplesPerTick, tMempool* const)
-     @brief
-     @param
+     @brief Initialize a tRamp to a specified mempool.
+     @param ramp A pointer to the tRamp to initialize.
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    tRamp_free          (tRamp* const)
-     @brief
-     @param
+     @brief Free a tRamp from its mempool.
+     @param ramp A pointer to the tRamp to free.
      
      @fn float   tRamp_tick          (tRamp* const)
      @brief
-     @param
+     @param ramp A pointer to the relevant tRamp.
      
      @fn float   tRamp_sample        (tRamp* const)
      @brief
-     @param
+     @param ramp A pointer to the relevant tRamp.
      
      @fn void    tRamp_setTime       (tRamp* const, float time)
      @brief
-     @param
+     @param ramp A pointer to the relevant tRamp.
      
      @fn void    tRamp_setDest       (tRamp* const, float dest)
      @brief
-     @param
+     @param ramp A pointer to the relevant tRamp.
      
      @fn void    tRamp_setVal        (tRamp* const, float val)
      @brief
-     @param
+     @param ramp A pointer to the relevant tRamp.
      
      @} */
     
@@ -640,40 +654,42 @@
      @{
      
      @fn void    tRampUpDown_init          (tRampUpDown* const, float upTime, float downTime, int samplesPerTick, LEAF* const leaf)
-     @brief
-     @param
+     @brief Initialize a tRampUpDown to the default mempool of a LEAF instance.
+     @param ramp A pointer to the tRampUpDown to initialize.
+     @param leaf A pointer to the leaf instance.
      
      @fn void    tRampUpDown_initToPool    (tRampUpDown* const, float upTime, float downTime, int samplesPerTick, tMempool* const)
-     @brief
-     @param
+     @brief Initialize a tRampUpDown to a specified mempool.
+     @param ramp A pointer to the tRampUpDown to initialize.
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    tRampUpDown_free          (tRampUpDown* const)
-     @brief
-     @param
+     @brief Free a tRampUpDown from its mempool.
+     @param ramp A pointer to the tRampUpDown to free.
      
      @fn float   tRampUpDown_tick          (tRampUpDown* const)
      @brief
-     @param
+     @param ramp A pointer to the relevant tRampUpDown.
      
      @fn float   tRampUpDown_sample        (tRampUpDown* const)
      @brief
-     @param
+     @param ramp A pointer to the relevant tRampUpDown.
      
      @fn void    tRampUpDown_setUpTime       (tRampUpDown* const, float upTime)
      @brief
-     @param
+     @param ramp A pointer to the relevant tRampUpDown.
      
      @fn void    tRampUpDown_setDownTime       (tRampUpDown* const, float downTime)
      @brief
-     @param
+     @param ramp A pointer to the relevant tRampUpDown.
      
      @fn void    tRampUpDown_setDest       (tRampUpDown* const, float dest)
      @brief
-     @param
+     @param ramp A pointer to the relevant tRampUpDown.
      
      @fn void    tRampUpDown_setVal        (tRampUpDown* const, float val)
      @brief
-     @param
+     @param ramp A pointer to the relevant tRampUpDown.
      
      @} */
     
@@ -713,36 +729,38 @@
      @{
      
      @fn void    tSlide_init          (tSlide* const, float upSlide, float downSlide, LEAF* const leaf)
-     @brief
-     @param
+     @brief Initialize a tSlide to the default mempool of a LEAF instance.
+     @param slide A pointer to the tSlide to initialize.
+     @param leaf A pointer to the leaf instance.
      
      @fn void    tSlide_initToPool    (tSlide* const, float upSlide, float downSlide, tMempool* const)
-     @brief
-     @param
+     @brief Initialize a tSlide to a specified mempool.
+     @param slide A pointer to the tSlide to initialize.
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    tSlide_free          (tSlide* const)
-     @brief
-     @param
+     @brief Free a tSlide from its mempool.
+     @param slide A pointer to the tSlide to free.
      
      @fn float   tSlide_tick         (tSlide* const, float in)
      @brief
-     @param
+     @param slide A pointer to the relevant tSlide.
      
      @fn float   tSlide_tickNoInput    (tSlide* const sl)
      @brief
-     @param
+     @param slide A pointer to the relevant tSlide.
      
      @fn void    tSlide_setUpSlide    (tSlide* const sl, float upSlide)
      @brief
-     @param
+     @param slide A pointer to the relevant tSlide.
      
      @fn void    tSlide_setDownSlide    (tSlide* const sl, float downSlide)
      @brief
-     @param
+     @param slide A pointer to the relevant tSlide.
      
      @fn void    tSlide_setDest        (tSlide* const sl, float dest)
      @brief
-     @param
+     @param slide A pointer to the relevant tSlide.
      
      @} */
     
--- a/leaf/Inc/leaf-filters.h
+++ b/leaf/Inc/leaf-filters.h
@@ -37,28 +37,30 @@
      @{
      
      @fn void    tAllpass_init           (tAllpass* const, float initDelay, uint32_t maxDelay, LEAF* const leaf)
-     @brief
-     @param
+     @brief Initialize a tAllpass to the default mempool of a LEAF instance.
+     @param filter A pointer to the tAllpass to initialize.
+     @param leaf A pointer to the leaf instance.
      
      @fn void    tAllpass_initToPool     (tAllpass* const, float initDelay, uint32_t maxDelay, tMempool* const)
-     @brief
-     @param
+     @brief Initialize a tAllpass to a specified mempool.
+     @param filter A pointer to the tAllpass to initialize.
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    tAllpass_free           (tAllpass* const)
-     @brief
-     @param
+     @brief Free a tAllpass from its mempool.
+     @param filter A pointer to the tAllpass to free.
      
      @fn float   tAllpass_tick           (tAllpass* const, float input)
      @brief
-     @param
+     @param filter A pointer to the relevant tAllpass.
      
      @fn void    tAllpass_setGain        (tAllpass* const, float gain)
      @brief
-     @param
+     @param filter A pointer to the relevant tAllpass.
      
      @fn void    tAllpass_setDelay       (tAllpass* const, float delay)
      @brief
-     @param
+     @param filter A pointer to the relevant tAllpass.
      
      @} */
     
@@ -94,44 +96,46 @@
      @{
      
      @fn void    tOnePole_init           (tOnePole* const, float thePole, LEAF* const leaf)
-     @brief
-     @param
+     @brief Initialize a tOnePole to the default mempool of a LEAF instance.
+     @param filter A pointer to the tOnePole to initialize.
+     @param leaf A pointer to the leaf instance.
      
      @fn void    tOnePole_initToPool     (tOnePole* const, float thePole, tMempool* const)
-     @brief
-     @param
+     @brief Initialize a tOnePole to a specified mempool.
+     @param filter A pointer to the tOnePole to initialize.
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    tOnePole_free           (tOnePole* const)
-     @brief
-     @param
+     @brief Free a tOnePole from its mempool.
+     @param filter A pointer to the tOnePole to free.
      
      @fn float   tOnePole_tick           (tOnePole* const, float input)
      @brief
-     @param
+     @param filter A pointer to the relevant tOnePole.
      
      @fn void    tOnePole_setB0          (tOnePole* const, float b0)
      @brief
-     @param
+     @param filter A pointer to the relevant tOnePole.
      
      @fn void    tOnePole_setA1          (tOnePole* const, float a1)
      @brief
-     @param
+     @param filter A pointer to the relevant tOnePole.
      
      @fn void    tOnePole_setPole        (tOnePole* const, float thePole)
      @brief
-     @param
+     @param filter A pointer to the relevant tOnePole.
      
      @fn void    tOnePole_setFreq        (tOnePole* const, float freq)
      @brief
-     @param
+     @param filter A pointer to the relevant tOnePole.
      
      @fn void    tOnePole_setCoefficients(tOnePole* const, float b0, float a1)
      @brief
-     @param
+     @param filter A pointer to the relevant tOnePole.
      
      @fn void    tOnePole_setGain        (tOnePole* const, float gain)
      @brief
-     @param
+     @param filter A pointer to the relevant tOnePole.
      
      @} */
     
@@ -168,44 +172,46 @@
      @{
      
      @fn void    tTwoPole_init           (tTwoPole* const, LEAF* const leaf)
-     @brief
-     @param
+     @brief Initialize a tTwoPole to the default mempool of a LEAF instance.
+     @param filter A pointer to the tTwoPole to initialize.
+     @param leaf A pointer to the leaf instance.
      
      @fn void    tTwoPole_initToPool     (tTwoPole* const, tMempool* const)
-     @brief
-     @param
+     @brief Initialize a tTwoPole to a specified mempool.
+     @param filter A pointer to the tTwoPole to initialize.
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    tTwoPole_free           (tTwoPole* const)
-     @brief
-     @param
+     @brief Free a tTwoPole from its mempool.
+     @param filter A pointer to the tTwoPole to free.
      
      @fn float   tTwoPole_tick           (tTwoPole* const, float input)
      @brief
-     @param
+     @param filter A pointer to the relevant tTwoPole.
      
      @fn void    tTwoPole_setB0          (tTwoPole* const, float b0)
      @brief
-     @param
+     @param filter A pointer to the relevant tTwoPole.
      
      @fn void    tTwoPole_setA1          (tTwoPole* const, float a1)
      @brief
-     @param
+     @param filter A pointer to the relevant tTwoPole.
      
      @fn void    tTwoPole_setA2          (tTwoPole* const, float a2)
      @brief
-     @param
+     @param filter A pointer to the relevant tTwoPole.
      
      @fn void    tTwoPole_setResonance   (tTwoPole* const, float freq, float radius, int normalize)
      @brief
-     @param
+     @param filter A pointer to the relevant tTwoPole.
      
      @fn void    tTwoPole_setCoefficients(tTwoPole* const, float b0, float a1, float a2)
      @brief
-     @param
+     @param filter A pointer to the relevant tTwoPole.
      
      @fn void    tTwoPole_setGain        (tTwoPole* const, float gain)
      @brief
-     @param
+     @param filter A pointer to the relevant tTwoPole.
      
      @} */
 
@@ -247,44 +253,46 @@
      @{
      
      @fn void    tOneZero_init           (tOneZero* const, float theZero, LEAF* const leaf)
-     @brief
-     @param
+     @brief Initialize a tOneZero to the default mempool of a LEAF instance.
+     @param filter A pointer to the tSlide to initialize.
+     @param leaf A pointer to the leaf instance.
      
      @fn void    tOneZero_initToPool     (tOneZero* const, float theZero, tMempool* const)
-     @brief
-     @param
+     @brief Initialize a tOneZero to a specified mempool.
+     @param filter A pointer to the tOneZero to initialize.
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    tOneZero_free           (tOneZero* const)
-     @brief
-     @param
+     @brief Free a tOneZero from its mempool.
+     @param filter A pointer to the tOneZero to free.
      
      @fn float   tOneZero_tick           (tOneZero* const, float input)
      @brief
-     @param
+     @param filter A pointer to the relevant tOneZero.
      
      @fn void    tOneZero_setB0          (tOneZero* const, float b0)
      @brief
-     @param
+     @param filter A pointer to the relevant tOneZero.
      
      @fn void    tOneZero_setB1          (tOneZero* const, float b1)
      @brief
-     @param
+     @param filter A pointer to the relevant tOneZero.
      
      @fn void    tOneZero_setZero        (tOneZero* const, float theZero)
      @brief
-     @param
+     @param filter A pointer to the relevant tOneZero.
      
      @fn void    tOneZero_setCoefficients(tOneZero* const, float b0, float b1)
      @brief
-     @param
+     @param filter A pointer to the relevant tOneZero.
      
      @fn void    tOneZero_setGain        (tOneZero* const, float gain)
      @brief
-     @param
+     @param filter A pointer to the relevant tOneZero.
      
      @fn float   tOneZero_getPhaseDelay  (tOneZero *f, float frequency)
      @brief
-     @param
+     @param filter A pointer to the relevant tOneZero.
      
      @} */
     
@@ -320,44 +328,46 @@
      @{
      
      @fn void    tTwoZero_init           (tTwoZero* const, LEAF* const leaf)
-     @brief
-     @param
+     @brief Initialize a tTwoZero to the default mempool of a LEAF instance.
+     @param filter A pointer to the tTwoZero to initialize.
+     @param leaf A pointer to the leaf instance.
      
      @fn void    tTwoZero_initToPool     (tTwoZero* const, tMempool* const)
-     @brief
-     @param
+     @brief Initialize a tTwoZero to a specified mempool.
+     @param filter A pointer to the tTwoZero to initialize.
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    tTwoZero_free           (tTwoZero* const)
-     @brief
-     @param
+     @brief Free a tTwoZero from its mempool.
+     @param filter A pointer to the tTwoZero to free.
      
      @fn float   tTwoZero_tick           (tTwoZero* const, float input)
      @brief
-     @param
+     @param filter A pointer to the relevant tTwoZero.
      
      @fn void    tTwoZero_setB0          (tTwoZero* const, float b0)
      @brief
-     @param
+     @param filter A pointer to the relevant tTwoZero.
      
      @fn void    tTwoZero_setB1          (tTwoZero* const, float b1)
      @brief
-     @param
+     @param filter A pointer to the relevant tTwoZero.
      
      @fn void    tTwoZero_setB2          (tTwoZero* const, float b2)
      @brief
-     @param
+     @param filter A pointer to the relevant tTwoZero.
      
      @fn void    tTwoZero_setNotch       (tTwoZero* const, float frequency, float radius)
      @brief
-     @param
+     @param filter A pointer to the relevant tTwoZero.
      
      @fn void    tTwoZero_setCoefficients(tTwoZero* const, float b0, float b1, float b2)
      @brief
-     @param
+     @param filter A pointer to the relevant tTwoZero.
      
      @fn void    tTwoZero_setGain        (tTwoZero* const, float gain)
      @brief
-     @param
+     @param filter A pointer to the relevant tTwoZero.
      
      
      @} */
@@ -398,49 +408,51 @@
      @{
      
      @fn void    tPoleZero_init              (tPoleZero* const, LEAF* const leaf)
-     @brief
-     @param
+     @brief Initialize a tPoleZero to the default mempool of a LEAF instance.
+     @param filter A pointer to the tPoleZero to initialize.
+     @param leaf A pointer to the leaf instance.
      
      @fn void    tPoleZero_initToPool        (tPoleZero* const, tMempool* const)
-     @brief
-     @param
+     @brief Initialize a tPoleZero to a specified mempool.
+     @param filter A pointer to the tPoleZero to initialize.
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    tPoleZero_free              (tPoleZero* const)
-     @brief
-     @param
+     @brief Free a tPoleZero from its mempool.
+     @param filter A pointer to the tPoleZero to free.
      
      
      @fn float   tPoleZero_tick              (tPoleZero* const, float input)
      @brief
-     @param
+     @param filter A pointer to the relevant tPoleZero.
      
      @fn void    tPoleZero_setB0             (tPoleZero* const, float b0)
      @brief
-     @param
+     @param filter A pointer to the relevant tPoleZero.
      
      @fn void    tPoleZero_setB1             (tPoleZero* const, float b1)
      @brief
-     @param
+     @param filter A pointer to the relevant tPoleZero.
      
      @fn void    tPoleZero_setA1             (tPoleZero* const, float a1)
      @brief
-     @param
+     @param filter A pointer to the relevant tPoleZero.
      
      @fn void    tPoleZero_setCoefficients   (tPoleZero* const, float b0, float b1, float a1)
      @brief
-     @param
+     @param filter A pointer to the relevant tPoleZero.
      
      @fn void    tPoleZero_setAllpass        (tPoleZero* const, float coeff)
      @brief
-     @param
+     @param filter A pointer to the relevant tPoleZero.
      
      @fn void    tPoleZero_setBlockZero      (tPoleZero* const, float thePole)
      @brief
-     @param
+     @param filter A pointer to the relevant tPoleZero.
      
      @fn void    tPoleZero_setGain           (tPoleZero* const, float gain)
      @brief
-     @param
+     @param filter A pointer to the relevant tPoleZero.
      
      
      @} */
@@ -481,57 +493,59 @@
      @{
      
      @fn void    tBiQuad_init           (tBiQuad* const, LEAF* const leaf)
-     @brief
-     @param
+     @brief Initialize a tBiQuad to the default mempool of a LEAF instance.
+     @param filter A pointer to the tBiQuad to initialize.
+     @param leaf A pointer to the leaf instance.
      
      @fn void    tBiQuad_initToPool     (tBiQuad* const, tMempool* const)
-     @brief
-     @param
+     @brief Initialize a tBiQuad to a specified mempool.
+     @param filter A pointer to the tBiQuad to initialize.
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    tBiQuad_free           (tBiQuad* const)
-     @brief
-     @param
+     @brief Free a tBiQuad from its mempool.
+     @param filter A pointer to the tBiQuad to free.
      
      
      @fn float   tBiQuad_tick           (tBiQuad* const, float input)
      @brief
-     @param
+     @param filter A pointer to the relevant tBiQuad.
      
      @fn void    tBiQuad_setB0          (tBiQuad* const, float b0)
      @brief
-     @param
+     @param filter A pointer to the relevant tBiQuad.
      
      @fn void    tBiQuad_setB1          (tBiQuad* const, float b1)
      @brief
-     @param
+     @param filter A pointer to the relevant tBiQuad.
      
      @fn void    tBiQuad_setB2          (tBiQuad* const, float b2)
      @brief
-     @param
+     @param filter A pointer to the relevant tBiQuad.
      
      @fn void    tBiQuad_setA1          (tBiQuad* const, float a1)
      @brief
-     @param
+     @param filter A pointer to the relevant tBiQuad.
      
      @fn void    tBiQuad_setA2          (tBiQuad* const, float a2)
      @brief
-     @param
+     @param filter A pointer to the relevant tBiQuad.
      
      @fn void    tBiQuad_setNotch       (tBiQuad* const, float freq, float radius)
      @brief
-     @param
+     @param filter A pointer to the relevant tBiQuad.
      
      @fn void    tBiQuad_setResonance   (tBiQuad* const, float freq, float radius, int normalize)
      @brief
-     @param
+     @param filter A pointer to the relevant tBiQuad.
      
      @fn void    tBiQuad_setCoefficients(tBiQuad* const, float b0, float b1, float b2, float a1, float a2)
      @brief
-     @param
+     @param filter A pointer to the relevant tBiQuad.
      
      @fn void    tBiQuad_setGain        (tBiQuad* const, float gain)
      @brief
-     @param
+     @param filter A pointer to the relevant tBiQuad.
      
      
      @} */
@@ -578,32 +592,34 @@
      @{
      
      @fn void    tSVF_init           (tSVF* const, SVFType type, float freq, float Q, LEAF* const leaf)
-     @brief
-     @param
+     @brief Initialize a tSVF to the default mempool of a LEAF instance.
+     @param filter A pointer to the tSVF to initialize.
+     @param leaf A pointer to the leaf instance.
      
      @fn void    tSVF_initToPool     (tSVF* const, SVFType type, float freq, float Q, tMempool* const)
-     @brief
-     @param
+     @brief Initialize a tSVF to a specified mempool.
+     @param filter A pointer to the tSVF to initialize.
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    tSVF_free           (tSVF* const)
-     @brief
-     @param
+     @brief Free a tSVF from its mempool.
+     @param filter A pointer to the tSVF to free.
      
      @fn float   tSVF_tick           (tSVF* const, float v0)
-     
      @brief
-     @param
+     @param filter A pointer to the relevant tSVF.
+     
      @fn void    tSVF_setFreq        (tSVF* const, float freq)
      @brief
-     @param
+     @param filter A pointer to the relevant tSVF.
      
      @fn void    tSVF_setQ           (tSVF* const, float Q)
      @brief
-     @param
+     @param filter A pointer to the relevant tSVF.
      
      @fn void    tSVF_setFreqAndQ    (tSVF* const svff, float freq, float Q)
      @brief
-     @param
+     @param filter A pointer to the relevant tSVF.
      
      @} */
     
@@ -648,28 +664,30 @@
      @{
      
      @fn void    tEfficientSVF_init          (tEfficientSVF* const, SVFType type, uint16_t input, float Q, LEAF* const leaf)
-     @brief
-     @param
+     @brief Initialize a tEfficientSVF to the default mempool of a LEAF instance.
+     @param filter A pointer to the tEfficientSVF to initialize.
+     @param leaf A pointer to the leaf instance.
      
      @fn void    tEfficientSVF_initToPool    (tEfficientSVF* const, SVFType type, uint16_t input, float Q, tMempool* const)
-     @brief
-     @param
+     @brief Initialize a tEfficientSVF to a specified mempool.
+     @param filter A pointer to the tEfficientSVF to initialize.
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    tEfficientSVF_free          (tEfficientSVF* const)
-     @brief
-     @param
+     @brief Free a tEfficientSVF from its mempool.
+     @param filter A pointer to the tEfficientSVF to free.
      
      @fn float   tEfficientSVF_tick          (tEfficientSVF* const, float v0)
      @brief
-     @param
+     @param filter A pointer to the relevant tEfficientSVF.
      
      @fn void    tEfficientSVF_setFreq       (tEfficientSVF* const, uint16_t controlFreq)
      @brief
-     @param
+     @param filter A pointer to the relevant tEfficientSVF.
      
      @fn void    tEfficientSVF_setQ          (tEfficientSVF* const, float Q)
      @brief
-     @param
+     @param filter A pointer to the relevant tEfficientSVF.
      
      @} */
     
@@ -702,28 +720,30 @@
      @{
      
      @fn void    tHighpass_init          (tHighpass* const, float freq, LEAF* const leaf)
-     @brief
-     @param
+     @brief Initialize a tHighpass to the default mempool of a LEAF instance.
+     @param filter A pointer to the tHighpass to initialize.
+     @param leaf A pointer to the leaf instance.
      
      @fn void    tHighpass_initToPool    (tHighpass* const, float freq, tMempool* const)
-     @brief
-     @param
+     @brief Initialize a tHighpass to a specified mempool.
+     @param filter A pointer to the tHighpass to initialize.
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    tHighpass_free          (tHighpass* const)
-     @brief
-     @param
+     @brief Free a tHighpass from its mempool.
+     @param filter A pointer to the tHighpass to free.
      
      @fn float   tHighpass_tick          (tHighpass* const, float x)
      @brief
-     @param
+     @param filter A pointer to the relevant tHighpass.
      
      @fn void    tHighpass_setFreq       (tHighpass* const, float freq)
      @brief
-     @param
+     @param filter A pointer to the relevant tHighpass.
      
      @fn float   tHighpass_getFreq       (tHighpass* const)
      @brief
-     @param
+     @param filter A pointer to the relevant tHighpass.
      
      @} */
     
@@ -754,32 +774,34 @@
      @{
      
      @fn void    tButterworth_init           (tButterworth* const, int N, float f1, float f2, LEAF* const leaf, LEAF* const leaf)
-     @brief
-     @param
+     @brief Initialize a tButterworth to the default mempool of a LEAF instance.
+     @param filter A pointer to the tButterworth to initialize.
+     @param leaf A pointer to the leaf instance.
      
      @fn void    tButterworth_initToPool     (tButterworth* const, int N, float f1, float f2, tMempool* const)
-     @brief
-     @param
+     @brief Initialize a tButterworth to a specified mempool.
+     @param filter A pointer to the tButterworth to initialize.
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    tButterworth_free           (tButterworth* const)
-     @brief
-     @param
+     @brief Free a tButterworth from its mempool.
+     @param filter A pointer to the tButterworth to free.
      
      @fn float   tButterworth_tick           (tButterworth* const, float input)
      @brief
-     @param
+     @param filter A pointer to the relevant tButterworth.
      
      @fn void    tButterworth_setF1          (tButterworth* const, float in)
      @brief
-     @param
+     @param filter A pointer to the relevant tButterworth.
      
      @fn void    tButterworth_setF2          (tButterworth* const, float in)
      @brief
-     @param
+     @param filter A pointer to the relevant tButterworth.
      
      @fn void    tButterworth_setFreqs       (tButterworth* const, float f1, float f2)
      @brief
-     @param
+     @param filter A pointer to the relevant tButterworth.
      
      @} */
     
@@ -819,20 +841,22 @@
      @{
      
      @fn void    tFIR_init           (tFIR* const, float* coeffs, int numTaps, LEAF* const leaf)
-     @brief
-     @param
+     @brief Initialize a tFIR to the default mempool of a LEAF instance.
+     @param filter A pointer to the tFIR to initialize.
+     @param leaf A pointer to the leaf instance.
      
      @fn void    tFIR_initToPool     (tFIR* const, float* coeffs, int numTaps, tMempool* const)
-     @brief
-     @param
+     @brief Initialize a tFIR to a specified mempool.
+     @param filter A pointer to the tFIR to initialize.
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    tFIR_free           (tFIR* const)
-     @brief
-     @param
+     @brief Free a tFIR from its mempool.
+     @param filter A pointer to the tFIR to free.
      
      @fn float   tFIR_tick           (tFIR* const, float input)
      @brief
-     @param
+     @param filter A pointer to the relevant tFIR.
      
      @} */
     
@@ -863,20 +887,22 @@
      @{
      
      @fn void    tMedianFilter_init           (tMedianFilter* const, int size, LEAF* const leaf)
-     @brief
-     @param
+     @brief Initialize a tMedianFilter to the default mempool of a LEAF instance.
+     @param filter A pointer to the tMedianFilter to initialize.
+     @param leaf A pointer to the leaf instance.f
      
      @fn void    tMedianFilter_initToPool     (tMedianFilter* const, int size, tMempool* const)
-     @brief
-     @param
+     @brief Initialize a tMedianFilter to a specified mempool.
+     @param filter A pointer to the tMedianFilter to initialize.
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    tMedianFilter_free           (tMedianFilter* const)
-     @brief
-     @param
+     @brief Free a tMedianFilter from its mempool.
+     @param filter A pointer to the tMedianFilter to free.
      
      @fn float   tMedianFilter_tick           (tMedianFilter* const, float input)
      @brief
-     @param
+     @param filter A pointer to the relevant tMedianFilter.
      
      @} */
     
@@ -909,54 +935,58 @@
      @{
      
      @fn void    tVZFilter_init           (tVZFilter* const, VZFilterType type, float freq, float Q, LEAF* const leaf)
-     @brief
-     @param
+     @brief Initialize a tVZFilter to the default mempool of a LEAF instance.
+     @param filter A pointer to the tVZFilter to initialize.
+     @param leaf A pointer to the leaf instance.
      
      @fn void    tVZFilter_initToPool     (tVZFilter* const, VZFilterType type, float freq, float Q, tMempool* const)
-     @brief
-     @param
+     @brief Initialize a tVZFilter to a specified mempool.
+     @param filter A pointer to the tVZFilter to initialize.
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    tVZFilter_free           (tVZFilter* const)
-     @brief
-     @param
+     @brief Free a tVZFilter from its mempool.
+     @param filter A pointer to the tVZFilter to free.
      
      @fn void    tVZFilter_setSampleRate  (tVZFilter* const, float sampleRate)
      @brief
-     @param
+     @param filter A pointer to the relevant tVZFilter.
      
      @fn float   tVZFilter_tick               (tVZFilter* const, float input)
      @brief
-     @param
+     @param filter A pointer to the relevant tVZFilter.
      
      @fn float   tVZFilter_tickEfficient               (tVZFilter* const vf, float in)
      @brief
-     @param
+     @param filter A pointer to the relevant tVZFilter.
      
      @fn void    tVZFilter_calcCoeffs           (tVZFilter* const)
      @brief
-     @param
+     @param filter A pointer to the relevant tVZFilter.
      
      @fn void    tVZFilter_setBandwidth            (tVZFilter* const, float bandWidth)
      @brief
-     @param
+     @param filter A pointer to the relevant tVZFilter.
      
      @fn void    tVZFilter_setFreq           (tVZFilter* const, float freq)
      @brief
-     @param
+     @param filter A pointer to the relevant tVZFilter.
      
      @fn void    tVZFilter_setFreqAndBandwidth    (tVZFilter* const vf, float freq, float bw)
      @brief
-     @param
+     @param filter A pointer to the relevant tVZFilter.
+     
      @fn void    tVZFilter_setGain                  (tVZFilter* const, float gain)
      @brief
-     @param
+     @param filter A pointer to the relevant tVZFilter.
+     
      @fn void    tVZFilter_setType                  (tVZFilter* const, VZFilterType type)
      @brief
-     @param
+     @param filter A pointer to the relevant tVZFilter.
      
      @fn float   tVZFilter_BandwidthToR        (tVZFilter* const vf, float B)
      @brief
-     @param
+     @param filter A pointer to the relevant tVZFilter.
      
      @} */
     
@@ -1030,28 +1060,30 @@
      @{
      
      @fn void    tDiodeFilter_init           (tDiodeFilter* const, float freq, float Q, LEAF* const leaf)
-     @brief
-     @param
+     @brief Initialize a tDiodeFilter to the default mempool of a LEAF instance.
+     @param filter A pointer to the tDiodeFilter to initialize.
+     @param leaf A pointer to the leaf instance.
      
      @fn void    tDiodeFilter_initToPool     (tDiodeFilter* const, float freq, float Q, tMempool* const)
-     @brief
-     @param
+     @brief Initialize a tDiodeFilter to a specified mempool.
+     @param filter A pointer to the tDiodeFilter to initialize.
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    tDiodeFilter_free           (tDiodeFilter* const)
-     @brief
-     @param
+     @brief Free a tDiodeFilter from its mempool.
+     @param filter A pointer to the tDiodeFilter to free.
      
      @fn float   tDiodeFilter_tick               (tDiodeFilter* const, float input)
      @brief
-     @param
+     @param filter A pointer to the relevant tDiodeFilter.
      
      @fn void    tDiodeFilter_setFreq     (tDiodeFilter* const vf, float cutoff)
      @brief
-     @param
+     @param filter A pointer to the relevant tDiodeFilter.
      
      @fn void    tDiodeFilter_setQ     (tDiodeFilter* const vf, float resonance)
      @brief
-     @param
+     @param filter A pointer to the relevant tDiodeFilter.
      
      @} */
     
--- a/leaf/Inc/leaf-global.h
+++ b/leaf/Inc/leaf-global.h
@@ -19,7 +19,7 @@
     
     /*!
      * @ingroup leaf
-     * @brief The struct of the global LEAF instance `leaf`. Contains global variables and settings.
+     * @brief Struct for an instance of LEAF.
      */
     
     struct LEAF
--- a/leaf/Inc/leaf-instruments.h
+++ b/leaf/Inc/leaf-instruments.h
@@ -38,48 +38,50 @@
      @{
      
      @fn void    t808Cowbell_init            (t808Cowbell* const, int useStick, LEAF* const leaf)
-     @brief
-     @param
+     @brief Initialize a t808Cowbell to the default mempool of a LEAF instance.
+     @param cowbell A pointer to the t808Cowbell to initialize.
+     @param leaf A pointer to the leaf instance.
      
      @fn void    t808Cowbell_initToPool      (t808Cowbell* const, int useStick, tMempool* const)
-     @brief
-     @param
+     @brief Initialize a t808Cowbell to a specified mempool.
+     @param cowbell A pointer to the t808Cowbell to initialize.
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    t808Cowbell_free            (t808Cowbell* const)
-     @brief
-     @param
+     @brief Free a t808Cowbell from its mempool.
+     @param cowbell A pointer to the t808Cowbell to free.
      
      @fn float   t808Cowbell_tick            (t808Cowbell* const)
      @brief
-     @param
+     @param cowbell A pointer to the relevant t808Cowbell.
      
      @fn void    t808Cowbell_on              (t808Cowbell* const, float vel)
      @brief
-     @param
+     @param cowbell A pointer to the relevant t808Cowbell.
      
      @fn void    t808Cowbell_setDecay        (t808Cowbell* const, float decay)
      @brief
-     @param
+     @param cowbell A pointer to the relevant t808Cowbell.
      
      @fn void    t808Cowbell_setHighpassFreq (t808Cowbell* const, float freq)
      @brief
-     @param
+     @param cowbell A pointer to the relevant t808Cowbell.
      
      @fn void    t808Cowbell_setBandpassFreq (t808Cowbell* const, float freq)
      @brief
-     @param
+     @param cowbell A pointer to the relevant t808Cowbell.
      
      @fn void    t808Cowbell_setFreq         (t808Cowbell* const, float freq)
      @brief
-     @param
+     @param cowbell A pointer to the relevant t808Cowbell.
      
      @fn void    t808Cowbell_setOscMix       (t808Cowbell* const, float oscMix)
      @brief
-     @param
+     @param cowbell A pointer to the relevant t808Cowbell.
      
      @fn void    t808Cowbell_setStick        (t808Cowbell* const, int useStick)
      @brief
-     @param
+     @param cowbell A pointer to the relevant t808Cowbell.
      
      @} */
     
@@ -123,64 +125,66 @@
      @{
      
      @fn void    t808Hihat_init                  (t808Hihat* const, LEAF* const leaf)
-     @brief
-     @param
+     @brief Initialize a t808Hihat to the default mempool of a LEAF instance.
+     @param hihat A pointer to the t808Hihat to initialize.
+     @param leaf A pointer to the leaf instance.
      
      @fn void    t808Hihat_initToPool            (t808Hihat* const, tMempool* const)
-     @brief
-     @param
+     @brief Initialize a t808Hihat to a specified mempool.
+     @param hihat A pointer to the t808Hihat to initialize.
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    t808Hihat_free                  (t808Hihat* const)
-     @brief
-     @param
+     @brief Free a t808Hihat from its mempool.
+     @param hihat A pointer to the t808Hihat to free.
      
      @fn float   t808Hihat_tick                  (t808Hihat* const)
      @brief
-     @param
+     @param hihat A pointer to the relevant t808Hihat.
      
      @fn void    t808Hihat_on                    (t808Hihat* const, float vel)
      @brief
-     @param
+     @param hihat A pointer to the relevant t808Hihat.
      
      @fn void    t808Hihat_setOscNoiseMix        (t808Hihat* const, float oscNoiseMix)
      @brief
-     @param
+     @param hihat A pointer to the relevant t808Hihat.
      
      @fn void    t808Hihat_setDecay              (t808Hihat* const, float decay)
      @brief
-     @param
+     @param hihat A pointer to the relevant t808Hihat.
      
      @fn void    t808Hihat_setHighpassFreq       (t808Hihat* const, float freq)
      @brief
-     @param
+     @param hihat A pointer to the relevant t808Hihat.
      
      @fn void    t808Hihat_setOscBandpassFreq    (t808Hihat* const, float freq)
      @brief
-     @param
+     @param hihat A pointer to the relevant t808Hihat.
      
      @fn void    t808Hihat_setOscBandpassQ       (t808Hihat* const hihat, float Q)
      @brief
-     @param
+     @param hihat A pointer to the relevant t808Hihat.
      
      @fn void    t808Hihat_setStickBandPassFreq  (t808Hihat* const, float freq)
      @brief
-     @param
+     @param hihat A pointer to the relevant t808Hihat.
      
      @fn void    t808Hihat_setStickBandPassQ     (t808Hihat* const hihat, float Q)
      @brief
-     @param
+     @param hihat A pointer to the relevant t808Hihat.
      
      @fn void    t808Hihat_setOscFreq            (t808Hihat* const, float freq)
      @brief
-     @param
+     @param hihat A pointer to the relevant t808Hihat.
      
      @fn void    t808Hihat_setStretch            (t808Hihat* const hihat, float stretch)
      @brief
-     @param
+     @param hihat A pointer to the relevant t808Hihat.
      
      @fn void    t808Hihat_setFM                 (t808Hihat* const hihat, float FM_amount)
      @brief
-     @param
+     @param hihat A pointer to the relevant t808Hihat.
     
      @} */
     
@@ -233,56 +237,58 @@
      @{
      
      @fn void    t808Snare_init                  (t808Snare* const, LEAF* const leaf)
-     @brief
-     @param
+     @brief Initialize a t808Snare to the default mempool of a LEAF instance.
+     @param snare A pointer to the t808Snare to initialize.
+     @param leaf A pointer to the leaf instance.
      
      @fn void    t808Snare_initToPool            (t808Snare* const, tMempool* const)
-     @brief
-     @param
+     @brief Initialize a t808Snare to a specified mempool.
+     @param snare A pointer to the t808Snare to initialize.
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    t808Snare_free                  (t808Snare* const)
-     @brief
-     @param
+     @brief Free a t808Snare from its mempool.
+     @param snare A pointer to the t808Snare to free.
      
      @fn float   t808Snare_tick                  (t808Snare* const)
      @brief
-     @param
+     @param snare A pointer to the relevant t808Snare.
      
      @fn void    t808Snare_on                    (t808Snare* const, float vel)
      @brief
-     @param
+     @param snare A pointer to the relevant t808Snare.
      
      @fn void    t808Snare_setTone1Freq          (t808Snare* const, float freq)
      @brief
-     @param
+     @param snare A pointer to the relevant t808Snare.
      
      @fn void    t808Snare_setTone2Freq          (t808Snare* const, float freq)
      @brief
-     @param
+     @param snare A pointer to the relevant t808Snare.
      
      @fn void    t808Snare_setTone1Decay         (t808Snare* const, float decay)
      @brief
-     @param
+     @param snare A pointer to the relevant t808Snare.
      
      @fn void    t808Snare_setTone2Decay         (t808Snare* const, float decay)
      @brief
-     @param
+     @param snare A pointer to the relevant t808Snare.
      
      @fn void    t808Snare_setNoiseDecay         (t808Snare* const, float decay)
      @brief
-     @param
+     @param snare A pointer to the relevant t808Snare.
      
      @fn void    t808Snare_setToneNoiseMix       (t808Snare* const, float toneNoiseMix)
      @brief
-     @param
+     @param snare A pointer to the relevant t808Snare.
      
      @fn void    t808Snare_setNoiseFilterFreq    (t808Snare* const, float noiseFilterFreq)
      @brief
-     @param
+     @param snare A pointer to the relevant t808Snare.
      
      @fn void    t808Snare_setNoiseFilterQ       (t808Snare* const, float noiseFilterQ)
      @brief
-     @param
+     @param snare A pointer to the relevant t808Snare.
      
      @} */
     
@@ -337,56 +343,58 @@
      @{
      
      @fn void    t808Kick_init               (t808Kick* const, LEAF* const leaf)
-     @brief
-     @param
+     @brief Initialize a t808Kick to the default mempool of a LEAF instance.
+     @param kick A pointer to the t808Kick to initialize.
+     @param leaf A pointer to the leaf instance.
      
      @fn void    t808Kick_initToPool         (t808Kick* const, tMempool* const)
-     @brief
-     @param
+     @brief Initialize a t808Kick to a specified mempool.
+     @param kick A pointer to the t808Kick to initialize.
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    t808Kick_free               (t808Kick* const)
-     @brief
-     @param
+     @brief Free a t808Kick from its mempool.
+     @param kick A pointer to the t808Kick to free.
      
      @fn float   t808Kick_tick               (t808Kick* const)
      @brief
-     @param
+     @param kick A pointer to the relevant t808Kick.
      
      @fn void    t808Kick_on                 (t808Kick* const, float vel)
      @brief
-     @param
+     @param kick A pointer to the relevant t808Kick.
      
      @fn void    t808Kick_setToneFreq        (t808Kick* const, float freq)
      @brief
-     @param
+     @param kick A pointer to the relevant t808Kick.
      
      @fn void    t808Kick_setToneDecay       (t808Kick* const, float decay)
      @brief
-     @param
+     @param kick A pointer to the relevant t808Kick.
      
      @fn void    t808Kick_setNoiseDecay      (t808Kick* const, float decay)
      @brief
-     @param
+     @param kick A pointer to the relevant t808Kick.
      
      @fn void    t808Kick_setSighAmount      (t808Kick* const, float sigh)
      @brief
-     @param
+     @param kick A pointer to the relevant t808Kick.
      
      @fn void    t808Kick_setChirpAmount     (t808Kick* const, float chirp)
      @brief
-     @param
+     @param kick A pointer to the relevant t808Kick.
      
      @fn void    t808Kick_setToneNoiseMix    (t808Kick* const, float toneNoiseMix)
      @brief
-     @param
+     @param kick A pointer to the relevant t808Kick.
      
      @fn void    t808Kick_setNoiseFilterFreq (t808Kick* const, float noiseFilterFreq)
      @brief
-     @param
+     @param kick A pointer to the relevant t808Kick.
      
      @fn void    t808Kick_setNoiseFilterQ    (t808Kick* const, float noiseFilterQ)
      @brief
-     @param
+     @param kick A pointer to the relevant t808Kick.
      
      @} */
     
--- a/leaf/Inc/leaf-mempool.h
+++ b/leaf/Inc/leaf-mempool.h
@@ -89,11 +89,12 @@
         mpool_node_t* head;        // first node of memory pool free list
     };
     
-    //! Initialize a tMempool for a given memory location and size to the default LEAF mempool.
+    //! Initialize a tMempool for a given memory location and size to the default mempool of a LEAF instance.
     /*!
-     @param pool A pointer to the tMempool to be initialized.
+     @param pool A pointer to the tMempool to initialize.
      @param memory A pointer to the chunk of memory to be used as a mempool.
      @param size The size of the chunk of memory to be used as a mempool.
+     @param leaf A pointer to the leaf instance.
      */
     void    tMempool_init           (tMempool* const pool, char* memory, size_t size, LEAF* const leaf);
     
@@ -100,7 +101,7 @@
     
     //! Free a tMempool from its mempool.
     /*!
-     @param pool A pointer to the tMempool to be freed.
+     @param pool A pointer to the tMempool to free.
      */
     void    tMempool_free           (tMempool* const pool);
     
@@ -107,12 +108,12 @@
     
     //! Initialize a tMempool for a given memory location and size to a specified mempool.
     /*!
-     @param pool A pointer to the tMempool to be initialized.
+     @param pool A pointer to the tMempool to initialize.
      @param memory A pointer to the chunk of memory to be used as a mempool.
      @param size The size of the chuck of memory to be used as a mempool.
-     @param poolTo A pointer to the tMempool to which a tMempool should be initialized.
+     @param poolTo A pointer to the tMempool to which this tMempool should be initialized.
      */
-    void    tMempool_initToPool     (tMempool* const mp, char* memory, size_t size, tMempool* const mem, LEAF* const leaf);
+    void    tMempool_initToPool     (tMempool* const mp, char* memory, size_t size, tMempool* const mem);
 
     /*!
      @} */
--- a/leaf/Inc/leaf-midi.h
+++ b/leaf/Inc/leaf-midi.h
@@ -39,17 +39,18 @@
      @{
      
      @fn void    tStack_init                 (tStack* const stack, LEAF* const leaf)
-     @brief Initialize a tStack to the default LEAF mempool.
-     @param stack A pointer to the tStack to be initialized.
+     @brief Initialize a tStack to the default mempool of a LEAF instance.
+     @param stack A pointer to the tStack to initialize.
+     @param leaf A pointer to the leaf instance.
      
      @fn void    tStack_initToPool           (tStack* const stack, tMempool* const mempool)
      @brief Initialize a tStack to a specified mempool.
-     @param stack A pointer to the tStack to be initialized.
-     @param mempool A pointer to the tMempool to which the tStack should be initialized.
+     @param stack A pointer to the tStack to initialize.
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    tStack_free                 (tStack* const stack)
      @brief Free a tStack from its mempool.
-     @param stack A pointer to the tStack to be freed.
+     @param stack A pointer to the tStack to free.
      
      @fn void    tStack_setCapacity          (tStack* const stack, uint16_t cap)
      @brief Set the capacity of the stack.
@@ -140,18 +141,19 @@
      @{
      
      @fn void    tPoly_init                  (tPoly* const poly, int maxNumVoices, LEAF* const leaf)
-     @brief Initialize a tPoly to the default LEAF mempool.
-     @param poly A pointer to the tPoly to be initialized.
+     @brief Initialize a tPoly to the default mempool of a LEAF instance.
+     @param poly A pointer to the tPoly to initialize.
      @param maxNumVoices The maximum number of voices this tPoly can handle at once.
+     @param leaf A pointer to the leaf instance.
      
      @fn void    tPoly_initToPool            (tPoly* const poly, int maxNumVoices, tMempool* const pool)
      @brief Initialize a tPoly to a specified mempool.
-     @param poly A pointer to the tPoly to be initialized.
-     @param pool A pointer to the tMempool to which the tPoly should be initialized.
+     @param poly A pointer to the tPoly to initialize.
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    tPoly_free                  (tPoly* const poly)
      @brief Free a tPoly from its mempool.
-     @param poly A pointer to the tPoly to be freed.
+     @param poly A pointer to the tPoly to free.
      
      @fn int     tPoly_noteOn                (tPoly* const poly, int note, uint8_t vel)
      @brief Add a note with a given velocity to the poly handler.
@@ -317,18 +319,19 @@
      @{
      
      @fn void    tSimplePoly_init                  (tSimplePoly* const poly, int maxNumVoices, LEAF* const leaf)
-     @brief Initialize a tSimplePoly to the default LEAF mempool.
-     @param poly A pointer to the tSimplePoly to be initialized.
+     @brief Initialize a tSimplePoly to the default mempool of a LEAF instance.
+     @param poly A pointer to the tSimplePoly to initialize.
      @param maxNumVoices The maximum number of voices this tSimplePoly can handle at once.
+     @param leaf A pointer to the leaf instance.
      
      @fn void    tSimplePoly_initToPool            (tSimplePoly* const poly, int maxNumVoices, tMempool* const pool)
      @brief Initialize a tSimplePoly to a specified mempool.
-     @param poly A pointer to the tSimplePoly to be initialized.
-     @param pool A pointer to the tMempool to which the tSimplePoly should be initialized.
+     @param poly A pointer to the tSimplePoly to initialize.
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    tSimplePoly_free                  (tSimplePoly* const poly)
      @brief Free a tSimplePoly from its mempool.
-     @param poly A pointer to the tSimplePoly to be freed.
+     @param poly A pointer to the tSimplePoly to free.
      
      @fn int     tSimplePoly_noteOn                (tSimplePoly* const poly, int note, uint8_t vel)
      @brief Add a note with a given velocity to the poly handler.
--- a/leaf/Inc/leaf-oscillators.h
+++ b/leaf/Inc/leaf-oscillators.h
@@ -34,22 +34,23 @@
      @brief A general wavetable oscillator.
      @{
 
-     @fn void    tTable_init         (tTable* const osc, float* table, int size, LEAF* const leaf)
-     @brief Initialize a tTable to the default LEAF mempool.
-     @param osc A pointer to the tTable to be initialized.
+     @fn void    tTable_init  (tTable* const osc, float* table, int size, LEAF* const leaf)
+     @brief Initialize a tTable to the default mempool of a LEAF instance.
+     @param osc A pointer to the tTable to initialize.
      @param table A pointer to the wave table data.
      @param size The number of samples in the wave table.
+     @param leaf A pointer to the leaf instance.
 
      @fn void    tTable_initToPool   (tTable* const osc, float* table, int size, tMempool* const mempool)
      @brief Initialize a tTable to a specified mempool.
-     @param osc A pointer to the tTable to be initialized.
+     @param osc A pointer to the tTable to initialize.
      @param table A pointer to the wave table data.
      @param size The number of samples in the wave table.
-     @param mempool A pointer to the tMempool to which the tTable should be initialized.
+     @param mempool A pointer to the tMempool to use.
 
      @fn void    tTable_free         (tTable* const osc)
      @brief Free a tTable from its mempool.
-     @param osc A pointer to the tTable to be freed.
+     @param osc A pointer to the tTable to free.
  
      @fn float   tTable_tick         (tTable* const osc)
      @brief Tick a tTable oscillator.
@@ -92,17 +93,18 @@
      @{
 
      @fn void    tCycle_init         (tCycle* const osc, LEAF* const leaf)
-     @brief Initialize a tCycle to the default LEAF mempool.
-     @param osc A pointer to the tCycle to be initialized.
+     @brief Initialize a tCycle to the default mempool of a LEAF instance.
+     @param osc A pointer to the tCycle to initialize.
+     @param leaf A pointer to the leaf instance.
      
      @fn void    tCycle_initToPool   (tCycle* const osc, tMempool* const mempool)
      @brief Initialize a tCycle to a specified mempool.
-     @param osc A pointer to the tCycle to be initialized.
-     @param mempool A pointer to the tMempool to which the tCycle should be initialized.
+     @param osc A pointer to the tCycle to initialize.
+     @param mempool A pointer to the tMempool to use.
 
      @fn void    tCycle_free         (tCycle* const osc)
      @brief Free a tCycle from its mempool.
-     @param osc A pointer to the tCycle to be freed.
+     @param osc A pointer to the tCycle to free.
      
      @fn float   tCycle_tick         (tCycle* const osc)
      @brief Tick a tCycle oscillator.
@@ -144,17 +146,18 @@
      @{
      
      @fn void    tTriangle_init         (tTriangle* const osc, LEAF* const leaf)
-     @brief Initialize a tTriangle to the default LEAF mempool.
-     @param osc A pointer to the tTriangle to be initialized.
+     @brief Initialize a tTriangle to the default mempool of a LEAF instance.
+     @param osc A pointer to the tTriangle to initialize.
+     @param leaf A pointer to the leaf instance.
      
      @fn void    tTriangle_initToPool   (tTriangle* const osc, tMempool* const mempool)
      @brief Initialize a tTriangle to a specified mempool.
-     @param osc A pointer to the tTriangle to be initialized.
-     @param mempool A pointer to the tMempool to which the tTriangle should be initialized.
+     @param osc A pointer to the tTriangle to initialize.
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    tTriangle_free         (tTriangle* const osc)
      @brief Free a tTriangle from its mempool.
-     @param osc A pointer to the tTriangle to be freed.
+     @param osc A pointer to the tTriangle to free.
      
      @fn float   tTriangle_tick         (tTriangle* const osc)
      @brief Tick a tTriangle oscillator.
@@ -198,17 +201,18 @@
      @{
      
      @fn void    tSquare_init         (tSquare* const osc, LEAF* const leaf)
-     @brief Initialize a tSquare to the default LEAF mempool.
-     @param osc A pointer to the tSquare to be initialized.
+     @brief Initialize a tSquare to the default mempool of a LEAF instance.
+     @param osc A pointer to the tSquare to initialize.
+     @param leaf A pointer to the leaf instance.
      
      @fn void    tSquare_initToPool   (tSquare* const osc, tMempool* const mempool)
      @brief Initialize a tSquare to a specified mempool.
-     @param osc A pointer to the tSquare to be initialized.
-     @param mempool A pointer to the tMempool to which the tSquare should be initialized.
+     @param osc A pointer to the tSquare to initialize.
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    tSquare_free         (tSquare* const osc)
      @brief Free a tSquare from its mempool.
-     @param osc A pointer to the tSquare to be freed.
+     @param osc A pointer to the tSquare to free.
      
      @fn float   tSquare_tick         (tSquare* const osc)
      @brief Tick a tSquare oscillator.
@@ -254,17 +258,18 @@
      @{
      
      @fn void    tSawtooth_init         (tSawtooth* const osc, LEAF* const leaf)
-     @brief Initialize a tSawtooth to the default LEAF mempool.
-     @param osc A pointer to the tSawtooth to be initialized.
+     @brief Initialize a tSawtooth to the default mempool of a LEAF instance.
+     @param osc A pointer to the tSawtooth to initialize.
+     @param leaf A pointer to the leaf instance.
      
      @fn void    tSawtooth_initToPool   (tSawtooth* const osc, tMempool* const mempool)
      @brief Initialize a tSawtooth to a specified mempool.
-     @param osc A pointer to the tSawtooth to be initialized.
-     @param mempool A pointer to the tMempool to which the tSawtooth should be initialized.
+     @param osc A pointer to the tSawtooth to initialize.
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    tSawtooth_free         (tSawtooth* const osc)
      @brief Free a tSawtooth from its mempool.
-     @param osc A pointer to the tSawtooth to be freed.
+     @param osc A pointer to the tSawtooth to free.
      
      @fn float   tSawtooth_tick         (tSawtooth* const osc)
      @brief Tick a tSawtooth oscillator.
@@ -307,28 +312,30 @@
      @{
      
      @fn void    tTri_init          (tTri* const osc, LEAF* const leaf)
-     @brief
-     @param
+     @brief Initialize a tTri to the default mempool of a LEAF instance.
+     @param osc A pointer to the tTri to initialize.
+     @param leaf A pointer to the leaf instance.
      
      @fn void    tTri_initToPool    (tTri* const osc, tMempool* const mempool)
-     @brief
-     @param
+     @brief Initialize a tTri to a specified mempool.
+     @param osc A pointer to the tTri to initialize.
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    tTri_free          (tTri* const osc)
-     @brief
-     @param
+     @brief Free a tTri from its mempool.
+     @param osc A pointer to the tTri to free.
      
      @fn float   tTri_tick          (tTri* const osc)
      @brief
-     @param
+     @param osc A pointer to the relevant tTri.
      
      @fn void    tTri_setFreq       (tTri* const osc, float freq)
      @brief
-     @param
+     @param osc A pointer to the relevant tTri.
      
      @fn void    tTri_setSkew       (tTri* const osc, float skew)
      @brief
-     @param
+     @param osc A pointer to the relevant tTri.
      
      @} */
 
@@ -361,28 +368,30 @@
      @{
      
      @fn void    tPulse_init        (tPulse* const osc, LEAF* const leaf)
-     @brief
-     @param
+     @brief Initialize a tPulse to the default mempool of a LEAF instance.
+     @param osc A pointer to the tPulse to initialize.
+     @param leaf A pointer to the leaf instance.
      
      @fn void    tPulse_initToPool  (tPulse* const osc, tMempool* const)
-     @brief
-     @param
+     @brief Initialize a tPulse to a specified mempool.
+     @param osc A pointer to the tPulse to initialize.
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    tPulse_free        (tPulse* const osc)
-     @brief
-     @param
+     @brief Free a tPulse from its mempool.
+     @param osc A pointer to the tPulse to free.
      
      @fn float   tPulse_tick        (tPulse* const osc)
      @brief
-     @param
+     @param osc A pointer to the relevant tPulse.
      
      @fn void    tPulse_setFreq     (tPulse* const osc, float freq)
      @brief
-     @param
+     @param osc A pointer to the relevant tPulse.
      
      @fn void    tPulse_setWidth    (tPulse* const osc, float width)
      @brief
-     @param
+     @param osc A pointer to the relevant tPulse.
      
      @} */
     
@@ -414,24 +423,26 @@
      @{
      
      @fn void    tSaw_init          (tSaw* const osc, LEAF* const leaf)
-     @brief
-     @param
+     @brief Initialize a tSaw to the default mempool of a LEAF instance.
+     @param osc A pointer to the tSaw to initialize.
+     @param leaf A pointer to the leaf instance.
      
      @fn void    tSaw_initToPool    (tSaw* const osc, tMempool* const mempool)
-     @brief
-     @param
+     @brief Initialize a tSaw to a specified mempool.
+     @param osc A pointer to the tSaw to initialize.
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    tSaw_free          (tSaw* const osc)
-     @brief
-     @param
+     @brief Free a tSaw from its mempool.
+     @param osc A pointer to the tSaw to free.
      
      @fn float   tSaw_tick          (tSaw* const osc)
      @brief
-     @param
+     @param osc A pointer to the relevant tSaw.
      
      @fn void    tSaw_setFreq       (tSaw* const osc, float freq)
      @brief
-     @param
+     @param osc A pointer to the relevant tSaw.
      
      @} */
     
@@ -461,24 +472,26 @@
      @{
      
      @fn void    tPhasor_init        (tPhasor* const osc, LEAF* const leaf)
-     @brief
-     @param
+     @brief Initialize a tPhasor to the default mempool of a LEAF instance.
+     @param osc A pointer to the tPhasor to initialize.
+     @param leaf A pointer to the leaf instance.
      
      @fn void    tPhasor_initToPool  (tPhasor* const osc, tMempool* const)
-     @brief
-     @param
+     @brief Initialize a tPhasor to a specified mempool.
+     @param osc A pointer to the tPhasor to initialize.
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    tPhasor_free        (tPhasor* const osc)
-     @brief
-     @param
+     @brief Free a tPhasor from its mempool.
+     @param osc A pointer to the tPhasor to free.
      
      @fn float   tPhasor_tick        (tPhasor* const osc)
      @brief
-     @param
+     @param osc A pointer to the relevant tPhasor.
      
      @fn void    tPhasor_setFreq     (tPhasor* const osc, float freq)
      @brief
-     @param
+     @param osc A pointer to the relevant tPhasor.
      
      @} */
     
@@ -509,20 +522,22 @@
      @{
      
      @fn void    tNoise_init         (tNoise* const noise, NoiseType type, LEAF* const leaf)
-     @brief
-     @param
+     @brief Initialize a tNoise to the default mempool of a LEAF instance.
+     @param noise A pointer to the tNoise to initialize.
+     @param leaf A pointer to the leaf instance.
      
      @fn void    tNoise_initToPool   (tNoise* const noise, NoiseType type, tMempool* const)
-     @brief
-     @param
+     @brief Initialize a tNoise to a specified mempool.
+     @param noise A pointer to the tNoise to initialize.
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    tNoise_free         (tNoise* const noise)
-     @brief
-     @param
+     @brief Free a tNoise from its mempool.
+     @param noise A pointer to the tNoise to free.
      
      @fn float   tNoise_tick         (tNoise* const noise)
      @brief
-     @param
+     @param noise A pointer to the relevant tNoise.
      */
     
     /* tNoise. WhiteNoise, PinkNoise. */
@@ -566,17 +581,18 @@
      @{
      
      @fn void    tNeuron_init        (tNeuron* const neuron, LEAF* const leaf)
-     @brief Initialize a tNeuron to the default LEAF mempool.
-     @param neuron A pointer to the tNeuron to be initialized.
+     @brief Initialize a tNeuron to the default mempool of a LEAF instance.
+     @param neuron A pointer to the tNeuron to initialize.
+     @param leaf A pointer to the leaf instance.
      
      @fn void    tNeuron_initToPool  (tNeuron* const neuron, tMempool* const mempool)
      @brief Initialize a tNeuron to a specified mempool.
-     @param neuron A pointer to the tNeuron to be initialized.
-     @param mempool A pointer to the tMempool to which the tNeuron should be initialized.
+     @param neuron A pointer to the tNeuron to initialize.
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    tNeuron_free        (tNeuron* const neuron)
      @brief Free a tNeuron from its mempool.
-     @param neuron A pointer to the tNeuron to be freed.
+     @param neuron A pointer to the tNeuron to free.
      
      @fn void    tNeuron_reset       (tNeuron* const neuron)
      @brief Reset the neuron model.
@@ -704,36 +720,36 @@
      @{
      
      @fn void tMBPulse_init(tMBPulse* const osc, LEAF* const leaf)
-     @brief
-     @param
+     @brief Initialize a tMBPulse to the default mempool of a LEAF instance.
+     @param osc A pointer to the tMBPulse to initialize.
      
      @fn void tMBPulse_initToPool(tMBPulse* const osc, tMempool* const mempool)
-     @brief
-     @param
+     @brief Initialize a tMBPulse to a specified mempool.
+     @param osc A pointer to the tMBPulse to initialize.
      
      @fn void tMBPulse_free(tMBPulse* const osc)
-     @brief
-     @param
+     @brief Free a tMBPulse from its mempool.
+     @param osc A pointer to the tMBPulse to free.
      
      @fn float tMBPulse_tick(tMBPulse* const osc)
      @brief
-     @param
+     @param osc A pointer to the relevant tMBPulse.
      
      @fn void tMBPulse_setFreq(tMBPulse* const osc, float f)
      @brief
-     @param
+     @param osc A pointer to the relevant tMBPulse.
      
      @fn void tMBPulse_setWidth(tMBPulse* const osc, float w)
      @brief
-     @param
+     @param osc A pointer to the relevant tMBPulse.
      
      @fn void tMBPulse_syncIn(tMBPulse* const osc, float sync)
      @brief
-     @param
+     @param osc A pointer to the relevant tMBPulse.
      
      @fn float tMBPulse_syncOut(tMBPulse* const osc)
      @brief
-     @param
+     @param osc A pointer to the relevant tMBPulse.
      
      @} */
     
@@ -773,36 +789,36 @@
      @{
      
      @fn void tMBTriangle_init(tMBTriangle* const osc, LEAF* const leaf)
-     @brief
-     @param
+     @brief Initialize a tMBTriangle to the default mempool of a LEAF instance.
+     @param osc A pointer to the tMBTriangle to initialize.
      
      @fn void tMBTriangle_initToPool(tMBTriangle* const osc, tMempool* const mempool)
-     @brief
-     @param
+     @brief Initialize a tMBTriangle to a specified mempool.
+     @param osc A pointer to the tMBTriangle to initialize.
      
      @fn void tMBTriangle_free(tMBTriangle* const osc)
-     @brief
-     @param
+     @brief Free a tMBTriangle from its mempool.
+     @param osc A pointer to the tMBTriangle to free.
      
      @fn float tMBTriangle_tick(tMBTriangle* const osc)
      @brief
-     @param
+     @param osc A pointer to the relevant tMBTriangle.
      
      @fn void tMBTriangle_setFreq(tMBTriangle* const osc, float f)
      @brief
-     @param
+     @param osc A pointer to the relevant tMBTriangle.
      
      @fn void tMBTriangle_setWidth(tMBTriangle* const osc, float w)
      @brief
-     @param
+     @param osc A pointer to the relevant tMBTriangle.
      
      @fn void tMBTriangle_syncIn(tMBTriangle* const osc, float sync)
      @brief
-     @param
+     @param osc A pointer to the relevant tMBTriangle.
      
      @fn float tMBTriangle_syncOut(tMBTriangle* const osc)
      @brief
-     @param
+     @param osc A pointer to the relevant tMBTriangle.
      
      @} */
     
@@ -843,32 +859,32 @@
      @{
      
      @fn void tMBSaw_init(tMBSaw* const osc, LEAF* const leaf)
-     @brief
-     @param
+     @brief Initialize a tMBSaw to the default mempool of a LEAF instance.
+     @param osc A pointer to the tMBSaw to initialize.
      
      @fn void tMBSaw_initToPool(tMBSaw* const osc, tMempool* const mempool)
-     @brief
-     @param
+     @brief Initialize a tMBSaw to a specified mempool.
+     @param osc A pointer to the tMBSaw to initialize.
      
      @fn void tMBSaw_free(tMBSaw* const osc)
-     @brief
-     @param
+     @brief Free a tMBSaw from its mempool.
+     @param osc A pointer to the tMBSaw to free.
      
      @fn float tMBSaw_tick(tMBSaw* const osc)
      @brief
-     @param
+     @param osc A pointer to the relevant tMBSaw.
      
      @fn void tMBSaw_setFreq(tMBSaw* const osc, float f)
      @brief
-     @param
+     @param osc A pointer to the relevant tMBSaw.
      
      @fn void tMBSaw_syncIn(tMBSaw* const osc, float sync)
      @brief
-     @param
+     @param osc A pointer to the relevant tMBSaw.
      
      @fn float tMBSaw_syncOut(tMBSaw* const osc)
      @brief
-     @param
+     @param osc A pointer to the relevant tMBSaw.
      
      @} */
     
--- a/leaf/Inc/leaf-physical.h
+++ b/leaf/Inc/leaf-physical.h
@@ -43,44 +43,46 @@
      @{
      
      @fn void    tPluck_init          (tPluck* const, float lowestFrequency, LEAF* const leaf)
-     @brief
-     @param
+     @brief Initialize a tPluck to the default mempool of a LEAF instance.
+     @param string A pointer to the tPluck to initialize.
+     @param leaf A pointer to the leaf instance.
      
      @fn void    tPluck_initToPool    (tPluck* const, float lowestFrequency, tMempool* const)
-     @brief
-     @param
+     @brief Initialize a tPluck to a specified mempool.
+     @param string A pointer to the tPluck to initialize.
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    tPluck_free          (tPluck* const)
-     @brief
-     @param
+     @brief Free a tPluck from its mempool.
+     @param string A pointer to the tPluck to free.
      
      @fn float   tPluck_tick          (tPluck* const)
      @brief
-     @param
+     @param string A pointer to the relevant tPluck.
      
      @fn void    tPluck_pluck         (tPluck* const, float amplitude)
      @brief Pluck the string.
-     @param
+     @param string A pointer to the relevant tPluck.
      
      @fn void    tPluck_noteOn        (tPluck* const, float frequency, float amplitude )
      @brief Start a note with the given frequency and amplitude.
-     @param
+     @param string A pointer to the relevant tPluck.
      
      @fn void    tPluck_noteOff       (tPluck* const, float amplitude )
      @brief Stop a note with the given amplitude (speed of decay)
-     @param
+     @param string A pointer to the relevant tPluck.
 
      @fn void    tPluck_setFrequency  (tPluck* const, float frequency )
      @brief Set instrument parameters for a particular frequency.
-     @param
+     @param string A pointer to the relevant tPluck.
      
      @fn void    tPluck_controlChange (tPluck* const, int number, float value)
      @brief Perform the control change specified by \e number and \e value (0.0 - 128.0).
-     @param
+     @param string A pointer to the relevant tPluck.
     
      @fn float   tPluck_getLastOut    (tPluck* const)
      @brief
-     @param
+     @param string A pointer to the relevant tPluck.
      
      @} */
     
@@ -124,56 +126,58 @@
      @{
      
      @fn void    tKarplusStrong_init               (tKarplusStrong* const, float lowestFrequency, LEAF* const leaf)
-     @brief
-     @param
+     @brief Initialize a tKarplusStrong to the default mempool of a LEAF instance.
+     @param string A pointer to the tKarplusStrong to initialize.
+     @param leaf A pointer to the leaf instance.
      
      @fn void    tKarplusStrong_initToPool         (tKarplusStrong* const, float lowestFrequency, tMempool* const)
-     @brief
-     @param
+     @brief Initialize a tKarplusStrong to a specified mempool.
+     @param string A pointer to the tKarplusStrong to initialize.
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    tKarplusStrong_free               (tKarplusStrong* const)
-     @brief
-     @param
+     @brief Free a tKarplusStrong from its mempool.
+     @param string A pointer to the tKarplusStrong to free.
      
      @fn float   tKarplusStrong_tick               (tKarplusStrong* const)
      @brief
-     @param
+     @param string A pointer to the relevant tKarplusStrong.
      
      @fn void    tKarplusStrong_pluck              (tKarplusStrong* const, float amplitude)
      @brief Pluck the string.
-     @param
+     @param string A pointer to the relevant tKarplusStrong.
     
      @fn void    tKarplusStrong_noteOn             (tKarplusStrong* const, float frequency, float amplitude)
      @brief Start a note with the given frequency and amplitude.
-     @param
+     @param string A pointer to the relevant tKarplusStrong.
      
      @fn void    tKarplusStrong_noteOff            (tKarplusStrong* const, float amplitude)
      @brief Stop a note with the given amplitude (speed of decay).
-     @param
+     @param string A pointer to the relevant tKarplusStrong.
      
      @fn void    tKarplusStrong_setFrequency       (tKarplusStrong* const, float frequency)
      @brief Set instrument parameters for a particular frequency.
-     @param
+     @param string A pointer to the relevant tKarplusStrong.
      
      @fn void    tKarplusStrong_controlChange      (tKarplusStrong* const, SKControlType type, float value)
      @brief Perform the control change specified by \e number and \e value (0.0 - 128.0). Use SKPickPosition, SKStringDamping, or SKDetune for type.
-     @param
+     @param string A pointer to the relevant tKarplusStrong.
      
      @fn void    tKarplusStrong_setStretch         (tKarplusStrong* const, float stretch)
      @brief Set the stretch "factor" of the string (0.0 - 1.0).
-     @param
+     @param string A pointer to the relevant tKarplusStrong.
      
      @fn void    tKarplusStrong_setPickupPosition  (tKarplusStrong* const, float position)
      @brief Set the pluck or "excitation" position along the string (0.0 - 1.0).
-     @param
+     @param string A pointer to the relevant tKarplusStrong.
      
      @fn void    tKarplusStrong_setBaseLoopGain    (tKarplusStrong* const, float aGain )
      @brief Set the base loop gain.
-     @param
+     @param string A pointer to the relevant tKarplusStrong.
      
      @fn float   tKarplusStrong_getLastOut         (tKarplusStrong* const)
      @brief
-     @param
+     @param string A pointer to the relevant tKarplusStrong.
      
      @} */
     
@@ -234,56 +238,58 @@
      @{
      
      @fn void    tSimpleLivingString_init   (tSimpleLivingString* const, float freq, float dampFreq, float decay, float targetLev, float levSmoothFactor, float levStrength, int levMode, LEAF* const leaf)
-     @brief
-     @param
+     @brief Initialize a tSimpleLivingString to the default mempool of a LEAF instance.
+     @param string A pointer to the tSimpleLivingString to initialize.
+     @param leaf A pointer to the leaf instance.
      
      @fn void    tSimpleLivingString_initToPool     (tSimpleLivingString* const, float freq, float dampFreq, float decay, float targetLev, float levSmoothFactor, float levStrength, int levMode, tMempool* const)
-     @brief
-     @param
+     @brief Initialize a tSimpleLivingString to a specified mempool.
+     @param string A pointer to the tSimpleLivingString to initialize.
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    tSimpleLivingString_free                (tSimpleLivingString* const)
-     @brief
-     @param
+     @brief Free a tSimpleLivingString from its mempool.
+     @param string A pointer to the tSimpleLivingString to free.
      
      @fn float   tSimpleLivingString_tick                (tSimpleLivingString* const, float input)
      @brief
-     @param
+     @param string A pointer to the relevant tSimpleLivingString.
      
      @fn float   tSimpleLivingString_sample              (tSimpleLivingString* const)
      @brief
-     @param
+     @param string A pointer to the relevant tSimpleLivingString.
      
      @fn void    tSimpleLivingString_setFreq             (tSimpleLivingString* const, float freq)
      @brief
-     @param
+     @param string A pointer to the relevant tSimpleLivingString.
      
      @fn void    tSimpleLivingString_setWaveLength       (tSimpleLivingString* const, float waveLength)
      @brief
-     @param
+     @param string A pointer to the relevant tSimpleLivingString.
      
      @fn void    tSimpleLivingString_setDampFreq         (tSimpleLivingString* const, float dampFreq)
      @brief
-     @param
+     @param string A pointer to the relevant tSimpleLivingString.
      
      @fn void    tSimpleLivingString_setDecay            (tSimpleLivingString* const, float decay)
      @brief
-     @param
+     @param string A pointer to the relevant tSimpleLivingString.
      
      @fn void    tSimpleLivingString_setTargetLev        (tSimpleLivingString* const, float targetLev)
      @brief
-     @param
+     @param string A pointer to the relevant tSimpleLivingString.
      
      @fn void    tSimpleLivingString_setLevSmoothFactor  (tSimpleLivingString* const, float levSmoothFactor)
      @brief
-     @param
+     @param string A pointer to the relevant tSimpleLivingString.
      
      @fn void    tSimpleLivingString_setLevStrength      (tSimpleLivingString* const, float levStrength)
      @brief
-     @param
+     @param string A pointer to the relevant tSimpleLivingString.
      
      @fn void    tSimpleLivingString_setLevMode          (tSimpleLivingString* const, int levMode)
      @brief
-     @param
+     @param string A pointer to the relevant tSimpleLivingString.
      
      @} */
     
@@ -333,64 +339,66 @@
      @{
      
      @fn void    tLivingString_init                  (tLivingString* const, float freq, float pickPos, float prepIndex, float dampFreq, float decay, float targetLev, float levSmoothFactor, float levStrength, int levMode, LEAF* const leaf)
-     @brief
-     @param
+     @brief Initialize a tLivingString to the default mempool of a LEAF instance.
+     @param string A pointer to the tLivingString to initialize.
+     @param leaf A pointer to the leaf instance.
      
      @fn void    tLivingString_initToPool            (tLivingString* const, float freq, float pickPos, float prepIndex, float dampFreq, float decay, float targetLev, float levSmoothFactor, float levStrength, int levMode, tMempool* const)
-     @brief
-     @param
+     @brief Initialize a tLivingString to a specified mempool.
+     @param string A pointer to the tLivingString to initialize.
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    tLivingString_free                  (tLivingString* const)
-     @brief
-     @param
+     @brief Free a tLivingString from its mempool.
+     @param string A pointer to the tLivingString to free.
      
      @fn float   tLivingString_tick                  (tLivingString* const, float input)
      @brief
-     @param
+     @param string A pointer to the relevant tLivingString.
      
      @fn float   tLivingString_sample                (tLivingString* const)
      @brief
-     @param
+     @param string A pointer to the relevant tLivingString.
      
      @fn void    tLivingString_setFreq               (tLivingString* const, float freq)
      @brief
-     @param
+     @param string A pointer to the relevant tLivingString.
      
      @fn void    tLivingString_setWaveLength         (tLivingString* const, float waveLength)
      @brief
-     @param
+     @param string A pointer to the relevant tLivingString.
      
      @fn void    tLivingString_setPickPos            (tLivingString* const, float pickPos)
      @brief
-     @param
+     @param string A pointer to the relevant tLivingString.
      
      @fn void    tLivingString_setPrepIndex          (tLivingString* const, float prepIndex)
      @brief
-     @param
+     @param string A pointer to the relevant tLivingString.
      
      @fn void    tLivingString_setDampFreq           (tLivingString* const, float dampFreq)
      @brief
-     @param
+     @param string A pointer to the relevant tLivingString.
      
      @fn void    tLivingString_setDecay              (tLivingString* const, float decay)
      @brief
-     @param
+     @param string A pointer to the relevant tLivingString.
      
      @fn void    tLivingString_setTargetLev          (tLivingString* const, float targetLev)
      @brief
-     @param
+     @param string A pointer to the relevant tLivingString.
      
      @fn void    tLivingString_setLevSmoothFactor    (tLivingString* const, float levSmoothFactor)
      @brief
-     @param
+     @param string A pointer to the relevant tLivingString.
      
      @fn void    tLivingString_setLevStrength        (tLivingString* const, float levStrength)
      @brief
-     @param
+     @param string A pointer to the relevant tLivingString.
      
      @fn void    tLivingString_setLevMode            (tLivingString* const, int levMode)
      @brief
-     @param
+     @param string A pointer to the relevant tLivingString.
      
      @} */
     
@@ -446,68 +454,70 @@
      @{
      
      @fn void    tComplexLivingString_init  (tComplexLivingString* const, float freq, float pickPos, float prepPos, float prepIndex, float dampFreq, float decay, float targetLev, float levSmoothFactor, float levStrength, int levMode, LEAF* const leaf)
-     @brief
-     @param
+     @brief Initialize a tComplexLivingString to the default mempool of a LEAF instance.
+     @param string A pointer to the tComplexLivingString to initialize.
+     @param leaf A pointer to the leaf instance.
      
      @fn void    tComplexLivingString_initToPool    (tComplexLivingString* const, float freq, float pickPos, float prepPos, float prepIndex, float dampFreq, float decay, float targetLev, float levSmoothFactor, float levStrength, int levMode, tMempool* const)
-     @brief
-     @param
+     @brief Initialize a tComplexLivingString to a specified mempool.
+     @param string A pointer to the tComplexLivingString to initialize.
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    tComplexLivingString_free                  (tComplexLivingString* const)
-     @brief
-     @param
+     @brief Free a tComplexLivingString from its mempool.
+     @param string A pointer to the tComplexLivingString to free.
      
      @fn float   tComplexLivingString_tick                  (tComplexLivingString* const, float input)
      @brief
-     @param
+     @param string A pointer to the relevant tComplexLivingString.
      
      @fn float   tComplexLivingString_sample                (tComplexLivingString* const)
      @brief
-     @param
+     @param string A pointer to the relevant tComplexLivingString.
      
      @fn void    tComplexLivingString_setFreq               (tComplexLivingString* const, float freq)
      @brief
-     @param
+     @param string A pointer to the relevant tComplexLivingString.
      
      @fn void    tComplexLivingString_setWaveLength         (tComplexLivingString* const, float waveLength)
      @brief
-     @param
+     @param string A pointer to the relevant tComplexLivingString.
      
      @fn void    tComplexLivingString_setPickPos            (tComplexLivingString* const, float pickPos)
      @brief
-     @param
+     @param string A pointer to the relevant tComplexLivingString.
      
      @fn void    tComplexLivingString_setPrepPos            (tComplexLivingString* const, float prepPos)
      @brief
-     @param
+     @param string A pointer to the relevant tComplexLivingString.
      
      @fn void    tComplexLivingString_setPrepIndex          (tComplexLivingString* const, float prepIndex)
      @brief
-     @param
+     @param string A pointer to the relevant tComplexLivingString.
      
      @fn void    tComplexLivingString_setDampFreq           (tComplexLivingString* const, float dampFreq)
      @brief
-     @param
+     @param string A pointer to the relevant tComplexLivingString.
      
      @fn void    tComplexLivingString_setDecay              (tComplexLivingString* const, float decay)
      @brief
-     @param
+     @param string A pointer to the relevant tComplexLivingString.
      
      @fn void    tComplexLivingString_setTargetLev          (tComplexLivingString* const, float targetLev)
      @brief
-     @param
+     @param string A pointer to the relevant tComplexLivingString.
      
      @fn void    tComplexLivingString_setLevSmoothFactor    (tComplexLivingString* const, float levSmoothFactor)
      @brief
-     @param
+     @param string A pointer to the relevant tComplexLivingString.
      
      @fn void    tComplexLivingString_setLevStrength        (tComplexLivingString* const, float levStrength)
      @brief
-     @param
+     @param string A pointer to the relevant tComplexLivingString.
      
      @fn void    tComplexLivingString_setLevMode            (tComplexLivingString* const, int levMode)
      @brief
-     @param
+     @param string A pointer to the relevant tComplexLivingString.
      
      @} */
     
@@ -567,32 +577,34 @@
      @{
      
      @fn void    tReedTable_init         (tReedTable* const, float offset, float slope, LEAF* const leaf)
-     @brief
-     @param
+     @brief Initialize a tReedTable to the default mempool of a LEAF instance.
+     @param reed A pointer to the tReedTable to initialize.
+     @param leaf A pointer to the leaf instance.
      
      @fn void    tReedTable_initToPool   (tReedTable* const, float offset, float slope, tMempool* const)
-     @brief
-     @param
+     @brief Initialize a tReedTable to a specified mempool.
+     @param reed A pointer to the tReedTable to initialize.
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    tReedTable_free         (tReedTable* const)
-     @brief
-     @param
+     @brief Free a tReedTable from its mempool.
+     @param reed A pointer to the tReedTable to free.
      
      @fn float   tReedTable_tick         (tReedTable* const, float input)
      @brief
-     @param
+     @param reed A pointer to the relevant tReedTable.
      
      @fn float   tReedTable_tanh_tick    (tReedTable* const, float input)
      @brief
-     @param
+     @param reed A pointer to the relevant tReedTable.
      
      @fn void    tReedTable_setOffset    (tReedTable* const, float offset)
      @brief
-     @param
+     @param reed A pointer to the relevant tReedTable.
      
      @fn void    tReedTable_setSlope     (tReedTable* const, float slope)
      @brief
-     @param
+     @param reed A pointer to the relevant tReedTable.
      
      @} */
 
--- a/leaf/Inc/leaf-reverb.h
+++ b/leaf/Inc/leaf-reverb.h
@@ -39,32 +39,34 @@
      @{
      
      @fn void    tPRCReverb_init         (tPRCReverb* const, float t60, LEAF* const leaf)
-     @brief
-     @param
+     @brief Initialize a tPRCReverb to the default mempool of a LEAF instance.
+     @param reverb A pointer to the tPRCReverb to initialize.
+     @param leaf A pointer to the leaf instance.
      
      @fn void    tPRCReverb_initToPool   (tPRCReverb* const, float t60, tMempool* const)
-     @brief
-     @param
+     @brief Initialize a tPRCReverb to a specified mempool.
+     @param reverb A pointer to the tPRCReverb to initialize.
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    tPRCReverb_free         (tPRCReverb* const)
-     @brief
-     @param
+     @brief Free a tPRCReverb from its mempool.
+     @param reverb A pointer to the tPRCReverb to free.
      
      @fn void    tPRCReverb_clear        (tPRCReverb* const)
      @brief
-     @param
+     @param reverb A pointer to the relevant tPRCReverb.
      
      @fn float   tPRCReverb_tick         (tPRCReverb* const, float input)
      @brief
-     @param
+     @param reverb A pointer to the relevant tPRCReverb.
 
      @fn void    tPRCReverb_setT60       (tPRCReverb* const, float t60)
      @brief Set reverb time in seconds.
-     @param
+     @param reverb A pointer to the relevant tPRCReverb.
     
      @fn void    tPRCReverb_setMix       (tPRCReverb* const, float mix)
      @brief Set mix between dry input and wet output signal.
-     @param
+     @param reverb A pointer to the relevant tPRCReverb.
      
      @} */
     
@@ -105,37 +107,39 @@
      @{
      
      @fn void    tNReverb_init           (tNReverb* const, float t60, LEAF* const leaf)
-     @brief
-     @param
+     @brief Initialize a tNReverb to the default mempool of a LEAF instance.
+     @param reverb A pointer to the tNReverb to initialize.
+     @param leaf A pointer to the leaf instance.
      
      @fn void    tNReverb_initToPool     (tNReverb* const, float t60, tMempool* const)
-     @brief
-     @param
+     @brief Initialize a tNReverb to a specified mempool.
+     @param reverb A pointer to the tNReverb to initialize.
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    tNReverb_free           (tNReverb* const)
-     @brief
-     @param
+     @brief Free a tNReverb from its mempool.
+     @param reverb A pointer to the tNReverb to free.
      
      @fn void    tNReverb_clear          (tNReverb* const)
      @brief
-     @param
+     @param reverb A pointer to the relevant tNReverb.
      
      @fn float   tNReverb_tick           (tNReverb* const, float input)
      @brief
-     @param
+     @param reverb A pointer to the relevant tNReverb.
      
      @fn void    tNReverb_tickStereo     (tNReverb* const rev, float input, float* output)
-     @brief
-     @param
+     @brief 
+     @param reverb A pointer to the relevant tNReverb.
      
      @fn void    tNReverb_setT60         (tNReverb* const, float t60)
      @brief Set reverb time in seconds.
-     @param
+     @param reverb A pointer to the relevant tNReverb.
      
      @fn void    tNReverb_setMix         (tNReverb* const, float mix)
      @brief Set mix between dry input and wet output signal.
-     @param
-     
+     @param reverb A pointer to the relevant tNReverb.
+      
      @} */
     
     typedef struct _tNReverb
@@ -177,60 +181,62 @@
      @{
      
      @fn void    tDattorroReverb_init              (tDattorroReverb* const, LEAF* const leaf)
-     @brief
-     @param
+     @brief Initialize a tDattorroReverb to the default mempool of a LEAF instance.
+     @param reverb A pointer to the tDattorroReverb to initialize.
+     @param leaf A pointer to the leaf instance.
      
      @fn void    tDattorroReverb_initToPool        (tDattorroReverb* const, tMempool* const)
-     @brief
-     @param
+     @brief Initialize a tDattorroReverb to a specified mempool.
+     @param reverb A pointer to the tDattorroReverb to initialize.
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    tDattorroReverb_free              (tDattorroReverb* const)
-     @brief
-     @param
+     @brief Free a tDattorroReverb from its mempool.
+     @param reverb A pointer to the tDattorroReverb to free.
      
      @fn void    tDattorroReverb_clear             (tDattorroReverb* const)
      @brief
-     @param
+     @param reverb A pointer to the relevant tDattorroReverb.
      
      @fn float   tDattorroReverb_tick              (tDattorroReverb* const, float input)
      @brief
-     @param
+     @param reverb A pointer to the relevant tDattorroReverb.
      
      @fn void    tDattorroReverb_tickStereo        (tDattorroReverb* const rev, float input, float* output)
      @brief
-     @param
+     @param reverb A pointer to the relevant tDattorroReverb.
      
      @fn void    tDattorroReverb_setMix            (tDattorroReverb* const, float mix)
      @brief
-     @param
+     @param reverb A pointer to the relevant tDattorroReverb.
      
      @fn void    tDattorroReverb_setFreeze         (tDattorroReverb* const rev, uint32_t freeze)
      @brief
-     @param
+     @param reverb A pointer to the relevant tDattorroReverb.
      
      @fn void    tDattorroReverb_setHP             (tDattorroReverb* const, float freq)
      @brief
-     @param
+     @param reverb A pointer to the relevant tDattorroReverb.
      
      @fn void    tDattorroReverb_setSize           (tDattorroReverb* const, float size)
      @brief
-     @param
+     @param reverb A pointer to the relevant tDattorroReverb.
      
      @fn void    tDattorroReverb_setInputDelay     (tDattorroReverb* const, float preDelay)
      @brief
-     @param
+     @param reverb A pointer to the relevant tDattorroReverb.
      
      @fn void    tDattorroReverb_setInputFilter    (tDattorroReverb* const, float freq)
      @brief
-     @param
+     @param reverb A pointer to the relevant tDattorroReverb.
      
      @fn void    tDattorroReverb_setFeedbackFilter (tDattorroReverb* const, float freq)
      @brief
-     @param
+     @param reverb A pointer to the relevant tDattorroReverb.
      
      @fn void    tDattorroReverb_setFeedbackGain   (tDattorroReverb* const, float gain)
      @brief
-     @param
+     @param reverb A pointer to the relevant tDattorroReverb.
      
      @} */
     
--- a/leaf/Inc/leaf-sampling.h
+++ b/leaf/Inc/leaf-sampling.h
@@ -40,68 +40,70 @@
      @{
      
      @fn void  tBuffer_init                  (tBuffer* const, uint32_t length, LEAF* const leaf)
-     @brief
-     @param
+     @brief Initialize a tBuffer to the default mempool of a LEAF instance.
+     @param sampler A pointer to the tBuffer to initialize.
+     @param leaf A pointer to the leaf instance.
      
      @fn void  tBuffer_initToPool            (tBuffer* const, uint32_t length, tMempool* const)
-     @brief
-     @param
+     @brief Initialize a tBuffer to a specified mempool.
+     @param sampler A pointer to the tBuffer to initialize.
+     @param mempool A pointer to the tMempool to use.
      
      @fn void  tBuffer_free                  (tBuffer* const)
-     @brief
-     @param
+     @brief Free a tBuffer from its mempool.
+     @param sampler A pointer to the tBuffer to free.
      
      @fn void  tBuffer_tick                  (tBuffer* const, float sample)
      @brief
-     @param
+     @param sampler A pointer to the relevant tBuffer.
      
      @fn void  tBuffer_read                  (tBuffer* const, float* buff, uint32_t len)
      @brief
-     @param
+     @param sampler A pointer to the relevant tBuffer.
      
      @fn float tBuffer_get                   (tBuffer* const, int idx)
      @brief
-     @param
+     @param sampler A pointer to the relevant tBuffer.
      
      @fn void  tBuffer_record                (tBuffer* const)
      @brief
-     @param
+     @param sampler A pointer to the relevant tBuffer.
      
      @fn void  tBuffer_stop                  (tBuffer* const)
      @brief
-     @param
+     @param sampler A pointer to the relevant tBuffer.
      
      @fn int   tBuffer_getRecordPosition     (tBuffer* const)
      @brief
-     @param
+     @param sampler A pointer to the relevant tBuffer.
      
      @fn void   tBuffer_setRecordPosition    (tBuffer* const, int pos)
      @brief
-     @param
+     @param sampler A pointer to the relevant tBuffer.
      
      @fn void  tBuffer_setRecordMode         (tBuffer* const, RecordMode mode)
      @brief
-     @param
+     @param sampler A pointer to the relevant tBuffer.
      
      @fn void  tBuffer_clear                 (tBuffer* const)
      @brief
-     @param
+     @param sampler A pointer to the relevant tBuffer.
      
      @fn uint32_t tBuffer_getBufferLength    (tBuffer* const)
      @brief
-     @param
+     @param sampler A pointer to the relevant tBuffer.
      
      @fn uint32_t tBuffer_getRecordedLength  (tBuffer* const sb)
      @brief
-     @param
+     @param sampler A pointer to the relevant tBuffer.
      
      @fn void     tBuffer_setRecordedLength    (tBuffer* const sb, int length)
      @brief
-     @param
+     @param sampler A pointer to the relevant tBuffer.
      
      @fn int     tBuffer_isActive            (tBuffer* const sb)
      @brief
-     @param
+     @param sampler A pointer to the relevant tBuffer.
      
      @} */
     
@@ -132,7 +134,7 @@
     typedef _tBuffer* tBuffer;
     
     void  tBuffer_init                  (tBuffer* const, uint32_t length, LEAF* const leaf);
-    void  tBuffer_initToPool 			(tBuffer* const sb, uint32_t length, tMempool* const mp);
+    void  tBuffer_initToPool             (tBuffer* const sb, uint32_t length, tMempool* const mp);
     void  tBuffer_free                  (tBuffer* const);
     
     void  tBuffer_tick                  (tBuffer* const, float sample);
@@ -140,7 +142,7 @@
     float tBuffer_get                   (tBuffer* const, int idx);
     void  tBuffer_record                (tBuffer* const);
     void  tBuffer_stop                  (tBuffer* const);
-    void tBuffer_setBuffer				(tBuffer* const sb, float* externalBuffer, int length, int channels, int sampleRate);
+    void tBuffer_setBuffer                (tBuffer* const sb, float* externalBuffer, int length, int channels, int sampleRate);
     int   tBuffer_getRecordPosition     (tBuffer* const);
     void   tBuffer_setRecordPosition    (tBuffer* const, int pos);
     void  tBuffer_setRecordMode         (tBuffer* const, RecordMode mode);
@@ -147,8 +149,8 @@
     void  tBuffer_clear                 (tBuffer* const);
     uint32_t tBuffer_getBufferLength    (tBuffer* const);
     uint32_t tBuffer_getRecordedLength  (tBuffer* const sb);
-    void 	tBuffer_setRecordedLength	(tBuffer* const sb, int length);
-    int 	tBuffer_isActive			(tBuffer* const sb);
+    void     tBuffer_setRecordedLength    (tBuffer* const sb, int length);
+    int     tBuffer_isActive            (tBuffer* const sb);
     
     //==============================================================================
     
@@ -159,56 +161,58 @@
      @{
      
      @fn void    tSampler_init               (tSampler* const, tBuffer* const, LEAF* const leaf)
-     @brief
-     @param
+     @brief Initialize a tSampler to the default mempool of a LEAF instance.
+     @param sampler A pointer to the tSampler to initialize.
+     @param leaf A pointer to the leaf instance.
      
      @fn void    tSampler_initToPool         (tSampler* const, tBuffer* const, tMempool* const)
-     @brief
-     @param
+     @brief Initialize a tSampler to a specified mempool.
+     @param sampler A pointer to the tSampler to initialize.
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    tSampler_free               (tSampler* const)
-     @brief
-     @param
+     @brief Free a tSampler from its mempool.
+     @param sampler A pointer to the tSampler to free.
      
      @fn float   tSampler_tick               (tSampler* const)
      @brief
-     @param
+     @param sampler A pointer to the relevant tSampler.
      
      @fn void    tSampler_setSample          (tSampler* const, tBuffer* const)
      @brief
-     @param
+     @param sampler A pointer to the relevant tSampler.
      
      @fn void    tSampler_setMode            (tSampler* const, PlayMode mode)
      @brief
-     @param
+     @param sampler A pointer to the relevant tSampler.
      
      @fn void    tSampler_play               (tSampler* const)
      @brief
-     @param
+     @param sampler A pointer to the relevant tSampler.
      
      @fn void    tSampler_stop               (tSampler* const)
      @brief
-     @param
+     @param sampler A pointer to the relevant tSampler.
      
      @fn void    tSampler_setStart           (tSampler* const, int32_t start)
      @brief
-     @param
+     @param sampler A pointer to the relevant tSampler.
      
      @fn void    tSampler_setEnd             (tSampler* const, int32_t end)
      @brief
-     @param
+     @param sampler A pointer to the relevant tSampler.
      
      @fn void    tSampler_setLength             (tSampler* const, int32_t length)
      @brief
-     @param
+     @param sampler A pointer to the relevant tSampler.
      
      @fn void    tSampler_setCrossfadeLength (tSampler* const sp, uint32_t length)
      @brief
-     @param
+     @param sampler A pointer to the relevant tSampler.
      
      @fn void    tSampler_setRate            (tSampler* const, float rate)
      @brief
-     @param
+     @param sampler A pointer to the relevant tSampler.
      
      @} */
     
@@ -232,7 +236,7 @@
         float ticksPerSevenMs;
         float rateFactor;
         uint32_t channels;
-
+        
         tRamp gain;
         
         float idx;
@@ -263,11 +267,11 @@
     typedef _tSampler* tSampler;
     
     void    tSampler_init               (tSampler* const, tBuffer* const, LEAF* const leaf);
-    void 	tSampler_initToPool			(tSampler* const sp, tBuffer* const b, tMempool* const mp, LEAF* const leaf);
+    void     tSampler_initToPool            (tSampler* const sp, tBuffer* const b, tMempool* const mp, LEAF* const leaf);
     void    tSampler_free               (tSampler* const);
     
     float   tSampler_tick               (tSampler* const);
-    float	tSampler_tickStereo        	(tSampler* const sp, float* outputArray);
+    float    tSampler_tickStereo            (tSampler* const sp, float* outputArray);
     void    tSampler_setSample          (tSampler* const, tBuffer* const);
     void    tSampler_setMode            (tSampler* const, PlayMode mode);
     void    tSampler_play               (tSampler* const);
@@ -287,52 +291,54 @@
      @{
      
      @fn void    tAutoSampler_init               (tAutoSampler* const, tBuffer* const, LEAF* const leaf)
-     @brief
-     @param
+     @brief Initialize a tAutoSampler to the default mempool of a LEAF instance.
+     @param sampler A pointer to the tAutoSampler to initialize.
+     @param leaf A pointer to the leaf instance.
      
      @fn void    tAutoSampler_initToPool         (tAutoSampler* const, tBuffer* const, tMempool* const)
-     @brief
-     @param
+     @brief Initialize a tAutoSampler to a specified mempool.
+     @param sampler A pointer to the tAutoSampler to initialize.
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    tAutoSampler_free               (tAutoSampler* const)
-     @brief
-     @param
+     @brief Free a tAutoSampler from its mempool.
+     @param sampler A pointer to the tAutoSampler to free.
      
      @fn float   tAutoSampler_tick               (tAutoSampler* const, float input)
      @brief
-     @param
+     @param sampler A pointer to the relevant tAutoSampler.
      
      @fn void    tAutoSampler_setBuffer          (tAutoSampler* const, tBuffer* const)
      @brief
-     @param
+     @param sampler A pointer to the relevant tAutoSampler.
      
      @fn void    tAutoSampler_setMode            (tAutoSampler* const, PlayMode mode)
      @brief
-     @param
+     @param sampler A pointer to the relevant tAutoSampler.
      
      @fn void    tAutoSampler_play               (tAutoSampler* const)
      @brief
-     @param
+     @param sampler A pointer to the relevant tAutoSampler.
      
      @fn void    tAutoSampler_stop               (tAutoSampler* const)
      @brief
-     @param
+     @param sampler A pointer to the relevant tAutoSampler.
      
      @fn void    tAutoSampler_setThreshold       (tAutoSampler* const, float thresh)
      @brief
-     @param
+     @param sampler A pointer to the relevant tAutoSampler.
      
      @fn void    tAutoSampler_setWindowSize      (tAutoSampler* const, uint32_t size)
      @brief
-     @param
+     @param sampler A pointer to the relevant tAutoSampler.
      
      @fn void    tAutoSampler_setCrossfadeLength (tAutoSampler* const, uint32_t length)
      @brief
-     @param
+     @param sampler A pointer to the relevant tAutoSampler.
      
      @fn void    tAutoSampler_setRate            (tAutoSampler* const, float rate)
      @brief
-     @param
+     @param sampler A pointer to the relevant tAutoSampler.
      
      @} */
     
@@ -353,7 +359,7 @@
     typedef _tAutoSampler* tAutoSampler;
     
     void    tAutoSampler_init               (tAutoSampler* const, tBuffer* const, LEAF* const leaf);
-    void    tAutoSampler_initToPool 		(tAutoSampler* const as, tBuffer* const b, tMempool* const mp, LEAF* const leaf);
+    void    tAutoSampler_initToPool         (tAutoSampler* const as, tBuffer* const b, tMempool* const mp, LEAF* const leaf);
     void    tAutoSampler_free               (tAutoSampler* const);
     
     float   tAutoSampler_tick               (tAutoSampler* const, float input);
@@ -365,9 +371,9 @@
     void    tAutoSampler_setWindowSize      (tAutoSampler* const, uint32_t size);
     void    tAutoSampler_setCrossfadeLength (tAutoSampler* const, uint32_t length);
     void    tAutoSampler_setRate            (tAutoSampler* const, float rate);
-
-
-/*!
+    
+    
+    /*!
      @defgroup tMBSampler tMBSampler
      @ingroup sampling
      @brief
@@ -374,61 +380,63 @@
      @{
      
      @fn void    tMBSampler_init               (tMBSampler* const, tBuffer* const, LEAF* const leaf)
-     @brief
-     @param
+     @brief Initialize a tMBSampler to the default mempool of a LEAF instance.
+     @param sampler A pointer to the tMBSampler to initialize.
+     @param leaf A pointer to the leaf instance.
      
      @fn void    tMBSampler_initToPool         (tMBSampler* const, tBuffer* const, tMempool* const)
-     @brief
-     @param
+     @brief Initialize a tMBSampler to a specified mempool.
+     @param sampler A pointer to the tMBSampler to initialize.
+     @param mempool A pointer to the tMempool to use.
      
      @fn void    tMBSampler_free               (tMBSampler* const)
-     @brief
-     @param
+     @brief Free a tMBSampler from its mempool.
+     @param sampler A pointer to the tMBSampler to free.
      
      @fn float   tMBSampler_tick               (tMBSampler* const)
      @brief
-     @param
+     @param sampler A pointer to the relevant tMBSampler.
      
      @fn void    tMBSampler_setSample          (tMBSampler* const, tBuffer* const)
      @brief
-     @param
+     @param sampler A pointer to the relevant tMBSampler.
      
      @fn void    tMBSampler_setMode            (tMBSampler* const, PlayMode mode)
      @brief
-     @param
+     @param sampler A pointer to the relevant tMBSampler.
      
      @fn void    tMBSampler_play               (tMBSampler* const)
      @brief
-     @param
+     @param sampler A pointer to the relevant tMBSampler.
      
      @fn void    tMBSampler_stop               (tMBSampler* const)
      @brief
-     @param
+     @param sampler A pointer to the relevant tMBSampler.
      
      @fn void    tMBSampler_setStart           (tMBSampler* const, int32_t start)
      @brief
-     @param
+     @param sampler A pointer to the relevant tMBSampler.
      
      @fn void    tMBSampler_setEnd             (tMBSampler* const, int32_t end)
      @brief
-     @param
+     @param sampler A pointer to the relevant tMBSampler.
      
      @fn void    tMBSampler_setLength             (tMBSampler* const, int32_t length)
      @brief
-     @param
+     @param sampler A pointer to the relevant tMBSampler.
      
      @fn void    tMBSampler_setCrossfadeLength (tMBSampler* const sp, uint32_t length)
      @brief
-     @param
+     @param sampler A pointer to the relevant tMBSampler.
      
      @fn void    tMBSampler_setRate            (tMBSampler* const, float rate)
      @brief
-     @param
+     @param sampler A pointer to the relevant tMBSampler.
      
      @} */
     
 #define FILLEN 256
-
+    
     typedef struct _tMBSampler
     {
         
@@ -477,3 +485,4 @@
 #endif // LEAF_SAMPLING_H_INCLUDED
 
 //==============================================================================
+
--- a/leaf/Inc/leaf-tables.h
+++ b/leaf/Inc/leaf-tables.h
@@ -19,31 +19,11 @@
     
     //==============================================================================
     
-#define USE_SAWTOOTH_TABLE 1
-#define USE_SQUARE_TABLE 1
-#define USE_TRIANGLE_TABLE 1
-#define USE_SHAPER_TABLE 1
-#define DECAY_TABLES_USED 1
-    
     /*!
      @ingroup tables
      @{
      */
     
-#define SINE_TABLE_SIZE 2048
-#define SAW_TABLE_SIZE 2048
-#define SQR_TABLE_SIZE 2048
-#define TRI_TABLE_SIZE 2048
-#define EXP_DECAY_TABLE_SIZE 65536
-#define ATTACK_DECAY_INC_TABLE_SIZE 65536
-#define TANH1_TABLE_SIZE 65536
-#define DECAY_COEFF_TABLE_SIZE 4096
-#define MTOF1_TABLE_SIZE 4096
-#define FILTERTAN_TABLE_SIZE 4096
-    
-#define SHAPER1_TABLE_SIZE 65536
-    extern const float __leaf_table_shaper1[SHAPER1_TABLE_SIZE];
-    
 #define COEFFS_SIZE 32
     extern const float* __leaf_tableref_firCoeffs[COEFFS_SIZE];
     extern const float __leaf_tablesize_firNumTaps[COEFFS_SIZE];
@@ -60,44 +40,56 @@
     extern const float __leaf_table_fir32XHigh[512];
     extern const float __leaf_table_fir64XHigh[1024];
     
-    typedef enum TableName
-    {
-        T20 = 0,
-        T40,
-        T80,
-        T160,
-        T320,
-        T640,
-        T1280,
-        T2560,
-        T5120,
-        T10240,
-        T20480,
-        TableNameNil
-    } TableName;
+//    typedef enum TableName
+//    {
+//        T20 = 0,
+//        T40,
+//        T80,
+//        T160,
+//        T320,
+//        T640,
+//        T1280,
+//        T2560,
+//        T5120,
+//        T10240,
+//        T20480,
+//        TableNameNil
+//    } TableName;
     
-    // mtof lookup table based on input range [0.0,1.0) in 4096 increments - midi frequency values scaled between m25 and m134 (from the Snyderphonics DrumBox code)
     
+#define SHAPER1_TABLE_SIZE 65536
+    extern const float __leaf_table_shaper1[SHAPER1_TABLE_SIZE];
+   
+    // mtof lookup table based on input range [0.0,1.0) in 4096 increments - midi frequency values scaled between m25 and m134 (from the Snyderphonics DrumBox code)
+#define MTOF1_TABLE_SIZE 4096
+    extern const float __leaf_table_mtof1[MTOF1_TABLE_SIZE];
+
+#define EXP_DECAY_TABLE_SIZE 65536
     extern const float __leaf_table_exp_decay[EXP_DECAY_TABLE_SIZE];
+    
+#define ATTACK_DECAY_INC_TABLE_SIZE 65536
     extern const float __leaf_table_attack_decay_inc[ATTACK_DECAY_INC_TABLE_SIZE];
     
+#define FILTERTAN_TABLE_SIZE 4096
     extern const float __leaf_table_filtertan[FILTERTAN_TABLE_SIZE];
     
-    extern const float __leaf_table_mtof1[MTOF1_TABLE_SIZE];
-    extern const float __leaf_table_decayCoeffTable[DECAY_COEFF_TABLE_SIZE];
-    
+#define TANH1_TABLE_SIZE 65536
     extern const float __leaf_table_tanh1[TANH1_TABLE_SIZE];
     
     //==============================================================================
     
     /* Sine wave table ripped from http://aquaticus.info/pwm-sine-wave. */
+#define SINE_TABLE_SIZE 2048
     extern const float __leaf_table_sinewave[SINE_TABLE_SIZE];
     
-    extern const float __leaf_table_sawtooth[11][SAW_TABLE_SIZE];
-    
+#define TRI_TABLE_SIZE 2048
     extern const float __leaf_table_triangle[11][TRI_TABLE_SIZE];
     
+#define SQR_TABLE_SIZE 2048
     extern const float __leaf_table_squarewave[11][SQR_TABLE_SIZE];
+    
+#define SAW_TABLE_SIZE 2048
+    extern const float __leaf_table_sawtooth[11][SAW_TABLE_SIZE];
     
     //==============================================================================
     
--- a/leaf/Src/leaf-analysis.c
+++ b/leaf/Src/leaf-analysis.c
@@ -1,11 +1,11 @@
 /*==============================================================================
+ 
+ leaf-analysis.c
+ Created: 30 Nov 2018 11:56:49am
+ Author:  airship
+ 
+ ==============================================================================*/
 
-    leaf-analysis.c
-    Created: 30 Nov 2018 11:56:49am
-    Author:  airship
-
-==============================================================================*/
-
 #if _WIN32 || _WIN64
 
 #include "..\Inc\leaf-analysis.h"
@@ -93,7 +93,7 @@
     _tMempool* m = *mp;
     _tZeroCrossingCounter* z = *zc = (_tZeroCrossingCounter*) mpool_alloc(sizeof(_tZeroCrossingCounter), m);
     z->mempool = m;
-
+    
     z->count = 0;
     z->maxWindowSize = maxWindowSize;
     z->currentWindowSize = maxWindowSize;
@@ -117,11 +117,11 @@
 float   tZeroCrossingCounter_tick         (tZeroCrossingCounter* const zc, float input)
 {
     _tZeroCrossingCounter* z = *zc;
-
+    
     z->inBuffer[z->position] = input;
     int futurePosition = ((z->position + 1) % z->currentWindowSize);
     float output = 0.0f;
-
+    
     //add new value to count
     if ((z->inBuffer[z->position] * z->inBuffer[z->prevPosition]) < 0.0f)
     {
@@ -133,7 +133,7 @@
     {
         z->countBuffer[z->position] = 0;
     }
-
+    
     //remove oldest value from count
     if (z->countBuffer[futurePosition] > 0)
     {
@@ -143,12 +143,12 @@
             z->count = 0;
         }
     }
-
+    
     z->prevPosition = z->position;
     z->position = futurePosition;
-
+    
     output = z->count * z->invCurrentWindowSize;
-
+    
     return output;
 }
 
@@ -157,9 +157,9 @@
 {
     _tZeroCrossingCounter* z = *zc;
     if (windowSize <= z->maxWindowSize)
-        {
-            z->currentWindowSize = windowSize;
-        }
+    {
+        z->currentWindowSize = windowSize;
+    }
     else
     {
         z->currentWindowSize = z->maxWindowSize;
@@ -197,7 +197,7 @@
     mpool_free((char*)p, p->mempool);
 }
 
-int     tPowerFollower_setFactor(tPowerFollower* const pf, float factor)
+void tPowerFollower_setFactor(tPowerFollower* const pf, float factor)
 {
     _tPowerFollower* p = *pf;
     
@@ -205,10 +205,9 @@
     if (factor>1) factor=1;
     p->factor=factor;
     p->oneminusfactor=1.0f-factor;
-    return 0;
 }
 
-float   tPowerFollower_tick(tPowerFollower* const pf, float input)
+float tPowerFollower_tick(tPowerFollower* const pf, float input)
 {
     _tPowerFollower* p = *pf;
     p->curr = p->factor*input*input+p->oneminusfactor*p->curr;
@@ -215,7 +214,7 @@
     return p->curr;
 }
 
-float   tPowerFollower_sample(tPowerFollower* const pf)
+float tPowerFollower_getPower(tPowerFollower* const pf)
 {
     _tPowerFollower* p = *pf;
     return p->curr;
@@ -258,7 +257,7 @@
     
     for (i = 0; i < MAXOVERLAP; i++) x->x_sumbuf[i] = 0;
     for (i = 0; i < npoints; i++)
-        x->buf[i] = (1.0f - cosf((2 * PI * i) / npoints))/npoints;
+    x->buf[i] = (1.0f - cosf((2 * PI * i) / npoints))/npoints;
     for (; i < npoints+INITVSTAKEN; i++) x->buf[i] = 0;
     
     x->x_f = 0;
@@ -321,7 +320,7 @@
         x->x_result = x->x_sumbuf[0];
         for (count = x->x_realperiod, sump = x->x_sumbuf;
              count < x->x_npoints; count += x->x_realperiod, sump++)
-            sump[0] = sump[1];
+        sump[0] = sump[1];
         sump[0] = 0;
         x->x_phase = x->x_realperiod - n;
     }
@@ -364,12 +363,7 @@
 {
     _tAttackDetection* a = *ad;
     
-    if(!((size==64)|(size==128)|(size==256)|(size==512)|(size==1024)|(size==2048)))
-        size = DEFBLOCKSIZE;
     a->blocksize = size;
-    
-    return;
-    
 }
 
 void tAttackDetection_setSamplerate(tAttackDetection* const ad, int inRate)
@@ -500,7 +494,7 @@
     s->fidelity = 0.;
     s->minrms = DEFMINRMS;
     s->framesize = SNAC_FRAME_SIZE;
-
+    
     s->inputbuf = (float*) mpool_calloc(sizeof(float) * SNAC_FRAME_SIZE, m);
     s->processbuf = (float*) mpool_calloc(sizeof(float) * (SNAC_FRAME_SIZE * 2), m);
     s->spectrumbuf = (float*) mpool_calloc(sizeof(float) * (SNAC_FRAME_SIZE / 2), m);
@@ -526,15 +520,16 @@
 /******************************************************************************/
 
 
-void tSNAC_ioSamples(tSNAC* const snac, float *in, float *out, int size)
+//void tSNAC_ioSamples(tSNAC* const snac, float *in, float *out, int size)
+void tSNAC_ioSamples(tSNAC* const snac, float *in, int size)
 {
     _tSNAC* s = *snac;
     
     int timeindex = s->timeindex;
     int mask = s->framesize - 1;
-    int outindex = 0;
+//    int outindex = 0;
     float *inputbuf = s->inputbuf;
-    float *processbuf = s->processbuf;
+//    float *processbuf = s->processbuf;
     
     // call analysis function when it is time
     if(!(timeindex & (s->framesize / s->overlap - 1))) snac_analyzeframe(snac);
@@ -542,7 +537,8 @@
     while(size--)
     {
         inputbuf[timeindex] = *in++;
-        out[outindex++] = processbuf[timeindex++];
+//        out[outindex++] = processbuf[timeindex++];
+        timeindex++;
         timeindex &= mask;
     }
     s->timeindex = timeindex;
@@ -833,12 +829,12 @@
 //===========================================================================
 // PERIODDETECTION
 //===========================================================================
-void tPeriodDetection_init (tPeriodDetection* const pd, float* in, float* out, int bufSize, int frameSize, LEAF* const leaf)
+void tPeriodDetection_init (tPeriodDetection* const pd, float* in, int bufSize, int frameSize, LEAF* const leaf)
 {
-    tPeriodDetection_initToPool(pd, in, out, bufSize, frameSize, &leaf->mempool);
+    tPeriodDetection_initToPool(pd, in, bufSize, frameSize, &leaf->mempool);
 }
 
-void tPeriodDetection_initToPool (tPeriodDetection* const pd, float* in, float* out, int bufSize, int frameSize, tMempool* const mp)
+void tPeriodDetection_initToPool (tPeriodDetection* const pd, float* in, int bufSize, int frameSize, tMempool* const mp)
 {
     _tMempool* m = *mp;
     _tPeriodDetection* p = *pd = (_tPeriodDetection*) mpool_calloc(sizeof(_tPeriodDetection), m);
@@ -846,7 +842,6 @@
     LEAF* leaf = p->mempool->leaf;
     
     p->inBuffer = in;
-    p->outBuffer = out;
     p->bufSize = bufSize;
     p->frameSize = frameSize;
     p->framesPerBuffer = p->bufSize / p->frameSize;
@@ -861,7 +856,7 @@
     tEnvPD_initToPool(&p->env, p->windowSize, p->hopSize, p->frameSize, mp);
     
     tSNAC_initToPool(&p->snac, DEFOVERLAP, mp);
-
+    
     p->history = 0.0f;
     p->alpha = 1.0f;
     p->tolerance = 1.0f;
@@ -901,13 +896,10 @@
         
         tEnvPD_processBlock(&p->env, &(p->inBuffer[i]));
         
-        tSNAC_ioSamples(&p->snac, &(p->inBuffer[i]), &(p->outBuffer[i]), p->frameSize);
-        float fidelity = tSNAC_getFidelity(&p->snac);
+        tSNAC_ioSamples(&p->snac, &(p->inBuffer[i]), p->frameSize);
+        
         // Fidelity threshold recommended by Katja Vetters is 0.95 for most instruments/voices http://www.katjaas.nl/helmholtz/helmholtz.html
-        if (fidelity > p->fidelityThreshold)
-        {
-            p->period = tSNAC_getPeriod(&p->snac);
-        }
+        p->period = tSNAC_getPeriod(&p->snac);
         
         p->curBlock++;
         if (p->curBlock >= p->framesPerBuffer) p->curBlock = 0;
@@ -923,6 +915,12 @@
     return p->period;
 }
 
+float tPeriodDetection_getFidelity(tPeriodDetection* pd)
+{
+    _tPeriodDetection* p = *pd;
+    return tSNAC_getFidelity(&p->snac);
+}
+
 void tPeriodDetection_setHopSize(tPeriodDetection* pd, int hs)
 {
     _tPeriodDetection* p = *pd;
@@ -965,7 +963,7 @@
     _tMempool* m = *mp;
     _tZeroCrossingInfo* z = *zc = (_tZeroCrossingInfo*) mpool_alloc(sizeof(_tZeroCrossingInfo), m);
     z->mempool = m;
-
+    
     z->_leading_edge = INT_MIN;
     z->_trailing_edge = INT_MIN;
     z->_width = 0.0f;
@@ -1049,11 +1047,11 @@
     z->_size = pow(2.0, ceil(log2((double)size)));
     z->_mask = z->_size - 1;
 
+    z->_info = (tZeroCrossingInfo*) mpool_calloc(sizeof(tZeroCrossingInfo) * z->_size, m);
 
-    z->_info = (tZeroCrossingInfo*) mpool_alloc(sizeof(tZeroCrossingInfo) * z->_size, m);
     for (unsigned i = 0; i < z->_size; i++)
-        tZeroCrossingInfo_initToPool(&z->_info[i], mp);
-
+    tZeroCrossingInfo_initToPool(&z->_info[i], mp);
+    
     z->_pos = 0;
     
     z->_prev = 0.0f;
@@ -1069,6 +1067,11 @@
 {
     _tZeroCrossingCollector* z = *zc;
     
+    for (unsigned i = 0; i < z->_size; i++)
+
+    tZeroCrossingInfo_free(&z->_info[i]);
+    
+    mpool_free((char*)z->_info, z->mempool);
     mpool_free((char*)z, z->mempool);
 }
 
@@ -1846,7 +1849,7 @@
 {
     if (info._period < collector->_first_period)
         return 0;
-     
+    
     float incoming_period = sub_collector_period_of(collector, info);
     int multiple = fmaxf(1.0f, roundf( incoming_period / collector->_first_period));
     return sub_collector_try_sub_harmonic(collector, fmin(collector->_range, multiple), info, incoming_period/multiple);
@@ -1892,7 +1895,7 @@
     _tPitchDetector* p = *detector = (_tPitchDetector*) mpool_alloc(sizeof(_tPitchDetector), m);
     p->mempool = m;
     
-    tPeriodDetector_initToPool(&p->_pd, lowestFreq, highestFreq, DEFAULT_HYSTERESIS, mempool);
+    tPeriodDetector_initToPool(&p->_pd, lowestFreq, highestFreq, -120.0f, mempool);
     p->_current.frequency = 0.0f;
     p->_current.periodicity = 0.0f;
     p->_frames_after_shift = 0;
@@ -1985,8 +1988,8 @@
     
     float period = tPeriodDetector_predictPeriod(&p->_pd);
     if (period > 0.0f)
-       return leaf->sampleRate / period;
-   return 0.0f;
+        return leaf->sampleRate / period;
+    return 0.0f;
 }
 
 int     tPitchDetector_indeterminate    (tPitchDetector* const detector)
@@ -2026,7 +2029,7 @@
     //=============================================================================
     //_pitch_info result = bias(current, incoming, shift);
     {
-        float error = p->_current.frequency / 32.0f; // approx 1/2 semitone
+        float error = p->_current.frequency * 0.015625; // approx 1/4 semitone
         float diff = fabsf(p->_current.frequency - incoming.frequency);
         int done = 0;
         
@@ -2111,24 +2114,29 @@
 
 static inline void compute_predicted_frequency(tDualPitchDetector* const detector);
 
-void    tDualPitchDetector_init (tDualPitchDetector* const detector, float lowestFreq, float highestFreq, LEAF* const leaf)
+void    tDualPitchDetector_init (tDualPitchDetector* const detector, float lowestFreq, float highestFreq, float* inBuffer, int bufSize, LEAF* const leaf)
 {
-    tDualPitchDetector_initToPool(detector, lowestFreq, highestFreq, &leaf->mempool);
+    tDualPitchDetector_initToPool(detector, lowestFreq, highestFreq, inBuffer, bufSize, &leaf->mempool);
 }
 
-void    tDualPitchDetector_initToPool   (tDualPitchDetector* const detector, float lowestFreq, float highestFreq, tMempool* const mempool)
+void    tDualPitchDetector_initToPool   (tDualPitchDetector* const detector, float lowestFreq, float highestFreq, float* inBuffer, int bufSize, tMempool* const mempool)
 {
     _tMempool* m = *mempool;
     _tDualPitchDetector* p = *detector = (_tDualPitchDetector*) mpool_alloc(sizeof(_tDualPitchDetector), m);
     p->mempool = m;
     
-    tPitchDetector_initToPool(&p->_pd1, lowestFreq, highestFreq, mempool);
+    tPeriodDetection_initToPool(&p->_pd1, inBuffer, bufSize, bufSize / 2, mempool);
     tPitchDetector_initToPool(&p->_pd2, lowestFreq, highestFreq, mempool);
+
     p->_current.frequency = 0.0f;
     p->_current.periodicity = 0.0f;
     p->_mean = lowestFreq + ((highestFreq - lowestFreq) / 2.0f);
     p->_predicted_frequency = 0.0f;
     p->_first = 1;
+    p->thresh = 0.98f;
+    
+    p->lowest = lowestFreq;
+    p->highest = highestFreq;
 }
 
 void    tDualPitchDetector_free (tDualPitchDetector* const detector)
@@ -2135,7 +2143,7 @@
 {
     _tDualPitchDetector* p = *detector;
     
-    tPitchDetector_free(&p->_pd1);
+    tPeriodDetection_free(&p->_pd1);
     tPitchDetector_free(&p->_pd2);
     
     mpool_free((char*) p, p->mempool);
@@ -2144,22 +2152,65 @@
 int     tDualPitchDetector_tick    (tDualPitchDetector* const detector, float sample)
 {
     _tDualPitchDetector* p = *detector;
+    LEAF* leaf = p->mempool->leaf;
     
-    int pd1_ready = tPitchDetector_tick(&p->_pd1, sample);
-    int pd2_ready = tPitchDetector_tick(&p->_pd2, -sample);
-    
-    if (pd1_ready || pd2_ready)
+    tPeriodDetection_tick(&p->_pd1, sample);
+    int ready = tPitchDetector_tick(&p->_pd2, sample);
+
+    if (ready)
     {
-        int pd1_indeterminate = tPitchDetector_indeterminate(&p->_pd1);
         int pd2_indeterminate = tPitchDetector_indeterminate(&p->_pd2);
-        if (!pd1_indeterminate && !pd2_indeterminate)
+        int disagreement = 0;
+        float period = tPeriodDetection_getPeriod(&p->_pd1);
+        if (!pd2_indeterminate && period != 0.0f)
         {
-            _pitch_info _i1 = p->_pd1->_current;
+            _pitch_info _i1;
+            _i1.frequency = leaf->sampleRate / tPeriodDetection_getPeriod(&p->_pd1);
+            _i1.periodicity = tPeriodDetection_getFidelity(&p->_pd1);
             _pitch_info _i2 = p->_pd2->_current;
             
             float pd1_diff = fabsf(_i1.frequency - p->_mean);
             float pd2_diff = fabsf(_i2.frequency - p->_mean);
-            _pitch_info i = (pd1_diff < pd2_diff) ? _i1 : _i2;
+
+            _pitch_info i;
+            disagreement = fabsf(_i1.frequency - _i2.frequency) > (p->_mean * 0.03125f);
+            // If they agree, we'll use bacf
+            if (!disagreement) i = _i2;
+            // A disagreement implies a change
+            // Start with smaller changes
+            else if (pd2_diff < p->_mean * 0.03125f) i = _i2;
+            else if (pd1_diff < p->_mean * 0.03125f) i = _i1;
+            // Now filter out lower fidelity stuff
+            else if (_i1.periodicity < p->thresh) return ready;
+            // Changing up (bacf tends to lead changes)
+            else if ((_i1.frequency > p->_mean && _i2.frequency > p->_mean) &&
+                     (_i1.frequency < _i2.frequency) &&
+                     (_i2.periodicity > p->thresh))
+            {
+                if (roundf(_i2.frequency / _i1.frequency) > 1) i = _i1;
+                else i = _i2;
+            }
+            // Changing down
+            else if ((_i1.frequency < p->_mean && _i2.frequency < p->_mean) &&
+                     (_i1.frequency > _i2.frequency) &&
+                     (_i2.periodicity > p->thresh))
+            {
+                if (roundf(_i1.frequency / _i2.frequency) > 1) i = _i1;
+                else i = _i2;
+            }
+            // A bit of handling for stuff out of bacf range, won't be as solid but better than nothing
+            else if (_i1.frequency > p->highest)
+            {
+                if (roundf(_i1.frequency / _i2.frequency) > 1) i = _i2;
+                else i = _i1;
+            }
+            else if (_i1.frequency < p->lowest)
+            {
+                if (roundf(_i2.frequency / _i1.frequency) > 1) i = _i2;
+                else i = _i1;
+            }
+            // Don't change if we met non of these, probably a bad read
+            else return ready;
             
             if (p->_first)
             {
@@ -2171,20 +2222,14 @@
             else
             {
                 p->_current = i;
-                p->_mean = (0.222222f * p->_current.frequency) + (0.777778f * p->_mean);
+                p->_mean = (0.2222222 * p->_current.frequency) + (0.7777778 * p->_mean);
                 p->_predicted_frequency = 0.0f;
             }
+            return ready;
         }
-        
-        if (pd1_indeterminate && pd2_indeterminate)
-        {
-            compute_predicted_frequency(detector);
-            p->_current.frequency = 0.0f;
-            p->_current.periodicity = 0.0f;
-        }
     }
-    
-    return pd1_ready || pd2_ready;
+
+    return ready;
 }
 
 float   tDualPitchDetector_getFrequency    (tDualPitchDetector* const detector)
@@ -2210,31 +2255,36 @@
     return p->_predicted_frequency;
 }
 
-void    tDualPitchDetector_setHysteresis    (tDualPitchDetector* const detector, float hysteresis)
+void    tDualPitchDetector_setHysteresis (tDualPitchDetector* const detector, float hysteresis)
 {
     _tDualPitchDetector* p = *detector;
     
-    tPitchDetector_setHysteresis(&p->_pd1, hysteresis);
     tPitchDetector_setHysteresis(&p->_pd2, hysteresis);
 }
 
+void    tDualPitchDetector_setPeriodicityThreshold (tDualPitchDetector* const detector, float thresh)
+{
+    _tDualPitchDetector* p = *detector;
+    
+    p->thresh = thresh;
+}
+
 static inline void compute_predicted_frequency(tDualPitchDetector* const detector)
 {
     _tDualPitchDetector* p = *detector;
     
-    float f1 = tPitchDetector_predictFrequency(&p->_pd1);
-    if (f1 > 0.0f)
+    float f1 = 1.0f / tPeriodDetection_getPeriod(&p->_pd1);
+    float f2 = tPitchDetector_predictFrequency(&p->_pd2);
+    if (f2 > 0.0f)
     {
-        float f2 = tPitchDetector_predictFrequency(&p->_pd2);
-        if (f2 > 0.0f)
+        float error = f1 * 0.1f;
+        if (fabsf(f1 - f2) < error)
         {
-            float error = f1 * 0.1f;
-            if (fabsf(f1 - f2) < error)
-            {
-                p->_predicted_frequency = f1;
-                return;
-            }
+            p->_predicted_frequency = f1;
+            return;
         }
     }
+    
     p->_predicted_frequency = 0.0f;
 }
+
--- a/leaf/Src/leaf-delay.c
+++ b/leaf/Src/leaf-delay.c
@@ -80,7 +80,7 @@
     return d->lastOut;
 }
 
-int     tDelay_setDelay (tDelay* const dl, uint32_t delay)
+void     tDelay_setDelay (tDelay* const dl, uint32_t delay)
 {
     _tDelay* d = *dl;
 
@@ -89,8 +89,6 @@
     // read chases write
     if ( d->inPoint >= delay )  d->outPoint = d->inPoint - d->delay;
     else                        d->outPoint = d->maxDelay + d->inPoint - d->delay;
-
-    return 0;
 }
 
 float tDelay_tapOut (tDelay* const dl, uint32_t tapDelay)
@@ -262,7 +260,7 @@
     return d->lastOut;
 }
 
-int     tLinearDelay_setDelay (tLinearDelay* const dl, float delay)
+void     tLinearDelay_setDelay (tLinearDelay* const dl, float delay)
 {
     _tLinearDelay* d = *dl;
 
@@ -279,8 +277,6 @@
     d->omAlpha = 1.0f - d->alpha;
 
     if ( d->outPoint == d->maxDelay ) d->outPoint = 0;
-
-    return 0;
 }
 
 float tLinearDelay_tapOut (tLinearDelay* const dl, uint32_t tapDelay)
@@ -456,7 +452,7 @@
     return d->lastOut;
 }
 
-int     tHermiteDelay_setDelay (tHermiteDelay* const dl, float delay)
+void tHermiteDelay_setDelay (tHermiteDelay* const dl, float delay)
 {
     _tHermiteDelay* d = *dl;
 
@@ -473,8 +469,6 @@
     d->omAlpha = 1.0f - d->alpha;
 
     if ( d->outPoint == d->maxDelay ) d->outPoint = 0;
-
-    return 0;
 }
 
 float tHermiteDelay_tapOut (tHermiteDelay* const dl, uint32_t tapDelay)
@@ -622,7 +616,7 @@
     return d->lastOut;
 }
 
-int     tAllpassDelay_setDelay (tAllpassDelay* const dl, float delay)
+void     tAllpassDelay_setDelay (tAllpassDelay* const dl, float delay)
 {
     _tAllpassDelay* d = *dl;
 
@@ -652,8 +646,6 @@
     }
 
     d->coeff = (1.0f - d->alpha) / (1.0f + d->alpha);  // coefficient for allpass
-
-    return 0;
 }
 
 float tAllpassDelay_tapOut (tAllpassDelay* const dl, uint32_t tapDelay)
--- a/leaf/Src/leaf-distortion.c
+++ b/leaf/Src/leaf-distortion.c
@@ -22,7 +22,6 @@
 // Sample-Rate reducer
 //============================================================================================================
 
-
 void tSampleReducer_init (tSampleReducer* const sr, LEAF* const leaf)
 {
     tSampleReducer_initToPool(sr, &leaf->mempool);
@@ -68,6 +67,7 @@
     
 }
 
+#if LEAF_INCLUDE_OVERSAMPLER_TABLES
 //============================================================================================================
 // Oversampler
 //============================================================================================================
@@ -303,6 +303,7 @@
     _tOversampler* os = *osr;
     return os->phaseLength;
 }
+#endif // LEAF_INCLUDE_OVERSAMPLER_TABLES
 
 //============================================================================================================
 // WAVEFOLDER
--- a/leaf/Src/leaf-effects.c
+++ b/leaf/Src/leaf-effects.c
@@ -1010,7 +1010,6 @@
 /***************** static function declarations *******************************/
 /******************************************************************************/
 
-static void solad_init(_tSOLAD *w);
 static inline float read_sample(_tSOLAD *w, float floatindex);
 static void pitchdown(_tSOLAD *w, float *out);
 static void pitchup(_tSOLAD *w, float *out);
@@ -1020,21 +1019,29 @@
 /******************************************************************************/
 
 // init
-void tSOLAD_init (tSOLAD* const wp, LEAF* const leaf)
+void tSOLAD_init (tSOLAD* const wp, int loopSize, LEAF* const leaf)
 {
-    tSOLAD_initToPool(wp, &leaf->mempool);
+    tSOLAD_initToPool(wp, loopSize, &leaf->mempool);
 }
 
-void tSOLAD_initToPool (tSOLAD* const wp, tMempool* const mp)
+void tSOLAD_initToPool (tSOLAD* const wp, int loopSize, tMempool* const mp)
 {
     _tMempool* m = *mp;
     _tSOLAD* w = *wp = (_tSOLAD*) mpool_calloc(sizeof(_tSOLAD), m);
     w->mempool = m;
     
+    w->loopSize = loopSize;
     w->pitchfactor = 1.;
-    w->delaybuf = (float*) mpool_calloc(sizeof(float) * (LOOPSIZE+16), m);
+    w->delaybuf = (float*) mpool_calloc(sizeof(float) * w->loopSize, m);
 
-    solad_init(w);
+    w->timeindex = 0;
+    w->xfadevalue = -1;
+    w->period = INITPERIOD;
+    w->readlag = INITPERIOD;
+    w->blocksize = INITPERIOD;
+
+    tAttackDetection_initToPool(&w->ad, INITPERIOD, 5, 5, mp);
+    tHighpass_initToPool(&w->hp, 20.0f, mp);
 }
 
 void tSOLAD_free (tSOLAD* const wp)
@@ -1041,6 +1048,8 @@
 {
     _tSOLAD* w = *wp;
     
+    tAttackDetection_free(&w->ad);
+    tHighpass_free(&w->hp);
     mpool_free((char*)w->delaybuf, w->mempool);
     mpool_free((char*)w, w->mempool);
 }
@@ -1053,14 +1062,28 @@
     int i = w->timeindex;
     int n = w->blocksize = blocksize;
     
-    if(!i) w->delaybuf[LOOPSIZE] = in[0];   // copy one sample for interpolation
-    while(n--) w->delaybuf[i++] = *in++;    // copy one input block to delay buffer
+    if(!i)
+    {
+        float sample = tHighpass_tick(&w->hp, in[0]);
+        w->delaybuf[0] = sample;
+        w->delaybuf[w->loopSize] = sample;   // copy one sample for interpolation
+        n--;
+        i++;
+        in++;
+    }
+    while(n--) w->delaybuf[i++] = tHighpass_tick(&w->hp, *in++);    // copy one input block to delay buffer
     
+    tAttackDetection_setBlocksize(&w->ad, n);
+    if (tAttackDetection_detect(&w->ad, in))
+    {
+        tSOLAD_setReadLag(wp, w->blocksize);
+    }
+    
     if(w->pitchfactor > 1) pitchup(w, out);
     else pitchdown(w, out);
     
     w->timeindex += blocksize;
-    w->timeindex &= LOOPMASK;
+    w->timeindex &= (w->loopSize - 1);
 }
 
 // set periodicity analysis data
@@ -1068,7 +1091,8 @@
 {
     _tSOLAD* w = *wp;
     
-    if(period > MAXPERIOD) period = MAXPERIOD;
+    float maxPeriod = (float)((w->loopSize - w->blocksize) * 0.8f);
+    if(period > maxPeriod) period = maxPeriod;
     if(period > MINPERIOD) w->period = period;  // ignore period when too small
 }
 
@@ -1077,7 +1101,10 @@
 {
     _tSOLAD* w = *wp;
     
-    if (pitchfactor <= 0.0f) return;
+    if (pitchfactor <= 0.0f || pitchfactor > 1000.0f)
+    {
+        return;
+    }
     w->pitchfactor = pitchfactor;
 }
 
@@ -1101,11 +1128,16 @@
 {
     _tSOLAD* w = *wp;
     
-    int n = LOOPSIZE + 1;
+    int n = w->loopSize;
     float *buf = w->delaybuf;
     
     while(n--) *buf++ = 0;
-    solad_init(w);
+    
+    w->timeindex = 0;
+    w->xfadevalue = -1;
+    w->period = INITPERIOD;
+    w->readlag = INITPERIOD;
+    w->blocksize = INITPERIOD;
 }
 
 /******************************************************************************/
@@ -1143,7 +1175,7 @@
 static void pitchdown(_tSOLAD* const w, float *out)
 {
     int n = w->blocksize;
-    float refindex = (float)(w->timeindex + LOOPSIZE); // no negative values!
+    float refindex = (float)(w->timeindex + w->loopSize); // no negative values!
     float pitchfactor = w->pitchfactor;
     float period = w->period;
     float readlag = w->readlag;
@@ -1182,7 +1214,7 @@
             xfadevalue -= xfadestep;
         }
         
-        *out++ = outputsample;
+        *out++ += outputsample;
         refindex += 1;
         readlag += readlagstep;
     }
@@ -1261,7 +1293,7 @@
 static void pitchup(_tSOLAD* const w, float *out)
 {
     int n = w->blocksize;
-    float refindex = (float)(w->timeindex + LOOPSIZE); // no negative values
+    float refindex = (float)(w->timeindex + w->loopSize); // no negative values
     float pitchfactor = w->pitchfactor;
     float period = w->period;
     float readlag = w->readlag;
@@ -1312,7 +1344,7 @@
             xfadevalue -= xfadestep;
         }
         
-        *out++ = outputsample;
+        *out++ += outputsample;
         refindex += 1;
         readlag -= readlagstep;
     }
@@ -1329,80 +1361,31 @@
     int index = (int)floatindex;
     float fraction = floatindex - (float)index;
     float *buf = w->delaybuf;
-    index &= LOOPMASK;
+    index &= (w->loopSize - 1);
     
     return (buf[index] + (fraction * (buf[index+1] - buf[index])));
 }
 
-static void solad_init(_tSOLAD* const w)
-{
-    w->timeindex = 0;
-    w->xfadevalue = -1;
-    w->period = INITPERIOD;
-    w->readlag = INITPERIOD;
-    w->blocksize = INITPERIOD;
-}
-
 //============================================================================================================
 // PITCHSHIFT
 //============================================================================================================
 
-static int pitchshift_attackdetect(_tPitchShift* ps)
+void tPitchShift_init (tPitchShift* const psr, tDualPitchDetector* const dpd, int bufSize, LEAF* const leaf)
 {
-    float envout;
-    
-    _tPeriodDetection* p = *ps->p;
-    
-    envout = tEnvPD_tick(&p->env);
-    
-    if (envout >= 1.0f)
-    {
-        p->lastmax = p->max;
-        if (envout > p->max)
-        {
-            p->max = envout;
-        }
-        else
-        {
-            p->deltamax = envout - p->max;
-            p->max = p->max * ps->radius;
-        }
-        p->deltamax = p->max - p->lastmax;
-    }
-    
-    p->fba = p->fba ? (p->fba - 1) : 0;
-    
-    return (p->fba == 0 && (p->max > 60 && p->deltamax > 6)) ? 1 : 0;
+    tPitchShift_initToPool(psr, dpd, bufSize, &leaf->mempool);
 }
 
-void tPitchShift_init (tPitchShift* const psr, tPeriodDetection* pd, float* out, int bufSize, LEAF* const leaf)
+void tPitchShift_initToPool (tPitchShift* const psr, tDualPitchDetector* const dpd, int bufSize, tMempool* const mp)
 {
-    tPitchShift_initToPool(psr, pd, out, bufSize, &leaf->mempool);
-}
-
-void tPitchShift_initToPool (tPitchShift* const psr, tPeriodDetection* const pd, float* out, int bufSize, tMempool* const mp)
-{
     _tMempool* m = *mp;
-    _tPitchShift* ps = *psr = (_tPitchShift*) mpool_calloc(sizeof(_tPitchShift), m);
+    _tPitchShift* ps = *psr = (_tPitchShift*) mpool_alloc(sizeof(_tPitchShift), m);
     ps->mempool = m;
     
-    _tPeriodDetection* p = *pd;
-    
-    ps->p = pd;
-    
-    ps->outBuffer = out;
+    ps->pd = *dpd;
     ps->bufSize = bufSize;
-    ps->frameSize = p->frameSize;
-    ps->framesPerBuffer = ps->bufSize / ps->frameSize;
-    ps->curBlock = 1;
-    ps->lastBlock = 0;
-    ps->index = 0;
-    ps->pitchFactor = 1.0f;
+    ps->pickiness = 0.0f;
     
-    tSOLAD_initToPool(&ps->sola, mp);
-    
-    tHighpass_initToPool(&ps->hp, HPFREQ, mp);
-    
+    tSOLAD_initToPool(&ps->sola, pow(2.0, ceil(log2(ps->bufSize * 2.0))), mp);
     tSOLAD_setPitchFactor(&ps->sola, DEFPITCHRATIO);
 }
 
@@ -1411,447 +1394,318 @@
     _tPitchShift* ps = *psr;
     
     tSOLAD_free(&ps->sola);
-    tHighpass_free(&ps->hp);
     mpool_free((char*)ps, ps->mempool);
 }
 
-void tPitchShift_setPitchFactor(tPitchShift* psr, float pf)
+void tPitchShift_shiftBy (tPitchShift* const psr, float factor, float* in, float* out)
 {
     _tPitchShift* ps = *psr;
+    LEAF* leaf = ps->mempool->leaf;
     
-    ps->pitchFactor = pf;
-}
-
-float tPitchShift_shift (tPitchShift* psr)
-{
-    _tPitchShift* ps = *psr;
-    _tPeriodDetection* p = *ps->p;
-    
-    float period, out;
-    int i, iLast;
-    
-    i = p->i;
-    iLast = p->iLast;
-    
-    out = tHighpass_tick(&ps->hp, ps->outBuffer[iLast]);
-    
-    if (p->indexstore >= ps->frameSize)
+    float detected = tDualPitchDetector_getFrequency(&ps->pd);
+    float periodicity = tDualPitchDetector_getPeriodicity(&ps->pd);
+    if (detected > 0.0f && periodicity > ps->pickiness)
     {
-        period = tPeriodDetection_getPeriod(&p);
-        
-        if(pitchshift_attackdetect(ps) == 1)
-        {
-            p->fba = 5;
-            tSOLAD_setReadLag(&ps->sola, p->windowSize);
-        }
-        
+        float period = leaf->sampleRate / detected;
         tSOLAD_setPeriod(&ps->sola, period);
-        tSOLAD_setPitchFactor(&ps->sola, ps->pitchFactor);
-        
-        tSOLAD_ioSamples(&ps->sola, &(p->inBuffer[i]), &(ps->outBuffer[i]), ps->frameSize);
+        tSOLAD_setPitchFactor(&ps->sola, factor);
     }
-    
-    return out;
+        
+    tSOLAD_ioSamples(&ps->sola, in, out, ps->bufSize);
 }
 
-float tPitchShift_shiftToFreq (tPitchShift* psr, float freq)
+void    tPitchShift_shiftTo (tPitchShift* const psr, float freq, float* in, float* out)
 {
     _tPitchShift* ps = *psr;
-    _tPeriodDetection* p = *ps->p;
     LEAF* leaf = ps->mempool->leaf;
     
-    float period, out;
-    int i, iLast;
-    
-    i = p->i;
-    iLast = p->iLast;
-    
-    out = tHighpass_tick(&ps->hp, ps->outBuffer[iLast]);
-    
-    if (p->indexstore >= ps->frameSize)
+    float detected = tDualPitchDetector_getFrequency(&ps->pd);
+    float periodicity = tDualPitchDetector_getPeriodicity(&ps->pd);
+    if (detected > 0.0f && periodicity > ps->pickiness)
     {
-        period = tPeriodDetection_getPeriod(&p);
-        
-        if(pitchshift_attackdetect(ps) == 1)
-        {
-            p->fba = 5;
-            tSOLAD_setReadLag(&ps->sola, p->windowSize);
-        }
-        
-        tSOLAD_setPeriod(&ps->sola, period);
-        
-        if (period != 0) ps->pitchFactor = period * freq * leaf->invSampleRate;
-        else ps->pitchFactor = 1.0f;
-        
-        tSOLAD_setPitchFactor(&ps->sola, ps->pitchFactor);
-        
-        tSOLAD_ioSamples(&ps->sola, &(p->inBuffer[i]), &(ps->outBuffer[i]), ps->frameSize);
+        float period = 1.0f / detected;
+        float factor = freq * period;
+        tSOLAD_setPeriod(&ps->sola, leaf->sampleRate * period);
+        tSOLAD_setPitchFactor(&ps->sola, factor);
     }
-    return out;
+    
+    tSOLAD_ioSamples(&ps->sola, in, out, ps->bufSize);
 }
 
-float tPitchShift_shiftToFunc (tPitchShift* psr, float (*fun)(float))
+void    tPitchShift_setPickiness (tPitchShift* const psr, float p)
 {
     _tPitchShift* ps = *psr;
-    _tPeriodDetection* p = *ps->p;
     
-    float period, out;
-    int i, iLast;
-    
-    i = p->i;
-    iLast = p->iLast;
-    
-    out = tHighpass_tick(&ps->hp, ps->outBuffer[iLast]);
-    
-    if (p->indexstore >= ps->frameSize)
-    {
-        period = tPeriodDetection_getPeriod(&p);
-        
-        if(pitchshift_attackdetect(ps) == 1)
-        {
-            p->fba = 5;
-            tSOLAD_setReadLag(&ps->sola, p->windowSize);
-        }
-        
-        tSOLAD_setPeriod(&ps->sola, period);
-        
-        ps->pitchFactor = period/fun(period);
-        tSOLAD_setPitchFactor(&ps->sola, ps->pitchFactor);
-        
-        tSOLAD_ioSamples(&ps->sola, &(p->inBuffer[i]), &(ps->outBuffer[i]), ps->frameSize);
-        
-        ps->curBlock++;
-        if (ps->curBlock >= p->framesPerBuffer) ps->curBlock = 0;
-        ps->lastBlock++;
-        if (ps->lastBlock >= ps->framesPerBuffer) ps->lastBlock = 0;
-    }
-    
-    return out;
+    ps->pickiness = p;
 }
 
+
 //============================================================================================================
-// RETUNE
+// SIMPLERETUNE
 //============================================================================================================
 
-void tRetune_init(tRetune* const rt, int numVoices, int bufSize, int frameSize, LEAF* const leaf)
+void tSimpleRetune_init (tSimpleRetune* const rt, int numVoices, float minInputFreq, float maxInputFreq, int bufSize, LEAF* const leaf)
 {
-    tRetune_initToPool(rt, numVoices, bufSize, frameSize, &leaf->mempool);
+    tSimpleRetune_initToPool(rt, numVoices, minInputFreq, maxInputFreq, bufSize, &leaf->mempool);
 }
 
-void tRetune_initToPool (tRetune* const rt, int numVoices, int bufSize, int frameSize, tMempool* const mp)
+void tSimpleRetune_initToPool (tSimpleRetune* const rt, int numVoices, float minInputFreq, float maxInputFreq, int bufSize, tMempool* const mp)
 {
     _tMempool* m = *mp;
-    _tRetune* r = *rt = (_tRetune*) mpool_alloc(sizeof(_tRetune), m);
+    _tSimpleRetune* r = *rt = (_tSimpleRetune*) mpool_calloc(sizeof(_tSimpleRetune), m);
     r->mempool = *mp;
     
     r->bufSize = bufSize;
-    r->frameSize = frameSize;
     r->numVoices = numVoices;
     
     r->inBuffer = (float*) mpool_calloc(sizeof(float) * r->bufSize, m);
-    r->outBuffers = (float**) mpool_calloc(sizeof(float*) * r->numVoices, m);
+    r->outBuffer = (float*) mpool_calloc(sizeof(float) * r->bufSize, m);
     
-    r->hopSize = DEFHOPSIZE;
-    r->windowSize = DEFWINDOWSIZE;
-    r->fba = FBA;
-    tRetune_setTimeConstant(rt, DEFTIMECONSTANT);
+    r->index = 0;
     
-    r->inputPeriod = 0.0f;
-
     r->ps = (tPitchShift*) mpool_calloc(sizeof(tPitchShift) * r->numVoices, m);
-    r->pitchFactor = (float*) mpool_calloc(sizeof(float) * r->numVoices, m);
-    r->tickOutput = (float*) mpool_calloc(sizeof(float) * r->numVoices, m);
-    for (int i = 0; i < r->numVoices; ++i)
-    {
-        r->outBuffers[i] = (float*) mpool_calloc(sizeof(float) * r->bufSize, m);
-    }
+    r->shiftValues = (float*) mpool_calloc(sizeof(float) * r->numVoices, m);
     
-    tPeriodDetection_initToPool(&r->pd, r->inBuffer, r->outBuffers[0], r->bufSize, r->frameSize, mp);
-
+    r->minInputFreq = minInputFreq;
+    r->maxInputFreq = maxInputFreq;
+    tDualPitchDetector_initToPool(&r->dp, r->minInputFreq, r->maxInputFreq, r->inBuffer, r->bufSize, mp);
+    
     for (int i = 0; i < r->numVoices; ++i)
     {
-        tPitchShift_initToPool(&r->ps[i], &r->pd, r->outBuffers[i], r->bufSize, mp);
+        tPitchShift_initToPool(&r->ps[i], &r->dp, r->bufSize, mp);
     }
+    
+    r->shiftFunction = &tPitchShift_shiftBy;
 }
 
-void tRetune_free (tRetune* const rt)
+void tSimpleRetune_free (tSimpleRetune* const rt)
 {
-    _tRetune* r = *rt;
+    _tSimpleRetune* r = *rt;
     
-    tPeriodDetection_free(&r->pd);
+    tDualPitchDetector_free(&r->dp);
     for (int i = 0; i < r->numVoices; ++i)
     {
         tPitchShift_free(&r->ps[i]);
-        mpool_free((char*)r->outBuffers[i], r->mempool);
     }
-    mpool_free((char*)r->tickOutput, r->mempool);
-    mpool_free((char*)r->pitchFactor, r->mempool);
+    mpool_free((char*)r->shiftValues, r->mempool);
     mpool_free((char*)r->ps, r->mempool);
     mpool_free((char*)r->inBuffer, r->mempool);
-    mpool_free((char*)r->outBuffers, r->mempool);
+    mpool_free((char*)r->outBuffer, r->mempool);
     mpool_free((char*)r, r->mempool);
 }
 
-float* tRetune_tick(tRetune* const rt, float sample)
+float tSimpleRetune_tick(tSimpleRetune* const rt, float sample)
 {
-    _tRetune* r = *rt;
+    _tSimpleRetune* r = *rt;
     
-    r->inputPeriod = tPeriodDetection_tick(&r->pd, sample);
+    tDualPitchDetector_tick(&r->dp, sample);
     
-    for (int v = 0; v < r->numVoices; ++v)
+    r->inBuffer[r->index] = sample;
+    float out = r->outBuffer[r->index];
+    r->outBuffer[r->index] = 0.0f;
+    
+    if (++r->index >= r->bufSize)
     {
-        r->tickOutput[v] = tPitchShift_shift(&r->ps[v]);
+        for (int i = 0; i < r->numVoices; ++i)
+        {
+            r->shiftFunction(&r->ps[i], r->shiftValues[i], r->inBuffer, r->outBuffer);
+        }
+        r->index = 0;
     }
     
-    return r->tickOutput;
+    return out;
 }
 
-void tRetune_setNumVoices(tRetune* const rt, int numVoices)
+void tSimpleRetune_setMode (tSimpleRetune* const rt, int mode)
 {
-    _tRetune* r = *rt;
+    _tSimpleRetune* r = *rt;
     
+    if (mode > 0) r->shiftFunction = &tPitchShift_shiftTo;
+    else r->shiftFunction = &tPitchShift_shiftBy;
+}
+
+void tSimpleRetune_setNumVoices(tSimpleRetune* const rt, int numVoices)
+{
+    _tSimpleRetune* r = *rt;
+    
     int bufSize = r->bufSize;
-    int frameSize = r->frameSize;
+    float minInputFreq = r->minInputFreq;
+    float maxInputFreq = r->maxInputFreq;
     tMempool mempool = r->mempool;
     
-    tRetune_free(rt);
-    tRetune_initToPool(rt, numVoices, bufSize, frameSize, &mempool);
+    tSimpleRetune_free(rt);
+    tSimpleRetune_initToPool(rt, minInputFreq, maxInputFreq, numVoices, bufSize, &mempool);
 }
 
-void tRetune_setPitchFactors(tRetune* const rt, float pf)
+void tSimpleRetune_setPickiness (tSimpleRetune* const rt, float p)
 {
-    _tRetune* r = *rt;
+    _tSimpleRetune* r = *rt;
     
     for (int i = 0; i < r->numVoices; ++i)
     {
-        r->pitchFactor[i] = pf;
-        tPitchShift_setPitchFactor(&r->ps[i], r->pitchFactor[i]);
+        tPitchShift_setPickiness(&r->ps[i], p);
     }
 }
 
-void tRetune_setPitchFactor(tRetune* const rt, float pf, int voice)
+void tSimpleRetune_tuneVoices(tSimpleRetune* const rt, float* t)
 {
-    _tRetune* r = *rt;
+    _tSimpleRetune* r = *rt;
     
-    r->pitchFactor[voice] = pf;
-    tPitchShift_setPitchFactor(&r->ps[voice], r->pitchFactor[voice]);
+    for (int i = 0; i < r->numVoices; ++i)
+    {
+        r->shiftValues[i] = t[i];
+    }
 }
 
-void tRetune_setTimeConstant(tRetune* const rt, float tc)
+void tSimpleRetune_tuneVoice(tSimpleRetune* const rt,  int voice, float t)
 {
-    _tRetune* r = *rt;
-    LEAF* leaf = r->mempool->leaf;
+    _tSimpleRetune* r = *rt;
     
-    r->timeConstant = tc;
-    r->radius = expf(-1000.0f * r->hopSize * leaf->invSampleRate / r->timeConstant);
+    r->shiftValues[voice] = t;
 }
 
-void tRetune_setHopSize(tRetune* const rt, int hs)
+float tSimpleRetune_getInputFrequency (tSimpleRetune* const rt)
 {
-    _tRetune* r = *rt;
+    _tSimpleRetune* r = *rt;
     
-    r->hopSize = hs;
-    tPeriodDetection_setHopSize(&r->pd, r->hopSize);
+    return tDualPitchDetector_getFrequency(&r->dp);
 }
 
-void tRetune_setWindowSize(tRetune* const rt, int ws)
-{
-    _tRetune* r = *rt;
-    
-    r->windowSize = ws;
-    tPeriodDetection_setWindowSize(&r->pd, r->windowSize);
-}
-
-void tRetune_setFidelityThreshold(tRetune* const rt, float threshold)
-{
-    _tRetune* r = *rt;
-    
-    tPeriodDetection_setFidelityThreshold(&r->pd, threshold);
-}
-
-float tRetune_getInputPeriod(tRetune* const rt)
-{
-    _tRetune* r = *rt;
-    LEAF* leaf = r->mempool->leaf;
-
-    return (r->inputPeriod * leaf->invSampleRate);
-}
-
-float tRetune_getInputFreq(tRetune* const rt)
-{
-    _tRetune* r = *rt;
-    LEAF* leaf = r->mempool->leaf;
-    
-    return 1.0f/(r->inputPeriod * leaf->invSampleRate);
-}
-
 //============================================================================================================
-// AUTOTUNE
+// RETUNE
 //============================================================================================================
 
-void tAutotune_init (tAutotune* const rt, int numVoices, int bufSize, int frameSize, LEAF* const leaf)
+void tRetune_init(tRetune* const rt, int numVoices, float minInputFreq, float maxInputFreq, int bufSize, LEAF* const leaf)
 {
-    tAutotune_initToPool(rt, numVoices, bufSize, frameSize, &leaf->mempool);
+    tRetune_initToPool(rt, numVoices, minInputFreq, maxInputFreq, bufSize, &leaf->mempool);
 }
 
-void tAutotune_initToPool (tAutotune* const rt, int numVoices, int bufSize, int frameSize, tMempool* const mp)
+void tRetune_initToPool (tRetune* const rt, int numVoices, float minInputFreq, float maxInputFreq, int bufSize, tMempool* const mp)
 {
     _tMempool* m = *mp;
-    _tAutotune* r = *rt = (_tAutotune*) mpool_alloc(sizeof(_tAutotune), m);
+    _tRetune* r = *rt = (_tRetune*) mpool_calloc(sizeof(_tRetune), m);
     r->mempool = *mp;
     
     r->bufSize = bufSize;
-    r->frameSize = frameSize;
     r->numVoices = numVoices;
     
-    r->inBuffer = (float*) mpool_alloc(sizeof(float) * r->bufSize, m);
-    r->outBuffers = (float**) mpool_alloc(sizeof(float*) * r->numVoices, m);
+    r->pdBuffer = (float*) mpool_alloc(sizeof(float) * 2048, m);
+    r->inBuffer = (float*) mpool_calloc(sizeof(float) * r->bufSize, m);
+
+    r->index = 0;
+
+    r->ps = (tPitchShift*) mpool_calloc(sizeof(tPitchShift) * r->numVoices, m);
+    r->shiftValues = (float*) mpool_calloc(sizeof(float) * r->numVoices, m);
+    r->outBuffers = (float**) mpool_calloc(sizeof(float*) * r->numVoices, m);
+    r->output = (float*) mpool_calloc(sizeof(float) * r->numVoices, m);
     
-    r->hopSize = DEFHOPSIZE;
-    r->windowSize = DEFWINDOWSIZE;
-    r->fba = FBA;
-    tAutotune_setTimeConstant(rt, DEFTIMECONSTANT);
-    
-    r->ps = (tPitchShift*) mpool_alloc(sizeof(tPitchShift) * r->numVoices, m);
-    r->freq = (float*) mpool_alloc(sizeof(float) * r->numVoices, m);
-    r->tickOutput = (float*) mpool_alloc(sizeof(float) * r->numVoices, m);
-    for (int i = 0; i < r->numVoices; ++i)
-    {
-        r->outBuffers[i] = (float*) mpool_alloc(sizeof(float) * r->bufSize, m);
-    }
-    
-    tPeriodDetection_initToPool(&r->pd, r->inBuffer, r->outBuffers[0], r->bufSize, r->frameSize, mp);
+    r->minInputFreq = minInputFreq;
+    r->maxInputFreq = maxInputFreq;
+    tDualPitchDetector_initToPool(&r->dp, r->minInputFreq, r->maxInputFreq, r->pdBuffer, 2048, mp);
 
     for (int i = 0; i < r->numVoices; ++i)
     {
-        tPitchShift_initToPool(&r->ps[i], &r->pd, r->outBuffers[i], r->bufSize, mp);
+        tPitchShift_initToPool(&r->ps[i], &r->dp, r->bufSize, mp);
+        r->outBuffers[i] = (float*) mpool_calloc(sizeof(float) * r->bufSize, m);
     }
     
-    r->inputPeriod = 0.0f;
-    r->shiftOn = 0;
+    r->shiftFunction = &tPitchShift_shiftBy;
 }
 
-void tAutotune_free (tAutotune* const rt)
+void tRetune_free (tRetune* const rt)
 {
-    _tAutotune* r = *rt;
+    _tRetune* r = *rt;
     
-    tPeriodDetection_free(&r->pd);
+    tDualPitchDetector_free(&r->dp);
     for (int i = 0; i < r->numVoices; ++i)
     {
         tPitchShift_free(&r->ps[i]);
         mpool_free((char*)r->outBuffers[i], r->mempool);
     }
-    mpool_free((char*)r->tickOutput, r->mempool);
-    mpool_free((char*)r->freq, r->mempool);
+    mpool_free((char*)r->shiftValues, r->mempool);
     mpool_free((char*)r->ps, r->mempool);
+    mpool_free((char*)r->pdBuffer, r->mempool);
     mpool_free((char*)r->inBuffer, r->mempool);
     mpool_free((char*)r->outBuffers, r->mempool);
+    mpool_free((char*)r->output, r->mempool);
     mpool_free((char*)r, r->mempool);
 }
 
-float* tAutotune_tick(tAutotune* const rt, float sample)
+float* tRetune_tick(tRetune* const rt, float sample)
 {
-    _tAutotune* r = *rt;
+    _tRetune* r = *rt;
     
-    float tempPeriod = tPeriodDetection_tick(&r->pd, sample);
-    if (tempPeriod < 1000.0f) //to avoid trying to follow consonants JS
+    tDualPitchDetector_tick(&r->dp, sample);
+    
+    r->inBuffer[r->index] = sample;
+    for (int i = 0; i < r->numVoices; ++i)
     {
-        r->inputPeriod = tempPeriod;
+        r->output[i] = r->outBuffers[i][r->index];
+        r->outBuffers[i][r->index] = 0.0f;
     }
 
-    for (int v = 0; v < r->numVoices; ++v)
+    if (++r->index >= r->bufSize)
     {
-        r->tickOutput[v] = tPitchShift_shiftToFreq(&r->ps[v], r->freq[v]);
+        for (int i = 0; i < r->numVoices; ++i)
+        {
+            r->shiftFunction(&r->ps[i], r->shiftValues[i], r->inBuffer, r->outBuffers[i]);
+        }
+        r->index = 0;
     }
-
-    return r->tickOutput;
+     
+    return r->output;
 }
 
-void tAutotune_setNumVoices(tAutotune* const rt, int numVoices)
+void tRetune_setMode (tRetune* const rt, int mode)
 {
-    _tAutotune* r = *rt;
+    _tRetune* r = *rt;
     
-    int bufSize = r->bufSize;
-    int frameSize = r->frameSize;
-    tMempool mempool = r->mempool;
-    
-    tAutotune_free(rt);
-    tAutotune_initToPool(rt, numVoices, bufSize, frameSize, &mempool);
+    if (mode > 0) r->shiftFunction = &tPitchShift_shiftTo;
+    else r->shiftFunction = &tPitchShift_shiftBy;
 }
 
-void tAutotune_setFreqs(tAutotune* const rt, float f)
+void tRetune_setPickiness (tRetune* const rt, float p)
 {
-    _tAutotune* r = *rt;
+    _tRetune* r = *rt;
     
-    for (int i = 0; i < r->numVoices; ++i)
-    {
-        r->freq[i] = f;
-    }
+    tDualPitchDetector_setPeriodicityThreshold(&r->dp, p);
 }
 
-void tAutotune_setFreq(tAutotune* const rt, float f, int voice)
+void tRetune_setNumVoices(tRetune* const rt, int numVoices)
 {
-    _tAutotune* r = *rt;
+    _tRetune* r = *rt;
     
-    r->freq[voice] = f;
-}
-
-void tAutotune_setTimeConstant(tAutotune* const rt, float tc)
-{
-    _tAutotune* r = *rt;
-    LEAF* leaf = r->mempool->leaf;
+    int bufSize = r->bufSize;
+    float minInputFreq = r->minInputFreq;
+    float maxInputFreq = r->maxInputFreq;
+    tMempool mempool = r->mempool;
     
-    r->timeConstant = tc;
-    r->radius = expf(-1000.0f * r->hopSize * leaf->invSampleRate / r->timeConstant);
+    tRetune_free(rt);
+    tRetune_initToPool(rt, minInputFreq, maxInputFreq, numVoices, bufSize, &mempool);
 }
 
-void tAutotune_setHopSize(tAutotune* const rt, int hs)
+void tRetune_tuneVoices(tRetune* const rt, float* t)
 {
-    _tAutotune* r = *rt;
+    _tRetune* r = *rt;
     
-    r->hopSize = hs;
-    tPeriodDetection_setHopSize(&r->pd, r->hopSize);
+    for (int i = 0; i < r->numVoices; ++i)
+    {
+        r->shiftValues[i] = t[i];
+    }
 }
 
-void tAutotune_setWindowSize(tAutotune* const rt, int ws)
+void tRetune_tuneVoice(tRetune* const rt, int voice, float t)
 {
-    _tAutotune* r = *rt;
+    _tRetune* r = *rt;
     
-    r->windowSize = ws;
-    tPeriodDetection_setWindowSize(&r->pd, r->windowSize);
+    r->shiftValues[voice] = t;
 }
 
-void tAutotune_setFidelityThreshold(tAutotune* const rt, float threshold)
+float tRetune_getInputFrequency (tRetune* const rt)
 {
-    _tAutotune* r = *rt;
-
-    tPeriodDetection_setFidelityThreshold(&r->pd, threshold);
-}
-
-void     tAutotune_setAlpha                (tAutotune* rt, float alpha)
-{
-    _tAutotune* r = *rt;
-    tPeriodDetection_setAlpha(&r->pd, alpha);
-}
-
-void     tAutotune_setTolerance            (tAutotune* rt, float tolerance)
-{
-    _tAutotune* r = *rt;
-    tPeriodDetection_setTolerance(&r->pd, tolerance);
-}
-
-float tAutotune_getInputPeriod(tAutotune* const rt)
-{
-    _tAutotune* r = *rt;
+    _tRetune* r = *rt;
     
-    return r->inputPeriod;
-}
-
-float tAutotune_getInputFreq(tAutotune* const rt)
-{
-    _tAutotune* r = *rt;
-    
-    return 1.0f/r->inputPeriod;
+    return tDualPitchDetector_getFrequency(&r->dp);
 }
 
 //============================================================================================================
--- a/leaf/Src/leaf-envelopes.c
+++ b/leaf/Src/leaf-envelopes.c
@@ -23,6 +23,7 @@
 
 #endif
 
+#if LEAF_INCLUDE_ADSR_TABLES
 // ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ Envelope ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ //
 void    tEnvelope_init(tEnvelope* const envlp, float attack, float decay, int loop, LEAF* const leaf)
 {
@@ -211,9 +212,9 @@
     
     return env->next;
 }
+#endif // LEAF_INCLUDE_ADSR_TABLES
 
-
-
+#if LEAF_INCLUDE_ADSR_TABLES
 /* ADSR */
 void    tADSR_init(tADSR* const adsrenv, float attack, float decay, float sustain, float release, LEAF* const leaf)
 {
@@ -482,7 +483,7 @@
 
     return adsr->next;
 }
-
+#endif // LEAF_INCLUDE_ADSR_TABLES
 
 
 
--- a/leaf/Src/leaf-filters.c
+++ b/leaf/Src/leaf-filters.c
@@ -900,6 +900,7 @@
     svf->a3 = svf->g * svf->a2;
 }
 
+#if LEAF_INCLUDE_FILTERTAN_TABLE
 // Efficient version of tSVF where frequency is set based on 12-bit integer input for lookup in tanh wavetable.
 void   tEfficientSVF_init(tEfficientSVF* const svff, SVFType type, uint16_t input, float Q, LEAF* const leaf)
 {
@@ -970,6 +971,7 @@
     svf->a2 = svf->g * svf->a1;
     svf->a3 = svf->g * svf->a2;
 }
+#endif // LEAF_INCLUDE_FILTERTAN_TABLE
 
 /* Highpass */
 void    tHighpass_init(tHighpass* const ft, float freq, LEAF* const leaf)
--- a/leaf/Src/leaf-math.c
+++ b/leaf/Src/leaf-math.c
@@ -827,11 +827,9 @@
     return fmax(fmin(a, b), fmin(fmax(a, b), c));
 }
 
+#if LEAF_INCLUDE_MINBLEP_TABLES
 /// MINBLEPS
-
 // https://github.com/MrBlueXav/Dekrispator_v2 blepvco.c
-
-
 void place_step_dd(float *buffer, int index, float phase, float w, float scale)
 {
     float r;
@@ -874,3 +872,4 @@
         index++;
     }
 }
+#endif // LEAF_INCLUDE_MINBLEP_TABLES
--- a/leaf/Src/leaf-mempool.c
+++ b/leaf/Src/leaf-mempool.c
@@ -249,8 +249,7 @@
     
     pool->usize += pool->leaf->header_size + node_to_alloc->size;
     // Format the new pool
-    char* new_pool = (char*)node_to_alloc->pool;
-    for (int i = 0; i < node_to_alloc->size; i++) new_pool[i] = 0;
+    for (int i = 0; i < node_to_alloc->size; i++) node_to_alloc->pool[i] = 0;
     // Return the pool of the allocated node;
     return node_to_alloc->pool;
 }
@@ -410,7 +409,7 @@
 
 void tMempool_init(tMempool* const mp, char* memory, size_t size, LEAF* const leaf)
 {
-    tMempool_initToPool(mp, memory, size, &leaf->mempool, leaf);
+    tMempool_initToPool(mp, memory, size, &leaf->mempool);
 }
 
 void tMempool_free(tMempool* const mp)
@@ -420,7 +419,7 @@
     mpool_free((char*)m, m->mempool);
 }
 
-void    tMempool_initToPool     (tMempool* const mp, char* memory, size_t size, tMempool* const mem, LEAF* const leaf)
+void    tMempool_initToPool     (tMempool* const mp, char* memory, size_t size, tMempool* const mem)
 {
     _tMempool* mm = *mem;
     _tMempool* m = *mp = (_tMempool*) mpool_alloc(sizeof(_tMempool), mm);
--- a/leaf/Src/leaf-oscillators.c
+++ b/leaf/Src/leaf-oscillators.c
@@ -76,7 +76,6 @@
     samp1 = c->waveTable[intPart];
     
     return (samp0 + (samp1 - samp0) * fracPart);
-    
 }
 
 void     tTableSampleRateChanged(tTable* const cy)
@@ -87,6 +86,7 @@
     c->inc = c->freq * leaf->invSampleRate;
 }
 
+#if LEAF_INCLUDE_SINE_TABLE
 // Cycle
 void    tCycle_init(tCycle* const cy, LEAF* const leaf)
 {
@@ -156,7 +156,9 @@
     
     c->inc = c->freq * leaf->invSampleRate;
 }
+#endif // LEAF_INCLUDE_SINE_TABLE
 
+#if LEAF_INCLUDE_TRIANGLE_TABLE
 //========================================================================
 /* Triangle */
 void   tTriangle_init(tTriangle* const cy, LEAF* const leaf)
@@ -227,7 +229,9 @@
     
     c->inc = c->freq * leaf->invSampleRate;
 }
+#endif // LEAF_INCLUDE_TRIANGLE_TABLE
 
+#if LEAF_INCLUDE_SQUARE_TABLE
 //========================================================================
 /* Square */
 void   tSquare_init(tSquare* const cy, LEAF* const leaf)
@@ -297,7 +301,9 @@
     
     c->inc = c->freq * leaf->invSampleRate;
 }
+#endif // LEAF_INCLUDE_SQUARE_TABLE
 
+#if LEAF_INCLUDE_SAWTOOTH_TABLE
 //=====================================================================
 // Sawtooth
 void    tSawtooth_init(tSawtooth* const cy, LEAF* const leaf)
@@ -367,6 +373,7 @@
     
     c->inc = c->freq * leaf->invSampleRate;
 }
+#endif // LEAF_INCLUDE_SAWTOOTH_TABLE
 
 //==============================================================================
 
--- a/leaf/Src/leaf-tables.c
+++ b/leaf/Src/leaf-tables.c
@@ -4,6 +4,7 @@
 
 #include "..\Inc\leaf-tables.h"
 #include "..\Inc\leaf-global.h"
+
 #else
 
 #include "../Inc/leaf-tables.h"
@@ -11,9 +12,9 @@
 
 #endif
 
-
 #include "stdlib.h"
 
+#if LEAF_INCLUDE_OVERSAMPLER_TABLES
 const float __leaf_table_fir2XLow[32] = { 0.001067048115027622,    -0.004557728776555209,    -0.016711590887520535,    -0.021065500881657994,    -0.003828695019946828,    0.01865935152799254,    0.012036365576553658,    -0.02064070362810112,    -0.02682399333687091,    0.017862623081258543,    0.0492716766870816,    -0.004310232755957251,    -0.08571879958189704,    -0.03828300159135686,    0.18420501161808442,    0.4054061613074031,    0.4054061613074031,    0.18420501161808442,    -0.03828300159135686,    -0.08571879958189704,    -0.004310232755957251,    0.0492716766870816,    0.017862623081258543,    -0.02682399333687091,    -0.02064070362810112,    0.012036365576553658,    0.01865935152799254,    -0.003828695019946828,    -0.021065500881657994,    -0.016711590887520535,    -0.004557728776555209,    0.001067048115027622
     
 };
@@ -45,14 +46,13 @@
    -0.0035726927213363046,    -0.004307677839041472,    -0.00451398893736866,    -0.004203029219555798,    -0.0034429894732297774,    -0.002347699681593795,    -0.0010608870493178752,    0.0002616176696267551,    0.0014701293295941087,    0.0024373280210738995,    0.0030709922507173265,    0.003322096376141488,    0.00318733017834542,    0.002706696800527712,    0.001956049351551786,    0.0010364584424907685,    0.00006118480472750677,    -0.0008577023023227786,    -0.0016217376891380843,    -0.00215621955374809,    -0.0024168530933362325,    -0.002392827139552557,    -0.002105611566700304,    -0.0016045955886596882,    -0.0009595058667715721,    -0.0002514846038907312,    0.0004369297346610886,    0.0010309092850789008,    0.0014712649629561752,    0.0017198572703654494,    0.0017624573232133487,    0.0016085750487669262,    0.0012888238057625968,    0.0008499567444557006,    0.0003485912201162041,    -0.00015580100244720835,    -0.000607656728473499,    -0.0009612078105002279,    -0.0011847927602402282,    -0.0012633390417589486,    -0.0011987843551975912,    -0.0010085916592065419,    -0.0007226903878816747,    -0.0003792242746719516,    -0.00001975662025403667,    0.0003155390021514345,    0.0005921472961030223,    0.0007845404678866458,    0.0008782421413312541,    0.0008705060394986916,    0.0007697197860148682,    0.0005935643814352129,    0.0003663883172395964,    0.00011608199926386939,    -0.0001291740152058233,    -0.00034391453642163835,    -0.0005078006712943802,    -0.0006072812580573203,    -0.0006363992327126103,    -0.0005966792410792791,    -0.0004962768841556523,    -0.00034851615605358005,    -0.00017002451555728345,    0.000021269501878054377,    0.00020804636935322743,    0.00037520607336543075,    0.0005111129662557197,    0.0006082918945412483,    0.0006636425833116022,    0.0006780841482803052,    0.0006561179367621888,    0.0006044238440905041,    0.0005319258847527823,    0.00044625388761023913,    0.0003584099608999308,    0.0002696485066015727,    0.00019849261073490482,    0.00011952623149469952,    0.00009875809063575779,    0.00003151783634577697
 };
 const float __leaf_table_fir16XHigh[512] = {    -0.00004017374344384353,    -0.00003227078919691645,    -0.000044582740239682106,    -0.000059425359817699515,    -0.00007697752128893082,    -0.00009737601811785888,    -0.0001207053885646365,    -0.0001469875004658367,    -0.00017617089070723918,    -0.00020812277783425573,    -0.00024262055862920822,    -0.0002793450290387454,    -0.00031787504789909166,    -0.0003576848687093178,    -0.00039814402944626006,    -0.0004385193477821247,    -0.0004779801054675081,    -0.0005156064224889276,    -0.0005503998661674507,    -0.0005812986840141297,    -0.0006071960902571958,    -0.0006269579055230081,    -0.0006394482697590037,    -0.0006435494696099878,    -0.0006381976745823161,    -0.0006223990810339609,    -0.0005952724709135361,    -0.0005560644539084499,    -0.0005041884015231086,    -0.00043924670962451254,    -0.0003610522906867853,    -0.00026965679983683306,    -0.0001653614058088566,    -0.00004873297752271577,    0.00007938716594862651,    0.0002178851248768366,    0.0003653745221459382,    0.0005202048736767491,    0.0006804822788501571,    0.000844091795557933,    0.0010087245432410705,    0.001171916285444633,    0.0013310914106543618,    0.0014836070887652329,    0.0016268044135357975,    0.0017580661564216042,    0.0018748692581644735,    0.0019748436871571654,    0.002055827323171664,    0.0021159244704237914,    0.002153555697975211,    0.002167506085967786,    0.0021569688626138744,    0.0021215783384772617,    0.002061435847387089,    0.0019771222276341416,    0.0018697088674027409,    0.0017407508215061904,    0.0015922694449783334,    0.0014267282165683897,    0.0012469961488860717,    0.001056296589672521,    0.0008581466323761644,    0.0006562897137528959,    0.0004546180492460159,    0.00025709020784146465,    0.00006764748603812152,    -0.00010987539810307727,    -0.00027183788464963423,    -0.0004148795460643277,    -0.0005360117384990369,    -0.0006326924816840852,    -0.0007028976477190042,    -0.0007451789241688792,    -0.0007587025992854616,    -0.00074329154026803,    -0.00069943732077003,    -0.0006283153390612298,    -0.0005317674541381928,    -0.0004122736350806254,    -0.0002728965175373041,    -0.00011721898154916056,    0.000050727732077616854,    0.00022654511040849531,    0.0004055654685261572,    0.0005829725151929097,    0.0007539299891718014,    0.0009136968081628693,    0.001057727366040496,    0.0011817838315511687,    0.0012820768752281682,    0.0013553936088779655,    0.0013991567634035874,    0.0014114626691980761,    0.0013911994521601603,    0.001338158623469115,    0.0012529312652788224,    0.0011368782078168052,    0.0009924227419316402,    0.0008225367782712132,    0.0006311126153653432,    0.000422596130820185,    0.00020202566973633374,    -0.000025140126274052846,    -0.00025314012889659734,    -0.00047605825978268214,    -0.0006879757889763613,    -0.0008831265836660278,    -0.001056052961049124,    -0.0012017570118505278,    -0.0013158443800074546,    -0.0013946550179738235,    -0.00143537714856422,    -0.0014361430413177665,    -0.0013961025273104373,    -0.0013154698934900741,    -0.0011955448624625515,    -0.001038705445344848,    -0.000848370211905452,    -0.0006289357238567322,    -0.00038567726087640876,    -0.00012464084542349136,    0.00014751424024790855,    0.00042365555592108265,    0.000696381707633601,    0.0009581911739190034,    0.0012016945125591883,    0.0014198129038021875,    0.0016059677163340854,    0.0017542822302381216,    0.0018597489437935104,    0.0019183843680031518,    0.001927370582069373,    0.0018851569558006424,    0.0017915316423764106,    0.0016476681649469273,    0.001456129721890939,    0.0012208322294896099,    0.0009469770920907817,    0.0006409478559993642,    0.0003101659717946291,    -0.00003708137047780295,    -0.0003918367361265021,    -0.0007446984520565823,    -0.0010860619549777095,    -0.0014063764577860907,    -0.001696397687712767,    -0.0019474488265779002,    -0.002151669227747982,    -0.002302249012563522,    -0.0023936395957784356,    -0.0024217386080201218,    -0.002
\ No newline at end of file
-28976477190042,    -0.0007451789241688792,    -0.0007587025992854616,    -0.00074329154026803,    -0.00069943732077003,    -0.0006283153390612298,    -0.0005317674541381928,    -0.0004122736350806254,    -0.0002728965175373041,    -0.00011721898154916056,    0.000050727732077616854,    0.00022654511040849531,    0.0004055654685261572,    0.0005829725151929097,    0.0007539299891718014,    0.0009136968081628693,    0.001057727366040496,    0.0011817838315511687,    0.0012820768752281682,    0.0013553936088779655,    0.0013991567634035874,    0.0014114626691980761,    0.0013911994521601603,    0.001338158623469115,    0.0012529312652788224,    0.0011368782078168052,    0.0009924227419316402,    0.0008225367782712132,    0.0006311126153653432,    0.000422596130820185,    0.00020202566973633374,    -0.000025140126274052846,    -0.00025314012889659734,    -0.00047605825978268214,    -0.0006879757889763613,    -0.0008831265836660278,    -0.001056052961049124,    -0.0012017570118505278,    -0.0013158443800074546,    -0.0013946550179738235,    -0.00143537714856422,    -0.0014361430413177665,    -0.0013961025273104373,    -0.0013154698934900741,    -0.0011955448624625515,    -0.001038705445344848,    -0.000848370211905452,    -0.0006289357238567322,    -0.00038567726087640876,    -0.00012464084542349136,    0.00014751424024790855,    0.00042365555592108265,    0.000696381707633601,    0.0009581911739190034,    0.0012016945125591883,    0.0014198129038021875,    0.0016059677163340854,    0.0017542822302381216,    0.0018597489437935104,    0.0019183843680031518,    0.001927370582069373,    0.0018851569558006424,    0.0017915316423764106,    0.0016476681649469273,    0.001456129721890939,    0.0012208322294896099,    0.0009469770920907817,    0.0006409478559993642,    0.0003101659717946291,    -0.00003708137047780295,    -0.0003918367361265021,    -0.0007446984520565823,    -0.0010860619549777095,    -0.0014063764577860907,    -0.001696397687712767,    -0.0019474488265779002,    -0.002151669227747982,    -0.002302249012563522,    -0.0023936395957784356,    -0.0024217386080201218,    -0.002384046464152241,    -0.0022797724899456247,    -0.0021099040224506474,    -0.0018772300452061593,    -0.001586318069799396,    -0.0012434422926464283,    -0.0008564627353582099,    -0.0004346583284416864,    0.000011483258960353713,    0.0004705125435918996,    0.0009302983176219571,    0.0013783347882871506,    0.0018020649278141442,    0.002189218072448032,    0.002528151228372692,    0.0028081778185230755,    0.0030198855690580883,    0.0031554218226391927,    0.0032087539967944043,    0.003175891861997494,    0.003055052047477484,    0.0028467769761391067,    0.0025539826540715814,    0.0021819611806385975,    0.00173831289146853,    0.0012328190076443134,    0.0006772405314859651,    0.0000850660373523537,    -0.0005287869617277397,    -0.001148321137491392,    -0.0017568578913237647,    -0.002337465469832778,    -0.0028733927792042916,    -0.0033485134261990474,    -0.0037477874636434095,    -0.004057705229541436,    -0.0042666789949867895,    -0.004365411194693107,    -0.004347246153946479,    -0.0042084293493284755,    -0.003948276264434998,    -0.0035693427342337308,    -0.003077468630328199,    -0.002481682761858642,    -0.0017941893541420268,    -0.0010300505400156208,    -0.00020699101191350578,    0.0006550244158311212,    0.0015341931983222652,    0.002407385154286287,    0.0032506853111441327,    0.004039981949981368,    0.004751579445675196,    0.0053628234864281235,    0.0058527242916193226,    0.006202559568610708,    0.006396443797782178,    0.006421849969755556,    0.006270068071543294,    0.005936587372391708,    0.0054213915962429745,    0.004729156264045173,    0.0038693427245538904,    0.0028561826064778697,    0.0017085458613360902,    0.0004497040612160084,    -0.0008930343940838381,    -0.002288760766598498,    -0.0037035572532650445,    -0.005101096327651239,    -0.006443406350064504,    -0.007691613708744422,    -0.008806783345605503,    -0.009750779708566895,    -0.010487104621962649,    -0.010981761556592558,    -0.0
\ No newline at end of file
 976477190042,    -0.0007451789241688792,    -0.0007587025992854616,    -0.00074329154026803,    -0.00069943732077003,    -0.0006283153390612298,    -0.0005317674541381928,    -0.0004122736350806254,    -0.0002728965175373041,    -0.00011721898154916056,    0.000050727732077616854,    0.00022654511040849531,    0.0004055654685261572,    0.0005829725151929097,    0.0007539299891718014,    0.0009136968081628693,    0.001057727366040496,    0.0011817838315511687,    0.0012820768752281682,    0.0013553936088779655,    0.0013991567634035874,    0.0014114626691980761,    0.0013911994521601603,    0.001338158623469115,    0.0012529312652788224,    0.0011368782078168052,    0.0009924227419316402,    0.0008225367782712132,    0.0006311126153653432,    0.000422596130820185,    0.00020202566973633374,    -0.000025140126274052846,    -0.00025314012889659734,    -0.00047605825978268214,    -0.0006879757889763613,    -0.0008831265836660278,    -0.001056052961049124,    -0.0012017570118505278,    -0.0013158443800074546,    -0.0013946550179738235,    -0.00143537714856422,    -0.0014361430413177665,    -0.0013961025273104373,    -0.0013154698934900741,    -0.0011955448624625515,    -0.001038705445344848,    -0.000848370211905452,    -0.0006289357238567322,    -0.00038567726087640876,    -0.00012464084542349136,    0.00014751424024790855,    0.00042365555592108265,    0.000696381707633601,    0.0009581911739190034,    0.0012016945125591883,    0.0014198129038021875,    0.0016059677163340854,    0.0017542822302381216,    0.0018597489437935104,    0.0019183843680031518,    0.001927370582069373,    0.0018851569558006424,    0.0017915316423764106,    0.0016476681649469273,    0.001456129721890939,    0.0012208322294896099,    0.0009469770920907817,    0.0006409478559993642,    0.0003101659717946291,    -0.00003708137047780295,    -0.0003918367361265021,    -0.0007446984520565823,    -0.0010860619549777095,    -0.0014063764577860907,    -0.001696397687712767,    -0.0019474488265779002,    -0.002151669227747982,    -0.002302249012563522,    -0.0023936395957784356,    -0.0024217386080201218,    -0.002384046464152241,    -0.0022797724899456247,    -0.0021099040224506474,    -0.0018772300452061593,    -0.001586318069799396,    -0.0012434422926464283,    -0.0008564627353582099,    -0.0004346583284416864,    0.000011483258960353713,    0.0004705125435918996,    0.0009302983176219571,    0.0013783347882871506,    0.0018020649278141442,    0.002189218072448032,    0.002528151228372692,    0.0028081778185230755,    0.0030198855690580883,    0.0031554218226391927,    0.0032087539967944043,    0.003175891861997494,    0.003055052047477484,    0.0028467769761391067,    0.0025539826540715814,    0.0021819611806385975,    0.00173831289146853,    0.0012328190076443134,    0.0006772405314859651,    0.0000850660373523537,    -0.0005287869617277397,    -0.001148321137491392,    -0.0017568578913237647,    -0.002337465469832778,    -0.0028733927792042916,    -0.0033485134261990474,    -0.0037477874636434095,    -0.004057705229541436,    -0.0042666789949867895,    -0.004365411194693107,    -0.004347246153946479,    -0.0042084293493284755,    -0.003948276264434998,    -0.0035693427342337308,    -0.003077468630328199,    -0.002481682761858642,    -0.0017941893541420268,    -0.0010300505400156208,    -0.00020699101191350578,    0.0006550244158311212,    0.0015341931983222652,    0.002407385154286287,    0.0032506853111441327,    0.004039981949981368,    0.004751579445675196,    0.0053628234864281235,    0.0058527242916193226,    0.006202559568610708,    0.006396443797782178,    0.006421849969755556,    0.006270068071543294,    0.005936587372391708,    0.0054213915962429745,    0.004729156264045173,    0.0038693427245538904,    0.0028561826064778697,    0.0017085458613360902,    0.0004497040612160084,    -0.0008930343940838381,    -0.002288760766598498,    -0.0037035572532650445,    -0.005101096327651239,    -0.006443406350064504,    -0.007691613708744422,    -0.008806783345605503,    -0.009750779708566895,    -0.010487104621962649,    -0.010981761556592558,    -0.011
\ No newline at end of file
 };
 
 const float __leaf_table_fir32XHigh[512] = {    0.00001695726883388158,    0.000007675466747345142,    0.000009369969074343828,    0.000011279085806814155,    0.000013415806582636418,    0.00001579269222570207,    0.000018421887123570193,    0.00002131472780344219,    0.000024481596821410856,    0.000027931521966672674,    0.00003167253546774698,    0.00003571156802204514,    0.00004005385180859527,    0.00004470260388316558,    0.00004965901316017587,    0.00005492204008152043,    0.00006048845305842843,    0.00006635289665744708,    0.00007250665288501187,    0.0000789384885513108,    0.00008563367774264342,    0.00009257537368625661,    0.00009974252621593992,    0.00010711124658254552,    0.00011465337570751053,    0.00012233800287448705,    0.0001301305708291957,    0.00013799197926318244,    0.00014587929227876596,    0.00015374657372226684,    0.000161543746522965,    0.0001692168951984779,    0.00017670780599526637,    0.0001839550739841348,    0.00019089427588832468,    0.00019745677767765902,    0.00020357062514912954,    0.00020916210971675997,    0.0002141545274069432,    0.00021846768000518762,    0.00022202071352577454,    0.00022473075934779818,    0.00022651220405928228,    0.00022728022159501112,    0.0002269491553453425,    0.00022543136577234978,    0.00022264296187547415,    0.0002184968451898252,    0.00021291103136150344,    0.00020580302601570826,    0.00019709428929377538,    0.00018670887176183611,    0.00017457550213741742,    0.00016062706678436397,    0.0001448013951907719,    0.0001270421247034733,    0.00010729940118257597,    0.00008553038364340326,    0.00006169965119086659,    0.00003577991793585758,    0.000007752990690551504,    -0.000022389783957090243,    -0.00005464753929697829,    -0.00008900834335751579,    -0.0001254499161703673,    -0.00016393632811230729,    -0.0002044234554405178,    -0.00024684930385593585,    -0.000291146274450184,    -0.0003372278537321366,    -0.00038499799259658716,    -0.00043434821843157495,    -0.0004851539797413716,    -0.000537279458928773,    -0.0005905762825387684,    -0.0006448805823763886,    -0.0007000164290861944,    -0.0007557967574505448,    -0.0008120214850938284,    -0.0008684784362018723,    -0.000924945795118327,    -0.0009811922513964621,    -0.0010369764412132298,    -0.0010920476659586364,    -0.0011461469777671403,    -0.0011990092591572569,    -0.0012503626824092186,    -0.001299930348337511,    -0.0013474327014007098,    -0.0013925895075579725,    -0.0014351200205514354,    -0.0014747442974922531,    -0.0015111829899403478,    -0.0015441601544571469,    -0.0015734040663474662,    -0.0015986504297413274,    -0.0016196438588602622,    -0.0016361410571864347,    -0.0016479110521030553,    -0.0016547353303458935,    -0.0016564077630374632,    -0.0016527363435263026,    -0.0016435483225404998,    -0.0016286956518505767,    -0.0016080553748913375,    -0.0015815237521207347,    -0.0015490117157615478,    -0.0015104528831698094,    -0.001465823165002548,    -0.0014151394219170251,    -0.001358416974565312,    -0.0012956736049528927,    -0.0012270686956067616,    -0.001152656073186285,    -0.0010726190880063075,    -0.0009871267066080157,    -0.0008963952696138223,    -0.0008006703533508123,    -0.0007002299686741377,    -0.0005953836139186328,    -0.0004864723381871633,    -0.0003738679720682553,    -0.00025797228061734796,    -0.00013921599931306062,    -0.000018057446410729332,    0.00010501885598494471,    0.00022950336047164354,    0.00035486342787289485,    0.00048054572124056215,    0.0006059774135387564,    0.0007305691337782367,    0.0008537161333655127,    0.0009748030963864794,    0.0010932046990955392,    0.0012082904750566619,    0.0013194249851955161,    0.0014259733376771368,    0.001527303743896754,    0.0016227897956312704,    0.001711814456379326,    0.0017937737205012431,    0.0018680795987737412,    0.0019341641568400244,    0.0019914815935822066,    0.002039512595508008,    0.0020777684004774366,    0.002105792845115274,    0.002123165845077641,    0.0021295078285898787,    0.002124481676328226,    0.0021077949476114846,
\ No newline at end of file
+ 0.0012820768752281682,    0.0013553936088779655,    0.0013991567634035874,    0.0014114626691980761,    0.0013911994521601603,    0.001338158623469115,    0.0012529312652788224,    0.0011368782078168052,    0.0009924227419316402,    0.0008225367782712132,    0.0006311126153653432,    0.000422596130820185,    0.00020202566973633374,    -0.000025140126274052846,    -0.00025314012889659734,    -0.00047605825978268214,    -0.0006879757889763613,    -0.0008831265836660278,    -0.001056052961049124,    -0.0012017570118505278,    -0.0013158443800074546,    -0.0013946550179738235,    -0.00143537714856422,    -0.0014361430413177665,    -0.0013961025273104373,    -0.0013154698934900741,    -0.0011955448624625515,    -0.001038705445344848,    -0.000848370211905452,    -0.0006289357238567322,    -0.00038567726087640876,    -0.00012464084542349136,    0.00014751424024790855,    0.00042365555592108265,    0.000696381707633601,    0.0009581911739190034,    0.0012016945125591883,    0.0014198129038021875,    0.0016059677163340854,    0.0017542822302381216,    0.0018597489437935104,    0.0019183843680031518,    0.001927370582069373,    0.0018851569558006424,    0.0017915316423764106,    0.0016476681649469273,    0.001456129721890939,    0.0012208322294896099,    0.0009469770920907817,    0.0006409478559993642,    0.0003101659717946291,    -0.00003708137047780295,    -0.0003918367361265021,    -0.0007446984520565823,    -0.0010860619549777095,    -0.0014063764577860907,    -0.001696397687712767,    -0.0019474488265779002,    -0.002151669227747982,    -0.002302249012563522,    -0.0023936395957784356,    -0.0024217386080201218,    -0.002384046464152241,    -0.0022797724899456247,    -0.0021099040224506474,    -0.0018772300452061593,    -0.001586318069799396,    -0.0012434422926464283,    -0.0008564627353582099,    -0.0004346583284416864,    0.000011483258960353713,    0.0004705125435918996,    0.0009302983176219571,    0.0013783347882871506,    0.0018020649278141442,    0.002189218072448032,    0.002528151228372692,    0.0028081778185230755,    0.0030198855690580883,    0.0031554218226391927,    0.0032087539967944043,    0.003175891861997494,    0.003055052047477484,    0.0028467769761391067,    0.0025539826540715814,    0.0021819611806385975,    0.00173831289146853,    0.0012328190076443134,    0.0006772405314859651,    0.0000850660373523537,    -0.0005287869617277397,    -0.001148321137491392,    -0.0017568578913237647,    -0.002337465469832778,    -0.0028733927792042916,    -0.0033485134261990474,    -0.0037477874636434095,    -0.004057705229541436,    -0.0042666789949867895,    -0.004365411194693107,    -0.004347246153946479,    -0.0042084293493284755,    -0.003948276264434998,    -0.0035693427342337308,    -0.003077468630328199,    -0.002481682761858642,    -0.0017941893541420268,    -0.0010300505400156208,    -0.00020699101191350578,    0.0006550244158311212,    0.0015341931983222652,    0.002407385154286287,    0.0032506853111441327,    0.004039981949981368,    0.004751579445675196,    0.0053628234864281235,    0.0058527242916193226,    0.006202559568610708,    0.006396443797782178,    0.006421849969755556,    0.006270068071543294,    0.005936587372391708,    0.0054213915962429745,    0.004729156264045173,    0.0038693427245538904,    0.0028561826064778697,    0.0017085458613360902,    0.0004497040612160084,    -0.0008930343940838381,    -0.002288760766598498,    -0.0037035572532650445,    -0.005101096327651239,    -0.006443406350064504,    -0.007691613708744422,    -0.008806783345605503,    -0.009750779708566895,    -0.010487104621962649,    -0.010981761556592558,    -0.011204077521465777,    -0.01112745993022714,    -0.010730106123767362,    -0.009995629398181848,    -0.008913569832214968,    -0.007479799008370572,    -0.005696809921316997,    -0.0035738648415050284,    -0.0011270001382152866,    0.001621100228821588,    0.004641370935060121,    0.00789877655149075,    0.0113528526524623,    0.014958365872953214,    0.018666074072644187,    0.02242359380770534,    0.026176337546106928,    0.029868513059052665,    0.03344415058816
\ No newline at end of file
 .0012820768752281682,    0.0013553936088779655,    0.0013991567634035874,    0.0014114626691980761,    0.0013911994521601603,    0.001338158623469115,    0.0012529312652788224,    0.0011368782078168052,    0.0009924227419316402,    0.0008225367782712132,    0.0006311126153653432,    0.000422596130820185,    0.00020202566973633374,    -0.000025140126274052846,    -0.00025314012889659734,    -0.00047605825978268214,    -0.0006879757889763613,    -0.0008831265836660278,    -0.001056052961049124,    -0.0012017570118505278,    -0.0013158443800074546,    -0.0013946550179738235,    -0.00143537714856422,    -0.0014361430413177665,    -0.0013961025273104373,    -0.0013154698934900741,    -0.0011955448624625515,    -0.001038705445344848,    -0.000848370211905452,    -0.0006289357238567322,    -0.00038567726087640876,    -0.00012464084542349136,    0.00014751424024790855,    0.00042365555592108265,    0.000696381707633601,    0.0009581911739190034,    0.0012016945125591883,    0.0014198129038021875,    0.0016059677163340854,    0.0017542822302381216,    0.0018597489437935104,    0.0019183843680031518,    0.001927370582069373,    0.0018851569558006424,    0.0017915316423764106,    0.0016476681649469273,    0.001456129721890939,    0.0012208322294896099,    0.0009469770920907817,    0.0006409478559993642,    0.0003101659717946291,    -0.00003708137047780295,    -0.0003918367361265021,    -0.0007446984520565823,    -0.0010860619549777095,    -0.0014063764577860907,    -0.001696397687712767,    -0.0019474488265779002,    -0.002151669227747982,    -0.002302249012563522,    -0.0023936395957784356,    -0.0024217386080201218,    -0.002384046464152241,    -0.0022797724899456247,    -0.0021099040224506474,    -0.0018772300452061593,    -0.001586318069799396,    -0.0012434422926464283,    -0.0008564627353582099,    -0.0004346583284416864,    0.000011483258960353713,    0.0004705125435918996,    0.0009302983176219571,    0.0013783347882871506,    0.0018020649278141442,    0.002189218072448032,    0.002528151228372692,    0.0028081778185230755,    0.0030198855690580883,    0.0031554218226391927,    0.0032087539967944043,    0.003175891861997494,    0.003055052047477484,    0.0028467769761391067,    0.0025539826540715814,    0.0021819611806385975,    0.00173831289146853,    0.0012328190076443134,    0.0006772405314859651,    0.0000850660373523537,    -0.0005287869617277397,    -0.001148321137491392,    -0.0017568578913237647,    -0.002337465469832778,    -0.0028733927792042916,    -0.0033485134261990474,    -0.0037477874636434095,    -0.004057705229541436,    -0.0042666789949867895,    -0.004365411194693107,    -0.004347246153946479,    -0.0042084293493284755,    -0.003948276264434998,    -0.0035693427342337308,    -0.003077468630328199,    -0.002481682761858642,    -0.0017941893541420268,    -0.0010300505400156208,    -0.00020699101191350578,    0.0006550244158311212,    0.0015341931983222652,    0.002407385154286287,    0.0032506853111441327,    0.004039981949981368,    0.004751579445675196,    0.0053628234864281235,    0.0058527242916193226,    0.006202559568610708,    0.006396443797782178,    0.006421849969755556,    0.006270068071543294,    0.005936587372391708,    0.0054213915962429745,    0.004729156264045173,    0.0038693427245538904,    0.0028561826064778697,    0.0017085458613360902,    0.0004497040612160084,    -0.0008930343940838381,    -0.002288760766598498,    -0.0037035572532650445,    -0.005101096327651239,    -0.006443406350064504,    -0.007691613708744422,    -0.008806783345605503,    -0.009750779708566895,    -0.010487104621962649,    -0.010981761556592558,    -0.011204077521465777,    -0.01112745993022714,    -0.010730106123767362,    -0.009995629398181848,    -0.008913569832214968,    -0.007479799008370572,    -0.005696809921316997,    -0.0035738648415050284,    -0.0011270001382152866,    0.001621100228821588,    0.004641370935060121,    0.00789877655149075,    0.0113528526524623,    0.014958365872953214,    0.018666074072644187,    0.02242359380770534,    0.026176337546106928,    0.029868513059052665,    0.0334441505881633
\ No newline at end of file
-012820768752281682,    0.0013553936088779655,    0.0013991567634035874,    0.0014114626691980761,    0.0013911994521601603,    0.001338158623469115,    0.0012529312652788224,    0.0011368782078168052,    0.0009924227419316402,    0.0008225367782712132,    0.0006311126153653432,    0.000422596130820185,    0.00020202566973633374,    -0.000025140126274052846,    -0.00025314012889659734,    -0.00047605825978268214,    -0.0006879757889763613,    -0.0008831265836660278,    -0.001056052961049124,    -0.0012017570118505278,    -0.0013158443800074546,    -0.0013946550179738235,    -0.00143537714856422,    -0.0014361430413177665,    -0.0013961025273104373,    -0.0013154698934900741,    -0.0011955448624625515,    -0.001038705445344848,    -0.000848370211905452,    -0.0006289357238567322,    -0.00038567726087640876,    -0.00012464084542349136,    0.00014751424024790855,    0.00042365555592108265,    0.000696381707633601,    0.0009581911739190034,    0.0012016945125591883,    0.0014198129038021875,    0.0016059677163340854,    0.0017542822302381216,    0.0018597489437935104,    0.0019183843680031518,    0.001927370582069373,    0.0018851569558006424,    0.0017915316423764106,    0.0016476681649469273,    0.001456129721890939,    0.0012208322294896099,    0.0009469770920907817,    0.0006409478559993642,    0.0003101659717946291,    -0.00003708137047780295,    -0.0003918367361265021,    -0.0007446984520565823,    -0.0010860619549777095,    -0.0014063764577860907,    -0.001696397687712767,    -0.0019474488265779002,    -0.002151669227747982,    -0.002302249012563522,    -0.0023936395957784356,    -0.0024217386080201218,    -0.002384046464152241,    -0.0022797724899456247,    -0.0021099040224506474,    -0.0018772300452061593,    -0.001586318069799396,    -0.0012434422926464283,    -0.0008564627353582099,    -0.0004346583284416864,    0.000011483258960353713,    0.0004705125435918996,    0.0009302983176219571,    0.0013783347882871506,    0.0018020649278141442,    0.002189218072448032,    0.002528151228372692,    0.0028081778185230755,    0.0030198855690580883,    0.0031554218226391927,    0.0032087539967944043,    0.003175891861997494,    0.003055052047477484,    0.0028467769761391067,    0.0025539826540715814,    0.0021819611806385975,    0.00173831289146853,    0.0012328190076443134,    0.0006772405314859651,    0.0000850660373523537,    -0.0005287869617277397,    -0.001148321137491392,    -0.0017568578913237647,    -0.002337465469832778,    -0.0028733927792042916,    -0.0033485134261990474,    -0.0037477874636434095,    -0.004057705229541436,    -0.0042666789949867895,    -0.004365411194693107,    -0.004347246153946479,    -0.0042084293493284755,    -0.003948276264434998,    -0.0035693427342337308,    -0.003077468630328199,    -0.002481682761858642,    -0.0017941893541420268,    -0.0010300505400156208,    -0.00020699101191350578,    0.0006550244158311212,    0.0015341931983222652,    0.002407385154286287,    0.0032506853111441327,    0.004039981949981368,    0.004751579445675196,    0.0053628234864281235,    0.0058527242916193226,    0.006202559568610708,    0.006396443797782178,    0.006421849969755556,    0.006270068071543294,    0.005936587372391708,    0.0054213915962429745,    0.004729156264045173,    0.0038693427245538904,    0.0028561826064778697,    0.0017085458613360902,    0.0004497040612160084,    -0.0008930343940838381,    -0.002288760766598498,    -0.0037035572532650445,    -0.005101096327651239,    -0.006443406350064504,    -0.007691613708744422,    -0.008806783345605503,    -0.009750779708566895,    -0.010487104621962649,    -0.010981761556592558,    -0.011204077521465777,    -0.01112745993022714,    -0.010730106123767362,    -0.009995629398181848,    -0.008913569832214968,    -0.007479799008370572,    -0.005696809921316997,    -0.0035738648415050284,    -0.0011270001382152866,    0.001621100228821588,    0.004641370935060121,    0.00789877655149075,    0.0113528526524623,    0.014958365872953214,    0.018666074072644187,    0.02242359380770534,    0.026176337546106928,    0.029868513059052665,    0.03344415058816331,
\ No newline at end of file
-};
+655,    0.0013991567634035874,    0.0014114626691980761,    0.0013911994521601603,    0.001338158623469115,    0.0012529312652788224,    0.0011368782078168052,    0.0009924227419316402,    0.0008225367782712132,    0.0006311126153653432,    0.000422596130820185,    0.00020202566973633374,    -0.000025140126274052846,    -0.00025314012889659734,    -0.00047605825978268214,    -0.0006879757889763613,    -0.0008831265836660278,    -0.001056052961049124,    -0.0012017570118505278,    -0.0013158443800074546,    -0.0013946550179738235,    -0.00143537714856422,    -0.0014361430413177665,    -0.0013961025273104373,    -0.0013154698934900741,    -0.0011955448624625515,    -0.001038705445344848,    -0.000848370211905452,    -0.0006289357238567322,    -0.00038567726087640876,    -0.00012464084542349136,    0.00014751424024790855,    0.00042365555592108265,    0.000696381707633601,    0.0009581911739190034,    0.0012016945125591883,    0.0014198129038021875,    0.0016059677163340854,    0.0017542822302381216,    0.0018597489437935104,    0.0019183843680031518,    0.001927370582069373,    0.0018851569558006424,    0.0017915316423764106,    0.0016476681649469273,    0.001456129721890939,    0.0012208322294896099,    0.0009469770920907817,    0.0006409478559993642,    0.0003101659717946291,    -0.00003708137047780295,    -0.0003918367361265021,    -0.0007446984520565823,    -0.0010860619549777095,    -0.0014063764577860907,    -0.001696397687712767,    -0.0019474488265779002,    -0.002151669227747982,    -0.002302249012563522,    -0.0023936395957784356,    -0.0024217386080201218,    -0.002384046464152241,    -0.0022797724899456247,    -0.0021099040224506474,    -0.0018772300452061593,    -0.001586318069799396,    -0.0012434422926464283,    -0.0008564627353582099,    -0.0004346583284416864,    0.000011483258960353713,    0.0004705125435918996,    0.0009302983176219571,    0.0013783347882871506,    0.0018020649278141442,    0.002189218072448032,    0.002528151228372692,    0.0028081778185230755,    0.0030198855690580883,    0.0031554218226391927,    0.0032087539967944043,    0.003175891861997494,    0.003055052047477484,    0.0028467769761391067,    0.0025539826540715814,    0.0021819611806385975,    0.00173831289146853,    0.0012328190076443134,    0.0006772405314859651,    0.0000850660373523537,    -0.0005287869617277397,    -0.001148321137491392,    -0.0017568578913237647,    -0.002337465469832778,    -0.0028733927792042916,    -0.0033485134261990474,    -0.0037477874636434095,    -0.004057705229541436,    -0.0042666789949867895,    -0.004365411194693107,    -0.004347246153946479,    -0.0042084293493284755,    -0.003948276264434998,    -0.0035693427342337308,    -0.003077468630328199,    -0.002481682761858642,    -0.0017941893541420268,    -0.0010300505400156208,    -0.00020699101191350578,    0.0006550244158311212,    0.0015341931983222652,    0.002407385154286287,    0.0032506853111441327,    0.004039981949981368,    0.004751579445675196,    0.0053628234864281235,    0.0058527242916193226,    0.006202559568610708,    0.006396443797782178,    0.006421849969755556,    0.006270068071543294,    0.005936587372391708,    0.0054213915962429745,    0.004729156264045173,    0.0038693427245538904,    0.0028561826064778697,    0.0017085458613360902,    0.0004497040612160084,    -0.0008930343940838381,    -0.002288760766598498,    -0.0037035572532650445,    -0.005101096327651239,    -0.006443406350064504,    -0.007691613708744422,    -0.008806783345605503,    -0.009750779708566895,    -0.010487104621962649,    -0.010981761556592558,    -0.011204077521465777,    -0.01112745993022714,    -0.010730106123767362,    -0.009995629398181848,    -0.008913569832214968,    -0.007479799008370572,    -0.005696809921316997,    -0.0035738648415050284,    -0.0011270001382152866,    0.001621100228821588,    0.004641370935060121,    0.00789877655149075,    0.0113528526524623,    0.014958365872953214,    0.018666074072644187,    0.02242359380770534,    0.026176337546106928,    0.029868513059052665,    0.03344415058816331,    0.03684815553847075,    0.04002735371
\ No newline at end of file
 13553936088779655,    0.0013991567634035874,    0.0014114626691980761,    0.0013911994521601603,    0.001338158623469115,    0.0012529312652788224,    0.0011368782078168052,    0.0009924227419316402,    0.0008225367782712132,    0.0006311126153653432,    0.000422596130820185,    0.00020202566973633374,    -0.000025140126274052846,    -0.00025314012889659734,    -0.00047605825978268214,    -0.0006879757889763613,    -0.0008831265836660278,    -0.001056052961049124,    -0.0012017570118505278,    -0.0013158443800074546,    -0.0013946550179738235,    -0.00143537714856422,    -0.0014361430413177665,    -0.0013961025273104373,    -0.0013154698934900741,    -0.0011955448624625515,    -0.001038705445344848,    -0.000848370211905452,    -0.0006289357238567322,    -0.00038567726087640876,    -0.00012464084542349136,    0.00014751424024790855,    0.00042365555592108265,    0.000696381707633601,    0.0009581911739190034,    0.0012016945125591883,    0.0014198129038021875,    0.0016059677163340854,    0.0017542822302381216,    0.0018597489437935104,    0.0019183843680031518,    0.001927370582069373,    0.0018851569558006424,    0.0017915316423764106,    0.0016476681649469273,    0.001456129721890939,    0.0012208322294896099,    0.0009469770920907817,    0.0006409478559993642,    0.0003101659717946291,    -0.00003708137047780295,    -0.0003918367361265021,    -0.0007446984520565823,    -0.0010860619549777095,    -0.0014063764577860907,    -0.001696397687712767,    -0.0019474488265779002,    -0.002151669227747982,    -0.002302249012563522,    -0.0023936395957784356,    -0.0024217386080201218,    -0.002384046464152241,    -0.0022797724899456247,    -0.0021099040224506474,    -0.0018772300452061593,    -0.001586318069799396,    -0.0012434422926464283,    -0.0008564627353582099,    -0.0004346583284416864,    0.000011483258960353713,    0.0004705125435918996,    0.0009302983176219571,    0.0013783347882871506,    0.0018020649278141442,    0.002189218072448032,    0.002528151228372692,    0.0028081778185230755,    0.0030198855690580883,    0.0031554218226391927,    0.0032087539967944043,    0.003175891861997494,    0.003055052047477484,    0.0028467769761391067,    0.0025539826540715814,    0.0021819611806385975,    0.00173831289146853,    0.0012328190076443134,    0.0006772405314859651,    0.0000850660373523537,    -0.0005287869617277397,    -0.001148321137491392,    -0.0017568578913237647,    -0.002337465469832778,    -0.0028733927792042916,    -0.0033485134261990474,    -0.0037477874636434095,    -0.004057705229541436,    -0.0042666789949867895,    -0.004365411194693107,    -0.004347246153946479,    -0.0042084293493284755,    -0.003948276264434998,    -0.0035693427342337308,    -0.003077468630328199,    -0.002481682761858642,    -0.0017941893541420268,    -0.0010300505400156208,    -0.00020699101191350578,    0.0006550244158311212,    0.0015341931983222652,    0.002407385154286287,    0.0032506853111441327,    0.004039981949981368,    0.004751579445675196,    0.0053628234864281235,    0.0058527242916193226,    0.006202559568610708,    0.006396443797782178,    0.006421849969755556,    0.006270068071543294,    0.005936587372391708,    0.0054213915962429745,    0.004729156264045173,    0.0038693427245538904,    0.0028561826064778697,    0.0017085458613360902,    0.0004497040612160084,    -0.0008930343940838381,    -0.002288760766598498,    -0.0037035572532650445,    -0.005101096327651239,    -0.006443406350064504,    -0.007691613708744422,    -0.008806783345605503,    -0.009750779708566895,    -0.010487104621962649,    -0.010981761556592558,    -0.011204077521465777,    -0.01112745993022714,    -0.010730106123767362,    -0.009995629398181848,    -0.008913569832214968,    -0.007479799008370572,    -0.005696809921316997,    -0.0035738648415050284,    -0.0011270001382152866,    0.001621100228821588,    0.004641370935060121,    0.00789877655149075,    0.0113528526524623,    0.014958365872953214,    0.018666074072644187,    0.02242359380770534,    0.026176337546106928,    0.029868513059052665,    0.03344415058816331,    0.03684815553847075,   
\ No newline at end of file
 };
 
@@ -3330,10 +3330,9 @@
 0.07464f, 0.074559f, 0.074478f, 0.074397f, 0.074317f, 0.074236f, 0.074155f, 0.074074f, 0.073993f, 0.073912f, 0.073832f, 0.073751f, 0.07367f, 0.073589f,
 0.073509f, 0.073428f, 0.073347f, 0.073266f, 0.073185f, 0.073105f, 0.073024f, 0.072943f, 0.072862f, 0.072782f, 0.072701f, 0.07262f, 0.072539f, 0.072459f, 0.072378f, 0.072297f, 0.072217f, 0.072136f, 0.072055f, 0.071974f,
 0.071894f, 0.071813f, 0.071732f, 0.071652f, 0.071571f, 0.07149f, 0.07141f, 0.071329f, 0.071248f, 0.071168f, 0.071087f, 0.071006f, 0.070926f, 0.070845f, 0.070764f, 0.070684f, 0.070603f, 0.070522f, 0.070442f, 0.070361f,
-716f, 0.069636f, 0.069555f, 0.069475f, 0.069394f, 0.069314f, 0.069233f, 0.069152f, 0.069072f, 0.068991f, 0.068911f, 0.06883f, 0.06875f,
+716f, 0.069636f, 0.069555f, 0.069475f, 0.069394f, 0.069314f, 0.069233f, 0.069152f, 0.069072f, 0.068991f, 0.068911f, 0.06883f, 0.06875f,
 069636f, 0.069555f, 0.069475f, 0.069394f, 0.069314f, 0.069233f, 0.069152f, 0.069072f, 0.068991f, 0.068911f, 0.06883f, 0.06875f,
-9636f, 0.069555f, 0.069475f, 0.069394f, 0.069314f, 0.069233f, 0.069152f, 0.069072f, 0.068991f, 0.068911f, 0.06883f, 0.06875f,
-0.068669f, 0.068589f, 0.068508f, 0.068428f, 0.068347f, 0.068267f, 0.068186f, 0.068106f, 0.068025f, 0.067945f, 0.067864f, 0.067784f, 0.067703f, 0.067623f, 0.067542f, 0.067462f, 0.067381f, 0.067301f, 0.06722f, 0.06714f,
+.069394f, 0.069314f, 0.069233f, 0.069152f, 0.069072f, 0.068991f, 0.068911f, 0.06883f, 0.06875f,
 0.069394f, 0.069314f, 0.069233f, 0.069152f, 0.069072f, 0.068991f, 0.068911f, 0.06883f, 0.06875f,
 0.068669f, 0.068589f, 0.068508f, 0.068428f, 0.068347f, 0.068267f, 0.068186f, 0.068106f, 0.068025f, 0.067945f, 0.067864f, 0.067784f, 0.067703f, 0.067623f, 0.067542f, 0.067462f, 0.067381f, 0.067301f, 0.06722f, 0.06714f,
 0.06706f, 0.066979f, 0.066899f, 0.066818f, 0.066738f, 0.066657f, 0.066577f, 0.066497f, 0.066416f, 0.066336f, 0.066255f, 0.066175f, 0.066095f, 0.066014f, 0.065934f, 0.065853f, 0.065773f, 0.065693f, 0.065612f, 0.065532f,
@@ -3382,10 +3381,9 @@
 0.193981f, -0.194033f, -0.194085f, -0.194136f, -0.194188f, -0.19424f, -0.194292f, -0.194343f, -0.194395f, -0.194447f, -0.194498f, -0.19455f, -0.194602f, -0.194653f, -0.194705f, -0.194757f, -0.194808f, -0.19486f, -0.194912f, -0.194963f,
 -0.195015f, -0.195066f, -0.195118f, -0.19517f, -0.195221f, -0.195273f, -0.195324f, -0.195376f, -0.195427f, -0.195479f, -0.19553f, -0.195582f, -0.195633f, -0.195685f, -0.195736f, -0.195788f, -0.195839f, -0.19589f, -0.195942f, -0.195993f,
 -0.196045f, -0.196096f, -0.196147f, -0.196199f, -0.19625f, -0.196301f, -0.196353f, -0.196404f, -0.196455f, -0.196507f, -0.196558f, -0.196609f, -0.196661f, -0.196712f, -0.196763f, -0.196814f, -0.196866f, -0.196917f, -0.196968f, -0.197019f,
-194033f, -0.194085f, -0.194136f, -0.194188f, -0.19424f, -0.194292f, -0.194343f, -0.194395f, -0.194447f, -0.194498f, -0.19455f, -0.194602f, -0.194653f, -0.194705f, -0.194757f, -0.194808f, -0.19486f, -0.194912f, -0.194963f,
+0.194188f, -0.19424f, -0.194292f, -0.194343f, -0.194395f, -0.194447f, -0.194498f, -0.19455f, -0.194602f, -0.194653f, -0.194705f, -0.194757f, -0.194808f, -0.19486f, -0.194912f, -0.194963f,
  -0.194085f, -0.194136f, -0.194188f, -0.19424f, -0.194292f, -0.194343f, -0.194395f, -0.194447f, -0.194498f, -0.19455f, -0.194602f, -0.194653f, -0.194705f, -0.194757f, -0.194808f, -0.19486f, -0.194912f, -0.194963f,
-0.194085f, -0.194136f, -0.194188f, -0.19424f, -0.194292f, -0.194343f, -0.194395f, -0.194447f, -0.194498f, -0.19455f, -0.194602f, -0.194653f, -0.194705f, -0.194757f, -0.194808f, -0.19486f, -0.194912f, -0.194963f,
--0.195015f, -0.195066f, -0.195118f, -0.19517f, -0.195221f, -0.195273f, -0.195324f, -0.195376f, -0.195427f, -0.195479f, -0.19553f, -0.195582f, -0.195633f, -0.195685f, -0.195736f, -0.195788f, -0.195839f, -0.19589f, -0.195942f, -0.195993f,
+3f, -0.194395f, -0.194447f, -0.194498f, -0.19455f, -0.194602f, -0.194653f, -0.194705f, -0.194757f, -0.194808f, -0.19486f, -0.194912f, -0.194963f,
 188f, -0.19424f, -0.194292f, -0.194343f, -0.194395f, -0.194447f, -0.194498f, -0.19455f, -0.194602f, -0.194653f, -0.194705f, -0.194757f, -0.194808f, -0.19486f, -0.194912f, -0.194963f,
 -0.195015f, -0.195066f, -0.195118f, -0.19517f, -0.195221f, -0.195273f, -0.195324f, -0.195376f, -0.195427f, -0.195479f, -0.19553f, -0.195582f, -0.195633f, -0.195685f, -0.195736f, -0.195788f, -0.195839f, -0.19589f, -0.195942f, -0.195993f,
 -0.196045f, -0.196096f, -0.196147f, -0.196199f, -0.19625f, -0.196301f, -0.196353f, -0.196404f, -0.196455f, -0.196507f, -0.196558f, -0.196609f, -0.196661f, -0.196712f, -0.196763f, -0.196814f, -0.196866f, -0.196917f, -0.196968f, -0.197019f,
@@ -3433,9 +3431,9 @@
 784f, -0.078543f, -0.078327f, -0.077901f, -0.0765f, -0.075546f, -0.075457f, -0.074714f, -0.073263f, -0.072638f, -0.07252f, -0.071454f, -0.070111f, -0.069781f, -0.069485f, -0.068167f, -0.067063f, -0.066928f, -0.066345f, -0.064901f, -0.064114f, -0.064028f, -0.063117f, -0.061704f, -0.061237f, -0.061044f, -0.059838f, -0.058604f, -0.058388f, -0.057955f, -0.056556f, -0.055608f, -0.055517f, -0.054767f, -0.053321f, -0.052701f, -0.052577f, -0.051508f, -0.05017f, -0.049844f, -0.049541f, -0.048221f, -0.047124f, -0.046989f, -0.0464f, -0.044958f, -0.044177f, -0.044088f, -0.043171f, -0.041762f, -0.0413f, -0.041101f, -0.039892f, -0.038664f, -0.03845f, -0.03801f, -0.036611f, -0.03567f, -0.035577f, -0.034821f, -0.033378f, -0.032763f, -0.032636f, -0.031562f, -0.03023f, -0.029906f, -0.029597f, -0.028276f, -0.027185f, -0.027051f, -0.026454f, -0.025014f, -0.024239f, -0.024147f, -0.023225f, -0.02182f, -0.021363f, -0.021159f, -0.019946f, -0.018724f, -0.018513f, -0.018066f, -0.016666f, -0.015732f, -0.015638f, -0.014876f, -0.013434f, -0.012826f, -0.012695f, -0.011616f, -0.010288f, -0.009969f, -0.009654f, -0.00833f, -0.007245f, -0.007112f, -0.00651f, -0.005069f, -0.004301f, -0.004208f, -0.003279f, -0.001877f, -0.001425f, -0.001217f, -0.0f, 0.001217f, 0.001425f, 0.001877f, 0.003279f, 0.004208f, 0.004301f, 0.005069f, 0.00651f, 0.007112f, 0.007245f, 0.00833f, 0.009654f, 0.009969f, 0.010288f, 0.011616f, 0.012695f, 0.012826f, 0.013434f, 0.014876f, 0.015638f, 0.015732f, 0.016666f, 0.018066f, 0.018513f, 0.018724f, 0.019946f, 0.021159f, 0.021363f, 0.02182f, 0.023225f, 0.024147f, 0.024239f, 0.025014f, 0.026454f, 0.027051f, 0.027185f, 0.028276f, 0.029597f, 0.029906f, 0.03023f, 0.031562f, 0.032636f, 0.032763f, 0.033378f, 0.034821f, 0.035577f, 0.03567f, 0.036611f, 0.03801f, 0.03845f, 0.038664f, 0.039892f, 0.041101f, 0.0413f, 0.041762f, 0.043171f, 0.044088f, 0.044177f, 0.044958f, 0.0464f, 0.046989f, 0.047124f, 0.048221f, 0.049541f, 0.049844f, 0.05017f, 0.051508f, 0.052577f, 0.052701f, 0.053321f, 0.054767f, 0.055517f, 0.055608f, 0.056556f, 0.057955f, 0.058388f, 0.058604f, 0.059838f, 0.061044f, 0.061237f, 0.061704f, 0.063117f, 0.064028f, 0.064114f, 0.064901f, 0.066345f, 0.066928f, 0.067063f, 0.068167f, 0.069485f, 0.069781f, 0.070111f, 0.071454f, 0.07252f, 0.072638f, 0.073263f, 0.074714f, 0.075457f, 0.075546f, 0.0765f, 0.077901f, 0.078327f, 0.078543f, 0.079784f, 0.080988f, 0.081174f, 0.081645f, 0.083064f, 0.08397f, 0.084051f, 0.084845f, 0.086292f, 0.086867f, 0.087f, 0.088112f, 0.08943f, 0.089719f, 0.09005f, 0.091401f, 0.092463f, 0.092574f, 0.093205f, 0.094661f, 0.095397f, 0.095482f, 0.096445f, 0.097847f, 0.098265f, 0.098481f, 0.09973f, 0.100932f, 0.101111f, 0.101585f, 0.103011f, 0.103912f, 0.103987f, 0.104788f, 0.106239f, 0.106807f, 0.106937f, 0.108057f, 0.109376f, 0.109656f, 0.109989f, 0.111348f, 0.112406f, 0.11251f, 0.113146f, 0.114608f, 0.115338f, 0.115419f, 0.116389f, 0.117794f, 0.118203f, 0.118418f, 0.119676f, 0.120877f, 0.121047f, 0.121525f, 0.122959f, 0.123854f, 0.123923f, 0.12473f, 0.126186f, 0.126746f, 0.126873f, 0.128002f, 0.129322f, 0.129593f, 0.129927f, 0.131295f, 0.13235f, 0.132446f, 0.133087f, 0.134556f, 0.13528f, 0.135354f, 0.136332f, 0.137741f, 0.138142f, 0.138355f, 0.139623f, 0.140823f, 0.140984f, 0.141464f, 0.142907f, 0.143797f, 0.143858f, 0.144672f, 0.146135f, 0.146686f, 0.146809f, 0.147948f, 0.14927f, 0.14953f, 0.149864f, 0.151243f, 0.152295f, 0.152381f, 0.153027f, 0.154505f, 0.155221f, 0.155289f, 0.156276f, 0.15769f, 0.15808f, 0.15829f, 0.159569f, 0.16077f, 0.160919f, 0.161402f, 0.162856f, 0.163741f, 0.163792f, 0.164614f, 0.166084f, 0.166626f, 0.166743f, 0.167893f, 0.169218f, 0.169467f, 0.169801f, 0.171191f, 0.172241f, 0.172316f, 0.172966f, 0.174455f, 0.175163f, 0.175222f, 0.176219f, 0.177639f, 0.178018f, 0.178225f, 0.179516f, 0.180717f, 0.180855f, 0.181339f, 0.182805f, 0.183685f, 0.183726f, 0.184555f, 0.186034f, 0.186567f, 0.186677f, 0.187838f, 0.189167f, 0.189404f, 0.189736f, 0.191139f, 0.192187f, 0.19225f, 0.192905f, 0.194405f, 0.195106f, 0.195155f, 0.196162f, 0.19759f, 0.197957f, 0.198159f, 0.199463f, 0.200666f, 0.20079f, 0.201276f, 0.2
\ No newline at end of file
     },
     
-0363f, 0.203659f, 0.204495f, 0.205985f, 0.206507f, 0.20661f, 0.207783f, 0.209117f, 0.20934f, 0.209671f, 0.211088f, 0.212135f, 0.212183f, 0.212843f, 0.214356f, 0.215049f, 0.215087f, 0.216105f, 0.217541f, 0.217895f, 0.218092f, 0.21941f, 0.220615f, 0.220724f, 0.221212f, 0.222705f, 0.223576f, 0.22359f, 0.224435f, 0.225937f, 0.226448f, 0.226541f, 0.227728f, 0.229068f, 0.229276f, 0.229604f, 0.231037f, 0.232083f, 0.232116f, 0.232781f, 0.234308f, 0.234993f, 0.235018f, 0.236047f, 0.237493f, 0.237834f, 0.238024f, 0.239358f, 0.240565f, 0.240658f, 0.241147f, 0.242656f, 0.243523f, 0.243521f, 0.244375f, 0.24589f, 0.24639f, 0.246472f, 0.247673f, 0.249021f, 0.249212f, 0.249537f, 0.250987f, 0.252032f, 0.252047f, 0.252718f, 0.254261f, 0.254937f, 0.254948f, 0.255989f, 0.257447f, 0.257772f, 0.257954f, 0.259305f, 0.260517f, 0.260591f, 0.26108f, 0.262609f, 0.26347f, 0.263451f, 0.264314f, 0.265845f, 0.266331f, 0.266401f, 0.267618f, 0.268974f, 0.269148f, 0.269468f, 0.270937f, 0.271982f, 0.271978f, 0.272654f, 0.274215f, 0.274882f, 0.274877f, 0.275931f, 0.277402f, 0.277711f, 0.277884f, 0.279253f, 0.28047f, 0.280524f, 0.281013f, 0.282562f, 0.283418f, 0.28338f, 0.284253f, 0.2858f, 0.286273f, 0.286329f, 0.287563f, 0.288929f, 0.289083f, 0.289398f, 0.290889f, 0.291933f, 0.291908f, 0.292589f, 0.29417f, 0.294827f, 0.294804f, 0.295873f, 0.297358f, 0.297649f, 0.297811f, 0.299202f, 0.300424f, 0.300456f, 0.300945f, 0.302516f, 0.303367f, 0.303308f, 0.304191f, 0.305757f, 0.306215f, 0.306255f, 0.307508f, 0.308886f, 0.309018f, 0.309327f, 0.310841f, 0.311886f, 0.311837f, 0.312523f, 0.314127f, 0.314773f, 0.31473f, 0.315814f, 0.317316f, 0.317587f, 0.317737f, 0.319151f, 0.32038f, 0.320387f, 0.320875f, 0.322471f, 0.323317f, 0.323234f, 0.324128f, 0.325716f, 0.326157f, 0.32618f, 0.327454f, 0.328844f, 0.328952f, 0.329254f, 0.330794f, 0.33184f, 0.331764f, 0.332455f, 0.334085f, 0.33472f, 0.334654f, 0.335755f, 0.337276f, 0.337525f, 0.337662f, 0.339101f, 0.340337f, 0.340317f, 0.340804f, 0.342428f, 0.343268f, 0.343158f, 0.344064f, 0.345677f, 0.346099f, 0.346102f, 0.347399f, 0.348804f, 0.348885f, 0.349179f, 0.350748f, 0.351795f, 0.35169f, 0.352387f, 0.354046f, 0.354667f, 0.354575f, 0.355696f, 0.357238f, 0.357463f, 0.357584f, 0.359051f, 0.360296f, 0.360246f, 0.360731f, 0.362386f, 0.36322f, 0.363081f, 0.364f, 0.365639f, 0.366042f, 0.366023f, 0.367345f, 0.368766f, 0.368818f, 0.369102f, 0.370703f, 0.371753f, 0.371615f, 0.372317f, 0.374008f, 0.374615f, 0.374495f, 0.375637f, 0.377203f, 0.377401f, 0.377504f, 0.379002f, 0.380258f, 0.380173f, 0.380656f, 0.382346f, 0.383174f, 0.383001f, 0.383934f, 0.385604f, 0.385986f, 0.38594f, 0.387291f, 0.388731f, 0.38875f, 0.389023f, 0.39066f, 0.391712f, 0.391537f, 0.392246f, 0.393972f, 0.394565f, 0.394412f, 0.395577f, 0.39717f, 0.397338f, 0.397421f, 0.398954f, 0.400222f, 0.400099f, 0.400579f, 0.402308f, 0.40313f, 0.402919f, 0.403868f, 0.405572f, 0.405929f, 0.405855f, 0.407237f, 0.408699f, 0.408681f, 0.408941f, 0.410618f, 0.411674f, 0.411457f, 0.412173f, 0.413939f, 0.414515f, 0.414326f, 0.415516f, 0.41714f, 0.417275f, 0.417335f, 0.418908f, 0.420189f, 0.420023f, 0.4205f, 0.422273f, 0.423088f, 0.422834f, 0.4238f, 0.425543f, 0.425874f, 0.425767f, 0.427184f, 0.42867f, 0.428611f, 0.428856f, 0.430579f, 0.431638f, 0.431375f, 0.432098f, 0.433909f, 0.434467f, 0.434237f, 0.435455f, 0.437114f, 0.437212f, 0.437246f, 0.438862f, 0.440159f, 0.439945f, 0.440418f, 0.44224f, 0.443047f, 0.442745f, 0.443731f, 0.445518f, 0.445818f, 0.445674f, 0.447131f, 0.448645f, 0.448539f, 0.448767f, 0.450541f, 0.451605f, 0.451289f, 0.452021f, 0.453883f, 0.454421f, 0.454143f, 0.455394f, 0.457092f, 0.457148f, 0.457152f, 0.458818f, 0.460133f, 0.459865f, 0.460332f, 0.462211f, 0.46301f, 0.462653f, 0.46366f, 0.465498f, 0.465764f, 0.465577f, 0.467078f, 0.468625f, 0.468466f, 0.468674f, 0.470506f, 0.471576f, 0.4712f, 0.47194f, 0.473861f, 0.474376f, 0.474045f, 0.475331f, 0.477075f, 0.477084f, 0.477053f, 0.478775f, 0.480112f, 0.479782f, 0.480243f, 0.482186f, 0.482975f, 0.482555f, 0.483587f, 0.485482f, 0.48571f, 0.485475f, 0.487026f, 0.48861f, 0.488391f, 0.488576f, 0.490475f, 0.491552f, 0.491
\ No newline at end of file
+5f, 0.206507f, 0.20661f, 0.207783f, 0.209117f, 0.20934f, 0.209671f, 0.211088f, 0.212135f, 0.212183f, 0.212843f, 0.214356f, 0.215049f, 0.215087f, 0.216105f, 0.217541f, 0.217895f, 0.218092f, 0.21941f, 0.220615f, 0.220724f, 0.221212f, 0.222705f, 0.223576f, 0.22359f, 0.224435f, 0.225937f, 0.226448f, 0.226541f, 0.227728f, 0.229068f, 0.229276f, 0.229604f, 0.231037f, 0.232083f, 0.232116f, 0.232781f, 0.234308f, 0.234993f, 0.235018f, 0.236047f, 0.237493f, 0.237834f, 0.238024f, 0.239358f, 0.240565f, 0.240658f, 0.241147f, 0.242656f, 0.243523f, 0.243521f, 0.244375f, 0.24589f, 0.24639f, 0.246472f, 0.247673f, 0.249021f, 0.249212f, 0.249537f, 0.250987f, 0.252032f, 0.252047f, 0.252718f, 0.254261f, 0.254937f, 0.254948f, 0.255989f, 0.257447f, 0.257772f, 0.257954f, 0.259305f, 0.260517f, 0.260591f, 0.26108f, 0.262609f, 0.26347f, 0.263451f, 0.264314f, 0.265845f, 0.266331f, 0.266401f, 0.267618f, 0.268974f, 0.269148f, 0.269468f, 0.270937f, 0.271982f, 0.271978f, 0.272654f, 0.274215f, 0.274882f, 0.274877f, 0.275931f, 0.277402f, 0.277711f, 0.277884f, 0.279253f, 0.28047f, 0.280524f, 0.281013f, 0.282562f, 0.283418f, 0.28338f, 0.284253f, 0.2858f, 0.286273f, 0.286329f, 0.287563f, 0.288929f, 0.289083f, 0.289398f, 0.290889f, 0.291933f, 0.291908f, 0.292589f, 0.29417f, 0.294827f, 0.294804f, 0.295873f, 0.297358f, 0.297649f, 0.297811f, 0.299202f, 0.300424f, 0.300456f, 0.300945f, 0.302516f, 0.303367f, 0.303308f, 0.304191f, 0.305757f, 0.306215f, 0.306255f, 0.307508f, 0.308886f, 0.309018f, 0.309327f, 0.310841f, 0.311886f, 0.311837f, 0.312523f, 0.314127f, 0.314773f, 0.31473f, 0.315814f, 0.317316f, 0.317587f, 0.317737f, 0.319151f, 0.32038f, 0.320387f, 0.320875f, 0.322471f, 0.323317f, 0.323234f, 0.324128f, 0.325716f, 0.326157f, 0.32618f, 0.327454f, 0.328844f, 0.328952f, 0.329254f, 0.330794f, 0.33184f, 0.331764f, 0.332455f, 0.334085f, 0.33472f, 0.334654f, 0.335755f, 0.337276f, 0.337525f, 0.337662f, 0.339101f, 0.340337f, 0.340317f, 0.340804f, 0.342428f, 0.343268f, 0.343158f, 0.344064f, 0.345677f, 0.346099f, 0.346102f, 0.347399f, 0.348804f, 0.348885f, 0.349179f, 0.350748f, 0.351795f, 0.35169f, 0.352387f, 0.354046f, 0.354667f, 0.354575f, 0.355696f, 0.357238f, 0.357463f, 0.357584f, 0.359051f, 0.360296f, 0.360246f, 0.360731f, 0.362386f, 0.36322f, 0.363081f, 0.364f, 0.365639f, 0.366042f, 0.366023f, 0.367345f, 0.368766f, 0.368818f, 0.369102f, 0.370703f, 0.371753f, 0.371615f, 0.372317f, 0.374008f, 0.374615f, 0.374495f, 0.375637f, 0.377203f, 0.377401f, 0.377504f, 0.379002f, 0.380258f, 0.380173f, 0.380656f, 0.382346f, 0.383174f, 0.383001f, 0.383934f, 0.385604f, 0.385986f, 0.38594f, 0.387291f, 0.388731f, 0.38875f, 0.389023f, 0.39066f, 0.391712f, 0.391537f, 0.392246f, 0.393972f, 0.394565f, 0.394412f, 0.395577f, 0.39717f, 0.397338f, 0.397421f, 0.398954f, 0.400222f, 0.400099f, 0.400579f, 0.402308f, 0.40313f, 0.402919f, 0.403868f, 0.405572f, 0.405929f, 0.405855f, 0.407237f, 0.408699f, 0.408681f, 0.408941f, 0.410618f, 0.411674f, 0.411457f, 0.412173f, 0.413939f, 0.414515f, 0.414326f, 0.415516f, 0.41714f, 0.417275f, 0.417335f, 0.418908f, 0.420189f, 0.420023f, 0.4205f, 0.422273f, 0.423088f, 0.422834f, 0.4238f, 0.425543f, 0.425874f, 0.425767f, 0.427184f, 0.42867f, 0.428611f, 0.428856f, 0.430579f, 0.431638f, 0.431375f, 0.432098f, 0.433909f, 0.434467f, 0.434237f, 0.435455f, 0.437114f, 0.437212f, 0.437246f, 0.438862f, 0.440159f, 0.439945f, 0.440418f, 0.44224f, 0.443047f, 0.442745f, 0.443731f, 0.445518f, 0.445818f, 0.445674f, 0.447131f, 0.448645f, 0.448539f, 0.448767f, 0.450541f, 0.451605f, 0.451289f, 0.452021f, 0.453883f, 0.454421f, 0.454143f, 0.455394f, 0.457092f, 0.457148f, 0.457152f, 0.458818f, 0.460133f, 0.459865f, 0.460332f, 0.462211f, 0.46301f, 0.462653f, 0.46366f, 0.465498f, 0.465764f, 0.465577f, 0.467078f, 0.468625f, 0.468466f, 0.468674f, 0.470506f, 0.471576f, 0.4712f, 0.47194f, 0.473861f, 0.474376f, 0.474045f, 0.475331f, 0.477075f, 0.477084f, 0.477053f, 0.478775f, 0.480112f, 0.479782f, 0.480243f, 0.482186f, 0.482975f, 0.482555f, 0.483587f, 0.485482f, 0.48571f, 0.485475f, 0.487026f, 0.48861f, 0.488391f, 0.488576f, 0.490475f, 0.491552f, 0.491107f, 0.491856f, 0.493845f, 0.494333
\ No newline at end of file
 .203659f, 0.204495f, 0.205985f, 0.206507f, 0.20661f, 0.207783f, 0.209117f, 0.20934f, 0.209671f, 0.211088f, 0.212135f, 0.212183f, 0.212843f, 0.214356f, 0.215049f, 0.215087f, 0.216105f, 0.217541f, 0.217895f, 0.218092f, 0.21941f, 0.220615f, 0.220724f, 0.221212f, 0.222705f, 0.223576f, 0.22359f, 0.224435f, 0.225937f, 0.226448f, 0.226541f, 0.227728f, 0.229068f, 0.229276f, 0.229604f, 0.231037f, 0.232083f, 0.232116f, 0.232781f, 0.234308f, 0.234993f, 0.235018f, 0.236047f, 0.237493f, 0.237834f, 0.238024f, 0.239358f, 0.240565f, 0.240658f, 0.241147f, 0.242656f, 0.243523f, 0.243521f, 0.244375f, 0.24589f, 0.24639f, 0.246472f, 0.247673f, 0.249021f, 0.249212f, 0.249537f, 0.250987f, 0.252032f, 0.252047f, 0.252718f, 0.254261f, 0.254937f, 0.254948f, 0.255989f, 0.257447f, 0.257772f, 0.257954f, 0.259305f, 0.260517f, 0.260591f, 0.26108f, 0.262609f, 0.26347f, 0.263451f, 0.264314f, 0.265845f, 0.266331f, 0.266401f, 0.267618f, 0.268974f, 0.269148f, 0.269468f, 0.270937f, 0.271982f, 0.271978f, 0.272654f, 0.274215f, 0.274882f, 0.274877f, 0.275931f, 0.277402f, 0.277711f, 0.277884f, 0.279253f, 0.28047f, 0.280524f, 0.281013f, 0.282562f, 0.283418f, 0.28338f, 0.284253f, 0.2858f, 0.286273f, 0.286329f, 0.287563f, 0.288929f, 0.289083f, 0.289398f, 0.290889f, 0.291933f, 0.291908f, 0.292589f, 0.29417f, 0.294827f, 0.294804f, 0.295873f, 0.297358f, 0.297649f, 0.297811f, 0.299202f, 0.300424f, 0.300456f, 0.300945f, 0.302516f, 0.303367f, 0.303308f, 0.304191f, 0.305757f, 0.306215f, 0.306255f, 0.307508f, 0.308886f, 0.309018f, 0.309327f, 0.310841f, 0.311886f, 0.311837f, 0.312523f, 0.314127f, 0.314773f, 0.31473f, 0.315814f, 0.317316f, 0.317587f, 0.317737f, 0.319151f, 0.32038f, 0.320387f, 0.320875f, 0.322471f, 0.323317f, 0.323234f, 0.324128f, 0.325716f, 0.326157f, 0.32618f, 0.327454f, 0.328844f, 0.328952f, 0.329254f, 0.330794f, 0.33184f, 0.331764f, 0.332455f, 0.334085f, 0.33472f, 0.334654f, 0.335755f, 0.337276f, 0.337525f, 0.337662f, 0.339101f, 0.340337f, 0.340317f, 0.340804f, 0.342428f, 0.343268f, 0.343158f, 0.344064f, 0.345677f, 0.346099f, 0.346102f, 0.347399f, 0.348804f, 0.348885f, 0.349179f, 0.350748f, 0.351795f, 0.35169f, 0.352387f, 0.354046f, 0.354667f, 0.354575f, 0.355696f, 0.357238f, 0.357463f, 0.357584f, 0.359051f, 0.360296f, 0.360246f, 0.360731f, 0.362386f, 0.36322f, 0.363081f, 0.364f, 0.365639f, 0.366042f, 0.366023f, 0.367345f, 0.368766f, 0.368818f, 0.369102f, 0.370703f, 0.371753f, 0.371615f, 0.372317f, 0.374008f, 0.374615f, 0.374495f, 0.375637f, 0.377203f, 0.377401f, 0.377504f, 0.379002f, 0.380258f, 0.380173f, 0.380656f, 0.382346f, 0.383174f, 0.383001f, 0.383934f, 0.385604f, 0.385986f, 0.38594f, 0.387291f, 0.388731f, 0.38875f, 0.389023f, 0.39066f, 0.391712f, 0.391537f, 0.392246f, 0.393972f, 0.394565f, 0.394412f, 0.395577f, 0.39717f, 0.397338f, 0.397421f, 0.398954f, 0.400222f, 0.400099f, 0.400579f, 0.402308f, 0.40313f, 0.402919f, 0.403868f, 0.405572f, 0.405929f, 0.405855f, 0.407237f, 0.408699f, 0.408681f, 0.408941f, 0.410618f, 0.411674f, 0.411457f, 0.412173f, 0.413939f, 0.414515f, 0.414326f, 0.415516f, 0.41714f, 0.417275f, 0.417335f, 0.418908f, 0.420189f, 0.420023f, 0.4205f, 0.422273f, 0.423088f, 0.422834f, 0.4238f, 0.425543f, 0.425874f, 0.425767f, 0.427184f, 0.42867f, 0.428611f, 0.428856f, 0.430579f, 0.431638f, 0.431375f, 0.432098f, 0.433909f, 0.434467f, 0.434237f, 0.435455f, 0.437114f, 0.437212f, 0.437246f, 0.438862f, 0.440159f, 0.439945f, 0.440418f, 0.44224f, 0.443047f, 0.442745f, 0.443731f, 0.445518f, 0.445818f, 0.445674f, 0.447131f, 0.448645f, 0.448539f, 0.448767f, 0.450541f, 0.451605f, 0.451289f, 0.452021f, 0.453883f, 0.454421f, 0.454143f, 0.455394f, 0.457092f, 0.457148f, 0.457152f, 0.458818f, 0.460133f, 0.459865f, 0.460332f, 0.462211f, 0.46301f, 0.462653f, 0.46366f, 0.465498f, 0.465764f, 0.465577f, 0.467078f, 0.468625f, 0.468466f, 0.468674f, 0.470506f, 0.471576f, 0.4712f, 0.47194f, 0.473861f, 0.474376f, 0.474045f, 0.475331f, 0.477075f, 0.477084f, 0.477053f, 0.478775f, 0.480112f, 0.479782f, 0.480243f, 0.482186f, 0.482975f, 0.482555f, 0.483587f, 0.485482f, 0.48571f, 0.485475f, 0.487026f, 0.48861f, 0.488391f, 0.488576f, 0.490475f, 0.491552f, 0.491107f, 0.
\ No newline at end of file
-03659f, 0.204495f, 0.205985f, 0.206507f, 0.20661f, 0.207783f, 0.209117f, 0.20934f, 0.209671f, 0.211088f, 0.212135f, 0.212183f, 0.212843f, 0.214356f, 0.215049f, 0.215087f, 0.216105f, 0.217541f, 0.217895f, 0.218092f, 0.21941f, 0.220615f, 0.220724f, 0.221212f, 0.222705f, 0.223576f, 0.22359f, 0.224435f, 0.225937f, 0.226448f, 0.226541f, 0.227728f, 0.229068f, 0.229276f, 0.229604f, 0.231037f, 0.232083f, 0.232116f, 0.232781f, 0.234308f, 0.234993f, 0.235018f, 0.236047f, 0.237493f, 0.237834f, 0.238024f, 0.239358f, 0.240565f, 0.240658f, 0.241147f, 0.242656f, 0.243523f, 0.243521f, 0.244375f, 0.24589f, 0.24639f, 0.246472f, 0.247673f, 0.249021f, 0.249212f, 0.249537f, 0.250987f, 0.252032f, 0.252047f, 0.252718f, 0.254261f, 0.254937f, 0.254948f, 0.255989f, 0.257447f, 0.257772f, 0.257954f, 0.259305f, 0.260517f, 0.260591f, 0.26108f, 0.262609f, 0.26347f, 0.263451f, 0.264314f, 0.265845f, 0.266331f, 0.266401f, 0.267618f, 0.268974f, 0.269148f, 0.269468f, 0.270937f, 0.271982f, 0.271978f, 0.272654f, 0.274215f, 0.274882f, 0.274877f, 0.275931f, 0.277402f, 0.277711f, 0.277884f, 0.279253f, 0.28047f, 0.280524f, 0.281013f, 0.282562f, 0.283418f, 0.28338f, 0.284253f, 0.2858f, 0.286273f, 0.286329f, 0.287563f, 0.288929f, 0.289083f, 0.289398f, 0.290889f, 0.291933f, 0.291908f, 0.292589f, 0.29417f, 0.294827f, 0.294804f, 0.295873f, 0.297358f, 0.297649f, 0.297811f, 0.299202f, 0.300424f, 0.300456f, 0.300945f, 0.302516f, 0.303367f, 0.303308f, 0.304191f, 0.305757f, 0.306215f, 0.306255f, 0.307508f, 0.308886f, 0.309018f, 0.309327f, 0.310841f, 0.311886f, 0.311837f, 0.312523f, 0.314127f, 0.314773f, 0.31473f, 0.315814f, 0.317316f, 0.317587f, 0.317737f, 0.319151f, 0.32038f, 0.320387f, 0.320875f, 0.322471f, 0.323317f, 0.323234f, 0.324128f, 0.325716f, 0.326157f, 0.32618f, 0.327454f, 0.328844f, 0.328952f, 0.329254f, 0.330794f, 0.33184f, 0.331764f, 0.332455f, 0.334085f, 0.33472f, 0.334654f, 0.335755f, 0.337276f, 0.337525f, 0.337662f, 0.339101f, 0.340337f, 0.340317f, 0.340804f, 0.342428f, 0.343268f, 0.343158f, 0.344064f, 0.345677f, 0.346099f, 0.346102f, 0.347399f, 0.348804f, 0.348885f, 0.349179f, 0.350748f, 0.351795f, 0.35169f, 0.352387f, 0.354046f, 0.354667f, 0.354575f, 0.355696f, 0.357238f, 0.357463f, 0.357584f, 0.359051f, 0.360296f, 0.360246f, 0.360731f, 0.362386f, 0.36322f, 0.363081f, 0.364f, 0.365639f, 0.366042f, 0.366023f, 0.367345f, 0.368766f, 0.368818f, 0.369102f, 0.370703f, 0.371753f, 0.371615f, 0.372317f, 0.374008f, 0.374615f, 0.374495f, 0.375637f, 0.377203f, 0.377401f, 0.377504f, 0.379002f, 0.380258f, 0.380173f, 0.380656f, 0.382346f, 0.383174f, 0.383001f, 0.383934f, 0.385604f, 0.385986f, 0.38594f, 0.387291f, 0.388731f, 0.38875f, 0.389023f, 0.39066f, 0.391712f, 0.391537f, 0.392246f, 0.393972f, 0.394565f, 0.394412f, 0.395577f, 0.39717f, 0.397338f, 0.397421f, 0.398954f, 0.400222f, 0.400099f, 0.400579f, 0.402308f, 0.40313f, 0.402919f, 0.403868f, 0.405572f, 0.405929f, 0.405855f, 0.407237f, 0.408699f, 0.408681f, 0.408941f, 0.410618f, 0.411674f, 0.411457f, 0.412173f, 0.413939f, 0.414515f, 0.414326f, 0.415516f, 0.41714f, 0.417275f, 0.417335f, 0.418908f, 0.420189f, 0.420023f, 0.4205f, 0.422273f, 0.423088f, 0.422834f, 0.4238f, 0.425543f, 0.425874f, 0.425767f, 0.427184f, 0.42867f, 0.428611f, 0.428856f, 0.430579f, 0.431638f, 0.431375f, 0.432098f, 0.433909f, 0.434467f, 0.434237f, 0.435455f, 0.437114f, 0.437212f, 0.437246f, 0.438862f, 0.440159f, 0.439945f, 0.440418f, 0.44224f, 0.443047f, 0.442745f, 0.443731f, 0.445518f, 0.445818f, 0.445674f, 0.447131f, 0.448645f, 0.448539f, 0.448767f, 0.450541f, 0.451605f, 0.451289f, 0.452021f, 0.453883f, 0.454421f, 0.454143f, 0.455394f, 0.457092f, 0.457148f, 0.457152f, 0.458818f, 0.460133f, 0.459865f, 0.460332f, 0.462211f, 0.46301f, 0.462653f, 0.46366f, 0.465498f, 0.465764f, 0.465577f, 0.467078f, 0.468625f, 0.468466f, 0.468674f, 0.470506f, 0.471576f, 0.4712f, 0.47194f, 0.473861f, 0.474376f, 0.474045f, 0.475331f, 0.477075f, 0.477084f, 0.477053f, 0.478775f, 0.480112f, 0.479782f, 0.480243f, 0.482186f, 0.482975f, 0.482555f, 0.483587f, 0.485482f, 0.48571f, 0.485475f, 0.487026f, 0.48861f, 0.488391f, 0.488576f, 0.490475f, 0.491552f, 0.491107f, 0.49
\ No newline at end of file
+17f, 0.20934f, 0.209671f, 0.211088f, 0.212135f, 0.212183f, 0.212843f, 0.214356f, 0.215049f, 0.215087f, 0.216105f, 0.217541f, 0.217895f, 0.218092f, 0.21941f, 0.220615f, 0.220724f, 0.221212f, 0.222705f, 0.223576f, 0.22359f, 0.224435f, 0.225937f, 0.226448f, 0.226541f, 0.227728f, 0.229068f, 0.229276f, 0.229604f, 0.231037f, 0.232083f, 0.232116f, 0.232781f, 0.234308f, 0.234993f, 0.235018f, 0.236047f, 0.237493f, 0.237834f, 0.238024f, 0.239358f, 0.240565f, 0.240658f, 0.241147f, 0.242656f, 0.243523f, 0.243521f, 0.244375f, 0.24589f, 0.24639f, 0.246472f, 0.247673f, 0.249021f, 0.249212f, 0.249537f, 0.250987f, 0.252032f, 0.252047f, 0.252718f, 0.254261f, 0.254937f, 0.254948f, 0.255989f, 0.257447f, 0.257772f, 0.257954f, 0.259305f, 0.260517f, 0.260591f, 0.26108f, 0.262609f, 0.26347f, 0.263451f, 0.264314f, 0.265845f, 0.266331f, 0.266401f, 0.267618f, 0.268974f, 0.269148f, 0.269468f, 0.270937f, 0.271982f, 0.271978f, 0.272654f, 0.274215f, 0.274882f, 0.274877f, 0.275931f, 0.277402f, 0.277711f, 0.277884f, 0.279253f, 0.28047f, 0.280524f, 0.281013f, 0.282562f, 0.283418f, 0.28338f, 0.284253f, 0.2858f, 0.286273f, 0.286329f, 0.287563f, 0.288929f, 0.289083f, 0.289398f, 0.290889f, 0.291933f, 0.291908f, 0.292589f, 0.29417f, 0.294827f, 0.294804f, 0.295873f, 0.297358f, 0.297649f, 0.297811f, 0.299202f, 0.300424f, 0.300456f, 0.300945f, 0.302516f, 0.303367f, 0.303308f, 0.304191f, 0.305757f, 0.306215f, 0.306255f, 0.307508f, 0.308886f, 0.309018f, 0.309327f, 0.310841f, 0.311886f, 0.311837f, 0.312523f, 0.314127f, 0.314773f, 0.31473f, 0.315814f, 0.317316f, 0.317587f, 0.317737f, 0.319151f, 0.32038f, 0.320387f, 0.320875f, 0.322471f, 0.323317f, 0.323234f, 0.324128f, 0.325716f, 0.326157f, 0.32618f, 0.327454f, 0.328844f, 0.328952f, 0.329254f, 0.330794f, 0.33184f, 0.331764f, 0.332455f, 0.334085f, 0.33472f, 0.334654f, 0.335755f, 0.337276f, 0.337525f, 0.337662f, 0.339101f, 0.340337f, 0.340317f, 0.340804f, 0.342428f, 0.343268f, 0.343158f, 0.344064f, 0.345677f, 0.346099f, 0.346102f, 0.347399f, 0.348804f, 0.348885f, 0.349179f, 0.350748f, 0.351795f, 0.35169f, 0.352387f, 0.354046f, 0.354667f, 0.354575f, 0.355696f, 0.357238f, 0.357463f, 0.357584f, 0.359051f, 0.360296f, 0.360246f, 0.360731f, 0.362386f, 0.36322f, 0.363081f, 0.364f, 0.365639f, 0.366042f, 0.366023f, 0.367345f, 0.368766f, 0.368818f, 0.369102f, 0.370703f, 0.371753f, 0.371615f, 0.372317f, 0.374008f, 0.374615f, 0.374495f, 0.375637f, 0.377203f, 0.377401f, 0.377504f, 0.379002f, 0.380258f, 0.380173f, 0.380656f, 0.382346f, 0.383174f, 0.383001f, 0.383934f, 0.385604f, 0.385986f, 0.38594f, 0.387291f, 0.388731f, 0.38875f, 0.389023f, 0.39066f, 0.391712f, 0.391537f, 0.392246f, 0.393972f, 0.394565f, 0.394412f, 0.395577f, 0.39717f, 0.397338f, 0.397421f, 0.398954f, 0.400222f, 0.400099f, 0.400579f, 0.402308f, 0.40313f, 0.402919f, 0.403868f, 0.405572f, 0.405929f, 0.405855f, 0.407237f, 0.408699f, 0.408681f, 0.408941f, 0.410618f, 0.411674f, 0.411457f, 0.412173f, 0.413939f, 0.414515f, 0.414326f, 0.415516f, 0.41714f, 0.417275f, 0.417335f, 0.418908f, 0.420189f, 0.420023f, 0.4205f, 0.422273f, 0.423088f, 0.422834f, 0.4238f, 0.425543f, 0.425874f, 0.425767f, 0.427184f, 0.42867f, 0.428611f, 0.428856f, 0.430579f, 0.431638f, 0.431375f, 0.432098f, 0.433909f, 0.434467f, 0.434237f, 0.435455f, 0.437114f, 0.437212f, 0.437246f, 0.438862f, 0.440159f, 0.439945f, 0.440418f, 0.44224f, 0.443047f, 0.442745f, 0.443731f, 0.445518f, 0.445818f, 0.445674f, 0.447131f, 0.448645f, 0.448539f, 0.448767f, 0.450541f, 0.451605f, 0.451289f, 0.452021f, 0.453883f, 0.454421f, 0.454143f, 0.455394f, 0.457092f, 0.457148f, 0.457152f, 0.458818f, 0.460133f, 0.459865f, 0.460332f, 0.462211f, 0.46301f, 0.462653f, 0.46366f, 0.465498f, 0.465764f, 0.465577f, 0.467078f, 0.468625f, 0.468466f, 0.468674f, 0.470506f, 0.471576f, 0.4712f, 0.47194f, 0.473861f, 0.474376f, 0.474045f, 0.475331f, 0.477075f, 0.477084f, 0.477053f, 0.478775f, 0.480112f, 0.479782f, 0.480243f, 0.482186f, 0.482975f, 0.482555f, 0.483587f, 0.485482f, 0.48571f, 0.485475f, 0.487026f, 0.48861f, 0.488391f, 0.488576f, 0.490475f, 0.491552f, 0.491107f, 0.491856f, 0.493845f, 0.494333f, 0.493941f, 0.495268f, 0.497065f, 0.4970
\ No newline at end of file
 85f, 0.206507f, 0.20661f, 0.207783f, 0.209117f, 0.20934f, 0.209671f, 0.211088f, 0.212135f, 0.212183f, 0.212843f, 0.214356f, 0.215049f, 0.215087f, 0.216105f, 0.217541f, 0.217895f, 0.218092f, 0.21941f, 0.220615f, 0.220724f, 0.221212f, 0.222705f, 0.223576f, 0.22359f, 0.224435f, 0.225937f, 0.226448f, 0.226541f, 0.227728f, 0.229068f, 0.229276f, 0.229604f, 0.231037f, 0.232083f, 0.232116f, 0.232781f, 0.234308f, 0.234993f, 0.235018f, 0.236047f, 0.237493f, 0.237834f, 0.238024f, 0.239358f, 0.240565f, 0.240658f, 0.241147f, 0.242656f, 0.243523f, 0.243521f, 0.244375f, 0.24589f, 0.24639f, 0.246472f, 0.247673f, 0.249021f, 0.249212f, 0.249537f, 0.250987f, 0.252032f, 0.252047f, 0.252718f, 0.254261f, 0.254937f, 0.254948f, 0.255989f, 0.257447f, 0.257772f, 0.257954f, 0.259305f, 0.260517f, 0.260591f, 0.26108f, 0.262609f, 0.26347f, 0.263451f, 0.264314f, 0.265845f, 0.266331f, 0.266401f, 0.267618f, 0.268974f, 0.269148f, 0.269468f, 0.270937f, 0.271982f, 0.271978f, 0.272654f, 0.274215f, 0.274882f, 0.274877f, 0.275931f, 0.277402f, 0.277711f, 0.277884f, 0.279253f, 0.28047f, 0.280524f, 0.281013f, 0.282562f, 0.283418f, 0.28338f, 0.284253f, 0.2858f, 0.286273f, 0.286329f, 0.287563f, 0.288929f, 0.289083f, 0.289398f, 0.290889f, 0.291933f, 0.291908f, 0.292589f, 0.29417f, 0.294827f, 0.294804f, 0.295873f, 0.297358f, 0.297649f, 0.297811f, 0.299202f, 0.300424f, 0.300456f, 0.300945f, 0.302516f, 0.303367f, 0.303308f, 0.304191f, 0.305757f, 0.306215f, 0.306255f, 0.307508f, 0.308886f, 0.309018f, 0.309327f, 0.310841f, 0.311886f, 0.311837f, 0.312523f, 0.314127f, 0.314773f, 0.31473f, 0.315814f, 0.317316f, 0.317587f, 0.317737f, 0.319151f, 0.32038f, 0.320387f, 0.320875f, 0.322471f, 0.323317f, 0.323234f, 0.324128f, 0.325716f, 0.326157f, 0.32618f, 0.327454f, 0.328844f, 0.328952f, 0.329254f, 0.330794f, 0.33184f, 0.331764f, 0.332455f, 0.334085f, 0.33472f, 0.334654f, 0.335755f, 0.337276f, 0.337525f, 0.337662f, 0.339101f, 0.340337f, 0.340317f, 0.340804f, 0.342428f, 0.343268f, 0.343158f, 0.344064f, 0.345677f, 0.346099f, 0.346102f, 0.347399f, 0.348804f, 0.348885f, 0.349179f, 0.350748f, 0.351795f, 0.35169f, 0.352387f, 0.354046f, 0.354667f, 0.354575f, 0.355696f, 0.357238f, 0.357463f, 0.357584f, 0.359051f, 0.360296f, 0.360246f, 0.360731f, 0.362386f, 0.36322f, 0.363081f, 0.364f, 0.365639f, 0.366042f, 0.366023f, 0.367345f, 0.368766f, 0.368818f, 0.369102f, 0.370703f, 0.371753f, 0.371615f, 0.372317f, 0.374008f, 0.374615f, 0.374495f, 0.375637f, 0.377203f, 0.377401f, 0.377504f, 0.379002f, 0.380258f, 0.380173f, 0.380656f, 0.382346f, 0.383174f, 0.383001f, 0.383934f, 0.385604f, 0.385986f, 0.38594f, 0.387291f, 0.388731f, 0.38875f, 0.389023f, 0.39066f, 0.391712f, 0.391537f, 0.392246f, 0.393972f, 0.394565f, 0.394412f, 0.395577f, 0.39717f, 0.397338f, 0.397421f, 0.398954f, 0.400222f, 0.400099f, 0.400579f, 0.402308f, 0.40313f, 0.402919f, 0.403868f, 0.405572f, 0.405929f, 0.405855f, 0.407237f, 0.408699f, 0.408681f, 0.408941f, 0.410618f, 0.411674f, 0.411457f, 0.412173f, 0.413939f, 0.414515f, 0.414326f, 0.415516f, 0.41714f, 0.417275f, 0.417335f, 0.418908f, 0.420189f, 0.420023f, 0.4205f, 0.422273f, 0.423088f, 0.422834f, 0.4238f, 0.425543f, 0.425874f, 0.425767f, 0.427184f, 0.42867f, 0.428611f, 0.428856f, 0.430579f, 0.431638f, 0.431375f, 0.432098f, 0.433909f, 0.434467f, 0.434237f, 0.435455f, 0.437114f, 0.437212f, 0.437246f, 0.438862f, 0.440159f, 0.439945f, 0.440418f, 0.44224f, 0.443047f, 0.442745f, 0.443731f, 0.445518f, 0.445818f, 0.445674f, 0.447131f, 0.448645f, 0.448539f, 0.448767f, 0.450541f, 0.451605f, 0.451289f, 0.452021f, 0.453883f, 0.454421f, 0.454143f, 0.455394f, 0.457092f, 0.457148f, 0.457152f, 0.458818f, 0.460133f, 0.459865f, 0.460332f, 0.462211f, 0.46301f, 0.462653f, 0.46366f, 0.465498f, 0.465764f, 0.465577f, 0.467078f, 0.468625f, 0.468466f, 0.468674f, 0.470506f, 0.471576f, 0.4712f, 0.47194f, 0.473861f, 0.474376f, 0.474045f, 0.475331f, 0.477075f, 0.477084f, 0.477053f, 0.478775f, 0.480112f, 0.479782f, 0.480243f, 0.482186f, 0.482975f, 0.482555f, 0.483587f, 0.485482f, 0.48571f, 0.485475f, 0.487026f, 0.48861f, 0.488391f, 0.488576f, 0.490475f, 0.491552f, 0.491107f, 0.491856f, 0.493845f, 0.49433
\ No newline at end of file
     },
     
@@ -3484,12 +3482,9 @@
 .10852f, 0.108576f, 0.108825f, 0.109358f, 0.110216f, 0.111384f, 0.112791f, 0.114326f, 0.115854f, 0.11724f, 0.118378f, 0.119201f, 0.119699f, 0.119919f, 0.119957f, 0.119941f, 0.120008f, 0.120281f, 0.120846f, 0.12174f, 0.12294f, 0.12437f, 0.125915f, 0.127438f, 0.128806f, 0.129914f, 0.130703f, 0.131166f, 0.131359f, 0.131381f, 0.131363f, 0.131442f, 0.131739f, 0.132338f, 0.133266f, 0.134498f, 0.13595f, 0.137504f, 0.139021f, 0.14037f, 0.141449f, 0.142202f, 0.142632f, 0.142797f, 0.142803f, 0.142784f, 0.142877f, 0.1432f, 0.143832f, 0.144796f, 0.146058f, 0.147533f, 0.149095f, 0.150605f, 0.151933f, 0.152981f, 0.153698f, 0.154094f, 0.154233f, 0.154224f, 0.154205f, 0.154312f, 0.154662f, 0.155328f, 0.156328f, 0.157622f, 0.159117f, 0.160686f, 0.162188f, 0.163494f, 0.16451f, 0.165192f, 0.165554f, 0.165666f, 0.165644f, 0.165626f, 0.165749f, 0.166126f, 0.166827f, 0.167863f, 0.169188f, 0.170703f, 0.172277f, 0.173771f, 0.175054f, 0.176038f, 0.176683f, 0.17701f, 0.177097f, 0.177062f, 0.177046f, 0.177186f, 0.177593f, 0.178329f, 0.179401f, 0.180756f, 0.18229f, 0.18387f, 0.185353f, 0.186612f, 0.187563f, 0.188171f, 0.188464f, 0.188526f, 0.188479f, 0.188467f, 0.188625f, 0.189061f, 0.189834f, 0.190942f, 0.192327f, 0.19388f, 0.195463f, 0.196934f, 0.198169f, 0.199085f, 0.199656f, 0.199915f, 0.199952f, 0.199895f, 0.199887f, 0.200065f, 0.200532f, 0.201342f, 0.202486f, 0.203901f, 0.205471f, 0.207057f, 0.208515f, 0.209724f, 0.210605f, 0.211138f, 0.211364f, 0.211377f, 0.211309f, 0.211307f, 0.211506f, 0.212005f, 0.212852f, 0.214033f, 0.215477f, 0.217065f, 0.218652f, 0.220096f, 0.221277f, 0.222122f, 0.222617f, 0.222809f, 0.222799f, 0.222722f, 0.222727f, 0.222948f, 0.22348f, 0.224365f, 0.225584f, 0.227056f, 0.22866f, 0.230248f, 0.231676f, 0.232828f, 0.233636f, 0.234092f, 0.234251f, 0.234218f, 0.234134f, 0.234147f, 0.234391f, 0.234957f, 0.235882f, 0.237137f, 0.238638f, 0.240257f, 0.241844f, 0.243255f, 0.244377f, 0.245148f, 0.245565f, 0.24569f, 0.245635f, 0.245544f, 0.245567f, 0.245836f, 0.246437f, 0.247401f, 0.248694f, 0.250223f, 0.251856f, 0.253441f, 0.254834f, 0.255925f, 0.256657f, 0.257034f, 0.257126f, 0.25705f, 0.256953f, 0.256987f, 0.257281f, 0.257919f, 0.258923f, 0.260253f, 0.261811f, 0.263457f, 0.265039f, 0.266412f, 0.267471f, 0.268163f, 0.2685f, 0.268559f, 0.268462f, 0.26836f, 0.268407f, 0.268729f, 0.269404f, 0.270449f, 0.271817f, 0.273402f, 0.275061f, 0.276637f, 0.27799f, 0.279014f, 0.279666f, 0.279963f, 0.279988f, 0.279871f, 0.279766f, 0.279827f, 0.280177f, 0.280891f, 0.281978f, 0.283383f, 0.284995f, 0.286666f, 0.288237f, 0.289567f, 0.290556f, 0.291166f, 0.291422f, 0.291414f, 0.291278f, 0.291171f, 0.291246f, 0.291627f, 0.292381f, 0.293511f, 0.294954f, 0.296592f, 0.298273f, 0.299837f, 0.301143f, 0.302096f, 0.302663f, 0.302878f, 0.302837f, 0.302682f, 0.302573f, 0.302666f, 0.303078f, 0.303873f, 0.305047f, 0.306528f, 0.308192f, 0.309883f, 0.311438f, 0.312718f, 0.313633f, 0.314156f, 0.314329f, 0.314256f, 0.314083f, 0.313975f, 0.314086f, 0.314531f, 0.315369f, 0.316586f, 0.318106f, 0.319796f, 0.321495f, 0.32304f, 0.324293f, 0.325168f, 0.325647f, 0.325777f, 0.325671f, 0.325481f, 0.325374f, 0.325505f, 0.325986f, 0.326867f, 0.328129f, 0.329688f, 0.331403f, 0.33311f, 0.334642f, 0.335867f, 0.336701f, 0.337133f, 0.337221f, 0.337082f, 0.336876f, 0.336772f, 0.336925f, 0.337442f, 0.338368f, 0.339677f, 0.341274f, 0.343014f, 0.344727f, 0.346246f, 0.34744f, 0.348232f, 0.348617f, 0.34866f, 0.348489f, 0.348267f, 0.348168f, 0.348344f, 0.348899f, 0.349872f, 0.351228f, 0.352864f, 0.354628f, 0.356346f, 0.357851f, 0.359012f, 0.35976f, 0.360096f, 0.360096f, 0.359892f, 0.359656f, 0.359562f, 0.359763f, 0.360359f, 0.36138f, 0.362783f, 0.364459f, 0.366247f, 0.367969f, 0.369457f, 0.370584f, 0.371285f, 0.371572f, 0.371526f, 0.371291f, 0.371041f, 0.370954f, 0.371182f, 0.37182f, 0.372891f, 0.374343f, 0.376058f, 0.37787f, 0.379594f, 0.381064f, 0.382155f, 0.382808f, 0.383043f, 0.382952f, 0.382685f, 0.382422f, 0.382344f, 0.382601f, 0.383282f, 0.384405f, 0.385908f, 0.387663f, 0.389497f, 0.391223f, 0.392672f, 0.393725f, 0.394328f, 0.394511f, 0.394373f, 0.394073f, 0.393799f, 0.393731f, 0
\ No newline at end of file
     },
     
-576f, 0.108825f, 0.109358f, 0.110216f, 0.111384f, 0.112791f, 0.114326f, 0.115854f, 0.11724f, 0.118378f, 0.119201f, 0.119699f, 0.119919f, 0.119957f, 0.119941f, 0.120008f, 0.120281f, 0.120846f, 0.12174f, 0.12294f, 0.12437f, 0.125915f, 0.127438f, 0.128806f, 0.129914f, 0.130703f, 0.131166f, 0.131359f, 0.131381f, 0.131363f, 0.131442f, 0.131739f, 0.132338f, 0.133266f, 0.134498f, 0.13595f, 0.137504f, 0.139021f, 0.14037f, 0.141449f, 0.142202f, 0.142632f, 0.142797f, 0.142803f, 0.142784f, 0.142877f, 0.1432f, 0.143832f, 0.144796f, 0.146058f, 0.147533f, 0.149095f, 0.150605f, 0.151933f, 0.152981f, 0.153698f, 0.154094f, 0.154233f, 0.154224f, 0.154205f, 0.154312f, 0.154662f, 0.155328f, 0.156328f, 0.157622f, 0.159117f, 0.160686f, 0.162188f, 0.163494f, 0.16451f, 0.165192f, 0.165554f, 0.165666f, 0.165644f, 0.165626f, 0.165749f, 0.166126f, 0.166827f, 0.167863f, 0.169188f, 0.170703f, 0.172277f, 0.173771f, 0.175054f, 0.176038f, 0.176683f, 0.17701f, 0.177097f, 0.177062f, 0.177046f, 0.177186f, 0.177593f, 0.178329f, 0.179401f, 0.180756f, 0.18229f, 0.18387f, 0.185353f, 0.186612f, 0.187563f, 0.188171f, 0.188464f, 0.188526f, 0.188479f, 0.188467f, 0.188625f, 0.189061f, 0.189834f, 0.190942f, 0.192327f, 0.19388f, 0.195463f, 0.196934f, 0.198169f, 0.199085f, 0.199656f, 0.199915f, 0.199952f, 0.199895f, 0.199887f, 0.200065f, 0.200532f, 0.201342f, 0.202486f, 0.203901f, 0.205471f, 0.207057f, 0.208515f, 0.209724f, 0.210605f, 0.211138f, 0.211364f, 0.211377f, 0.211309f, 0.211307f, 0.211506f, 0.212005f, 0.212852f, 0.214033f, 0.215477f, 0.217065f, 0.218652f, 0.220096f, 0.221277f, 0.222122f, 0.222617f, 0.222809f, 0.222799f, 0.222722f, 0.222727f, 0.222948f, 0.22348f, 0.224365f, 0.225584f, 0.227056f, 0.22866f, 0.230248f, 0.231676f, 0.232828f, 0.233636f, 0.234092f, 0.234251f, 0.234218f, 0.234134f, 0.234147f, 0.234391f, 0.234957f, 0.235882f, 0.237137f, 0.238638f, 0.240257f, 0.241844f, 0.243255f, 0.244377f, 0.245148f, 0.245565f, 0.24569f, 0.245635f, 0.245544f, 0.245567f, 0.245836f, 0.246437f, 0.247401f, 0.248694f, 0.250223f, 0.251856f, 0.253441f, 0.254834f, 0.255925f, 0.256657f, 0.257034f, 0.257126f, 0.25705f, 0.256953f, 0.256987f, 0.257281f, 0.257919f, 0.258923f, 0.260253f, 0.261811f, 0.263457f, 0.265039f, 0.266412f, 0.267471f, 0.268163f, 0.2685f, 0.268559f, 0.268462f, 0.26836f, 0.268407f, 0.268729f, 0.269404f, 0.270449f, 0.271817f, 0.273402f, 0.275061f, 0.276637f, 0.27799f, 0.279014f, 0.279666f, 0.279963f, 0.279988f, 0.279871f, 0.279766f, 0.279827f, 0.280177f, 0.280891f, 0.281978f, 0.283383f, 0.284995f, 0.286666f, 0.288237f, 0.289567f, 0.290556f, 0.291166f, 0.291422f, 0.291414f, 0.291278f, 0.291171f, 0.291246f, 0.291627f, 0.292381f, 0.293511f, 0.294954f, 0.296592f, 0.298273f, 0.299837f, 0.301143f, 0.302096f, 0.302663f, 0.302878f, 0.302837f, 0.302682f, 0.302573f, 0.302666f, 0.303078f, 0.303873f, 0.305047f, 0.306528f, 0.308192f, 0.309883f, 0.311438f, 0.312718f, 0.313633f, 0.314156f, 0.314329f, 0.314256f, 0.314083f, 0.313975f, 0.314086f, 0.314531f, 0.315369f, 0.316586f, 0.318106f, 0.319796f, 0.321495f, 0.32304f, 0.324293f, 0.325168f, 0.325647f, 0.325777f, 0.325671f, 0.325481f, 0.325374f, 0.325505f, 0.325986f, 0.326867f, 0.328129f, 0.329688f, 0.331403f, 0.33311f, 0.334642f, 0.335867f, 0.336701f, 0.337133f, 0.337221f, 0.337082f, 0.336876f, 0.336772f, 0.336925f, 0.337442f, 0.338368f, 0.339677f, 0.341274f, 0.343014f, 0.344727f, 0.346246f, 0.34744f, 0.348232f, 0.348617f, 0.34866f, 0.348489f, 0.348267f, 0.348168f, 0.348344f, 0.348899f, 0.349872f, 0.351228f, 0.352864f, 0.354628f, 0.356346f, 0.357851f, 0.359012f, 0.35976f, 0.360096f, 0.360096f, 0.359892f, 0.359656f, 0.359562f, 0.359763f, 0.360359f, 0.36138f, 0.362783f, 0.364459f, 0.366247f, 0.367969f, 0.369457f, 0.370584f, 0.371285f, 0.371572f, 0.371526f, 0.371291f, 0.371041f, 0.370954f, 0.371182f, 0.37182f, 0.372891f, 0.374343f, 0.376058f, 0.37787f, 0.379594f, 0.381064f, 0.382155f, 0.382808f, 0.383043f, 0.382952f, 0.382685f, 0.382422f, 0.382344f, 0.382601f, 0.383282f, 0.384405f, 0.385908f, 0.387663f, 0.389497f, 0.391223f, 0.392672f, 0.393725f, 0.394328f, 0.394511f, 0.394373f, 0.394073f, 0.393799f, 0.393731f, 0.394019f, 0.39
\ No newline at end of file
+115854f, 0.11724f, 0.118378f, 0.119201f, 0.119699f, 0.119919f, 0.119957f, 0.119941f, 0.120008f, 0.120281f, 0.120846f, 0.12174f, 0.12294f, 0.12437f, 0.125915f, 0.127438f, 0.128806f, 0.129914f, 0.130703f, 0.131166f, 0.131359f, 0.131381f, 0.131363f, 0.131442f, 0.131739f, 0.132338f, 0.133266f, 0.134498f, 0.13595f, 0.137504f, 0.139021f, 0.14037f, 0.141449f, 0.142202f, 0.142632f, 0.142797f, 0.142803f, 0.142784f, 0.142877f, 0.1432f, 0.143832f, 0.144796f, 0.146058f, 0.147533f, 0.149095f, 0.150605f, 0.151933f, 0.152981f, 0.153698f, 0.154094f, 0.154233f, 0.154224f, 0.154205f, 0.154312f, 0.154662f, 0.155328f, 0.156328f, 0.157622f, 0.159117f, 0.160686f, 0.162188f, 0.163494f, 0.16451f, 0.165192f, 0.165554f, 0.165666f, 0.165644f, 0.165626f, 0.165749f, 0.166126f, 0.166827f, 0.167863f, 0.169188f, 0.170703f, 0.172277f, 0.173771f, 0.175054f, 0.176038f, 0.176683f, 0.17701f, 0.177097f, 0.177062f, 0.177046f, 0.177186f, 0.177593f, 0.178329f, 0.179401f, 0.180756f, 0.18229f, 0.18387f, 0.185353f, 0.186612f, 0.187563f, 0.188171f, 0.188464f, 0.188526f, 0.188479f, 0.188467f, 0.188625f, 0.189061f, 0.189834f, 0.190942f, 0.192327f, 0.19388f, 0.195463f, 0.196934f, 0.198169f, 0.199085f, 0.199656f, 0.199915f, 0.199952f, 0.199895f, 0.199887f, 0.200065f, 0.200532f, 0.201342f, 0.202486f, 0.203901f, 0.205471f, 0.207057f, 0.208515f, 0.209724f, 0.210605f, 0.211138f, 0.211364f, 0.211377f, 0.211309f, 0.211307f, 0.211506f, 0.212005f, 0.212852f, 0.214033f, 0.215477f, 0.217065f, 0.218652f, 0.220096f, 0.221277f, 0.222122f, 0.222617f, 0.222809f, 0.222799f, 0.222722f, 0.222727f, 0.222948f, 0.22348f, 0.224365f, 0.225584f, 0.227056f, 0.22866f, 0.230248f, 0.231676f, 0.232828f, 0.233636f, 0.234092f, 0.234251f, 0.234218f, 0.234134f, 0.234147f, 0.234391f, 0.234957f, 0.235882f, 0.237137f, 0.238638f, 0.240257f, 0.241844f, 0.243255f, 0.244377f, 0.245148f, 0.245565f, 0.24569f, 0.245635f, 0.245544f, 0.245567f, 0.245836f, 0.246437f, 0.247401f, 0.248694f, 0.250223f, 0.251856f, 0.253441f, 0.254834f, 0.255925f, 0.256657f, 0.257034f, 0.257126f, 0.25705f, 0.256953f, 0.256987f, 0.257281f, 0.257919f, 0.258923f, 0.260253f, 0.261811f, 0.263457f, 0.265039f, 0.266412f, 0.267471f, 0.268163f, 0.2685f, 0.268559f, 0.268462f, 0.26836f, 0.268407f, 0.268729f, 0.269404f, 0.270449f, 0.271817f, 0.273402f, 0.275061f, 0.276637f, 0.27799f, 0.279014f, 0.279666f, 0.279963f, 0.279988f, 0.279871f, 0.279766f, 0.279827f, 0.280177f, 0.280891f, 0.281978f, 0.283383f, 0.284995f, 0.286666f, 0.288237f, 0.289567f, 0.290556f, 0.291166f, 0.291422f, 0.291414f, 0.291278f, 0.291171f, 0.291246f, 0.291627f, 0.292381f, 0.293511f, 0.294954f, 0.296592f, 0.298273f, 0.299837f, 0.301143f, 0.302096f, 0.302663f, 0.302878f, 0.302837f, 0.302682f, 0.302573f, 0.302666f, 0.303078f, 0.303873f, 0.305047f, 0.306528f, 0.308192f, 0.309883f, 0.311438f, 0.312718f, 0.313633f, 0.314156f, 0.314329f, 0.314256f, 0.314083f, 0.313975f, 0.314086f, 0.314531f, 0.315369f, 0.316586f, 0.318106f, 0.319796f, 0.321495f, 0.32304f, 0.324293f, 0.325168f, 0.325647f, 0.325777f, 0.325671f, 0.325481f, 0.325374f, 0.325505f, 0.325986f, 0.326867f, 0.328129f, 0.329688f, 0.331403f, 0.33311f, 0.334642f, 0.335867f, 0.336701f, 0.337133f, 0.337221f, 0.337082f, 0.336876f, 0.336772f, 0.336925f, 0.337442f, 0.338368f, 0.339677f, 0.341274f, 0.343014f, 0.344727f, 0.346246f, 0.34744f, 0.348232f, 0.348617f, 0.34866f, 0.348489f, 0.348267f, 0.348168f, 0.348344f, 0.348899f, 0.349872f, 0.351228f, 0.352864f, 0.354628f, 0.356346f, 0.357851f, 0.359012f, 0.35976f, 0.360096f, 0.360096f, 0.359892f, 0.359656f, 0.359562f, 0.359763f, 0.360359f, 0.36138f, 0.362783f, 0.364459f, 0.366247f, 0.367969f, 0.369457f, 0.370584f, 0.371285f, 0.371572f, 0.371526f, 0.371291f, 0.371041f, 0.370954f, 0.371182f, 0.37182f, 0.372891f, 0.374343f, 0.376058f, 0.37787f, 0.379594f, 0.381064f, 0.382155f, 0.382808f, 0.383043f, 0.382952f, 0.382685f, 0.382422f, 0.382344f, 0.382601f, 0.383282f, 0.384405f, 0.385908f, 0.387663f, 0.389497f, 0.391223f, 0.392672f, 0.393725f, 0.394328f, 0.394511f, 0.394373f, 0.394073f, 0.393799f, 0.393731f, 0.394019f, 0.394747f, 0.395923f, 0.397478f, 0.399273f, 0.401129f, 0.402855f, 0.404282f, 0
\ No newline at end of file
 108825f, 0.109358f, 0.110216f, 0.111384f, 0.112791f, 0.114326f, 0.115854f, 0.11724f, 0.118378f, 0.119201f, 0.119699f, 0.119919f, 0.119957f, 0.119941f, 0.120008f, 0.120281f, 0.120846f, 0.12174f, 0.12294f, 0.12437f, 0.125915f, 0.127438f, 0.128806f, 0.129914f, 0.130703f, 0.131166f, 0.131359f, 0.131381f, 0.131363f, 0.131442f, 0.131739f, 0.132338f, 0.133266f, 0.134498f, 0.13595f, 0.137504f, 0.139021f, 0.14037f, 0.141449f, 0.142202f, 0.142632f, 0.142797f, 0.142803f, 0.142784f, 0.142877f, 0.1432f, 0.143832f, 0.144796f, 0.146058f, 0.147533f, 0.149095f, 0.150605f, 0.151933f, 0.152981f, 0.153698f, 0.154094f, 0.154233f, 0.154224f, 0.154205f, 0.154312f, 0.154662f, 0.155328f, 0.156328f, 0.157622f, 0.159117f, 0.160686f, 0.162188f, 0.163494f, 0.16451f, 0.165192f, 0.165554f, 0.165666f, 0.165644f, 0.165626f, 0.165749f, 0.166126f, 0.166827f, 0.167863f, 0.169188f, 0.170703f, 0.172277f, 0.173771f, 0.175054f, 0.176038f, 0.176683f, 0.17701f, 0.177097f, 0.177062f, 0.177046f, 0.177186f, 0.177593f, 0.178329f, 0.179401f, 0.180756f, 0.18229f, 0.18387f, 0.185353f, 0.186612f, 0.187563f, 0.188171f, 0.188464f, 0.188526f, 0.188479f, 0.188467f, 0.188625f, 0.189061f, 0.189834f, 0.190942f, 0.192327f, 0.19388f, 0.195463f, 0.196934f, 0.198169f, 0.199085f, 0.199656f, 0.199915f, 0.199952f, 0.199895f, 0.199887f, 0.200065f, 0.200532f, 0.201342f, 0.202486f, 0.203901f, 0.205471f, 0.207057f, 0.208515f, 0.209724f, 0.210605f, 0.211138f, 0.211364f, 0.211377f, 0.211309f, 0.211307f, 0.211506f, 0.212005f, 0.212852f, 0.214033f, 0.215477f, 0.217065f, 0.218652f, 0.220096f, 0.221277f, 0.222122f, 0.222617f, 0.222809f, 0.222799f, 0.222722f, 0.222727f, 0.222948f, 0.22348f, 0.224365f, 0.225584f, 0.227056f, 0.22866f, 0.230248f, 0.231676f, 0.232828f, 0.233636f, 0.234092f, 0.234251f, 0.234218f, 0.234134f, 0.234147f, 0.234391f, 0.234957f, 0.235882f, 0.237137f, 0.238638f, 0.240257f, 0.241844f, 0.243255f, 0.244377f, 0.245148f, 0.245565f, 0.24569f, 0.245635f, 0.245544f, 0.245567f, 0.245836f, 0.246437f, 0.247401f, 0.248694f, 0.250223f, 0.251856f, 0.253441f, 0.254834f, 0.255925f, 0.256657f, 0.257034f, 0.257126f, 0.25705f, 0.256953f, 0.256987f, 0.257281f, 0.257919f, 0.258923f, 0.260253f, 0.261811f, 0.263457f, 0.265039f, 0.266412f, 0.267471f, 0.268163f, 0.2685f, 0.268559f, 0.268462f, 0.26836f, 0.268407f, 0.268729f, 0.269404f, 0.270449f, 0.271817f, 0.273402f, 0.275061f, 0.276637f, 0.27799f, 0.279014f, 0.279666f, 0.279963f, 0.279988f, 0.279871f, 0.279766f, 0.279827f, 0.280177f, 0.280891f, 0.281978f, 0.283383f, 0.284995f, 0.286666f, 0.288237f, 0.289567f, 0.290556f, 0.291166f, 0.291422f, 0.291414f, 0.291278f, 0.291171f, 0.291246f, 0.291627f, 0.292381f, 0.293511f, 0.294954f, 0.296592f, 0.298273f, 0.299837f, 0.301143f, 0.302096f, 0.302663f, 0.302878f, 0.302837f, 0.302682f, 0.302573f, 0.302666f, 0.303078f, 0.303873f, 0.305047f, 0.306528f, 0.308192f, 0.309883f, 0.311438f, 0.312718f, 0.313633f, 0.314156f, 0.314329f, 0.314256f, 0.314083f, 0.313975f, 0.314086f, 0.314531f, 0.315369f, 0.316586f, 0.318106f, 0.319796f, 0.321495f, 0.32304f, 0.324293f, 0.325168f, 0.325647f, 0.325777f, 0.325671f, 0.325481f, 0.325374f, 0.325505f, 0.325986f, 0.326867f, 0.328129f, 0.329688f, 0.331403f, 0.33311f, 0.334642f, 0.335867f, 0.336701f, 0.337133f, 0.337221f, 0.337082f, 0.336876f, 0.336772f, 0.336925f, 0.337442f, 0.338368f, 0.339677f, 0.341274f, 0.343014f, 0.344727f, 0.346246f, 0.34744f, 0.348232f, 0.348617f, 0.34866f, 0.348489f, 0.348267f, 0.348168f, 0.348344f, 0.348899f, 0.349872f, 0.351228f, 0.352864f, 0.354628f, 0.356346f, 0.357851f, 0.359012f, 0.35976f, 0.360096f, 0.360096f, 0.359892f, 0.359656f, 0.359562f, 0.359763f, 0.360359f, 0.36138f, 0.362783f, 0.364459f, 0.366247f, 0.367969f, 0.369457f, 0.370584f, 0.371285f, 0.371572f, 0.371526f, 0.371291f, 0.371041f, 0.370954f, 0.371182f, 0.37182f, 0.372891f, 0.374343f, 0.376058f, 0.37787f, 0.379594f, 0.381064f, 0.382155f, 0.382808f, 0.383043f, 0.382952f, 0.382685f, 0.382422f, 0.382344f, 0.382601f, 0.383282f, 0.384405f, 0.385908f, 0.387663f, 0.389497f, 0.391223f, 0.392672f, 0.393725f, 0.394328f, 0.394511f, 0.394373f, 0.394073f, 0.393799f, 0.393731f, 0.394019f, 0.394747f, 0
\ No newline at end of file
-8825f, 0.109358f, 0.110216f, 0.111384f, 0.112791f, 0.114326f, 0.115854f, 0.11724f, 0.118378f, 0.119201f, 0.119699f, 0.119919f, 0.119957f, 0.119941f, 0.120008f, 0.120281f, 0.120846f, 0.12174f, 0.12294f, 0.12437f, 0.125915f, 0.127438f, 0.128806f, 0.129914f, 0.130703f, 0.131166f, 0.131359f, 0.131381f, 0.131363f, 0.131442f, 0.131739f, 0.132338f, 0.133266f, 0.134498f, 0.13595f, 0.137504f, 0.139021f, 0.14037f, 0.141449f, 0.142202f, 0.142632f, 0.142797f, 0.142803f, 0.142784f, 0.142877f, 0.1432f, 0.143832f, 0.144796f, 0.146058f, 0.147533f, 0.149095f, 0.150605f, 0.151933f, 0.152981f, 0.153698f, 0.154094f, 0.154233f, 0.154224f, 0.154205f, 0.154312f, 0.154662f, 0.155328f, 0.156328f, 0.157622f, 0.159117f, 0.160686f, 0.162188f, 0.163494f, 0.16451f, 0.165192f, 0.165554f, 0.165666f, 0.165644f, 0.165626f, 0.165749f, 0.166126f, 0.166827f, 0.167863f, 0.169188f, 0.170703f, 0.172277f, 0.173771f, 0.175054f, 0.176038f, 0.176683f, 0.17701f, 0.177097f, 0.177062f, 0.177046f, 0.177186f, 0.177593f, 0.178329f, 0.179401f, 0.180756f, 0.18229f, 0.18387f, 0.185353f, 0.186612f, 0.187563f, 0.188171f, 0.188464f, 0.188526f, 0.188479f, 0.188467f, 0.188625f, 0.189061f, 0.189834f, 0.190942f, 0.192327f, 0.19388f, 0.195463f, 0.196934f, 0.198169f, 0.199085f, 0.199656f, 0.199915f, 0.199952f, 0.199895f, 0.199887f, 0.200065f, 0.200532f, 0.201342f, 0.202486f, 0.203901f, 0.205471f, 0.207057f, 0.208515f, 0.209724f, 0.210605f, 0.211138f, 0.211364f, 0.211377f, 0.211309f, 0.211307f, 0.211506f, 0.212005f, 0.212852f, 0.214033f, 0.215477f, 0.217065f, 0.218652f, 0.220096f, 0.221277f, 0.222122f, 0.222617f, 0.222809f, 0.222799f, 0.222722f, 0.222727f, 0.222948f, 0.22348f, 0.224365f, 0.225584f, 0.227056f, 0.22866f, 0.230248f, 0.231676f, 0.232828f, 0.233636f, 0.234092f, 0.234251f, 0.234218f, 0.234134f, 0.234147f, 0.234391f, 0.234957f, 0.235882f, 0.237137f, 0.238638f, 0.240257f, 0.241844f, 0.243255f, 0.244377f, 0.245148f, 0.245565f, 0.24569f, 0.245635f, 0.245544f, 0.245567f, 0.245836f, 0.246437f, 0.247401f, 0.248694f, 0.250223f, 0.251856f, 0.253441f, 0.254834f, 0.255925f, 0.256657f, 0.257034f, 0.257126f, 0.25705f, 0.256953f, 0.256987f, 0.257281f, 0.257919f, 0.258923f, 0.260253f, 0.261811f, 0.263457f, 0.265039f, 0.266412f, 0.267471f, 0.268163f, 0.2685f, 0.268559f, 0.268462f, 0.26836f, 0.268407f, 0.268729f, 0.269404f, 0.270449f, 0.271817f, 0.273402f, 0.275061f, 0.276637f, 0.27799f, 0.279014f, 0.279666f, 0.279963f, 0.279988f, 0.279871f, 0.279766f, 0.279827f, 0.280177f, 0.280891f, 0.281978f, 0.283383f, 0.284995f, 0.286666f, 0.288237f, 0.289567f, 0.290556f, 0.291166f, 0.291422f, 0.291414f, 0.291278f, 0.291171f, 0.291246f, 0.291627f, 0.292381f, 0.293511f, 0.294954f, 0.296592f, 0.298273f, 0.299837f, 0.301143f, 0.302096f, 0.302663f, 0.302878f, 0.302837f, 0.302682f, 0.302573f, 0.302666f, 0.303078f, 0.303873f, 0.305047f, 0.306528f, 0.308192f, 0.309883f, 0.311438f, 0.312718f, 0.313633f, 0.314156f, 0.314329f, 0.314256f, 0.314083f, 0.313975f, 0.314086f, 0.314531f, 0.315369f, 0.316586f, 0.318106f, 0.319796f, 0.321495f, 0.32304f, 0.324293f, 0.325168f, 0.325647f, 0.325777f, 0.325671f, 0.325481f, 0.325374f, 0.325505f, 0.325986f, 0.326867f, 0.328129f, 0.329688f, 0.331403f, 0.33311f, 0.334642f, 0.335867f, 0.336701f, 0.337133f, 0.337221f, 0.337082f, 0.336876f, 0.336772f, 0.336925f, 0.337442f, 0.338368f, 0.339677f, 0.341274f, 0.343014f, 0.344727f, 0.346246f, 0.34744f, 0.348232f, 0.348617f, 0.34866f, 0.348489f, 0.348267f, 0.348168f, 0.348344f, 0.348899f, 0.349872f, 0.351228f, 0.352864f, 0.354628f, 0.356346f, 0.357851f, 0.359012f, 0.35976f, 0.360096f, 0.360096f, 0.359892f, 0.359656f, 0.359562f, 0.359763f, 0.360359f, 0.36138f, 0.362783f, 0.364459f, 0.366247f, 0.367969f, 0.369457f, 0.370584f, 0.371285f, 0.371572f, 0.371526f, 0.371291f, 0.371041f, 0.370954f, 0.371182f, 0.37182f, 0.372891f, 0.374343f, 0.376058f, 0.37787f, 0.379594f, 0.381064f, 0.382155f, 0.382808f, 0.383043f, 0.382952f, 0.382685f, 0.382422f, 0.382344f, 0.382601f, 0.383282f, 0.384405f, 0.385908f, 0.387663f, 0.389497f, 0.391223f, 0.392672f, 0.393725f, 0.394328f, 0.394511f, 0.394373f, 0.394073f, 0.393799f, 0.393731f, 0.394019f, 0.394747f, 0.3
\ No newline at end of file
-    },
-    
-    {
+, 0.119699f, 0.119919f, 0.119957f, 0.119941f, 0.120008f, 0.120281f, 0.120846f, 0.12174f, 0.12294f, 0.12437f, 0.125915f, 0.127438f, 0.128806f, 0.129914f, 0.130703f, 0.131166f, 0.131359f, 0.131381f, 0.131363f, 0.131442f, 0.131739f, 0.132338f, 0.133266f, 0.134498f, 0.13595f, 0.137504f, 0.139021f, 0.14037f, 0.141449f, 0.142202f, 0.142632f, 0.142797f, 0.142803f, 0.142784f, 0.142877f, 0.1432f, 0.143832f, 0.144796f, 0.146058f, 0.147533f, 0.149095f, 0.150605f, 0.151933f, 0.152981f, 0.153698f, 0.154094f, 0.154233f, 0.154224f, 0.154205f, 0.154312f, 0.154662f, 0.155328f, 0.156328f, 0.157622f, 0.159117f, 0.160686f, 0.162188f, 0.163494f, 0.16451f, 0.165192f, 0.165554f, 0.165666f, 0.165644f, 0.165626f, 0.165749f, 0.166126f, 0.166827f, 0.167863f, 0.169188f, 0.170703f, 0.172277f, 0.173771f, 0.175054f, 0.176038f, 0.176683f, 0.17701f, 0.177097f, 0.177062f, 0.177046f, 0.177186f, 0.177593f, 0.178329f, 0.179401f, 0.180756f, 0.18229f, 0.18387f, 0.185353f, 0.186612f, 0.187563f, 0.188171f, 0.188464f, 0.188526f, 0.188479f, 0.188467f, 0.188625f, 0.189061f, 0.189834f, 0.190942f, 0.192327f, 0.19388f, 0.195463f, 0.196934f, 0.198169f, 0.199085f, 0.199656f, 0.199915f, 0.199952f, 0.199895f, 0.199887f, 0.200065f, 0.200532f, 0.201342f, 0.202486f, 0.203901f, 0.205471f, 0.207057f, 0.208515f, 0.209724f, 0.210605f, 0.211138f, 0.211364f, 0.211377f, 0.211309f, 0.211307f, 0.211506f, 0.212005f, 0.212852f, 0.214033f, 0.215477f, 0.217065f, 0.218652f, 0.220096f, 0.221277f, 0.222122f, 0.222617f, 0.222809f, 0.222799f, 0.222722f, 0.222727f, 0.222948f, 0.22348f, 0.224365f, 0.225584f, 0.227056f, 0.22866f, 0.230248f, 0.231676f, 0.232828f, 0.233636f, 0.234092f, 0.234251f, 0.234218f, 0.234134f, 0.234147f, 0.234391f, 0.234957f, 0.235882f, 0.237137f, 0.238638f, 0.240257f, 0.241844f, 0.243255f, 0.244377f, 0.245148f, 0.245565f, 0.24569f, 0.245635f, 0.245544f, 0.245567f, 0.245836f, 0.246437f, 0.247401f, 0.248694f, 0.250223f, 0.251856f, 0.253441f, 0.254834f, 0.255925f, 0.256657f, 0.257034f, 0.257126f, 0.25705f, 0.256953f, 0.256987f, 0.257281f, 0.257919f, 0.258923f, 0.260253f, 0.261811f, 0.263457f, 0.265039f, 0.266412f, 0.267471f, 0.268163f, 0.2685f, 0.268559f, 0.268462f, 0.26836f, 0.268407f, 0.268729f, 0.269404f, 0.270449f, 0.271817f, 0.273402f, 0.275061f, 0.276637f, 0.27799f, 0.279014f, 0.279666f, 0.279963f, 0.279988f, 0.279871f, 0.279766f, 0.279827f, 0.280177f, 0.280891f, 0.281978f, 0.283383f, 0.284995f, 0.286666f, 0.288237f, 0.289567f, 0.290556f, 0.291166f, 0.291422f, 0.291414f, 0.291278f, 0.291171f, 0.291246f, 0.291627f, 0.292381f, 0.293511f, 0.294954f, 0.296592f, 0.298273f, 0.299837f, 0.301143f, 0.302096f, 0.302663f, 0.302878f, 0.302837f, 0.302682f, 0.302573f, 0.302666f, 0.303078f, 0.303873f, 0.305047f, 0.306528f, 0.308192f, 0.309883f, 0.311438f, 0.312718f, 0.313633f, 0.314156f, 0.314329f, 0.314256f, 0.314083f, 0.313975f, 0.314086f, 0.314531f, 0.315369f, 0.316586f, 0.318106f, 0.319796f, 0.321495f, 0.32304f, 0.324293f, 0.325168f, 0.325647f, 0.325777f, 0.325671f, 0.325481f, 0.325374f, 0.325505f, 0.325986f, 0.326867f, 0.328129f, 0.329688f, 0.331403f, 0.33311f, 0.334642f, 0.335867f, 0.336701f, 0.337133f, 0.337221f, 0.337082f, 0.336876f, 0.336772f, 0.336925f, 0.337442f, 0.338368f, 0.339677f, 0.341274f, 0.343014f, 0.344727f, 0.346246f, 0.34744f, 0.348232f, 0.348617f, 0.34866f, 0.348489f, 0.348267f, 0.348168f, 0.348344f, 0.348899f, 0.349872f, 0.351228f, 0.352864f, 0.354628f, 0.356346f, 0.357851f, 0.359012f, 0.35976f, 0.360096f, 0.360096f, 0.359892f, 0.359656f, 0.359562f, 0.359763f, 0.360359f, 0.36138f, 0.362783f, 0.364459f, 0.366247f, 0.367969f, 0.369457f, 0.370584f, 0.371285f, 0.371572f, 0.371526f, 0.371291f, 0.371041f, 0.370954f, 0.371182f, 0.37182f, 0.372891f, 0.374343f, 0.376058f, 0.37787f, 0.379594f, 0.381064f, 0.382155f, 0.382808f, 0.383043f, 0.382952f, 0.382685f, 0.382422f, 0.382344f, 0.382601f, 0.383282f, 0.384405f, 0.385908f, 0.387663f, 0.389497f, 0.391223f, 0.392672f, 0.393725f, 0.394328f, 0.394511f, 0.394373f, 0.394073f, 0.393799f, 0.393731f, 0.394019f, 0.394747f, 0.395923f, 0.397478f, 0.399273f, 0.401129f, 0.402855f, 0.404282f, 0.405294f, 0.405845f, 0.405973f, 0.40578
\ No newline at end of file
 11384f, 0.112791f, 0.114326f, 0.115854f, 0.11724f, 0.118378f, 0.119201f, 0.119699f, 0.119919f, 0.119957f, 0.119941f, 0.120008f, 0.120281f, 0.120846f, 0.12174f, 0.12294f, 0.12437f, 0.125915f, 0.127438f, 0.128806f, 0.129914f, 0.130703f, 0.131166f, 0.131359f, 0.131381f, 0.131363f, 0.131442f, 0.131739f, 0.132338f, 0.133266f, 0.134498f, 0.13595f, 0.137504f, 0.139021f, 0.14037f, 0.141449f, 0.142202f, 0.142632f, 0.142797f, 0.142803f, 0.142784f, 0.142877f, 0.1432f, 0.143832f, 0.144796f, 0.146058f, 0.147533f, 0.149095f, 0.150605f, 0.151933f, 0.152981f, 0.153698f, 0.154094f, 0.154233f, 0.154224f, 0.154205f, 0.154312f, 0.154662f, 0.155328f, 0.156328f, 0.157622f, 0.159117f, 0.160686f, 0.162188f, 0.163494f, 0.16451f, 0.165192f, 0.165554f, 0.165666f, 0.165644f, 0.165626f, 0.165749f, 0.166126f, 0.166827f, 0.167863f, 0.169188f, 0.170703f, 0.172277f, 0.173771f, 0.175054f, 0.176038f, 0.176683f, 0.17701f, 0.177097f, 0.177062f, 0.177046f, 0.177186f, 0.177593f, 0.178329f, 0.179401f, 0.180756f, 0.18229f, 0.18387f, 0.185353f, 0.186612f, 0.187563f, 0.188171f, 0.188464f, 0.188526f, 0.188479f, 0.188467f, 0.188625f, 0.189061f, 0.189834f, 0.190942f, 0.192327f, 0.19388f, 0.195463f, 0.196934f, 0.198169f, 0.199085f, 0.199656f, 0.199915f, 0.199952f, 0.199895f, 0.199887f, 0.200065f, 0.200532f, 0.201342f, 0.202486f, 0.203901f, 0.205471f, 0.207057f, 0.208515f, 0.209724f, 0.210605f, 0.211138f, 0.211364f, 0.211377f, 0.211309f, 0.211307f, 0.211506f, 0.212005f, 0.212852f, 0.214033f, 0.215477f, 0.217065f, 0.218652f, 0.220096f, 0.221277f, 0.222122f, 0.222617f, 0.222809f, 0.222799f, 0.222722f, 0.222727f, 0.222948f, 0.22348f, 0.224365f, 0.225584f, 0.227056f, 0.22866f, 0.230248f, 0.231676f, 0.232828f, 0.233636f, 0.234092f, 0.234251f, 0.234218f, 0.234134f, 0.234147f, 0.234391f, 0.234957f, 0.235882f, 0.237137f, 0.238638f, 0.240257f, 0.241844f, 0.243255f, 0.244377f, 0.245148f, 0.245565f, 0.24569f, 0.245635f, 0.245544f, 0.245567f, 0.245836f, 0.246437f, 0.247401f, 0.248694f, 0.250223f, 0.251856f, 0.253441f, 0.254834f, 0.255925f, 0.256657f, 0.257034f, 0.257126f, 0.25705f, 0.256953f, 0.256987f, 0.257281f, 0.257919f, 0.258923f, 0.260253f, 0.261811f, 0.263457f, 0.265039f, 0.266412f, 0.267471f, 0.268163f, 0.2685f, 0.268559f, 0.268462f, 0.26836f, 0.268407f, 0.268729f, 0.269404f, 0.270449f, 0.271817f, 0.273402f, 0.275061f, 0.276637f, 0.27799f, 0.279014f, 0.279666f, 0.279963f, 0.279988f, 0.279871f, 0.279766f, 0.279827f, 0.280177f, 0.280891f, 0.281978f, 0.283383f, 0.284995f, 0.286666f, 0.288237f, 0.289567f, 0.290556f, 0.291166f, 0.291422f, 0.291414f, 0.291278f, 0.291171f, 0.291246f, 0.291627f, 0.292381f, 0.293511f, 0.294954f, 0.296592f, 0.298273f, 0.299837f, 0.301143f, 0.302096f, 0.302663f, 0.302878f, 0.302837f, 0.302682f, 0.302573f, 0.302666f, 0.303078f, 0.303873f, 0.305047f, 0.306528f, 0.308192f, 0.309883f, 0.311438f, 0.312718f, 0.313633f, 0.314156f, 0.314329f, 0.314256f, 0.314083f, 0.313975f, 0.314086f, 0.314531f, 0.315369f, 0.316586f, 0.318106f, 0.319796f, 0.321495f, 0.32304f, 0.324293f, 0.325168f, 0.325647f, 0.325777f, 0.325671f, 0.325481f, 0.325374f, 0.325505f, 0.325986f, 0.326867f, 0.328129f, 0.329688f, 0.331403f, 0.33311f, 0.334642f, 0.335867f, 0.336701f, 0.337133f, 0.337221f, 0.337082f, 0.336876f, 0.336772f, 0.336925f, 0.337442f, 0.338368f, 0.339677f, 0.341274f, 0.343014f, 0.344727f, 0.346246f, 0.34744f, 0.348232f, 0.348617f, 0.34866f, 0.348489f, 0.348267f, 0.348168f, 0.348344f, 0.348899f, 0.349872f, 0.351228f, 0.352864f, 0.354628f, 0.356346f, 0.357851f, 0.359012f, 0.35976f, 0.360096f, 0.360096f, 0.359892f, 0.359656f, 0.359562f, 0.359763f, 0.360359f, 0.36138f, 0.362783f, 0.364459f, 0.366247f, 0.367969f, 0.369457f, 0.370584f, 0.371285f, 0.371572f, 0.371526f, 0.371291f, 0.371041f, 0.370954f, 0.371182f, 0.37182f, 0.372891f, 0.374343f, 0.376058f, 0.37787f, 0.379594f, 0.381064f, 0.382155f, 0.382808f, 0.383043f, 0.382952f, 0.382685f, 0.382422f, 0.382344f, 0.382601f, 0.383282f, 0.384405f, 0.385908f, 0.387663f, 0.389497f, 0.391223f, 0.392672f, 0.393725f, 0.394328f, 0.394511f, 0.394373f, 0.394073f, 0.393799f, 0.393731f, 0.394019f, 0.394747f, 0.395923f, 0.397478f, 0.399273f, 0.
\ No newline at end of file
     },
     
@@ -10049,9 +10044,9 @@
 48f, 4.005378f, 4.00391f, 4.002443f, 4.000977f, 3.999512f, 3.998048f, 3.996585f, 3.995123f, 3.993662f, 3.992203f, 3.990744f, 3.989287f, 3.98783f,
 3.986375f, 3.98492f, 3.983467f, 3.982015f, 3.980564f, 3.979114f, 3.977664f, 3.976216f, 3.97477f, 3.973324f, 3.971879f, 3.970435f, 3.968992f, 3.967551f, 3.96611f, 3.96467f, 3.963232f, 3.961794f, 3.960358f, 3.958922f,
 3.957488f, 3.956055f, 3.954622f, 3.953191f, 3.951761f, 3.950332f, 3.948903f, 3.947476f, 3.94605f, 3.944625f, 3.943201f, 3.941778f, 3.940356f, 3.938935f, 3.937515f, 3.936096f, 3.934678f, 3.933261f, 3.931845f, 3.930431f,
- 3.953191f, 3.951761f, 3.950332f, 3.948903f, 3.947476f, 3.94605f, 3.944625f, 3.943201f, 3.941778f, 3.940356f, 3.938935f, 3.937515f, 3.936096f, 3.934678f, 3.933261f, 3.931845f, 3.930431f,
+ 3.953191f, 3.951761f, 3.950332f, 3.948903f, 3.947476f, 3.94605f, 3.944625f, 3.943201f, 3.941778f, 3.940356f, 3.938935f, 3.937515f, 3.936096f, 3.934678f, 3.933261f, 3.931845f, 3.930431f,
 1f, 3.951761f, 3.950332f, 3.948903f, 3.947476f, 3.94605f, 3.944625f, 3.943201f, 3.941778f, 3.940356f, 3.938935f, 3.937515f, 3.936096f, 3.934678f, 3.933261f, 3.931845f, 3.930431f,
-, 3.951761f, 3.950332f, 3.948903f, 3.947476f, 3.94605f, 3.944625f, 3.943201f, 3.941778f, 3.940356f, 3.938935f, 3.937515f, 3.936096f, 3.934678f, 3.933261f, 3.931845f, 3.930431f,
+8903f, 3.947476f, 3.94605f, 3.944625f, 3.943201f, 3.941778f, 3.940356f, 3.938935f, 3.937515f, 3.936096f, 3.934678f, 3.933261f, 3.931845f, 3.930431f,
 3.951761f, 3.950332f, 3.948903f, 3.947476f, 3.94605f, 3.944625f, 3.943201f, 3.941778f, 3.940356f, 3.938935f, 3.937515f, 3.936096f, 3.934678f, 3.933261f, 3.931845f, 3.930431f,
 3.929017f, 3.927604f, 3.926192f, 3.924781f, 3.923372f, 3.921963f, 3.920555f, 3.919148f, 3.917743f, 3.916338f, 3.914934f, 3.913532f, 3.91213f, 3.910729f, 3.90933f, 3.907931f, 3.906533f, 3.905136f, 3.903741f, 3.902346f,
 3.900952f, 3.89956f, 3.898168f, 3.896777f, 3.895388f, 3.893999f, 3.892611f, 3.891224f, 3.889839f, 3.888454f, 3.88707f, 3.885687f, 3.884305f, 3.882925f, 3.881545f, 3.880166f, 3.878788f, 3.877411f, 3.876035f, 3.87466f,
@@ -10259,11 +10254,11 @@
 f, 1.598283f, 1.598049f, 1.597815f, 1.597582f, 1.597348f, 1.597115f,
 1.596881f, 1.596648f, 1.596414f, 1.596181f, 1.595948f, 1.595715f, 1.595482f, 1.595249f, 1.595016f, 1.594783f, 1.59455f, 1.594317f, 1.594084f, 1.593852f, 1.593619f, 1.593387f, 1.593154f, 1.592922f, 1.59269f, 1.592458f,
 1.592225f, 1.591993f, 1.591761f, 1.591529f, 1.591298f, 1.591066f, 1.590834f, 1.590602f, 1.590371f, 1.590139f, 1.589908f, 1.589676f, 1.589445f, 1.589214f, 1.588983f, 1.588752f, 1.58852f, 1.588289f, 1.588059f, 1.587828f,
+88752f, 1.58852f, 1.588289f, 1.588059f, 1.587828f,
 , 1.589908f, 1.589676f, 1.589445f, 1.589214f, 1.588983f, 1.588752f, 1.58852f, 1.588289f, 1.588059f, 1.587828f,
-1.589908f, 1.589676f, 1.589445f, 1.589214f, 1.588983f, 1.588752f, 1.58852f, 1.588289f, 1.588059f, 1.587828f,
-1.587597f, 1.587366f, 1.587136f, 1.586905f, 1.586674f, 1.586444f, 1.586214f, 1.585983f, 1.585753f, 1.585523f, 1.585293f, 1.585063f, 1.584833f, 1.584603f, 1.584373f, 1.584143f, 1.583913f, 1.583684f, 1.583454f, 1.583225f,
+587828f,
 f, 1.589445f, 1.589214f, 1.588983f, 1.588752f, 1.58852f, 1.588289f, 1.588059f, 1.587828f,
-444f, 1.586214f, 1.585983f, 1.585753f, 1.585523f, 1.585293f, 1.585063f, 1.584833f, 1.584603f, 1.584373f, 1.584143f, 1.583913f, 1.583684f, 1.583454f, 1.583225f,
+143f, 1.583913f, 1.583684f, 1.583454f, 1.583225f,
 f, 1.580476f, 1.580247f, 1.580018f, 1.57979f, 1.579561f, 1.579333f, 1.579105f, 1.578876f, 1.578648f,
 1.57842f, 1.578192f, 1.577964f, 1.577736f, 1.577508f, 1.57728f, 1.577053f, 1.576825f, 1.576597f, 1.57637f, 1.576142f, 1.575915f, 1.575688f, 1.57546f, 1.575233f, 1.575006f, 1.574779f, 1.574552f, 1.574325f, 1.574098f,
 1.573871f, 1.573645f, 1.573418f, 1.573191f, 1.572965f, 1.572738f, 1.572512f, 1.572285f, 1.572059f, 1.571833f, 1.571607f, 1.571381f, 1.571155f, 1.570929f, 1.570703f, 1.570477f, 1.570251f, 1.570025f, 1.5698f, 1.569574f,
@@ -10468,7 +10463,9 @@
 0.924709f, 0.924631f, 0.924553f, 0.924475f, 0.924396f, 0.924318f, 0.92424f, 0.924162f,
 0.924083f, 0.924005f, 0.923927f, 0.923849f, 0.923771f, 0.923693f, 0.923615f, 0.923537f, 0.923458f, 0.92338f, 0.923302f, 0.923224f, 0.923146f, 0.923068f, 0.92299f, 0.922912f, 0.922834f, 0.922756f, 0.922678f, 0.9226f,
 0.922523f, 0.922445f, 0.922367f, 0.922289f, 0.922211f, 0.922133f, 0.922055f, 0.921977f, 0.9219f, 0.921822f, 0.921744f, 0.921666f, 0.921588f, 0.921511f, 0.921433f, 0.921355f, 0.921278f, 0.9212f, 0.921122f, 0.921044f,
+,
 798f, 0.91872f, 0.918643f, 0.918566f, 0.918489f, 0.918411f, 0.918334f, 0.918257f, 0.91818f, 0.918103f, 0.918025f, 0.917948f,
+.91764f, 0.917563f, 0.917486f, 0.917409f, 0.917332f, 0.917255f, 0.917177f, 0.9171f, 0.917023f, 0.916946f, 0.91687f, 0.916793f, 0.916716f, 0.916639f, 0.916562f, 0.916485f, 0.916408f,
 8f, 0.91872f, 0.918643f, 0.918566f, 0.918489f, 0.918411f, 0.918334f, 0.918257f, 0.91818f, 0.918103f, 0.918025f, 0.917948f,
 0.917871f, 0.917794f, 0.917717f, 0.91764f, 0.917563f, 0.917486f, 0.917409f, 0.917332f, 0.917255f, 0.917177f, 0.9171f, 0.917023f, 0.916946f, 0.91687f, 0.916793f, 0.916716f, 0.916639f, 0.916562f, 0.916485f, 0.916408f,
 0.916331f, 0.916254f, 0.916177f, 0.916101f, 0.916024f, 0.915947f, 0.91587f, 0.915793f, 0.915717f, 0.91564f, 0.915563f, 0.915486f, 0.91541f, 0.915333f, 0.915256f, 0.915179f, 0.915103f, 0.915026f, 0.914949f, 0.914873f,
@@ -10674,8 +10671,10 @@
 85279f,
 0.685236f, 0.685193f, 0.68515f, 0.685107f, 0.685064f, 0.685021f, 0.684978f, 0.684936f, 0.684893f, 0.68485f, 0.684807f, 0.684764f, 0.684721f, 0.684678f, 0.684635f, 0.684592f, 0.684549f, 0.684506f, 0.684463f, 0.68442f,
 0.684378f, 0.684335f, 0.684292f, 0.684249f, 0.684206f, 0.684163f, 0.68412f, 0.684078f, 0.684035f, 0.683992f, 0.683949f, 0.683906f, 0.683863f, 0.683821f, 0.683778f, 0.683735f, 0.683692f, 0.683649f, 0.683607f, 0.683564f,
+0.682112f, 0.68207f, 0.682027f, 0.681985f, 0.681942f, 0.6819f, 0.681857f,
 .682837f, 0.682795f, 0.682752f, 0.682709f,
-82837f, 0.682795f, 0.682752f, 0.682709f,
+1985f, 0.681942f, 0.6819f, 0.681857f,
+0.681814f, 0.681772f, 0.681729f, 0.681687f, 0.681644f, 0.681602f, 0.681559f, 0.681517f, 0.681474f, 0.681432f, 0.681389f, 0.681347f, 0.681304f, 0.681262f, 0.681219f, 0.681177f, 0.681134f, 0.681092f, 0.681049f, 0.681007f,
 2f, 0.681729f, 0.681687f, 0.681644f, 0.681602f, 0.681559f, 0.681517f, 0.681474f, 0.681432f, 0.681389f, 0.681347f, 0.681304f, 0.681262f, 0.681219f, 0.681177f, 0.681134f, 0.681092f, 0.681049f, 0.681007f,
 0.680964f, 0.680922f, 0.680879f, 0.680837f, 0.680794f, 0.680752f, 0.68071f, 0.680667f, 0.680625f, 0.680582f, 0.68054f, 0.680498f, 0.680455f, 0.680413f, 0.68037f, 0.680328f, 0.680286f, 0.680243f, 0.680201f, 0.680159f,
 0.680116f, 0.680074f, 0.680032f, 0.679989f, 0.679947f, 0.679905f, 0.679862f, 0.67982f, 0.679778f, 0.679735f, 0.679693f, 0.679651f, 0.679608f, 0.679566f, 0.679524f, 0.679482f, 0.679439f, 0.679397f, 0.679355f, 0.679313f,
@@ -13952,9 +13951,9 @@
 .932725f, -0.932717f, -0.932709f, -0.932701f, -0.932693f, -0.932685f, -0.932678f, -0.93267f, -0.932662f, -0.932654f, -0.932646f, -0.932638f, -0.93263f, -0.932622f, -0.932614f, -0.932606f, -0.932598f, -0.93259f, -0.932582f, -0.932574f,
 -0.932566f, -0.932558f, -0.93255f, -0.932542f, -0.932534f, -0.932526f, -0.932519f, -0.932511f, -0.932503f, -0.932495f, -0.932487f, -0.932479f, -0.932471f, -0.932463f, -0.932455f, -0.932447f, -0.932439f, -0.932431f, -0.932423f, -0.932415f,
 -0.932407f, -0.932399f, -0.932391f, -0.932383f, -0.932375f, -0.932367f, -0.932359f, -0.932351f, -0.932343f, -0.932335f, -0.932327f, -0.932319f, -0.932311f, -0.932303f, -0.932295f, -0.932287f, -0.932279f, -0.932271f, -0.932263f, -0.932255f,
+19f, -0.932311f, -0.932303f, -0.932295f, -0.932287f, -0.932279f, -0.932271f, -0.932263f, -0.932255f,
 19f, -0.932311f, -0.932303f, -0.932295f, -0.932287f, -0.932279f, -0.932271f, -0.932263f, -0.932255f,
-f, -0.932311f, -0.932303f, -0.932295f, -0.932287f, -0.932279f, -0.932271f, -0.932263f, -0.932255f,
--0.932247f, -0.932239f, -0.932231f, -0.932223f, -0.932215f, -0.932207f, -0.932199f, -0.932191f, -0.932183f, -0.932175f, -0.932167f, -0.932159f, -0.932151f, -0.932143f, -0.932135f, -0.932127f, -0.932119f, -0.932111f, -0.932103f, -0.932095f,
+5f, -0.932287f, -0.932279f, -0.932271f, -0.932263f, -0.932255f,
 11f, -0.932303f, -0.932295f, -0.932287f, -0.932279f, -0.932271f, -0.932263f, -0.932255f,
 -0.932247f, -0.932239f, -0.932231f, -0.932223f, -0.932215f, -0.932207f, -0.932199f, -0.932191f, -0.932183f, -0.932175f, -0.932167f, -0.932159f, -0.932151f, -0.932143f, -0.932135f, -0.932127f, -0.932119f, -0.932111f, -0.932103f, -0.932095f,
 -0.932087f, -0.932079f, -0.932071f, -0.932063f, -0.932055f, -0.932047f, -0.932039f, -0.932031f, -0.932023f, -0.932015f, -0.932007f, -0.931999f, -0.931991f, -0.931983f, -0.931975f, -0.931967f, -0.931959f, -0.931951f, -0.931943f, -0.931935f,
@@ -14059,11 +14058,10 @@
 .916724f, -0.916715f, -0.916705f, -0.916695f,
 -0.916685f, -0.916676f, -0.916666f, -0.916656f, -0.916646f, -0.916637f, -0.916627f, -0.916617f, -0.916607f, -0.916598f, -0.916588f, -0.916578f, -0.916568f, -0.916559f, -0.916549f, -0.916539f, -0.916529f, -0.91652f, -0.91651f, -0.9165f,
 -0.91649f, -0.91648f, -0.916471f, -0.916461f, -0.916451f, -0.916441f, -0.916432f, -0.916422f, -0.916412f, -0.916402f, -0.916393f, -0.916383f, -0.916373f, -0.916363f, -0.916353f, -0.916344f, -0.916334f, -0.916324f, -0.916314f, -0.916304f,
+ -0.916422f, -0.916412f, -0.916402f, -0.916393f, -0.916383f, -0.916373f, -0.916363f, -0.916353f, -0.916344f, -0.916334f, -0.916324f, -0.916314f, -0.916304f,
 6471f, -0.916461f, -0.916451f, -0.916441f, -0.916432f, -0.916422f, -0.916412f, -0.916402f, -0.916393f, -0.916383f, -0.916373f, -0.916363f, -0.916353f, -0.916344f, -0.916334f, -0.916324f, -0.916314f, -0.916304f,
-71f, -0.916461f, -0.916451f, -0.916441f, -0.916432f, -0.916422f, -0.916412f, -0.916402f, -0.916393f, -0.916383f, -0.916373f, -0.916363f, -0.916353f, -0.916344f, -0.916334f, -0.916324f, -0.916314f, -0.916304f,
+-0.916393f, -0.916383f, -0.916373f, -0.916363f, -0.916353f, -0.916344f, -0.916334f, -0.916324f, -0.916314f, -0.916304f,
 f, -0.916461f, -0.916451f, -0.916441f, -0.916432f, -0.916422f, -0.916412f, -0.916402f, -0.916393f, -0.916383f, -0.916373f, -0.916363f, -0.916353f, -0.916344f, -0.916334f, -0.916324f, -0.916314f, -0.916304f,
-12f, -0.916402f, -0.916393f, -0.916383f, -0.916373f, -0.916363f, -0.916353f, -0.916344f, -0.916334f, -0.916324f, -0.916314f, -0.916304f,
--0.916295f, -0.916285f, -0.916275f, -0.916265f, -0.916256f, -0.916246f, -0.916236f, -0.916226f, -0.916216f, -0.916207f, -0.916197f, -0.916187f, -0.916177f, -0.916167f, -0.916157f, -0.916148f, -0.916138f, -0.916128f, -0.916118f, -0.916108f,
  -0.916402f, -0.916393f, -0.916383f, -0.916373f, -0.916363f, -0.916353f, -0.916344f, -0.916334f, -0.916324f, -0.916314f, -0.916304f,
 -0.916295f, -0.916285f, -0.916275f, -0.916265f, -0.916256f, -0.916246f, -0.916236f, -0.916226f, -0.916216f, -0.916207f, -0.916197f, -0.916187f, -0.916177f, -0.916167f, -0.916157f, -0.916148f, -0.916138f, -0.916128f, -0.916118f, -0.916108f,
 -0.916099f, -0.916089f, -0.916079f, -0.916069f, -0.916059f, -0.91605f, -0.91604f, -0.91603f, -0.91602f, -0.91601f, -0.916f, -0.915991f, -0.915981f, -0.915971f, -0.915961f, -0.915951f, -0.915942f, -0.915932f, -0.915922f, -0.915912f,
@@ -15820,3 +15818,4 @@
 .445182f, -0.445133f, -0.445084f, -0.445035f, -0.444986f, -0.444938f, -0.444889f, -0.44484f, -0.444791f, -0.444742f, -0.444693f, -0.444644f, -0.444595f, -0.444546f, -0.444497f,
 -0.444448f, -0.444399f, -0.44435f, -0.444301f, -0.444252f, -0.444203f, -0.444154f, -0.444105f, -0.444056f, -0.444007f, -0.443958f, -0.443909f, -0.44386f, -0.443811f, -0.443762f, -0.443713f, -0.443664f, -0.443615f, -0.443566f, -0.443517f,
 -0.443468f, -0.443419f, -0.44337f, -0.443321f, -0.443272f, -0.443223f, -0.443173f, -0.443124f, -0.443075f, -0.443026f, -0.442977f, -0.442928f, -0.442879f, -0.44283f, -0.442781f, -0.442732f, -0.442683f, -0.442634f, -0.442585f, -0.442536f,
+154f, -0.444105f, -0.444056f, -0.444007f, -0.443958f, -0.443909f, -0.44386f, -0.443811f, -0.443762f, -0.443713f, -0.443664f, -0.443615f, -0.443566f, -0.443517f,
--- /dev/null
+++ b/leaf/leaf-config.h
@@ -1,0 +1,59 @@
+/*
+  ==============================================================================
+
+    leaf-config.h
+    Created: 18 Dec 2020 1:24:49pm
+    Author:  Matthew Wang
+
+  ==============================================================================
+*/
+
+#ifndef LEAF_CONFIG_H_INCLUDED
+#define LEAF_CONFIG_H_INCLUDED
+
+/*!
+ @file leaf-config.h
+ @brief LEAF configuration file. Contains defines for controlling inclusion of various tables.
+ */
+
+//==============================================================================
+
+//! Include FIR tables required to use tOversampler.
+#define LEAF_INCLUDE_OVERSAMPLER_TABLES 1
+
+// Unused
+#define LEAF_INCLUDE_SHAPER_TABLE 0
+
+// Unused
+#define LEAF_INCLUDE_MTOF_TABLE 0
+
+//! Include table required to use tEfficientSVF.
+#define LEAF_INCLUDE_FILTERTAN_TABLE 1
+
+// Unused
+#define LEAF_INCLUDE_TANH_TABLE 0
+
+// Unused
+#define LEAF_INCLUDE_ADC_TABLE 0
+
+//! Include tables required to use tEnvelope and tADSR (but not tADSR2, tADSR3, and tADSR4).
+#define LEAF_INCLUDE_ADSR_TABLES 1
+
+//! Include wave table required to use tCycle.
+#define LEAF_INCLUDE_SINE_TABLE 1
+
+//! Include wave table required to use tTriangle.
+#define LEAF_INCLUDE_TRIANGLE_TABLE 1
+
+//! Include wave table required to use tSquare.
+#define LEAF_INCLUDE_SQUARE_TABLE 1
+
+//! Include wave table required to use tSawtooth.
+#define LEAF_INCLUDE_SAWTOOTH_TABLE 1
+
+//! Include tables for minblep insertion, required for all tMB objects.
+#define LEAF_INCLUDE_MINBLEP_TABLES 1
+
+//==============================================================================
+
+#endif // LEAF_CONFIG_H_INCLUDED
--- a/leaf/leaf.h
+++ b/leaf/leaf.h
@@ -122,8 +122,8 @@
     /*!
      @param sampleRate The audio sample rate.
      @param blockSize The audio block size.
-     @param memory A pointer to the memory that will make up the default LEAF mempool.
-     @param memorySize The size of the memory that will make up the default LEAF mempool.
+     @param memory A pointer to the memory that will make up the default mempool of a LEAF instance.
+     @param memorySize The size of the memory that will make up the default mempool of a LEAF instance.
      @param random A pointer to a random number function. Should return a float >= 0 and < 1.
      */
     void        LEAF_init            (LEAF* const leaf, float sampleRate, int blockSize, char* memory, size_t memorySize, float(*random)(void));