A Brief History of Grackle
(as told by me, Eris)
June 2023
June 29th, 2023 marks the start of Naomi and my Discord message history. I had been jamming on modular while playing videogames and she got talking about an “oscillator” she was working on and speculating as to how to quantize the frequencies its modulators. The adjectives “steppy and crunchy” were used. We agreed that we both like crunchy. This would turn out to be surprisingly prescient.
January 2024
Naomi and I started talking about synth dev again. She mentioned an issue with the Daisy and working with a multiplexer. At the time I was swamped with work, as I was developing alt firmwares for an existing module while also trying to get a release firmware for a different module out the door for a Kickstarter while also managing cloud infrastructure for an XR company. We traded some code back and forth, but ultimately neither of us could figure out what the matter was.
October 2024
When I first started teaching myself DSP, the concepts that captured my attention most were granular synthesis and FM synthesis. Recently I had found myself returning to these concepts. I ended up designing a realtime granular beat-masher on some custom, Teensy-based hardware.
Around the same time I had recently become fascinated with Ess Mattison’s work at Elektron, rekindling my interest in FM synths and spurring me to obtain a Model:Cycles and a RYK Vector Wave. In the past, the algorithms I’d implemented were “true” through-zero FM, and through these recently-obtained tools I realized that I’d been remiss to neglect the relative stability and simplicity of phase-modulation-based implementations. I found myself working on a tracker for the Nintendo DS (the first platform I wrote synth code for) based around a 2op phase-modulation synthesis model that turned out to be surprisingly versatile.
Coming into October I was laid off from my day job and found myself with an unexpected wealth of spare time (and stress). Just as this happened, Naomi reached out to me on Discord to say hello. After bonding over our shared love of feedback systems and chatting about shaders and hardware design, Naomi mentioned that she still had a Grackle prototype kicking around. For my own part, I was struggling with getting the codecs working on my Teensy-based Eurorack prototyping system, as I had minimal hardware design skills and even less in the way of proper diagnostic equipment. A trade was proposed, and soon there was a code-less Grackle prototype on the way to my doorstep.
Halloween!
The day before Halloween 2024, Grackle arrived on my doorstep. I had just gotten back from a much-needed visit to the United States to see family and friends, and was energized to start writing audio code. I quickly began bombarding Naomi with questions about the hardware and planning a system for representing the Grackle hardware in software.
By the next day I was happily picking away at the hardware, ensuring that each bit CV input, switch, and LED was working and accounted for. Naomi generously permitted me to pepper her with inquiries well into the evening, and by 8:00pm on Halloween day we had gotten the entirety of Grackle’s hardware working and accounted for in software.
That night (or morning the next day, depending on your perspective) at about 2:00am, Grackle was making sounds for the first time. I had quickly slapped together a simple A-plus-B-into-C phase modulation implementation using 1/8ths-based modulation ratios, and we immediately found ourselves entranced with this magical box that could produce everything from donky basses and dubstep growls to mega-drive plucks and metallic percussive blasts just by tweaking a few sliders. The first clip in the video above is from about 2:30am, November 1st.
November 2024 (and onward)
The week immediately proceeding Halloween 2024 is a blur to me, as I spent pretty much every day chatting with Naomi about Grackle and then staying up till sunrise trying to hammer out the software implementation details. Luckily, there are chat logs and some dubious commit messages to reference:
November 1st: Sound is working, envelopes are working, intervals are working, the different algorithms are working.
November 2nd: ActualFM input works, tested three different modes for the auxiliary output that eventually became mod out, fixed some issues regarding inverted CV ins, made envelope attack logarithmic and decay exponential. Also a commit saying “It’s like, pretty much feature complete????” (hilarious and no absolutely not)
November 3rd: Doubled the number of interval options on the sliders, drastically reduced mod amounts because it was way too easy to push Grackle into “noise town,” adjusted mod and interval CV ranges to match the slider ranges, various bug fixes and tweaks.
November 4th: Increased buffer size and reduced CV polling frequency to get rid of some troublesome noise/bleed on the CV inputs. This would come back to bite me later.
November 5th - 8th: Soooooo much testing and patching. Realized that having both sliders control the amplitude of each modulator in MUL mode was redundant due to the commutative property and we decided to have the first mod depth slider control a triangle wavefolder affecting the product of the modulators instead.
Past the 8th, Grackle largely resembled the current incarnation, so you might ask what we’ve been up to since then. In my experience, software feature development moves pretty quick (especially when you’re so excited that you’re burning the candle at both ends and a secret third end) but refinement and hardware revisions necessarily have to move at a slow and steady pace.
As such, the last seven months have involved a combination of gathering feedback, making hardware tweaks, ordering parts, planning, documenting, web development, video production, code-hardening and debugging, optimization and refinement, and sooooo much patching.
The most notable hardware improvements from that intervening time were adding envelope normalization to the depth inputs, tweaks to the LEDs, and getting the auto-calibration hardware in order (including the adding the shift button, which allowed us to introduce interval-unlocking and plan some potential extra features down the road). Software refinements included getting the CV polling rates well into audio range, 2x supersampling of the operators, refining the Serge/LPG-inspired envelope generator, and ironing out what happens when you send negative CV to the depth and interval inputs. Oh, and so much latency/code optimization, because getting the Daisy to run stable with a 2-sample-wide buffer does not provide much computational wiggle room.
Ever since that fateful Halloween, Naomi and I have been excitedly sending each other videos of all the cool sounds we’ve managed to wring out of Grackle. The video above is a best-of all the little snippets I’ve sent to Naomi over the last several months.
Grackle has been such an unexpected and incredible source of excitement and joy for myself and Naomi both. I know we were both struggling in mid-to-late 2024, and I think it would be fair to say that Grackle’s development really turned things around. Personally, it’s rekindled my love of modular synths and further solidified my ongoing obsession with phase modulation synthesis.
I’m so grateful to Naomi for giving me the privilege of helping bring this idea into reality, and I’m so pleased that the development of this module spurred us to found Entropic Loop together. She’s an incredible synthesist, designer, musician, writer, and all around person and I am so lucky to know her and have the unique privilege of working together with her creatively.
Thanks!
I’ve already thanked Naomi for including me on this journey. I’d also like to thank her wife Lauren Bousfield for vigorously testing Grackle, providing feedback, mastering a great deal of our audio, being a source of constant encouragement, for making incredible music, and just being super awesome in general.
Thanks to Ben (obakegaku) from Instruo for featuring Grackle in some videos, providing feedback, taking that slick photo of Grackle on the pink Pulsar-32, and generally being cool as heck.
Huge thanks to Eli from Mystic Circuits for some noteworthy Grackle video features and for providing some of the most detailed and thoughtful feedback I’ve personally ever gotten on project. He was the person who suggested increasing the denominator with negative interval CV, and he also made me realize that sometimes a module deliberately not doing a thing can be a feature.
Thanks to Wes (soffter) for the encouragement and feedback, and thank you to my friend Katie Wayne for the same and for future videos featuring Grackle.
Also thank you to Carson Walls of Decapod Devices, who was an invaluable resource when I was first starting out developing modular and who I am currently working on a project with. Thank you to Thea of Winterbloom for providing a space where I could meet other likeminded synth folks, and thanks to Robin (Thawney) for perpetually popping into my DMs to gas me up.
Thank you to all of the people I’ve neglected to name, and also, if you’ve made it this far, thanks for reading all this!