Italia
Foro

Eingangspegel graphisch darstellen?

 
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 per "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  
 



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 presto 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 Mostra 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
Downloadcounter14
Herunterladen
17 kB
Hochgeladen:26.08.2011
Downloadcounter0
Herunterladen
14 kB
Hochgeladen:26.08.2011
Downloadcounter0
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 potuto 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 il valore von vorgestern wissen möchtest.

Di più 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 potuto.

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 Ospite statt angemeldet? (  [...]  ) -

so bekommst doch keine Info wenn Dir einer was schreibt.

300 kB
Hochgeladen:27.08.2011
Downloadcounter194
Herunterladen
5 kB
Hochgeladen:27.08.2011
Downloadcounter198
Herunterladen
 
27.08.2011  
 



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

Und ja, stimmt, eigentlich potuto 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 Ospite 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 Registro per Mitgliedsname zu Registro 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  
 




Answer


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

14.440 Views

Untitledvor 0 min.
H.Brill04.05.2023
Sven Bader20.07.2021
Andre Rohland02.05.2019
Selmo25.02.2019
Di più...

Themeninformationen

Dieses Thema hat 3 subscriber:

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


Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


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