Hallo,
ich suche nach einer Möglichkeit unter Windows die globale Ausgabe-Lautstärke zu ermitteln. Hintergrund ist, dass ich einen Ton ausgeben will, der von der Lautstärke her abhängig von der aktuellen Ausgabe in Windows ist.
Das heißt ich suche KEINE Möglichkeit zu ermitteln, wie die Master-Lautstärke eingestellt ist, sondern ich will den Lautstärke-Level über einen kurzen Zeitraum messen. Ich bin mir nicht sicher, ob ich den Peak-Level auslesen will oder eher etwas anderes, weil ich die subjektiv empfundene Lautsärke ermitteln will.
Gibt es da Ansätze? Ist mit NAudio eine Lösung möglich?
Ich glaube damit geht das nicht. Da kann ich ja nur die Lautstärke der Sprachausgabe ermitteln.
Ich habe das jetzt mit NAudio gelöst. Damit kann ich den PeakLevel messen und da taste ich dann eine Sekunde (im 1/10-Sekunden-Takt) ab. Dann habe ich schon entsprechende Werte.
Allerdings ist mir aufgefallen, dass unter Windows 7 im Audio-Mixer das Icon meiner App nicht herunterskaliert wird, deshalb ist die ganze Oberfläche das Lautstärke-Mixers kaputt. Anscheinend ist das ein Fehler in Windows 7. Wie kann ich den denn umgehen, ohne mein Icon zu reduzieren? Ich nutze dafür 256x256 Punkte.
Du könntest in der ico-Datei mehrere Auflösungen deines Icons anbieten.
Dazu kannst du z.B. mit GIMP für jede Auflösung eine eigene Ebene machen.
Anscheinend ist das wirklich ein Bug von Windows 7. Bei meiner Recherche im Internet bin ich darauf gestoßen. Ich habe das Problem jetzt so gelöst, dass ich die 256er Icons aus dem Hauptfenster entfernt und durch 32er Icons ersetzt habe. Damit past das im Audio-Mixer von Windows 7, der die Icons leider nicht skaliert. Das Programmsymbol hat dennoch eine 256er Auflösung, damit man auch große Symbole anzeigen kann.
Nach meinen Informationen muss ein Icon für ein Fenster entweder 16x16 und/oder 32x32 Pixel groß sein mit 16/256 Farben.
Also maximal 32x32 Pixel und dann ist es wohl kein Bug von Windows 😉
Anscheinend ist das wirklich ein Bug von Windows 7. Bei meiner Recherche im Internet bin ich darauf gestoßen. Ich habe das Problem jetzt so gelöst, dass ich die 256er Icons aus dem Hauptfenster entfernt und durch 32er Icons ersetzt habe. Damit past das im Audio-Mixer von Windows 7, der die Icons leider nicht skaliert. Das Programmsymbol hat dennoch eine 256er Auflösung, damit man auch große Symbole anzeigen kann.
Du solltest das Icon in meheren Auflösungen anbieten (wurde ja schon erwähnt). Jetzt nur ein Icon mit 32 Pixel zu verwenden ist auch keine Lösung, dass sieht z.B. auf Bildschirmen mit hoher Pixeldichte sehr schnell unschön aus.
Für das Erstellen der Icons kann ich Axialis IconWorkshop empfehlen.
Die Anwendung hat ein Icon und jede Form in der Anwendung hat ein Icon.
Das Icon der Anwendung 16-256 Pixel
Das Icon einer Form 16-32 Pixel
Mit meinem Hinweis, dass Du falsch liegst bezog ich mich primär auf Deine Aussage, dass das Icon eines Forms 16/256 Farben haben sollte/darf - das ist falsch.
Für sog. HighDPI Bildschirme sollte das Icon ausserdem auch höhere Auflösungen als 16/32 unterstützen.
Das Icon der Anwendung 16-256 Pixel
Das Icon einer Form 16-32 Pixel
So habe ich das jetzt auch gemacht und ich bin damit zufrieden.
Grundsätzlich stimmt aber wohl, was die anderen sagen, dass man das Icon einfach in mehreren Größen einpacken soll. Fraglich ist allerdings, ob Windows dann auch das Richtige auswählt. Ich vermute mal, dass in Windows Forms zumindest, die Standardgrößen, wie oben angegeben fest verankert sind und die Rechtlinien für Resourcen für Kacheln und Symbole nicht wirklich funktionieren. Zumindest wohl nicht unter Windows 7.
Windows 7 hat ja auch keine Kacheln. Dementsprechend können dafür die Richtlinien auch nicht gültig sein.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code