Quando ho iniziato a suonare con Hammerspoon, ho sfogliato l’intera API per vedere quali cose potevo fare con essa. I miei occhi sono caduti sulla categoria hs.sound
e sapevo che in quel momento dovevo costruire una tavola armonica. Una volta che ho impostato la mia Hyper-key e diversi collegamenti di tasti davvero utili, sono andato a lavorare.
Non molto tempo dopo, ho potuto completare il gioco di parole di un collega con un suono “BA-DUM-TISS” con la semplice pressione di un pulsante. O terminare un incontro con Peon del Warcraft dicendo “LAVORO LAVORO”. I miei preferiti personali erano un pezzo di “musica per ascensori” completamente arbitraria e l’introduzione di “Driving home for Christmas”.
La configurazione
Fidati di me quando dico, il codice non è la parte difficile. La parte difficile è trovare buoni frammenti audio da usare. Se stai cercando ispirazione, dai un’occhiata al sito My Instants. Hanno una brillante collezione di piccoli frammenti sonori da vari film, canzoni e persino giochi.
Una volta raccolti alcuni suoni, puoi iniziare a costruire la tua tavola armonica con Hammerspoon. Per mantenere le cose gestibili, le mappature tra chiavi e file audio sono memorizzate in una tabella. Questa tabella viene quindi letta da una funzione, legando il file audio alla chiave specificata. Ecco una parte del mio setup:
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 tabella nel mio file contiene voci per quasi tutte le chiavi, ma la maggior parte di esse è stata omessa qui, perché l’idea è illustrata abbastanza bene in questo esempio. Il ciclo for sotto di esso (dove dice -- Initialise Soundboard!
) scorre su questa tabella e lega la chiave specificata a una funzione che riproduce il suono dato. Assicurati di inserire i suoni nel percorso specificato (~/.hammerspoon-assets/soundboard/
) o di regolare il percorso di conseguenza.