Show HN: TR-101 – A drum synth/sequencer made with Vue and the web audio API
inverted3.gitlab.io
inverted3.gitlab.io
The kick drum is way too hard to tune, I can only tune to 60, 147 and 234. Either make the steps smaller or let me type in my own values maybe?
Thanks!
In a similar vein, I made a simple collaborative beat sequencer with some friends for the Node Knockout awhile back.
http://ebb.somethingcoded.com/
It just uses samples for playback since web audio wasn't a thing back then but I'm working on porting it over to doing full synthesis in the browser.
FYI- You need to invite friends to join in with you as each person can only control a single track. Or just join in multiple tabs and play by yourself ;)
I mean, yeah .. some DAW's are better than other, but give me native for this, or gtfo, kthxbai ..
Or why not try to import famous drum patterns using midi import or sound analysis? Would love to browse through Led Zeppeleins, for example, drum tracks visually! Next you could add piano roll and do the same for instruments. This might make it possible to search tracks by scales, chord progressions, melodies, motifs etc...
Also, you can create 'groove templates' in Logic Pro, which lets you analyze the groove of one track, and then apply it to another.
In addition to the authors skills, Vue just seems to win the readability battle hands down when compared to other js frameworks. The single file components are really quite magical in practice.
This is on both windows and mac. Weird.
Thanks for the heads up!
If you wouldn't mind, please post what the problem was if you figure it out!
Edit to add: my best guess is that you need to add a "setValueAtTime" call between these two lines, so that the exponential ramp has a scheduled value to start from.
https://gitlab.com/inverted3/drum-machine/blob/master/src/co...
osc.gain.value = 1
But for this to work on Safari & FF it needs to be set like this: oscVol.gain.setValueAtTime(1, startTime)Small nit: I'm used to being able to drag "upwards" to make a knob's value higher, but here it seems to do cause the value to decrease. Perhaps I'm just too used to how FL Studio behaves and others prefer this way.
E.g. initial pitch = 440hz.
Env = 1 -> terminal pitch 440hz
Env = 0.5 -> terminal pitch 220hz
See here: https://gitlab.com/inverted3/drum-machine/blob/master/src/co...The hardest part by far was making the timing rock solid - it involves syncing between the browser rendering engine and the audio context timer.
My solution was based on pointers from this comprehensive post: https://www.html5rocks.com/en/tutorials/audio/scheduling/
https://gitlab.com/inverted3/drum-machine/commit/79c0eba42ec...