OS X: Cambia el dispositivo de entrada o salida en segundo plano

Si queremos cambiar el dispositivo de entrada o salida en OS X tenemos 2 opciones: Ir directamente a Preferencias del Sistema > Sonido y cambiarlo en el panel  o hacer ⌥ y click en el icono de sonido en la barra de menú superior. Pero es factible automatizar este proceso.

Si estamos haciendo un Screencast, inevitablemente veremos las ventanas o el menú desplegable si el cambio lo hacemos durante la grabación. Existe una solución a este problema mediante un AppleScript que podemos compilar en Automator y que podemos asociar luego a un atajo de teclado –o incluso un gesto via BTT– pudiendo hacer un script similar para cada dispositivo que queramos utilizar en el proceso.:

tell application "System Preferences"
reveal anchor "output" of pane id "com.apple.preference.sound"
end tell
tell application "System Events" to tell process "System Preferences"
tell table 1 of scroll area 1 of tab group 1 of window 1
select (row 1 where value of text field 1 is "aquí va el nombre del dispositivo deseado")
end tell
end tell
quit application "System Preferences"

Si tenéis alguna sugerencia, incluidla en los comentarios. Siempre sería posible incluir modificaciones para, por ejemplo, alternar entre dispositivos o hacer que el dispositivo sea el inmediatamente siguiente en nuestra lista de dispositivos. Este truco lo he desarrollado gracias a la fenomenal ayuda de jalonsov

Fuente: http://hints.macworld.com/article.php?story=20050614171126634
 

6 Comments

  1. Rafa Espada

    Esto es para el audio de salida… además de cambiar la salida del audio, cambiaba la ecualización de iTunes.

    Este es el código para el cambio de ecualización en iTunes.

    if (button_pressed = «Headphones») then
    tell application «iTunes» to set the current EQ preset to EQ preset «cascos»
    else if (button_pressed = «Line Out») then
    tell application «iTunes» to set the current EQ preset to EQ preset «altavoces»
    end if

  2. jocoloso Post author

    Efectivamente Rafa, el script del artículo modifica el dispositivo de salida (debería haber puesto en el script «aquí va el nombre del dispositivo de salida deseado»), pero con un ligero cambio para indicar la pestaña (tab) a la que afecta el proceso podríamos cambiar también la entrada. Por eso decía que a partir de este esquema podemos hacer muchas más cosas en el panel de Preferencias del Sistema.

    Ahora estoy fuera, pero luego lo pruebo.

    Y muchas gracias por tu aporte 😉

  3. jocoloso Post author

    Hola de nuevo,

    Para poder cambiar el dispositivo de entrada tan sólo hay que cambiar la segunda línea: donde pone «output» debemos incluir «input»

    Así de fácil, el resto permanece igual:

    tell application «System Preferences»
    reveal anchor «input» of pane id «com.apple.preference.sound»
    end tell
    tell application «System Events» to tell process «System Preferences»
    tell table 1 of scroll area 1 of tab group 1 of window 1
    select (row 1 where value of text field 1 is «aquí va el nombre del dispositivo de entrada deseado»)
    end tell
    end tell
    quit application «System Preferences»

    Como decía en el anterior comentario, este esquema permite múltiples acciones en las Preferencias del Sistema.

    Tal y como indica Lri en el hilo que comento en el artículo:
    – pane id «» se usa para referirse a una de las opciones del panel de Preferencias
    – reveal anchor «» para una determinada pestaña dentro de la opción anterior

  4. jocoloso Post author

    ¡Buenas jalonsov!

    Aquí traigo una nueva modificación:

    tell application «System Preferences»
    reveal anchor «output» of pane id «com.apple.preference.sound»
    end tell
    tell application «System Events» to tell process «System Preferences»
    tell table 1 of scroll area 1 of tab group 1 of window 1
    if (selected of row 1 where value of text field 1 is «aquí va el nombre del dispositivo de salida 1») is true then
    select (row 1 where value of text field 1 is «aquí va el nombre del dispositivo de salida 2»)
    else
    select (row 1 where value of text field 1 is «aquí va el nombre del dispositivo de salida 1»)
    end if
    end tell
    end tell
    quit application «System Preferences»

    En este caso, partimos de 2 dispositivos de salida y el mismo atajo de teclado o gesto (con BTT) nos cambia la configuración entre dispositivos de manera cíclica. Muy util para no tener que andar recordando múltiples gestos si sólo queremos alternar entre 2 dispositivos.

    Como antes, si queremos que el script sirva para dispositivos de entrada, en la segunda línea sustituiremos «output» por «input».

    También es posible cambiar resoluciones de pantalla con:
    – pane id «com.apple.preference.displays»
    – anchor «displaysDisplayTab»

    ¿Alguien se anima? 😉

Deja una respuesta