r/linuxaudio • • 3d ago

Browser-based open-source DJ mixer for Linux and Chromebooks. Looking for audio-DSP help with key-lock.

Post image

Spindle DJ runs in Chrome and installs on Debian and Ubuntu as a .deb. Its DSP is written as small self-contained modules that are easy to test and could later be ported to Rust for a native PipeWire/JACK edition.

The biggest open problem is pitch-preserving time-stretch (key-lock) inside an AudioWorklet on low-end hardware. If you've implemented WSOLA or a phase vocoder, I'd value your input.

Code: https://github.com/mjpredator403-ship-it/spindle-dj .deb download: https://github.com/mjpredator403-ship-it/spindle-dj/releases/latest

Full transparency: I designed and directed this, and built it with an AI coding assistant. Every feature is covered by automated tests that measure the actual audio output.

26 Upvotes

18 comments sorted by

9

u/anne-so 3d ago

whats the point of your app when we have mixxx that is already working?

1

u/Skinkie 3d ago

Can't be installed on a Chromebook with only a browser?

1

u/anne-so 1d ago

why not just porting mixxx to chromebook, using it inside a browser doesnt seem memory efficient but what do i know. think people should join forces to make mixxx better

1

u/Skinkie 1d ago

Porting to Android or webassembly?

1

u/anne-so 1d ago

There is a tentative to port mixxx on android that needs testing. You can have a look there if interested Release Mixxx Preview (unofficial) 0.1.0-preview.1 · Infinite-Grok/mixxx · GitHub Should be more advanced than OP example (with proper time stretching algo etc etc). Not denying OP's work in any way but would rather join forces on mixxx as mentionned before

1

u/_stoob 2d ago

Not that I'm advocating for this piece of software, but Mixxx doesn't have bar indicies on the waveform. It has beat indicies but bars arent marked any differently than beats. I expect there to be a heavier mark on a bar but it's simply not there. They've also said it's not a planned feature since "not everything is 4/4 so it isn't important". I can't use Mixxx because I use bar indices for phrasing properly.

3

u/Accomplished_Dot4192 2d ago

this looks neat, but please make sure you understand the programing, or at least consult a programmer and ask them if they would be as kind to try spot out any bugs

6

u/deaddyfreddy 3d ago

built it with an AI coding assistant

no way! /s

5

u/StonedPhysicist 3d ago

Yay more slop.

-2

u/Wide-Gur8964 2d ago

Probably shouldn't use reddit then, devs are using ai to assist in coding

1

u/grandmastermoth 2d ago

I'm not against this but why oh why build it in the browser? You want rust or c++ for respons8ve real-time audio

2

u/titaniusanglesmith1 2d ago

It was a quick and easy was for my son to have something to practice on that achieved this function while not needing any additional resource. He has an old Chromebook with limited hard-disk and memory expansion options. I built it this way so that the community is able to contribute and improve upon this present version.

1

u/grandmastermoth 1d ago

That's a valid use!

1

u/javiercplusmax 1d ago

realtime en navegador es medio xd...

dependería mas del sistema en este caso que ya tenga las optimizacions rt activadas en el kernel... o que lance dicha aplicación con pw-jack lo cual no creo que lo tenga la Chromebook

1

u/danja 2d ago

For time stretching I got pretty good results with a VST by passing this paper to Claude : https://github.com/heavylight-industries/dafx26-paper

Incidentally, on the offchance it might be suitable for your kit, I've been working on a Web-native plugin format : https://danja.github.io/jigdaw/

1

u/VlrmPrjct 1d ago

I don't understand why Linux and Chromebooks are specifically mentioned when “browser” means that it runs on any platform. So it's cross-platform.

1

u/titaniusanglesmith1 1d ago

Correct, it was designed with the limitations of my Chromebook in mind. But now works across all platforms that we’ve tried it on, as long as you have a Chrome Browser installed.