Recording a CD to a Wave file

This function uses the multimedia control interface (MCI) to control the CD drive.

Public Sub RecordWave(TrackNum As Integer, Filename As String)
'Tracknum: track to record
'Filename: file to save wave as
On Local Error Resume Next
Dim i As Long, RS As String, cb As Long, t#
RS = Space$(128)
i = mciSendString("stop cdaudio", RS, 128, cb)
i = mciSendString("close cdaudio", RS, 128, cb)
Kill filename
RS = Space$(128)
i = mciSendString("status cdaudio position track " & TrackNum, RS, 128, cb)
i = mciSendString("open cdaudio", RS, 128, cb)
i = mciSendString("set cdaudio time format milliseconds", RS, 128, cb)
i = mciSendString("play cdaudio", RS, 128, cb)
i = mciSendString("open new type waveaudio alias capture", RS, 128, cb)
i = mciSendString("record capture", RS, 128, cb)

t# = Timer + 1: Do Until Timer > t#: DoEvents: Loop

i = mciSendString("save capture " & filename, RS, 128, cb)
i = mciSendString("stop cdaudio", RS, 128, cb)
i = mciSendString("close cdaudio", RS, 128, cb)

End Sub

The method is quite easy:

1) Stop everything in the CD drive
2) Start playing track
3) Record a new wave with the information from the CD (note: it also records MIDI and microphone sounds: in fact anything coming out of the speakers)
4) Save the wave file
5) Stop the CD again

Buy Car Coverage On Line | Calling Cards | Find a Realtor | Discount Window Shades | Auto Insurance Quotes