Show HN: Web Audio DSP Playground

126 points by acarabott 7 years ago | 43 comments
  • btown 7 years ago
    Audio Worklet https://developers.google.com/web/updates/2017/12/audio-work... is way, way cooler than these demos imply, as it actually gives you a high-priority digital signal processing thread separate from the UI thread. And because it can benefit from WebAssembly, it's only a matter of time before the power of native audio applications is ported to the browser.

    This thread https://forum.juce.com/t/juce-plugins-in-webassembly/25255 , particularly the demo here https://webaudiomodules.org/demos/wasm/dexed.html (try using the ZXCV row on your keyboard) are incredibly promising, as they're straightforward ports of real synthesizers.

    Other comments have mentioned that this is coming to Firefox as well; core contributors on the media team have been discussing how it's a priority as recently as two days ago: https://bugzilla.mozilla.org/show_bug.cgi?id=1062849

    Really exciting times for the web audio space!

    • droidist2 7 years ago
      This is pretty sweet. It'd be cool to have more examples though like square wave, triangle wave, etc. and maybe some simple effects like tremolo.
      • nabla9 7 years ago

            let amp = 0;
            const maxamp = 0.5;
            const freq = 880;
        
            function loop(numFrames, outL, outR, sampleRate) {
                const steps = sampleRate / freq;
                const delta = maxamp/steps;
          
                for (let i = 0; i < numFrames; i++) {
                    amp += delta;
                    outL[i] = amp;
                    outR[i] = amp;
        
                    if (amp > maxamp) amp = 0.0; 
                 }
            }
        • homero 7 years ago
        • kevincennis 7 years ago
          Would be a cool addition to let users upload an mp3 and then act on it with the AudioWorklet to do stuff like bit crushing.
          • acarabott 7 years ago
            Great idea! Have implemented it, refresh and check it out.
            • detaro 7 years ago
              Could you also try adding a polyfill for non-Chrome browsers? e.g. https://github.com/jariseon/audioworklet-polyfill
              • acarabott 7 years ago
                Had a crack at it but it throws NotSupportedException in both Firefox and Safari. There are also some parts that don't conform to the spec and break. Filing an issue...
          • jtbayly 7 years ago
            Only available on Chrome and only versions 66 and up.
            • shams93 7 years ago
              For cutting edge html5 we have no choice but the latest chrome. Audio worklets? Webmidi? Even though I prefer Firefox they're not moving at the same rate as chrome, no one is when it comes to things like audio worklets.
              • pjmlp 7 years ago
                Apparently there is no issue when it is Google doing it.
              • Jyaif 7 years ago
                bug tracking implementation of missing feature in FF: https://bugzilla.mozilla.org/show_bug.cgi?id=1062849

                Yes, it's 4 years old.

                • reklawnos 7 years ago
                  To be clear, that bug originally tracked the implementation of the Audio Worker API, which went through many iterations that eventually led to the current Audio Worklet spec.
                • sgt 7 years ago
                  Just relaunch your browser, it should update automatically.
                  • jstimpfle 7 years ago
                    To state the obvious, not everybody has Chrome, and not everybody has or wants the newest version. That's how it should be. By implying that it's ok to assume otherwise, you're (probably unknowingly) harming the community.
                    • elvinyung 7 years ago
                      Dumb (but genuine) question: why is it good that not everyone wants to be in the new version?
                  • spookthesunset 7 years ago
                    > Only available on Chrome and only versions 66 and up.

                    Lame. You are in a tech forum with techies and you are complaining about having to run the latest & greatest. How is this constructive?

                    Sometimes you need to run the newest stuff in order to, you know, use the newest stuff. As a techie, you should know that, right?

                    The alternative would be flash, but then you couldn't have done this demo....

                    • saagarjha 7 years ago
                      Maybe they're not using Chrome?
                  • emilfihlman 7 years ago
                    Getting an error of "The AudioContext was not allowed to start. It must be resume (or created) after a user gesture on the page. https://goo.gl/7K7WLu".
                  • indescions_2018 7 years ago
                    This is awesome. Sounds quite in tune at 440 Hz (A4). Could be the beginning of a DAW for Chrome ;)
                  • 7 years ago
                    • zeth___ 7 years ago
                      In the year 2018 of our lord requiring that a specific version of a single browser being installed to see a website should earn you a special place in hell.
                      • pmx 7 years ago
                        Its an experimental playground. I think you may be overreacting slightly.
                        • mcgoooo 7 years ago
                          What does that comment add? Someone hacked something off a relatively fresh API and done something cool with it, the hint is in the name, hacker news.
                          • zeth___ 7 years ago
                            Hackernews, not "install proprietary software to have a peak at a walled garden" + "news".
                            • scrollaway 7 years ago
                              Chromium isn't proprietary software. HN is though. Your rant is misguided and pointless.
                              • jhoh 7 years ago
                                So every Show HN Post hast to run on open source software or else it isn't hacker news worthy? That doesn't sound right to me.
                            • zeroxfe 7 years ago
                              AudioWorklet is part of the proposed W3C Web Audio API standard.
                            • wi24rd 7 years ago
                              Only available in Chrome 66+, and why do you submit it twice in a week?