Copyright © 2006-2023 MultiMedia Soft

How to get Audio CD info using CDDB servers

Previous pageReturn to chapter overviewNext page

There are two ways to obtain information about an Audio CD:

 

If a CD audio is physically available inside the CD drive: through CDDB queries to CDDB servers distributed around the world.

 

CDDB (which stands for Compact Disc Database) is a database for software applications to look up CD information over the Internet. This is performed by a client which calculates a (nearly) unique disc ID and then queries the database. As a result, the client is able to display the artist name, CD title, track list and some additional information.

 

The first needed task, in order to retrieve CDDB information about an audio CD, is to verify the availability of an open Internet connection and then to request the list of available CDDB servers: this operation is performed through a call to the CddbRequestServersList method: due to the fact that retrieving information from the Internet can be a lengthy operation, this call will return immediately and, when the list of servers will be available, the container application is notified through the CallbackForRecordersEvents delegate which is invoked with the nEvent parameter set to EV_REC_CDDB_SERVERS_AVAIL: at this point it will be possible requesting each CDDB server's friendly name using the CddbGetServerName method. Note that if the target PC is running behind a proxy, you have the possibility to set the proxy details through the CddbSetProxyDetails method.

 

The second needed task is to have an audio CD inserted inside a CD drive on the target machine: this will allow calling the CddbRequestAlbumInfo method that, after calculating the audio CD's Unique Identification Number, will send a request to the CDDB server of choice: also in this case, retrieving information from the Internet can be a lengthy operation, so this call will return immediately; when the CD album information will be available, the container application is notified through the CallbackForRecordersEvents delegate which is invoked with the nEvent parameter set to EV_REC_CDDB_ALBUM_INFO_AVAIL: at this point it will be possible requesting specific album information through the CddbGetAlbumInfo method, enumerating CD tracks calling the GetCdNumTracks method and obtain the title of each single track through the CddbGetTrackTitle method.

 

When CD album information are requested and obtained through a call to the CddbRequestAlbumInfo method, the control automatically performs a search of the same Audio CD in order to obtain cover pictures (also know as CD cover art) of the Audio CD: these pictures are usually of three different sizes: Small (thumbnail), Medium and Large. When this information is found, the control notifies the container application about their availability through the CallbackForRecordersEvents delegate which is invoked with the nEvent parameter set to:

 

EV_REC_CD_COVER_URLS_AVAIL: notifies that the URL pointing to a certain CD cover picture is available and can be obtained through a call to the GetCdCoverPictureURL method.
EV_REC_CD_COVER_SMALL_FILE_AVAIL, EV_REC_CD_COVER_MEDIUM_FILE_AVAIL and EV_REC_CD_COVER_LARGE_FILE_AVAIL: notify that a certain CD cover picture has been downloaded and is now available locally: the local absolute pathname of the picture can at this point be obtained through a call to the GetCdCoverPictureFile method. It's important to note that the downloaded picture files are temporarily stored inside the system defined "Temp" directory and are automatically deleted when the container application is closed.

 

If a CD audio is NOT physically available inside the CD drive

 

Differently from the method described above, where the artist name and the album title are obtained through a CDDB server, the control can search information about an Audio CD through the CdRequestAlbumInfo method: when requested information become available, the container application is notified through the CallbackForRecordersEvents delegate which is invoked with the nEvent parameter set to:

 

EV_REC_CDDB_ALBUM_INFO_AVAIL: notifies that information about the album is available and can be retrieved through the CddbGetAlbumInfo method; at the same time also the number of tracks and respective titles are retrieved and can be enumerated calling the GetCdNumTracks method (passing -1 to its nCdDriveIndex parameter) in conjunction with the CddbGetTrackTitle method.
EV_REC_CD_COVER_URLS_AVAIL: notifies that the URL pointing to a certain CD cover picture is available and can be obtained through a call to the GetCdCoverPictureURL method.
EV_REC_D_COVER_SMALL_FILE_AVAIL, EV_REC_CD_COVER_MEDIUM_FILE_AVAIL and EV_REC_CD_COVER_LARGE_FILE_AVAIL: notify that a certain CD cover picture has been downloaded and is now available locally: the local absolute pathname of the picture can at this point be obtained through a call to the GetCdCoverPictureFile method. It's important to note that the downloaded picture files are temporarily stored inside the system defined "Temp" directory and are automatically deleted when the container application is closed.