I cue sheet, e i rip che si comportano da album
Se hai rippato CD prima che dividere fosse la norma, una fetta della tua libreria è un FLAC per disco con accanto un file di testo. La maggior parte dei lettori o ignora lo sheet o tratta quello che descrive come roba di serie B. Ecco cosa ne fa rox.
Cos'è davvero un rip cue
Un file audio che contiene un disco intero, e uno sheet .cue che elenca dove comincia ogni brano. È il modo accurato di conservare un CD, perché le pause tra i brani fanno parte del disco e dividere le butta via. È anche il formato che rompe l'assunto su cui è costruita ogni libreria musicale, cioè che un file è una traccia.
I lettori lo risolvono in uno di tre modi. Ignorare lo sheet e mostrare un brano da settanta minuti. Mostrare i brani dello sheet ma tenerli separati dalla libreria vera, così ricerca, ordinamento e playlist si comportano diversamente per loro. Oppure rendere la rottura reale e assorbirla una volta per tutte.
Righe vere, non frammenti
rox indicizza ogni segmento dello sheet come una normale riga della libreria, identificata dal suo file più il numero di traccia. Tutto quello che viene dopo la legge come una traccia, perché per tutto quello che viene dopo lo è. Le playlist la fotografano, gli ascolti ci si agganciano, la ricerca la trova, le colonne di ordinamento la ordinano, e nessuna di queste sa che undici righe puntano allo stesso FLAC.
L'alternativa che sceglie la maggior parte delle implementazioni è un percorso sintetico, album.flac#3, che tiene ordinato il database e sposta il problema su ogni pezzo di codice che aprirà quel percorso più tardi. Un suffisso non rimosso lì è un bug silenzioso che legge byte di tag dal nulla. Una libreria senza cue sheet non paga niente di tutto questo: i segmenti vivono in una tabella a parte, e sui percorsi caldi non li legge nessuno.
Riprodurre un segmento come un file
Il motore tratta un segmento come il mondo intero per quella traccia: un seek preciso al suo inizio, un taglio al campione su entrambi i bordi, e un confine di fine che prende la stessa strada di una vera fine di file. La riproduzione senza stacchi, la dissolvenza incrociata, lo stop dopo il brano corrente e la ripetizione funzionano tutti senza sapere che i segmenti esistano.
Il taglio in testa è il dettaglio che conta. Un seek preciso atterra su un confine di pacchetto invece che sul campione esatto, quindi senza scartare i frame tra l'atterraggio e l'inizio del segmento ogni brano si apre sulla coda di quello prima. È il suono di un'implementazione cue che nessuno ha finito.
I brani consecutivi di un rip condividono un gruppo album, ed è questo che impedisce alla dissolvenza incrociata di sfumare sopra gli attacchi senza stacchi del disco stesso. Un rip suona come il disco da cui è stato tratto.
La scansione, e il diritto di cambiare idea
Lo sheet rivendica la sua immagine. Finché un cue elenca un file, quel file non ottiene una riga sua, quindi non ti ritrovi con undici tracce più un doppione da settanta minuti. L'aggiornamento si basa su quale dei due è stato modificato per ultimo, quindi modificare lo sheet o l'audio ritaglia il rip alla scansione successiva. Cancella lo sheet e l'immagine si richiude in una sola riga semplice.
I metadati preferiscono lo sheet e ricadono sui tag dell'immagine. Gli sheet scritti prima che esistesse la disciplina UTF-8 ottengono un ripiego cp1252, perché i vecchi rip sono esattamente la popolazione per cui questa funzione esiste.
Voti che non timbrano tutto il disco
rox normalmente scrive i voti nei file stessi, che è la scelta giusta finché un file è una traccia. Su un rip cue non lo è: l'immagine appartiene a tutte e undici le tracce, quindi una scrittura per traccia timbrerebbe ognuna con le stesse stelle.
Per queste righe lo scrittore rifiuta la parte su file e il database tiene il valore. Lo stesso per le modifiche ai tag. Ottieni voti per traccia su un rip, e la tua immagine ne esce identica byte per byte.
Le parti che noteresti solo dopo
- L'esportazione m3u scrive i segmenti come
path#N, e l'importazione preferisce una corrispondenza esatta di percorso, quindi un elenco fa andata e ritorno attraverso altri software senza collassare sull'immagine. - Lo scrobbling e il brano in riproduzione deduplicano sulla coppia, quindi le undici tracce di un disco si scrobblano come undici tracce e non come una molto lunga.
- Gli ascolti si riagganciano per segmento dopo una nuova scansione, quindi un disco conserva la sua cronologia di riproduzione per traccia anche quando ogni segmento porta tag identici.
- Passa solo la coppia album dei valori ReplayGain. I valori per traccia scritti contro un'immagine di disco intero descrivono il disco, quindi vengono ignorati invece che creduti.
La misura di tutto questo non è se un rip si riproduce. È se, un mese dopo, qualcosa nella libreria si comporta ancora diversamente perché veniva da un'immagine.
Puntalo sullo scaffale che non hai mai diviso
Lo scanner raccoglie gli sheet già alla prima passata, insieme a tutto il resto. Altro su cosa si rompe alle dimensioni di una libreria.