Ich sammle Musik: Ich kaufe CDs, digitalisiere sie mit
Exact Audio Copy und scanne Cover und Beilagen. Manchmal ist es nicht einfach, wenn die CD vor 10 Jahren in einer limitierten Auflage im Ausland veröffentlicht wurde. Das Schwierigste ist, wenn die CD einen Herstellungsfehler aufweist - und einige Titel nicht gelesen werden können.
Altneulands Klavierarrangement-Album
帰 る べ き 城 wurde 2005 veröffentlicht. Ich fand es drei Jahre später (wahrscheinlich auf YouTube), lud das beste Exemplar herunter - und setzte es auf die Liste der zukünftigen Einkäufe. Die jüngsten Fortschritte in der internationalen Mail-Technologie haben es im vergangenen Jahr ermöglicht, eine gebrauchte Festplatte zu kaufen. Leider konnte keines meiner CD-Laufwerke Titel 3 lesen. Dies passiert häufig beim Kauf alter Discs, insbesondere wenn sie das internationale USPS-Versandzentrum durchlaufen haben. Ich legte es beiseite und suchte nach einem anderen Exemplar, das ich letzten Monat gefunden hatte. Er kam am Freitag an - und ich versuchte sofort, ihn zu zerreißen. Aber mit
genau dem gleichen Fehler gedrückt. Es scheint, dass dies keine Frage von Verschleiß oder Beschädigung ist - die Disc ist wahrscheinlich direkt ab Werk defekt herausgekommen.
ZUSATZ: Nach der Untersuchung glaube ich nicht mehr, dass dies ein Fabrikfehler ist. Wenn ich den Anfang oder das Ende eines fehlerhaften Titels auf eine leere CD-R schreibe und kopiere, erzeugt der Ripper den gleichen Fehler! Probieren Sie es selbst mit der Datei
minimal.flac aus .
Es gibt noch zwei Möglichkeiten: Versuchen Sie entweder eines Tages, eine andere Kopie zu finden, die erfolgreich kopiert wird (unwahrscheinlich), oder stellen Sie die ursprünglichen Sounddaten von beschädigten Festplatten wieder her. Sie wissen bereits, welche Option ich gewählt habe.
Wie Ripper funktioniert
EAC konnte Titel Nr. 3 nicht von Disc [帰 る べ き 城] lesen.CDs speichern digitale Daten, es gibt jedoch eine vollständig analoge Schnittstelle zwischen Discs, Lasern und optischen Dioden. Lesefehler treten aus verschiedenen Gründen auf: verschmutzte Medien, Kratzer auf der Schutzschicht aus Polycarbonat, Vibrationen des Laufwerks. Primitive Fehlerkorrekturcodes im
CDDA-Standard tragen dazu bei, die Klangverzerrung auf selten verwendeten Discs zu minimieren, können jedoch den Bitstrom auf einer CD mit einer großen Anzahl von Fehlern nicht vollständig wiederherstellen. Moderne Ripper lösen das Problem mit zwei wichtigen Methoden zur Fehlererkennung: redundantes Lesen und AccurateRip.
Auf der Seite
EAC: Extraktionstechnologie wird beschrieben, wie die EAC redundante Lesevorgänge erzeugt:
Im abgesicherten Modus liest das Programm jeden Sektor mindestens zweimal [...] Wenn ein Fehler auftritt (Lesen oder Synchronisieren), liest das Programm diesen Sektor weiter, bis 8 von 16 Versuchen identisch sind. Ein solches Verfahren wird höchstens einmal, drei- oder fünfmal durchgeführt (entsprechend der gewählten Qualität der Fehlerbehebung). Im schlimmsten Fall werden schlechte Sektoren 82 Mal gelesen!
Alles ist einfach. Wenn eine Leseanforderung manchmal falsche Daten zurückgibt, lesen Sie sie erneut und seien Sie dann besonders vorsichtig, wenn die ersten beiden Lesevorgänge unterschiedliche Ergebnisse liefern.
AccurateRip verwendet dasselbe Prinzip, jedoch auf verteilte Weise: Ripper senden Prüfsummen kopierter Audiodateien an diesen Dienst. Die Idee ist, dass wenn tausend Leute einen Track mit den gleichen Bits kopieren, dies wahrscheinlich der richtige Rip ist.
In diesem Artikel erfahren Sie, was zu tun ist, wenn beide Methoden nicht helfen können. EAC liefert kein Ergebnis, wenn jeder Messwert unterschiedliche Daten zurückgibt, und in der AccurateRip-Datenbank gibt es nur einen Datensatz über eine seltene Festplatte
[1] .
"Ich habe zehntausend Passagen passiert, zehntausend Passagen, um dich zu sehen"
Optische Laufwerke Asus, LG, Lite-On, Pioneer und unbekannter OEMWenn die CD nicht kopiert wird, ist es logisch, ein anderes Laufwerk zu verwenden. Manchmal ist ein bestimmtes Modell den CDDA-Spezifikationen herablassender, oder es gibt eine bessere Firmware zum Beheben von Fehlern oder etwas anderes. Das DBpoweramp-Forum verfügt über
eine Genauigkeitsbewertung für
CD / DVD-Laufwerke , um das am besten geeignete Rip-Laufwerk auszuwählen.
Am Samstagmorgen kaufte ich fünf neue CD-Laufwerke von verschiedenen Herstellern
[2] Ich habe sie alle ausprobiert - und eine gefunden, die die Synchronisation auf einem Beat-Track aufrechterhalten konnte. Leider konnte keine Rip-Bestätigung erhalten werden - zwischen allen Rips befanden sich ungefähr 20.000 verschiedene Bytes.
Aber jetzt hatte ich WAV-Dateien auf der Festplatte, und Sie können davon profitieren. Ich bin zu dem Schluss gekommen, dass Lesefehler auf einer schlechten Spur in der Nähe der „richtigen“ liegen. Daher ist es sinnvoll, mehrere Rips zu erstellen und einen "Konsens" -Wert für instabile Bytes zu finden. Dieser Ansatz war letztendlich erfolgreich, erforderte aber viel mehr Arbeit als ich erwartet hatte.
"Quantität geht in Qualität"
Ich begann damit, die Festplatte wiederholt auf eines der Laufwerke zu kopieren, alle Werte für jedes Byte zu schreiben und den Fehler als "korrigierbar" zu deklarieren, wenn mehr als die Hälfte der Rips einen bestimmten Bytewert für diese Position ergibt. Der Anfang war gut: Die Anzahl der nicht korrigierbaren Fehler verringerte sich von fast ~ 6900 Bytes bei N = 4 auf ~ 5000 Bytes bei N = 10. Der Nutzen jedes zusätzlichen Risses nahm mit der Zeit ab, bis sich die Anzahl der nicht korrigierbaren Fehler bei etwa N = 80 bei ~ 3700 stabilisierte. Ich hörte bei N = 100 auf zu rippen.
Behobene und schwerwiegende Fehler bei der Anzahl der RipsDann habe ich 100 Mal versucht, die Festplatte auf das zweite Laufwerk zu kopieren und mit zwei Korrekturkarten die nicht korrigierbaren Fehlerpositionen des ersten Laufwerks zu „füllen“. Aber es hat nicht funktioniert: Auf jedem Laufwerk gab es Tausende von Korrekturen, die nicht den Korrekturen auf dem anderen entsprachen! Es stellt sich heraus, dass Rauschen nicht durch Kombination mit einer anderen, aber verwandten Rauschquelle beseitigt werden kann.
Das Gleiche, aber für zwei Cross-Validating-DiscsHandwerkliche Kunst

Auf der EAC-Website gibt es eine weitere gute Ressource: den
DAE-Qualitätstest , bei dem die Qualität der Firmware eines Laufwerks anhand der Anzahl der zu behebenden Fehler ermittelt wird. Dies ist eine Fehlerbehandlung auf niedrigerer Ebene, wenn das Laufwerk Lesefehler korrigiert und nicht nur meldet. Der Haken ist, dass der „abgesicherte Modus“ der EAC nur verfügbar ist, wenn Sie diesen integrierten Fehlerkorrekturcode deaktivieren, was darauf hindeutet, dass er nicht richtig funktioniert.
Ich bereitete den Test vor, indem ich die WAV-Datei auf CD-R brannte, den genauen Sektor auf der Datenoberfläche hervorhob und ihn sorgfältig mit einem schwarzen Marker malte. Dies sind garantiert schwerwiegende Fehler in einem deterministischen Muster.
Ich habe alle Laufwerke getestet und zwei interessante Ergebnisse erzielt:

Ich habe das Lite-On-Laufwerk verwendet, um Synchronisierungsfehler zu umgehen. Er kaute vor Vergnügen auf dem magischen Marker, war aber durch die geraden Linien auf der Datenoberfläche sehr verwirrt. Sie können sehen, dass anstelle von drei separaten Gipfeln rechts ein riesiger fehlgeschlagener Blob angezeigt wird.
Errors total Num : 206645159
Errors (Loudness) Num : 965075 - Avg : -21.7 dB(A) - Max : -5.5 dB(A)
Error Muting Num : 154153 - Avg : 99.1 Samples - Max : 3584 Samples
Skips Num : 103 - Avg : 417.3 Samples - Max : 2939 Samples
Total Test Result : 45.3 points (of 100.0 maximum)

Das Pioneer-Laufwerk erhielt die höchste DAE-Punktzahl. Meiner Meinung nach sieht das Diagramm nicht besonders aus, aber das Analysetool sagte, dass dies die beste Firmware zur Behebung von Fehlern in meinem kleinen Satz ist.
Errors total Num : 2331952
Errors (Loudness) Num : 147286 - Avg : -77.2 dB(A) - Max : -13.2 dB(A)
Error Muting Num : 8468 - Avg : 1.5 Samples - Max : 273 Samples
Skips Num : 50 - Avg : 6.5 Samples - Max : 30 Samples
Total Test Result : 62.7 points (of 100.0 maximum)
"Ab einem bestimmten Moment sind Zahlen wichtig"
Wie verwende ich die Pioneer-Firmware mit guter Fehlerkorrektur, wenn die EAC im abgesicherten Modus diese ignoriert? Ganz einfach: Schalten Sie die EAC in den „Burst-Modus“ und schreiben Sie den Bitstrom in der Form auf die Festplatte, in der die Firmware ihn meldet. Wie kann man dann aus dieser Gruppe nicht verifizierter WAV-Dateien eine Datei von guter Qualität machen, wie im "abgesicherten Modus"? Ja, dasselbe Fehleranalysetool, das wir bei Rips mit Lite-On verwendet haben!
Nach ein paar EAC-Konfigurationseinstellungen und nach hundert Rips erhalten wir ein so schönes Diagramm.
Behobene und nicht korrigierbare Fehler bei der Anzahl der Risse (Pioneer)Was ist zu beachten:
- Schwerwiegende Bitfehler tendieren schnell zu Null, erreichen sie jedoch nie.
- Ein riesiger Sprung in die Fehlerbehebung bei 53-54 Rissen.
- Die Anzahl der Fehler vor und nach diesem großen Sprung ändert sich praktisch nicht, was auf Stabilitätsbereiche in den kopierten Daten hinweist.
0xA595BC09
Mit einer nahezu perfekten Fehlerkorrektur von Pioneer habe ich eine Best-Guess-Datei erstellt und mit Pioneer-Rips verglichen. Wie erwartet wurden mehrere Abschnitte von geringer Qualität entdeckt, die ich durch weitere 10 Risse korrigierte:
$ for RIP_ID in $(seq -w 1 100); do echo -n "rip$RIP_ID: "; cmp -l analysis-out.wav rips-cd1-pioneer/rip${RIP_ID}/*.wav | wc -l ; done | sort -rgk2 | head -n 10
rip054: 2865
rip099: 974
rip007: 533
rip037: 452
rip042: 438
rip035: 404
rip006: 392
rip059: 381
rip043: 327
rip014: 323
Ich fand auch etwas wirklich Interessantes: Mehrere Rips produzierten
genau den gleichen Inhalt! Denken Sie daran, dass dies genau das Erfolgskriterium für die EAC im "abgesicherten Modus" ist.
shncat -q -e | rhash --print="%C"
Befehl
shncat -q -e | rhash --print="%C"
shncat -q -e | rhash --print="%C"
verwendet, um die CRC32-Prüfsumme der Audio-Rohdaten zu berechnen
shncat -q -e | rhash --print="%C"
wird von der EAC verwendet.
$ for wav in rips-cd1-pioneer/*/*.wav; do shncat "$wav" -q -e | rhash --printf="%C $wav\n" - ; done | sort -k1
[...]
9DD05FFF rips-cd1-pioneer/rip059/rip.wav
9F8D1B53 rips-cd1-pioneer/rip072/rip.wav
A2EA0283 rips-cd1-pioneer/rip082/rip.wav
A595BC09 rips-cd1-pioneer/rip021/rip.wav
A595BC09 rips-cd1-pioneer/rip022/rip.wav
A595BC09 rips-cd1-pioneer/rip023/rip.wav
A595BC09 rips-cd1-pioneer/rip024/rip.wav
A595BC09 rips-cd1-pioneer/rip025/rip.wav
A595BC09 rips-cd1-pioneer/rip026/rip.wav
A595BC09 rips-cd1-pioneer/rip027/rip.wav
A595BC09 rips-cd1-pioneer/rip028/rip.wav
A595BC09 rips-cd1-pioneer/rip030/rip.wav
A595BC09 rips-cd1-pioneer/rip031/rip.wav
A595BC09 rips-cd1-pioneer/rip040/rip.wav
A595BC09 rips-cd1-pioneer/rip055/rip.wav
A595BC09 rips-cd1-pioneer/rip058/rip.wav
AA3B5929 rips-cd1-pioneer/rip043/rip.wav
ABAAE784 rips-cd1-pioneer/rip033/rip.wav
[...]
Durch wiederholtes Zerreißen von Abschnitten mit geringer Qualität konnten wir die Analyse ohne schwerwiegende Fehler abschließen. Und als ich diese Datei überprüfte, gab es genau den gleichen Audioinhalt wie beim "normalen" Rippen! Dies reicht aus, um den Sieg zu erklären.
Ich bin zu 99% sicher, dass ich diese problematische CD erfolgreich kopiert habe, und 0xA595BC09 ist der richtige CRC-Betrag für Titel 3.
Anhang A: vergleich.rs
Ich habe dieses Tool verwendet, um wahrscheinliche Bytefehler zu berechnen. Es ist nicht für den Langzeitgebrauch gedacht, daher ist es etwas hässlich, aber es kann für diejenigen interessant sein, die auf diese Seite gestoßen sind und das gleiche Problem gelöst haben.
extern crate memmap; use std::cmp; use std::collections::HashMap; use std::env; use std::fs; use std::sync; use std::sync::mpsc; use std::thread; use memmap::Mmap; const CHUNK_SIZE: usize = 1 << 20; fn suspect_positions( mmaps: &HashMap<String, Mmap>, start_idx: usize, end_idx: usize, ) -> Vec<usize> { let mut positions = Vec::new(); for ii in start_idx..end_idx { let mut first = true; let mut byte: u8 = 0; for (_file_name, file_content) in mmaps { if first { byte = file_content[ii]; first = false; } else if byte != file_content[ii] { positions.push(ii); break; } } } positions } fn main() { let mut args: Vec<String> = env::args().collect(); args.remove(0); let mut first = true; let mut size: usize = 0; let mut files: Vec<fs::File> = Vec::new(); let mut mmaps: HashMap<String, Mmap> = HashMap::new(); for filename in args { let mut file = fs::File::open(&filename).unwrap(); files.push(file); let mmap = unsafe { Mmap::map(files.last().unwrap()).unwrap() }; if first { first = false; size = mmap.len(); } else { assert!(size == mmap.len()); } mmaps.insert(filename, mmap); } let (suspects_tx, suspects_rx) = mpsc::channel(); let mut start_idx = 0; let mmaps_ref = sync::Arc::new(mmaps); loop { let t_start_idx = start_idx; let t_end_idx = cmp::min(start_idx + CHUNK_SIZE, size); if start_idx == t_end_idx { break; } let mmaps_ref = mmaps_ref.clone(); let suspects_tx = suspects_tx.clone(); thread::spawn(move || { let suspects = suspect_positions(mmaps_ref.as_ref(), t_start_idx, t_end_idx); suspects_tx.send(suspects).unwrap(); }); start_idx = t_end_idx; } drop(suspects_tx); let mut suspects: Vec<usize> = Vec::with_capacity(size); for mut suspects_chunk in suspects_rx { suspects.append(&mut suspects_chunk); } suspects.sort(); println!("{{\"files\": ["); let mut first_file = true; for (file_name, file_content) in mmaps_ref.iter() { let file_comma = if first_file { "" } else { "," }; first_file = false; println!("{}{{\"name\": \"{}\", \"suspect_bytes\": [", file_comma, file_name); for (ii, position) in suspects.iter().enumerate() { let comma = if ii == suspects.len() - 1 { "" } else { "," }; println!("[{}, {}]{}", position, file_content[*position], comma); } println!("]}}"); } println!("]}}"); }
1.
In diesem einzelnen AccurateRip-Datensatz stimmt die CRC für alle Titel mit Ausnahme von Titel 3 mit meiner Disc überein: Die Summe ist 0x84B9DD1A, und ich habe 0xA595BC09. Ich vermute, dass der Ripper nicht verstanden hat, dass er einen schlechten Antrieb hat.
[zurück]2.
Die offensichtliche Frage beim Kauf eines CD- oder DVD-Laufwerks im Jahr 2018 lautet: „Verdammt, wo kann ich sie kaufen?“ Und ich brauchte nicht eine, sondern
mehrere von
verschiedenen Marken . Ich kenne nur ein Geschäft in der Nähe, in dem 5,25-Zoll-DVD-Laufwerke verfügbar sind. Nur ein Geschäft ist groß genug, um den Regalplatz für solche Laufwerke nicht zu bereuen, und seltsam genug, um dort nicht fehl am Platz zu sein. Natürlich, ich über Frys Electronics sprechen.
[zurück]