shithub: leaf

Download patch

ref: 4317a551587f3712a14078d3701400e2855db3b7
parent: 69671e50422797756d6679068c18a3d7f526504f
author: Matthew Wang <mjw7@princeton.edu>
date: Mon Jan 4 10:10:09 EST 2021

adding to docs; change doxygen header to use getHeader script

--- a/doxygen/header.html
+++ b/doxygen/header.html
@@ -1,72 +1,59 @@
 <!-- HTML header for doxygen 1.8.18-->
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen $doxygenversion"/>
-<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<!--BEGIN PROJECT_NAME--><title>$projectname: $title</title><!--END PROJECT_NAME-->
-<!--BEGIN !PROJECT_NAME--><title>$title</title><!--END !PROJECT_NAME-->
-<link href="$relpath^tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="$relpath^jquery.js"></script>
-<script type="text/javascript" src="$relpath^dynsections.js"></script>
-<script src="/js/template.js"></script>
-$treeview
-$search
-$mathjax
-<link href="$relpath^$stylesheet" rel="stylesheet" type="text/css" />
-$extrastylesheet
-<link rel="stylesheet" href="/css/tachyons.css" type="text/css">
-</head>
+  <head>
+    <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8" />
+    <meta http-equiv="X-UA-Compatible" content="IE=9" />
+    <meta name="generator" content="Doxygen $doxygenversion" />
+    <meta name="viewport" content="width=device-width, initial-scale=1" />
+    <!--BEGIN PROJECT_NAME-->
+    <title>$projectname: $title</title>
+    <!--END PROJECT_NAME-->
+    <!--BEGIN !PROJECT_NAME-->
+    <title>$title</title>
+    <!--END !PROJECT_NAME-->
+    <link href="$relpath^tabs.css" rel="stylesheet" type="text/css" />
+    <script type="text/javascript" src="$relpath^jquery.js"></script>
+    <script type="text/javascript" src="$relpath^dynsections.js"></script>
+    <script src="/js/template.js"></script>
+    $treeview $search $mathjax
+    <link href="$relpath^$stylesheet" rel="stylesheet" type="text/css" />
+    $extrastylesheet
+    <link rel="stylesheet" href="/css/tachyons.css" type="text/css" />
+  </head>
 
+  <body class="bg-washed-green black-70 ph0 sans-serif">
+    <header></header><script>getHeader()</script>
 
-<body class="bg-washed-green black-70 ph0 sans-serif">
-<header class="fl bg-deep-green w-100 pt4-ns pb3-ns pl5">
+    <div>
+      <!-- do not remove this div, it is closed by doxygen! -->
 
-  <div class="bg-dark-green pv0">
-    <h1 class="black-70 pv3 ph4 f-headline-m">
-      <a class="link hover-gold white dib mr3" href="/" title="NIRL">NIRL &#8212; New Instrument Research Lab
-        <div class="fw4 f4">at Princeton University</div>
-      </a>
-    </h1>
-  </div>
-
-  <nav class="pv0 ph4 f5 fw5 ttu tracked">
-    <a class="link hover-gold white dib mr6" href="/" title="Home">&#187;Home&#171;</a>
-    <a class="link hover-gold white dib mr6" href="/tabs/projects.html" title="Projects">&#187;Projects&#171;</a>
-    <a class="link hover-gold white dib mr6" href="/tabs/papers.html" title="Papers">&#187;Papers&#171;</a>
-<!--    <a class="link hover-gold white dib mr6" href="/tabs/people.html" title="People">People</a> -->
-<!--    <a class="link hover-gold white dib" href="/tabs/contact.html" title="Contact">Contact</a> -->
-  </nav>
-
-</header>
-
-<div><!-- do not remove this div, it is closed by doxygen! -->
-
-<!--BEGIN TITLEAREA-->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr>
-  <!--BEGIN PROJECT_LOGO-->
-  <!--END PROJECT_LOGO-->
-  <!--BEGIN PROJECT_NAME-->
-   <!--BEGIN PROJECT_NUMBER--><!--END PROJECT_NUMBER-->
-   <!--BEGIN PROJECT_BRIEF--><!--END PROJECT_BRIEF-->
-  <!--END PROJECT_NAME-->
-  <!--BEGIN !PROJECT_NAME-->
-   <!--BEGIN PROJECT_BRIEF-->
-   <!--END PROJECT_BRIEF-->
-  <!--END !PROJECT_NAME-->
-  <!--BEGIN DISABLE_INDEX-->
-   <!--BEGIN SEARCHENGINE-->
-   <td>$searchbox</td>
-   <!--END SEARCHENGINE-->
-  <!--END DISABLE_INDEX-->
- </tr>
- </tbody>
-</table>
-</div>
-<!--END TITLEAREA-->
-<!-- end header part -->
+      <!--BEGIN TITLEAREA-->
+      <div id="titlearea">
+        <table cellspacing="0" cellpadding="0">
+          <tbody>
+            <tr>
+              <!--BEGIN PROJECT_LOGO-->
+              <!--END PROJECT_LOGO-->
+              <!--BEGIN PROJECT_NAME-->
+              <!--BEGIN PROJECT_NUMBER--><!--END PROJECT_NUMBER-->
+              <!--BEGIN PROJECT_BRIEF--><!--END PROJECT_BRIEF-->
+              <!--END PROJECT_NAME-->
+              <!--BEGIN !PROJECT_NAME-->
+              <!--BEGIN PROJECT_BRIEF-->
+              <!--END PROJECT_BRIEF-->
+              <!--END !PROJECT_NAME-->
+              <!--BEGIN DISABLE_INDEX-->
+              <!--BEGIN SEARCHENGINE-->
+              <td>$searchbox</td>
+              <!--END SEARCHENGINE-->
+              <!--END DISABLE_INDEX-->
+            </tr>
+          </tbody>
+        </table>
+      </div>
+      <!--END TITLEAREA-->
+      <!-- end header part -->
+    </div>
+  </body>
+</html>
--- a/leaf/Inc/leaf-delay.h
+++ b/leaf/Inc/leaf-delay.h
@@ -632,7 +632,7 @@
     /*!
      @defgroup tringbuffer tRingBuffer
      @ingroup delay
-     @brief
+     @brief Ring buffer.
      @{
      
      @fn void    tRingBuffer_init     (tRingBuffer* const ring, int size, LEAF* const leaf)
--- a/leaf/Inc/leaf-distortion.h
+++ b/leaf/Inc/leaf-distortion.h
@@ -32,7 +32,7 @@
     /*!
      @defgroup tsamplereducer tSampleReducer
      @ingroup distortion
-     @brief
+     @brief Sample rate reducer.
      @{
      
      @fn void    tSampleReducer_init    (tSampleReducer* const, LEAF* const leaf)
@@ -82,7 +82,7 @@
     /*!
      @defgroup toversampler tOversampler
      @ingroup distortion
-     @brief
+     @brief Oversampler.
      @{
      
      @fn void    tOversampler_init           (tOversampler* const, int order, int extraQuality, LEAF* const leaf)
@@ -145,7 +145,7 @@
     /*!
      @defgroup tlockhartwavefolder tLockhartWavefolder
      @ingroup distortion
-     @brief
+     @brief Analog model wavefolder.
      @{
      
      @fn void    tLockhartWavefolder_init    (tLockhartWavefolder* const, LEAF* const leaf)
@@ -213,7 +213,7 @@
     /*!
      @defgroup tcrusher tCrusher
      @ingroup distortion
-     @brief
+     @brief Bit depth and sampler rate degrader.
      @{
      
      @fn void    tCrusher_init    (tCrusher* const, LEAF* const leaf)
--- a/leaf/Inc/leaf-dynamics.h
+++ b/leaf/Inc/leaf-dynamics.h
@@ -34,7 +34,7 @@
     /*!
      @defgroup tcompressor tCompressor
      @ingroup dynamics
-     @brief
+     @brief Standard compressor.
      @{
      
      @fn void    tCompressor_init        (tCompressor* const, LEAF* const leaf)
@@ -84,7 +84,7 @@
      @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.
+     @details 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)
--- a/leaf/Inc/leaf-effects.h
+++ b/leaf/Inc/leaf-effects.h
@@ -27,7 +27,7 @@
     /*!
      @defgroup ttalkbox tTalkbox
      @ingroup effects
-     @brief
+     @brief High resolution vocoder from mda using Levinson-Durbin LPC algorithm.
      @{
      
      @fn void    tTalkbox_init           (tTalkbox* const, int bufsize, LEAF* const leaf)
@@ -146,7 +146,7 @@
     /*!
      @defgroup ttalkboxfloat tTalkboxFloat
      @ingroup effects
-     @brief
+     @brief High resolution vocoder from mda using Levinson-Durbin LPC algorithm.
      @{
      
      @fn void    tTalkboxFloat_init           (tTalkboxFloat* const, int bufsize, LEAF* const leaf)
@@ -260,7 +260,7 @@
     /*!
      @defgroup tvocoder tVocoder
      @ingroup effects
-     @brief
+     @brief Channel vocoder from mda.
      @{
      
      @fn void    tVocoder_init           (tVocoder* const, LEAF* const leaf)
@@ -327,7 +327,7 @@
     /*!
      @defgroup trosenbergglottalpulse tRosenbergGlottalPulse
      @ingroup effects
-     @brief
+     @brief Rosenberg glottal pulse approximator.
      @{
      
      @fn void    tRosenbergGlottalPulse_init           (tRosenbergGlottalPulse* const, LEAF* const leaf)
@@ -488,7 +488,7 @@
     /*!
      @defgroup tpitchshift tPitchShift
      @ingroup effects
-     @brief
+     @brief SOLAD-based pitch shifter.
      @{
      
      @fn void    tPitchShift_init            (tPitchShift* const, tPeriodDetection* const, float* out, int bufSize, LEAF* const leaf)
@@ -552,7 +552,7 @@
     /*!
      @defgroup tsimpleretune tSimpleRetune
      @ingroup effects
-     @brief
+     @brief Wrapper for multiple pitch shifters with single-channel output.
      @{
      
      @fn void    tSimpleRetune_init                  (tSimpleRetune* const, int numVoices, int bufSize, int frameSize, LEAF* const leaf)
@@ -624,7 +624,7 @@
     /*!
      @defgroup tretune tRetune
      @ingroup effects
-     @brief
+     @brief Wrapper for multiple pitch shifters with multi-channel output.
      @{
      
      @fn void    tRetune_init                (tRetune* const, int numVoices, int bufSize, int frameSize, LEAF* const leaf)
@@ -701,7 +701,7 @@
     /*!
      @defgroup tformantshifter tFormantShifter
      @ingroup effects
-     @brief
+     @brief Formant remover and adder, allowing for formant shifting.
      @{
      
      @fn void    tFormantShifter_init            (tFormantShifter* const, int order, LEAF* const leaf)
--- a/leaf/Inc/leaf-electrical.h
+++ b/leaf/Inc/leaf-electrical.h
@@ -31,7 +31,7 @@
     /*!
      @defgroup twdf tWDF
      @ingroup electrical
-     @brief
+     @brief Wave digital filter component.
      @{
      
      @fn void    tWDF_init                   (tWDF* const, WDFComponentType type, float value, tWDF* const rL, tWDF* const rR, LEAF* const leaf)
--- a/leaf/Inc/leaf-envelopes.h
+++ b/leaf/Inc/leaf-envelopes.h
@@ -117,7 +117,7 @@
     /*!
      @defgroup texpsmooth tExpSmooth
      @ingroup envelopes
-     @brief
+     @brief Exponential curve smoother.
      @{
      
      @fn void    tExpSmooth_init         (tExpSmooth* const, float val, float factor, LEAF* const leaf)
@@ -583,7 +583,7 @@
     /*!
      @defgroup tramp tRamp
      @ingroup envelopes
-     @brief
+     @brief Value ramp.
      @{
      
      @fn void    tRamp_init          (tRamp* const, float time, int samplesPerTick, LEAF* const leaf)
@@ -650,7 +650,7 @@
     /*!
      @defgroup trampupdown tRampUpDown
      @ingroup envelopes
-     @brief
+     @brief Value ramp with variable rate depending on direction.
      @{
      
      @fn void    tRampUpDown_init          (tRampUpDown* const, float upTime, float downTime, int samplesPerTick, LEAF* const leaf)
@@ -725,7 +725,7 @@
     /*!
      @defgroup tslide tSlide
      @ingroup envelopes
-     @brief based on Max/MSP's slide~
+     @brief Based on Max/MSP's slide~
      @{
      
      @fn void    tSlide_init          (tSlide* const, float upSlide, float downSlide, LEAF* const leaf)
--- a/leaf/Inc/leaf-filters.h
+++ b/leaf/Inc/leaf-filters.h
@@ -770,7 +770,7 @@
     /*!
      @defgroup tbutterworth tButterworth
      @ingroup filters
-     @brief
+     @brief Butterworth filter.
      @{
      
      @fn void    tButterworth_init           (tButterworth* const, int N, float f1, float f2, LEAF* const leaf, LEAF* const leaf)
@@ -837,7 +837,7 @@
     /*!
      @defgroup tfir tFIR
      @ingroup filters
-     @brief
+     @brief Finite impulse response filter.
      @{
      
      @fn void    tFIR_init           (tFIR* const, float* coeffs, int numTaps, LEAF* const leaf)
@@ -883,7 +883,7 @@
     /*!
      @defgroup tmedianfilter tMedianFilter
      @ingroup filters
-     @brief
+     @brief Median filter.
      @{
      
      @fn void    tMedianFilter_init           (tMedianFilter* const, int size, LEAF* const leaf)
@@ -1056,7 +1056,7 @@
     /*!
      @defgroup tdiodefilter tDiodeFilter
      @ingroup filters
-     @brief
+     @brief Diode filter.
      @{
      
      @fn void    tDiodeFilter_init           (tDiodeFilter* const, float freq, float Q, LEAF* const leaf)
--- a/leaf/Inc/leaf-instruments.h
+++ b/leaf/Inc/leaf-instruments.h
@@ -34,7 +34,7 @@
     /*!
      @defgroup t808cowbell t808Cowbell
      @ingroup instruments
-     @brief
+     @brief 808 drum machine cowbell.
      @{
      
      @fn void    t808Cowbell_init            (t808Cowbell* const, int useStick, LEAF* const leaf)
@@ -121,7 +121,7 @@
     /*!
      @defgroup t808hihat t808Hihat
      @ingroup instruments
-     @brief
+     @brief 808 drum machine hihat.
      @{
      
      @fn void    t808Hihat_init                  (t808Hihat* const, LEAF* const leaf)
@@ -233,7 +233,7 @@
     /*!
      @defgroup t808snare t808Snare
      @ingroup instruments
-     @brief
+     @brief 808 drum machine snare.
      @{
      
      @fn void    t808Snare_init                  (t808Snare* const, LEAF* const leaf)
@@ -339,7 +339,7 @@
     /*!
      @defgroup t808kick t808Kick
      @ingroup instruments
-     @brief
+     @brief 808 drum machine kick.
      @{
      
      @fn void    t808Kick_init               (t808Kick* const, LEAF* const leaf)
--- a/leaf/Inc/leaf-mempool.h
+++ b/leaf/Inc/leaf-mempool.h
@@ -65,7 +65,7 @@
     /*!
      * @defgroup tmempool tMempool
      * @ingroup mempool
-     * An object that can contain an additional mempool for the allocation of LEAF objects.
+     * @brief Memory pool for the allocation of LEAF objects.
      * @{
      */
     
--- a/leaf/Inc/leaf-midi.h
+++ b/leaf/Inc/leaf-midi.h
@@ -137,7 +137,7 @@
     /*! @} 
      @defgroup tpoly tPoly
      @ingroup midi
-     @brief An object for polyphonic handling.
+     @brief Polyphony handler with glide and pitch bend options.
      @{
      
      @fn void    tPoly_init                  (tPoly* const poly, int maxNumVoices, LEAF* const leaf)
@@ -315,7 +315,7 @@
     /*! @}
      @defgroup tsimplepoly tSimplePoly
      @ingroup midi
-     @brief An object for polyphonic handling.
+     @brief Polyphony handler.
      @{
      
      @fn void    tSimplePoly_init                  (tSimplePoly* const poly, int maxNumVoices, LEAF* const leaf)
@@ -397,7 +397,6 @@
      @} */
     typedef struct _tSimplePoly
     {
-        
         tMempool mempool;
         
         tStack stack;
--- a/leaf/Inc/leaf-oscillators.h
+++ b/leaf/Inc/leaf-oscillators.h
@@ -31,7 +31,7 @@
     /*!
      @defgroup ttable tTable
      @ingroup oscillators
-     @brief A general wavetable oscillator.
+     @brief General wavetable oscillator.
      @{
 
      @fn void    tTable_init  (tTable* const osc, float* table, int size, LEAF* const leaf)
@@ -89,7 +89,7 @@
     /*!
      @defgroup tcycle tCycle
      @ingroup oscillators
-     @brief A cycle/sine waveform oscillator. Uses wavetable synthesis.
+     @brief Wavetable cycle/sine wave oscillator
      @{
 
      @fn void    tCycle_init         (tCycle* const osc, LEAF* const leaf)
@@ -142,7 +142,7 @@
     /*!
      @defgroup ttriangle tTriangle
      @ingroup oscillators
-     @brief Anti-aliased Triangle waveform using wavetable interpolation. Wavetables constructed from sine components.
+     @brief Anti-aliased wavetable triangle wave oscillator.
      @{
      
      @fn void    tTriangle_init         (tTriangle* const osc, LEAF* const leaf)
@@ -197,7 +197,7 @@
     /*!
      @defgroup tsquare tSquare
      @ingroup oscillators
-     @brief Anti-aliased Square waveform using wavetable interpolation. Wavetables constructed from sine components.
+     @brief Anti-aliased wavetable square wave oscillator.
      @{
      
      @fn void    tSquare_init         (tSquare* const osc, LEAF* const leaf)
@@ -254,7 +254,7 @@
     /*!
      @defgroup tsawtooth tSawtooth
      @ingroup oscillators
-     @brief Anti-aliased Square waveform using wavetable interpolation. Wavetables constructed from sine components.
+     @brief Anti-aliased wavetable saw wave oscillator.
      @{
      
      @fn void    tSawtooth_init         (tSawtooth* const osc, LEAF* const leaf)
@@ -308,7 +308,7 @@
     /*!
      @defgroup ttri tTri
      @ingroup oscillators
-     @brief
+     @brief Triangle wave oscillator with polyBLEP anti-aliasing.
      @{
      
      @fn void    tTri_init          (tTri* const osc, LEAF* const leaf)
@@ -364,7 +364,7 @@
     /*!
      @defgroup tpulse tPulse
      @ingroup oscillators
-     @brief
+     @brief Pulse wave oscillator with polyBLEP anti-aliasing.
      @{
      
      @fn void    tPulse_init        (tPulse* const osc, LEAF* const leaf)
@@ -419,7 +419,7 @@
     /*!
      @defgroup tsaw tSaw
      @ingroup oscillators
-     @brief
+     @brief Saw wave oscillator with polyBLEP anti-aliasing.
      @{
      
      @fn void    tSaw_init          (tSaw* const osc, LEAF* const leaf)
@@ -468,7 +468,7 @@
     /*!
      @defgroup tphasor tPhasor
      @ingroup oscillators
-     @brief
+     @brief Aliasing phasor.
      @{
      
      @fn void    tPhasor_init        (tPhasor* const osc, LEAF* const leaf)
@@ -518,7 +518,7 @@
     /*!
      @defgroup tnoise tNoise
      @ingroup oscillators
-     @brief
+     @brief Noise generator, capable of producing white or pink noise.
      @{
      
      @fn void    tNoise_init         (tNoise* const noise, NoiseType type, LEAF* const leaf)
@@ -577,7 +577,7 @@
     /*!
      @defgroup tneuron tNeuron
      @ingroup oscillators
-     @brief A model of a neuron, adapted to act as an oscillator.
+     @brief Model of a neuron, adapted to act as an oscillator.
      @{
      
      @fn void    tNeuron_init        (tNeuron* const neuron, LEAF* const leaf)
@@ -669,7 +669,6 @@
     
     typedef struct _tNeuron
     {
-        
         tMempool mempool;
         
         tPoleZero f;
@@ -716,7 +715,7 @@
     /*!
      @defgroup tmbpulse tMBPulse
      @ingroup oscillators
-     @brief
+     @brief Pulse wave oscillator with minBLEP anti-aliasing.
      @{
      
      @fn void tMBPulse_init(tMBPulse* const osc, LEAF* const leaf)
@@ -785,7 +784,7 @@
     /*!
      @defgroup tmbtriangle tMBTriangle
      @ingroup oscillators
-     @brief
+     @brief Triangle wave oscillator with minBLEP anti-aliasing.
      @{
      
      @fn void tMBTriangle_init(tMBTriangle* const osc, LEAF* const leaf)
@@ -855,7 +854,7 @@
     /*!
      @defgroup tmbsaw tMBSaw
      @ingroup oscillators
-     @brief
+     @brief Saw wave oscillator with minBLEP anti-aliasing.
      @{
      
      @fn void tMBSaw_init(tMBSaw* const osc, LEAF* const leaf)
--- a/leaf/Inc/leaf-physical.h
+++ b/leaf/Inc/leaf-physical.h
@@ -234,7 +234,7 @@
     /*!
      @defgroup tsimplelivingstring tSimpleLivingString
      @ingroup physical
-     @brief
+     @brief Simplified string model.
      @{
      
      @fn void    tSimpleLivingString_init   (tSimpleLivingString* const, float freq, float dampFreq, float decay, float targetLev, float levSmoothFactor, float levStrength, int levMode, LEAF* const leaf)
@@ -335,7 +335,7 @@
     /*!
      @defgroup tlivingstring tLivingString
      @ingroup physical
-     @brief
+     @brief String model.
      @{
      
      @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)
@@ -450,7 +450,7 @@
     /*!
      @defgroup tcomplexlivingstring tComplexLivingString
      @ingroup physical
-     @brief
+     @brief Complex string model.
      @{
      
      @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)
--- a/leaf/Inc/leaf-reverb.h
+++ b/leaf/Inc/leaf-reverb.h
@@ -177,7 +177,7 @@
     /*!
      @defgroup tdattorroreverb tDattorroReverb
      @ingroup reverb
-     @brief
+     @brief Dattorro plate reverb.
      @{
      
      @fn void    tDattorroReverb_init              (tDattorroReverb* const, LEAF* const leaf)
--- a/leaf/Inc/leaf-sampling.h
+++ b/leaf/Inc/leaf-sampling.h
@@ -36,17 +36,20 @@
     /*!
      @defgroup tbuffer tBuffer
      @ingroup sampling
-     @brief
+     @brief Buffer for use in Sampler objects.
+     @details Buffer for use in Sampler objects. Can selectively record audio and keeps track of the length of recorded audio.
      @{
      
      @fn void  tBuffer_init                  (tBuffer* const, uint32_t length, LEAF* const leaf)
      @brief Initialize a tBuffer to the default mempool of a LEAF instance.
      @param sampler A pointer to the tBuffer to initialize.
+     @param length The length of the buffer in samples.
      @param leaf A pointer to the leaf instance.
      
      @fn void  tBuffer_initToPool            (tBuffer* const, uint32_t length, tMempool* const)
      @brief Initialize a tBuffer to a specified mempool.
      @param sampler A pointer to the tBuffer to initialize.
+     @param length The length of the buffer in samples.
      @param mempool A pointer to the tMempool to use.
      
      @fn void  tBuffer_free                  (tBuffer* const)
@@ -54,56 +57,68 @@
      @param sampler A pointer to the tBuffer to free.
      
      @fn void  tBuffer_tick                  (tBuffer* const, float sample)
-     @brief
+     @brief If recording, add a sample to the buffer. Otherwise do nothing.
      @param sampler A pointer to the relevant tBuffer.
+     @param input The input sample.
      
      @fn void  tBuffer_read                  (tBuffer* const, float* buff, uint32_t len)
-     @brief
+     @brief Read an input buffer into the buffer.
      @param sampler A pointer to the relevant tBuffer.
+     @param inputBuffer The input buffer.
+     @param length The length of the input buffer.
      
      @fn float tBuffer_get                   (tBuffer* const, int idx)
-     @brief
+     @brief Get the sample recorded at a given position in the buffer.
      @param sampler A pointer to the relevant tBuffer.
+     @param position The position to get a sample from.
+     @return The recorded sample.
      
      @fn void  tBuffer_record                (tBuffer* const)
-     @brief
+     @brief Start recording samples into the buffer.
      @param sampler A pointer to the relevant tBuffer.
      
      @fn void  tBuffer_stop                  (tBuffer* const)
-     @brief
+     @brief Stop recordings samples into the buffer.
      @param sampler A pointer to the relevant tBuffer.
      
      @fn int   tBuffer_getRecordPosition     (tBuffer* const)
-     @brief
+     @brief Get the recording position, from where the buffer will next add samples.
      @param sampler A pointer to the relevant tBuffer.
+     @return The recording position.
      
      @fn void   tBuffer_setRecordPosition    (tBuffer* const, int pos)
-     @brief
+     @brief Set the recording position, from where the buffer will next add samples.
      @param sampler A pointer to the relevant tBuffer.
+     @param index The new recording position.
      
      @fn void  tBuffer_setRecordMode         (tBuffer* const, RecordMode mode)
-     @brief
+     @brief Set the recording mode.
      @param sampler A pointer to the relevant tBuffer.
+     @param mode The new mode, either RecordOneShot to record one buffer length or RecordLoop to record on loop, overwriting old samples.
      
      @fn void  tBuffer_clear                 (tBuffer* const)
-     @brief
+     @brief Clear the buffer.
      @param sampler A pointer to the relevant tBuffer.
      
      @fn uint32_t tBuffer_getBufferLength    (tBuffer* const)
-     @brief
+     @brief Get the length of the buffer.
      @param sampler A pointer to the relevant tBuffer.
+     @return The length of the buffer.
      
      @fn uint32_t tBuffer_getRecordedLength  (tBuffer* const sb)
-     @brief
+     @brief Get the length of recorded audio in the buffer.
      @param sampler A pointer to the relevant tBuffer.
+     @return The length in samples of recorded audio.
      
      @fn void     tBuffer_setRecordedLength    (tBuffer* const sb, int length)
-     @brief
+     @brief Set the length of what is considered recorded audio in the buffer.
      @param sampler A pointer to the relevant tBuffer.
+     @param length The new recorded length.
      
      @fn int     tBuffer_isActive            (tBuffer* const sb)
-     @brief
+     @brief Check if the buffer is recording
      @param sampler A pointer to the relevant tBuffer.
+     @return 1 if recording, 0 if not.
      
      @} */
     
@@ -157,17 +172,19 @@
     /*!
      @defgroup tsampler tSampler
      @ingroup sampling
-     @brief
+     @brief Loopable input sampler with crossfading.
      @{
      
      @fn void    tSampler_init               (tSampler* const, tBuffer* const, LEAF* const leaf)
      @brief Initialize a tSampler to the default mempool of a LEAF instance.
      @param sampler A pointer to the tSampler to initialize.
+     @param buffer A pointer to a tBuffer to playback audio from. Multiple tSamplers can share one tBuffer.
      @param leaf A pointer to the leaf instance.
      
      @fn void    tSampler_initToPool         (tSampler* const, tBuffer* const, tMempool* const)
      @brief Initialize a tSampler to a specified mempool.
      @param sampler A pointer to the tSampler to initialize.
+     @param buffer A pointer to a tBuffer to playback audio from. Multiple tSamplers can share one tBuffer.
      @param mempool A pointer to the tMempool to use.
      
      @fn void    tSampler_free               (tSampler* const)
@@ -287,7 +304,7 @@
     /*!
      @defgroup tautosampler tAutoSampler
      @ingroup sampling
-     @brief
+     @brief Automatic sampler based on power of input.
      @{
      
      @fn void    tAutoSampler_init               (tAutoSampler* const, tBuffer* const, LEAF* const leaf)
@@ -376,7 +393,7 @@
     /*!
      @defgroup tMBSampler tMBSampler
      @ingroup sampling
-     @brief
+     @brief Loopable input sampler using minBLEP to remove discontinuities.
      @{
      
      @fn void    tMBSampler_init               (tMBSampler* const, tBuffer* const, LEAF* const leaf)
--- a/leaf/leaf.h
+++ b/leaf/leaf.h
@@ -79,8 +79,12 @@
  *
  * @section intro_sec Introduction
  *
- * This is the work in progress documentation of LEAF.
+ * LEAF (Lightweight Embedded Audio Framework) is a no-dependency C audio library intended for embedded systems.
  *
+ * This documentation is a work in progress and will eventually include usage instructions, examples, and descriptions of LEAF objects and functions.
+ */
+/*!
+ * @internal
  * @section install_sec Installation
  *
  * @subsection step1 Step 1: Opening the box
@@ -89,24 +93,42 @@
  */
 
 /*!
- * @defgroup leaf LEAF
- * @defgroup oscillators Oscillators
- * @defgroup filters Filters
- * @defgroup delay Delay
- * @defgroup reverb Reverb
- * @defgroup distortion Distortion
- * @defgroup effects Effects
- * @defgroup envelopes Envelopes
- * @defgroup dynamics Dynamics
- * @defgroup analysis Analysis
- * @defgroup instruments Instruments
- * @defgroup midi MIDI
- * @defgroup sampling Sampling
- * @defgroup physical Physical Models
- * @defgroup electrical Electrical Models
- * @defgroup mempool Mempool
- * @defgroup math Math
- * @defgroup tables Tables
+ @defgroup leaf LEAF
+ @brief The structure of an instance of LEAF.
+ @defgroup oscillators Oscillators
+ @brief Oscillators and generators.
+ @defgroup filters Filters
+ @brief Filters.
+ @defgroup delay Delay
+ @brief Delays.
+ @defgroup reverb Reverb
+ @brief Reverbs.
+ @defgroup distortion Distortion
+ @brief Degradation and oversampling.
+ @defgroup effects Effects
+ @brief Vocoders, pitch shifters, and more.
+ @defgroup envelopes Envelopes
+ @brief Envelopes and smoothers.
+ @defgroup dynamics Dynamics
+ @brief Compression and levelling.
+ @defgroup analysis Analysis
+ @brief Signal analysis.
+ @defgroup instruments Instruments
+ @brief Instruments.
+ @defgroup midi MIDI
+ @brief MIDI handling.
+ @defgroup sampling Sampling
+ @brief Samplers.
+ @defgroup physical Physical Models
+ @brief String models and more.
+ @defgroup electrical Electrical Models
+ @brief Circuit models.
+ @defgroup mempool Mempool
+ @brief Memory allocation.
+ @defgroup math Math
+ @brief Math functions.
+ @defgroup tables Tables
+ @brief Wavetables, filter tables, minBLEP tables, and more.
  */
 
 #ifdef __cplusplus