guten abend ahk gemeinde,
kann man mit ahk feststellen ob auf dem lautsprecherausgang sound anliegt?
ich brauche nicht unbedingt eine angabe wie viel db (wie laut) die lautsprecher plärren, es würde mir schon reichen wenn ich nur ein true oder false ergebnis bekomme.
feststellen ob auf dem lautsprecherausgang sound anliegt
Moderator: jNizM
Re: feststellen ob auf dem lautsprecherausgang sound anliegt
Hi effel,
eigentlich müsste das feststellbar sein, da beim Klicken auf das Lautsprechersymbol in der Taskleiste der Pegel des Sounds ja als wechselfarbiger kleiner Balken angezeigt wird (zumindest bei meinem Realtec-Treiber). Also muss das Programm (bei mir "sndvol.exe") diese Information ja auch irgendwo abgreifen. Wie man darauf aber mit AutoHotkey zugreift, kann ich dir leider nicht beantworten.
Viel Erfolg.
HG - Lucky Joe
eigentlich müsste das feststellbar sein, da beim Klicken auf das Lautsprechersymbol in der Taskleiste der Pegel des Sounds ja als wechselfarbiger kleiner Balken angezeigt wird (zumindest bei meinem Realtec-Treiber). Also muss das Programm (bei mir "sndvol.exe") diese Information ja auch irgendwo abgreifen. Wie man darauf aber mit AutoHotkey zugreift, kann ich dir leider nicht beantworten.
Viel Erfolg.
HG - Lucky Joe
Herzliche Grüße aus dem Rheinland
Lucky Joe
Lucky Joe
Re: feststellen ob auf dem lautsprecherausgang sound anliegt
Vielleicht eher Lexikos VA.ahk Bibliothek: da gibt es im 'Advanced'-Bereich VA_GetAudioMeter(device_desc)
https://ahkscript.github.io/VistaAudio/#VA_GetAudioMeter (Doku für VA.ahk)
https://autohotkey.com/board/topic/21984-vista-audio-control-functions/ (Dropbox-Link for v2.3 geht)
Im Quelltext des Beispiels für VA_GetAudioMeter(device_desc) les ich:
https://ahkscript.github.io/VistaAudio/#VA_GetAudioMeter (Doku für VA.ahk)
https://autohotkey.com/board/topic/21984-vista-audio-control-functions/ (Dropbox-Link for v2.3 geht)
Im Quelltext des Beispiels für VA_GetAudioMeter(device_desc) les ich:
Da vermute ich, dass es etwas mit der hier genannten Aufgabenstellung zu tun haben könnte. Das Beispiel scheint jedenfalls den Unterschied zwischen Sound und keinem Sound zu erkennen (inkl. Pegelhöhe) - hab es gerade mal ausprobiert...; "The peak value for each channel is recorded over one device
; period and made available during the subsequent device period."
Re: feststellen ob auf dem lautsprecherausgang sound anliegt
ich bin geblockt und muss ohne anmeldung antworten?!?!
sobald ich code einfüge kommt die meldung das ich geblockt bin, seltsam...
...aber egal, möchte mich bei gregster bedanken, das ist die lösung
sobald ich code einfüge kommt die meldung das ich geblockt bin, seltsam...
...aber egal, möchte mich bei gregster bedanken, das ist die lösung
Re: feststellen ob auf dem lautsprecherausgang sound anliegt
ok ab und wieder anmelden, dann ging es wieder
Re: feststellen ob auf dem lautsprecherausgang sound anliegt
Freut mich, dass ich helfen konnte.
Ich hab das Problem mit dem Code mal weiter geleitet - du bist jedenfalls nicht der einzige, der Probleme hatte, Code zu posten. Hat wahrscheinlich damit zu tun, dass der irre Spammer wieder ziemlich aktiv war und die Admins an den Gegenmaßnahmen rumschustern und dabei manchmal übers Ziel hinausschießen. Das Feintuning scheint das Problem...
Re: feststellen ob auf dem lautsprecherausgang sound anliegt
dank eurer hilfe konnte ich den code auf meine bedürfnisse anpassen, hierfür vielen dank
ich kann damit steuerbefehle an programme übergeben, wenn kein signal am audio ausgang anliegt.
nun stellt sich die frage, wie kann ich die daten nutzen, um ein automatic gain control zu coden.
jeder kennt die heftigen lautstärke unterschiede, wenn z.b. werbung eingespielt wird.
plötzlich ist je nach sender eine erhebliche anhebung der lautstärke zu vernehmen.
in der variable "kanal1" ist der maximale peak beider kanäle.
wie ihr sicher wisst, sind meine fähigkeiten begrenzt, daher frage ich mal nach einem heftigen denkanstoss
ziel meiner anfrage ist, wie kann ich die lautstärke dynamisch herunter regeln wenn sie ein gewisses lautstärke level erreicht
hier gibt es die va.ahk
https://github.com/Drugoy/Autohotkey-scripts-.ahk/blob/master/Libraries/VA.ahk
ich kann damit steuerbefehle an programme übergeben, wenn kein signal am audio ausgang anliegt.
nun stellt sich die frage, wie kann ich die daten nutzen, um ein automatic gain control zu coden.
jeder kennt die heftigen lautstärke unterschiede, wenn z.b. werbung eingespielt wird.
plötzlich ist je nach sender eine erhebliche anhebung der lautstärke zu vernehmen.
in der variable "kanal1" ist der maximale peak beider kanäle.
wie ihr sicher wisst, sind meine fähigkeiten begrenzt, daher frage ich mal nach einem heftigen denkanstoss
ziel meiner anfrage ist, wie kann ich die lautstärke dynamisch herunter regeln wenn sie ein gewisses lautstärke level erreicht
hier gibt es die va.ahk
https://github.com/Drugoy/Autohotkey-scripts-.ahk/blob/master/Libraries/VA.ahk
Code: Select all
; https://www.autohotkey.com/boards/viewtopic.php?f=9&t=62175
; https://github.com/Drugoy/Autohotkey-scripts-.ahk/blob/master/Libraries/VA.ahk
; https://autohotkey.com/board/topic/21984-vista-audio-control-functions/
; https://ahkscript.github.io/VistaAudio/#VA_GetAudioMeter
#include VA.ahk
#SingleInstance, Force
SetWorkingDir, %A_Scriptdir%
MeterLength = 30
; MeterLength = 100
audioMeter := VA_GetAudioMeter()
; ALTkanal1 := ""
VA_IAudioMeterInformation_GetMeteringChannelCount(audioMeter, channelCount)
VA_GetDevicePeriod("capture", devicePeriod)
Loop
{
; Holt sich den Spitzenwert über alle Kanäle
VA_IAudioMeterInformation_GetPeakValue(audioMeter, peakValue)
meter := MakeMeter(peakValue, MeterLength)
; Get the peak values of all channels.
VarSetCapacity(peakValues, channelCount*4)
VA_IAudioMeterInformation_GetChannelsPeakValues(audioMeter, channelCount, &peakValues)
Loop %channelCount%
meter .= "`n" MakeMeter(NumGet(peakValues, A_Index*4-4, "float"), MeterLength)
String := leaveOnlyNumbers(meter)
wort_array := StrSplit(String, "-")
kanal1 := wort_array[1]/1
kanal2 := wort_array[2]/1
kanal3 := wort_array[3]/1
; KanalQuer := ((kanal1+kanal2+kanal3)/3)
KanalQuer := ((kanal2+kanal3)/2)
Startzeit := A_TickCount
; if String = 000000000000000000000
if String contains 00000
{
Sleep, 10
VerstricheneZeit += (A_TickCount - Startzeit) ; countdown
ToolTip, %meter%`nSignal: OFF`nCountdown: %VerstricheneZeit%`n%kanal1%`n%kanal2%`n%kanal3%`n%KanalQuer%
Sleep, %devicePeriod%
if (VerstricheneZeit > 10000) ; wenn 10 sekunden kein ton anliegt
{
reload ; test
SoundBeep, 750, 500
WinWait, VAVOO,
IfWinNotActive, VAVOO, , WinActivate, VAVOO,
WinWaitActive, VAVOO,
Sleep, 200
Send, {DOWN}
SoundBeep, 750, 500
tooltip, Sleep 5 sekunden
Sleep, 5000
Send, {ENTER}
SoundBeep, 750, 500
tooltip, Sleep 5 sekunden
Sleep, 5000
Send, {ENTER}
SoundBeep, 750, 500
tooltip, Sleep 30 sekunden
Sleep, 30000
Send, {ENTER}
SoundBeep, 750, 500
tooltip, Sleep 60 sekunden
Sleep, 60000
}}
else{
Sleep, 10
VerstricheneZeit := ""
ToolTip, %meter%`nSignal: ON`nCountdown: %VerstricheneZeit%`n%kanal1%`n%kanal2%`n%kanal3%`n%KanalQuer%
Sleep, %devicePeriod%
}}
MakeMeter(fraction, size)
{
global MeterLength
Loop % fraction*size
meter .= "|"
Loop % (1-fraction)*size
meter .= "."
meter .= " " fraction
return meter
}
LeaveOnlyNumbers(String)
{
counter := 0
Loop, Parse, String
{
if A_LoopField is integer
{
counter++
NewString = %NewString%%A_LoopField%
if counter = 7
NewString = %NewString%-
if counter = 14
NewString = %NewString%-
}
}
Return %NewString%
}
Return
esc::pause
;esc::reload
Re: feststellen ob auf dem lautsprecherausgang sound anliegt
für einen anfang, würde es mir schon sehr helfen, wenn mir jemand zeigen kann wie ich die 6 nullen hinter dem punkt weg bekomme.
Re: feststellen ob auf dem lautsprecherausgang sound anliegt
Code: Select all
Null := 00.0000000
NewNull := SubStr(Null, 1,-6)
msgbox, % NewNull
Re: feststellen ob auf dem lautsprecherausgang sound anliegt
super, vielen dank damit kann ich was anfangen
und es stellt sich (nur interessehalber) die frage, wird die erste stelle hinter dem punkt kaufmännisch aufgerundet oder nur abgeschnitten
sorry, ich habe meine frage nicht korrekt gestellt, den punkt möchte ich auch nicht sehen. soll ich ihn mit stringreplace entfernen oder passt das noch in deine zeile?
Code: Select all
kanal1 := SubStr(wort_array[1]/1, 1,-6)
Re: feststellen ob auf dem lautsprecherausgang sound anliegt
ok, lesen hilft
habe es gefunden
habe es gefunden
Code: Select all
kanal1 := SubStr(wort_array[1]/1, 1,-7)
Re: feststellen ob auf dem lautsprecherausgang sound anliegt
sorry, ich habe meine frage nicht korrekt gestellt, den punkt möchte ich auch nicht sehen. soll ich ihn mit stringreplace entfernen oder passt das noch in deine zeile?
Code: Select all
kanal1 := SubStr(wort_array[1]/1, 1,-7)
nur abgeschnittenCode: Select all
und es stellt sich (nur interessehalber) die frage, wird die erste stelle hinter dem punkt kaufmännisch aufgerundet oder nur abgeschnitten
Who is online
Users browsing this forum: No registered users and 18 guests