Code archives/Audio/Recording Wav Files
This code has been declared by its author to be Public Domain code.
Download source code
| |||||
| This code uses windows mci functions to record wave files. (Thanks to Vertex for for CD door control example) | |||||
; Wav Recording
; ZILTCH 2002
snd=LoadSound("anysoundfile.wav")
; put a sample here so we can here something to record
; so we can test the recording
StartWAVrecord(16,22000)
Print "Make sure you recording level in your Windows mixer is set above zero"
Print "Also make sure the mixer is set so all channels can be recorded."
Print ""
Print "Recording now."
Print "Press space key to trigger sample."
Print "Escape to stop."
a#=0
hz=40000
While Not KeyHit(1)
If KeyHit(57) Then
a=a+1
If Float (a/2) = Int(a/2) Then
ch=PlaySound(snd)
a = 0
End If
EndIf
If ch> 0 Then ChannelPitch ch,hz
hz=hz-1
If hz < 20000 Then hz =44000
Wend
StopWAVrecord()
FlushKeys
WaitKey()
Print "playback before saving"
PlayrecordedWAV()
WaitKey()
SaveWAVrecord("Stest.wav")
; the new wav file is saved with this name.
FreeSound ch
CloseWAVrecord()
;it is important to close the wave at the end;
End
;end test code
;------------ functions
Function StartWAVrecord(bitspersample=16,samplespersec=44000)
If (bitspersample <> 8) And (bitspersample <> 16)And (bitspersample <> 24) Then
RuntimeError "Bits per sample musr be 8,16 or 24"
Return
End If
mmstr$ = "open New type WaveAudio alias Capture"
mminfo = CreateBank(Len(mmstr$))
For I = 1 To Len(mmstr$)
PokeByte mminfo,I - 1,Asc(Mid$(mmstr$,I,1))
Next
CallDLL("winmm.dll","mciExecute",mminfo)
Print "*"
bytes = bitspersample/4
mmstr$ = "Set Capture time format ms bitspersample "+bitspersample+" channels 2 samplespersec "+samplespersec+" bytespersec "+samplespersec*bytes+" alignment "+bytes+" "
mminfo = CreateBank(Len(mmstr$))
For I = 1 To Len(mmstr$)-1
PokeByte mminfo,I - 1,Asc(Mid$(mmstr$,I,1))
Next
CallDLL("winmm.dll","mciExecute",mminfo)
Print "**"
mmstr$ = "record Capture "
mminfo = CreateBank(Len(mmstr$))
For I = 1 To Len(mmstr$)-1
PokeByte mminfo,I - 1,Asc(Mid$(mmstr$,I,1))
Next
CallDLL("winmm.dll","mciExecute",mminfo)
End Function
Function SaveWAVrecord(fname$)
mmstr$ = "save Capture "+ fname$
mminfo = CreateBank(Len(mmstr$))
For I = 1 To Len(mmstr$)
PokeByte mminfo,I - 1,Asc(Mid$(mmstr$,I,1))
Next
CallDLL("winmm.dll","mciExecute",mminfo)
End Function
Function StopWAVrecord()
mmstr$ = "stop Capture "
mminfo = CreateBank(Len(mmstr$))
For I = 1 To Len(mmstr$)-1
PokeByte mminfo,I - 1,Asc(Mid$(mmstr$,I,1))
Next
CallDLL("winmm.dll","mciExecute",mminfo)
End Function
Function CloseWAVrecord()
mmstr$ = "close Capture "
mminfo = CreateBank(Len(mmstr$))
For I = 1 To Len(mmstr$)-1
PokeByte mminfo,I - 1,Asc(Mid$(mmstr$,I,1))
Next
CallDLL("winmm.dll","mciExecute",mminfo)
End Function
Function PlayrecordedWAV()
mmstr$ = "seek Capture to start "
mminfo = CreateBank(Len(mmstr$))
For I = 1 To Len(mmstr$ )-1
PokeByte mminfo,I - 1,Asc(Mid$(mmstr$,I,1))
Next
CallDLL("winmm.dll","mciExecute",mminfo)
mmstr$ = "play Capture "
mminfo = CreateBank(Len(mmstr$))
For I = 1 To Len(mmstr$)-1
PokeByte mminfo,I - 1,Asc(Mid$(mmstr$,I,1))
Next
CallDLL("winmm.dll","mciExecute",mminfo)
End Function |
Comments
None.
Code Archives Forum