Libcdaudio es una vieja libreria para gestionar un driver CD. Podemos utilizarla para obtener informaciones de un CD audio.

Public Struct track_info
track_length_minutes As Integer
track_length_seconds As Integer
track_length_frames As Integer
track_pos_minutes As Integer
track_pos_seconds As Integer
track_pos_frames As Integer
track_lba As Integer
track_type As Integer
End Struct


Public Struct disco_info
disc_present As Integer
disc_mode As Integer
disc_track_time_minutes As Integer
disc_track_time_seconds As Integer
disc_track_time_frames As Integer
disc_time_minutes As Integer
disc_time_seconds As Integer
disc_time_frames As Integer
disc_length_minutes As Integer
disc_length_seconds As Integer
disc_length_frames As Integer
disc_current_track As Integer
disc_first_track As Integer
disc_total_tracks As Integer
disc_track[100] As Struct Track_info
End Struct


Library "libcdaudio:1.0.0"

' int cd_init_device(char *device_name)
' Inicializa la libreria 'libcdaudio'.
Private Extern cd_init_device(device_name As String) As Integer

' int cd_stat(int cd_desc, struct disc_info *disc)
' Obtiene informaciones generales del CD audio.
Private Extern cd_stat(cd_desc As Integer, disc_Str As Disco_info) As Integer

' int cd_close(int cd_desc)
' Cerra la libreria.
Private Extern cd_close(cd_desc As Integer) As Integer


Public Sub Main()

Dim d As Integer
Dim disco As New Disco_info
Dim t As Byte


d = cd_init_device("/dev/cdrom")
If d < 0 Then Error.Raise("File-device del Drive CD no encontrado !")

cd_stat(d, disco)

If disco.disc_present = 1 Then
Print "El Driver-CD contiene un disco audio.\n"
Print "Duración del disco: "; disco.disc_length_minutes; "' "; disco.disc_length_seconds; "\""
Print "Numero de las pistas audio: "; disco.disc_total_tracks
For t = 1 To disco.disc_total_tracks
Print "Duración de la pista n. "; t; " = "; disco.disc_track[t - 1].track_length_minutes & "' " & disco.disc_track[t - 1].track_length_seconds & "\""
Next
Else
Print "No hay disco en el Driver-CD, o, si está presente, no es un CD audio !"
Endif

cd_close(d)

End