<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Danny Ayers - Recent Articles</title>
  <id>https://danny.ayers.name/atom.xml</id>
  <updated>2026-02-07T12:24:24.003Z</updated>
  <link href="https://danny.ayers.name/atom.xml" rel="self" />
  <link href="https://danny.ayers.name" />
  <subtitle>Latest articles from danny.ayers.name</subtitle>
  <author>
    <name>Danny Ayers</name>
    <email>danny.ayers@gmail.com</email>
  </author>
  <entry>
    <title>Postcraft Update</title>
    <id>http://danny.ayers.name/entries/2026-02-07_postcraft</id>
    <updated>2026-02-07T10:33:03.538Z</updated>
    <link href="http://danny.ayers.name/entries/2026-02-07_postcraft" />
    <published>2026-02-07T10:33:03.538Z</published>
    <author>
      <name>Danny Ayers</name>
      <email>danny.ayers@gmail.com</email>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <!-- ARTICLE CONTENT -->
        <article class="post-content">
            <h1>Postcraft Update</h1>
        <p>This is a test.</p>
        <p>Rather wonderfully both Codex and Claude have a decent grip on how <a href="https://github.com/danja/transmissions">Transmissions</a>, my pipeliney thing, works.
        I&#39;m not entirely sure what&#39;s being used under the hood, but I did get <strong>Claude</strong> to create a <strong>Skill</strong> for creating <em>Transmissions</em> (what I call my pipelines).
        Claude was then able to build me a feed aggregator using Transmissions as the engine.</p>
        <p>I&#39;ve been using Transmissions-based apps for publishing my blog content for a while now. The source content I write as markdown files in my local filesystem. One app pushes this content off to a remote SPARQL store (Fuseki on my server), another app renders the content as HTML, yet another creates the index pages.</p>
        <p>This works ok but an outstanding issue was that each time I ran these apps, every single blog post was processed again. So I just got Codex to modify the pipelines to keep a note of changes. It chose to use a local JSON file for keeping the cache info, which is fine by me. Everything looks like it still functions ok. My tests are a bit haphazard, the best test is to run the thing. For which I need a new blog post. So,</p>
        <p>This is a test.
         </p>
        </article>
        <p class="post-title h-cinzel">
            <a href="http://danny.ayers.name/entries/2026-02-07_postcraft.html">
                Postcraft Update
            </a>
        </p> <em></em>
      </div>
    </content>
  </entry>
  <entry>
    <title>P-Mix</title>
    <id>http://danny.ayers.name/entries/2026-02-02_p-mix</id>
    <updated>2026-02-02T15:04:45.947Z</updated>
    <link href="http://danny.ayers.name/entries/2026-02-02_p-mix" />
    <published>2026-02-02T15:04:45.947Z</published>
    <author>
      <name>Danny Ayers</name>
      <email>danny.ayers@gmail.com</email>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <!-- ARTICLE CONTENT -->
        <article class="post-content">
            <h1>P-Mix</h1>
        <p><a href="https://github.com/danja/flues/tree/main/lv2/p-mix">P-Mix</a> is an lv2 plugin that acts kinda like an autonomous DJ. It fades/cuts tracks in a DAW in &amp; out.</p>
        <p>Recently I&#39;ve had quite a good workflow going on in the music room. A lot of experimentation with modular etc, building up tunes. I&#39;ve got quite systematic about the process for mixing &amp; mastering. I&#39;ve stuck a few quasi-finished pieces on YouTube (<a href="https://www.youtube.com/results?search_query=Spike+%26+Wave+hyperdata">search query &quot;Spike &amp; Wave hyperdata&quot;</a>). But I&#39;ve got loads of material stuck at a certain point between the build up of layers and the final mix. Typically 8+ tracks, some of them loops, some of them changing over time. But all there in parallel, by default on all the time. Things need to come in and out.</p>
        <p>What&#39;s really frustrating is that the stage after this, putting icing on things, an effect here and there, novel sample or whatever, is good fun. I just tend to get stuck at this just-beyond-loops phase. Doing this part of the mixing takes ages, and because you&#39;re going over the same material over &amp; over again it gets tiring and your judgement quickly goes downhill. Like it&#39;s pretty easy to decide on an intro, the first 20 seconds or so of a piece. Then it starts to become a chore and you lose engagement. Ok, I&#39;ve been attempting to get around this by breaking it up into short sessions, do a bit at a time. But still, the brain fog from repitition descends pretty quickly.</p>
        <p>Then it occurred to me - automate it!</p>
        <p>I&#39;ve been doing loads of coding with Claude &amp; Codex AI assistants, including a bunch of (mostly unfinished) lv2 plugins. So I&#39;d got the infrastructure in place - ie. basically workinig example code which the AI can use for reference. Which is fortunate, seeing as I&#39;m really lousy at C/C++. It pleases me immensely that <strong>lv2</strong>s use Turtle syntax RDF (<a href="https://en.wikipedia.org/wiki/Semantic_Web">semweb</a> ftw!).</p>
        <p>Here I set a bunch of 8 or so parallel tracks in a loop with the plugin on each of them, and had a play with the modular while it did its thing : <a href="https://www.youtube.com/watch?v=4tD_csaHqdQ">Live from the music room</a></p>
        <hr>
        <p>P-Mix : a probabilistic mixer lv2</p>
        <p><a href="https://github.com/danja/flues/tree/main/lv2/p-mix">P-Mix</a> is a very simple lv2 plugin that acts kinda like an autonomous DJ. It fades/cuts audio tracks in a DAW in &amp; out. For when you get stuck with a loop.</p>
        <p> <a href="https://www.youtube.com/watch?v=4tD_csaHqdQ">Here</a> I set a bunch of 8 or so parallel tracks in a loop with the plugin on each of them, and had a play with the modular while it did its thing.</p>
        <p>(There are a bunch of other toys in the <a href="https://github.com/danja/flues">repo</a>, various levels of unfinishedness)
         </p>
        </article>
        <p class="post-title h-cinzel">
            <a href="http://danny.ayers.name/entries/2026-02-02_p-mix.html">
                P-Mix
            </a>
        </p> <em></em>
      </div>
    </content>
  </entry>
  <entry>
    <title>Synth Experiments</title>
    <id>http://danny.ayers.name/entries/2025-12-06_synths</id>
    <updated>2025-12-06T08:07:07.851Z</updated>
    <link href="http://danny.ayers.name/entries/2025-12-06_synths" />
    <published>2025-12-06T08:07:07.851Z</published>
    <author>
      <name>Danny Ayers</name>
      <email>danny.ayers@gmail.com</email>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <!-- ARTICLE CONTENT -->
        <article class="post-content">
            <h1>Synth Experiments</h1>
        </article>
        <p class="post-title h-cinzel">
            <a href="http://danny.ayers.name/entries/2025-12-06_synths.html">
                Synth Experiments
            </a>
        </p> <em></em>
      </div>
    </content>
  </entry>
  <entry>
    <title>Vibe Coding Synths</title>
    <id>http://danny.ayers.name/entries/2026-01-16_vibe</id>
    <updated>2026-01-16T09:44:40.762Z</updated>
    <link href="http://danny.ayers.name/entries/2026-01-16_vibe" />
    <published>2026-01-16T09:44:40.762Z</published>
    <author>
      <name>Danny Ayers</name>
      <email>danny.ayers@gmail.com</email>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <!-- ARTICLE CONTENT -->
        <article class="post-content">
            <h1>Vibe Coding Synths</h1>
        <p>Andrej Karpathy came up with the term <a href="https://en.wikipedia.org/wiki/Vibe_coding">Vibe Coding</a> to describe writing software by giving AI assistants control of the detail of the code, the programmer only works at the level of text description.</p>
        <p>As a <strong>mediocre programmer</strong>, I find this appealing. (I do have decades of experience to offset the mediocrity).</p>
        <p>I&#39;ve spent a lot of time over the past couple of years using AI assistants to help me with <a href="https://en.wikipedia.org/wiki/Semantic_Web">Semantic Web</a>/AI <a href="https://github.com/danja/tensegrity">projects</a>. This has been quite the learning experience... I haven&#39;t been fully vibe coding - I have gone hands-on with the code quite a lot. But I&#39;ve been using Node.js, which I&#39;m reasonably familiar with, and I&#39;m reasonably comfortable with the domain. Overall I&#39;ve found the approach very productive.</p>
        <p>So I decided to see how far I could get with synth building, using a similar approach. I&#39;m fairly lousy with the necessary languages, but by adopting a mostly-vibe approach, I&#39;ve got  <strong>all the way</strong>. I&#39;ve made sound generators/processors in the following formats:</p>
        <ol>
        <li>In-browser Javascript</li>
        <li>lv2 plugins (the Linux user&#39;s VSTs)</li>
        <li>Native Linux - including Raspberry Pi</li>
        <li>Embedded - targeting Daisy Seed (with an ESP32 design in-progress)</li>
        </ol>
        <p>That&#39;s an ordered list for a reason. While the earlier items are (kinda) complete standalone projects, they&#39;ve also acted as prototypes for the designs later in the list.</p>
        <h2>Browser-based Synths</h2>
        </article>
        <p class="post-title h-cinzel">
            <a href="http://danny.ayers.name/entries/2026-01-16_vibe.html">
                Vibe Coding Synths
            </a>
        </p> <em></em>
      </div>
    </content>
  </entry>
  <entry>
    <title>Birthday Module</title>
    <id>http://danny.ayers.name/entries/2026-01-12_module</id>
    <updated>2026-01-12T08:53:47.959Z</updated>
    <link href="http://danny.ayers.name/entries/2026-01-12_module" />
    <published>2026-01-12T08:53:47.959Z</published>
    <author>
      <name>Danny Ayers</name>
      <email>danny.ayers@gmail.com</email>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <!-- ARTICLE CONTENT -->
        <article class="post-content">
            <h1>Birthday Module</h1>
        <p>It&#39;s my birthday the day after tomorrow. My current thing is modular synthesis, so my present to myself has to be a new module. But modules typically cost €€€s and right now I need to economise, until I find some more work. However I have plans.</p>
        <p>Oops! New PCBs arrived for Plan A so I ended up working on them and the software.</p>
        <h2>Plan A</h2>
        <p>A few months ago I got a little obsessed with <a href="https://en.wikipedia.org/wiki/Physical_modelling_synthesis">physical modelling synthesis</a>. As a starting point I was curious about how one might get a realistic clarinet sound this way. I had a go in <a href="https://danja.github.io/flues/clarinet-synth/">software</a> with limited success. And I promptly slipped down the rabbithole of <a href="https://github.com/danja/flues">experimenting with synth code</a> (aided by AI assistants).</p>
        <p>What I really wanted was this in hardware, in my modular rack. But looking around the available modules, none really fitted the bill (at a sane price). So I started looking how best to do it myself. I settled on having a go with a design I found online that uses a <a href="https://electro-smith.com/products/daisy-seed">Daisy Seed</a>. It&#39;s a PCB module with a fast processor and quality audio rate ADCs/DACs built in.</p>
        <h2>Plan B</h2>
        <p>ESP32 module on stripboard - in progress</p>
        <h2>Plan C</h2>
        <p>Cheapo sequential switch module. <em>Arrived and added to rack.</em></p>
        <p>I had the hardware for 2 modules for Plan A, and they worked! Now in rack. Actually made 3 sets of software, I need to buy some more components...
         </p>
        </article>
        <p class="post-title h-cinzel">
            <a href="http://danny.ayers.name/entries/2026-01-12_module.html">
                Birthday Module
            </a>
        </p> <em></em>
      </div>
    </content>
  </entry>
</feed>
