Deutsch
Forum

Eingangspegel graphisch darstellen?

 
- Seite 1 -


Grüß euch!

Bei einem kürzlichen Spieleprojekt stellte sich mir die Frage, ob man den Audioeingangspegel (bzw. die Veränderung desselben) eines Mikrofons in XProfan in irgendeiner Form graphisch darstellen lassen kann. Ich kam auf diesen Gedanken, da sich somit ggf. Möglichkeiten für "lautstärkegesteuerte" Spielsteuerungen ergeben würden (gab ja mal vor vielen Monden eine Pong-Variante mit vergleichbarer Bedienung).

Vielen Dank schon mal im Vorraus

MfG, Ernst.
 
25.08.2011  
 



 
- Seite 1 -


Coole Frage, wüsste ich auch gerne wie das geht und habe dazu noch nichts parat.

Man müsste halt wohl Audiodaten in einem Speicher vorliegen haben um aus den darin enthaltenen Daten wiederum eine Lautstärke zu errechnen.

Vlt. kann ich hier anknüpfen:  [...] 
 
25.08.2011  
 



Soso...  [...]  ... mist muss ins Bett morgen früh raus...

MSDN
The common order for calling Waveform Audio functions to record audio is:

waveInOpen
waveInPrepareHeader
waveInAddBuffer
waveInStart
waveInUnprepareHeader
waveInClose


- so sollte man wohl vorgehen -

das sollte sich wohl erarbeiten lassen.
 
25.08.2011  
 



Grad aufgewacht weils einfach "zu" warm ist und dachte so "gugste mal"... -

gleich aber wieder ab in die Heia...

Pegel anzeigen ist einfach... meinste sowas?

Herunterladen
externer Download



 
26.08.2011  
 



Kamma auch einfach ne Oszillatoranzeige bauen:

Herunterladen
externer Download





436 kB
Hochgeladen:26.08.2011
Ladeanzahl14
Herunterladen
17 kB
Hochgeladen:26.08.2011
Ladeanzahl0
Herunterladen
14 kB
Hochgeladen:26.08.2011
Ladeanzahl0
Herunterladen
 
26.08.2011  
 



Vielen Dank - das sieht doch sehr interessant aus Werde mir das Ganze jetzt mal zu Gemüte führen.
 
27.08.2011  
 



Perfekt - genau das ist es! Vielen Dank! Ich frag einfach mal - hättest du vllt. einen Codeschnipsel o.Ä. da?
 
27.08.2011  
 



Selbstverständlich sollst Du soviel Quellcode dazu bekommen wie Du magst -

würde ich nur gerne wissen in welcher Variante Du den gerne hättest

da ich dazu durchaus gerne einige Lösungsansätze anbieten würde.

Richtig optimal und am einfachsten gehts wenn Du XProfan in Verbindung mit XPSE  [...]  einsetzt -

da könnte ich Dir fix eine Variante "herbilden" sodass das eigentliche Hauptprogramm garnichts tun muss und einfach z.B. in einer Variable immer der aktuelle Pegelwert steht.

Dann gäbe es da noch eine reine XProfan-Variante die aber nicht so zuverlässig sein wird und wo Du im Programm halt selbst ständig den Pegelwert herausmessen musst was gewisse Verarbeitungszeit in Anspruch nimmt und eben mehr oder weniger "ständig" geschehen muss da Du ja nicht den Wert von vorgestern wissen möchtest.

Mehr Arbeit würden da machen ne DLL sowie auch eine Unit oder Include die eine DLL beinhalten und aber auch ginge ein Modul als Unit welches die Funktionen als MemoryModule vorhalten könnte.

Hier eine minimale "Quick&Dirty"-Variante in "reinem" XProfan:
'{$cleq}
'{$runtime c:\dev\x11}
'{$compiler c:\dev\x11}
struct waveFormatEx=wFormatTag%,nChannels%,nSamplesperSec&,nAvgBytesPerSec&,nBlockAlign%,wBitsPerSample%,cbSize%
declare waveform#
var WaveHdrIn&=0
cls
usermessages 960
dim waveform#,waveFormatEx

with waveform#

    .wFormatTag%=1
    .nChannels%=1
    .wBitsPerSample%=8
    .nAvgBytesPerSec&=16000*1*8
    .nSamplesPerSec&=16000
    .nBlockAlign%=1
    .cbSize%=0

endwith

var hWaveIn&=external("kernel32","GlobalAlloc",64,4)
case external("winmm","waveInOpen",hWaveIn&,-1,waveform#,%hWnd,0,65536) : end messagebox("ERROR","ERROR",4096)
hWaveIn&=long(hWaveIn&,0)

whileLoop 2

    WaveHdrIn&=createWaveHdrIn()
    external("winmm","waveInPrepareHeader",hWaveIn&,WaveHdrIn&,32)
    external("winmm","waveInAddBuffer",hWaveIn&,WaveHdrIn&,32)

wend

external("winmm","waveInStart",hWaveIn&)
var peek!=0
var tmp&=0

while 1

    waitinput

    select %uMessage

        caseof 960

        if &uwParam=hWaveIn&

            WaveHdrIn&=createWaveHdrIn()
            external("winmm","waveInPrepareHeader",hWaveIn&,WaveHdrIn&,32)
            external("winmm","waveInAddBuffer",hWaveIn&,WaveHdrIn&,32)
            tmp&=abs(128-byte(long(&ulParam,0),0))*2
            peek!=peek!*0.95
            case peek!<tmp& : peek!=tmp&
            usebrush 1,$FFFFFF
            rectangle 0,0 - 40,256-peek!
            usebrush 1,$FF
            rectangle 0,(256-peek!) - 40,256
            external("kernel32","GlobalFree",long(&ulParam,0))
            external("kernel32","GlobalFree",&ulParam)

        endif

    endSelect

wend

end

proc createWaveHdrIn

    var waveHdrIn&=external("kernel32","GlobalAlloc",64,32)
    long waveHdrIn&,0=external("kernel32","GlobalAlloc",64,64),64
    return waveHdrIn&

endproc


Herunterladen
externer Download




PS: Warum schreibst als Gast statt angemeldet? (  [...]  ) -

so bekommst doch keine Info wenn Dir einer was schreibt.

300 kB
Hochgeladen:27.08.2011
Ladeanzahl203
Herunterladen
5 kB
Hochgeladen:27.08.2011
Ladeanzahl209
Herunterladen
 
27.08.2011  
 



Ja super - vielen Dank, läuft! Ja also wenn's nichts ausmacht, würde ich mich über eine Version mit XPSE sehr freuen

Und ja, stimmt, eigentlich könnte ich mich auch anmelden. Mach ich mal ab der nächsten Antwort. Hatte damit vor längerer Zeit irgendwie Probleme und bin deshalb aus Gewohnheit hautsächlich nur noch als Gast anwesend
 
27.08.2011  
 



Wenn irgendwie ein Anmeldeproblem noch bestehen sollte dann kannst Du das z.B. auch hier unter Kontakt einfach schreiben:  [...] 

Ich glaube es war etwas irritierend das ich vom Anmelden per Mitgliedsname zu Anmelden per E-Mail übergegangen bin einfach weil es sicherer ist weil die Mitgliedsnamen öffentlich sind im Gegensatz zu den E-Mail-Adressen und ich sichere/ echte Accounts anbeiten möchte die deshalb auch SSL-gesichert sind.

So eine Variante mit XPSE stelle ich Dir her und poste die dann hier.
 
27.08.2011  
 



Schau mal ob Du mit der miclevel.inc klar kommst:  [...] 
 
28.08.2011  
 




Endwhile
So, jetzt als registrierter Nutzer
Also, perfekt - vielen Dank! Das ist ziemlich genau das, was ich mir vorstellte. Werde mir das mal genauer ansehen und bei Fragen ggf. noch mal was schreiben.
 
29.08.2011  
 



 
- Seite 2 -


Gern geschehen!
 
29.08.2011  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

14.709 Betrachtungen

Unbenanntvor 0 min.
H.Brill04.05.2023
Sven Bader20.07.2021
Andre Rohland02.05.2019
Selmo25.02.2019
Mehr...

Themeninformationen

Dieses Thema hat 3 Teilnehmer:

iF (8x)
unbekannt (4x)
Endwhile (1x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie