¿Por qué este applecript no establece realmente el volumen de entrada en cero?

5

Tengo este comando que crea un script para silenciar el volumen de entrada. Sin embargo, el volumen de entrada no está completamente silenciado. Parece estar más cerca del 10% que del 0%.

osacompile -x -e 'tell application "System Events" to set volume input volume 0' -o ~/bin/mute_mic.scpt

Esto es extraño, porque la barra deslizante está tan a la izquierda como puede ir, pero como se puede ver en la imagen adjunta, el sonido aún se está registrando. Sin embargo, si uso el mouse para hacer clic en el control deslizante a cero, en realidad silencia la entrada.

¿Por qué sucede esto? ¿Estoy usando applecript incorrectamente aquí?

InclusopuedoreplicarestoconeleditorbásicodeAppleScript,asíqueséquenoesunproblemaconlacompilación.

(Nota: originalmente tomé mi ejemplo de la solución a este problema de respuesta de esta pregunta .)

    
pregunta kenny 03.10.2012 - 20:35

3 respuestas

3

Por lo que puedo decir, el script funciona como se esperaba, el problema está en el código de entrada de audio del OS X. Cuando lo ejecuto, el control deslizante pasa al 0%, verificado al pasar el mouse sobre el control deslizante hasta que aparezca la información sobre herramientas:

Estoeslomismoquesiarrastroelcontroldeslizantedevolumenmanualmente.

Elproblemapareceserque"0%" en realidad no significa apagado , sino un umbral muy bajo. En algunas pruebas rápidas, pude grabar el sonido de mi toque con el dedo en la carcasa de mi MacBook Pro cerca del micrófono (en la mayoría de las máquinas, creo que está alrededor de la rejilla del altavoz derecho) cuando el volumen se estableció en 0 . Podría replicarlo independientemente de si configuro el control deslizante manualmente o mediante AppleScript. Parecía ser lo suficientemente bajo como para que prácticamente no se detecte ningún otro sonido, pero claramente el micrófono no está realmente apagado.

Por lo que puedo decir, no hay manera de silenciar adecuadamente el micrófono incorporado. Lo mejor que puedo sugerir es cambiar la entrada de audio para usar la línea, si su Mac está equipada con una línea en el puerto . Desafortunadamente, hacer eso a través de AppleScript requiere algunas secuencias de comandos GUI, pero esto debería hacerlo ( fuente ):

tell application "System Preferences"
   activate
   set current pane to pane id "com.apple.preference.sound"
end tell
tell application "System Events"
   tell process "System Preferences"
       set frontmost to true
       --get properties of UI element of tab group of window "Sound"
       click radio button "input" of tab group of window "Sound"
       tell row 2 of table 1 of scroll area 1 of tab group 1 of window "Sound" to set selected to true
   end tell
end tell

Si tiene más de las dos entradas de audio estándar (Mic y Line In), es posible que deba cambiar el número en row 2 según sea apropiado, de acuerdo con el orden en sus preferencias de entrada.

    
respondido por el robmathers 11.10.2012 - 20:52
1

Esto se basa en la secuencia de comandos de GUI de @robmathers y en mi pregunta sobre si puedes "hacer clic" en el control deslizante con applecript. Investigué algo sobre AppleScript y las acciones de la interfaz de usuario y resultó que can .

Esto usa scripts de GUI, lo cual es triste, pero FUNCIONA.

tell application "System Events"
    set volume input volume 0
end tell
tell application "System Preferences"
    activate
    set current pane to pane id "com.apple.preference.sound"
end tell
tell application "System Events"
    tell process "System Preferences"
        set frontmost to true
        click radio button "input" of tab group 1 of window "Sound"
        perform action "AXDecrement" of slider 1 of group 2 of tab group 1 of window "Sound"
    end tell
end tell
tell application "System Preferences"
    quit
end tell

Esto es lo que está sucediendo en este script:

  1. Establece el volumen de entrada en 0, esto mueve el control deslizante hacia la izquierda
  2. "Hace clic" en el control deslizante para hacer cualquier vudú detrás de escena que Apple haya considerado necesario para "silenciar" la línea de entrada (esto es ridículo)
  3. Sale de la aplicación de preferencias del sistema.

Una cosa a tener en cuenta: la ventana de Preferencias de sonido no se puede abrir antes de ejecutar esto o el primer set volume input volume 0 no funciona.

También es trivial editar el script para anular el silencio (que también tiene el mismo problema). (Use "AXIncrement" para la acción)

Enormes apoyos para @robmathers para que me ayuden a entender esta última pieza. Seguiré esperando para otorgar la recompensa en caso de que alguien más tenga una solución más elegante, pero de lo contrario, es suya para que la tome.

    
respondido por el kenny 11.10.2012 - 22:27
0

Parece que ahora hay una aplicación para hacer esto. Silenciar enlace

    
respondido por el tik27 17.02.2016 - 15:37

Lea otras preguntas en las etiquetas