Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Windows Systemlautsprecher-Lautstärke ermitteln?
#1
Hallo, wie kann man die Lautstärkeeinstellung von Windows in der LCDHype-Scriptsprache auslesen? Ich würde diese gerne auf dem Laustärkebalken des Futuba DM140GINK​​ (ähnlich dem Futuba MDM166A) darstellen.
#2
Volume Control/Peakmeter Win7+ Plugin
http://lcdhype.condense.de/index.php?showtopic=5259

oder das ältere

LCD Volume Control Plugin Version 1.4 Plugin
http://lcdhype.condense.de/index.php?showtopic=5062
Current stable version of LCDHype: 0.7.6
New plugin: Notepad++ Bookmark Manager
New music: Nordwise - Empire transition
#3
Klasse, funzt. Das habe ich daraus gemacht, für das DM140GINK:

Die Funktion SysVolume errechnet einen Wert zwischen 0 (Leise) und 100 (Laut) für die Systemlautstärke. Der Faktor -0.00000104166667 errechnet sich aus dem Wert für %Plugin.VolumePeakmeter.GetVolumeMasterLevel() wenn der Lautstärkeregler auf 0 geschoben wird. Der Faktor ist dann 100/. Achtung, die errechneten Werte nähern sich unlinear bei maximaler Lautstärke einer Asymptote (ode rumgekehrt logarythimsch), daher nachfolgendes für das Zeichnen des Balkens:

Wenn man den Faktor an die eigene Soundkarte angepasst hat, muss man die Lautstärke mit einer Lautstärketaste langsam hochdrehen. Dabei zeigt Windows 10 oben links einen Balken mit einem Lautstärkewert an. Man steuert da die Werte 2,10,18 usw. an und lässt jedes Mal ein Testscript den Wert für %SysVolume anzeigen. Den angezeigten Wert muss man unten in der If-Abfrage bei dem entsprechenden Vol=xx eintragen, unten habe ich das mit einer Stelle hinter dem Komma gemacht, um recht nahe an den errechneten Wert zu kommen. Wenn man das dann so anpasst, bewegt sich das Balkendiagramm recht linear über den gesamten Lautstärkebereich.

Im Header:

CODE
%DefFunc(SysVolume=
 %Mul(-1,%Dec(%Mul(%Plugin.VolumePeakmeter.GetVolumeMasterLevel(),-0.00000104166667),100))
)


Und dann im GFX-Mode (müsste auch im Textmode gehen)

CODE
%If(%Plugin.VolumePeakmeter.GetMute() = 1)Then { %LCD.SetSymbol(1, 1) } Else { %LCD.SetSymbol(1, 0) }
/Vol=2/
%If(%SysVolume() > 39.4) Then { %LCD.SetSymbol(11, 1) } Else { %LCD.SetSymbol(11, 0) }
/Vol=10/
%If(%SysVolume() > 63.7) Then { %LCD.SetSymbol(12, 1) } Else { %LCD.SetSymbol(12, 0) }
/Vol=18/
%If(%SysVolume() > 72.7) Then { %LCD.SetSymbol(13, 1) } Else { %LCD.SetSymbol(13, 0) }
/Vol=26/
%If(%SysVolume() > 78.7) Then { %LCD.SetSymbol(14, 1) } Else { %LCD.SetSymbol(14, 0) }
/Vol=34/
%If(%SysVolume() > 82.9) Then { %LCD.SetSymbol(15, 1) } Else { %LCD.SetSymbol(15, 0) }
/Vol=42/
%If(%SysVolume() > 86.3) Then { %LCD.SetSymbol(16, 1) } Else { %LCD.SetSymbol(16, 0) }
/Vol=50/
%If(%SysVolume() > 89.0) Then { %LCD.SetSymbol(17, 1) } Else { %LCD.SetSymbol(17, 0) }
/Vol=58/
%If(%SysVolume() > 91.3) Then { %LCD.SetSymbol(18, 1) } Else { %LCD.SetSymbol(18, 0) }
/Vol=66/
%If(%SysVolume() > 93.4) Then { %LCD.SetSymbol(19, 1) } Else { %LCD.SetSymbol(19, 0) }
/Vol=74/
%If(%SysVolume() > 95.2) Then { %LCD.SetSymbol(20, 1) } Else { %LCD.SetSymbol(20, 0) }
/Vol=82/
%If(%SysVolume() > 96.8) Then { %LCD.SetSymbol(21, 1) } Else { %LCD.SetSymbol(21, 0) }
/Vol=92/
%If(%SysVolume() > 98.6) Then { %LCD.SetSymbol(22, 1) } Else { %LCD.SetSymbol(22, 0) }


Die LCD.SetSymbol-Werte sind an das DM140GINK angepasst, beim MDM166A sind die anders und es hat glaube ich auch 2 Stufen mehr. Das lässt sich aber einfach anpassen.
#4
warum nimst du nicht scalar
dann brauchste keine db werte an zu passen
scalar rechnet linear von 0 - 1
oder nimmst step das geht von 0-50
beispiel

CODE

 %Round(%Div(%Plugin.VolumePeakmeter.GetVolumeMasterLevelScalar(), 10000))' %'
 %Format.Bar(Horizontal, 144, 8, 0, 50, %Plugin.VolumePeakmeter.GetVolumeStepInfo('Step'), 1, 0, 8, 32)  


Forum Jump:


Users browsing this thread: 1 Guest(s)