Cuando empecé a jugar con Hammerspoon, exploré toda su API para ver qué cosas podía hacer con ella. Mis ojos se fijaron en la categoría hs.sound
y supe en ese momento que tenía que construir una caja de resonancia. Una vez que configuré mi hiperclave y varias fijaciones de teclas realmente útiles, me puse a trabajar.
Poco después, pude completar el juego de palabras de un compañero de trabajo con un sonido «BA-DUM-TISS» con solo presionar un botón. O termina una reunión con el Peón de Warcraft diciendo «TRABAJO, TRABAJO». Mis favoritos personales fueron una pieza de «música de ascensor» completamente arbitraria y la introducción de»Conducir a casa para Navidad».
La configuración
Confía en mí cuando digo que el código no es la parte difícil. La parte difícil es encontrar buenos fragmentos de audio para usar. Si estás buscando inspiración, echa un vistazo a la página web de Mis Instantes. Tienen una brillante colección de pequeños fragmentos de sonido de varias películas, canciones e incluso juegos.
Una vez que haya recopilado algunos sonidos, puede comenzar a construir su caja de resonancia con Hammerspoon. Para mantener las cosas manejables, las asignaciones entre teclas y archivos de sonido se almacenan en una tabla. Esta tabla es leída por una función, vinculando el archivo de sonido a la tecla especificada. Esta es una parte de mi configuración:
local soundBoard = {
badumtiss = { key = '1', file = 'badumtiss.mp3' },
metalgearsolid = { key = '2', file = 'metalgearsolid.mp3' },
winError = { key = '3', file = 'windows-error.mp3' },
sadtrombone = { key = '4', file = 'sadtrombone.mp3' },
crickets = { key = '5', file = 'crickets.mp3' },
batman = { key = '6', file = 'batman-transition.mp3' },
shocked = { key = '7', file = 'shocked.mp3' },
inception = { key = '8', file = 'inceptionbutton.mp3' },
haGay = { key = '9', file = 'ha-gay.mp3' },
workwork = { key = '0', file = 'wc-work-work.mp3' },
workComplete = { key = '-', file = 'wc-work-complete.mp3' },
ns = { key = '=', file = 'ns-ding-dong.mp3' },
-- ... many more here
}-- Initialise Soundboard!
for n,s in pairs(soundBoard) do
-- Change the path here to where your sound files are stored:
s.sound = hs.sound.getByFile(os.getenv("HOME") .. '/.hammerspoon-assets/soundboard/' .. s.file) -- Bind to Hyper+Cmd+s.key
hyper.bindKeyWithModifiers(s.key, {'cmd'}, function()
s.sound:stop()
s.sound:play()
end)
end
La tabla de mi archivo contiene entradas para casi todas las claves, pero la mayor parte de ellas se han omitido aquí, porque la idea está suficientemente ilustrada en esta muestra. El bucle for debajo de él (donde dice -- Initialise Soundboard!
) gira sobre esta tabla y vincula la tecla especificada a una función que reproduce el sonido dado. Asegúrese de colocar los sonidos en la ruta especificada (~/.hammerspoon-assets/soundboard/
) o ajuste la ruta en consecuencia.