sndkit TODO

sndkit TODO

A dynamically generated list of public-facing TODO items for sndkit. The TODO list is managed using this wiki's zetdo, using the state TODO-sndkit.

add RNG to sndkit core

UUID: #2674354c.

2021-04-16 20:14:49: this could be something that would be pretty easy to implement this weekend. shoudln't take more than 15 minutes to do.

create bitcrush algo

UUID: #f2945ac3.

the current soundpipe module is broken and not worth repair (totalled). it would be better to build another one from scratch.

2021-03-30 22:01:20: should downsampling be a normalized value so that it can be sample-rate independant? I'm going to say no for now because the soundpipe bitcrush wasn't.

2021-03-30 21:59:02: yeah. I think that makes sense. bit depth all comes down to reducing noise floor. and noise floor happens as you strip away bits that are LSB. it was just a bit counter-intuitive for me for some reason.

2021-03-30 21:56:52: bit reduction can be done with a shift I think? but is it really about losing LSBs?

2021-03-30 21:53:58: downsampling is done via a sample and hold. the counter can be managed using a phasor. aliasing is desired.

2021-03-30 21:51:29: a bitcrusher actually does two things: it truncates the bit depth, and it downsamples. Both are done in an intentionally crude way.

add error codes to sndkit core

UUID: #317b788d.

it is going to be difficult to know what goes wrong when things go wrong. adding specific error codes with canned messages will make life easier.


UUID: #a1e9dfbb.

a cross-fade looping sampler with adjustable crossfade times and pitch control.

2021-01-31 10:59:19: If I can't figure out continuous adjustment, having something that dynamically produces a crossfade at run-time is good enough I guess. Since I added (crate), I've been able to mess around with samples before and being able to turn any sound into a seamless texture is exciting to me.

2021-01-31 10:57:38: I already have a static crossfade loop generator (cfloop). I want this one to have seamlessly adjustable crossfade looping abilities. Being able to do that continuously without clicks is what is interesting to me. I'm sure there may be a clever way to do this, I just haven't figured it out.


UUID: #d39bbd95.

GROWL is a kind of vowel filter. Would be a good first speech synthesis thing to have:

2021-02-23 16:51:26: a good initial stab words for this. there are a lot of smaller components, so slow and steady wins the race.

2021-02-23 16:25:32: fast tracking this sndkit algo because it is in the spirit of (toys_not_tools). everyone loves a good vowel filter, and hoping this can be the starting point for building generative articulation engines for vocal synthesis.

2021-02-21 08:33:47: components for this include resonator filters, balancers, and a dc blocker.


UUID: #629c4e3f.

a BLEP oscillator based on an implementation by Taylor Holliday

2021-02-23 10:16:38: normally, I prefer to write words before code. but since the code is already written, I've found this approach is less messy.

2021-02-23 10:15:43: I'm finally going to get around to doing this. I have the original C++ code. I will rewrite it in ANSI C, then put it inside of a literate program.


UUID: #016662a5.

low shelf filter based on the audio EQ cookbook

2021-01-31 11:02:47: from an educational standpoint, it might be useful to structure the writeup so that it starts with the math equation, and ends up in C code.

2021-01-31 11:02:09: all it is is a biquad filter with the right coefficients. The coefficients would come from the audio EQ cookbook, which I've already rewritten in TeX for myself. Those could be a nice part of the page.

2021-01-31 11:01:08: a low shelf filter is more useful to me than a high shelf filter right now, so this comes first.


UUID: #ba469f19.

high shelf filter based on the audio EQ cookbook


UUID: #706c040c.

stringer is a string resonator filter

use pikchr to draw diagrams in sndkit

UUID: #d4da5c0c.

2021-03-04 09:37:56: dynamically write pikchr files

2021-03-04 09:36:45: import pikchr into sndkit

2021-03-04 09:34:56: display SVG files as sndkit figures

2021-03-04 09:34:12: create pikchr diagram for swell

2021-03-04 09:33:57: I really need to just make a diagram for swell to learn how the pikchr language works.

2021-02-12 09:34:52: the hard part in pikchr is learning the syntax. but I do have a simple usecase that would be very helpful. swell is filter that is very easy to explain with a flowchart.

create pikchr diagram for swell

UUID: #d8de5615.

2021-03-09 11:24:12: had an initial go at it. it looks like crap, but it is progress.

2021-03-09 09:56:14: an initial flowchart with the right boxes, text, and arrows. icons and other bits would be nice to have for later.

2021-03-09 09:55:23: going to try to make a flowchart for swell today.

2021-03-08 09:10:08: documentation for pickhr

display SVG files as sndkit figures

UUID: #845c5c44.

dynamically write pikchr files

UUID: #e7785f38.


UUID: #27afc91c.

sparsenoise is will fire off random impulses. pretty much velvet noise I think?

clock-synced delay

UUID: #53ea1b63.

this is basically a variable delay line that stays in sync via an external clock signal.


UUID: #f07ddbdb.

given a clock signal, produce an approximate phasor signal.

2021-01-30 16:39:15: I do have words written up for this. It's definitely been a less important thing to do over time.

create parameter caching page

UUID: #11c1cef6.

create a informational wiki page in sndkit that explains what is meant by the term parameterized caching.

create page that explains what is meant by *normalized range*.

UUID: #ba617253.

the concept of a normalized range keeps coming up consistently, and it would be good to have a page that explains what it is and why it is important.

create fixed-point phasor page.

UUID: #ec374b7d.

this component is used so frequently, it would be helpful to have an informational page about this.

2021-02-10 15:59:06: this should be a fixed vs floating point phasor page. the key difference is how the phasor is reset. fixed point is a bit more efficient. Beyond that, the two are pretty identical.

2021-02-07 10:16:16: lots of older computer music algorithms use fixed point precision phasors, and I have no intention of updating those to be floating point. what I'm interested in is: is it worth the trouble using fixed point on new algorithms?

2021-02-07 10:15:17: I've been saying that it is less prone to weird numerical errors compared to floating point. I don't know how true that actually is. Will look into it.

2021-02-07 10:14:37: I'm going to get to the bottom of this: is a fixed point phasor actually meaningful in any way on modern hardware and compilers?

create coding conventions page

UUID: #8f5d9cc6.

There are definitely patterns and conventions that I follow. It would be good to create a formal page on this to document the consistency.

create LPF algorithm

UUID: #5583c640.

create a resonante lowpass filter based on the one found in ChucK. Works great for making click sounds.


UUID: #76f74cad.

a 4 operator FM voice designed to be highly flexible.

2021-02-12 09:40:03: I want this FM oscillator to be keep me interested for a while. Each operator should be able to take in wavetables of arbitrary size. I should also be able to morph between an arbitrary set of wavetables, possibly with arbitray sizes. Feedback control will be a global knob. Since I want different configurations, it seems like any other solution would be too messy.

port plateau DSP to patchwerk node

UUID: #b24e17bf.

see playground/plateau for more deets. the idea is to get the original C++ running, then to make a version of it in ANSI C later.


UUID: #48eecf9c.

valp4 is a Virtual-Analogue Low-Pass 4-pole filter

2021-03-02 14:00:28: this needs to be examined more closely. similar to growl or bigverb, this has a lot of underlying components.

2021-02-12 09:19:23: I wrote a comment about this, but on the wrong task. will pirkle has a C++ implementation that is worth examining. It is from the same Art of VA filter design book. My version would ported to ANSI C, and of course would give credit to Pirkle.


UUID: #4482dab5.

an implementation of the famous paulstretch algorithm. this code already exists in soundpipe, it just needs to be rewritten as a literate program.


UUID: #004ac67a.

jitseg hopes to be a jitter signal generator

2021-02-23 16:23:50: now that I am looking at it more critically, I'm putting this aside for now. It is already very similar to rline, and there are more important algorithms worth implementing.

2021-02-23 10:42:29: this one will be really quick to write up I think. I'm going to hold off until I get a better API in place for local testing.

2021-02-23 10:29:19: writing some initial words now.

2021-02-12 09:29:44: no, there is no initial writings on this. I will have to fix that.

2021-02-12 09:28:11: do I even have any words for this yet?

2021-02-07 09:53:08: jitseg is actually a very small algorithm that will end up being under 100 lines of C. shouldn't be too hard to right about. the most complex part is the internal RNG to write about.

2021-01-31 10:53:50: there is some initial working code for this. maybe even a few words and outlines.

home | index