Hallo Daniel,
Ich mache das ganze auch über mcisend und zwar so:
declare Waveinfo#
struct wInfo = Name$(256),Kanäle%,einheit$(12),länge&,größe&,samples&,position&
dim Waveinfo#,wInfo
Proc WAVEöffnen
parameters wavefile$
@MCISend$("open " + wavefile$ + " type waveaudio alias WAVEDat")
EndProc
proc WAVEspielen
parameters wavefile$,startpunkt&,mseconds&,fehler%
declare s$
@MCISend$("open " + wavefile$ + " type waveaudio alias WAVEDat")
if %pcount = 1
@MCISend$("play WAVEDat") 'Datei spielen
elseif mseconds& > 0
s$="PLAY WAVEDat FROM " + str$(startpunkt&) + " TO " + str$(int(startpunkt& + mseconds&))
@MCISend$(s$)
endif
fehler%=%MCIError
case fehler% > 0:wavefile$="Fehler beim Abspielen von " + wavefile$ + " : " + @Str$ (fehler%)
return wavefile$
endproc
proc WAVEstop
@MCISend$("close WAVEDat") '... schließen
return %MCIError
EndProc
Proc WAVEaufnehmen
parameters Wavename$,mseconds&
declare mciBefehl$
mciBefehl$="open new type waveaudio alias NEWWAVE"
@MCISend$(mciBefehl$)
mciBefehl$="set NEWWAVE time format milliseconds"
@MCISend$(mciBefehl$)
mciBefehl$="record NEWWAVE from 0 to " + str$(mseconds&) + " wait"
@MCISend$(mciBefehl$)
mciBefehl$="save NEWWAVE " + Wavename$
if len(Wavename$)
@MCISend$(mciBefehl$)
endif
@MCISend$("close NEWWAVE") '... schließen
EndProc
Proc WaveChangeTimeFormat
parameters wavefile$,form$
if lower$(form$)="m"
form$="MILLISECONDS"
elseif lower$(form$)="b"
form$="BYTES"
endif
declare returnwert$,mciBefehl$
mciBefehl$="open " + wavefile$ + " type waveaudio alias WAVEDat"
@MCISend$(mciBefehl$)
@MCISend$("set WAVEDat time format " + form$)
@MCISend$("close WAVEDat")
Endproc
Proc WaveInfo
parameters wavefile$
declare returnwert$,mciBefehl$,einheit$
declare länge$
mciBefehl$="open " + wavefile$ + " type waveaudio alias WAVEDat"
returnwert$=@MCISend$(mciBefehl$)
with Waveinfo#
einheit$=.einheit$
.name$=""
.einheit$=""
.name$=@MCISend$("INFO WAVEDat FILE")
.Kanäle%=val(@MCISend$("STATUS WAVEDat CHANNELS"))
.einheit$=@MCISend$("STATUS WAVEDat TIME FORMAT")
.länge&=val(@MCISend$("STATUS WAVEDat LENGTH"))
@MCISend$("set WAVEDat time format BYTES")
.größe&=val(@MCISend$("STATUS WAVEDat LENGTH"))
@MCISend$("set WAVEDat time format SAMPLES")
.samples&=@Val (@MCISend$("STATUS WAVEDat samplespersec"))
@MCISend$("set WAVEDat time format " + einheit$) @MCISend$("set WAVEDat time format " + .einheit$)
.position&=val(@MCISend$("STATUS WAVEDat POSITION"))
endwith
@MCISend$("close WAVEDat") '... schließen
return returnwert$
Endproc
Proc EndWave
dispose Waveinfo#
EndProc
Proc test
declare datei$
datei$=loadfile$("Wavedatei auswählen","*.WAV")
case datei$="":Return
Cls
WaveInfo datei$
with Waveinfo#
print .name$
print .Kanäle%,if(.Kanäle%=1,"Mono","Stereo")
print .einheit$
print str$(.länge& \ 60000),"Minuten",str$(mod((.länge& \1000),60)) + " Sekunden",
print mod(.länge&,100),"hSekunden"
print .größe& / 1024 + " Kb"
print .samples&,"Samples"
print .position&
endwith
WaitInput
EndWave
Endproc
test
Vielleicht hilft's Dir
Jörg
|