<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hacker News: errozero</title><link>https://news.ycombinator.com/user?id=errozero</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Thu, 30 Apr 2026 20:50:01 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=errozero" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by errozero in "303Gen – 303 acid loops generator"]]></title><description><![CDATA[
<p>Hey, the scales are just an array of numbers like this<p><pre><code>    ['Darkness', [0, 1, 3]],
    ['Darkness2', [0, 1]],
    ['Single', [3]],
    ['Locrian', [0, 1, 3, 5, 6, 8, 10]],
    ['Aeolian', [0, 2, 3, 5, 7, 8, 10]],
    ['Mixolydian', [0, 2, 4, 5, 7, 9, 10]],
    ...
</code></pre>
A scale is randomly selected at the start and then notes are randomly selected from that scale in the pattern generation, plus the root note number is added to each one.<p>So if you had the 'Darkness' scale selected and had the root dropdown set to 0, the notes in this scale would be C, C#, D# which is 0, 1, 3 if you count the keys on a keyboard. If you changed the root to 2, then it would become D, D#, F (2, 3, 5).<p>Hope that makes sense.</p>
]]></description><pubDate>Fri, 08 Aug 2025 20:21:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=44841288</link><dc:creator>errozero</dc:creator><comments>https://news.ycombinator.com/item?id=44841288</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44841288</guid></item><item><title><![CDATA[New comment by errozero in "303Gen – 303 acid loops generator"]]></title><description><![CDATA[
<p>Update: The wav export feature now renders with all parameter changes, and I've fixed a bug that excluded the drone from the export.</p>
]]></description><pubDate>Fri, 08 Aug 2025 12:59:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=44836472</link><dc:creator>errozero</dc:creator><comments>https://news.ycombinator.com/item?id=44836472</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44836472</guid></item><item><title><![CDATA[New comment by errozero in "303Gen – 303 acid loops generator"]]></title><description><![CDATA[
<p>Update: wav export now added</p>
]]></description><pubDate>Thu, 07 Aug 2025 13:27:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=44824201</link><dc:creator>errozero</dc:creator><comments>https://news.ycombinator.com/item?id=44824201</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44824201</guid></item><item><title><![CDATA[New comment by errozero in "303Gen – 303 acid loops generator"]]></title><description><![CDATA[
<p>It now has a simple wav export feature. 
Details here: <a href="https://news.ycombinator.com/item?id=44824142">https://news.ycombinator.com/item?id=44824142</a></p>
]]></description><pubDate>Thu, 07 Aug 2025 13:25:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=44824180</link><dc:creator>errozero</dc:creator><comments>https://news.ycombinator.com/item?id=44824180</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44824180</guid></item><item><title><![CDATA[New comment by errozero in "303Gen – 303 acid loops generator"]]></title><description><![CDATA[
<p>I've just added a wav export feature. Currently it only exports with the knob positions as they are when the pattern first generates. You can choose how long the exported audio is.<p>It's a bit of a hack that re-opens the app in an iframe in the background using an offline audio context.<p>I'll come back to it at some point and make the export pick up the knob positions but I don't have time right now.</p>
]]></description><pubDate>Thu, 07 Aug 2025 13:21:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=44824142</link><dc:creator>errozero</dc:creator><comments>https://news.ycombinator.com/item?id=44824142</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44824142</guid></item><item><title><![CDATA[New comment by errozero in "303Gen – 303 acid loops generator"]]></title><description><![CDATA[
<p>Ah, I was wondering how it ended up posted here. Thanks!</p>
]]></description><pubDate>Thu, 07 Aug 2025 10:30:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=44822783</link><dc:creator>errozero</dc:creator><comments>https://news.ycombinator.com/item?id=44822783</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44822783</guid></item><item><title><![CDATA[New comment by errozero in "303Gen – 303 acid loops generator"]]></title><description><![CDATA[
<p>Currently, all you can do is save the url which contains all of the initial randomisation settings when a pattern generates. It doesn't update when moving sliders or anything, it's just the intial settings.<p>I'll look into adding a wav export feature.</p>
]]></description><pubDate>Wed, 06 Aug 2025 21:56:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=44818325</link><dc:creator>errozero</dc:creator><comments>https://news.ycombinator.com/item?id=44818325</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44818325</guid></item><item><title><![CDATA[New comment by errozero in "303Gen – 303 acid loops generator"]]></title><description><![CDATA[
<p>Thank you! It's been a few years so I can't remember exactly without reading through the code but it's something like this:<p>It uses notes from the selected scale and octave (from the dropdowns). 
If the pattern is of an even length, say 16, it will split it into 4 chunks of 4, then randomly decide if it should generate new data for the chunk or copy the previous chunk. It uses the repeat slider for the probability on this.<p>It randomly applies the 303 modifiers (up, down, accent, slide) using probability set with the sliders on the pattern tab.<p>There's also an 'empty' slider which sets the probablity of an empty note appearing in a chunk.</p>
]]></description><pubDate>Wed, 06 Aug 2025 19:23:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=44816475</link><dc:creator>errozero</dc:creator><comments>https://news.ycombinator.com/item?id=44816475</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44816475</guid></item><item><title><![CDATA[New comment by errozero in "303Gen – 303 acid loops generator"]]></title><description><![CDATA[
<p>I wish I could attend! I'm in the UK.</p>
]]></description><pubDate>Wed, 06 Aug 2025 19:03:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=44816227</link><dc:creator>errozero</dc:creator><comments>https://news.ycombinator.com/item?id=44816227</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44816227</guid></item><item><title><![CDATA[New comment by errozero in "303Gen – 303 acid loops generator"]]></title><description><![CDATA[
<p>I've just updated this to make it a little bit easier to use on a phone. 
The knobs are now a bit chunkier and should respond better to touch and the instruments sit vertically instead of horizontally.</p>
]]></description><pubDate>Wed, 06 Aug 2025 19:03:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=44816212</link><dc:creator>errozero</dc:creator><comments>https://news.ycombinator.com/item?id=44816212</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44816212</guid></item><item><title><![CDATA[New comment by errozero in "303Gen – 303 acid loops generator"]]></title><description><![CDATA[
<p>Hey, sure! I forgot it was limited to 130, it's been a few years!
I've just updated it.</p>
]]></description><pubDate>Wed, 06 Aug 2025 19:00:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=44816173</link><dc:creator>errozero</dc:creator><comments>https://news.ycombinator.com/item?id=44816173</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44816173</guid></item><item><title><![CDATA[New comment by errozero in "303Gen – 303 acid loops generator"]]></title><description><![CDATA[
<p>No, but the timekeeping part of it is. I put that code into a small library to use in my music apps:
<a href="https://github.com/errozero/beatstepper" rel="nofollow">https://github.com/errozero/beatstepper</a></p>
]]></description><pubDate>Wed, 06 Aug 2025 17:08:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=44814727</link><dc:creator>errozero</dc:creator><comments>https://news.ycombinator.com/item?id=44814727</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44814727</guid></item><item><title><![CDATA[New comment by errozero in "303Gen – 303 acid loops generator"]]></title><description><![CDATA[
<p>Hey, I made this a few years ago. I'm suprised to see it posted here today.<p>It was never finished and I was meaning to add a polyfill for the missing cancelAndHoldAtTime function for Firefox.<p>Edit: I've just hacked in a quick polyfill</p>
]]></description><pubDate>Wed, 06 Aug 2025 14:38:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=44812638</link><dc:creator>errozero</dc:creator><comments>https://news.ycombinator.com/item?id=44812638</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44812638</guid></item><item><title><![CDATA[New comment by errozero in "Ask HN: Tools or frameworks to build music theory games"]]></title><description><![CDATA[
<p>I created this scheduler library which can be used to play a sequence of notes, create a metronome, drum machine etc. 
<a href="https://github.com/errozero/beatstepper">https://github.com/errozero/beatstepper</a></p>
]]></description><pubDate>Mon, 02 Dec 2024 16:24:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=42297689</link><dc:creator>errozero</dc:creator><comments>https://news.ycombinator.com/item?id=42297689</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42297689</guid></item><item><title><![CDATA[New comment by errozero in "Ask HN: What apps have you created for your own use?"]]></title><description><![CDATA[
<p>Here's a couple of web audio things I have worked on and not really shared with anyone. They will both work best in Chrome.<p><a href="https://303-gen-06a668.netlify.app" rel="nofollow noreferrer">https://303-gen-06a668.netlify.app</a> - A tool to generate randomised 303 acid loops (Chrome only)<p><a href="https://metronic-studio-0d0680.netlify.app" rel="nofollow noreferrer">https://metronic-studio-0d0680.netlify.app</a> - Unfinished web daw project started a few years ago</p>
]]></description><pubDate>Wed, 13 Dec 2023 09:52:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=38624968</link><dc:creator>errozero</dc:creator><comments>https://news.ycombinator.com/item?id=38624968</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38624968</guid></item><item><title><![CDATA[New comment by errozero in "So Long, Small Phones"]]></title><description><![CDATA[
<p>Thanks, that's a cool device but I think maybe a bit too small to be useable.</p>
]]></description><pubDate>Sat, 21 Oct 2023 21:42:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=37970737</link><dc:creator>errozero</dc:creator><comments>https://news.ycombinator.com/item?id=37970737</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37970737</guid></item><item><title><![CDATA[New comment by errozero in "So Long, Small Phones"]]></title><description><![CDATA[
<p>I have been searching for a new phone for months, looking for something small and with a headphone socket, it's literally impossible.</p>
]]></description><pubDate>Sat, 21 Oct 2023 16:14:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=37968055</link><dc:creator>errozero</dc:creator><comments>https://news.ycombinator.com/item?id=37968055</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37968055</guid></item><item><title><![CDATA[New comment by errozero in "A tale of two clocks – Scheduling Web Audio with precision"]]></title><description><![CDATA[
<p>Hey, sure I'll try... if you mean usage of the library:<p>It runs your callback every 16th note, slightly before it is actually due to play, this can vary by a few milliseconds each time but that doesn't matter as the actual audio context start time for the note is passed in to the callback, and you use that to actually schedule the events for that 16th note, eg: osc.start(time).<p>You can schedule 32nd notes etc too by using the stepLength property that is also passed in, time + (stepLength/2) would be a 32nd note.<p>Hope that makes sense? I do need to write a better description on the github page of what it actually is.<p>The inner workings of the library itself are mostly just as described in the article with a few tweaks.</p>
]]></description><pubDate>Sun, 03 Jul 2022 19:47:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=31970424</link><dc:creator>errozero</dc:creator><comments>https://news.ycombinator.com/item?id=31970424</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=31970424</guid></item><item><title><![CDATA[New comment by errozero in "A tale of two clocks – Scheduling Web Audio with precision"]]></title><description><![CDATA[
<p>I made a library based on this article which I use as a starting point for all my music app projects. It's useful as the main timing code for things like drum machine and sequencers etc. 
<a href="https://github.com/errozero/beatstepper" rel="nofollow">https://github.com/errozero/beatstepper</a></p>
]]></description><pubDate>Sun, 03 Jul 2022 08:00:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=31965960</link><dc:creator>errozero</dc:creator><comments>https://news.ycombinator.com/item?id=31965960</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=31965960</guid></item><item><title><![CDATA[Furnace Tracker – a multi-system chiptune tracker]]></title><description><![CDATA[
<p>Article URL: <a href="https://github.com/tildearrow/furnace">https://github.com/tildearrow/furnace</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=31737084">https://news.ycombinator.com/item?id=31737084</a></p>
<p>Points: 3</p>
<p># Comments: 0</p>
]]></description><pubDate>Tue, 14 Jun 2022 10:51:22 +0000</pubDate><link>https://github.com/tildearrow/furnace</link><dc:creator>errozero</dc:creator><comments>https://news.ycombinator.com/item?id=31737084</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=31737084</guid></item></channel></rss>