Retro algorithmic reverb plugin in JUCE with multiple algorithms (including emulations of classic hardware) and more to come.
Includes plate and hall reverbs from Dattorro; Gardner's 1992 room reverbs; 4 feedback delay network reverbs using the "FDN Toolbox"; and two experimental/special-effect reverbs. Recently updated for code clarity and maintainability.
Stereo glitch plugin that records a buffer of recent audio and mangles it, giving tape-warping effects, CD skips, bitcrushing, cell phone codecs, and more.
Lo-fi plugin with options of various telecommunications codecs including Mu-Law and A-Law 8-bit, and GSM 06.10. Work in progress — more codecs and glitching effects coming soon.
[rs.file2sig~]: import any file as raw binary data and play this data back as a control signal for synthesizing PSK (phase-shift keying)/ASK/FSK/etc. telecommunications signals. See Nathan Ho's post on using digital modulation modes for synthesis to hear the kinds of sounds this produces.
Rust tool to import a folder of files, convert to audio, and normalize/filter out sub-audible frequencies. Processes files in parallel (using rayon), so it's extremely fast even with large batches of files.
This is the same process described in this post, but automated to be much less time-consuming.
Python tool for glitching MP3s while leaving them playable. Includes many options to shape glitching amount, character, and timbre, and a shell script to automate converting batches of WAV files to MP3 with FFmpeg before glitching.
The mechanics behind this are described in this post, and I discuss using Python to do the glitching in this post.
Grimoire
A grimoire is a book of spells or incantations. This one is my place to keep shell scripts and other short snippets of code I find useful.
I love tea (my favorite is Bigelow's Vanilla Chai) and I prefer it steeped for a precise length of time. However, I find alarms extremely irritating, with the worst part being that many of them keep going until you turn them off. This script lets me type e.g., ./timer.sh 4m to get a timer that chimes once and then stops.
This line is what I use to apply EXIF rotation data to photos from my phone, resize them, and convert to .webp for use on my website. It uses jhead, imagemagick, and zsh.
This script generates a new post file with the correct file name, directory, title, description, and date; and then opens it in VSCodium. Equivalent versions are included in my site files for notes and interactions. Run the following line from the root folder:
./post "<post-title>""<post-description>"
My script for creating an interaction post (e.g., likes, RSVPs, etc. using Microformats) is able to take in a flag to indicate the type of interaction and the URL of the post with which I'm interacting and 1); retrieve the target post's title and 2); create the correct title/tags/etc. (e.g., "Liked | Example Post" for the title).
./interaction -r"<target-url>"
Filter Webmentions
This Python script gets my webmentions, filters out all mentions received over Bridgy (which I use to pull in Mastodon/Bluesky interactions as webmentions), and writes the rest to a file webmentions.json. This is nice because non-Mastodon/Bluesky webmentions are much more interesting to me, but they're much more rare than social media interactions, and tend to get lost in the shuffle. I run this from my root folder to get the mentions and open the file in my editor.