errozero
['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]],
...
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.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).
Hope that makes sense.
It's a bit of a hack that re-opens the app in an iframe in the background using an offline audio context.
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.
I'll look into adding a wav export feature.
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.
It randomly applies the 303 modifiers (up, down, accent, slide) using probability set with the sliders on the pattern tab.
There's also an 'empty' slider which sets the probablity of an empty note appearing in a chunk.
https://303-gen-06a668.netlify.app - A tool to generate randomised 303 acid loops (Chrome only)
https://metronic-studio-0d0680.netlify.app - Unfinished web daw project started a few years ago
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).
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.
Hope that makes sense? I do need to write a better description on the github page of what it actually is.
The inner workings of the library itself are mostly just as described in the article with a few tweaks.
‘It was the poor man’s studio’: how Amiga computers reprogrammed modern music
Show HN: Beatstepper – JavaScript audio event scheduler library
China’s Tencent agrees to buy UK video games firm Sumo for more than £900m
https://sourceforge.net/p/vmpk/shared-keymaps-and-instrument...
Synth: http://www.errozero.co.uk/stuff/poly/ Source: https://github.com/errozero/poly-synth
Works best in chrome