History

add config file; filling out docs

Matthew Wang committed 5 years ago

Commit 196bc7b1 parent 53eedc912 files · +156 −74Browse files

Unified · Split

12 files
  1. TestPlugin/LEAF.jucer +1 −0
  2. leaf/Inc/leaf-analysis.h +15 −12
  3. leaf/Inc/leaf-delay.h +93 −45
  4. leaf/Src/leaf-analysis.c +3 −3
  5. leaf/Src/leaf-delay.c +3 −5
  6. leaf/Src/leaf-distortion.c +2 −1
  7. leaf/Src/leaf-envelopes.c +4 −3
  8. leaf/Src/leaf-filters.c +2 −0
  9. leaf/Src/leaf-math.c +2 −3
  10. leaf/Src/leaf-oscillators.c +8 −0
  11. leaf/Src/leaf-tables.c +9 −2
  12. leaf/leaf-config.h +14 −0
TestPlugin/LEAF.jucer+1−0
@@ -76,6 +76,7 @@ · 75 unmodified lines
76 <FILE id="VTmuyj" name="leaf-tables.c" compile="1" resource="0" file="../leaf/Src/leaf-tables.c"/>76 <FILE id="VTmuyj" name="leaf-tables.c" compile="1" resource="0" file="../leaf/Src/leaf-tables.c"/>
77 <FILE id="HKEtqp" name="leaf.c" compile="1" resource="0" file="../leaf/Src/leaf.c"/>77 <FILE id="HKEtqp" name="leaf.c" compile="1" resource="0" file="../leaf/Src/leaf.c"/>
78 </GROUP>78 </GROUP>
79 <FILE id="a85MuA" name="leaf-config.h" compile="0" resource="0" file="../leaf/leaf-config.h"/>
79 <FILE id="a1IWV9" name="leaf.cpp" compile="1" resource="0" file="../leaf/leaf.cpp"/>80 <FILE id="a1IWV9" name="leaf.cpp" compile="1" resource="0" file="../leaf/leaf.cpp"/>
80 <FILE id="TzDyuj" name="leaf.h" compile="0" resource="0" file="../leaf/leaf.h"/>81 <FILE id="TzDyuj" name="leaf.h" compile="0" resource="0" file="../leaf/leaf.h"/>
81 </GROUP>82 </GROUP>
leaf/Inc/leaf-analysis.h+15−12
@@ -159,19 +159,19 @@ extern "C" { · 158 unmodified lines
159 /*!159 /*!
160 @defgroup tpowerfollower tPowerFollower160 @defgroup tpowerfollower tPowerFollower
161 @ingroup analysis161 @ingroup analysis
162 @brief Measure and output the power of an input signal.162 @brief Measure and follow the power of an input signal using an exponential moving average of power.
163 @{163 @{
164 164
165 @fn void tPowerFollower_init (tPowerFollower* const, float factor, LEAF* const leaf)165 @fn void tPowerFollower_init (tPowerFollower* const, float factor, LEAF* const leaf)
166 @brief Initialize a tPowerFollower to the default mempool of a LEAF instance.166 @brief Initialize a tPowerFollower to the default mempool of a LEAF instance.
167 @param follower A pointer to the tPowerFollower to initialize.167 @param follower A pointer to the tPowerFollower to initialize.
168 @param factor168 @param factor Smoothing factor of the moving average. 0.0-1.0, with a higher value discounting older inputs more quickly.
169 @param leaf A pointer to the leaf instance.169 @param leaf A pointer to the leaf instance.
170 170
171 @fn void tPowerFollower_initToPool (tPowerFollower* const, float factor, tMempool* const)171 @fn void tPowerFollower_initToPool (tPowerFollower* const, float factor, tMempool* const)
172 @brief Initialize a tPowerFollower to a specified mempool.172 @brief Initialize a tPowerFollower to a specified mempool.
173 @param follower A pointer to the tPowerFollower to initialize.173 @param follower A pointer to the tPowerFollower to initialize.
174 @param factor174 @param factor Smoothing factor of the moving average. 0.0-1.0, with a higher value discounting older inputs more quickly.
175 @param mempool A pointer to the tMempool to use.175 @param mempool A pointer to the tMempool to use.
176 176
177 @fn void tPowerFollower_free (tPowerFollower* const)177 @fn void tPowerFollower_free (tPowerFollower* const)
@@ -179,17 +179,20 @@ extern "C" { · 1 unmodified line
179 @param follower A pointer to the tPowerFollower to free.179 @param follower A pointer to the tPowerFollower to free.
180 180
181 @fn float tPowerFollower_tick (tPowerFollower* const, float input)181 @fn float tPowerFollower_tick (tPowerFollower* const, float input)
182 @brief182 @brief Pass a sample into the power follower and return the current power.
183 @param follower A pointer to the relevant tPowerFollower.183 @param follower A pointer to the relevant tPowerFollower.
184 @param input The input sample184 @param input The input sample
185 @return The current power.
185 186
186 @fn float tPowerFollower_sample (tPowerFollower* const)187 @fn float tPowerFollower_getPower (tPowerFollower* const)
187 @brief188 @brief Get the current power.
188 @param follower A pointer to the relevant tPowerFollower.189 @param follower A pointer to the relevant tPowerFollower.
190 @return The current power.
189 191
190 @fn int tPowerFollower_setFactor (tPowerFollower* const, float factor)192 @fn int tPowerFollower_setFactor (tPowerFollower* const, float factor)
191 @brief193 @brief Set the smoothing factor for the moving average.
192 @param follower A pointer to the relevant tPowerFollower.194 @param follower A pointer to the relevant tPowerFollower.
195 @param factor Smoothing factor of the moving average. 0.0-1.0, with a higher value discounting older inputs more quickly.
193 196 
194 @} */197 @} */
195 198
@@ -210,8 +213,8 @@ extern "C" { · 14 unmodified lines
210 void tPowerFollower_free (tPowerFollower* const);213 void tPowerFollower_free (tPowerFollower* const);
211 214
212 float tPowerFollower_tick (tPowerFollower* const, float input);215 float tPowerFollower_tick (tPowerFollower* const, float input);
213 float tPowerFollower_sample (tPowerFollower* const);216 float tPowerFollower_getPower (tPowerFollower* const);
214 int tPowerFollower_setFactor (tPowerFollower* const, float factor);217 void tPowerFollower_setFactor (tPowerFollower* const, float factor);
215 218
216 // ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~219 // ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
217 220
@@ -248,7 +251,7 @@ extern "C" { · 30 unmodified lines
248 @fn void tEnvPD_processBlock (tEnvPD* const, float* in)251 @fn void tEnvPD_processBlock (tEnvPD* const, float* in)
249 @brief252 @brief
250 @param env253 @param env
251 @param input254 @param inputBlock
252 255 
253 @} */256 @} */
254 257
@@ -338,7 +341,8 @@ extern "C" { · 83 unmodified lines
338 @fn int tAttackDetection_detect (tAttackDetection* const, float *in)341 @fn int tAttackDetection_detect (tAttackDetection* const, float *in)
339 @brief Find the largest transient in input block, return index of attack342 @brief Find the largest transient in input block, return index of attack
340 @param detection A pointer to the relevant tAttackDetection.343 @param detection A pointer to the relevant tAttackDetection.
341 @param input344 @param inputBlock
345 @return Index of the largest transient in the input.
342 346 
343 @} */347 @} */
344 348
@@ -508,7 +512,6 @@ extern "C" { · 163 unmodified lines
508 @fn void tPeriodDetection_free (tPeriodDetection* const)512 @fn void tPeriodDetection_free (tPeriodDetection* const)
509 @brief Free a tPeriodDetection from its mempool.513 @brief Free a tPeriodDetection from its mempool.
510 @param detection A pointer to the tPeriodDetection to free.514 @param detection A pointer to the tPeriodDetection to free.
511 @param
512 515
513 @fn float tPeriodDetection_tick (tPeriodDetection* const, float sample)516 @fn float tPeriodDetection_tick (tPeriodDetection* const, float sample)
514 @brief517 @brief
leaf/Inc/leaf-delay.h+93−45
@@ -56,10 +56,10 @@ extern "C" { · 55 unmodified lines
56 @brief56 @brief
57 @param delay A pointer to the relevant tDelay.57 @param delay A pointer to the relevant tDelay.
58 58
59 @fn int tDelay_setDelay (tDelay* const, uint32_t delay)59 @fn void tDelay_setDelay (tDelay* const, uint32_t delay)
60 @brief60 @brief
61 @param delay A pointer to the relevant tDelay.61 @param delay A pointer to the relevant tDelay.
62 @param delayLength62 @param delayLength The new delay length in samples. Cannot be greater than the max delay length given on initialization.
63 63
64 @fn uint32_t tDelay_getDelay (tDelay* const)64 @fn uint32_t tDelay_getDelay (tDelay* const)
65 @brief65 @brief
@@ -125,7 +125,7 @@ extern "C" { · 59 unmodified lines
125 void tDelay_free (tDelay* const);125 void tDelay_free (tDelay* const);
126 126
127 void tDelay_clear (tDelay* const);127 void tDelay_clear (tDelay* const);
128 int tDelay_setDelay (tDelay* const, uint32_t delay);128 void tDelay_setDelay (tDelay* const, uint32_t delay);
129 uint32_t tDelay_getDelay (tDelay* const);129 uint32_t tDelay_getDelay (tDelay* const);
130 void tDelay_tapIn (tDelay* const, float in, uint32_t tapDelay);130 void tDelay_tapIn (tDelay* const, float in, uint32_t tapDelay);
131 float tDelay_tapOut (tDelay* const, uint32_t tapDelay);131 float tDelay_tapOut (tDelay* const, uint32_t tapDelay);
@@ -167,7 +167,7 @@ extern "C" { · 35 unmodified lines
167 @fn void tLinearDelay_setDelay (tLinearDelay* const, float delay)167 @fn void tLinearDelay_setDelay (tLinearDelay* const, float delay)
168 @brief168 @brief
169 @param delay A pointer to the relevant tLinearDelay.169 @param delay A pointer to the relevant tLinearDelay.
170 @param delayLength170 @param delayLength The new delay length in samples. Cannot be greater than the max delay length given on initialization.
171 171
172 @fn float tLinearDelay_getDelay (tLinearDelay* const)172 @fn float tLinearDelay_getDelay (tLinearDelay* const)
173 @brief173 @brief
@@ -177,34 +177,47 @@ extern "C" { · 3 unmodified lines
177 @fn void tLinearDelay_tapIn (tLinearDelay* const, float in, uint32_t tapDelay)177 @fn void tLinearDelay_tapIn (tLinearDelay* const, float in, uint32_t tapDelay)
178 @brief178 @brief
179 @param delay A pointer to the relevant tLinearDelay.179 @param delay A pointer to the relevant tLinearDelay.
180 @param input
181 @param position
180 182
181 @fn float tLinearDelay_tapOut (tLinearDelay* const, uint32_t tapDelay)183 @fn float tLinearDelay_tapOut (tLinearDelay* const, uint32_t tapDelay)
182 @brief184 @brief
183 @param delay A pointer to the relevant tLinearDelay.185 @param delay A pointer to the relevant tLinearDelay.
186 @param position
187 @return
184 188
185 @fn float tLinearDelay_addTo (tLinearDelay* const, float value, uint32_t tapDelay)189 @fn float tLinearDelay_addTo (tLinearDelay* const, float value, uint32_t tapDelay)
186 @brief190 @brief
187 @param delay A pointer to the relevant tLinearDelay.191 @param delay A pointer to the relevant tLinearDelay.
192 @param input
193 @param position
194 @return
188 195
189 @fn float tLinearDelay_tick (tLinearDelay* const, float sample)196 @fn float tLinearDelay_tick (tLinearDelay* const, float sample)
190 @brief197 @brief
191 @param delay A pointer to the relevant tLinearDelay.198 @param delay A pointer to the relevant tLinearDelay.
199 @param input
200 @return
192 201
193 @fn void tLinearDelay_tickIn (tLinearDelay* const, float input)202 @fn void tLinearDelay_tickIn (tLinearDelay* const, float input)
194 @brief203 @brief
195 @param delay A pointer to the relevant tLinearDelay.204 @param delay A pointer to the relevant tLinearDelay.
205 @param input
196 206
197 @fn float tLinearDelay_tickOut (tLinearDelay* const)207 @fn float tLinearDelay_tickOut (tLinearDelay* const)
198 @brief208 @brief
199 @param delay A pointer to the relevant tLinearDelay.209 @param delay A pointer to the relevant tLinearDelay.
210 @return
200 211
201 @fn float tLinearDelay_getLastOut (tLinearDelay* const)212 @fn float tLinearDelay_getLastOut (tLinearDelay* const)
202 @brief213 @brief
203 @param delay A pointer to the relevant tLinearDelay.214 @param delay A pointer to the relevant tLinearDelay.
215 @return
204 216
205 @fn float tLinearDelay_getLastIn (tLinearDelay* const)217 @fn float tLinearDelay_getLastIn (tLinearDelay* const)
206 @brief218 @brief
207 @param delay A pointer to the relevant tLinearDelay.219 @param delay A pointer to the relevant tLinearDelay.
220 @return
208 221 
209 @} */222 @} */
210 223
@@ -293,10 +306,10 @@ extern "C" { · 82 unmodified lines
293 @param delay A pointer to the relevant tHermiteDelay.306 @param delay A pointer to the relevant tHermiteDelay.
294 @return307 @return
295 308
296 @fn int tHermiteDelay_setDelay (tHermiteDelay* const dl, float delay)309 @fn void tHermiteDelay_setDelay (tHermiteDelay* const dl, float delay)
297 @brief310 @brief
298 @param delay A pointer to the relevant tHermiteDelay.311 @param delay A pointer to the relevant tHermiteDelay.
299 @param delayLength312 @param delayLength The new delay length in samples. Cannot be greater than the max delay length given on initialization.
300 313
301 @fn float tHermiteDelay_tapOut (tHermiteDelay* const dl, uint32_t tapDelay)314 @fn float tHermiteDelay_tapOut (tHermiteDelay* const dl, uint32_t tapDelay)
302 @brief315 @brief
@@ -346,7 +359,6 @@ extern "C" { · 43 unmodified lines
346 359
347 typedef struct _tHermiteDelay360 typedef struct _tHermiteDelay
348 {361 {
349
350 tMempool mempool;362 tMempool mempool;
351 363
352 float gain;364 float gain;
@@ -365,23 +377,23 @@ extern "C" { · 12 unmodified lines
365 377
366 typedef _tHermiteDelay* tHermiteDelay;378 typedef _tHermiteDelay* tHermiteDelay;
367 379
368 void tHermiteDelay_init (tHermiteDelay* const dl, float delay, uint32_t maxDelay, LEAF* const leaf);380 void tHermiteDelay_init (tHermiteDelay* const dl, float delay, uint32_t maxDelay, LEAF* const leaf);
369 void tHermiteDelay_initToPool (tHermiteDelay* const dl, float delay, uint32_t maxDelay, tMempool* const mp);381 void tHermiteDelay_initToPool (tHermiteDelay* const dl, float delay, uint32_t maxDelay, tMempool* const mp);
370 void tHermiteDelay_free (tHermiteDelay* const dl);382 void tHermiteDelay_free (tHermiteDelay* const dl);
371 383
372 void tHermiteDelay_clear (tHermiteDelay* const dl);384 void tHermiteDelay_clear (tHermiteDelay* const dl);
373 float tHermiteDelay_tick (tHermiteDelay* const dl, float input);385 float tHermiteDelay_tick (tHermiteDelay* const dl, float input);
374 void tHermiteDelay_tickIn (tHermiteDelay* const dl, float input);386 void tHermiteDelay_tickIn (tHermiteDelay* const dl, float input);
375 float tHermiteDelay_tickOut (tHermiteDelay* const dl);387 float tHermiteDelay_tickOut (tHermiteDelay* const dl);
376 int tHermiteDelay_setDelay (tHermiteDelay* const dl, float delay);388 void tHermiteDelay_setDelay (tHermiteDelay* const dl, float delay);
377 float tHermiteDelay_tapOut (tHermiteDelay* const dl, uint32_t tapDelay);389 float tHermiteDelay_tapOut (tHermiteDelay* const dl, uint32_t tapDelay);
378 void tHermiteDelay_tapIn (tHermiteDelay* const dl, float value, uint32_t tapDelay);390 void tHermiteDelay_tapIn (tHermiteDelay* const dl, float value, uint32_t tapDelay);
379 float tHermiteDelay_addTo (tHermiteDelay* const dl, float value, uint32_t tapDelay);391 float tHermiteDelay_addTo (tHermiteDelay* const dl, float value, uint32_t tapDelay);
380 float tHermiteDelay_getDelay (tHermiteDelay* const dl);392 float tHermiteDelay_getDelay (tHermiteDelay* const dl);
381 float tHermiteDelay_getLastOut (tHermiteDelay* const dl);393 float tHermiteDelay_getLastOut (tHermiteDelay* const dl);
382 float tHermiteDelay_getLastIn (tHermiteDelay* const dl);394 float tHermiteDelay_getLastIn (tHermiteDelay* const dl);
383 void tHermiteDelay_setGain (tHermiteDelay* const dl, float gain);395 void tHermiteDelay_setGain (tHermiteDelay* const dl, float gain);
384 float tHermiteDelay_getGain (tHermiteDelay* const dl);396 float tHermiteDelay_getGain (tHermiteDelay* const dl);
385 397
386 398
387 //==============================================================================399 //==============================================================================
@@ -395,11 +407,15 @@ extern "C" { · 7 unmodified lines
395 @fn void tAllpassDelay_init (tAllpassDelay* const, float delay, uint32_t maxDelay, LEAF* const leaf)407 @fn void tAllpassDelay_init (tAllpassDelay* const, float delay, uint32_t maxDelay, LEAF* const leaf)
396 @brief Initialize a tAllpassDelay to the default mempool of a LEAF instance.408 @brief Initialize a tAllpassDelay to the default mempool of a LEAF instance.
397 @param delay A pointer to the tAllpassDelay to initialize.409 @param delay A pointer to the tAllpassDelay to initialize.
410 @param initialLength
411 @param maxLength
398 @param leaf A pointer to the leaf instance.412 @param leaf A pointer to the leaf instance.
399 413
400 @fn void tAllpassDelay_initToPool (tAllpassDelay* const, float delay, uint32_t maxDelay, tMempool* const)414 @fn void tAllpassDelay_initToPool (tAllpassDelay* const, float delay, uint32_t maxDelay, tMempool* const)
401 @brief Initialize a tAllpassDelay to a specified mempool.415 @brief Initialize a tAllpassDelay to a specified mempool.
402 @param delay A pointer to the tAllpassDelay to initialize.416 @param delay A pointer to the tAllpassDelay to initialize.
417 @param initialLength
418 @param maxLength
403 @param mempool A pointer to the tMempool to use.419 @param mempool A pointer to the tMempool to use.
404 420
405 @fn void tAllpassDelay_free (tAllpassDelay* const)421 @fn void tAllpassDelay_free (tAllpassDelay* const)
@@ -410,43 +426,55 @@ extern "C" { · 4 unmodified lines
410 @brief426 @brief
411 @param delay A pointer to the relevant tAllpassDelay.427 @param delay A pointer to the relevant tAllpassDelay.
412 428
413 @fn int tAllpassDelay_setDelay (tAllpassDelay* const, float delay)429 @fn void tAllpassDelay_setDelay (tAllpassDelay* const, float delay)
414 @brief430 @brief
415 @param delay A pointer to the relevant tAllpassDelay.431 @param delay A pointer to the relevant tAllpassDelay.
432 @param delayLength The new delay length in samples. Cannot be greater than the max delay length given on initialization.
416 433
417 @fn float tAllpassDelay_getDelay (tAllpassDelay* const)434 @fn float tAllpassDelay_getDelay (tAllpassDelay* const)
418 @brief435 @brief
419 @param delay A pointer to the relevant tAllpassDelay.436 @param delay A pointer to the relevant tAllpassDelay.
437 @return The current delay length in samples.
420 438
421 @fn void tAllpassDelay_tapIn (tAllpassDelay* const, float in, uint32_t tapDelay)439 @fn void tAllpassDelay_tapIn (tAllpassDelay* const, float in, uint32_t tapDelay)
422 @brief440 @brief
423 @param delay A pointer to the relevant tAllpassDelay.441 @param delay A pointer to the relevant tAllpassDelay.
442 @param inptu
443 @param position
424 444
425 @fn float tAllpassDelay_tapOut (tAllpassDelay* const, uint32_t tapDelay)445 @fn float tAllpassDelay_tapOut (tAllpassDelay* const, uint32_t tapDelay)
426 @brief446 @brief
427 @param delay A pointer to the relevant tAllpassDelay.447 @param delay A pointer to the relevant tAllpassDelay.
448 @param position
449 @return
428 450
429 @fn float tAllpassDelay_addTo (tAllpassDelay* const, float value, uint32_t tapDelay)451 @fn float tAllpassDelay_addTo (tAllpassDelay* const, float value, uint32_t tapDelay)
430 @brief452 @brief
431 @param delay A pointer to the relevant tAllpassDelay.453 @param delay A pointer to the relevant tAllpassDelay.
454 @param input
455 @param position
456 @return
432 457
433 @fn float tAllpassDelay_tick (tAllpassDelay* const, float sample)458 @fn float tAllpassDelay_tick (tAllpassDelay* const, float sample)
434 @brief459 @brief
435 @param delay A pointer to the relevant tAllpassDelay.460 @param delay A pointer to the relevant tAllpassDelay.
461 @param input
462 @return
436 463
437 @fn float tAllpassDelay_getLastOut (tAllpassDelay* const)464 @fn float tAllpassDelay_getLastOut (tAllpassDelay* const)
438 @brief465 @brief
439 @param delay A pointer to the relevant tAllpassDelay.466 @param delay A pointer to the relevant tAllpassDelay.
467 @return
440 468
441 @fn float tAllpassDelay_getLastIn (tAllpassDelay* const)469 @fn float tAllpassDelay_getLastIn (tAllpassDelay* const)
442 @brief470 @brief
443 @param delay A pointer to the relevant tAllpassDelay.471 @param delay A pointer to the relevant tAllpassDelay.
472 @return
444 473 
445 @} */474 @} */
446 475
447 typedef struct _tAllpassDelay476 typedef struct _tAllpassDelay
448 {477 {
449
450 tMempool mempool;478 tMempool mempool;
451 479
452 float gain;480 float gain;
@@ -473,7 +501,7 @@ extern "C" { · 20 unmodified lines
473 void tAllpassDelay_free (tAllpassDelay* const);501 void tAllpassDelay_free (tAllpassDelay* const);
474 502
475 void tAllpassDelay_clear (tAllpassDelay* const);503 void tAllpassDelay_clear (tAllpassDelay* const);
476 int tAllpassDelay_setDelay (tAllpassDelay* const, float delay);504 void tAllpassDelay_setDelay (tAllpassDelay* const, float delay);
477 float tAllpassDelay_getDelay (tAllpassDelay* const);505 float tAllpassDelay_getDelay (tAllpassDelay* const);
478 void tAllpassDelay_tapIn (tAllpassDelay* const, float in, uint32_t tapDelay);506 void tAllpassDelay_tapIn (tAllpassDelay* const, float in, uint32_t tapDelay);
479 float tAllpassDelay_tapOut (tAllpassDelay* const, uint32_t tapDelay);507 float tAllpassDelay_tapOut (tAllpassDelay* const, uint32_t tapDelay);
@@ -493,11 +521,15 @@ extern "C" { · 13 unmodified lines
493 @fn void tTapeDelay_init (tTapeDelay* const, float delay, uint32_t maxDelay, LEAF* const leaf)521 @fn void tTapeDelay_init (tTapeDelay* const, float delay, uint32_t maxDelay, LEAF* const leaf)
494 @brief Initialize a tTapeDelay to the default mempool of a LEAF instance.522 @brief Initialize a tTapeDelay to the default mempool of a LEAF instance.
495 @param delay A pointer to the tTapeDelay to initialize.523 @param delay A pointer to the tTapeDelay to initialize.
524 @param initialLength
525 @param maxLength
496 @param leaf A pointer to the leaf instance.526 @param leaf A pointer to the leaf instance.
497 527
498 @fn void tTapeDelay_initToPool (tTapeDelay* const, float delay, uint32_t maxDelay, tMempool* const)528 @fn void tTapeDelay_initToPool (tTapeDelay* const, float delay, uint32_t maxDelay, tMempool* const)
499 @brief Initialize a tTapeDelay to a specified mempool.529 @brief Initialize a tTapeDelay to a specified mempool.
500 @param delay A pointer to the tTapeDelay to initialize.530 @param delay A pointer to the tTapeDelay to initialize.
531 @param initialLength
532 @param maxLength
501 @param mempool A pointer to the tMempool to use.533 @param mempool A pointer to the tMempool to use.
502 534
503 @fn void tTapeDelay_free (tTapeDelay* const)535 @fn void tTapeDelay_free (tTapeDelay* const)
@@ -511,26 +543,37 @@ extern "C" { · 7 unmodified lines
511 @fn void tTapeDelay_setDelay (tTapeDelay* const, float delay)543 @fn void tTapeDelay_setDelay (tTapeDelay* const, float delay)
512 @brief544 @brief
513 @param delay A pointer to the relevant tTapeDelay.545 @param delay A pointer to the relevant tTapeDelay.
546 @param delayLength The new delay length in samples. Cannot be greater than the max delay length given on initialization.
514 547
515 @fn float tTapeDelay_getDelay (tTapeDelay* const)548 @fn float tTapeDelay_getDelay (tTapeDelay* const)
516 @brief549 @brief
517 @param delay A pointer to the relevant tTapeDelay.550 @param delay A pointer to the relevant tTapeDelay.
551 @return
518 552
519 @fn void tTapeDelay_tapIn (tTapeDelay* const, float in, uint32_t tapDelay)553 @fn void tTapeDelay_tapIn (tTapeDelay* const, float in, uint32_t tapDelay)
520 @brief554 @brief
521 @param delay A pointer to the relevant tTapeDelay.555 @param delay A pointer to the relevant tTapeDelay.
556 @param input
557 @param position
522 558
523 @fn float tTapeDelay_tapOut (tTapeDelay* const d, float tapDelay)559 @fn float tTapeDelay_tapOut (tTapeDelay* const d, float tapDelay)
524 @brief560 @brief
525 @param delay A pointer to the relevant tTapeDelay.561 @param delay A pointer to the relevant tTapeDelay.
562 @param position
563 @return
526 564
527 @fn float tTapeDelay_addTo (tTapeDelay* const, float value, uint32_t tapDelay)565 @fn float tTapeDelay_addTo (tTapeDelay* const, float value, uint32_t tapDelay)
528 @brief566 @brief
529 @param delay A pointer to the relevant tTapeDelay.567 @param delay A pointer to the relevant tTapeDelay.
568 @param input
569 @param position
570 @return
530 571
531 @fn float tTapeDelay_tick (tTapeDelay* const, float sample)572 @fn float tTapeDelay_tick (tTapeDelay* const, float sample)
532 @brief573 @brief
533 @param delay A pointer to the relevant tTapeDelay.574 @param delay A pointer to the relevant tTapeDelay.
575 @param input
576 @return
534 577
535 @fn void tTapeDelay_incrementInPoint(tTapeDelay* const dl)578 @fn void tTapeDelay_incrementInPoint(tTapeDelay* const dl)
536 @brief579 @brief
@@ -539,10 +582,12 @@ extern "C" { · 2 unmodified lines
539 @fn float tTapeDelay_getLastOut (tTapeDelay* const)582 @fn float tTapeDelay_getLastOut (tTapeDelay* const)
540 @brief583 @brief
541 @param delay A pointer to the relevant tTapeDelay.584 @param delay A pointer to the relevant tTapeDelay.
585 @return
542 586
543 @fn float tTapeDelay_getLastIn (tTapeDelay* const)587 @fn float tTapeDelay_getLastIn (tTapeDelay* const)
544 @brief588 @brief
545 @param delay A pointer to the relevant tTapeDelay.589 @param delay A pointer to the relevant tTapeDelay.
590 @return
546 591 
547 @} */592 @} */
548 593
@@ -592,41 +637,45 @@ extern "C" { · 43 unmodified lines
592 637
593 @fn void tRingBuffer_init (tRingBuffer* const ring, int size, LEAF* const leaf)638 @fn void tRingBuffer_init (tRingBuffer* const ring, int size, LEAF* const leaf)
594 @brief Initialize a tRingBuffer to the default mempool of a LEAF instance.639 @brief Initialize a tRingBuffer to the default mempool of a LEAF instance.
595 @param delay A pointer to the tRingbuffer to initialize.640 @param buffer A pointer to the tRingbuffer to initialize.
641 @param size Size of the buffer. Should be a power of 2. Will otherwise be adjusted to the nearest greater power of 2.
596 @param leaf A pointer to the leaf instance.642 @param leaf A pointer to the leaf instance.
597 643
598 @fn void tRingBuffer_initToPool (tRingBuffer* const ring, int size, tMempool* const mempool)644 @fn void tRingBuffer_initToPool (tRingBuffer* const ring, int size, tMempool* const mempool)
599 @brief Initialize a tRingBuffer to a specified mempool.645 @brief Initialize a tRingBuffer to a specified mempool.
600 @param delay A pointer to the tRingbuffer to initialize.646 @param buffer A pointer to the tRingbuffer to initialize.
647 @param size Size of the buffer. Should be a power of 2. Will otherwise be adjusted to the nearest greater power of 2.
601 @param mempool A pointer to the tMempool to use.648 @param mempool A pointer to the tMempool to use.
602 649
603 @fn void tRingBuffer_free (tRingBuffer* const ring)650 @fn void tRingBuffer_free (tRingBuffer* const ring)
604 @brief Free a tRingBuffer from its mempool.651 @brief Free a tRingBuffer from its mempool.
605 @param delay A pointer to the tRingBuffer to free.652 @param buffer A pointer to the tRingBuffer to free.
606 653
607 @fn void tRingBuffer_push (tRingBuffer* const ring, float val)654 @fn void tRingBuffer_push (tRingBuffer* const ring, float val)
608 @brief655 @brief Push a value to the ring buffer, overwriting the oldest value if the buffer is full.
609 @param delay A pointer to the relevant tRingBuffer.656 @param buffer A pointer to the relevant tRingBuffer.
657 @param input The value to push to the buffer.
610 658
611 @fn float tRingBuffer_getNewest (tRingBuffer* const ring)659 @fn float tRingBuffer_getNewest (tRingBuffer* const ring)
612 @brief660 @brief Get the newest value in the ring buffer.
613 @param delay A pointer to the relevant tRingBuffer.661 @param buffer A pointer to the relevant tRingBuffer.
662 @return The newest value in the ring buffer.
614 663
615 @fn float tRingBuffer_getOldest (tRingBuffer* const ring)664 @fn float tRingBuffer_getOldest (tRingBuffer* const ring)
616 @brief665 @brief Get the oldest value in the ring buffer.
617 @param delay A pointer to the relevant tRingBuffer.666 @param buffer A pointer to the relevant tRingBuffer.
667 @return The oldest value in the ring buffer.
618 668
619 @fn float tRingBuffer_get (tRingBuffer* const ring, int index)669 @fn float tRingBuffer_get (tRingBuffer* const ring, int index)
620 @brief670 @brief Get the value at an index of the buffer.
621 @param delay A pointer to the relevant tRingBuffer.671 @param buffer A pointer to the relevant tRingBuffer.
622 672 @param index The index to access.
623 @fn float tRingBuffer_clear (tRingBuffer* const ring)673 @return The value at the given index.
624 @brief674
625 @param delay A pointer to the relevant tRingBuffer.
626
627 @fn int tRingBuffer_getSize (tRingBuffer* const ring)675 @fn int tRingBuffer_getSize (tRingBuffer* const ring)
628 @brief676 @brief Get the size of the ring buffer.
629 @param delay A pointer to the relevant tRingBuffer.677 @param buffer A pointer to the relevant tRingBuffer.
678 @return The size of the buffer.
630 679 
631 @} */680 @} */
632 typedef struct _tRingBuffer681 typedef struct _tRingBuffer
@@ -650,7 +699,6 @@ extern "C" { · 17 unmodified lines
650 float tRingBuffer_getNewest (tRingBuffer* const ring);699 float tRingBuffer_getNewest (tRingBuffer* const ring);
651 float tRingBuffer_getOldest (tRingBuffer* const ring);700 float tRingBuffer_getOldest (tRingBuffer* const ring);
652 float tRingBuffer_get (tRingBuffer* const ring, int index);701 float tRingBuffer_get (tRingBuffer* const ring, int index);
653 float tRingBuffer_clear (tRingBuffer* const ring);
654 int tRingBuffer_getSize (tRingBuffer* const ring);702 int tRingBuffer_getSize (tRingBuffer* const ring);
655 703
656#ifdef __cplusplus704#ifdef __cplusplus
leaf/Src/leaf-analysis.c+3−3
@@ -196,7 +196,7 @@ void tPowerFollower_free (tPowerFollower* const pf) · 195 unmodified lines
196 mpool_free((char*)p, p->mempool);196 mpool_free((char*)p, p->mempool);
197}197}
198 198
199int tPowerFollower_setFactor(tPowerFollower* const pf, float factor)199void tPowerFollower_setFactor(tPowerFollower* const pf, float factor)
200{200{
201 _tPowerFollower* p = *pf;201 _tPowerFollower* p = *pf;
202 202
@@ -207,14 +207,14 @@ int tPowerFollower_setFactor(tPowerFollower* const pf, float factor) · 4 unmodified lines
207 return 0;207 return 0;
208}208}
209 209
210float tPowerFollower_tick(tPowerFollower* const pf, float input)210float tPowerFollower_tick(tPowerFollower* const pf, float input)
211{211{
212 _tPowerFollower* p = *pf;212 _tPowerFollower* p = *pf;
213 p->curr = p->factor*input*input+p->oneminusfactor*p->curr;213 p->curr = p->factor*input*input+p->oneminusfactor*p->curr;
214 return p->curr;214 return p->curr;
215}215}
216 216
217float tPowerFollower_sample(tPowerFollower* const pf)217float tPowerFollower_getPower(tPowerFollower* const pf)
218{218{
219 _tPowerFollower* p = *pf;219 _tPowerFollower* p = *pf;
220 return p->curr;220 return p->curr;
leaf/Src/leaf-delay.c+3−5
@@ -80,7 +80,7 @@ float tDelay_tick (tDelay* const dl, float input) · 79 unmodified lines
80 return d->lastOut;80 return d->lastOut;
81}81}
82 82
83int tDelay_setDelay (tDelay* const dl, uint32_t delay)83void tDelay_setDelay (tDelay* const dl, uint32_t delay)
84{84{
85 _tDelay* d = *dl;85 _tDelay* d = *dl;
86 86
@@ -454,7 +454,7 @@ float tHermiteDelay_tickOut (tHermiteDelay* const dl) · 367 unmodified lines
454 return d->lastOut;454 return d->lastOut;
455}455}
456 456
457int tHermiteDelay_setDelay (tHermiteDelay* const dl, float delay)457void tHermiteDelay_setDelay (tHermiteDelay* const dl, float delay)
458{458{
459 _tHermiteDelay* d = *dl;459 _tHermiteDelay* d = *dl;
460 460
@@ -471,8 +471,6 @@ int tHermiteDelay_setDelay (tHermiteDelay* const dl, float delay) · 10 unmodified lines
471 d->omAlpha = 1.0f - d->alpha;471 d->omAlpha = 1.0f - d->alpha;
472 472
473 if ( d->outPoint == d->maxDelay ) d->outPoint = 0;473 if ( d->outPoint == d->maxDelay ) d->outPoint = 0;
474
475 return 0;
476}474}
477 475
478float tHermiteDelay_tapOut (tHermiteDelay* const dl, uint32_t tapDelay)476float tHermiteDelay_tapOut (tHermiteDelay* const dl, uint32_t tapDelay)
@@ -620,7 +618,7 @@ float tAllpassDelay_tick (tAllpassDelay* const dl, float input) · 141 unmodified lines
620 return d->lastOut;618 return d->lastOut;
621}619}
622 620
623int tAllpassDelay_setDelay (tAllpassDelay* const dl, float delay)621void tAllpassDelay_setDelay (tAllpassDelay* const dl, float delay)
624{622{
625 _tAllpassDelay* d = *dl;623 _tAllpassDelay* d = *dl;
626 624
leaf/Src/leaf-distortion.c+2−1
@@ -22,7 +22,6 @@ · 21 unmodified lines
22// Sample-Rate reducer22// Sample-Rate reducer
23//============================================================================================================23//============================================================================================================
24 24
25
26void tSampleReducer_init (tSampleReducer* const sr, LEAF* const leaf)25void tSampleReducer_init (tSampleReducer* const sr, LEAF* const leaf)
27{26{
28 tSampleReducer_initToPool(sr, &leaf->mempool);27 tSampleReducer_initToPool(sr, &leaf->mempool);
@@ -68,6 +67,7 @@ void tSampleReducer_setRatio(tSampleReducer* const sr, float ratio) · 39 unmodified lines
68 67
69}68}
70 69
70#if LEAF_INCLUDE_TABLES
71//============================================================================================================71//============================================================================================================
72// Oversampler72// Oversampler
73//============================================================================================================73//============================================================================================================
@@ -303,6 +303,7 @@ int tOversampler_getLatency(tOversampler* const osr) · 229 unmodified lines
303 _tOversampler* os = *osr;303 _tOversampler* os = *osr;
304 return os->phaseLength;304 return os->phaseLength;
305}305}
306#endif
306 307
307//============================================================================================================308//============================================================================================================
308// WAVEFOLDER309// WAVEFOLDER
leaf/Src/leaf-envelopes.c+4−3
@@ -23,6 +23,7 @@ · 22 unmodified lines
23 23
24#endif24#endif
25 25
26#if LEAF_INCLUDE_TABLES
26// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ Envelope ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ //27// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ Envelope ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ //
27void tEnvelope_init(tEnvelope* const envlp, float attack, float decay, int loop, LEAF* const leaf)28void tEnvelope_init(tEnvelope* const envlp, float attack, float decay, int loop, LEAF* const leaf)
28{29{
@@ -211,9 +212,9 @@ float tEnvelope_tick(tEnvelope* const envlp) · 182 unmodified lines
211 212
212 return env->next;213 return env->next;
213}214}
215#endif
214 216
215 217#if LEAF_INCLUDE_TABLES
216
217/* ADSR */218/* ADSR */
218void tADSR_init(tADSR* const adsrenv, float attack, float decay, float sustain, float release, LEAF* const leaf)219void tADSR_init(tADSR* const adsrenv, float attack, float decay, float sustain, float release, LEAF* const leaf)
219{220{
@@ -482,7 +483,7 @@ float tADSR_tick(tADSR* const adsrenv) · 262 unmodified lines
482 483
483 return adsr->next;484 return adsr->next;
484}485}
485 486#endif
486 487
487 488
488 489
leaf/Src/leaf-filters.c+2−0
@@ -900,6 +900,7 @@ void tSVF_setFreqAndQ(tSVF* const svff, float freq, float Q) · 899 unmodified lines
900 svf->a3 = svf->g * svf->a2;900 svf->a3 = svf->g * svf->a2;
901}901}
902 902
903#if LEAF_INCLUDE_TABLES
903// Efficient version of tSVF where frequency is set based on 12-bit integer input for lookup in tanh wavetable.904// Efficient version of tSVF where frequency is set based on 12-bit integer input for lookup in tanh wavetable.
904void tEfficientSVF_init(tEfficientSVF* const svff, SVFType type, uint16_t input, float Q, LEAF* const leaf)905void tEfficientSVF_init(tEfficientSVF* const svff, SVFType type, uint16_t input, float Q, LEAF* const leaf)
905{906{
@@ -970,6 +971,7 @@ void tEfficientSVF_setQ(tEfficientSVF* const svff, float Q) · 64 unmodified lines
970 svf->a2 = svf->g * svf->a1;971 svf->a2 = svf->g * svf->a1;
971 svf->a3 = svf->g * svf->a2;972 svf->a3 = svf->g * svf->a2;
972}973}
974#endif
973 975
974/* Highpass */976/* Highpass */
975void tHighpass_init(tHighpass* const ft, float freq, LEAF* const leaf)977void tHighpass_init(tHighpass* const ft, float freq, LEAF* const leaf)
leaf/Src/leaf-math.c+2−3
@@ -827,11 +827,9 @@ float median3f(float a, float b, float c) · 826 unmodified lines
827 return fmax(fmin(a, b), fmin(fmax(a, b), c));827 return fmax(fmin(a, b), fmin(fmax(a, b), c));
828}828}
829 829
830#if LEAF_INCLUDE_MINBLEP
830/// MINBLEPS831/// MINBLEPS
831
832// https://github.com/MrBlueXav/Dekrispator_v2 blepvco.c832// https://github.com/MrBlueXav/Dekrispator_v2 blepvco.c
833
834
835void place_step_dd(float *buffer, int index, float phase, float w, float scale)833void place_step_dd(float *buffer, int index, float phase, float w, float scale)
836{834{
837 float r;835 float r;
@@ -874,3 +872,4 @@ void place_slope_dd(float *buffer, int index, float phase, float w, float slope_ · 36 unmodified lines
874 index++;872 index++;
875 }873 }
876}874}
875#endif
leaf/Src/leaf-oscillators.c+8−0
@@ -86,6 +86,7 @@ void tTableSampleRateChanged(tTable* const cy) · 85 unmodified lines
86 c->inc = c->freq * leaf->invSampleRate;86 c->inc = c->freq * leaf->invSampleRate;
87}87}
88 88
89#if LEAF_INCLUDE_TABLES
89// Cycle90// Cycle
90void tCycle_init(tCycle* const cy, LEAF* const leaf)91void tCycle_init(tCycle* const cy, LEAF* const leaf)
91{92{
@@ -155,7 +156,9 @@ void tCycleSampleRateChanged (tCycle* const cy) · 63 unmodified lines
155 156
156 c->inc = c->freq * leaf->invSampleRate;157 c->inc = c->freq * leaf->invSampleRate;
157}158}
159#endif
158 160
161#if LEAF_INCLUDE_TABLES
159//========================================================================162//========================================================================
160/* Triangle */163/* Triangle */
161void tTriangle_init(tTriangle* const cy, LEAF* const leaf)164void tTriangle_init(tTriangle* const cy, LEAF* const leaf)
@@ -226,7 +229,9 @@ void tTriangleSampleRateChanged (tTriangle* const cy) · 64 unmodified lines
226 229
227 c->inc = c->freq * leaf->invSampleRate;230 c->inc = c->freq * leaf->invSampleRate;
228}231}
232#endif
229 233
234#if LEAF_INCLUDE_TABLES
230//========================================================================235//========================================================================
231/* Square */236/* Square */
232void tSquare_init(tSquare* const cy, LEAF* const leaf)237void tSquare_init(tSquare* const cy, LEAF* const leaf)
@@ -296,7 +301,9 @@ void tSquareSampleRateChanged (tSquare* const cy) · 63 unmodified lines
296 301
297 c->inc = c->freq * leaf->invSampleRate;302 c->inc = c->freq * leaf->invSampleRate;
298}303}
304#endif
299 305
306#if LEAF_INCLUDE_TABLES
300//=====================================================================307//=====================================================================
301// Sawtooth308// Sawtooth
302void tSawtooth_init(tSawtooth* const cy, LEAF* const leaf)309void tSawtooth_init(tSawtooth* const cy, LEAF* const leaf)
@@ -366,6 +373,7 @@ void tSawtoothSampleRateChanged (tSawtooth* const cy) · 63 unmodified lines
366 373
367 c->inc = c->freq * leaf->invSampleRate;374 c->inc = c->freq * leaf->invSampleRate;
368}375}
376#endif
369 377
370//==============================================================================378//==============================================================================
371 379
leaf/Src/leaf-tables.c+9−2
@@ -2,10 +2,13 @@ · 1 unmodified line
2 2
3#if _WIN32 || _WIN643#if _WIN32 || _WIN64
4 4
5#include "..\leaf-config.h"
5#include "..\Inc\leaf-tables.h"6#include "..\Inc\leaf-tables.h"
6#include "..\Inc\leaf-global.h"7#include "..\Inc\leaf-global.h"
8
7#else9#else
8 10
11#include "../leaf-config.h"
9#include "../Inc/leaf-tables.h"12#include "../Inc/leaf-tables.h"
10#include "../Inc/leaf-global.h"13#include "../Inc/leaf-global.h"
11 14
@@ -14,6 +17,8 @@ · 2 unmodified lines
14 17
15#include "stdlib.h"18#include "stdlib.h"
16 19
20#if LEAF_INCLUDE_TABLES
21
17const 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.00106704811502762222const 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
18 23
19};24};
@@ -14059,11 +14064,11 @@ const float __leaf_table_sinewave[SINE_TABLE_SIZE] = {0.0f, 0.00305f, 0.00613f, · 14039 unmodified lines
14059-0.08582f, -0.08276f, -0.07968f, -0.07663f, -0.07358f, -0.07053f, -0.06744f, -0.06439f, -0.06134f, -0.05826f, -0.05521f, -0.05215f, -0.04907f, -0.04602f, -0.04294f, -0.03989f, -0.03683f, -0.03375f, -0.0307f, -0.02762f,14064-0.08582f, -0.08276f, -0.07968f, -0.07663f, -0.07358f, -0.07053f, -0.06744f, -0.06439f, -0.06134f, -0.05826f, -0.05521f, -0.05215f, -0.04907f, -0.04602f, -0.04294f, -0.03989f, -0.03683f, -0.03375f, -0.0307f, -0.02762f,
14060-0.02457f, -0.02148f, -0.01843f, -0.01535f, -0.0123f, -0.00922f, -0.00616f, -0.00308f14065-0.02457f, -0.02148f, -0.01843f, -0.01535f, -0.0123f, -0.00922f, -0.00616f, -0.00308f
14061};14066};
14067#endif
14062 14068
14063 14069
14070#if LEAF_INCLUDE_MINBLEP
14064// From https://github.com/MrBlueXav/Dekrispator_v2 minblep_tables.c14071// From https://github.com/MrBlueXav/Dekrispator_v2 minblep_tables.c
14065
14066
14067/* minBLEP tables14072/* minBLEP tables
14068 *14073 *
14069 * sinc cutoff frequency: 0.9 nyquist14074 * sinc cutoff frequency: 0.9 nyquist
@@ -15820,3 +15825,5 @@ slope_dd_table [MINBLEP_PHASES * SLOPE_DD_PULSE_LENGTH + 1] = · 1750 unmodified lines
15820 0.000000e+00, 0.000000e+00, 0.000000e+00, 0.000000e+00, 0.000000e+00, 0.000000e+00, 0.000000e+00, 0.000000e+00,15825 0.000000e+00, 0.000000e+00, 0.000000e+00, 0.000000e+00, 0.000000e+00, 0.000000e+00, 0.000000e+00, 0.000000e+00,
15821 0.000000e+0015826 0.000000e+00
15822};15827};
15828
15829#endif
leaf/leaf-config.h+14−0
@@ -0,0 +1,14 @@
1/*
2 ==============================================================================
3
4 leaf-config.h
5 Created: 18 Dec 2020 1:24:49pm
6 Author: Matthew Wang
7
8 ==============================================================================
9*/
10
11#pragma once
12
13#define LEAF_INCLUDE_TABLES 0
14#define LEAF_INCLUDE_MINBLEP 0

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t