Allgemeine Fragen zur PROFAN Programmierung

Views (Heute): 249577 (11013)

| Suchen
| Zurück zur Übersicht

Autor | Thema: Auslesen der Lautstärke
Kathrin Köhler
| Datum:04.07.01 16:04 (Kathy008@freenet.de) |
Nochmal Hallo. Ich möchte nicht den Wert des Lautstärke Reglers erfahren, sonder wenn ich ne CD oder Wav oder Mp3 abspiele, möchte ich den Wert der ausgegebenen Lautstäre haben. Brauch man zbs. für nen VU-Meter, oder zum anzeigen des höchste Ausschlages... Also nochmal Cu'i
Andreas Miethe
| Datum:04.07.01 21:38 (andreas@andreas-miethe.de) |
Hallo Kathrin, ist zwar noch nicht so ganz fertig, aber vielleicht kannst Du damit ja schon was anfangen. Gruss Andreas '################################################################### 'WAVEMeter und MIDIMeter 'Spitzenwerte von WAVE oder MIDI auslesen. 'Andreas Miethe * Bielefeld *Juli 2001 'Einzelheiten sind in der MMedia.hlp nachzulesen ! '################################################################### ' DEF SetProgressRange(3) SendMessage(&(1),$0401,0,MakeLong(&(2),&(3))) DEF SetProgressPos(2) SendMessage(&(1),$0402,&(2),0) DEF MakeLong(2) Or(&(1),Mul(&(2),$10000)) DEF mixerGetID(3) ! "winmm","mixerGetID" DEF mixerOpen(5) ! "winmm","mixerOpen" DEF mixerClose(1) ! "winmm","mixerClose" DEF mixerGetLineInfo(3) ! "winmm","mixerGetLineInfoA" DEF mixerGetLineControls(3) ! "winmm","mixerGetLineControlsA" DEF mixerGetControlDetails(3) ! "winmm","mixerGetControlDetailsA" DEF &MIXER_OBJECTF_WAVEOUT $010000000 DEF &MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT $01008 DEF &MIXER_GETLINEINFOF_COMPONENTTYPE $03 DEF &MIXERCONTROL_CONTROLTYPE_PEAKMETER $010020001 DEF &MIXER_GETLINECONTROLSF_ONEBYTYPE $02 DEF &MIXER_GETCONTROLDETAILSF_VALUE 0 DEF &MIXERLINE_COMPONENTTYPE_DST_WAVEIN $07 DEF &MIXER_OBJECTF_MIDIOUT $030000000 DEF &MIXERLINE_COMPONENTTYPE_SRC_SYNTHESIZER $01004 Declare MixerLine#,MixerLineControls#,MixerControl# Declare MixerControlDetailsSigned#,MixerControlDetails# Dim Mixerline#,168 Dim MixerLineControls#,24 Dim MixerControl#,148 Dim MixerControlDetailsSigned#,8 Dim MixerControlDetails#,24 Declare MixID&,HMixer& Declare a&,b& Proc Mixer_Start 'Mixer-Start Parameters WaveMidi% 'Par 1 = 0 WAVE-Kanal wird abgefragt 'Par 1 = 1 MIDI-Kanal wird abgefragt If mixerGetID(0,Addr(MixID&),&MIXER_OBJECTF_WAVEOUT) <> 0 @Messagebox("Kein Mixer vorhanden","Meldung",64) Ende% = 1 endif If WaveMidi% = 0 'Wave If mixerOpen(Addr(HMixer&),MixID&,0,0,&MIXER_OBJECTF_WAVEOUT) = 0 Long Mixerline#,0 = 168'Strukturgrösse Long Mixerline#,24 = &MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT Else @Messagebox("Keine MixerID verfügbar","Meldung",64) Ende% = 1 Endif else 'Midi If mixerOpen(Addr(HMixer&),MixID&,0,0,&MIXER_OBJECTF_MIDIOUT) = 0 Long Mixerline#,0 = 168'Strukturgrösse Long Mixerline#,24 = &MIXERLINE_COMPONENTTYPE_SRC_SYNTHESIZER Else @Messagebox("Keine MixerID verfügbar","Meldung",64) Ende% = 1 Endif Endif If mixerGetLineInfo(HMixer&,Mixerline#,&MIXER_GETLINEINFOF_COMPONENTTYPE) = 0 Long MixerlineControls#,0 = 24 Long MixerlineControls#,4 = Long(Mixerline#,12) Long MixerlineControls#,8 = &MIXERCONTROL_CONTROLTYPE_PEAKMETER Long MixerlineControls#,12 = 1 Long MixerlineControls#,16 = 148 Long MixerlineControls#,20 = MixerControl# Else @Messagebox("Mixer-Fehler !","Meldung",64) Ende% = 1 Endif If mixerGetLineControls(HMixer&,MixerlineControls#,&MIXER_GETLINECONTROLSF_ONEBYTYPE) = 0 Long MixerControlDetails#,0 = 24 Long MixerControlDetails#,4 = Long(MixerControl#,4) Long MixerControlDetails#,8 = Long(Mixerline#,28) Long MixerControlDetails#,12 = 0 Long MixerControlDetails#,16 = 4 Long MixerControlDetails#,20 = MixerControlDetailsSigned# Else @Messagebox("Keine Mixerdaten verfügbar","Meldung",64) Ende% = 1 Endif EndProc 'Mixer-Update Proc Mixer_Update Parameters P1&,P2& Declare LPeak&,RPeak& mixerGetControlDetails(HMixer&,MixerControlDetails#,&MIXER_GETCONTROLDETAILSF_VALUE) LPeak& = ABS(Long(MixerControlDetailsSigned#,0)) RPeak& = ABS(Long(MixerControlDetailsSigned#,4)) Locate 0,0 SetProgressPos(P1&,LPeak&)'Position setzen SetProgressPos(P2&,RPeak&)'Position setzen EndProc Proc CreateProgressBar Parameters hw&,x%,y%,w%,h%,id&,s% Declare h&,s& Let s&=$50000000 Case Gt(h%,w%): Let s&=Add(s&,4) Case s%: Let s&=Add(s&,1) Let h&=Control("msctls_progress32","",s&,x%,y%,w%,h%,hw&,id&,%hinstance) Return h& EndProc Declare P1&,P2&,Button& Declare Ende% cls CreateProgressBar %hwnd,30,130,232,10,2000,0 Let P1&=&(0) CreateProgressBar %hwnd,30,141,232,10,2001,0 Let P2&=&(0) Let Button& = @CreateButton(%hwnd,"Ende",100,10,80,24) 'Peak von 0 - max 32768 SetProgressRange(P1&,0,32786) SetProgressRange(P2&,0,32768) Mixer_Start 0 SetTimer 10 Whilenot ende% If %wmTimer Mixer_Update P1&,P2&'Progress 1 und Progress 2 endif If GetFocus(Button&) Ende% = 1 Endif endwhile Waitinput mixerClose(HMixer&) Dispose Mixerline# Dispose MixerLineControls# Dispose MixerControl# KillTimer End
Kathrin Köhler
| Datum: 06.07.01 21:25 (Kathy008@freenet.de) |
Dank dir für das Progi, kommt aber mit folgender zeile net klar: If mixerGetID(0,Addr(MixID&),&MIXER_OBJECTF_WAVEOUT) <> 0 denke mal mit dem ADDR kommt er nett klar. Kommt die Meldung "Falscher Parametertyp: 0" Ich hab V 6.5 vieleicht liegs daran.... Vieleicht haste ja noch ne Idee...... Danke und cu'i

| Zurück zur Übersicht