1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

tell application "Finder" to set volume

Dieses Thema im Forum "AppleScript" wurde erstellt von Atelis, 28.11.09.

  1. Atelis

    Atelis Akerö

    Dabei seit:
    01.03.07
    Beiträge:
    1.831
    Ich weiß nicht, ob das Programm wirklich der Auslöser für das Problem ist, aber seitdem mich morgens Awaken weckt, habe ich ein Problem bei der Anmeldung und mit dem "set volume" in AppleSkript.

    Folgendes Skript

    Code:
    tell application "Finder"
    	activate
    	set volume 3.5
    end tell
    bewirkt nur fast 8 von 16 Punkten auf der Lautstärke-Skala:

    [​IMG][​IMG]


    Ich weiß, dass ich mit gedrückter Alt- und Shift-Taste 1/4 Sprünge machen kann, aber es sind auch nicht wie es zuerst aussieht 7 3/4, sondern noch ein bisschen mehr. Halt irgendwas zwischen 7 3/4 und 8 Punkten. Ein "set volume 2" ergibt zum Beispiel ca. 4 1/2 von 16 Punkten.

    Nun habe ich mal die Lautstärke mithilfe der Lautstärketasten auf 8 gestellt. Nun das Seltsame: wenn ich mich ab- und wieder anmelde (egal, ob Awaken gestartet wird, oder nicht) bin ich nach der Anmeldung wieder bei den ca. 7 3/4 Punkten. Das Deaktivieren von Awaken bringt keine Veränderung.


    Kann sich das jemand erklären? Was kann ich dagegen machen?


    PS: Bei anderen Benutzern tritt das Problem nicht auf. Auf einem anderen Mac mit Awaken ist das Problem ebenfalls.
     

    Anhänge:

    #1 Atelis, 28.11.09
    Zuletzt bearbeitet: 29.11.09
  2. hubionmac

    hubionmac Rheinischer Krummstiel

    Dabei seit:
    25.06.04
    Beiträge:
    379
    Ja hörst Du das denn den Unterschied zwischen 7 15/16 und 8 Punkten auf der Laustärke-Skala?
     
  3. pepi

    pepi Cellini

    Dabei seit:
    03.09.05
    Beiträge:
    8.741
    Man kann die Lautstärke ja auch manuell per ⇧⌥ Lautstärketasten in Viertelschritten einstellen. Granularer als das ist mehr als esoterisch.
    Gruß Pepi
     
  4. Atelis

    Atelis Akerö

    Dabei seit:
    01.03.07
    Beiträge:
    1.831
    :p Nein, aber wenn ich dann per Lautstärketasten lauter machen möchte, sieht es immer so aus, als wenn das erste Drücken nichts gebracht hätte - in Wirklichkeit ist es nur von 7 15/16 auf 8 gesprungen...
    Ich würde mit dem Befehl die Lautstärke gerne richtig einstellen können. Das sieht so "unsauber" aus, wenn jemand mein Programm benutzt.

    Weiß jemand, in welcher Datei die Lautstärke vom System gespeichert wird? Da die Lautstärke für jeden Benutzer individuell gespeichert wird, müsste das ja in der Benutzer-Library liegen, oder?
     
  5. MacApple

    MacApple Lord Grosvenor

    Dabei seit:
    05.01.04
    Beiträge:
    3.470
    Das steht übrigens bereits im Eingangsposting. ;)

    MacApple
     
  6. sedna

    sedna Pomme Etrangle

    Dabei seit:
    22.10.08
    Beiträge:
    911
    Du hast hier von zwei verschiedenen Problemen geschrieben. Bitte genauer!
    (Die Anmeldegeschichte lässt mich davon ausgehen, dass Du 10.6 installiert hast...)

    Hmm so lange es nur unsauber aussieht .... denn
    ist so nicht korrekt und wird zwar laufen, sollte aber in 10.6 einen so genannten privilege violation error zurück geben. Des weiteren ist es veraltet: Seit 10.4 kann man die Lautstärke von 0 bis 100 angeben.

    Dein erstes Problem dürfte sich nicht lösen lassen. Lass mal dieses Skript laufen:
    Code:
    set volume output volume 50
    get output volume of (get volume settings)
    
    Wie lautet das Ergebniss?

    Das zweite Problem sollte mit dem Löschen dieser Dateien behoben sein:

    /Library/Preferences/Audio/com.apple.audio.DeviceSettings.plist
    /Library/Preferences/Audio/com.apple.audio.SystemSettings.plist


    Sedna
     
  7. Atelis

    Atelis Akerö

    Dabei seit:
    01.03.07
    Beiträge:
    1.831
    Bei mir läuft 10.5. Ich habe folgendes beobachtet:
    Wenn ich (Awaken im Hintergrund aktiv) mich mit 8 Punkten abmelde und in der Anmeldemaske bin, sind es jedes Mal nur noch die 7 15/16... Wenn ich nun wieder auf 8 korrigiere, bleibt dies auch nach der Anmeldung so.
    Andere Benutzer auf meinem System, die kein Awaken im Hintergrund laufen haben, haben irgendwie kein konstantes Verhalten: Mal sind es nach der Abmeldung 8 Punkte - mal nur die 7 15/16. Das kann ich mir noch nicht erklären...


    Auch hier habe ich etwas beobachtet:
    set volume output volume 45 => 45
    set volume output volume 46 => 45
    set volume output volume 47 => 47
    set volume output volume 48 => 47
    set volume output volume 49 => 49
    set volume output volume 50 => 49
    set volume output volume 51 => 52
    set volume output volume 52 => 52
    set volume output volume 53 => 54
    set volume output volume 54 => 54
    set volume output volume 54 => 54
    set volume output volume 55 => 54

    Wenn ich mit der Tastatur auf 8 Punkte stelle und dann "set volume output volume 50" ausführe, bleibt es auf 8 Punkten. Stelle ich es mit der Tastatur auf etwas anderes ein (z. B. nur 4 Punkte), so habe ich nach "set volume output volume 50" wieder die 7 15/16 Punkte.
    Das ist doch nicht richtig so, oder?


    Nein, leider gleiches Verhalten.
     
  8. hubionmac

    hubionmac Rheinischer Krummstiel

    Dabei seit:
    25.06.04
    Beiträge:
    379
    Stell doch mal auf Sommerzeit um und richte falls nicht schon geschehen ein ungerade Anzahl an Nutzern ein. Nutzer mit Vokal am Anfang zählen doppelt, nur aber in einem Schaltjahr, wenn bei Zeitzone eine Stadt oberhalb des südlichen Wendekreises ausgewählt ist.
    Wenn FireFox installiert ist, verhält sich die Anzahl anzulegenden Nutzer umgekehrt proporzional zur Quersumme...
    Moment, hast Du 10.5 installiert? Das ist ein bekannter Bug, der erst in 10.6.3 behoben werden soll bzw. in 10.4 noch gar nicht da war.... ;-P

    Shit, wie stoppe ich bloß das Email-Abo zu diesem Thread :cool:
     
    larkmiller gefällt das.
  9. Atelis

    Atelis Akerö

    Dabei seit:
    01.03.07
    Beiträge:
    1.831
    Wenn das so ist, danke für die Info. Dann muss ich nicht mehr weiter suchen...
     
  10. hubionmac

    hubionmac Rheinischer Krummstiel

    Dabei seit:
    25.06.04
    Beiträge:
    379
    ;-P
    Hab also keine Ahnung ob's wirklich so ist... die Vermutung liegt aber nahe, dass es sich dabei um so eine Art Rundungsfehler handelt.
    Wenn Du mal Audio-Midi-Setup öffnest und die Lautstärke auf die hälfte (8 Punkte) einstellst zeigt er bei beiden Kanälen auch nicht 0.5 sondern 0.49 an (auch wenn er bei 0 anfängt und das erklärte Maximum bei 1.0 liegt.)

    Dann fange halt das ganze ab, indem Du ihn eine vordefinierte Reihe an Werte beim Output-Volume setzen lässt, so dass diese x 1/16 Lautstärke-Punkte übersprungen werden.:)

    Oder Schreib zu Apple, dass das doof ist.:-c

    Oder fang' an z.B. aus AppleScript, via do shell script über pyhton dem CoreAudio Framework mitzuteilen, was Du von ihm willst....
    Wie genau geht kann ich dir leider nicht sagen, hab' das mal dazu gefunden, das setzt den Mauszeiter auf Position 0,0 mit einem Aufruf der entsprechenden Funktion eines Frameworks. Müsste sich theoretisch auch auf aus entsprechende Framework für die Soundausgabe übertragen lassen....:oops:

    Code:
    do shell script "python -c \"import objc;bndl = objc.loadBundle('CoreGraphics', globals(), '/System/Library/Frameworks/ApplicationServices.framework');objc.loadBundleFunctions(bndl, globals(), [('CGWarpMouseCursorPosition', 'v{CGPoint=ff}')]);CGWarpMouseCursorPosition((0, 0));\""
     
  11. Atelis

    Atelis Akerö

    Dabei seit:
    01.03.07
    Beiträge:
    1.831
    Wie genau meinst du das?
     
  12. hubionmac

    hubionmac Rheinischer Krummstiel

    Dabei seit:
    25.06.04
    Beiträge:
    379
    Code:
    audioVolumePfusch("machVollLeise", 0.1)
    on audioVolumePfusch(a, b)
    	set cV to output volume of (get volume settings)
    	if a = "vollLaut" then
    		set volume 7
    	else if a = "halbLaut" then
    		--was immer auch dem Wert am nächsten kommt
    		set volume 3.6
    	else if a = "machVollLaut" then
    		repeat with i from cV to 100
    			set volume output volume i
    			delay b
    		end repeat
    	else if a = "machVollLeise" then
    		repeat with i from cV to 0 by -1
    			set volume output volume i
    			delay b
    		end repeat
    	end if
    end audioVolumePfusch
     
  13. Amin Negm-Awad

    Amin Negm-Awad Süsser Pfaffenapfel

    Dabei seit:
    01.03.07
    Beiträge:
    665
    "Rundungsfehler" ist es wohl nicht, sondern ein "Samplingfehler". (Mir fällt jetzt kein besserer Begriff ein.) Dieses Problem taucht ständig auf, wenn man versucht, integrale Werte auf Fließkommazahlen abzubilden. Das gibt es auch bei Graphik, weil Pixel integral sind und Koordinaten fließend. Dort löst man das mit Antialiasing. Das gibt es hier aber nicht. (Es sei denn der Balken wird abgestuft.)

    Beispiel:
    Stell dir vor, die Lautstärke hat 256 Stufen.

    Stille wäre dann 0.
    Maximale Lautstärke (100 % = 1,0) wäre 255
    Halbe Lautstärke (50 % = 0,5) wäre 127,5.

    Das lässt sich integral nicht einstellen, wird also 127 oder 128. (Das meintest du mutmaßlich mit Rundungsfehler.) Stellt er etwa 127 ein, so bekommt man eben nicht 50 % zurück, sondern 0,498…

    Wenn man sich das mal bewusst gemacht hat, bekommt man häufig mit viel, viel Frickelei und ausprobieren das gewünschte Ergebnis für bestimmte Werte. Eine wirkliche Lösung gibt es dafür aber nicht.
     
  14. dEEkAy2k9

    dEEkAy2k9 Prinzenapfel

    Dabei seit:
    08.06.09
    Beiträge:
    550
    Alta, was hastn du geraucht =P

    Aber um mal beim Thema zu bleiben, ich würde hier auch auf einen Bug Tippen, is immer so ne Sache wenn sichs nicht reproduzieren lässt, zumindest nicht immer.
     
  15. sedna

    sedna Pomme Etrangle

    Dabei seit:
    22.10.08
    Beiträge:
    911
    Hallo Atelis!

    10.5 ... Die Chance war immerhin 50% :p Es ist immer gut, sein OS zu nennen, dann muss man nicht raten :)
    Und dein Problem ist so "abstrus", dass hubionmacs Postings schon irgendwie nachvollziehbar sind. "Rundungsfehler" war nicht schlecht.

    Den Erklärungsversuchen kann ich nichts konstruktives hinzufügen. Ich denke, die Ausführungen von Amin Negm-Awad sind nachvollziehbar. Ich hatte ja gedacht, dass Du beim Ausführen meines Beispielskriptes selber auf den Trichter kommst.
    Das mit dem Audio Midi Fenster war kein schlechter Hinweis. Nimm doch mal den Gesamtlautstärke Slider in Systemeinstellungen/Ton ... Du wirst sehen, dass er an bestimmten Positionen einrastet (z.B. 49% (0,49))

    Lange Rede, kurzer Sinn: Die von dir so benannte "Lautstärke Skala" scheint die "Rundung" nicht mitzumachen.
    Eine Möglichkeit wäre eventuell, zusätzlich mit System Events und key code die Lautstärke auf einen vollen Balken anzupassen. Da aber die Lautstärke Tasten auf den verschiedenen Mac Tastaturen an unterschiedlichen Stellen sitzen, könnte das etwas aufwändiger zu realisieren sen...

    Mittlerweile habe ich den Ausgangspost auch erst richtig kapiert. Das Löschen der genannten Plists bringt hier natürlich nichts..
     
  16. Atelis

    Atelis Akerö

    Dabei seit:
    01.03.07
    Beiträge:
    1.831
    Gut, dann scheint dieser Schönheitsfehler also mit irgendeinem Systemupdate und nicht mit Awaken gekommen zu sein.

    Das hatte ich ja auch schon versucht, aber ich finde keinen Wert für "set volume output volume X", der genau bei 8 Balken landet - sehr wahrscheinlich aus dem Grund, den Amin Negm-Awad genannt hat.

    Wenn der Fehler bei Apple liegt, wird ja das "set volume output volume 50" irgendwann wieder richtig sein - dachte halt nur, dass ich irgendeinen Fehler mache...

    Vielen Dank an alle!
     

Diese Seite empfehlen