A work in progress, DJ mixing webapp with streaming support, where the UI runs on your browser.

- To load a track into a player, drag & drop the track or select the track and click the
button. You can also use
Shift+Ctrl+AorShift+Ctrl+Bkeys on your keyboard to load a track into the A or B player, respectively. - Click the
button to start playing.
- Click the
button to stop playback and move to the beginning of the track.
- Click the
button to define a cue point. At this moment, only one cue point can be defined, and it will always snap to the nearest beat marker.
- Click the
button to jump to the cue point. Leave the button pressed to temporarily play the track from the cue point.
- Click the
button to sync the track to the other player
- Use the
fader to change the volume.
- Use the
fader to change the tempo (BPM).
- Use the Hi/Mid/Low knobs to change the track's equalization.
Right-click over the Eq control to display a menu with several presets from popular mixing consoles. - Use the fader between the two players to cross-fade between them.
- Faders and knobs can be used by clicking and dragging or by moving the mouse over them and using the scroll wheel.
- Use the
and
buttons under the SYNC section to perform small tempo adjustments.
- You can click and drag over both waveforms (synced and full) to change the playback position.
- Search for files in the textbox at the bottom of the files list. The search is recursive.
- Double-click a track in the files list to open the Track Properties dialog.

- Use the Jump and Cue buttons to switch between Loop/Jump and Cue tabs.

- Drag the synced waveform to scratch. Touch and release behavior is under Settings > Playback.
- In Track Properties, the Grid row edits a track's beat grid:
- Edit - drag any beat line onto the audio it belongs on. Hover a beat and click + to pin it as a reference; nothing before a reference can move.
- Auto - measures the track and corrects the grid for you, including the BPM if that was the error. It leaves the track alone when it cannot follow it.
- Reset - undo every grid change.
- Since 2025/11/19 Diyokee supports MIDI controllers. Click the Settings button and scroll down to the MIDI section to select the MIDI device and create a profile for your controller.

- Scratching - drag the synced waveform. Vinyl or bend on touch, inertia or brake on release.
- Flexible beat grid - a track can now hold more than one tempo, so a track that drifts can be gridded end to end. Playback follows the grid, so it stays on the beat.
- Automatic gridding - one button corrects the grid by measuring the track rather than by eye.
- Live audio matrix - output routing changes apply immediately instead of needing a restart.
- Dropbox as a media provider.
- Measure lines on both waveforms, with a toggle for each.
- Settings dialog reorganized into categories.
- VU meters can show only the level being played, rather than that plus the track's own.
- VU beat indicator now follows the track's downbeat instead of the start of the track.
- Track Properties edits no longer reach a loaded deck until you press Save.
- Fixes: searching from a provider's root folder, cue/jump/beat-snap on a paused deck, unavailable drives in the folder browser, ARM Linux detection, and a busy indicator while a folder is being analyzed.
- Pitch/key adjustments don't seem to work on platforms other than Windows
- Accessing shared folders from Linux/macOS appears to be broken - you can still manually type/paste the folder path, but the file browser is lacking support to detect such sources
- A fancy screen for remote connections to the stream
- The settings dialog does not yet support streaming configuration
- Searching is quite limited and a bit buggy
- State preservation is only partially implemented and the way it works sucks
- Making changes to the MIDI profiles or changing the MIDI controller requires restarting the application
- ...and probably many more
| Platform | Architecture | Status | Download | Release Date |
|---|---|---|---|---|
| Windows | x64 | Working | 2026-09-09 | |
| Linux | x64 | Working | 2026-09-09 | |
| Linux | Arm64 | Working | 2026-09-09 | |
| MacOS | x64 | Working1 | 2026-09-09 | |
| MacOS | Arm64 | Working1 | 2026-09-09 |
This project wouldn't have been possible without the following:
- BASS audio library
- AspNetCore.SassCompiler
- BlazorExtensions.Canvas
- Icons8
- Font Awesome
Is there anyone insterested in this? Hello!? Anyone?
Footnotes
-
Before running the program, open a Terminal and change to the directory where you unzipped the file (usually
~/Downloads/diyokee-osx-x64).
Next, run the script:./pre-run.sh.
Now, you can launch the app by double-clicking theDiyokee-serverfile in the Finder or by running./Diyokee-serverfrom the Terminal. ↩ ↩2