Audio CD: Track auslesen



  • Falls es wen interressiert: Ich habs raus 👍 👍 👍
    Ich finde es absolut unlogisch, dass es so funktioniert, aber es tuts! Außer dass mit dem teilweisen einlesen, das macht Sinn. Dummerweise war auf meiner CD das erste Lied das kürzeste, unter 1 Minute. Da hatte ich keinen Zusammenhang gesehen...
    Aber das mit dem 2048 vs 2352 versteh ich nicht... Naja, solange es jetzt funktioniert *FREU* 😃

    Man siehe:

    RAW_READ_INFO Info;
    	Info.TrackMode = CDDA;
    	Info.SectorCount = SECTORS_AT_READ;
    
    	ULONG BytesToRead = Track.Length*SECTOR_SIZE;
    	char* Buf = (char*)malloc( BytesToRead );
    
    	#define SECTORS_AT_READ	13
    
    	ULONG PartCount = Track.Length / SECTORS_AT_READ;
    
    	for ( ULONG i=0; i<PartCount; i++ )
    	{
    		Info.DiskOffset.QuadPart = Track.Address*2048 + i*SECTORS_AT_READ*2048;
    
    		ULONG Dummy;
    		if ( 0 == DeviceIoControl( m_hCD, IOCTL_CDROM_RAW_READ, &Info, sizeof(Info), Buf+i*SECTORS_AT_READ*SECTOR_SIZE, SECTORS_AT_READ*SECTOR_SIZE, &Dummy, NULL ) )
    		{
    			printf( "RAW_READ: %s\n", StrGetLastError() );
    			break;
    		}
    	}
    
    	ULONG Remaining = Track.Length % SECTORS_AT_READ;
    	Info.DiskOffset.QuadPart = Track.Address*2048 + i*SECTORS_AT_READ*2048;
    	Info.SectorCount = Remaining;
    	ULONG Dummy;
    	if ( 0 == DeviceIoControl( m_hCD, IOCTL_CDROM_RAW_READ, &Info, sizeof(Info), Buf+i*SECTORS_AT_READ*SECTOR_SIZE, Remaining*SECTOR_SIZE, &Dummy, NULL ) )
    	{
    		printf( "RAW_READ: %s\n", StrGetLastError() );
    		break;
    	}
    
    	CWaveFile Wave;
    	Wave.Save( "C:\\Song.wav", 44100, 16, 2, Buf, BytesToRead );
    


  • Also ich muss sagen: Ich find deinen Code echt interessant...kannste mir den mal schicken ? 😉



  • Klar, gerne! Hab auch ne Klasse draus gemacht. Kann man aber nur verwenden, um Audio-CDs einzulesen. Als Waves.
    Naja, und man kann das CD-Laufwerk auf- und zumachen 😃



  • Und CWaveFile ist auch dabei ? (-> auch von dir) ?



  • Kann ich mitschicken 😉 Brauche aber erstmal deine E-Mail-Addresse und muss gucken, welche Dateien ich alle reinpacken muss. Mache ich dann aber heut abend noch!



  • Supähr^^ ...:

    Voila: cpp[Minus]coding[At]arcor[Punkt]de



  • Wer noch nen paar Infos will -> Hab mal sowas wie ein Tutorial auf CodeProject gepostet. Hier klicken

    Wer den Artikel mag, darf auch gerne voten 😃



  • Badestrand schrieb:

    Wer den Artikel mag, darf auch gerne voten 😃

    Hab da gleich mal für dich gevoted 😉 .



  • hehe^^ Hab ich schon gesehen. Danke Danke!!!



  • wow du bist ja voll der profi 👍


Anmelden zum Antworten