Octave Compass
octavecompass.com
octavecompass.com
I actually invited him to repost his Show HN but it looks like a different mod added the current submission to the second-chance pool (https://news.ycombinator.com/item?id=11662380), which is also fine.
Does anyone know if there is an easier, higher level abstraction library for audio backend? The approach in beepbox is rather low level and you can make really interesting sounds, with the trade-off being your backend being really complex (literal sound waves).
I searched for MIDI output on web with sound font support but couldn't find anything helpful.
The problem is can we do this using a higher level library instead of sending sound waves to sound driver.
You can get away with it because the complexity is low. When you begin dealing with higher complexities (like even a modest amount of polyphony in a decent synthesizer) you will push up against the limits of what the browser is capable of. That's what I'm trying to say. There are products like bandlab that do incredibly things in the browser, but their competitors do far more with less just by leaving it.
As for higher level APIs... sure you can do it. There are things like WebAudio, Supercollider, Max/MSP, Pure Data, the new SOUL language posted recently, etc. But ultimately what every app needs is an API where they pick which samples to fill a buffer with (what you're calling "sound waves to the sound driver" I think). Mostly because the high level APIs sound bad and you will eventually need non-naive DSP.
Look - everyone knows low level APIs and languages kinda suck to program against. But it's not for lack of trying that serious audio software isn't running in the browser or in managed languages.
WebAudio does indeed provide it. The audio data doesn't live in the JS VM, and isn't GC'ed like regular JS.
https://github.com/andyhall/wasgen
Making the sound program objects isn't trivial if you're unfamiliar with low-level audio, but the live demo has examples for all MIDI instruments: https://andyhall.github.io/wasgen/
Awesome concept though, I really love to see stuff like this, and it's great to experiment with and find new (to me) "synergies" between notes/chords.
On my box, chromium on Ubuntu, it works when I click, but they keyboard does not produce sound.
When you say "keyboard does not produce sound", are you saying that you'd expect to hear sound when pressing a physical key on your computer keyboard, like "C" or "1"? Or are you saying that you're clicking an element in the page and not hearing sound? I really like the idea of responding to physical key presses. If you're into Svelte, perhaps you'd want to take a stab at adding that feature... wink wink. I actually already have a ticket for it here: https://github.com/seancolsen/octave-compass/issues/74 My thought was to use the number keys to play the scale degrees, but I'm open to other ideas.