News for hackers. Stuff that matters.

ahilss

I’m the developer of Transitions DJ (https://dj.app/). If anyone can connect me with the team at Apple Music, I would be interested in doing an integration.

Show HN: Stems Music Player and Visualization

https://stems.dj.app/

Music is separated into stems using a version of Demucs modified to support streaming. Pitched stems are then processed by a machine learning model trained to detect the fundamental frequencies in the music. Finally, the fundamental frequencies are post-processed and combined with magnitudes from the FFT to produce the visualization. A tempo detection model runs in parallel on the client to...

( Read More... | no comments | on HN )
Re:Wavacity – a FOSS port of Audacity to the web on Friday September 01, 2023 @07:16PM (#37357173)
Wavacity developer here. I released this a year ago under the name "wavvy" but needed to rename the project because of a trademark conflict.

https://news.ycombinator.com/item?id=32688646

Re:Show HN: Wavvy – web-based audio editor (Audacity port) on Friday September 02, 2022 @01:01PM (#32693077)
On the M1 Mac I actually measured lower CPU usage during audio playback on WASM compared to the native desktop version which uses Rosetta. I'm not sure if the slowness is due to Rosetta or a performance bug on the Mac port.
Re:Show HN: Wavvy – web-based audio editor (Audacity port) on Friday September 02, 2022 @12:49PM (#32692941)
It's probably the most visible project using the wxWidgets framework and in the audio domain which fits well with my experience building the DJ app.
Re:Show HN: Wavvy – web-based audio editor (Audacity port) on Friday September 02, 2022 @12:44PM (#32692882)
It is rendering using the 2D canvas API. There's a device context class (wxDC) for each wxWidgets port that implements primitive drawing ops (DrawLine, DrawText, etc). For the WASM port, I created a glue library in javascript [1] that wxDC calls into for each primitive.

[1] https://github.com/ahilss/wxWidgets-wasm/blob/master/build/w...

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

https://wavvy.app/

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...

( Read More... | 111 comments | 530 points | on HN )
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

For a simple and straightforward FFT implementation, I would recommend taking a look at the Kiss FFT source code. http://sourceforge.net/projects/kissfft/
Re:Google Buying Manhattan Office Building for $1.9 Billion on Friday December 03, 2010 @10:27AM (#1966137)
Regardless of whether the building looks dumpy, the view of Midtown is magnificent: http://picasaweb.google.com/lh/photo/iU0pdqJt5xOtzMhGIbrfbg?...
Re:Startup Ideas Every Nerd Has (That Never Work) on Tuesday November 30, 2010 @03:23PM (#1955443)
And another: Algorithm to predict football scores.
I believe they are using a non-standard crossover operator in this implementation. A standard crossover operator will generate some permutation of the genes of the two parents: either you inherit the gene from your mother or your father. This implementation creates a new gene that is a weighted average of the genes of the two parents. This will probably cause rapid convergence of the gene pool, which may or may not be intended. Changing Math.random() to Math.round(Math.random()) in crossVars would change this to the standard crossover operator. I'd be interested to see how this affects performance.
Re:Your competitors Twitter followers = your next contact list on Saturday November 20, 2010 @11:06AM (#1924677)
I would target people who are not completely satisfied with the competitor's product. If I see people tweeting competitors asking for feature X, where my product already has X, I will send them a message.
Re:A Google Interviewing Story on Saturday November 20, 2010 @01:02AM (#1923975)
I haven’t tried a Bloom filter, but I think for my application, the simple bit array might give better performance. The nice thing about the bit array is it works great on the worst-case. After the user has typed in 3 or 4 characters of their query, the search space has been narrowed enough where the performance isn't an issue. It’s that first or second character when the search space is large that gives problems. Using the bit array in the single character case, the 1 to 1 mapping of characters to bits gives the result directly.
Re:A Google Interviewing Story on Friday November 19, 2010 @08:16PM (#1923495)
I recently used this algorithm for speeding up an iTunes style search function. Originally I did a strstr over every item in the database, but it wasn't quite fast enough. I precomputed a 32-bit mask - 1 bit per alphabetic char, 5 bits per digits, and the last bit for special characters - for every database item, and used that as an initial search filter. I only needed to use the more costly strstr on items that made it through this filter.