[{"data":1,"prerenderedAt":99},["ShallowReactive",2],{"posts:\u002Fposts\u002F2026-10-28-spectral-hold-portfolio":3},{"id":4,"title":5,"body":6,"categories":80,"date":82,"description":83,"extension":84,"image":12,"lang":85,"meta":86,"navigation":47,"path":87,"seo":88,"stem":89,"tags":90,"titleInPicture":97,"__hash__":98},"posts\u002Fposts\u002F2026-10-28-spectral-hold-portfolio.md","Spectral hold",{"type":7,"value":8,"toc":76},"minimark",[9,13,32,39,48,51,54,57,64,70],[10,11],"img",{"src":12},"\u002Fimages\u002F2026\u002F10\u002Fspectral-hold.png",[14,15,16,17,21,22,27,28,31],"p",{},"This plugin marks almost the start of my exploration of plugin creation by means of ",[18,19,20],"em",{},"vibe coding",". The thing I had just created before this, is a plugin that lets me create loops of arbitrary length, regardless of the DAW's transport in order to create non-matching loops. But that one was a mere utility for myself. I started wanting to be able to create ambient explorations in a live setting. Previously I had done a live ambient exploration in Myymälä 2 gallery, using some of my own tools; but it was pretty experimental. I utilized my ",[23,24,26],"search-link",{"query":25},"sine desk","Sine desk"," tool, along with a ",[23,29,30],{"query":30},"harp"," I built which I would tune in the spot according to the sound that was going on in the moment. I reckoned that this exploration was not all that friendly with a general audience, but more oriented to an art-interested one. I wanted to aim to the general public.",[14,33,34,35,38],{},"There are several spectral hold plugins, and this one is probably not too innovative at that. I had some requirements that led me to create my own: I wanted to have the plugin be usable in a live setting. Specifically my core idea was to be able to control the rate at which sound is ",[18,36,37],{},"admitted into"," the held sound, and the rate at which the sound is lost. This way I could create a held tone that evolves through time. Then I would, for example, be able to play the guitar, and get a guitar chord plus the strings character imprinted into the drone; and then play a metallic instrument; make a transition by means of sound in + sound out. The other requirement I had was for this plugin to work in Linux, so that I could also produce music with it in the future.",[40,41],"iframe",{"className":42,"src":44,"width":45,"height":45,"frameBorder":46,"allowFullScreen":47},[43],"fullWidth","https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FsHJcVALHv9Q?feature=oembed",500,"0",true,[14,49,50],{},"With this plugin I realized that using Claude Code, the LLM's are quite ready to produce fully-functioning plugins, without even looking at the code. I also started learning the need for methods of working together with the LLM. I started requiring to document a method of exchange between me as the person wanting the developing, and the LLM actually implementing the plugin; otherwise a) the LLM would need to re-read the whole code every time, causing too much expenditure, b) if I used a single conversation to keep context, the context would grow big with no-longer needed information and c) the LLM would regress the code because older requirements were not in the context if I started a new conversation; among other problems. For this plugin in particular I resorted to the most basic strategy: have the agent write a wiki, that would help create a context.",[14,52,53],{},"Another reflection about this process, is that I had to transition from the role of a developer, into the role of a product designer. When I learned to code, it was because I had ideas for computer programs that I wanted to try out but nobody would be willing to spend the time to implement them. I learned to program in order to be able to prototype and create my ideas. After decades, I could finally skip the coding part. I think that programming this way makes it easier to get to a better result, because if I code by hand; then the written code has a huge value: all the time and effort spent to write it. But if an agent can create the code in minutes, I don't feel reticent to change a feature because it turned out not to work as expected.",[14,55,56],{},"The code is easier to write and it's easier to change direction after the code being implemented. But still, changing direction remains hard: the code itself plus the agent's wiki create a context which comes with a huge amount of assumptions and decisions about the design. I noticed a few times that changing paradigms about how the plugin works was tricky. Even if I would mention the assumptions that were to be changed, and what were the new assumptions, the agent would have a hard time coming up with the code that works different. That made me realize that, before starting to code anything, it was still important to have a pretty clear idea of what was going to be built, what are the base principles that make the plugin work, and how the user would interact with the different aspects of the plugin.",[14,58,59],{},[60,61,63],"a",{"href":62},"\u002Fposts\u002F2026-10-09-spectral-hold","Plugin page",[14,65,66],{},[60,67,69],{"href":68},"https:\u002F\u002Fgithub.com\u002Fautotel\u002FSpectral-hold-plugin\u002Freleases","Code and downloads",[14,71,72],{},[60,73,75],{"href":74},"https:\u002F\u002Fgithub.com\u002Fautotel\u002FSpectral-hold-plugin\u002Fblob\u002Fmain\u002Fdocs\u002FMANUAL.md","Manual",{"title":77,"searchDepth":78,"depth":78,"links":79},"",2,[],[81],"portfolio","2026-10-28","Plugin that generates and modifies drones from audio","md",null,{},"\u002Fposts\u002F2026-10-28-spectral-hold-portfolio",{"title":5,"description":83},"posts\u002F2026-10-28-spectral-hold-portfolio",[91,92,93,94,95,96],"plugins","area_development","area_design","tool_LLM","tool_claude","context_for-the-sake-of-doing",false,"tuLkMAXAaAawgpImYynMu5Sd-gnv7hF1nHdTJZqv4P4",1792440358506]