Foonsearch

Hoi RGJ,

Bedankt voor de link m.b.t. cdrom insert/remove —)

Ik zal eerst een apart programma maken om het werkend te krijgen. Later in foonsearchd zetten. Als je een cdrom er in doet dan een aparte thead opstarten die de cd/dvd gaat scannen zonder sleep tussen de files. Nadat je alle files hebt gescand ga je ze sorteren en een totale hash berekenen. Heb je deze hash niet dan de files van de cd/dvd kopiëren naar andere tabel in de database. Je krijgt dan op den duur al je cd/dvd in de database.

In later instantie zal het programma ook audio cd/dvd’s moeten kunnen lezen. Lijkt mij dat de tracks gelijksoortige aan files gaat behandelen.

Ik heb het filesystem programma met 5 seconden ‘sleep’ tussen de files gedaan en dan duurt het ongeveer 3 dagen dat je alle files bij langs bent geweest. Je ziet dan erg mooi welke nieuwe files er zijn aangemaakt en welke files verwijderd zijn. Als je de hash van virussen zou hebben, heb je mogelijk ook alternatieve virusscanner.

Ik denk aan dat optimaal is om naast de 3 dagen cyclus het openen van files/directories te gaan loggen in mysql. Je moet niet zoals Norton virus scanner direct bij het open van een file hem weer gaan openen om de hash te gaan berekenen. Beter is om het delayed te doen. Bij voorbeeld elk uur alle geopende files van de afgelopen uur te gaan scannen. Eerst nog een sorteer procedure te gaan uitvoeren. Heb je een file 300 keer veranderd in het afgelopen uur dan maar 1 keer testen op de hash.

Vorige week met tree’s bezig geweest. Ik zag de icons niet die ik er onder had gehangen.
Ik was vergeten om EnsureVisible(ret2); aan te roepen. Ik begin de tree structuur een beetje te begrijpen.

Deze week niet al te veel tijd.

Om een stukje verder te komen ga ik volgende week met het filesystem programma meerdere pc’s in 1 database laten dumpen. Je kan dan testen of het GUI programma de files goed laat zien van de verschillende pc’s. N.B. Eerste vorm van database synchronisatie is het zetten van alle records in 1 database.

Foonsearchd (gedeelte uit gnunet) test ik al best een lange tijd. Werkt best wel redelijk stabiel. De SQL message berichten moet er nog in geprogrammeerd worden. RGJ, Stel jij stelt een SQL berichtje aan mijn server “SELECT * FROM FILE WHERE FILENAME = ‘ICONS.JAR’;”. Je krijgt dan een SQL berichtje terug met een blob veld waar de file inzit met het resultaat. Het resultaat kunnen meerdere records zijn.

Je toetst bijvoorbeeld een “mailtje” in foonsearch in om enkele files van mij te krijgen. Het wordt dan verstuurt aan mij in SQL berichtje met blob veld met de inhoud van het “mailtje”. Ik stuur een “mailtje” aan jouw terug met bijvoorbeeld 4 “attached” files. Foonsearchd stuurt dan 1 messagepack bericht met 1 SQL berichtje met mijn tekst in een blob veld en 4 SQL berichtjes met de hash van mijn op te sturen files. Jouw foonsearchd leest de messagepack weer. Kan het eerst wel moeten unzippen en moeten decrypten. Hierna zet hij mijn “mailje” in jouw inbox tabel. Hierna kijkt hij of hij de attached files hashes al lokaal heeft. Zo niet dan vraagt jouw foonsearchd in een SQL berichtje aan mijn foonsearchd demon om de files alsnog op te sturen. Je voorkomt dan dat je onnodig files over de lijn aan het trekken bent.

Ik ga filesystem, mfc gui (foonsearch) en transport mechanisme (foonsearchd) een beetje gelijktijdig aanpakken. Als deze drie programma’s samen werken dan is het neveneffect dat foondump online ook gaat werken. N.B. filesystem zal op den duur onderdeel van foonsearchd worden.

De vriendelijke groet Jan Marco

Hoi RGJ,

Ik denk dat windows programma’s eigenlijk anders dan linux programma’s werken. In Filezilla zie je dat ze op de triggers (“interrupt”? ) van Windows reageren. Linux is meer het laten draaien van een thread die wacht op signalen (“pollen”?).

Ik zie dat in FileZilla-server de Windows messages worden verwerkt in een lus, dus ik denk de triggers van het openen en dichtdoen van een cdrom-speler hier in te gaan patchen.

Filezilla server draait aldoor op mijn machine in achtergrond. Eigenlijk ga ik in dit stukje code de Windows monitoring doen. Mogelijk ook andere zaken daar gaan monitoren. Je zou in het scherm bij “Filezilla-server” Cdrom monitoring aan kunnen gaan klikken.

Ik zal de programma’s op mijn “ontwikkelpc” weer een beetje gaan hergroeperen:

  1. Filezille: richting database browser (foonsearch.exe) gaan ontwikkelen.

  2. Filezilla-server: FTP server en daarin Hooks op cdrom op/dicht gaan zetten. Je kan natuurlijk ook een koppeling met de filesystem (mysql) database gaan maken.

  3. Filesystem: Programma voor Linux en Windows om files+icons van filesystems in database gaan zetten. Programma/code in filezilla-server gaan aansturen.

  4. Foonsearchd: Programma dat op Linux/Windows draait en de connectie tussen de peers verzorgt. Lijkt mij verstandig om dit programma eerst zelfstandig goed aan de praat te krijgen voordat je andere code hierin gaat hangen.

  5. Emule: Ideeën proberen te halen uit emule door delen te patchen.

  6. HTTP server (apache): Ook ideeën uit Apache webserver proberen te halen. Als je een file van mijn locale server wil halen dan dit omleiden naar mijn filesystem database.

  7. Wget: Ik heb al een rip uit wget gedaan. Ik wil wget nog beter gaan testen. Zal m.i. onderdeel van 4) worden om files (queries) over te halen tussen de peers.

8 ) Installer programma: Ik had laatst code gevonden voor een leuke installer programma. Ik zal hem weer gaan opzoeken.

De vriendelijke groet Jan Marco

P.S. Bij gnunet zag ik laatst een hele mailwisseling voorbij komen dat voor sommige eindgebruikers het moeilijk was om via config files het aan de praat te krijgen. Ik heb liever de config items in mysql.

Het Windows messaging mechanisme ligt ‘bovenop’ de signalen. Wanneer je in Windows op een message wacht dan wordt je thread geblocked totdat er een message is. In MFC ligt dat diep in de MFC library.

Pollen is weer iets anders, dat betekent dat de thread juist actief (= niet geblocked) wacht op iets wat gebeurt.

Hoi RGJ,

Ben even weer verder met het uitzoeken gegaan. Ik wil graag de volgende code in Filezilla server patchen. Als het audio cd is dan pak je deze code, als het een data cd dan het “filesystem” programma aansturen.

http://www.naughter.com/mfccddb.html

Ik heb even “Neil Young” met “Havest” in de cdrom speler gedaan. Je krijgt dan met bovengenoemde code de volgende sleutel voor freedb:

CDDB DISCID for this Audio CD is 8208cc0a

Met xtractor programma http://xtractor.sourceforge.net/ kan je de tracks rippen in wav formaat files:

03/18/2005 04:59a 48,432,428 Track 01.wav
03/18/2005 04:59a 33,774,764 Track 02.wav
03/18/2005 05:00a 43,307,420 Track 03.wav
03/18/2005 05:00a 33,003,308 Track 04.wav
03/18/2005 05:01a 35,933,900 Track 05.wav
03/18/2005 05:01a 36,079,724 Track 06.wav
03/18/2005 05:02a 31,634,444 Track 07.wav
03/18/2005 05:02a 42,712,364 Track 08.wav
03/18/2005 05:03a 21,737,228 Track 09.wav
03/18/2005 05:04a 70,569,452 Track 10.wav
10 File(s) 397,185,032 bytes

Ik kan nu de hash bereken van de tracks met de code van het filesystem programma.

De bedoeling is dat als dezelfde track op een verzamelcd zou staan dan krijg je dezelfde hash code.

RGJ, Ik kan het WAV protocol niet zo snel vinden op het Internet. Kan je gewoon hash van de WAV file pakken? Zit er geen zelf ingetoetste info in het WAV protocol, zoals tracknaam?

De vriendelijke groet Jan Marco

Hoi RGJ,

Nils heeft source code gemaakt die de netwerk adapter er uit kan halen. Ik heb het nog niet naar Visual omgezet. Ik zal hem vragen of je “default gateway” ook er uit kan halen. Handig lijkt mij ook of je default gateway ook kan veranderen via bepaalde code.

De vriendelijke groet Jan Marco

Appendix A: gnunet-win-tool -n

Index: 16777219
Adapter name: 3Com EtherLink PCI
Address: 10.0.0.122

Index: 33554436
Adapter name: WAN (PPP/SLIP) Interface
Address: 62.131.97.197

Index: 1
Adapter name: MS TCP Loopback interface
Address: 127.0.0.1

Index: 0
Adapter name:

Hoi RGJ,

Ben beetje met MfcCDDB v1.47 aan het prutsen geweest. Als je een audio cd er in doet en na herkenning op false klikt dan gaat hij naar de online freedb.org site toe. Ik zie weinig trackinfo. Ik heb gezien dat Xtractor wel werkt.

Ik denk dat freedb een beetje gelijksoortig aan foondump online kan zien. Gewoon een rip maken van de algemene foondump entries welke vrij is. De specifieke gegevens (“niet vrije info”) er aan kunnen koppelen.

Als ik de hash van een track heb kan je natuurlijk alle tracks onder een artiest hangen. Echter je zou ook een song (hash “track”) die door verschillende artiesten worden uitgevoerd kunnen gaan koppelen. N.B. Gelijksoortige bedrijven worden in foondump pink ook aan elkaar gekoppeld.

Denk richting: Je doet een cd in je cdrom speler. Als het een audio cd is dan berekend hij de cddb getal en haalt via internet de songs info op en zet dit in mysql. Hierna wordt elke track in wav formaat geript en de hash code van elke track wordt ook in mysql gezet.

Het ophalen van de cddb gegevens via internet wil je uiteindelijk in een output queue zetten. Een output tread die alle verzoeken gaat verwerken. In de output queue zouden dan ook de messagepack berichten voor andere peers komen, naast de andere online verzoeken zoals kvk.nl, nic.nl en rdw.nl etc. informatie opvraging.

RGJ, Met Pasen neem in een week vrij om een stuk te gaan realiseren,

De vriendelijke groet Jan Marco

N.B. Wat je in http://xtractor.sourceforge.net/ ziet is dat de logica verweven is met het GUI programma. Ik denk meer aan om logica in de demon te zetten. Voordeel is dat je via een andere peer ook de logica aan kan roepen. De optie scherm ook via de database browser kunnen gaan veranderen. Optiescherm uit mysql gaan opbouwen. Stel mijn peer maakt een MP3 voor jou van een wav file van mij, dan krijgt hij ook de optierecord van jou om het te kunnen uitvoeren.

WAV files: http://www.borg.com/~jglatt/tech/wave.htm
In het algemeen bevatten deze geen file- of tracknamen etc. Het kan technisch/theoretisch wel, maar wordt bij mijn weten nooit gebruikt. Dat het kan komt meer doordat het file formaat zo generiek is. Het werd vroeger op de Commodore Amiga ook gebruikt voor het opslaan van image-bestanden.

Hoi RGJ,

Erg bedankt voor de WAV info link–)

Raken we met WAV ook info kwijt? Als je een geripte track weer terug zou kunnen kopieren naar een audio track hebben we dan dezelfde bits weer terug. Zal vanavond even gaan zoeken of er een wav naar audio track convertor beschikbaar is.

Ik zit nu een beetje te zoeken op ReadTOC in xtractor. Ik zie dat ze een externe dll aanroepen, namelijk WNASPI32.DLL. Deze dll wordt ook bij NERO geleverd.

hinstWNASPI32 = LoadLibrary( “WNASPI32.DLL” );

Als je hem ‘straks’ niet zo kunnen vinden zou je hem bij de andere peers kunnen gaan zoeken. Je gaat dan een “laatste versie verzoek” in de output queue doen met de hash:
6ca957e252db344fc4c1de987576ee6d37513696a6d7ac2c5b1e807b0feec08c44856044942a3593107102d8a8300d

Op het internet geeft men aan dat er een fix is. Eigenlijk zou je de laatste versie moeten zoeken. Je kan natuurlijk wel via de filenaam = WNASPI32.DLL de link gaan maken, maar je weet niet precies wat je dan zoekt. Lijkt mij handige om de hash in de code op te nemen. In het MFC GUI programma zal je straks gemakkelijk een link tussen entries (bijvoorbeeld files) moeten kunnen gaan maken.

De vriendelijke groet Jan Marco

WAV is een lossless (geen info kwijt) representatie van een audio track op een CD. Elke cd writer software kan een WAV op audio cd schrijven.

Omdat een audio cd minder foutcorrectie bevat dan een data cd kan het wel zo zijn dat je bij het rippen wat storing meeneemt.

Zie ook
http://www.ncf.carleton.ca/~aa571/daefaq.htm

Hoi RGJ,

Vandaag met xtractor begonnen. Best mooi programma. Leer een beetje hoe gewone visual C programma’s werken. Het is m.i. niet in MFC geschreven.

RGJ, Je kan de Windows code toch gewoon in een MFC programma (als Filezilla) hangen? MFC moet je toch zien als voorgedefineerde Windows code in class format.

Met Filezilla kan je geen audio cd’s lezen en met xtractor geen data cd’s, dus met een merge van de code kan je beide cd’s lezen.

Ik zie ook dat cddb getal niet uniek zijn. Ik heb een dvd van Guus Meeuwes geeft John Hiatt of Matchbox 20 en nog een andere onbekende suggestie.

Ben er ook achter gekomen dat xtractor ook raw formaat (.dat) kan dumpen. Ik denk aan om als je 1 track ript je twee hashes krijgt namelijk 1 voor de wav file en 1 voor de raw file in 1 lees exercitie.

De bedoeling is dat je de ‘orginele cd’ weer gaat maken door de afzonderlijke tracks bij de peers te gaan halen. Later ga ik wel op zoek naar burn source code om de cd weer te laten “branden”.

Ik heb een filetype bedacht voor het filesystem programma i.r.t. audio/data cd’s:
Filetype=
Raw 0000001=1
Data 0000010=2
Program 0000100=4
Executable 0001000=8
Picture 0010000=16
Audio 0100000=32
Movie 1000000=64

03/25/2005 09:19a 45,374,784 Sweet Sixteen.dat => Raw + Data + Audio
03/25/2005 09:42a 45,381,884 Sweet Sixteen.wav => Data + Audio.

Om een totale hash van een datadisk te maken zal je m.i. “hash + path/file + rechten van files” moeten gaan sorteren in MySQL. Rechten van files is bij linuz “drwxrwxrwx”. Bij Windows niet zo veel tegengekomen dat files rechten hebben op een data cd. Wel zie je dat je owner ik kan stellen met properties.

Je zou bat, exe en com files in Windows omgeving default ‘x’ mee kunnen geven.

De cd en dvd van Guus Meeuwes zijn beveiligd. Ik zie geen track time in xtractor staat.
Een andere “beveiliging opheffer” is: Glitch killer Oksid.ch  •  All about DMX512

Om snel te bepalen welke audio cd er in zit zou je van elke track de eerste 4kb kunnen pakken en van het totaal een hash gaan maken. Je hebt m.i. iets beters in de hand dan het cddb getal. Mogelijk kan dezelfde methode op data cd worden gedaan. Alleen lijkt mij niet handig om alle files te onderzoeken als er duizenden files op staan. Mogelijk eerste honderd files en hiervan de eerste 4 kb pakken.

Als je een cd er in doet dan gaat hij twee routines in achter grond uitvoeren. De snelle hash berekenen en parallel hieraan alle track’s identificeren.

Je krijgt dan bijvoorbeeld binnen enkele seconden de log tabel melding ‘probably “the river” from “bruce springsteen” in Disk D:’

Als cd “stuk is” krijg je ook een melding in log tabel.

De vriendelijke groet Jan Marco

Hoi RGJ,

Ben bezig om de code te bestuderen van xtractor. Ik wil graag 1 source file met 1 dll aanroep naar de module die Nero ook gebruikt. Ik zie dat er veel met windows messages wordt gewerkt naar de verschillende delen van het programma. Daar wil ik het liefst vanaf. Gewoon de code van de message “gaan halen”.

Bijvoorbeeld in WriteInfo2CDPlayerINI:

for( i = 0; i < n; i++ )
{
wsprintf( buf, “%d”, i );
SendMessage( hTrackWnd, WM_GETTRACK, (WPARAM)i, (LPARAM)&t );
WritePrivateProfileString( section, buf, t.name, szCDPlayerIni );
}

De tracks worden in bovenstaande code in c:\winnt\cdplayer.ini gezet. Zie ook appendix A.

Bij het volgende project is een list box geprogrammeerd. http://www.codeproject.com/listctrl/skinlist.asp

Ik vind het er niet zo goed uitzien, maar misschien handig als we duizenden items wil laten zien. Kan je beter een gedeelte uit mysql halen.

Wat ik van volgende project goed vind is het handje/link als je over de tree items gaat:
http://www.codeproject.com/tools/KeePass.asp

De vriendelijke groet Jan Marco

Appendix A: cdplayer.ini
[D1FF69]
EntryType=1
artist=Billy Idol
title=Whiplash Smile
genre=rock
numtracks=10
0=Worlds Forgotten Boy
1=To Be A Lover
2=Soul Standing By
3=Sweet Sixteen
4=Man For All Seasons
5=Don’t Need A Gun
6=Beyond Belief
7=Fatal Charm
8=All Summer Single
9=One Night, One Chance

Hoi RGJ,

Ik heb veel problemen gehad om meer dan 1 netwerk kaart in een Windows2000 machine aan de praat te krijgen. Zal wel ergens een parameter op 1 netwerkkaart staan.

Vanmorgen opnieuw windows geinstalleerd met drie netwerkkaarten er in en nu is het mij wel gelukt om drie netwerkkaarten werkend te krijgen.

Wat ik zie bij xtractor is dat hij de audio cd leest met ReadCDAudioLBAEx. In deze routine wordt naar jitterAdjust aangeroepen. Deze procudure roept erg vaak compBuf aan. Het rippen gaat nu erg traag. N.B. Snelheid is nu even niet belangrijk, maar de opbouw van het programma doorkrijgen wel,

De vriendelijke groet Jan Marco

Appendix A: Rip trace:
0039:aspilib:ReadCDAudioLBAEx!
0042:aspilib:dbprintf!
0037:aspilib:allZeros!
0042:aspilib:dbprintf!
0042:aspilib:dbprintf!
0042:aspilib:dbprintf!
0038:aspilib:jitterAdjust!
0037:aspilib:allZeros!
0040:aspilib:compBuf!
0040:aspilib:compBuf!
0040:aspilib:compBuf!
0040:aspilib:compBuf!
0040:aspilib:compBuf!
0040:aspilib:compBuf!
0040:aspilib:compBuf!

Hoi RGJ,

Ik ben bezig om xtractor te bestuderen en de code in een project met werktitel “audioripper” op te bouwen. Met audioripper-0.00.zip kan je de Table of Content (TOC) al lezen van een cd. Audioripper gebruikt de dll WNASPI32.DLL. Nero gebruikt deze door iemand anders gemaakte dll ook.

Audioripper stuurt het cdrom device aan op meer basic (SCSI) niveau. Ik zal nog uitzoeken of je de data tracks ook kan lezen op RAW formaat. Je kan een datatrack als een opslagruimte zien, waarover je het (“record”)structuur van een filesysteem kan leggen.

Mogelijk kan je met schrijfroutines in WNASPI32.DLL gebruiken om de cd te schrijven.

Zit er een data track in dan kan je ook met “filesystem” de files hashen. Zie appendix A voor een voorbeeld van het lezen van een TOC. LBA Addressing is in ruimte eenheden en met MSF Addressing zijn de ruimte eenheden in tijd omgezet. De gegevens lopen cumulatief op.

Momenteel heb ik het volgende framework voor ogen:

  1. Foonsearchd.exe (= initieel gnunet = poort 2086): De code werkt op Linux/Windows. Binnenkomende messagepack berichtjes worden in de queue gezet en met een andere thread verwerkt. Ik denk dat het verstandig is om het niet veel complexer te maken als het nu al is. Een SQL bericht zal er nog in gemaakt moeten worden. N.B. Een SQL berichtje kan ook een mailtje zijn. Berichten zippen en encrypty kan gemakkelijk aan gezet worden. Je hebt voor elke verbinding naar een andere peer een andere encryptie.

  2. fshserver (= initieel filezilla server = poort 21)
    a) filesystem/audioripper: Hier ben ik momenteel mee bezig. Ik wil proberen om alle cd typen te kunnen inlezen in mysql. Als je een cd er indoet dan moet hij gaan identificeren welke cd het is en via cddb een audio cd gaan resolven. Het kan wel zijn dat het cddb getal meerdere cd’s aanwijst. Je zou dan dit in mysql moeten zetten en via de GUI punt 4) handmatig moeten resolven. Je ziet dan in de database browser dat je nog zaken moet beantwoorden. Ik hang het programma hier omdat ik in filezilla server “gemakkelijk” bij het open/dichtdoen van de cdrom het filesystem/audioripper programma kan aansturen.

b) ftp (filezilla server) gedeelte: Als iemand van buiten op je filezilla server gaat aanloggen ga je hem laten browsen in je database i.p.v. in je werkelijke filesysteem. Je gaat in mysql testen of hij de file wel mag zien/ophalen.

c) wget: Ga ik gebruiken om ftp/sftp/http bestanden te halen van andere peers. De code heb ik al eens in 1 file gezet en werkend naar windows visual C “omgezet”. Ik denk dat je straks zal zien dat wlm wget aanstuurt om op een andere peer iets te halen. De andere peer gebruikt ftp (filezilla server) gedeelte om de filetransport te autoriseren.

d) ntp (poort = 123): Een time synchronisatie gedeelte vind ik wel belangrijk. Mogelijk de onderlinge berichten naar 1) ombouwen (poort 2086). Als je een bericht naar een andere peer stuurt slaat hij hem direct op, dus heb je direct een time-stamp.

e) Wlm (work load manager: initieel http://fcron.free.fr/): Hier ga ik online info halen bij nic.nl en kvk.nl etc door gewoon surf gedrag na te bootsen. Als je elke 5 sekonden een nieuwe pagina gaat ophalen dan wordt je ip-nummer geblokkeerd of deze sites hebben vaak ook een maximaal aantal pagina’s die je per dag mag ophalen.

  1. httpserver (= initieel apache server = poort 80): Gewoon apache pakken en dan koppeling met mysql leggen als je lokale files gaat aanklikken. Ik denk wel aan om een rootpagina ook in de database op te nemen. Heb je bijvoorbeeld een zoekfunctionaliteit als bij 4). De moderator van de online zoekpagina maakt een nieuwe rootpagina in zijn database. Deze database laat je dan synchroniseren met de peers (van eindgebruikers).

  2. foonsearch.exe GUI (= initieel filezilla): Dit wordt de database browser voor de eindgebruikers in Visual C geschreven, dus alleen voor Windows-PC’s te gebruiken. Hierin kan je in foondump database en de online versie gaan zoeken op telefoonnummers en andere zaken. Je zoekt namelijk in mysql en met sql berichtjes naar andere peers via 1) met poort 2086,

RGJ, Ik zal komende weken bovenstaande meer te gaan vullen,

De vriendelijke groet Jan Marco

Appendix A: CD van Guus Meeuwis:
CD #0, LBA Addressing
firstTrack: 1, lastTrack: 16, tocLen: 35328
track 1: 00000000 (0), flag: audio
track 2: 000052fd (21245), flag: audio
track 3: 000091a3 (37283), flag: audio
track 4: 0000dfa2 (57250), flag: audio
track 5: 00011c79 (72825), flag: audio
track 6: 000154c1 (87233), flag: audio
track 7: 00019145 (102725), flag: audio
track 8: 0001dea2 (122530), flag: audio
track 9: 0002344f (144463), flag: audio
track 10: 00028477 (164983), flag: audio
track 11: 0002bf7c (180092), flag: audio
track 12: 00030893 (198803), flag: audio
track 13: 000352ee (217838), flag: audio
track 14: 00039f60 (237408), flag: audio
track 15: 0003de91 (253585), flag: audio
track 16: 00044d0e (281870), flag: data
track 170: 00051432 (332850), flag: data

CD #100, MSF Addressing
firstTrack: 1, lastTrack: 16, tocLen: 35328
track 1: 00:02:00, flag: audio
track 2: 04:45:20, flag: audio
track 3: 08:19:08, flag: audio
track 4: 12:45:25, flag: audio
track 5: 16:13:00, flag: audio
track 6: 19:25:08, flag: audio
track 7: 22:51:50, flag: audio
track 8: 27:15:55, flag: audio
track 9: 32:08:13, flag: audio
track 10: 36:41:58, flag: audio
track 11: 40:03:17, flag: audio
track 12: 44:12:53, flag: audio
track 13: 48:26:38, flag: audio
track 14: 52:47:33, flag: audio
track 15: 56:23:10, flag: audio
track 16: 62:40:20, flag: data
track 170: 74:00:00, flag: data

Hoi RGJ,

Ben bezig om xtractor naar 1 file om te zetten. Het .exe programma is nu 169 kb groot. Zoveel mogelijk van dll afkomen en de class files wegwerken. Ook de messages naar de verschillende onderdelen van programma er uit halen.

Momenteel krijg ik cddb info bij een bepaalde cd uit internet.

Aankomend weekend wil ik het audio rip gedeelte werkend krijgen.

Intercept the insertion/removal of a CD/DVD:
http://www.codeproject.com/useritems/Message_Spy.asp

De vriendelijke groet Jan Marco

Hoi RGJ,

Ik zag gisteren:
http://www.codeproject.com/useritems/Scan2PDF.asp “A utility for bulk scanning, converting the scanned pages to PDF and burning them on CD/DVD for archiving (Unedited)”

Met name heb ik belangstelling voor Nero Platinum Suite – Preisgekrönter Alleskönner

Met audiorip maak je (dat/wav) hashes van audio tracks. Peers zetten tracks in dat/wav op hun systemen. Hierna ga je met het protocol audiotracks verzamelen op je eigen peer en daarna kan je automatisch weer een orginele CD laten branden met behulp van de Nero source code.

Vanaf Konningedag een week vrij genomen. Ik ga dan beginnen met de GUI. Gewoon Megafoon pink in Filezilla gaan bouwen. Bij Free record entry naar “CD base” linken. Bij Funprice computer onderdelen base er bij knutselen met EAN-code. Funprice levert ook CD’s (denk aan Windows/Norton virusscanner) , dus heeft ook koppeling naar “CD base”.

De white entries die niet in pink zitten later er in gaan inserten. Ik opteer naar 1 “telefoonboek”.

Het resultaat van de MFC GUI zal zijn dat je records kan browsen en records op 1 peer kan toevoegen/aanpassen.

Hierna foonsearchd operationeel maken met SQL berichtjes, waardoor je de SQL vragen over “alle” peers kan verspreiden.

De vriendelijke groet Jan Marco

Hoi RGJ,

Ik heb wat problemen met mijn linker pols, lijkt op RSI. Dus een paar dagen wat rustig aan doen.

Ben bezig om het rippen van tracks aan te zetten in audiorip. Ik bestudeer xtractor en kijk naar de printf in de log file.

De audiorip code wordt m.i. wel een stuk overzichtelijker. Hierna de info in mysql zetten. Ik ga ook uitzoek of ik een snellere cd resolutie hash kan maken.

De vriendelijke groet Jan Marco

Hoi RGJ,

Xtractor gebruikt een thread om cddb info te gaan halen. Ook is er een thread die de info van de audiocd in memory zet. Daarnaast is er een thead die de data in memory naar WAV/DAT formaat omzet.

DLL’s zoals lame_enc.dll van http://lame.sourceforge.net/ wordt gebruikt om een bewerking op de cdaudio data uit te voeren. Als je deze dll in xtractor doet dan kan je hem in een selectiescherm gaan selecteren om output (bijvoorbeeld MP3) te genereren.

Ik denk om DLL te gaan gebruiken op dezelfde manier als Lame. Je standaardiseert de routines om het te initialiseren/finaliseren. In mijn beeld heb je een framework met o.a. de work load manager en in/output queues, wget, etc. In de dll programmeer je het halen van bijvoorbeeld kvk info of funda.nl info. DLL dus een programma module die je niet in core programma meegelinkt wil hebben. Iedere end-user zou naar behoefte andere DLL kunnen laten aansturen.

De workload manager simuleert normaal browser gedrag door de DLL’s aan te roepen.

De vriendelijke groet Jan Marco

Hoi RGJ,

Ben met audiorip bezig. T’s wel een beetje buggen om het aan de praat te krijgen. Wordt een stuk strakker als je al die windows scherm code er uit hebt.

Ik denk aan een snelle hash door < 0.5% van de cd te lezen. Heb je deze snelle hash niet dan van elke track een wav en dat hash berekenen. Als je toch de hele cd scant dan ook proberen om een hash van iso-CD-formaat van de cd te laten berekenen.

Ik zag bij het kopiëren van Windows XP professional (2002) dat clonecd 296983 blokken aangeeft. Ik zie in TOC van xtractor deze waarde terug komen. Een data CD heeft vaak 1 track.

Morgen met Nero source aan de gang. Leuk zou zijn als je een iso zou kunnen maken en met de source kit van Nero hem automatisch kan laten branden. N.B. Files branden werkt wel, want ze scannen documenten in en branden deze op cd met de Nero source kit,

De vriendelijke groet Jan Marco

Hoi RGJ,

Het is mij gelukt om de eerste track van Sheryl Crow titel “Run, Baby, Run” in wav formaat te rippen en af te spelen. Song is m.i. niet zo’n hoogstandje, maar Sheryl Crow geeft 1 record bij CDDB terug, daarom deze cd gekozen.

Ik heb dit op drie pc gedaan. Bij een van deze pc is hij nog bezig (pentium 4, 2,4 Ghz 523,764 Kb ram on CPU), want hij is aldoor met jitter correctie bezig. De andere twee zijn sneller machines en dan gaat het rippen van een track erg snel. Mogelijk zit er toch een knelpunt als je geen snelle machine hebt.

Ik zie dat het programma de eerste keer 26 Frames leest en hierna aldoor 23 Frames. Zie ook Appendix A: rip sequence.

Lijkt mij gemakkelijk om een snelle hash te maken. N.B. CDDB kijkt alleen naar track tijden en ik wil ook naar de inhoud van de cd kijken.

De cd heeft totaal 224102 Frames. Je leest eigenlijk 224102/23 =9742 Frame sequences in. Een half procent is 48 Frame sequences welke gebruikt kan worden voor de snelle hash. Het lijkt mij handig als je niet al te veel Frame sequences hebt om een ondergrens van bijvoorbeeld 10 te stellen. Ik denk dus aan max(10, aantal_Frames_cd/4600).

Dus het volgende inlezen en in 1 dat file zetten:
0005:023:riptracks.c:RipThread(!e.endFrame=224102!e.startFrame=0!maxRip=26!
0005:023:riptracks.c:RipThread(!e.endFrame=224102e.startFrame=4600!maxRip=26!
0005:023:riptracks.c:RipThread(!e.endFrame=224102e.startFrame=9200!maxRip=26!
.
.
Hierna de hash van de file laten berekenen. Ik weet ook niet of ik willekeurig op een startFrame 23 Frames kan laten lezen. Ik zie in het Xtractor programma dat het aantal in te lezen Frames in te stellen is, alleen zie ik in de source code dat er een bovengrens van 26 zou zijn.

Ik zie bij CloneCD dat hij ook track voor track uitleest.

RGJ, Misschien weet jij een link naar het formaat van een ISO_Image CD/DVD?

De vriendelijke groet Jan Marco

Appendix A: rip sequence:

0005:023:riptracks.c:RipThread(!e.endFrame=21985!e.startFrame=0!maxRip=26!
0005:023:riptracks.c:RipThread(!e.endFrame=21985!e.startFrame=26!maxRip=26!
0005:023:riptracks.c:RipThread(!e.endFrame=21985!e.startFrame=49!maxRip=26!
0005:023:riptracks.c:RipThread(!e.endFrame=21985!e.startFrame=72!maxRip=26!
0005:023:riptracks.c:RipThread(!e.endFrame=21985!e.startFrame=95!maxRip=26!
0005:023:riptracks.c:RipThread(!e.endFrame=21985!e.startFrame=118!maxRip=26!
0005:023:riptracks.c:RipThread(!e.endFrame=21985!e.startFrame=141!maxRip=26!
.
.

Hoi RGJ,

Het lezen van postcode pro (data) CD werkt wel.

firstTrack: 1, lastTrack: 1, tocLen: 4608
track 1: 00000000 (0), flag: data
track 170: 00001085 (4229), flag: data

Ik denk dat track1 4229 * 2352=9946608 lang is. Het programma gaat van 1 frame minder uit namelijk 4228 * 2352 = 9944256 bytes lang. N.B. Het filesystem geeft 8658944 bytes aan.

04/30/2005 06:21p 53,248 fshhash.exe
05/02/2005 07:38a 9,944,256 poes.dat
05/02/2005 07:38a 9,944,300 poes.wav

fshhash poes.dat:
f00e380fe49fc7ae463d47c2abaff98e8e9dd77f4dec1cddc455b2c792539205897341b4ec8eae5bc0bc9705169081

fshhash poes.wav:
a500ed494511300c2272261e05b6e01c720fde6c9d8c167985737356a3158ca3d3497fcbf59da343ecbc973da76f14

Een wav file is hetzelfde als dat file echter met 44 bytes header. Ik zal het maken van wav file moeten uitzetten als het om een data track gaat.

Er staan nog 379 frames extra op. (tocLen=4608 - track170=4229) =379 Frames.

Misschien weet jij een link naar het formaat van een ISO_Image CD/DVD?

Ik weet niet direct een link maar er zijn wel (linux) programma’s die van Nero naar Iso omzetten of van CloneCd naar ISO. Daarnaast een iso dump programma:

ftp://metalab.unc.edu/pub/linux/utils/disk-management/isodump-0.05.02.tar.gz
ftp://metalab.unc.edu/pub/Linux/utils/disk-management/isoinfo-0.03.02.tar.gz

http://http.us.debian.org/debian/pool/main/n/nrg2iso/nrg2iso_0.4-1.tar.gz

http://www.linuxquestions.org/questions/showthread.php?threadid=21921 :

I looked at the source of nrg2iso a guess what:
t simply skips first 300kB (307200 bytes)! So, nrg = 300kB + iso. That means you >don’t need the nrg2iso (and C compiler to build it), enough is dd:
’dd bs=1k if=image.nrg of=image.iso skip=300’

RGJ, Het omzetten naar Iso is gaan hoofdzaak. Het gaat er alleen om dat je een cd kan gaan zoeken ook als het in een andere formaat is opgeslagen.

Momenteel denk ik aan om per track een .dat hash te maken van een audio/data track. Hiernaast een totale .dat hash maken van de gehele cd. Dus in bovenstaand voorbeeld van Frame 0 tot 4608.

De windows XP professional CD gaat fout op laatste stuk. NumFrames gaat naar nul voordat de cd gelezen. Zal nog moeten uitzoeken hoe dat komt.

Vandaag ga ik de cddb routines weer aan de praat maken. Hij leest nu wel totaal info echter het rippen van de onderdelen gebeurt niet meer, want ik wilde van aparte class file af komen.

Morgen ga ik proberen om cddb gedeelte te gebruiken om funda.nl info te gaan halen. Als je funda info in mysql zet kan je beter zoeken en bijhouden of de prijs gestegen/gedaald is in de tijd gezien.

De vriendelijke groet Jan Marco