Kuuntele miksausta samalla kuin luet?

DJ USB T[ool]kit

Arvioitu lukuaika 5 min
Luotu: 11.3.2026, 11:41 - Päivitetty: 1.9.2026, 20:01
Tehty: 30.6.2026, 11:40

Yleiskatsaus#

DJ USB T[ool]kit on paikallisesti toimiva työpöytäsovellus, jolla valmistellaan DJ-USB-tikkuja CDJ/XDJ-soittimille. Se on aito vaihtoehto Rekordboxille Linuxilla, ja kevyempi, tili- ja pilvivapaa vaihtoehto myös macOS:llä ja Windowsilla. Sovellus hallitsee paikallista musiikkikirjastoa, rakentaa soittolistoja, analysoi kappaleita sekä vie ja korjaa CDJ-yhteensopivia USB-tikkuja, kaikki ilman internet-yhteyttä.

DJ USB tkit käyttöliittymä DJ USB tkit käyttöliittymä

Miten se toimii#

Ydintyönkulku on rakennettu nopeaa valmistelua varten, ei koko kirjaston läpikäyntiä:

  1. Osoita sovellukselle musiikkikansiot. Indeksointi on nopeaa ja perustuu vain metadataan, joten kappaleet ilmestyvät kirjastoon heti.
  2. Rakenna tai päivitä soittolista, jota tarvitset illan keikkaa varten.
  3. Aja "Analysoi puuttuvat kappaleet", joka analysoi vain kyseisen soittolistan analysoimattomat kappaleet, ei koko kirjastoa.
  4. Vie tikulle, kun puuttuvien analyysien määrä on nolla.

Analyysi ajetaan taustalla erissä, ja käyttöliittymä päivittää jokaisen kappalerivin sitä mukaa kun BPM, sävellaji, aaltomuoto ja kansikuva valmistuvat, joten koko kirjaston ajoa ei tarvitse odottaa ennen kuin työskentely voi jatkua.

Ominaisuudet tarkemmin#

Kirjaston skannaus ja analyysi#

Skannaus ja analyysi on tietoisesti eriytetty kahdeksi vaiheeksi. Skannaus on I/O-sidonnaista ja pidetään maltillisena, jotta suuret kirjastot pysyvät vakaina; analyysi on CPU-sidonnaista ja käyttää rinnakkaista työjonoa läpimenon parantamiseksi. BPM- ja sävellajitunnistus käyttää oletuksena natiivia Rust-moottoria, joka ei vaadi mitään erillistä ajoympäristöä. Vaihtoehtoinen tunnistusmoottori voidaan ladata sovelluksen sisältä Asetuksista, jos haluaa kokeilla toista tunnistustapaa. Aaltomuodot lasketaan aina natiivilla Rust-koodilla, kahdessa resoluutiossa: kevyt esikatselu käyttöliittymää varten ja tarkempi versio CDJ:n yksityiskohtaista aaltomuotonäkymää varten. Vialliset tai purkukelvottomat tiedostot raportoidaan ja ohitetaan sen sijaan, että koko erä keskeytyisi.

Soittolistat ja natiivi soitto#

Soittolistat ovat järjestettyjä, vakaita listoja, joiden järjestys perustuu erilliseen sijaintitietoon, joten kappaleet eivät sekoitu järjestyksestä lisättäessä tai poistettaessa. Soitto on taustajärjestelmän ohjaamaa ja lähdetietoinen: tuoduilta USB-tikuilta tulevien kappaleiden kohdalla sovellus korvaa tikun tiedoston paikallisella vain, jos identiteetti voidaan varmistaa, ja muuten soitto jatkuu suoraan tikulta. Näin vältetään tyypillinen virhe, jossa löysä tiedostonimen perusteella tehty täsmäytys soittaisi vahingossa väärän tiedoston.

USB-tuonti#

Tuonti lukee ja yhdistää tietoa soittimen tietokannasta, kirjaston tietokannasta ja sietää puutteellista tai vioittunutta metadataa. Suurilla tikuilla tuonti lataa ensin vain metadatan: soittolistat ja kappalelistat ilmestyvät heti, ja raskaammat tiedot kuten aaltomuotoesikatselut ja kansikuvat haetaan kappalekohtaisesti vasta kun ne todella avataan.

USB-vienti#

Vienti tukee kahta synkronointitilaa: peilaustilaa, jossa tikun soittolistan sisältö vastaa tarkalleen paikallista soittolistaa, ja lisäävää tilaa, jossa puuttuvat kappaleet lisätään ja olemassa oleviin soittolistan biiseihin ei kosketa. Molemmat toimivat vain kyseisen soittolistan sisällä, joten muut tikun soittolistat pysyvät koskemattomina. Ennen kirjoitusta soittimen ja kirjaston tietokannat varmuuskopioidaan aikaleimalla tikun omaan varmuuskopiokansioon, joten epäonnistuneesta viennistä voi palata takaisin. Konepellin alla vienti päivittää olemassa olevaa soittimen tietokantaa paikan päällä sen sijaan, että se rakentaisi tiedoston uudelleen staattisesta pohjasta: olemassa olevat sivut, tombstone-rivit ja taulurakenteen topologia säilyvät, ja jos pyydettyä muutosta ei voida tehdä turvallisena paikallaan-päivityksenä, kirjoitus epäonnistuu ennen tallennusta sen sijaan, että syntyisi soittimelle rikkinäinen tiedosto. Saman soittolistan uudelleenvienti on deterministinen eikä tuota kaksoiskappaleita.

Diagnostiikka ja korjaukset#

Diagnostiikka ja tiukka parity-tarkistus ovat eri asioita. Yksi raportti vastaa kysymykseen "toimiiko tämä tikku": tietokantojen eheys, soittolistojen ratkeaminen, analyysi- ja mediapolkujen olemassaolo. Tiukempi raportti vastaa vaativampaan kysymykseen: täsmäävätkö tikun kaksi tietokantaa jokaisen kentän ja järjestyksen osalta, ilman orpoja tai kaksoisrivejä? Tikku voi olla täysin toimiva laitteistolla mutta silti epäonnistua tässä tiukassa tarkistuksessa, ja sovellus kertoo kumpaa tulosta kulloinkin katsotaan. Korjaukset ajetaan aina ensin esikatselutilassa, jossa raportoidaan ehdotetut korjaukset ja arvioidut kirjoitukset/poistot, ennen kuin mitään sovelletaan. Tietokannoista otetaan varmuuskopio ennen korjauskirjoituksia, ja korjauskatalogi kattaa kaiken soittolistojen parity-yhdistämisestä yksityiskohtaisiin tietokannan sivumuoto- ja footer-tavukorjauksiin, joita todellisista vienneistä on havaittu tarpeelliseksi.

Testattu oikealla laitteistolla#

Automaattitestien lisäksi vienti- ja tiukka-parity-korjaustulosteet on validoitu fyysisillä CDJ-2000NXS2- ja CDJ-3000-laitteilla: USB:n tunnistus, tietokannan mountaus, soittolistojen selaus, kappaleiden lataus ja soiton käynnistys on kaikki vahvistettu toimivaksi päästä päähän, myös tiukan parity-korjauksen jälkeen.

Teknologia#

Toteutettu Rustilla ja Taurilla, käyttöliittymä on vanilla HTML/JS/CSS ilman frameworkeja. Paikallinen kirjastodata tallennetaan SQLite:en. USB-luku ja -kirjoitus kohdistuu CDJ-soittimen binäärimuotoiseen tietokantaan ja sen rinnakkaiseen kirjastotietokantaan, molemmat toteutettu avoimen yhteisön takaisinmallinnettujen määrittelyjen pohjalta, ja tuonnissa voidaan lisäksi ristiviitata Rekordboxin omaan master-tietokantaan.

Tila ja saatavuus#

Julkaistu (v0.1.0), lähdekoodi avoin MIT-lisenssillä. Valmiit asennuspaketit tarjolla Linuxille (deb/rpm/appimage), macOS:lle ja Windowsille. Sovellus toimii täysin ilman Node.js:ää, kun käytetään valmiiksi käännettyjä binäärejä ja oletusanalyysimoottoria; Node tarvitaan vain lähdekoodista kääntämiseen tai valinnaisen vaihtoehtoisen analyysimoottorin käyttöön. Ylläpidetään aktiivisesti, ja automatisoitu testikattavuus kattaa niin backendin kuin frontendin skannauksen, analyysin, soittolistat, soiton, tuonnin, viennin sekä diagnostiikan ja korjaukset. Lähdekoodi ja lataukset GitHubissa; lahjoitukset tuettu projektin sivuston kautta.

Lataa & lahjoita#

DJ USB T[ool]Kit Githubissa

DJ USB T[ool]Kit lahjoitukset

Saatat myös pitää

tokyologo-nettisivut-b.jpg tokyologo-nettisivut-b.jpg
Projektit

Tokyo.fi

video.jpg video.jpg
Taide

Jammailua Petteri Sariolan kanssa

Screenshot 2025-09-14 at 16-14-28 VILD – Sound Music Voices.png Screenshot 2025-09-14 at 16-14-28 VILD – Sound Music Voices.png
Projektit

Perinteisestä moderniin: VILDn teknologinen kehitys