Foonsearch

Hoi RGJ,

Audiorip werkt wel mooi. Nog geen 200 Kb groot. Het is nog niet afhankelijk van aparte DLL’s. Het werkt ook op schoon Windows 2000 professional systeem. Ik heb het nu zo gemaakt dat hij alle tracks ript in dat/wav formaat. Met Riptrack() start je twee threads op de ene laadt in memory en de andere dumpt het in de twee files (.dat/.wav). Ik heb 50 seconden wachten er in gezet, want anders gaat hij voordat track geript is alweer opnieuw de volgende track rippen. Lijkt mij dat dit beter geprogrammeerd kan worden met thread technologie.

Alhoewel er een copy protected ding op zou zitten kan je gewoon de CD van Guus Meeuwis “Levensecht” rippen. De laatste track van is een data track van 93.442.652 bytes groot. Zit wel een fout in de ene laatst track “Geef me je angst”. Het liedje is al over en dan gaat hij halve minuut met ruis verder. Heeft m.i. iets te maken met lead out als de volgende track een datatrack zou zijn.

Ik zie dat datatrack 1 frame minder leest dan een audiotrack, daar zal m.i. wel de fout zitten.

tocLen: Is toch niet het getal van het laatste Frame. Het is de lengte van Table Of Content (TOC). Alleen kan ik de lengte nog niet plaatsen.

Cdrecord is op Linux gebaseerd. Ik denk dat je de driver aansturing van audiorip er wel zou kunnen onderhangen. Audiorip gebruikt SCSI aansturing en de Nero DLL als je IDE/ATAPI wilt gebruiken. Cdrecord gebruikt ook SCSI en IDE/ATAPI dus lijkt mij wel te kunnen machen.

De vriendelijke groet Jan Marco

Hoi RGJ,

Ik heb gisteravond 10 audio cd’s geript met audiorip. Werkt redelijk goed. Vandaag Cddb resolutie herstellen en info in MySQL gaan zetten.

Samenhang: Met audiorip rip je tracks van CD op harddisk en zet je metadata in mysql. Met filesystem-programma vind je deze files weer op je harddisk. Met foonsearchd.exe zou je deze tracks met andere peers kunnen gaan ‘delen’. Tracks die gemount zijn kunnen direct worden uitgewisseld en als de cd niet online is kan de peer een vraag krijgen of hij hem in de cdrom speler wilt stoppen.

De cddb routines van audiorip ga ik extracten naar een project dat ik Funda ga noemen. Uiteindelijk wordt Funda een programma om online (internet) searching te realiseren. Kan later ook gebruikt worden voor kvk en rdw informatie opvragen. Funda heeft m.i. een relatie met WorkLoadManager (WLM). Voor WLM ga ik http://fcron.free.fr/ gebruiken. Je wilt funda.nl automatisch uitlezen en het liefst niet op regelmatige tijdstippen.

Eigenlijk ga je Funda gegevens koppelen aan Foondump. In de GUI zie je naast telefoonnummer entry dan ook dat hij te koop is. Foto’s kan je laten zien, etc. Afgelopen zondag naar een huis wezen kijken. Op de Funda foto’s leek het heel wat. Echter ze hebben wel erg ‘goed’ gefotografeerd. Ik zag direct dat het naast een snackbar stond met veel lawaai van draaiende ventilatoren. Mijn bedoeling is om mijn foto’s er ook te kunnen koppelen. Je zou zelfs een soort rapport moeten kunnen opmaken en deze in database zetten, zodat iedereen kan lezen wat je er van vindt.

De vriendelijke groet Jan Marco

Hoi RGJ,

De hele dag bezig geweest om voor te sorteren voor mysql. Het is wel een beetje sprokkelen naar de waarden die je wilt opslaan. Zie ook Appendix voor de details.

Puntjes die ik nog moet oplossen:

  1. CBBD werkt niet goed bij meerdere hits. Zelfde key, maar andere cd’s.

  2. Het sequentieel rippen moet beter gemaakt worden. Ik wil van wachtlus van 50 seconden af.

  3. Geen Wav file bij data track aanmaken.

  4. Hash van track inbrengen.

De vriendelijke groet jan marco

P.S. Ik ga geen mounting point in mysql tabel aanbrengen. Ik laat het zoeken via het filesystem programma lopen.

Appendix A:Cd record:

artist=The Rolling Stones|title=Singles Collection - The London Years|firstTrack=1|lastTrack=25|tocLen=53760!cddb_year=1989|cddb_genre=rock|cddb_dgenre=Rock|cddb_length=4019|cddb_revision=6

Appendix B: Track record:

track=1|name=Come On|start=33|time=00:02:33|len=8250|type=audio|start_cddb=183
track=2|name=I Want To Be Loved|start=8283|time=01:52:33|len=8345|type=audio|start_cddb=8433
track=3|name=I Wanna Be Your Man|start=16628|time=03:43:53|len=7720|type=audio|start_cddb=16778
track=4|name=Stoned|start=24348|time=05:26:48|len=9612|type=audio|start_cddb=24498
track=5|name=Not Fade Away|start=33960|time=07:34:60|len=8135|type=audio|start_cddb=34110
track=6|name=Little By Little|start=42095|time=09:23:20|len=11835|type=audio|start_cddb=42245
track=7|name=It’s All Over Now|start=53930|time=12:01:05|len=15518|type=audio|start_cddb=54080
track=8|name=Good Times, Bad Times|start=69448|time=15:27:73|len=11440|type=audio|start_cddb=69598
track=9|name=Tell Me|start=80888|time=18:00:38|len=12470|type=audio|start_cddb=81038
track=10|name=I Just Want To Make Love To You|start=93358|time=20:46:58|len=10235|type=audio|start_cddb=93508
track=11|name=Time Is On My Side|start=103593|time=23:03:18|len=13402|type=audio|start_cddb=103743
track=12|name=Congratulations|start=116995|time=26:01:70|len=11083|type=audio|start_cddb=117145
track=13|name=Little Red Rooster|start=128078|time=28:29:53|len=13797|type=audio|start_cddb=128228
track=14|name=Off The Hook|start=141875|time=31:33:50|len=11543|type=audio|start_cddb=142025
track=15|name=Heart Of Stone|start=153418|time=34:07:43|len=12252|type=audio|start_cddb=153568
track=16|name=What A Shame|start=165670|time=36:50:70|len=13688|type=audio|start_cddb=165820
track=17|name=The Last Time|start=179358|time=39:53:33|len=16487|type=audio|start_cddb=179508
track=18|name=Play With Fire|start=195845|time=43:33:20|len=9895|type=audio|start_cddb=195995
track=19|name=(I Can’t Get No) Satisfaction|start=205740|time=45:45:15|len=16990|type=audio|start_cddb=205890
track=20|name=The Under Assistant West Coast Promotion Man|start=222730|time=49:31:55|len=15018|type=audio|start_cddb=222880
track=21|name=The Spider And The Fly|start=237748|time=52:51:73|len=16370|type=audio|start_cddb=237898
track=22|name=Get Off Of My Cloud|start=254118|time=56:30:18|len=13095|type=audio|start_cddb=254268
track=23|name=I’m Free|start=267213|time=59:24:63|len=10862|type=audio|start_cddb=267363
track=24|name=The Singer Not The Song|start=278075|time=61:49:50|len=10993|type=audio|start_cddb=278225
track=25|name=As Tears Go By|start=289068|time=64:16:18|len=12210|type=audio|start_cddb=289218
track=170|name=|start=301278|time=66:59:03|len=0|type=audio|start_cddb=0

Hoi RGJ,

Vandaag van wachlus afgekomen door op het eind van encode thread RipTrack() aan te roepen met de volgende track.

  1. fout in data tracks inlezen: Xtractor is meer voor audio gemaakt. Ik wil het ook gebruiken om een hash van een data cd te laten berekenen.
  2. Fast hash maken. Doel is om snel te kunnen zien welke cd/dvd het is door wel naar de inhoud te kijken.
  3. Gegevens in Mysql opslaan.
  4. Hash op tracks zetten. Dus een hash per track en een totaal hash op de gehele cd/dvd.

Ad 1) Fout zit in

if ( e.startFrame + maxRip > lastAudioFrame )

LastAudioFrame wordt gecompenseerd met leadout time, echter dit is m.i. niet nodig. N.B. Ik zal wel even goed moeten kijken of alle Frames gelezen worden. Ik zag bij Guus Meeuwis dat er minder gelezen zijn dan dat ik verwacht had.

De vriendelijke groet Jan Marco

Hoi RGJ,

1 seconden = 75 Frames = 2352 bytes.

Ik zie bij CDDB dat ze begin Frame berekenen door tijd “00:02:00” te vermenigvuldigen met 75 = 150 bij Guus Meeuwis eerste track.

Ik moet nog meer debuggen, want hij leest soms niet alle Frames.

De vriendelijke groet Jan Marco

Hoi RGJ,

Om het “goed te doen” kost het altijd meer tijd dan ik vooraf had gepland.

Audiorip zet de wav/dat tracks van een cd in de directory .\artiest\titel. De artiest/titel info worden van www.freedb.org betrokken. Als Audiorip de cd niet kan vinden of geen connectie tot deze site hebt dan deze gegevens handmatig invoeren. Het niet kunnen vinden kan ook liggen aan het niet werken van DNS op je pc. Geen gegevens van CDDB dan heb je ook niet de werkelijke namen van de tracks.

Gisteren kwam ik er achter als je op de laatste frame staat hij voortijd afbreekt. Hierdoor las je de laatste frame niet.

Ik zie dat jittercorrectie niet goed werkt bij Guus Meeuwis, dus zal ik even moeten buggen waar het fout gaat.

Vandaag wilde ik beginnen om een snelle hash te maken. In de .\artiest\titel\ komt een file hash.dat te staan met deel van info van de cd. Als je deze file hashed dan heb je de snelle hash.

Ik denk aan om frames met 26 * S te verschuiven over de cd. Het getal S bijvoorbeeld 100 zou je moeten berekenen aan de hand van de grootte van cd of minimaal aantal te lezen frame sequence.

De vriendelijke groet Jan Marco

Hoi RGJ,

De laatste Guus Meeuwis CD gaat fout op “ReadCDAudioLBAEX: read failed” omdanks jitter correctie en 3 retries. Hij springt naar volgende track.

Zal later gaan uitzoeken hoe je hier om toe kan werken.

Ga nu verder met fash hash.

De vriendelijke groet Jan Marco

Hoi RGJ,

Ik heb audiorip-0.09.zip op mijn anonieme ftp server(www.foonsearch.com) gezet.

Er zit nog geen mysql in. Ik hoop dat mij bedoeling duidelijk is.

Je zet bijvoorbeeld met audiorip -artist=“telemedia” -title=“2005” de consumenten2005 versie op je harddisk. Met fshhash DataTrack01.dat kan je de gehele cdfoon hashen.

Echter als je snel wilt zien welke cd het is dan kan je dit realiseren met fshhash fashhash.dat.

Fashhash.dat is een extractie van DataTrack01.dat.

Ik ga nog wat meer testen voordat ik het naar mysql ga omzetten. Als het straks in mysql zit kan je snel zoeken of je hem ook hebt. In de toekomst kan je ook bij andere peers gaan zoeken naar een specifieke cd/dvd,

De vriendelijke groet Jan Marco

Appendix Hashes van Cdfoon2005 consumentenversie:
05/08/2005 04:28p 702,622,368 DataTrack01.dat
05/08/2005 04:24p 6,971,328 fasthash.dat

fshhash fasthash.dat
3fe105438b1edc699ff218a9dfbec60f2d52925a5f7bfc146c6d2bd955abccafc1abb5357ad47722c05f6a29655ac4

fshhash DataTrack01.dat
1033e31a0e6630f4164cbffcf6cd60bad304de8ea8130284a619101c1934e6242ce6d4ed61f3b34ca02ae1299f5c6181

Hoi RGJ,

Afgelopen week nagedacht. Ik zie twee type programma’s namelijk door end-user direct te gebruiken en programma’s in bepaalde ‘structuur DLL’ zoals lame_enc.dll van http://lame.sourceforge.net/ . Eerste type is ook goed om het te testen of het goed werkt.

Even concreter gemaakt. In Filezilla server ga ik Message afvangen wanneer de cdrom geopend of gesloten wordt. Ik stop de open/sluit-message van de cdrom in mysql. De workloadmanager plukt deze message er weer uit en start audiorip.dll op. Het voordeel is dat je alleen code inlaadt als je het nodig hebt. Het open/sluiten van cd doe je niet aldoor. Andere code zou wel in het frame work opgenomen kunnen worden, bijvoorbeeld ftp of hash code.

Momenteel ben ik aan het kijken naar “Hooking” Zie ook http://www.codeproject.com/system/Paladin.asp

Ik heb alleen het draaiend voorbeeld zien werken, waarbij je in een file ziet welke programma’s geopend en afgesloten worden. Opzich wel mooi, want kan je in mysql bijhouden welke programma’s je hebt geopend. Alleen zie ik weer een NT-driver file er bij staan.

Ik wil hooking gebruiken om het open en lezen van dtgwin.exe. Je zal natuurlijk fseek en fread, etc kunnen gaan hooken.

De vriendelijke groet Jan Marco

Hoi RGJ,

Gisteren de laatste cdfoon’s meerdere keren op harddisk gezet. De fasthash.dat geeft elke keer dezelfde hash waarde. Echter als je de gehele cd inleest geeft het niet altijd dezelfde file op harddisk. Ik zal dus in mysql een extra tabel gaan maken waarin je op key “fasthashkey” de hash van gehele cd bijhoudt. Als je meerdere keren dezelfde totale hash ziet zal het wel goed zijn.

Een ander probleem is dat als dns niet goed werkt het systeem kan vastlopen. Ik denk dat de thread die de cddb info wil gaan halen niet wordt getermineerd als het programma stopt. Ik dacht dat als je programma stopt de threads ook wel gekilled worden door het Operating System. Het zou best kunnen zijn dat deze threads als “zombies” door blijven werken.

Planning: Vandaag hash en mysql in audiorip gaan inbrengen.

De vriendelijke groet Jan Marco

Hoi RGJ,

Vandaag even de tabellen gemaakt, zie ook Appendix A. N.B. Model kan nog veranderen als ik met concrete waarden ga vullen.

Je gaat eigenlijk van tracks -> cd -> artiest -> cdfoon entry.

In appendix B heb ik 3 hashes van verschillende uitvoeringen van hetzelfde liedje, dus ook een soort koppeling tussen tracks kunnen maken. Analogie: Funprice heeft ook verschillende vestigingen, zou ook aan elkaar gelinkt kunnen worden. Het linken tussen tracks heb ik nog niet in de tabellen opgenomen.

De bedoeling is om cd/dvd (data/audio) uniek te kunnen indentificeren door naar de inhoud van de tracks te kijken. Ik heb ervoor gekozen om alleen de informatie van cddb er bij te sprokkelen van de CD die in de cdrom speler zit. In de toekomst kan je met de fasthash-sleutel op de andere peers eerst gaan kijken of iemand anders hem al uniek heeft gemaakt voordat je naar cddb toegaat. Wat je nu ziet is dat bijvoorbeeld artiest anders gespeld wordt bij verschillende albums. De titels komen dan in verschillende directories bij audiorip.

De vriendelijke groet Jan Marco

Appendix A: Mysql structuur:

DROP TABLE IF EXISTS cddvd;

CREATE TABLE cddvd (
CddvdSN BIGINT(10),
artist VARCHAR(255),
title VARCHAR(255),
firstTrack INT(3),
firstFrame BIGINT(15),
lastTrack INT(3),
lastFrame BIGINT(15),
TOCLength BIGINT(15),
cddbId VARCHAR(255),
cddb_year INT(4),
cddb_genre VARCHAR(255),
cddb_dgenre VARCHAR(255),
cddb_length BIGINT(15),
cddb_revision BIGINT(15),
cddvd_fasthash_size BIGINT(15),
FastHash tinyblob NOT NULL default’’,
cddvd_size_dat BIGINT(15),
Hash tinyblob NOT NULL default’’,
hashvalidations BIGINT(10),
INDEX(CddvdSN),
INDEX(Hash(33))
);

DROP TABLE IF EXISTS track;

CREATE TABLE track (
TrackSN BIGINT(10),
Tracknumber INT(3),
Trackname VARCHAR(255),
start BIGINT(15),
start_cddb BIGINT(15),
length BIGINT(15),
Type VARCHAR(32),
Tracktime VARCHAR(32),
path VARCHAR(255),
Track_size_dat BIGINT(15),
Hash_dat tinyblob NOT NULL default’’,
Track_size_wav BIGINT(15),
Hash_wav tinyblob NOT NULL default’’,
hashvalidations BIGINT(10),
INDEX(TrackSN),
INDEX(Hash_dat(33)),
INDEX(Hash_wav(33))
);

Appendix B: verschillende versies van Suzanne:

Suzanne.wav Leanard Cohen:
3e95859226e9c7e6d1257416314fe3688dc5adb50fa015edcaa5840097d2a12c6c5a438f1b934d4d6cd8660292fd2c2a

Suzanne.wav Frank Boeijen:
4dedd0683b3b4e063a3327fb6a86bee87ee98a07efce051ad7f36aa07cf4af3825690b40804c31b91c9b4b0219982e17

Suzanne.wav Herman van Veen:
12cfb6ef6f2c7ad98d2c83563a6be75025384cf3943cf152e2b174b507768a559ab84cbcb57c011fcc388802a9ffd05d

Hoi RGJ,

Ik heb het zo geprogrammeerd dat als je geen mysql hebt je wel een (data/audio) cd kan rippen, echter dan worden de meta gegevens helaas niet in mysql opgeslagen.

Een andere punt is dat je Nederlandse artiesten wel kan koppelen aan Foondump, maar buitenlandse artiesten zal nog opgelost moeten worden.

De vriendelijke groet Jan Marco

P.S. Audiorip moet je als een voorbeeld Foondump koppel programma zien. Als Audiorip een beetje werkt ga ik met Funda beginnen.

Hoi RGJ,

Audiorip gaat kapot op XP. Komt m.i. doordat XP sneller op fileopen fouten kapot gaat. N.B. In elke procedure start in log file weer op en op het eind van een procedure sluit ik hem weer. Kan dus zijn dat je een geopende log file weer probeert te openen.

Vorige week ging mijn andere Windows 2000 professional pc vaak kapot op dat hij niets meer deed. Ik heb filezilla server service uitgezet. Vanmorgen niet meer kapot gegaan.

Ik ga nu beginnen om de hashes op track/cd er in aan te brengen.

De vriendelijke groet Jan Marco

Hoi RGJ,

Even drie m.i. bruikbare projecten.

  1. om icons uit files te halen. Deze icons in mysql zetten in mijn filesystem programma. Het is wel in .cs geprogrammeerd. Ik denk dat ik het wel in C kan omzetten. Zie ook http://www.codeproject.com/csharp/IconHandler.asp

  2. Om dns namen te resolven: http://www.codeproject.com/useritems/CDNS.asp

  3. http://www.codeproject.com/file/diskobject.asp om filesystem te browsen. Eigen wil ik vanuit mysql het filesysteem kunnen viewen.

Vandaag verder met het maken van de hash m.b.t. audiorip. Ik heb nog een probleem dat de gnunet hash nog niet werkt. CRC en MD5 werken wel. Het is belangrijk dat je de cd maar 1 keer leest. Dus het maken van de hashes tap je af wanneer je de blokken op harddisk zet.

  1. Ik heb blok grootte terug moeten brengen naar 4096, want dat is de grootte voor audiorip.
  2. In mijn fshhash.exe programma ging ik er van uit dat alle blokken behalve de laatste dezelfde grootte hebben. Dit is bij audiorip niet het geval.
  3. Vele hash technieken werken als volgt. Eerst ga je hash initialiseren. Je gaat hierna alle blokken sequentieel hashen tot de laatste. De laatste blok heeft vaak een aparte behandeling nodig. Het aandachtspunt was dat je twee treads hebt. De ene zet de cdtrack in memory de andere dumpt het op harddisk. Om laatste blok te bepalen moet je in verwerkingthread de conditie gaan halen wanneer de laatste blok van track is. De werking van audiorip is dat je maar 1 track tegelijk in memory zet. N.B. Een data cd (als xp etc) heeft haast altijd maar 1 track.

De vriendelijke groet Jan Marco

P.S. Een hash is een soort unieke getal van een file. Ik gebruik drie hash routines. M.i. probeer je een object te identificeren door gebruik te maken van meerdere dimensies.

Hash=Ripe-md160(file) + MD5(file) + Crc32(file) + Filelength_reverse_order(file) + Crc32(Ripe-md160(file) + MD5(file) + Crc32(file) + Filelength_reverse_order(file))

Dus Hash heeft variabele lengte door de variabele filesize en de Hash is door de laatste CRC te chechen of hij goed is (aan het formaat voldoet). N.B. Funprice zet de hash van XP op hun site met het bedrag dat ze er voor willen hebben. Door laatste hash kan je checken of er een cijfer is weggevallen van de hash. Analogie: Bij de bankrekeningnummers hebben ze ook zo’n interne check routine.

Hoi RGJ,

Het “Ripe-md160_hash probleem” heb ik gevonden. Ripe-md160 verwerkt een buffer door steeds met 64 bytes te verschuiven. In Audiorip kon het voorkomen dat je tussentijds “een te hashen buffer” kreeg die kleiner was dan de blokgrootte van 4096. Je snapt wel dan dat je dan op het eind van de buffer een probleem krijgt, want aantal bytes in de buffer is dan vaak geen veelvoud van 64.

Ik heb het probleem opgelost door in het verwerkthread een tussenliggende blok pas te gaan verwerken als het aantal bytes in de queue groter of gelijk is aan hash_blokgrootte=4096.

Indien er meer dan 1 track op een cd staan krijg ik hetzelfde probleem bij het berekenen van de hashcode van de totale cd. Ik zal wel iets moeten maken dat je de laatste buffer van de vorige track bewaart en nieuw info van volgende track er achter kopieert. Doel is natuurlijk dat je de cd maar 1 keer gaat inlezen.

De vriendelijke groet Jan Marco

Jan Macro,

is het niet wat warm voor deze problematiek? Of zie je in de tuin te werken op de laptop :smiley:

Anyway,
Hoop dat er iet bruikbaars uit gaat komen. Misschien dat ik je op de een of andere manier op termijn kan helpen, hoor het dan wel van je

Germ

Germ

is het niet wat warm voor deze problematiek?

Valt in mijn flat wel mee. Ik ben altijd bezig “de berg proberen te beklimmen”. Soms bereik je een hogere gelegen camp. Als je daar bent kan je wel aangeven welke route je moet lopen om er te komen. Je hebt geleerd door verschillende routes te proberen.

Hoop dat er iet bruikbaars uit gaat komen.

Kost altijd meer tijd dan je lief is. Ik ga eerst wat databases vullen en straks beginnen met de user interface en daarna de peer to peer communicatie verder gaan “programmen”.

Ik ben erg blij met het fasthash concept. Moeten we het als Trade mark gaan deponeren of heeft iemand anders dat al gedaan? Met fasthash lees je 1 percent van de cd frames en hiervan maak je een hash. Kan je snel (binnen enkele seconcen) bepalen welke data/audio cd het is. Een totale hash van een cd duurt natuurlijk wel langer. Deze hash hoef je alleen maar te doen als je een cd in mysql gaat opnemen.

Als je de cd’s op de peers eenduidig kan identificeren dan kan je ze ook snel gaan zoeken.

Germ, Audio rip heb ik gezien de te gebruiken technieken in gedachten al af, echter zal nog wel de puntjes op de i gezet moeten worden voordat het door anderen getest kan worden.

De vriendelijke groet Jan Marco

Hoi RGJ,

De hashes voor de “.dat files” werkt al. Ik ga nu beginnen om de wav files te gaan hashen en het resultaat in mysql opslaan. Je kan straks dus op .dat en .wav files/tracks zoeken in mysql.

Om de dat hash van de gehele cd te maken heb ik denk ik een circulaire buffer nodig van 2 * de blokgrootte. Bij de laatste blok (welke kleiner is dan de blokgrootte) van de eerste track zet je in deze buffer. De volgende blok van tweede track zet je er achter. Hierna hash je blokgrootte (=4096) vanaf het begin van circulaire buffer en zet je pointer blokgrootte verder. Doel hierbij is dat je maar 1 keer de cd wil inlezen.

De vriendelijke groet Jan Marco

Hoi RGJ,

Wav files zijn .dat files + 44 bytes header. Je hebt eigenlijk hetzelfde probleem als met het berekenen van totale hash van een cd. Ik zal de wav header in circulaire buffer moeten stoppen en daarna eerste blok van 4096 bytes er achter zetten. Hierna 4096 bytes gaan hashen vanaf begin van circulaire buffer. Waarna je tweede blok er achter gaat zetten.

Gisteren de nieuwste cd van Shakira gekocht. Ik dacht te zien dat “plato” het cddb getal als key in hun cd voorraadprogramma gebruiken. Je kan beter hash van fasthash.dat gebruiken, want die is wel uniek.

Ik zag vanmorgen dat de laatste Shakira cd nog niet in cddb online koppeling zit.

Vandaag de circulaire buffer bouwen.

De vriendelijke groet Jan Marco

Hoi RGJ,

Ik heb geen circulaire buffer gemaakt, maar iets simpels waar je een blok achter wegschrijft en een blok voor weg leest en daarna de bytes achter de gelezen blok naar voren kopieert.

Een probleem met .wav was dat je bij de header al de grootte van het bestand moet weten. Oplossing is om aantal frames uit Table of Content te pakken vermenigvuldig met 2352. Mogelijk is het checken van de grootte van bestanden i.r.t. table of content wel een goede methode om te zien of je de cd goed hebt ingelezen.

Hashes van .dat en .wav werken nu. Ik ga nu verder om hash van gehele cd te maken. Als er maar 1 track opstaat (veelal datacd) hoef je niet moeilijk doen. Gewoon hash van track0.dat pakken. Heb je meerdere tracks dan gelijksoortige manier als met de .wav files uitvoeren.

De vriendelijke groet Jan Marco