 Heute im Vortrag vom Lukas, der uns ein bisschen was über Protokolle von Audio CDs erklär möchte. In tiefster Genauigkeit, ne? Ist ja ein Scientific Talk heute. Genau, und damit ab zu dir. Hallo, also ich bin Lukas und ich erzähle euch heute, wie ein Audio CD eigentlich im Detail funktioniert. Als nativer Titel von dem Vortrag könnte sein, wir bauen uns eine PLL zur Taktrückgewindung in 10 Zeilen Preisen, aber dazu später mehr. Erstmal zu dem, was wir vielleicht noch so kennen von Audio CD. Audio CD ist dieses schöne Seelbe in der Scheibe aus Polycarbonat. Die speichert Audio unkomprimiert, d.h. kein mp3 oder irgendwas ähnliches. Einfach jede Sample wird dadurch auch gespeichert. Die Samples haben eine Auflösung von 16 Bit, d.h. man hat in den vertikalen 65.000 verschiedene Werte, was für Audio-Wiedergabe vollkommen ausrechnet ist und sich eigentlich nicht geändert hat. Und in der Horizontalen hat man eine Abtastrate von 44,1 KHz. D.h. man kann damit Frequenz mit ungefähr 20 KHz reproduzieren, was bei dem menschlichen Gehör entspricht. Auf den Audio CD passen davon ungefähr 74 Minuten. Das Ganze ist auf der CD gespeichert in Form von Pits und Lands. Das sieht man jetzt hier in der Ausschnittvergrößerung. Das sind winzig kleine, das sieht man jetzt hier entsprechend in der Großordnung von Mikrometern. Vertiefungen, Unterhebungen auf der Disc, die entsprechend dicht reflektieren oder nicht. Eine Audio CD gibt es seit Anfang der 80er, wurden da von Sony und Vertiefungen wechselt. Und umso mehr hat es mich überrascht, dass Audio CDs jetzt schon seit fast 50 Jahren gibt. Was trotzdem noch keinen wirklich guten Artikel gab, indem man so von oben so erklärt wurde, was man eigentlich machen muss, um von diesen Pits und Lands zu den PCM-Samples zu kommen, die dann das Audio encoden. Wie so vieles ist auch Audio CD in einem Standard niedergeschrieben. Der heißt jetzt hier AIC 60908. Gibt es in Englisch und Französisch-Spielen-Goal. Gibt es glücklicherweise bei archive.org, wenn man nicht bei einem Verlag Geld dafür einwerfen will. Genau, also hatte ich mir den Standard hergenommen. Man hat bei ein bisschen Wetter festgestellt, okay, es sieht alles machbar aus. Habt ihr mal damit angefangen. Erst mal, wie sieht gleich so ein CD-Player aus? Das ist ein Bild, wie man es vielleicht schon in einigen Erklärungen gesehen hat. Hat unten ein Laser, der leuchtet durch ein bisschen Optik auf die Disc drauf. Und die Disc reflektiert dann das Licht zurück, bis dann schlussendlich auf eine Fotodiode fällt. Und in dem CD-Player hat man dann ein bisschen Elektronik. Die hat das Signal von der Fotodiode dekordiert. Dort hat man den Bitstrom von dem DR-Wandler raus extrahiert. Dann hat man endlich die Musik, die man eigentlich hören will. Das Ganze habe ich jetzt mal ausgeklammert in CD-Player und stattdessen genommen ein Oszilloskop. Da haben wir das Signal von der Fotodiode aufgenommen und dann mit ein bisschen Pfeifen. Das Signal von der Fotodiode dekordiert, also dass man am Ende vom Tag ein kleines Schnipsel Audio hat. Also effektiv das gemacht, was der CD-Player auch macht, halt nur in paar Zeilen Pfeifen statt den Hardware. Und in echt sieht das Ganze dann so aus. Ich habe jetzt hier einen alten DVD-Player genommen, weil der gerade noch rum lag. Und habe dort vom Oszilloskop auf dem Flachbandkabel vom Laufwerk zur Platine alle Pins durchgemessen. Bis ich eine Dienal gefunden hatte, das irgendwie ungefähr nach der Erwartung aussah, die Signal von der Fotodiode haben sollte. Und dann ungefähr für Megasample davon aufgenommen, auf den Oszilloskop als CSV gespeichert und in Pfeifen reingeladen. Und ab da fängt der ganze Spaß das richtig an. Das sieht dann nämlich jetzt in der starken Oschenvergesserung so aus. Sieht ja schon, das Signal ist ja so ungefähr schon binär. Das heißt, man hat klar definiert eine 0 und 1 Pegel. Das erste Schritt ist jetzt erstmal wirklich daraus eine ordentliche 1 zu machen. Da wäre jetzt so der naive Ansatz, mit dem einfach die Samples, wie sie sind. Für jede Sample guckt man sich an, groß oder kleiner, 0. Und entscheidet damit, ob das Bit an der Stelle jetzt 0 oder 1 war. Das funktioniert aber hat aber den Nachteil, dass unsere 0-Durchgänge, die wir später noch brauchen werden, nicht mehr an der Stelle sind, wo sie früher mal waren. Jetzt hier geht es jetzt durch die Kreise, zum Beispiel an der ersten Flanke, ist die Flanke, die wir durch die Spellwärtsbildung festgestellt haben, zu spät. Oder manchmal kannst du auch zur Fuß sein. Und das ist eben später hinterlich. Und um das zu umgehen, machen wir es an einem ganz vollen Trick. Einfach das Signal linear interpolieren, wo sie eben auch dargestellt war und seine Shellwärts finden. Und dann hat man auch schon die Flanke an der Stelle, wo sie ungefähr sein sollten in hinreichender Präzision. Damit hätten wir schon mal den ersten Schritt gemacht, nämlich aus dem Anlogensignal, den Signal gemacht, dass in der 0 oder 1 ist. Und das sehen wir jetzt hier. Jetzt wissen wir nur noch nicht, wie waren das jetzt hier drei Einsen, sechs Einsen, vier Einsen oder wo müssen wir überhaupt eingucken, was ist eigentlich unsere Bits waren. Genau, was mir fehlt, ist ein Takt dazu. Der wird auf der CD nämlich explizit gespeichert, aber es gibt in dem Signal ein paar Hinweise darauf, die wir uns zu machen können, um den Takt zurück zu gewinnen. Zum einen ist der minimal Abstand zwischen zwei Flanken, drei Witz. Das heißt, man hat immer mindestens drei konsekutive Einsen oder Nullen. Zwei sind verboten, eins auch. Aber drei oder mehr bis hin zu, glaube ich, fünf oder, ich glaube es, sieben, acht, neun. Also es gibt auch eine Maximalgrenze. Und an jeder Taktflanke, an der Datenflanke muss auch eine Taktflanke gewesen sein, weil die Daten können sich ja nur ändern, wenn auch der Takt sich in der Schnelle geändert hat. Das heißt, was wir jetzt brauchen, als nächstes, ist ein Takt. Den können wir uns digital erzeugen mit einem numerically controlled oscillator. Klingt jetzt erstmal vielleicht nach was kompliziert sind. Effektiv ist es eine Audition und eine Modulorechnung. Kann man sich auch sehr, sehr schön vorstellen auf einem Kreis, in dem ein Zeiger rotiert. Der Kreis wird jetzt hier unterteilt in 1.000 Segmenten. Das heißt, einmal ganz rum, 2B bis 360° sind jetzt 1.000 Schritte. Wir haben unser Frequency Tuning Word, FTW. Und in jedem Zeitschritt wird auf den Winkel des Zeigers das Frequency Tuning Word drauf addiert. Das heißt, damit wird die Auditionsgeschwindigkeit des Zeigers festgelegt und damit auch die Frequenz. Schön ist jetzt an diesem Ansatz, die Frequenz ist exakt proportioniert unter Frequency Tuning Word, was noch später relevant sein wird. Der Fakt, die Umrechnung steht jetzt hier auch auf der Folie drauf. Und das Ganze ist eigentlich sehr einfach, einfach um zu implementieren. Einfach jetzt in der Vorschleife, in jedem Takt Schritt, den Akkumulator, um das Frequency Tuning Word implementieren und modulode Akkumulatorgurse rechnen, um eben diesen Überlauf bei ZOPI zum Beispiel ordentlich zu handhaben. Sehen wir hier, wenn wir unser Frequency Tuning Word kleiner machen, wird auch die Frequenz niedriger, weil wir eben in jedem Schritt weniger weit uns drehen und deshalb mehr Schritte brauchen, um einmal ganz rum zu laufen. Jetzt nehmen wir unser Signal von dem NCO und gucken das uns mal in Zusammenhang mit den Bits an. Jetzt hier dargestellt, das Orangen ist das Signal des NCOs. Und per Konvention machen wir es jetzt so, dass wir immer, wenn der NCO einmal den Rapper round hat, d.h. von Maximum Positiv zu ungefähr 0 zurückschnappen, dort zämpfen wir das Signal und dort, wo der NCO den Mittelblatt hat, hier als 0,5 normiert, dort sollten sich dann die Flanken des Datensignals befinden, dass nämlich die Sample-Zeitpunkte möglichst weit weg von den Flanken sind, d.h. dass wir der maximal robust gegen Störungen sind. Zusätzlich gucken wir uns jetzt noch bei jeder steigenden Flanke des Datensignals, den Wert des Akkumulator an, denn der gibt uns nämlich auskunft darüber, wie genau unser Takt jetzt gerade passt. Und jetzt hier passt es ja recht gut, weil der Wert immer recht nah 0,5 ist. Jetzt gucken wir mal das Ganze mal ein bisschen weiter rausgesucht an und stellen fest, dass diese Phasenfehler sich laufend ändert. Und dann teilweise sogar jetzt hier z.B. in der Nähe 5.000, so schlecht wird, dass wir in der Nähe von den Datenflanken samplen würden. D.h. wir würden jetzt hier dort, wo der Akkumulator an den Rapperont hat, samplen. Und jetzt kann jetzt mal davor kurz nach der Flanke sein, was dann eben nicht so optimal ist, weil wir dann echt effektiv nicht wissen, ob es jetzt 3 oder 4 bezweifelt waren. Genau, jetzt könnte natürlich irgendwie hingehen und einfach in der Frequenz fliegen, bis es passt, aber es gibt auch natürlich auch einen besseren Weg. Was wir uns jetzt hier gebaut hatten, sieht so aus. Wir haben links unsere Bits, die aus der Stellwertbildung kommen. Dann haben wir den Phasendetektor. Effektiv nur bei der Flanke, wenn wir Bits gucken, was war der Wert des Akkumulators. Und daraus dann die Abweichung zu unserem Idealwert berechnen. Dann haben wir unseren NCO, den wir durch das Frequenz-Tuning-Wert einstellen und aus dem dann eben dieses Dreieck-Signal rauskommt. Jetzt kommt nämlich der Trick, wir brauchen uns daraus nämlich eine PLL, eine Facelocked Loop, und nehmen unseren Fehler, der sich aus dem Phasendetektor ergibt, als Stellgröße für unser Frequenz-Tuning-Wert. Also wir brauchen uns effektiv einen Regler hier, in speziellen Fall einen P-Regler. Denn unsere Stellgröße, unser Frequenz-Tuning-Wert, ist das Proportionat zu unserem Fehler Delta. Und jetzt können wir hier schrittweise unseren Proportionalitätsfaktor erhöhen. Man sieht erstmal bei HP0 sind wir da, wo wir davor auch waren, d.h. der Fehler schnappt periodisch zwischen minus 80 Grad und plus 180 Grad, hin und her. Jetzt drehen wir unseren HP immer weiter auf, sieht da passiert so langsam irgendwas, passiert immer mehr. Und wenn man jetzt an irgendwann super 0,05 sieht man, okay der Fehler ist jetzt schon mal recht latt, es gibt keine großen Ausreißer mehr, noch ein bisschen mehr machen, sieht jetzt eigentlich schon mal sehr gut aus. Aber wir haben hier immer noch einen konstanten Fehler, das liegt nämlich daran, dass wir ja einen Frequenz-Fehler hatten initial, den müssten wir jetzt korrigieren, und um diesen Fehler zu korrigieren, weil wir hier eben nur ein P-Regler haben, brauchen wir einen Phasen-Fehler, der nicht null ist, weil irgendwoher muss das Frequenz-Tuning-Wert ja auch kommen. Würden Sie sich denken, okay mache ich einfach meinen HP noch mal größer, aber dann wie es halt mit Reglern so ist, fängt es an zu schwingen, also keine gute Idee. Stattdessen machen wir auch unseren P-Regler hier, einen PI-Regler, das heißt wir addieren einen Integrator, der die Regelabwärchung aufintegriert, und somit dann das Frequenz-Tuning-Wert bereitstellen kann, bei einem Delta das 0 wird. Guck mal, ob wir ja ausprobieren, dass KI Anfangs 0, sind wir da, wo wir davor auch waren, dann jetzt ist mein PTF wie Uhr gekresht, immer diese Technik, hoffen, dass der jetzt nicht krescht. Genau, da waren wir. Wir haben jetzt unseren Phasen-Fehler, jetzt haben wir hier unseren Integrator, erhöhen von dem unseren Gain immer weiter, und dann sehen wir, okay, jetzt wird unser Fehler tatsächlich null, das liegt dann eben nicht daran, dass der Integrator den Fehler aufintegriert und damit das Frequenz-Tuning-Wert bereitstellen kann und es eben kein Phasen-Fehler mehr gibt. Jetzt haben wir einen Takt, mit dem wir unsere Bits immer ordentlich samteln können. Hier wieder können wir uns das sagen, um noch ein Integrator weiter aufzudrehen, auf die schlechte Idee fängt wieder an zu schwingen. Jetzt hier, wo wir einen Eingangs event hatte, PLL in zehn Zeilen Pfeifen, das ist die nämlich hier, noch mal alles schön aufgeschrieben. Wir haben links unsere Bits hier reinkommen, dann gucken wir uns an, immer wenn sich das bit ändert, merken wir uns den Phasen-Fehler, indem wir gucken, wie weit der Alkumulator weg ist, von dem Real-Wert, nämlich Alkumator-Große durch halbe, dann den Integrator ist einfach nur eine Zeile, einfach aufadieren, und die Berechnung des Frequenz-Tuning-Werts ist dann eben auch einfach nur eine Addition und Modifikation mit entsprechenden Skalierungsfaktoren. Den NCO hatte ich ja schon Eingangs erwähnt und für das Samteln der Bits gucken wir uns einfach an, ob der Wert praktisch kleiner geworden ist, normalerweise wird er immer größer und dann samteln wir das bit. Was daran jetzt der Eindruck vollfahnt war, normalerweise machen jetzt zehn Zeilen Code nicht arg viel, verbinden sich mit einer Datenbank, renderen irgendwie bis in Text, aber hier haben wir zehn Zeilen Code, die beschreiben ein komplexes dynamisches System und bedessen verhalten, wenn man schon das Bücher füllen kann. Einerseits, vielleicht gut, dass das Code nicht immer so dicht ist oder so viel macht, aber wenn ich jetzt hier mal wirklich sehr eindrucksvoll dass man wirklich nur mit Grundrechenarten und Dinge, die mir die der Programmiersprache hat, so ein komplexes System beschreiben kann und nicht jetzt so komplexere Tools, wie jetzt sie mulig dafür benötigt. So, jetzt haben wir endlich unsere Bits und können in die schöne Welt des Digitalen übergehen und brauchen nicht mal das ganze Analogzeug. Das sind die Bits, wie wir jetzt, wie sie jetzt aus dem Schritt davor, also hier Sampled Bits, wie sie daraus kommen. Und jetzt, das Frage ist, sind es wirklich die Bits, die wir haben wollen? Naja, nicht ganz. In die Bits auf der CD sind nämlich NRZI-Codier, steht für Non-Meterntion Zero in Wörter. Auch wieder komischer Begriff, ist effektiv auch wieder etwas recht einfaches. Nämlich, wenn ich eine Null auf eine CD speichere, dann lasse ich den Pegel gleich. Das heißt, wenn das Bit davor eine Null war, bleibt es eine Null, wenn es eine 1, bleibt es eine 1 und wenn ich eine 1 speichern will, dann kann man es zu dekodieren, ist dann auch entsprechend einfach. Man vielleicht einfach immer das Bit mit dem Vorgänger Bit und wenn es gleich ist, dann war es eine Null, wenn es ungleich war, war es eine 1. In Pfeifen geht das Ganze damit die Liste von Prehension sehr einfach. Einfach die Bits, wie wir sie haben, nehmen, um eins verschieben und immer vergleichen, ob sie Scanner hat oder nicht. Jetzt haben wir zwar einen Anfang der richtigen Bit, eine Menge von richtigen Bits, aber jetzt muss man da auch irgendwie die Struktur reinbringen. Auf eine CD sind die Bits in Frames gruppiert, also so ähnlich wie bei anderen Protokollen Pakete. So ein Frame besteht aus 588 Bits und es ist eindeutig markiert die 24 Synchronisationsplätze am Anfang und der Inhalt des Frames ist so gestrickt, dass diese 24 Bits in den Frames nie vorkommen können. Das heißt, um jetzt unsere Frames aus den Bits zu finden, müssen wir nur die 24 Synchronisations-Bits innerhalb unserer Bitsstroms finden und dann immer die Bits plus die entsprechenden folgenden Bits rausschreiben und dann haben wir die Frames extrahiert. Jetzt, was ist eigentlich in so einem Frame drin? Frames sind wie gesagt 588 Bits mit 24 Synchronisations-Bits am Anfang und ein Frame enthält 12 Bit-Nutz-Daten plus 4 Parity-Bytes da ist dann tatsächlich die Musik drin und auch Metadaten in Form von dem Subcode und dann noch immer zwischen diese 3 Merging-Bits die sind da, um eben solche Bingungen einzuhalten wie dass ich immer minimal 3 gleiche Bits brauche das wird dadurch sichergestellt die haben keinerlei Inhalt. Als erstes habe ich mir dann eine Sache hier noch wichtig jetzt steht hier überall was von 14, obwohl da eigentlich Bites steht die Bites nehme ich auf der CD nicht durch die Gespeichert sondern sind 8-14 encoded das heißt jedem möglichen 8 Bit-Wort also 256 der Zahl ist ein 14 Bit-Wort zugewiesen das ist dann eben diese Anforderungen erfüllt wie wenn ich es an NRZ 3 codiere immer ich mindestens 3 Bits habe die gleich sind dann habe ich mir automatisiert wenn ich ein Bit ändert wenn der 1 ist dass dann immer mindestens 2 Nullen folgen genau dann hätten wir schon mal das Außenweg und gucken uns das als erstes den Subcode an weil bei Audio Samples ist es immer recht schwierig festzustellen, haben wir es richtig gemacht weil dann muss man ihn hinhören und ist nie so genau einfach zu fühlen ob das jetzt stimmt oder nicht stimmt dagegen der Subcode hat ein recht einfacher Struktur die sieht nämlich so aus in diesem Subcode gibt es 8 Channels und in jedem Frame befindet sich für jeden Channel ein Bit das heißt man muss sich eine ganze Reihe von Frames angucken um die 96 Bit die so ein Subcode Block ausmachen zu erhalten genau es gibt insgesamt 8 Subcode Channels davon ist der erste der P-Channel das ist eigentlich nicht wirklich interessant es gibt erstmal kurz 1 um zu sagen dass der Track anfängt dann gibt es noch ganz hinten 6 Bits die sind jetzt bemeinert für meine CD nicht benutzt aber sind für solche Dinge vorgesehen wie CD Text oder CD plus Graphics aber das spannen jetzt bei meiner CD weil es in einem Coup Subcode Channel denn in dem befinden sich Meter-Daten wie zum Beispiel die Laufzeit und um die jetzt zu extrahieren einen muss man mehr Frames angucken eindeutig identifiziert durch die Synciositions Wörter S0 und S1 die sind 14 Bit Wörter die keinem 8 Bit Wörter entsprechen damit ist wieder sichergestellt dass wir exakt rausfinden können wo dieser Subcode Block aus 96 Bits anfängt die sehen jetzt dann im Detail wieder so aus das heißt wir haben unsere Anfangs D2 Synciositionswörter S0 und S1 dann kommen 4 Bits die so was sagen wie ob das Audio vorverzerrt ist kopieren darf oder nicht kopieren darf die weiß bei meines Gesetzes man darf sie kopieren aber es gab wohl 4 Bits die es nicht gemacht haben, keine Ahnung dann kommen noch mal Bits die sagen was die nächsten folgenden Datachubits bedeuten die waren jetzt in meinem Fall hier immer 1 und daran ist dann codiert was ist die aktuelle Track Nummer also wirklich der Track auf der CD fängt bei 1 an oder was ist der Index in dem Track denn man kann auf CDs auch Tracks noch mal unterteilen in mehrere Indices wie jetzt bei normal musikdisk selten gemacht und dann eben noch die aktuelle Laufzeit des Tracks in Minuten, Sekunden und Frames die ganzen Zahlen sind alle bcd codiert das heißt man hat wirklich wenn jetzt jeder decimal stelle als 4 Bits codiert das ist einfacher ist zu decodieren und am Ende ist noch zu guter Letz 16 Bits CRC um das ganze gegen Fehler abzusichern genau das war dann eigentlich nur ein bisschen mit umdrehtieren und entsprechend umformatieren und dann kam auch raus dass es ganze irgendwie Sinn ergibt es kam irgendwie Track 1 in Index 1 raus und die Zeit hat immer schön inkrementiert sieht man auch hier die Frames gehen von 0 bis bis 74 also insgesamt 75 Frames pro Sekunde Frage ist woher kommt das können wir uns einfach ausrechnen hier ist es so ein bisschen unglücklich dass diese Frames hier wir sind 85 Bits Frames leider nichts zu tun haben diese Frames, nämlich diese Blocks eigentlich wir haben nämlich in 44 Kilo Samples pro Sekunde mit 6 Samples je Frame das heißt daraus kommen dann die 7350 Frames pro Sekunde und um einen so Block zu machen brauchen wir 98 dieser Frames um es dann ausrechnen kommt man dann eben auf diese 75 Frames für ein Block also macht alles Sinn so jetzt damit wusste ich schon mal dass die dass ich schon mal auf dem richtigen Dampfer bin auch die Dekodierung von dem EFM richtig gemacht habe und dann konnte ich jetzt mal so langsam mich um die Audio Samples kümmern nämlich das eigentlich was worum es auf der Disk geht die sind jetzt leider ein bisschen komplexer gespeichert aber gucken wir uns erstmal an wie es ganz eigentlich andersrum funktioniert das macht es ganz einfach zu verstehen wir haben unsere hier Stereo-Audio-Signal linker rechter Kanal wir nehmen uns davon von beiden Kanälen 6 Samples und machen dann damit das hier das klingt jetzt, sieht jetzt zuerst mal sehr kompliziert aus aber basieren tut eigentlich nicht viel außer dass die Audio Samples innerhalb so eines Blocks umsortiert werden und dass einzelne Samples um mehrere Frames verzögert werden das heißt wenn ich jetzt hier so eine delay von 2 Frames sehe heißt das es ist effektiv so ein FIFO das war so ein Buffer und wenn ich jetzt den Sample reinschiebe kriege ich das Sample raus was 2 Frames davor davor dann das ganze gibt es hier Wette in mehren Schritten gemacht in der Mitte und unten geht noch die Encoder die Perri Zolomon Encoding noch Perri T-Bits addieren die dann später für die Fehlekorrektur benutzt werden können aber das Gute ist die fassen die Bits eigentlich nicht an sondern addieren nur neue Bits dazu immer noch später wenn man wild ignorieren kann das heißt zum Dekodieren macht man genau das Gegenteil davon das heißt jetzt sieht man hier praktisch das auf der rechten Seite der Decoder ist effektiv das Spiegelbild von dem Encoder das heißt dort wo eine delay drin ist ist beim Decoder kein Delay drin und unbekehrt das ganze kann man jetzt auch mal nachvollziehen das heißt wie wir zum Beispiel das erste Sample angucken das erfährt links im Wachstum erfährt im Encoder den Delay von 2 und dann nochmal von 1 und im rechten dann den Delay von 27 mal 7 ganz aufwendig kommt man auf den Delay von 111 Frames und wenn man das jetzt für ein anderes Sample macht zum Beispiel das hier sieht man das nimmt ein bisschen ein paar Umwege durchs Ganze umsortieren aber kommt am Ende auch wieder bei 111 Frames raus das heißt die Audio-Daten sind danach wieder so wie sie eigentlich ursprünglich waren das heißt Sample für Sample immer der Reihe nach genau das Resolomon dekodieren also praktisch die Qualitätsbits auch nutzen habe ich jetzt hier mit mir mal gespart einfach weil es jetzt erst mal für das erste Mal zu komplex gewesen wäre und das gute ist, ich kann es einfach ignorieren genau und dann habe ich am Ende kriege ich wieder meine 6 Geo Samples raus das ganze mache ich diesen Prozess hier also meine Frames die ich hatte und habe dann tatsächlich auch Musik jetzt in diesem Fall hier, weil es ist weniger als eine Sekunde also jetzt nicht so arg spektakulär eigentlich aber ich habe sich dann die CD gerippt um festgestellt, diese Audio Sample die ich extraeht habe entsprechend exakt dem was auf die Audio CD drauf war und das auch ohne dass ich da die Telekorrektur benutzen musste genau das war es eigentlich schon soweit was ich jetzt gemacht habe, jetzt fragt man sich vielleicht um so ein bisschen, ja wozu gut es ganz überhaupt wo mache ich mir hier so viel Aufwand nur um jetzt hier diese Audio Samples auf die CD zu speichern Hauptsache, Hauptproblem ist eigentlich wie auch bei Datenübertragung bei Datenspeicherung, es können Fehler auftreten bei der Audio CD haben es die Fehler meistens die Natur dass sie in Bursts auftreten, das heißt viele Fehler auseinander weil wenn jetzt auf die CD ein Kratzer ist dann ist der Kratzer ja in den Bits und Lens sehr groß das heißt es gegen gleich sehr viele Bits oder sogar Frames kaputt deshalb wird durch dieses ganze umsortieren von den Bits hier schon mal dafür gesorgt dass wenn ich ein Burstfehler habe dass ich dann diese Fehler über mehrere Frames erstreckt und dann praktisch nur ein paar Löcher drin sind und da könnte man sich ja auch schon vorstellen dass praktisch wenn ich ein Signal habe einfach nur hin und wieder mal ein bisschen was fehlt dass einfach so rekonstruieren ist als wenn ich ein Signal habe wo ein riesen Loch drin ist genau, jetzt war ich damit eigentlich schon mal recht zufrieden es gibt natürlich immer ein paar Dinge die man noch mehr machen könnte zum einen könnte man sich die könnte man versuchen die wie zweitemal ein Vorort Erbockation zu verstehen und zu implementieren, also wenn da jemand es mir versuchen mag zu erklären, immer gerne doch ich habe auch mal ein paar Artikel durchgelesen habe es so angefangen zu verstehen, aber nie so gut dass ich es wirklich jetzt einfach rund implementieren könnte interessant wäre man noch eine CD mit CD Text oder CD Post Graphics sich zu holen und dann eben die anderen Subcode Channel auch mal zu dekodieren, also da gibt es noch immer noch ein bisschen Dinge die ich noch machen könnte und das war es dann eigentlich auch schon das ganze gibt es auch in einem GitHub Repo da habe ich es ganz ursprünglich gemacht einfach als Artikel effektiv für selbe was ich euch heute auch erzählt hatte mit noch ein paar Hintergrund da ist dazu so, danke schön Lukas für den Vortrag wir haben jetzt noch ein bisschen Zeit für Fragen meine erste Werbung wieviel CDs oder welche CDs hast du eigentlich für diese Datensammlung genommen das war eigentlich nur einfach eine Musik CD und das war es auch schon und welche Musik CD war es? ich glaube eine von ATB alright, ihr seid dran Fragen, Hände hoch das ist da direkt ganz, ganz hinten natürlich los geht ich wollte mal generell fragen wie Fehlerkorrektur funktioniert also einmal auf der CD du meintest, du wolltest nicht zu sehr ins Detail gehen und generell bei einem Computer also das Einzige was man hat ist ja Bitflip machst du es so, dass irgendwie die Daten dreifach, vierfach, fünffach redundant geschrieben werden oder was und dann noch ein bisschen auf der CD verteilt werden oder gibt es da noch was noch mehr Tricks? praktisch, anstelle dass sie da mehrfach geschrieben werden werden den Daten Parity Bits hinzugefügt die jetzt hier in diesen C1 und C2-Kursen erzeugt werden das heißt, wenn irgendwo Fehler sind kann ich an diese Parity Bits erkennen zu meinen, dass dein Fehler war und die Parity Bits geben auf die Möglichkeit die Fehler zu korrigieren gehst du nach dem Hemming Weight oder gehst du nach irgendwie mehr Verabstimmung oder gehst du nach dem Hemming Weight also, dass du dir wirklich die Parität anschaust oder machst du irgendwie so Major Decision, Thingy das ist eben die Street Wallermann von dem ich es selber nicht starten habe wie es eigentlich genau funktioniert ok, cool, danke ich habe mir natürlich nichts gemerkt Fragen, Hände hoch wunderbar alles klar, wie einer ist bin ich laut genug? das ist ganz am Anfang aufgefallen, noch naja, ich muss es ja fast verschlucken was hat es mit diesen Minimum 3 Bits auf? ja, das ist eine sehr gute Frage das ist nämlich was das habe ich tatsächlich nirgendwo anders gesehen als bei CDs wenn man sich mal hier nochmal so ganz zu anfangen die Bits vom Osteroskop anguckt man ist ja auch schon wieder gräscht genau, dann sahen die ja so aus das heißt, jetzt praktisch 3 Bits sind schon praktisch so ein kleiner Puls hier das heißt, wenn jetzt nur ein Bitt hätte dann wäre dieser Pult praktisch eine viel zu hohe Frequenz, beziehungsweise wenn einfach zu kurz und wäre deshalb nicht mehr ordentlich auf der CD abbildbar gewesen deshalb hat man gesagt die Pits und Lenz sind immer mindestens 3 Bits lang aber hat trotzdem noch die Quantisierung das heißt, einer kann 3, 4, 5 und so weiter haben aber eben weniger als 3 geht nicht sonst wären in dem Signal die Frequenz ein Anteil der zu hoch gewesen das war so meine Interpretation der Sache danke bei der Folie mit dem PI-Regler da war ja immer noch so ein Restfehler von was weiß ich 45 Grad oder so ist das dramatisch oder meinst du jetzt hier dieses Rauschen hier genau, äußert sich das irgendwie? nee, in den Bits nicht das ist nämlich das Schöne an den Digitalen wenn ich die Bits habe, dann habe ich die Bits auf der Wand, dass ich die Bits sauber sammeln kann und wenn ich die jetzt ein bisschen später sammle oder später sammle, ist egal ok, ok Reed Solomon hatte ich in meiner Bachelorarbeit da gibt es die coole C-Library, die funktioniert an für sich wenn ich das jetzt nachvollziehen möchte wie komme ich denn an den Datenstrom von der CD dran muss ich dann CD-Spieler aufschrauben und mit mostillistopern gehen oder kann ich das irgendwie im Computer einlegen und da die Daten abgreifen nee, also an die Daten in dieser Form muss man tatsächlich ein CD da hier aufschrauben oder mit mostillistopern das Signal von einer Fotodiode nachmessen es gab noch einen ganz interessanten Dogpost von jemanden da hat diese Person sich aus einem Lichtmikroskop oder einem X-Y-Tisch was gebaut und damit die CD wirklich effektiv fotografiert und damit dann nicht mit so ein Land so recovered das ist jetzt auch möglich aber ich hatte keinen so einen beiden aber Ostloskop und CD-Player hatte ich da gehabt ist in dem Repo verlinkt hast du es auch schon mal etwas anderem als eine Audio-CD probiert, hast du keine Ahnung mal eine DVD, Filme, Rippen, Level ich hatte tatsächlich mal so aus Interesse in den Playern eine DVD eingelegt und dann gesehen, okay das Signal war so höherfrequent, weil der DVD hatte einen höher Daten, als eine Audio-CD aber ist effektiv sehr ähnlich, nur noch mehr komplexer also es ist ein bisschen zwar dieses eine Bild mit der CD quasi Mikroskopaufnahme was ich mich da irgendwie die ganze Zeit frag ist wie schafft es eigentlich dieser Laser sich so zu positionieren um tatsächlich auf den Samples zu landen und nicht ein bisschen zu weitern oder außen wahrscheinlich dieses Bild hier genau, da kann ich dir tatsächlich die Videos von Technology Connections sehr empfehlen die sind auch in dem Github-Repo verlinkt, hat mir auch so ein bisschen da zu inspirieren das ganze mal noch tief anzugucken als in diesem Video sagestellt war effektiv gibt's in der ist die Optik so gemacht dass man anhand von dem von dem Fokus, von dem wie der reflektiv Laser auf die Foto-Video fokussiert wird erkennen kann ob man gerade den Fokus zu weit links, rechts oder einfach nicht fokussiert ist und das ist dann eigentlich die Hauptaufgabe von dem Stiple auch neben dem dekodieren von den Audio-Daten wirklich den Laser auf der Spur zu halten dass er eben auf der Spur bleibt noch weitere Fragen nein, vielleicht dann auf jeden Fall nochmal ein Applaus vielleicht Motivation