folgendes geht per Umweg ..
Code: Alles auswählen
;pb4 - winXP tested
Global td$ ,ms.l
td$=GetTemporaryDirectory()
Procedure.s RecordWav()
mciSendString_("open new type waveaudio alias capture",buffer$,128,0)
mciSendString_("set capture samplesperbuffer 8000 bytesperbuffer 8000",0,0,0)
mciSendString_("record capture",buffer$,128,0)
Sleep_(ms) ; Wait for specified capture time to end.
Debug "save capture "+Chr(34)+td$+"test.wav"+Chr(34)
mciSendString_("save capture "+Chr(34)+td$+"test.wav"+Chr(34),buffer$,128,0)
EndProcedure
;AufnahmeKanal einstellen per mixer
RunProgram("sndvol32.exe","/record","",#PB_Program_Wait)
;RunProgram("sndrec32.exe","/record","",#PB_Program_Wait)
ms=5000 ;feste Länge 5000mSek
MessageRequester("Info","Click OK to capture audio to buffer for "+Str(ms/1000)+" Sec",0)
RecordWav()
MessageRequester("Info","Done!",0)
;
;statt loadsound() ein selbstgehäkeltes loadsound, kann ja mal jemand
;umstricken, so dass der direkt in der mciprozedur erstellte Bereich 'capture'
;gecatcht wird
;
If ReadFile(0, td$+"test.wav")
length = Lof(0)
*MemoryID = AllocateMemory(length)
If *MemoryID
bytes = ReadData(0, *MemoryID, length)
Debug "Anzahl der gelesenen Bytes: " + Str(bytes)
EndIf
CloseFile(0)
EndIf
InitSound()
Debug CatchSound(0,*Memoryid,length)
PlaySound(0,0)
Delay(ms);damit man auch was hört
MessageRequester("wow","now you have "+Str(length)+"Bytes more crap&scrap in "+td$,0)