

Beep.js – toolkit for building browser-based synthesizers - elnn
http://beepjs.com

======
jtheory
Interesting, and quite responsive. Audio generation in JS that I've tinkered
with elsewhere tends to seem responsive until you try to make music out of it,
at which point the poor timing is painfully obvious.

At the moment this seems to just be doing basic tone generation, though -- the
options are sawtooth wave vs. sine wave etc..

Things get messy when you dig into MIDI playback type features, working with
samples, sound libraries, etc.. But if they can forge a clear path in that
direction (but somehow not lose decent timing), that could be quite useful.

~~~
feverdream
Beep.js really isn't a synthesizer, it's more of a step-sequencer. You might
want to check out WAD.js, which is more concerned with synthesizing sounds
than scheduling them (it has filters, LFOs, other effects, etc).
[https://github.com/rserota/wad](https://github.com/rserota/wad). Full
disclosure, I wrote WAD.js.

and btw it's totally possible to make well-timed music with web-audio. I've
got a midi keyboard hooked up to web-audio based looper, and that's what I use
as my primary instrument these days for practicing. It works fine for me.

~~~
frik
Impressive. Though your demo works (for me) only in Chrome (no error and no
audio in FF & IE11).

~~~
feverdream
Certain features that I depend on (particularly midi input) are only available
in chrome as of right now, so I honestly only test it in chrome, though most
of the basic functionality ought to work in other browsers.

~~~
jtheory
This is the point where I stop and say "oh well, wait another year and maybe
then..."

"Evergreen browsers only" is reasonable to ask for lots of sites; but "This
site only works properly in the Chrome browser" gives me unpleasant flashbacks
to when this notice was everywhere, but the browser was "IE5".

------
amelius
Nice, but there are two essential things missing: keyboard expression [1] and
polyphony [2].

[1]
[http://en.wikipedia.org/wiki/Keyboard_expression](http://en.wikipedia.org/wiki/Keyboard_expression)

[2]
[http://en.wikipedia.org/wiki/Polyphony_and_monophony_in_inst...](http://en.wikipedia.org/wiki/Polyphony_and_monophony_in_instruments)

~~~
jtheory
It seems to support 4 simultaneous notes at a time, using the computer
keyboard (e.g., press down zxcv together), but if you hit a 5th key it's
ignored.

For key velocity (is that what you mean by instrument expression?) -- there's
maybe not much point attempting to tackle that when it's not emulating
instrument voices yet anyway, or supporting MIDI input. You can't exactly
capture key velocity from a computer keyboard.

There's some mention of gain in the code snippets, at any rate -- I think each
voice may have its own "volume knob", in effect -- but I haven't dug into it
at all.

~~~
moreati
> It seems to support 4 simultaneous notes at a time, using the computer
> keyboard (e.g., press down zxcv together), but if you hit a 5th key it's
> ignored.

I think that's a limitation of your keyboard. Here I can play zxcvbn, but I
can't add a seventh note.

~~~
monitron
I can play six with my keyboard too! But I got a seventh to sound by hovering
over it with my mouse pointer. So it seems like many simultaneous notes are
supported. I only wish there were controls for the timbre of the sound.

~~~
rockdoe
_I can play six with my keyboard too!_

USB keyboards are limited to 6-key rollover. Using a PS/2 connector will fix
that.

[http://www.reddit.com/r/hardware/comments/nydvp/why_does_usb...](http://www.reddit.com/r/hardware/comments/nydvp/why_does_usb_not_support_nkey_rollover/)

------
UUMMUU
Nit picking but it would probably be better to have the white keys be a-s-d-f-
etc. just because they're the home keys and where my fingers felt more
natural. Awesome idea though and I love that browsers are capable of this.

Edit: If there's a reason for not having this be this way, I apologize; I'm a
drummer and not privy to computer based synth.

~~~
diydsp
Your idea is interesting feedback. There is a legacy associated with this
pattern, though: Going back to at least 1989 (Amiga Protracker family), people
have been using this layout because it allows two simultaneous octaves, one at
qwertyuipo and one at zxcvbnm,./

~~~
UUMMUU
That's what I'd figured because it was just so interestingly laid out but I
was just thinking about finding the home keys and knowing where to begin. Once
again, entirely speaking as someone coming from zero keys playing experience.

------
izietto
Cool! I was trying to play Radiohead's The national anthem [1], but it feels a
bit laggy, especially X key repetitions; anyway it's impressive

[1]
[https://www.youtube.com/watch?v=YLQ9S5D_mxw](https://www.youtube.com/watch?v=YLQ9S5D_mxw)

------
diydsp
Congratulations! Beep.js works well enough to be added to my list of Great
Online Music Tools:

[http://www.diydsp.com/index.php?title=Great_online_music_thi...](http://www.diydsp.com/index.php?title=Great_online_music_things)

------
kranner
I'm getting a Malwarebytes IP blocking warning for
[http://beepjs.com](http://beepjs.com).

------
brackcurly
Can you please change the github links to not open in a new popup.

------
dheera
Any other Dvorak users here disappointed?

~~~
feverdream
I use Colemak, so I feel your pain.

------
dxoapv
Can it handle MIDI playback?

~~~
feverdream
Are you asking if it can play a song recorded in a midi file, or if it can
play sounds based on input from a midi keyboard? Either way, I think the
answer is no.

~~~
dxoapv
Song recorded in a midi file.

