<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[LeGott's AI Music]]></title><description><![CDATA[Notes from LeGott on DeepSynth and the search for AI that can understand electronic music from the inside.]]></description><link>https://notes.legott.ai</link><image><url>https://substackcdn.com/image/fetch/$s_!DVHV!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F600b0d48-5541-4487-877b-6bf56cd85cd2_1254x1254.png</url><title>LeGott&apos;s AI Music</title><link>https://notes.legott.ai</link></image><generator>Substack</generator><lastBuildDate>Sun, 12 Jul 2026 10:07:02 GMT</lastBuildDate><atom:link href="https://notes.legott.ai/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Matthew de Chang]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[legott@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[legott@substack.com]]></itunes:email><itunes:name><![CDATA[LeGott]]></itunes:name></itunes:owner><itunes:author><![CDATA[LeGott]]></itunes:author><googleplay:owner><![CDATA[legott@substack.com]]></googleplay:owner><googleplay:email><![CDATA[legott@substack.com]]></googleplay:email><googleplay:author><![CDATA[LeGott]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Type a Sound. Get a Free Synth Preset.]]></title><description><![CDATA[Open-sourcing the early DeepSynth: an LLM-powered preset generator for Surge XT, Vital, and Dexed]]></description><link>https://notes.legott.ai/p/type-a-sound-get-a-free-synth-preset</link><guid isPermaLink="false">https://notes.legott.ai/p/type-a-sound-get-a-free-synth-preset</guid><dc:creator><![CDATA[LeGott]]></dc:creator><pubDate>Sun, 12 Jul 2026 09:21:32 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!W9VM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe18edf8a-cb05-43eb-98f4-40767938c613_1736x1580.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>Type a sound. Get a preset file that actually opens in a synth.</strong></p><p>That was the promise behind the earliest version of DeepSynth: turning a phrase like &#8220;a dark, hypnotic warehouse techno bass&#8221; into named parameters and a file a real instrument can load.</p><p><em>I did not start out wanting to build an AI music tool.</em></p><p>In 2013, while backpacking through twelve European countries, I kept ending up in clubs in the cities I visited. That was where I properly encountered EDM. I also went to Ibiza alone, visited Pacha and Amnesia, and saw artists I loved at the time, including Dash Berlin, Fedde Le Grand, and Hardwell. I left with a simple conviction: <strong>one day, I would make EDM myself.</strong></p><p>For a long time, that ambition stayed on hold. Work and parenting came first. When small stretches of personal time finally began to appear, I decided to stop postponing it.</p><p>My original goal was not to make an AI product. <strong>I wanted to become a EDM producer</strong>. I wanted to combine the energy of trance and techno, the texture of ambient and synthwave, and the feeling of French dance music into something personal. Eventually, I wanted to make live sets at home and let other people hear the music.</p><p>So I built a place to start: <strong>Ableton Live and Arturia V Collection X</strong>. To turn the sounds in my head into actual audio, I had to learn waveforms, filters, envelopes, modulation, time, and space.</p><p>The problem was not a lack of material. It was an excess of it. EDMProd, an endless number of YouTube production channels, Udemy courses, genre-specific tutorials, presets, plug-ins, and sample packs all offered a different path. Logic and Ableton came with their own instruments; then there were Arturia, Serum, Vital, Dexed, and many more VSTs.</p><p>I&#8217;m building instruments for new kinds of electronic music. Subscribe for notes from the process: AI, modular synths, open-source tools, and occasional live sessions.</p><p>At some point, I realized that I was becoming <strong>better at learning tools than at making music</strong>. I watched lessons, opened another synth, swapped presets, and looked up what each knob meant. <strong>Yet I had not finished a proper track.</strong></p><p>I tried to narrow the scope. EDMProd and Udemy helped with the broad structure of electronic music: bass and leads, buildups and drops, arrangement and movement. Instead of forcing myself to finish a song, I broke the work down: a pad one day, a kick-and-bass groove the next, then an eight-bar arpeggio. I chose sounds I liked and reverse-engineered what the oscillator, filter, envelope, LFO, and effects were doing.</p><p>Modular synthesis became a concrete interest through Chris Meyer&#8217;s <em><a href="https://www.linkedin.com/learning/learning-modular-synthesis">Learning Modular Synthesis</a></em>. It did more than explain familiar concepts such as oscillators, filters, and envelopes. It showed how control voltage and gates move between modules and change a sound. <mark data-color="rgb(0, 255, 0)" style="background-color: rgb(0, 255, 0); color: rgb(0, 0, 0);">A synthesizer stopped looking like a black box full of mysterious knobs and started looking like a system of signals and control.</mark></p><p>That perspective led me to buy a Moog Mother-32 and patch by hand. I experimented with analog basses, drones, sequences, and filter movement. For more complex generative sequences and evolving textures, I used VCV Rack as a virtual patching environment. The goal was not to make entire songs in modular. My DAW would hold the structure; synths and modular patches would add texture and motion.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!NvSF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F316e4835-44ab-4cfc-8e6e-6a8babd2d057_1024x589.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!NvSF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F316e4835-44ab-4cfc-8e6e-6a8babd2d057_1024x589.png 424w, https://substackcdn.com/image/fetch/$s_!NvSF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F316e4835-44ab-4cfc-8e6e-6a8babd2d057_1024x589.png 848w, https://substackcdn.com/image/fetch/$s_!NvSF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F316e4835-44ab-4cfc-8e6e-6a8babd2d057_1024x589.png 1272w, https://substackcdn.com/image/fetch/$s_!NvSF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F316e4835-44ab-4cfc-8e6e-6a8babd2d057_1024x589.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!NvSF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F316e4835-44ab-4cfc-8e6e-6a8babd2d057_1024x589.png" width="1024" height="589" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/316e4835-44ab-4cfc-8e6e-6a8babd2d057_1024x589.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:589,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:337263,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:&quot;&quot;,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://notes.legott.ai/i/206673387?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F316e4835-44ab-4cfc-8e6e-6a8babd2d057_1024x589.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!NvSF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F316e4835-44ab-4cfc-8e6e-6a8babd2d057_1024x589.png 424w, https://substackcdn.com/image/fetch/$s_!NvSF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F316e4835-44ab-4cfc-8e6e-6a8babd2d057_1024x589.png 848w, https://substackcdn.com/image/fetch/$s_!NvSF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F316e4835-44ab-4cfc-8e6e-6a8babd2d057_1024x589.png 1272w, https://substackcdn.com/image/fetch/$s_!NvSF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F316e4835-44ab-4cfc-8e6e-6a8babd2d057_1024x589.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em>VCV Rack was where modular signal flow became visible: oscillators, filters, modulation, and cables could be inspected as a patch rather than inferred from a preset name.</em></p><p>Even after narrowing the scope, making one sound still meant choosing a waveform, setting a filter cutoff, shaping an ADSR envelope, connecting an LFO, and configuring a modulation matrix. <mark data-color="rgb(255, 255, 0)" style="background-color: rgb(255, 255, 0); color: rgb(0, 0, 0);">The amount of knowledge seemed bottomless</mark>.</p><p>That was when I began asking a different question:</p><blockquote><p><strong>What if I could describe the sound I wanted, and an AI could operate the synthesizer for me?</strong></p></blockquote><p>DeepSynth began with that question. The name is deliberately literal: <strong>Deep Learning</strong> plus <strong>Synthesizer</strong>.</p><p>The early DeepSynth prototype also took the form of a <strong>ChatGPT-like Synth Studio</strong>. Rather than presenting a long bank of controls first, it let a user choose a target synthesizer, describe a sound in natural language, and continue the conversation. A request could return an explanation, named parameter JSON, or a downloadable preset file; the interface kept the conversation history alongside the selected synth. That design was important even before the file writer was dependable: <mark data-color="rgb(255, 255, 0)" style="background-color: rgb(255, 255, 0); color: rgb(0, 0, 0);">it made sound design feel like an iterative conversation rather than a form with dozens of unfamiliar knobs</mark>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!I56B!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9268b80-3255-48e2-b7fb-782d1e15697e_1280x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!I56B!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9268b80-3255-48e2-b7fb-782d1e15697e_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!I56B!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9268b80-3255-48e2-b7fb-782d1e15697e_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!I56B!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9268b80-3255-48e2-b7fb-782d1e15697e_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!I56B!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9268b80-3255-48e2-b7fb-782d1e15697e_1280x720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!I56B!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9268b80-3255-48e2-b7fb-782d1e15697e_1280x720.png" width="1280" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f9268b80-3255-48e2-b7fb-782d1e15697e_1280x720.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:308201,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:&quot;&quot;,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.backpropagated.ai/i/206669012?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9268b80-3255-48e2-b7fb-782d1e15697e_1280x720.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!I56B!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9268b80-3255-48e2-b7fb-782d1e15697e_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!I56B!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9268b80-3255-48e2-b7fb-782d1e15697e_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!I56B!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9268b80-3255-48e2-b7fb-782d1e15697e_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!I56B!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9268b80-3255-48e2-b7fb-782d1e15697e_1280x720.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em>The original DeepSynth web prototype: select Surge XT or Dexed, describe the intended sound, and let the system plan the patch before generation. This is a real debug capture preserved with the early web project.</em></p><p>I&#8217;m building instruments for new kinds of electronic music. Subscribe for notes from the process: AI, modular synths, open-source tools, and occasional live sessions.</p><h2>Could an AI&#8217;s sound-design recipe become actions?</h2><p>The immediate inspiration came from asking ChatGPT how to make reference sounds. If I described a wide, moving progressive-house lead, it could suggest a practical recipe: saw-like oscillators, multiple unison voices and detuning, filter and envelope settings, a slow LFO, delay, and reverb.</p><p>It did not create the sound. But it raised a more useful question: <strong>could the recipe be converted into the actual movements of a synth&#8217;s controls?</strong></p><p>For the first experiment, I chose <em><a href="https://surge-synthesizer.github.io/">Surge XT</a></em>. It was free and open source, which meant I could inspect its preset structure and parameters. It also offered a way to load presets and render audio from code, so an AI-generated result could be tested repeatedly against a real synthesizer. It was not merely a free substitute for a commercial plug-in; it was a practical test bench.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!MSPz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10978dba-5290-4e0e-9749-68224397618a_1024x739.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!MSPz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10978dba-5290-4e0e-9749-68224397618a_1024x739.png 424w, https://substackcdn.com/image/fetch/$s_!MSPz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10978dba-5290-4e0e-9749-68224397618a_1024x739.png 848w, https://substackcdn.com/image/fetch/$s_!MSPz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10978dba-5290-4e0e-9749-68224397618a_1024x739.png 1272w, https://substackcdn.com/image/fetch/$s_!MSPz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10978dba-5290-4e0e-9749-68224397618a_1024x739.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!MSPz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10978dba-5290-4e0e-9749-68224397618a_1024x739.png" width="1024" height="739" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/10978dba-5290-4e0e-9749-68224397618a_1024x739.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:739,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:375827,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:&quot;&quot;,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://notes.legott.ai/i/206673387?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10978dba-5290-4e0e-9749-68224397618a_1024x739.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!MSPz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10978dba-5290-4e0e-9749-68224397618a_1024x739.png 424w, https://substackcdn.com/image/fetch/$s_!MSPz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10978dba-5290-4e0e-9749-68224397618a_1024x739.png 848w, https://substackcdn.com/image/fetch/$s_!MSPz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10978dba-5290-4e0e-9749-68224397618a_1024x739.png 1272w, https://substackcdn.com/image/fetch/$s_!MSPz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10978dba-5290-4e0e-9749-68224397618a_1024x739.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em>An early Surge XT experiment: the same prompt-to-parameter idea was tested alongside the synthesizer rather than as a detached text demo.</em></p><p>I first built a tiny <a href="https://www.ableton.com/en/live/max-for-live/">Max-for-Live</a> and JavaScript experiment: a slider value was sent through the Live API to one Ableton Analog parameter.</p><p>In a separate path, I wrote a small adapter that emitted OSC addresses and values for Surge XT through a Max outlet. The intent was to turn an AI suggestion such as &#8220;increase the detune, lower the filter, and add movement&#8221; into a list of addresses and values that an OSC path could send to the synth.</p><pre><code><code>function osc1_detune(value) {
  var address = "/SurgeXT/oscillator/1/detune";
  var oscMessage = address + " " + value;
  post("Sending OSC message:", oscMessage, "\n");
  outlet(0, oscMessage);
}

function sendParam(address, value) {
  outlet(0, address + " " + value);
}</code></code></pre><p>This file does not transmit OSC packets by itself. It emits the address-and-value string; the Max patch connected after the outlet would perform the actual transmission. It was not yet a complete AI-to-synth product. It did establish the central premise: <strong>an AI&#8217;s sound-design language could become programmatic control of a synthesizer.</strong></p><h2>The first AI: LSM and an anonymous latent space</h2><p>In July 2025, I built the first LSM: <strong>the Large Synthesis Model</strong>.</p><p>The initial implementation was a VAE (Variational Autoencoder)  experiment. It tried to bring text descriptions, audio characteristics, and synth parameters together in a latent space, then decode that vector back into synth parameters.</p><p>I tried several latent-space sizes: 64 dimensions in the base VAE, 128 in an enhanced version, and 256 or 512 in larger experiments. Changing that size did not solve the central problem. A larger vector could hold more information, but it did not make that information easier to inspect, edit, or validate.</p><p>The real problem was not the number of dimensions. <strong>It was that the numbers were anonymous.</strong></p><p>The approach looked promising from the outside. It appeared to learn a path from natural language to sound. In practice, I could not explain what the first value in the vector controlled. Did changing it affect a filter, an envelope, or nothing useful at all? Small changes could also create a preset that a VST would not open, or would load without making any sound.</p><p>The model could produce an output, but I could not explain why it failed.</p><blockquote><p><strong>In music software, plausible numbers matter less than a structure people can understand and repair.</strong></p></blockquote><h2>Replacing anonymous vectors with named parameters</h2><p>So I changed the architecture. Instead of asking a model for a bundle of unnamed numbers, I defined a JSON Schema for each synthesizer and asked the model to fill named parameters directly.</p><pre><code><code>{
  "oscillator_1_type": "saw",
  "filter_cutoff": 45.2,
  "envelope_attack": 0.8,
  "chorus_enable": true
}</code></code></pre><p>Now a person could read the result. If <code>filter_cutoff</code> was too high, lower it. If <code>envelope_attack</code> was too fast, lengthen it.</p><p>With structured output from Claude and Gemini, a phrase such as &#8220;resonant and squelchy&#8221; could be translated into named filter-resonance and envelope values. The important improvement was not simply that the model became smarter. <strong>The system constrained where the model could make mistakes.</strong></p><h2>The fake FXP file</h2><p>Getting valid JSON was only half the job. A preset is the file that saves a synthesizer&#8217;s settings. Surge XT uses an <code>.fxp</code> format.</p><p>At first, I wrote binary data in Python and gave it an <code>.fxp</code> extension. A file existed, so I thought it worked.</p><p><span data-color="#ff0000" style="color: rgb(255, 0, 0);">Surge XT would not open it.</span></p><p>That failure was obvious in retrospect. I had not implemented Surge XT&#8217;s file format. I had put JSON inside a binary chunk and changed the extension.</p><p>So I (<em>Claude Code</em>) read the Surge XT source code: the FXP header, plug-in ID, <code>sub3</code> chunk, XML structure, and raw parameter encoding. A cutoff was not just a number between zero and one. Envelope time was not necessarily represented internally as seconds.</p><p>I eventually built a Rust preset writer. It preserved the full parameter layout of a known-good base patch and safely overrode only the values chosen by the AI.</p><p>At that point, I was also using <em>Claude Code</em> as an implementation partner: tracing the Surge XT source, comparing the FXP container against known-good patches, writing focused Rust tests, and iterating on the writer after each load failure. It did not replace the need to understand the format. It made the feedback loop faster: inspect the format, change one assumption, generate a file, and ask the real synth whether the assumption was wrong.</p><p>Only then did the generated results begin to <strong>open in the real synth.</strong></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://notes.legott.ai/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">I&#8217;m building instruments for new kinds of electronic music. Subscribe for notes from the process: AI, modular synths, open-source tools, and occasional live sessions.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><h2>The validator mattered more than the AI</h2><p>Opening a file was not the finish line. A mismatched patch version could fail to load. Incorrectly encoded values could sound wrong. Extreme values could clip.</p><p>I built an automated validation loop with <code>surge-xt-cli</code> and headless tools that could load a preset and render audio without opening a graphical interface.</p><pre><code><code>AI generation
-&gt; parameter-schema validation
-&gt; preset-file generation
-&gt; load in the real synth
-&gt; render audio
-&gt; test for silence, clipping, and file-format errors
-&gt; keep only passing results</code></code></pre><p>This led to the most important design principle in the project:</p><blockquote><p><strong>An AI can make musical suggestions, but it should not decide whether its own output is valid.</strong></p></blockquote><p>Code should validate parameter ranges and file formats. Human ears should decide whether the sound is good.</p><h2>One small, concrete tool</h2><p>This is the small tool I want to document:</p><blockquote><p>A program that takes one line of natural language and creates a VST preset file that opens in a real synthesizer.</p></blockquote><p>The early goal of DeepSynth was not a grand AI composer. It was to describe a sound, turn that description into synth parameters, and export a real preset file.</p><p>More time went into formats, value ranges, compatibility, load tests, and tracing failures than into the model itself. The important outcome was not simply that &#8220;AI made a preset.&#8221; It was the full pipeline that turns AI output into something music software can safely read.</p><h2>Why I am open-sourcing it now</h2><p>The project has since moved in a broader direction. But generating and validating a single VST preset remains a useful problem in its own right.</p><p>There is no reason to hide or discard this early preset generator. It solves one problem clearly, has a relatively small architecture, and is easy for others to build and experiment with. Its failures are part of the value: the limits of anonymous latent spaces, the shift to structured output, fake FXP files, Surge XT format analysis, raw parameter encoding, and headless validation are all preserved in the code and tests.</p><p>That is why I am releasing it as open source. It can be a starting point for someone who wants to control a synth with natural language, or a reference for someone studying VST preset formats.</p><h2>What I am releasing</h2><p>The public release is the focused, hardened descendant of those early DeepSynth experiments: <strong>DeepSynth Presets</strong>, a small Rust tool that turns a text description into a real file for Surge XT, Dexed / DX7, or Vital. It is deliberately narrower than the early <a href="https://legott-ai.github.io/vst-preset-generator/app/">web vision</a>. Its job is to generate named parameters, write a valid preset, and make the result inspectable and loadable.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1zFu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5ac8837-d89f-46d9-b93b-409f57828237_1760x1280.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1zFu!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5ac8837-d89f-46d9-b93b-409f57828237_1760x1280.png 424w, https://substackcdn.com/image/fetch/$s_!1zFu!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5ac8837-d89f-46d9-b93b-409f57828237_1760x1280.png 848w, https://substackcdn.com/image/fetch/$s_!1zFu!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5ac8837-d89f-46d9-b93b-409f57828237_1760x1280.png 1272w, https://substackcdn.com/image/fetch/$s_!1zFu!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5ac8837-d89f-46d9-b93b-409f57828237_1760x1280.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1zFu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5ac8837-d89f-46d9-b93b-409f57828237_1760x1280.png" width="1456" height="1059" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a5ac8837-d89f-46d9-b93b-409f57828237_1760x1280.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1059,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;DeepSynth Preset desktop app after generating a Surge XT patch with Gemini&quot;,&quot;title&quot;:&quot;DeepSynth Preset desktop app after generating a Surge XT patch with Gemini&quot;,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="DeepSynth Preset desktop app after generating a Surge XT patch with Gemini" title="DeepSynth Preset desktop app after generating a Surge XT patch with Gemini" srcset="https://substackcdn.com/image/fetch/$s_!1zFu!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5ac8837-d89f-46d9-b93b-409f57828237_1760x1280.png 424w, https://substackcdn.com/image/fetch/$s_!1zFu!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5ac8837-d89f-46d9-b93b-409f57828237_1760x1280.png 848w, https://substackcdn.com/image/fetch/$s_!1zFu!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5ac8837-d89f-46d9-b93b-409f57828237_1760x1280.png 1272w, https://substackcdn.com/image/fetch/$s_!1zFu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5ac8837-d89f-46d9-b93b-409f57828237_1760x1280.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em>The released desktop app shows the prompt, target synth, provider, generated file metadata, and named parameters in one place. This is the tool being open-sourced, not a screenshot of the early 2025 web prototype.</em></p><h2>How to try the open-source preset generator</h2><p>The project is available as an open-source Rust application. You can use it in three ways:</p><ul><li><p><strong>In the browser:</strong> open the <a href="https://legott-ai.github.io/vst-preset-generator/app/">live WASM demo</a>, describe a sound, choose <strong>Surge XT</strong>, <strong>Dexed / DX7</strong>, or <strong>Vital</strong>, select a small local matching model, then generate and download a preset. The browser build runs client-side; bring your own Claude or Gemini API key (coming soon: ChatGPT, OpenRouter, LMStudio, Ollama).</p></li><li><p><strong>From the CLI:</strong> run <code>deepsynth-preset</code> with a prompt and a target synth, then write a <code>.fxp</code>, <code>.syx</code>, or <code>.vital</code> file directly to disk.</p></li><li><p><strong>In the native desktop app:</strong> launch <code>deepsynth-preset-app</code>, the <code>egui</code> application, to enter a prompt, choose a provider and synth, review the mapped parameters, and save the generated preset through a file dialog.</p></li></ul><p>The browser app can also run a model <strong>on the device (browser)</strong>. MiniLM-L6-v2 is the fast keyword-matching default; bge-small-en-v1.5 improves English matching; and multilingual-e5-small accepts multilingual prompts. SmolLM2 is a smaller instruction model with a WebGPU fallback, while <strong>Gemma-3-1B-it</strong> is the larger on-device option for direct generation.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!B7AN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7616a932-8378-4c7d-b3e3-e35ee353575a_1692x836.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!B7AN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7616a932-8378-4c7d-b3e3-e35ee353575a_1692x836.png 424w, https://substackcdn.com/image/fetch/$s_!B7AN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7616a932-8378-4c7d-b3e3-e35ee353575a_1692x836.png 848w, https://substackcdn.com/image/fetch/$s_!B7AN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7616a932-8378-4c7d-b3e3-e35ee353575a_1692x836.png 1272w, https://substackcdn.com/image/fetch/$s_!B7AN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7616a932-8378-4c7d-b3e3-e35ee353575a_1692x836.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!B7AN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7616a932-8378-4c7d-b3e3-e35ee353575a_1692x836.png" width="1456" height="719" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7616a932-8378-4c7d-b3e3-e35ee353575a_1692x836.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:719,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:148591,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:&quot;&quot;,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.backpropagated.ai/i/206669012?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7616a932-8378-4c7d-b3e3-e35ee353575a_1692x836.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!B7AN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7616a932-8378-4c7d-b3e3-e35ee353575a_1692x836.png 424w, https://substackcdn.com/image/fetch/$s_!B7AN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7616a932-8378-4c7d-b3e3-e35ee353575a_1692x836.png 848w, https://substackcdn.com/image/fetch/$s_!B7AN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7616a932-8378-4c7d-b3e3-e35ee353575a_1692x836.png 1272w, https://substackcdn.com/image/fetch/$s_!B7AN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7616a932-8378-4c7d-b3e3-e35ee353575a_1692x836.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7Mx_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee1b54dc-f0ae-4161-adfa-f27a6fd2b809_1192x382.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7Mx_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee1b54dc-f0ae-4161-adfa-f27a6fd2b809_1192x382.png 424w, https://substackcdn.com/image/fetch/$s_!7Mx_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee1b54dc-f0ae-4161-adfa-f27a6fd2b809_1192x382.png 848w, https://substackcdn.com/image/fetch/$s_!7Mx_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee1b54dc-f0ae-4161-adfa-f27a6fd2b809_1192x382.png 1272w, https://substackcdn.com/image/fetch/$s_!7Mx_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee1b54dc-f0ae-4161-adfa-f27a6fd2b809_1192x382.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7Mx_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee1b54dc-f0ae-4161-adfa-f27a6fd2b809_1192x382.png" width="1192" height="382" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ee1b54dc-f0ae-4161-adfa-f27a6fd2b809_1192x382.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:382,&quot;width&quot;:1192,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:163085,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:&quot;&quot;,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.backpropagated.ai/i/206669012?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee1b54dc-f0ae-4161-adfa-f27a6fd2b809_1192x382.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!7Mx_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee1b54dc-f0ae-4161-adfa-f27a6fd2b809_1192x382.png 424w, https://substackcdn.com/image/fetch/$s_!7Mx_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee1b54dc-f0ae-4161-adfa-f27a6fd2b809_1192x382.png 848w, https://substackcdn.com/image/fetch/$s_!7Mx_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee1b54dc-f0ae-4161-adfa-f27a6fd2b809_1192x382.png 1272w, https://substackcdn.com/image/fetch/$s_!7Mx_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee1b54dc-f0ae-4161-adfa-f27a6fd2b809_1192x382.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em>The browser demo distinguishes fast local matching from direct on-device generation. Model choice is visible and deliberate rather than hidden behind a single &#8220;AI&#8221; button.</em></p><p>For the fastest way to see the idea in action, <strong><a href="https://legott-ai.github.io/vst-preset-generator/app/">test it in your browser</a></strong>. The landing page also links to the source and explains the available formats: <a href="https://legott-ai.github.io/vst-preset-generator/">DeepSynth Presets project page</a>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9wAD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67fc8922-ca8d-4e68-ac93-850de5d24528_1914x532.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9wAD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67fc8922-ca8d-4e68-ac93-850de5d24528_1914x532.png 424w, https://substackcdn.com/image/fetch/$s_!9wAD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67fc8922-ca8d-4e68-ac93-850de5d24528_1914x532.png 848w, https://substackcdn.com/image/fetch/$s_!9wAD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67fc8922-ca8d-4e68-ac93-850de5d24528_1914x532.png 1272w, https://substackcdn.com/image/fetch/$s_!9wAD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67fc8922-ca8d-4e68-ac93-850de5d24528_1914x532.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9wAD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67fc8922-ca8d-4e68-ac93-850de5d24528_1914x532.png" width="1456" height="405" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/67fc8922-ca8d-4e68-ac93-850de5d24528_1914x532.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:405,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:104135,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:&quot;&quot;,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.backpropagated.ai/i/206669012?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67fc8922-ca8d-4e68-ac93-850de5d24528_1914x532.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!9wAD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67fc8922-ca8d-4e68-ac93-850de5d24528_1914x532.png 424w, https://substackcdn.com/image/fetch/$s_!9wAD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67fc8922-ca8d-4e68-ac93-850de5d24528_1914x532.png 848w, https://substackcdn.com/image/fetch/$s_!9wAD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67fc8922-ca8d-4e68-ac93-850de5d24528_1914x532.png 1272w, https://substackcdn.com/image/fetch/$s_!9wAD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67fc8922-ca8d-4e68-ac93-850de5d24528_1914x532.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em>The CLI turns one prompt into a real preset file. In this example, Gemini generates a 64-parameter Surge XT patch and writes </em><code>warehouse_bass.fxp</code><em>, ready to load in the synthesizer.</em></p><pre><code><code># CLI examples
deepsynth-preset "warm analog pad" --synth surge -o warm_pad.fxp
deepsynth-preset "bright FM bell" --synth dexed -o bell.syx
deepsynth-preset "gritty reese bass" --synth vital -o reese.vital</code></code></pre><p>An interactive CLI run writes its visual banner and result panel to <strong>stderr</strong>, leaving stdout clean for scripts. The result records the generated file, its byte size, the mapped parameter count, and the provider/model that created it. The same command line supports both providers, a per-run model override, and deterministic offline paths:</p><pre><code><code># Gemini generation and a per-run model override
deepsynth-preset "warm pad" --synth surge --provider gemini -o pad.fxp
deepsynth-preset "ethereal pad" --synth vital --provider gemini \
  --model gemini-2.5-flash -o pad.vital

# No API: map normalized JSON parameters, write defaults, or inspect the schema
deepsynth-preset --params-json params.json --synth surge -o out.fxp
deepsynth-preset --defaults --synth vital -o default.vital
deepsynth-preset --schema --synth surge</code></code></pre><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!W9VM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe18edf8a-cb05-43eb-98f4-40767938c613_1736x1580.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!W9VM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe18edf8a-cb05-43eb-98f4-40767938c613_1736x1580.png 424w, https://substackcdn.com/image/fetch/$s_!W9VM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe18edf8a-cb05-43eb-98f4-40767938c613_1736x1580.png 848w, https://substackcdn.com/image/fetch/$s_!W9VM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe18edf8a-cb05-43eb-98f4-40767938c613_1736x1580.png 1272w, https://substackcdn.com/image/fetch/$s_!W9VM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe18edf8a-cb05-43eb-98f4-40767938c613_1736x1580.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!W9VM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe18edf8a-cb05-43eb-98f4-40767938c613_1736x1580.png" width="1456" height="1325" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e18edf8a-cb05-43eb-98f4-40767938c613_1736x1580.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1325,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:343336,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:&quot;&quot;,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.backpropagated.ai/i/206669012?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe18edf8a-cb05-43eb-98f4-40767938c613_1736x1580.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!W9VM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe18edf8a-cb05-43eb-98f4-40767938c613_1736x1580.png 424w, https://substackcdn.com/image/fetch/$s_!W9VM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe18edf8a-cb05-43eb-98f4-40767938c613_1736x1580.png 848w, https://substackcdn.com/image/fetch/$s_!W9VM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe18edf8a-cb05-43eb-98f4-40767938c613_1736x1580.png 1272w, https://substackcdn.com/image/fetch/$s_!W9VM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe18edf8a-cb05-43eb-98f4-40767938c613_1736x1580.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em>The CLI can produce a provider-backed prompt result, but it can also write presets without an API call from normalized parameters or safe defaults. The implementation keeps generation, parameter mapping, and file writing separately inspectable.</em></p><h2>What is included</h2><ul><li><p>Claude and Gemini providers</p></li><li><p>Synth-specific named-parameter schemas</p></li><li><p>Surge XT FXP writer</p></li><li><p>Dexed/DX7 SysEx writer</p></li><li><p>Vital preset writer</p></li><li><p>Parameter mapping and value scaling</p></li><li><p>CLI and native <code>egui</code> desktop application</p></li><li><p>File-format parity tests</p></li><li><p>Surge XT headless load test</p></li></ul><p>You use your own API key, and generated files stay on your own computer. <strong>This is not a service that uploads presets or collects music data on a central server.</strong> It is a small open-source tool that you can download, run, inspect, and change.</p><p>I&#8217;m building instruments for new kinds of electronic music. Subscribe for notes from the process: AI, modular synths, open-source tools, and occasional live sessions.</p><p>The early version of DeepSynth was not a complete answer. It was a record of learning what mattered.</p><ul><li><p><strong>Named parameters beat anonymous latent spaces.</strong></p></li><li><p><strong>Deterministic validation matters more than unconstrained model freedom.</strong></p></li><li><p><strong>A file that opens in a real synth matters more than plausible JSON.</strong></p></li><li><p><strong>A system that explains its failures matters more than one that merely generates an output.</strong></p></li></ul><p>I did not want to build an enormous music AI. I wanted to build a small bridge between a phrase such as &#8220;a warm pad&#8221; or &#8220;a rough techno bass&#8221; and an actual sound.</p><p>This is the story of building that bridge. The code is now open for anyone to continue the experiment.</p><p>Try it now: <strong><a href="https://legott-ai.github.io/vst-preset-generator/app/">DeepSynth Presets browser demo</a></strong></p><p>Open-source repository: <a href="https://github.com/legott-ai/vst-preset-generator">DeepSynth Presets</a></p><h2>What I am building now</h2><p>I am now building <strong>DeepSynth LSM</strong>, a model for creating modular-synth patches, and I occasionally stream live experiments on YouTube. This preset generator is the earlier, smaller piece of that longer exploration: <strong>a way to make the path from musical language to a working instrument concrete and testable.</strong></p><p>For updates, subscribe to this Substack. You can also follow the ongoing experiments at <a href="https://legott.ai">legott.ai</a>, on <a href="https://www.youtube.com/@LeGottAI">YouTube</a>, and on <a href="https://x.com/legottai">X</a>.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://notes.legott.ai/p/type-a-sound-get-a-free-synth-preset/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://notes.legott.ai/p/type-a-sound-get-a-free-synth-preset/comments"><span>Leave a comment</span></a></p>]]></content:encoded></item><item><title><![CDATA[The AI Music That "Actually" Listens Audience]]></title><description><![CDATA[An introduction, of sorts.]]></description><link>https://notes.legott.ai/p/the-ai-music-that-actually-listens</link><guid isPermaLink="false">https://notes.legott.ai/p/the-ai-music-that-actually-listens</guid><dc:creator><![CDATA[LeGott]]></dc:creator><pubDate>Thu, 02 Jul 2026 05:44:42 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!0u6L!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5451cfe-5b0c-44e8-9b66-c2caa80d011e_3416x1974.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>By day, I write software somewhere in California. By night &#8212; or whatever fragments of night a job and two kids leave behind &#8212; I make techno on modular synthesizers. I&#8217;m not going to pretend I&#8217;m a virtuoso. I&#8217;m somewhere between beginner and intermediate, honestly. But I carry a memory from Ibiza in 2013 like a coal that never quite goes out, and the dream attached to it has never changed: <strong>I want to be an EDM artist</strong>.</p><p>I came to music late, and quietly. For years it was just me and a piano, playing new age pieces, soft things, music for empty rooms. But somewhere underneath all that quiet was a very different desire &#8212; <mark>I wanted to make music that makes people </mark><em><mark>move</mark></em><mark>.</mark> I&#8217;d sketch with virtual instruments in Logic, chasing textures, programming beats, always with this stubborn belief that <mark>if I could just find the right sound, the right groove, something great would come out of it.</mark></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://notes.legott.ai/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Matthew's Substack is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>Reality, of course, doesn&#8217;t care much about belief. You can own every plugin, every DAW, every beautiful piece of gear &#8212; and <mark>music will still demand everything from you. Time. Focus. Obsession.</mark> Things that are in short supply when you&#8217;re raising kids and holding down a full-time job. So music became what it becomes for so many of us: a hobby you touch once in a while, guiltily, like an old letter.</p><p>But the hunger never left. I&#8217;d listen to Adam Beyer, Armin van Buuren, deadmau5 &#8212; and every time, the same ache: <em>I want to make this. I want to make this now.</em></p><h2>Down the modular rabbit hole</h2><p>About two years ago, deadmau5&#8217;s Masterclass introduced me to modular synthesis, and I fell hard. <mark>The sheer open-endedness of it &#8212; patch cables as sentences, voltage as intention &#8212; I was gone.</mark></p><p>I bought a Moog Mother-32. Then practiced on soft modulars like Arturia&#8217;s Modular V. Then a DFAM, a Subharmonicon &#8212; I had the little Moog trio going, three boxes muttering to each other on my desk.</p><p>And then came the humbling. Hardware is expensive, yes. But the deeper lesson was this: if you don&#8217;t understand the <em>depth</em> of what electronic music actually is &#8212; how it&#8217;s constructed, why it works &#8212; no amount of gear will ever make good music for you. <strong>The machines don&#8217;t carry you. You carry them.</strong></p><p>So I went back to school, in the self-taught sense. I found VCV Rack, that beautiful free universe. I studied Omri Cohen&#8217;s videos, read <em>Patch &amp; Tweak</em>, dug into the fundamentals. And weirdly, learning how synthesizers actually work &#8212; oscillators, filters, envelopes, the whole anatomy &#8212; became one of the great joys of my life. <mark>Understanding, it turns out, is its own kind of high.</mark></p><p>But understanding without performing is a library nobody visits. I wanted to <em>play</em>. And again, the same wall: full-time work, small children, no long stretches of deep time. The dream kept idling.</p><h2>Then the machines started coding</h2><p>In early-to-mid 2025, the AI coding wave hit. Claude Code, specifically, changed something in my head. Watching it work, I realized: I could actually <em>build</em> the world I&#8217;d been imagining.</p><p>Here&#8217;s the world. <mark>I don&#8217;t want AI that generates music. I want AI that </mark><em><mark>understands</mark></em><mark> electronic music &#8212; and expresses that understanding through modular synthesis.</mark></p><p>You&#8217;ve seen the Suno-style generators. Type a prompt, receive a song. I don&#8217;t believe that&#8217;s real musical understanding. I don&#8217;t know their internals, but roughly speaking: if a model learns from waveforms and metadata and spits out audio, <mark>has it actually understood music?</mark> Or has it just learned what music statistically looks like from the outside?</p><p>I wanted something that understands music from the <em>inside</em> &#8212; the way a patch understands itself.</p><p>So starting in late 2025, between diaper changes and deploy schedules, I did what people now call &#8220;vibe coding.&#8221; Prompts, iterations, a lot of failure. Eight months later, I had the model I wanted. Technically, it&#8217;s a fine-tune of the recently released Gemma 4 &#8212; and because Gemma 4 ships under the Apache license, I could work in peace. I have no plans to sell any of this, but after a dozen-plus years as a software developer, I&#8217;m constitutionally incapable of being casual about licenses.</p><p><mark>What I built is a model that understands modular synthesis through text.</mark> I call the model <mark data-color="#d0e0e3" style="background-color: rgb(208, 224, 227); color: rgb(0, 0, 0);">LSM, short for Large Synthesizer Model</mark>. It runs inside a broader system I&#8217;m building called <mark data-color="#d9ead3" style="background-color: rgb(217, 234, 211); color: rgb(0, 0, 0);">DeepSynth</mark>, and I&#8217;m also building a Rust-based patching environment called <mark data-color="#fff2cc" style="background-color: rgb(255, 242, 204); color: rgb(0, 0, 0);">DeepSynth Rack</mark> so I can actually perform with it live.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0u6L!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5451cfe-5b0c-44e8-9b66-c2caa80d011e_3416x1974.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0u6L!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5451cfe-5b0c-44e8-9b66-c2caa80d011e_3416x1974.png 424w, https://substackcdn.com/image/fetch/$s_!0u6L!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5451cfe-5b0c-44e8-9b66-c2caa80d011e_3416x1974.png 848w, https://substackcdn.com/image/fetch/$s_!0u6L!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5451cfe-5b0c-44e8-9b66-c2caa80d011e_3416x1974.png 1272w, https://substackcdn.com/image/fetch/$s_!0u6L!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5451cfe-5b0c-44e8-9b66-c2caa80d011e_3416x1974.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0u6L!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5451cfe-5b0c-44e8-9b66-c2caa80d011e_3416x1974.png" width="1456" height="841" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f5451cfe-5b0c-44e8-9b66-c2caa80d011e_3416x1974.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:841,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2346287,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.backpropagated.ai/i/204575514?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5451cfe-5b0c-44e8-9b66-c2caa80d011e_3416x1974.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!0u6L!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5451cfe-5b0c-44e8-9b66-c2caa80d011e_3416x1974.png 424w, https://substackcdn.com/image/fetch/$s_!0u6L!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5451cfe-5b0c-44e8-9b66-c2caa80d011e_3416x1974.png 848w, https://substackcdn.com/image/fetch/$s_!0u6L!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5451cfe-5b0c-44e8-9b66-c2caa80d011e_3416x1974.png 1272w, https://substackcdn.com/image/fetch/$s_!0u6L!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5451cfe-5b0c-44e8-9b66-c2caa80d011e_3416x1974.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">An early DeepSynth Rack session: AI-generated modular structure, moving from text into live patching.</figcaption></figure></div><p>It&#8217;s extremely early &#8212; I want to go much deeper in future posts &#8212; but the architecture, briefly: small specialist models that construct the elements of a track (kick, hi-hats, bass, and so on), and a larger model I call the <strong>Conductor</strong>, which composes and coordinates the musical layers above them.</p><h2>What I&#8217;m actually after</h2><p><mark>Unlimited, real-time, live patching.</mark> A model that reads the audience, reads <em>me</em>, and builds the EDM I&#8217;m reaching for, as it happens.</p><p>The first stage is YouTube Live. My model will patch the modular in real time &#8212; and if you&#8217;re in the chat, <mark>it will be reading </mark><em><mark>you</mark></em><mark>, updating and responding live.</mark> If that sounds like something you want to witness, subscribe to my channel: <a href="https://www.youtube.com/@LeGottAI">youtube.com/@LeGottAI</a>. Come to the live streams. Talk to the machine.</p><p>For now, the target is techno. <strong>Not prompt-in, song-out.</strong> I mean the way a real DJ works a festival &#8212; reading the crowd, choosing the next track with intent, layering in technique, <em>making people dance</em>. <mark>That, but with a model at the patchbay.</mark></p><p>Do I still want to make brilliant EDM myself and stand in front of a crowd? Of course I do. But I&#8217;m an underdog, and underdogs get one real advantage: <mark>we can afford to walk the road nobody else is walking.</mark> So that&#8217;s the road I&#8217;m taking.</p><p>Let me introduce myself one more time. I&#8217;m LeGott.</p><p>If you want to watch this world get built &#8212; patch by patch, cable by cable &#8212; subscribe to this Substack. I&#8217;ll see you at the first live.</p><p>And if you want to witness the live experiment, subscribe to the YouTube channel:</p><p><a href="https://www.youtube.com/@LeGottAI">https://www.youtube.com/@LeGottAI</a></p><p>I&#8217;ll see you in the first room.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://notes.legott.ai/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Matthew's Substack is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item></channel></rss>