Chasing the Horizon

My heartfelt ruminations on this day and age of AI and the path to Ascend.
Always. It’s as if the target is moving away faster than I can run. Maybe I set my goals too high. I’m probably too ambitious, and that’s my nature. But don’t get me wrong. I am not complaining. I enjoy every bit of the journey. I am a traveler in time, in my thoughts and dreams, in code, and in my creations. I just get frustrated at times because when the goal is within reach, every milestone achieved, I reach for it, and it moves again.
Pardon me. You do not care about that. What you’d probably care about is that every milestone was done with utmost passion, to the point of fanatical obsession. Nothing worth doing is easy.
‘Nuff prose. What the hell am I talking about? Ascend!
Enter Ascend
So let me take you with me on this final stretch. I’ve made the necessary preparations and everything is in place through the years, prepared and ready to go. This will be an exciting path. Promise.
Ascend is the software that completes the story. It’s not the final chapter, for sure. That’s why the title is “Almost, but never there.” But it will complete the full circle. It’s planned to be a collection of software plugins and possibly hardware implementations (I’ll share more about that later).
This is where the real action takes place. It lets the guitar player ascend to the highest level of expressivity, and as a designer, I can express my creativity to the fullest.
Ascend is the DSP software component of the whole system. The wonderful thing about the Ascend architecture is its open-ended design.
We can start with a rewrite of the basics: the preprocessor and the virtual pickups. Some of you have already seen a previous evaluation version of the Ascend VPU, and some of you may still be using it. This time, it will be a full rewrite. There is a whole new set of refinements I would like to implement with the virtual pickups.
The preprocessor includes the inverse comb filter for canceling the physical pickup node and anti-node, bringing the sound to its purest form, plus noise reduction techniques that push noise down to inaudible levels even with extreme gain stages applied later in the signal chain. I would also like to implement improved crosstalk cancellation in the preprocessor. That will enable extreme polyphonic heavy metal gain, beyond poly-fuzz.
Then we can probably proceed to onset-guided processing. Here we have envelope processing, both amplitude envelopes and timbre envelopes (using Moog filters or state variable filters, for example), with perfect note onset alignment. Mind you, this is not your grandfather’s touch wah, which is monophonic and transient-sensitive. True onset-based processing can track subtle note shifts buried within legatos. With onset-guided envelope trackers and infinite polyphonic sustain, the guitar enters synthesizer territory while using the natural sound of the strings, whether clean or distorted. This is Infinity and Ascend working as one. The sustainer holds the note, the DSP shapes it, and neither can do this alone.
Are you with me?
More Ascend Modules
Here is a sampler of some more processing modules planned:
- Pitch shifting, static (alternate tuning), or dynamic (whammy)
- Step sequencing, which needs a more elaborate UI
- Distortion and waveshaping
- Envelope-controlled enhancer, generating odd and even harmonics
- EQ matching with IRs
- Acoustic body modeling
The synthesis engine is deliberately open-ended. Among the approaches, all applied per string:
- Waveguides and Karplus-Strong synthesis
- Subtractive synthesis
- FM synthesis
- Additive synthesis (and modal synthesis)
- Phase distortion
- Granular synthesis
Building the Foundation
I’m very methodological when it comes to software development. I start with the infrastructure. In 2016, I started the Elements graphical user interface library. Elements is lightweight, fine-grained, resolution-independent, and extremely modular. Written in modern, cross-platform, C++20 with a declarative DSEL for constructing GUI elements, it needs no external visual editor or code generator: the interface lives entirely in C++. The Elements library also includes the Artist library, a 2D Canvas library, and a lean API modeled after the HTML Canvas 2D Context specification.
In 2017 I started the Q DSP library. Also written in modern, cross-platform C++20, Q started out as a collection of DSP routines I used in the experimental (at the time) Infinity project and evolved into something that I am truly proud of. Q is a library for audio digital signal processing. The Q DSP Library is designed to be simple and elegant and efficient enough to run on small microcontrollers.
All three libraries encompass 71K lines of open-source code—Elements 35K, Artist 20K, and Q 16K.
You Made This Possible
You, my dear friends, subsidized this passion. By purchasing our products, the Nu and Nexus system, the XR-Spectra, and the Thor guitar, you enable me to write such code. Yes, you.
I was expecting more from open source, but unfortunately, I failed to get enough traction and community support. I’ve had so much more success from my contributions a decade earlier, in the 2000s, to the Boost C++ Libraries. The open-source community is not the same as it was in the late 90s and early 2000s. Sadly, there’s no longer a vibrant community of altruistic people who freely share code. It seems the days of writing code, sharing it, and then hacking on it as a group are long gone. I thought it was just my personal experience, but according to this study: A Replication Study on Measuring the Growth of Open Source, after an initial exponential growth from the late 1990s, there is a downwards trend since its peak in 2013.
And even more sadly, open source is the first casualty of AI. From my personal perspective, I feel no motivation to share anything further, knowing that whatever I share will be scraped by large AI companies to feed their insatiable data centers.
But thanks to you, Cycfi Research persisted. I started Cycfi to achieve my lifelong dream of developing an instrument that transcends the limitations of the electric guitar, as detailed in the Infinity White Paper. Thank you all for supporting our products, including the Nu Multi multichannel pickup, the Nexus system, and the Infinity polyphonic sustainer system that is installed in the Thor Infinity Guitars.
AI Eats AI
It’s happening now. Prepare to see an onslaught of AI coding slop! Treasure code written prior to AI. Those are your hand-written jewels. Oh, and I’m so glad that my code was included in the GitHub Arctic Code Vault! Forever preserved in the Arctic World Archive (AWA), a very long-term archival facility 250 meters deep in the permafrost of an Arctic mountain. I bet future anthropologists will scratch their head when they see the events following AI.
That black box they say powers AI? It’s not a black box. It’s the whole of humanity! Full stop. And by now, the big AI companies have consumed their fill. There’s no more to scrape. Now AI is eating AI slop.
I am not saying that there won’t be any more software gems in this age of AI. I am just warning you that the good ones will be drowned underneath a humongous pile of AI crap, just as we are witnessing now how AI pervades the more visible content generation community and the works, including arts, photography, video, literature, music, and even humble blogs such as this.
AI is the Modern Compiler
Most people get it wrong. There’s no shortcut. Programming is just one aspect of software engineering. The highest level is design and architecture. You can’t just write a prompt and expect AI to churn out a well-designed piece of engineering. If that’s what you are doing now, then expect slop. Worse, slop that you can’t even understand, written in a language that you did not bother spending time learning and let alone achieving expertise with. Who’s going to debug your code? Ah AI! Who’s going to maintain your code? Ah, AI. Really?
I started programming using assembly language. Tough! But it was the only tool at the time that could achieve the highest level of performance. Then I learned Pascal. It compiled to machine code, as fast as possible, second to assembler, yet using a higher-level language. Then, C++ and object-oriented programming, and later generic programming. A much higher level of abstraction, yet still as close to bare metal as possible to achieve the highest level of performance. I remember in the early days people saying that you can never achieve the level of performance with any compiled language compared to direct assembler. At some point that was no longer true. Compiled languages have become so powerful now that it would be exceedingly difficult to write anything in assembler that matches their performance. Modern processors are designed with compilers in mind.
I am using AI now as an even higher-level compiler. I give it a high-level architectural design specification and a well-defined test-driven objective, and it generates C++. Something that would have taken me days to program takes only a few minutes with AI. It’s blazingly fast at that task. But make no mistake. A compiler doesn’t replace the software engineer; it eliminates the labor of writing machine code by hand. Someone still has to specify the architecture, and someone still has to read the output.
So I still review each line it generates. And I always make sure it conforms to my strict coding guidelines, honed over the years. I ask it to follow MY coding style, using the code base I have developed over decades. AI is excellent at mimicry. Once it has learned my code base, I can say that it’s more like me writing the code than, say, if I were to hire someone else.
Path to Ascend
I’ve done my share of open source. I’ll keep improving what’s already public, including the Q DSP library, the Elements GUI library, the Artist 2D graphics library, and now the QPlug library, under intense development. These libraries will be the bedrock underneath the Ascend project.
Now, I will embark on Ascend. I will still share what I can. I still enjoy sharing, and if there’s interest, I will likely provide tutorials on building audio plugins from scratch using my open-source libraries. I can teach those interested how to utilize AI effectively to ease development. And along the way, I will continually refine the bedrock libraries, as needed. Ascend will be partly open source—as feature inclusions into the public-facing libraries above, and partly private to protect my IP. I do not want AI and other selfish entities to steal my ideas, embodied in my code.
I’ve rambled long enough. ‘Till next time, stay tuned…

Your journey, and your approach to building are both highly inspirational, Joel. I’ll be contributing financially soon enough, but you’ve provided value in more ways than just your products. Carry on!
Thank you so much, Chaz!
Dear Joel, it’s good to know that also with “target” moving away, still you are walking step by step with good floor and terrain under your feet. The goals of Ascend are completely aligned with the future to come, from my perspective. It will be AI in some sense, or Open Code Community, or high-level architectural design specification spread into the Air. But, “onset-guided processing’ will be a common thing at some point. Just keep it going!! Today, in an interesting cross-reading interaction, I noticed the immediate application of Pitch Shifting (per Note/fret) in relation with the True Temperament system, with these curved Frets in order to get true Equal Temperament (of course, with your developments, there is no limit selecting Temperaments, and solving digitally, the continuous historical problem ). I want to say that sentence of the poem from Spanish Antonio Machado: “Traveler, there is no road, you make your own path as you walk.” [1, 2].
Thank you, Suso!
Hi Joel, I ended up on your part of the internet while researching dsp library’s and have read almost all of your posts. The way you work is is a rare feat these days and made me post this. I am a oldschool it guy, that saw his first greewn or orange letters on a sceen attached to a Tandy TRS 80. 2 yers later i wrote my first ever code on a c64, reading from a printed magazine and typing on the keyboard. from then on i was hooked, and never really let go. i am designing a hybrid between instrument/controller/sound generator but with some twists and features i have not yet found anywhere. maybe we can have a chat sometimes to see where your and my projects could benefit from eachother and from what i am reading and seeing in the video’s might even be a unique way of creating musical expiriences when used together. Cant disclose more in the comments, but i could be more specific in mail or chat. If interested, please let me know.
Thank you very much for the kind words! It means a lot. Please feel free to send us a private message. https://www.cycfi.com/contact/
every guitar not built by you is living in the stone age. the nikola tesla of guitars seriously
Thank you very much, Dylan, for the kindest words! 🙂
Hi Joel, thank you for publishing so much open source work over the years.
Where I live there has generally been a big fall in community participation, not just in open source. Social activities have not recovered after the 2020 lockdowns, and the trend had started even before then.
For me it’s sad to see such a grandmaster withdraw from open source development, but your code must have inspired a lot of young developers. And I’m still hopeful there will be a renaisance in craftsmanship and community spirit generally.
Do you still plan to release a few more gems in future? I’ve been excited about the pitch/onset detection library and was hoping you’d release it in Q or a Hz library?
Oh absolutely! Q v1.5 has just been released:
https://www.cycfi.com/2026/10/q-v1-5-is-out/
The biggest release of the C++ audio DSP library yet.
A crucial milestone: Q is a mature library I use in all my hardware and software projects, including Infinity, and v1.5 is the bedrock Ascend will be built on.
Full MIDI 2.0, tested with the MIDI Association’s Workbench on macOS, Linux and Windows 11, including as a USB device. QPlug, for building CLAP, VST3 and AU plugins and standalone apps with an Elements GUI. FM synthesis with a DX7 patch compiler, VA building blocks, and complete reference docs. MIT licensed.
pitch/onset detection … probably to a select few (not open source but free for non-commercial use) ONLY to those who are actually contributing back. And alternatively, I’ll open it for paid licensing
Thanks for answering and for publishing so much. This is still a sad day for me, because it means polyphonic guitar will remain a proprietary technology for years longer. All of Roland/Boss, TriplePlay, and JamOrigin’s Hex work very well, but they remain a very small niche interest. I’d hoped that Hz would finally help polyphonic guitar be widely used.
Here’s the deal: be an advocate. Get the word out. If I get enough support and true enthusiasm builds up with the Q DSP library, I might change my mind. I can see Q has 1.4k stars and Elements has 3.7k stars. I can open these libraries up for sponsorship and see how it goes. If there are enough sponsors, I can justify having the hidden gems I worked so hard on available.