For a while I have been curious about the intended uses for xAtTime functions (like cancelAndHoldAtTime) in Web Audio. As far as I understand it, calls to them suffer from lag due to main JavaScript thread and audio thread communication, which makes sample precision unachievable—and precision is quite important in music.
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?
Those methods are sub-sample accurate, granted you call them a bit in advance to account for the cross-thread communication, as you say. But yes, in general this was designed (prior to me becoming an editor) with scheduling in mind, not with low-latency interactivity. That said, it goes quite far.
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).
This is really lush. Instantly it brightened up my evening. This kind of experimentation is always amazing to see.
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
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.
this is awesome. would suggest not randomizing the tempo on regenerate, and if it was already playing, when hitting regenerate, keep it playing. that would make it easy to quickly audition loops at a given tempo with a single click
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.
Not only does this sound excellent, with three great TB-303 synth engines with a colored delay, but it's very musical. The three patterns are locked to a common scale/mode, they autogenerate with compatible and often interleaving polyrhythms, and the "instruments" - bass, lead, drone - spawn with complimentary defaults.
As a longtime synth nerd, it still amazes me to see beautiful tools like this running in a web browser.
I agree that it's neat to have software synths that can run in the browser nowadays, but this isn't really a good TB-303 emulation. The accent doesn't have a slow enough attack to create the "wow" effect, which is a fundamental aspect of getting any random acid line to sound properly 303ish. Not to take away from what it is, but for a synth that has been cloned and emulated as often as the TB-303, your description is overselling it a bit.
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.
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 remember using that one time to make music for a presentation for a power point slide. We burnt the music onto a CD and brought in a boombox. I it was for my accounting class. It was kinda cool.
Had tons of fun with https://roland50.studio/ the other day. And I have a lot of the actual devices, but still to just jam a bit without going through all of the set up now nice.
Is this open source? I'd love to tweak it a bit, I wonder if it modulation can be automated somehow, so it can be kept in the background as it fiddles with patterns on its own and explores the musical landscape. Or add a save/load feature, for both songs and patterns...
Learn by imitation ; if you want to make DnB tracks, try and inevitably fail to recreate existing DnB that you admire. With time your failures-to-imitate will congeal into a novel and personal style.
This book [0] is full of great creative strategies to make electronic music, ways of getting started/unstuck, is generally not that tied to Ableton the software (even though they are the publisher), and is free to partially peruse online.
I’d recommend getting a physical copy once/if you find it useful. It’s been a really great help in getting over white page/DAW syndrome. Truly great and full of smart/useful gems.
I'm a little sad that the 303 sound had such a short-lived and niche life. In the 90's it seemed to me like it was the first instrument that could challenge the hegemony of the electric guitar. It was so versatile - the sound is bouncy, melodic, and had some real "growl", all at the same time.
Unfortunately it really is a niche thing that only appears to speak to certain people.
As someone who feels like the sound of the 303 touches me deep in my soul, it's constantly disappointing to be reminded that other people don't hear it the same way I do. You can even see it in comments on this post where expressing a love or appreciation for the actual sound of the silver box is dismissed as elitist or something because lol whatever, any old synth sounds just as good. Most people either can't hear or don't care about what makes it special, which perhaps explains why it never became respected as a mainstream instrument like the 808 did.
Fortunately the clones these days are very cheap and very good and music has become so easy to obtain that you can visit Bandcamp every week and still find new tracks featuring the 303 and its descendants. Every now and then you might hear a 303 in a mainstream tune and it's a treat, but if you just love the sound and don't mind listening to music that few others get, I don't think there's ever been a better time.
I remember back in the 90s there was somewhat of a backlash against the 303, which presumably was part of what Norman Cook was getting at with the name of the song mentioned on the top of this thread. Ironically - or perhaps deliberately - that track was peak unimaginative/tedious usage of the instrument, which is funny because he had also done some much more elegant takes in his Pizzaman project.
For me it never felt like the 303 ever got really overdone in mainstream electronic music. Certainly there was the riff from Pump Panel's Confusion remix showing up all over the place, and there were a few tracks that got a high rotation on MTV like Daft Punk's Da Funk and Josh Wink's Higher State, but I don't think it was ever really ubiquitous outside of acid music, which is already a niche genre. Like, we never got 808s & Heartbreak for the 303.
It was definitely controversial inside the synth community, though, where hardcore analog and modular synth nerds scoffed at it being so limited and toy-like, and everybody - young and old - resented it becoming so expensive and sought-after, which in turn raised the prices of other vintage synths that according to the rumor mill could do a decent approximation if you programmed them just right.
Rebirth busted that market by making the basic essence of the sound available to everyone, and there were plenty of bad acid tracks that came out during that period, but I think that's also when the opportunity was there for it to really break through as a serious instrument. Later VSTs like Phoscyon took inspiration from mods like Devilfish and more elaborate clones like the FR-777, building on the 303 base to create the kinds of sounds that in the old days might have required a lot hacking/patching up of different instruments to construct. But by that point it was clear that the mainstream didn't really care.
I'm at work right now so don't have access to my music library to share specific favorite tracks, but there is still so much great music featuring the 303 coming out - it never stopped. There is stuff for people of every taste. If the more unsubtle stuff doesn't work for you, you might want to check out Mighty Force label, which has been putting out a bunch of IDM/braindance and pleasant electro music recently that sometimes has delightful uses of the 303. Also in the back of my mind for more IDM-ish and electro stuff are Analogical Force, Virtual Urban Records, HC Records, Nocta Numerica... There's a bunch more in that vein, plus all the usual suspects doing big room techno, hard party acid, all-hardware synth jams etc etc, but you probably need to dig in any case. I tend to find even the best albums only have one or two tracks that are to my taste, but everyone is different so it's great that there is so much out there.
In the 1980's nobody knew how to use synths beyond the default patches. That's why I think that 80's music sounds so generic and kind of hollow.
The 90's was different, the people making synth music pushed the synths past what their default setup was capable of. Synths used in the mid/late 90's for psychedelic/acid trance sound nothing like 80's synths, but they are the same synths.
The "303" was intended as a bass instrument, but with 90's acid trance it's typically used as a lead, as well as a bass.
Also within ungoogled chromium, upon hitting the "stop" button, it seems to keep playing either an additional lower-volume track, or some long delayed echo....but hitting the "stop" button several times eventually stops playback. Even still, the concept is pretty neat!
Right off the bat I get something that sounds like something Frank Klepacki would have used in the Red Alert 2 soundtrack (likely pulled from Methods of Mayhem). Nice.
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:
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.
Awesome, love it! You could consider adding some randomness from random.org so that natural electromagnetic phenomena (or a supreme being) influence the output - for the pro service perhaps ;-)
Hey, I made this a few years ago. I'm suprised to see it posted here today.
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
Sorry, I'll implement it, I had forgotten we didn't do it for erm... 9 years.
https://bugzilla.mozilla.org/show_bug.cgi?id=1308431
For a while I have been curious about the intended uses for xAtTime functions (like cancelAndHoldAtTime) in Web Audio. As far as I understand it, calls to them suffer from lag due to main JavaScript thread and audio thread communication, which makes sample precision unachievable—and precision is quite important in music.
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?
Those methods are sub-sample accurate, granted you call them a bit in advance to account for the cross-thread communication, as you say. But yes, in general this was designed (prior to me becoming an editor) with scheduling in mind, not with low-latency interactivity. That said, it goes quite far.
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).
This is the best thread
Thank you!
This is really lush. Instantly it brightened up my evening. This kind of experimentation is always amazing to see.
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
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.
I was randomly going over my past HN activity and bumped over this gem from here https://news.ycombinator.com/item?id=38624968 and posted :)
Ah, I was wondering how it ended up posted here. Thanks!
this brought a little more joy to my day, thank you
This is fantastic errozero nicely done! It's very musical, the drone is a nice touch and really glues it all together in a subtle way.
this is awesome. would suggest not randomizing the tempo on regenerate, and if it was already playing, when hitting regenerate, keep it playing. that would make it easy to quickly audition loops at a given tempo with a single click
Hey if you don't mind updating this, can you please allow the tempo to be as high as 150 bpm?
Hey, sure! I forgot it was limited to 130, it's been a few years! I've just updated it.
That might tickle your tinrib. If you want to stay up forever, maybe go to 160 bpm. Or even some industrial strength 200 bpm.
And also, different tempos per instrument :)
This is amazing. Thanks for making it.
Are you interested in open sourcing? I'd love to learn about how this was done.
Update: wav export now added
How do I export/save a pattern I like?
It now has a simple wav export feature. Details here: https://news.ycombinator.com/item?id=44824142
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.
I'll look into adding a wav export feature.
Yes. Export please!
this thing is great. you got a version that can run as a vst or plugin?
Not only does this sound excellent, with three great TB-303 synth engines with a colored delay, but it's very musical. The three patterns are locked to a common scale/mode, they autogenerate with compatible and often interleaving polyrhythms, and the "instruments" - bass, lead, drone - spawn with complimentary defaults.
As a longtime synth nerd, it still amazes me to see beautiful tools like this running in a web browser.
Excellent job!
I agree that it's neat to have software synths that can run in the browser nowadays, but this isn't really a good TB-303 emulation. The accent doesn't have a slow enough attack to create the "wow" effect, which is a fundamental aspect of getting any random acid line to sound properly 303ish. Not to take away from what it is, but for a synth that has been cloned and emulated as often as the TB-303, your description is overselling it a bit.
Tell me, oh wise HN caricature, do you think the point was hardware-level emulation of a 40-year-old analogue circuit?
(Hint, it's also got a variable pulse-width oscillator and an LFO, which the TB-303 lacked.)
Come now. Being kind is also a thing, and I think it sounds more than acceptable.
This is absolutely awesome. The multiple lines really make it unique.
I really never heard the enigmatic scale that much but it sounds wonderful. The only thing I would want to hear are melodic and harmonic minor modes.
Fun. I love the UI style.
See also the Endless Acid Banger:
https://www.vitling.xyz/toys/acid-banger/
And happy Acid August!
Every year we celebrate the 303 with a club night in SF.
https://ra.co/events/2208013
I wish I could attend! I'm in the UK.
Oh, that is neat! Vitling also makes nice music.
https://music.vitling.xyz/music
Oh this is lovely! I love the 303, played with ReBirth a LOT and built several x0xb0xes back in the day.
About half of the patterns it generated were something I could listen to for a while. Makes me want to get back into electronic music again.
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.
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.
Thanks
cries nostalgia tears in Propellerhead Rebirth
Thanks.
I remember using that one time to make music for a presentation for a power point slide. We burnt the music onto a CD and brought in a boombox. I it was for my accounting class. It was kinda cool.
When clicking Regenerate, it would be great if the sequence kept playing if Play was active at that time.
Had tons of fun with https://roland50.studio/ the other day. And I have a lot of the actual devices, but still to just jam a bit without going through all of the set up now nice.
Best find on HN in the past year, no joke.
Is this open source? I'd love to tweak it a bit, I wonder if it modulation can be automated somehow, so it can be kept in the background as it fiddles with patterns on its own and explores the musical landscape. Or add a save/load feature, for both songs and patterns...
This is really lovely.
Would be great as an inspiration tool if it would make a little visualisation of the notes/accent/slides on a piano roll.
I can read the JSON meanwhile but just an idea.
Does anyone have any suggestions for how to get into electronic music production?
I am working on a small game and want to make some jungle dnb tracks for it.
I grabbed Renoise and follow some tutorials and stuff. Is there a better way to go about it?
Learn by imitation ; if you want to make DnB tracks, try and inevitably fail to recreate existing DnB that you admire. With time your failures-to-imitate will congeal into a novel and personal style.
This book [0] is full of great creative strategies to make electronic music, ways of getting started/unstuck, is generally not that tied to Ableton the software (even though they are the publisher), and is free to partially peruse online.
I’d recommend getting a physical copy once/if you find it useful. It’s been a really great help in getting over white page/DAW syndrome. Truly great and full of smart/useful gems.
[0] https://makingmusic.ableton.com/
You could grab some sample or instrument packs that will help you approximate the sound you are after more quickly.
Baby Audio has a pretty nice VST instrument and 90s preset pack that might have the sound you are looking for - have a listen here https://static1.squarespace.com/static/561e2985e4b08862a3496...
On a side note - if you are looking for people to help out I’d love to have a crack, also looking to learn.
Everybody needs a 303.
it's #1 so why try harder? ;)
I'm a little sad that the 303 sound had such a short-lived and niche life. In the 90's it seemed to me like it was the first instrument that could challenge the hegemony of the electric guitar. It was so versatile - the sound is bouncy, melodic, and had some real "growl", all at the same time.
Unfortunately it really is a niche thing that only appears to speak to certain people.
As someone who feels like the sound of the 303 touches me deep in my soul, it's constantly disappointing to be reminded that other people don't hear it the same way I do. You can even see it in comments on this post where expressing a love or appreciation for the actual sound of the silver box is dismissed as elitist or something because lol whatever, any old synth sounds just as good. Most people either can't hear or don't care about what makes it special, which perhaps explains why it never became respected as a mainstream instrument like the 808 did.
Fortunately the clones these days are very cheap and very good and music has become so easy to obtain that you can visit Bandcamp every week and still find new tracks featuring the 303 and its descendants. Every now and then you might hear a 303 in a mainstream tune and it's a treat, but if you just love the sound and don't mind listening to music that few others get, I don't think there's ever been a better time.
I love this software but I was completely sick of the 303 by the late 90s.
If anything, I think it got over exposed in the 90s. The sound is just so distinct with the slides and accents.
Rebirth was also the first really popular software synth I remember and at that point it was just 303 overkill.
For me, it was an acid house album in the 2010s that I can't remember that made me appreciate the 303 again.
I remember back in the 90s there was somewhat of a backlash against the 303, which presumably was part of what Norman Cook was getting at with the name of the song mentioned on the top of this thread. Ironically - or perhaps deliberately - that track was peak unimaginative/tedious usage of the instrument, which is funny because he had also done some much more elegant takes in his Pizzaman project.
For me it never felt like the 303 ever got really overdone in mainstream electronic music. Certainly there was the riff from Pump Panel's Confusion remix showing up all over the place, and there were a few tracks that got a high rotation on MTV like Daft Punk's Da Funk and Josh Wink's Higher State, but I don't think it was ever really ubiquitous outside of acid music, which is already a niche genre. Like, we never got 808s & Heartbreak for the 303.
It was definitely controversial inside the synth community, though, where hardcore analog and modular synth nerds scoffed at it being so limited and toy-like, and everybody - young and old - resented it becoming so expensive and sought-after, which in turn raised the prices of other vintage synths that according to the rumor mill could do a decent approximation if you programmed them just right.
Rebirth busted that market by making the basic essence of the sound available to everyone, and there were plenty of bad acid tracks that came out during that period, but I think that's also when the opportunity was there for it to really break through as a serious instrument. Later VSTs like Phoscyon took inspiration from mods like Devilfish and more elaborate clones like the FR-777, building on the 303 base to create the kinds of sounds that in the old days might have required a lot hacking/patching up of different instruments to construct. But by that point it was clear that the mainstream didn't really care.
I'm at work right now so don't have access to my music library to share specific favorite tracks, but there is still so much great music featuring the 303 coming out - it never stopped. There is stuff for people of every taste. If the more unsubtle stuff doesn't work for you, you might want to check out Mighty Force label, which has been putting out a bunch of IDM/braindance and pleasant electro music recently that sometimes has delightful uses of the 303. Also in the back of my mind for more IDM-ish and electro stuff are Analogical Force, Virtual Urban Records, HC Records, Nocta Numerica... There's a bunch more in that vein, plus all the usual suspects doing big room techno, hard party acid, all-hardware synth jams etc etc, but you probably need to dig in any case. I tend to find even the best albums only have one or two tracks that are to my taste, but everyone is different so it's great that there is so much out there.
> that could challenge the hegemony of the electric guitar.
IIRC when it came out in the early 80s it was intended to be a substitute for bass guitars. So perhaps that is part of your sentiment.
In the 1980's nobody knew how to use synths beyond the default patches. That's why I think that 80's music sounds so generic and kind of hollow.
The 90's was different, the people making synth music pushed the synths past what their default setup was capable of. Synths used in the mid/late 90's for psychedelic/acid trance sound nothing like 80's synths, but they are the same synths.
The "303" was intended as a bass instrument, but with 90's acid trance it's typically used as a lead, as well as a bass.
> In the 1980's nobody knew how to use synths beyond the default patches
Dwayne Goettel would be a big counter example! :) Although his best work was early 90s I suppose.
Also within ungoogled chromium, upon hitting the "stop" button, it seems to keep playing either an additional lower-volume track, or some long delayed echo....but hitting the "stop" button several times eventually stops playback. Even still, the concept is pretty neat!
Doesn't work in firefox, console tells me
Uncaught TypeError: a.frequency.cancelAndHoldAtTime is not a function
Pretty fun in Chrome!
Apparently fixed mow: https://news.ycombinator.com/item?id=44812638
Lovely! Is the source code public?
No, but the timekeeping part of it is. I put that code into a small library to use in my music apps: https://github.com/errozero/beatstepper
Right off the bat I get something that sounds like something Frank Klepacki would have used in the Red Alert 2 soundtrack (likely pulled from Methods of Mayhem). Nice.
It's so easy to get acid, you can get it anywhere.
Love it. MIDI sync and start/stop functionality would be great to connect it to other gear/software!
It's brilliant. Love it. I want to know more about the generation, it looks very well thought out. Worth an article in itself.
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:
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.
Awesome, love it! You could consider adding some randomness from random.org so that natural electromagnetic phenomena (or a supreme being) influence the output - for the pro service perhaps ;-)
What would be the level of effort to get some midi transport controls and BPM sync in here, now that browsers support MIDI to some degree?
It would be cool if this showed the patterns in a visual manner that I could copy into my 303 VST of choice
Where is "Export as MIDI"?
Exporting the generated audio stems would be slick, too, rather than having to run capture on it.
Export midi or realtime output midi.
This is great and will be an excellent source of samples
oh yeah. I feel like I'm in the '90s again.
Check out this great album, a study in acid: Filo Loves the Acid by Donato Dozzy.
I can finally be Richie Hawtin.
* https://youtu.be/5L0VP7nAZls?t=2713
man I love this. want for local use.
amazing, can you please add simple 909 kit?
Human Music!
Reminds me of the music of Dynamix (Commodore 64 game)
[dead]
Disappointed, I thought acid loops were fruit loops dipped in acid (303 µg a piece?). The sound is nice, though.