It was never finished and I was meaning to add a polyfill for the missing cancelAndHoldAtTime function for Firefox.
Edit: I've just hacked in a quick polyfill
It was never finished and I was meaning to add a polyfill for the missing cancelAndHoldAtTime function for Firefox.
Edit: I've just hacked in a quick polyfill
Is it mostly for emulating slow-moving changes on fixed timelines, a la automation tracks in traditional DAWs like Logic and Ableton? Is design rationale documented somewhere?
Other systems go further, such as Web Audio Modules (that builds on top of AudioWorklet) implement sample-accurate parameter change from within the rendering thread, using wait-free ring-buffers. That requires `SharedArrayBuffer` but works great, and is the lowest latency possible (since it uses atomic loads and stores from e.g. the main thread to the rendering thread).
As many seem to have mentioned below, it brings back memories of Rebirth in some ways. What it also reminds me of is the beautiful results you could have by plugging some simple modules together to create soundscapes. The limits are the things that provide some semblance of freedom and this is no different. Greetings from a fellow UK acid (techno) head! :P
['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.
I'll look into adding a wav export feature.