Live data from Hacker News

Show HN: Wavvy – web-based audio editor (Audacity port)

wavvy.app

1–10 of 115 posts

Show HN: Wavvy – web-based audio editor (Audacity port)

#1
I originally developed a WASM port of wxWidgets for https://dj.app/. When it came time to open source wxWidgets-wasm, I decided to port another complex app as a test case, and Audacity seemed like the obvious choice. In the process, I also needed to write a new host API for PortAudio for playback and recording in the browser.

https://github.com/ahilss/wxWidgets-wasm

https://github.com/ahilss/portaudio-wasm

https://github.com/ahilss/wavvy

Show HN: Wavvy – web-based audio editor (Audacity port)
wavvy.app

Re: Show HN: Wavvy – web-based audio editor (Audacity port)

#4
Cool! The UI even works on iPhone (alas, playback doesn’t work, so my dreams of multitrack audio editing with just my thumbs are dashed /s)

I’m curious what porting wxwidgets involved — are you rendering them with the 2D canvas API, WebGL, or is all the rendering done by WxWidgets and you just have to send a framebuffer into a canvas?

Re: Show HN: Wavvy – web-based audio editor (Audacity port)

#5
post #3

> Audacity seemed like the obvious choice Tangential question, but why did Audacity seem like the obvious choice? Not a knock on the product - I use it often - but I'm just curious about why it was chosen.

Audacity is one of the largest (if not the largest?) still active projects using wxWidgets, it seems like fairly obvious if you are somewhat aware of that.

Re: Show HN: Wavvy – web-based audio editor (Audacity port)

#6
post #4

Cool! The UI even works on iPhone (alas, playback doesn’t work, so my dreams of multitrack audio editing with just my thumbs are dashed /s) I’m curious what porting wxwidgets involved — are you rendering them with the 2D canvas API, WebGL, or is all the rendering done by WxWidgets and you just have to send a framebuffer into a canvas?

Not the OP, but taking a look at the DOM, it's rendering each "window" as a canvas. So you have a main window canvas, then canvases for popup menus, message boxes etc. All canvases are using a 2d context, and there are many offscreen canvases created for each interaction for each widget which I assume are then composited to the window canvases.

It's an amazing project! If the OP is here, do you have any plans for accessibility to screen readers? I suppose it's a similar problem to that with Flutter.

I also wander if there is a possibility to combine your wxWidget port with the work going into WASM Python...

Edit:

Taking a closer looks at how the wxWidget port works, wxWidgets has multiple backends using native widgets on each platform. They also have wxUniversal which draws each widget itself to a frame buffer, this port uses that as a base to draw the ui to html canvases.

Post reply on HN