tillbaka när jag började spela med Hammerspoon, bläddrade jag hela API: et för att se vilka saker jag kunde göra med det. Mina ögon föll på kategorin hs.sound
och jag visste i det ögonblicket att jag var tvungen att bygga en soundboard. När jag hade installerat min Hyper-nyckel och flera riktigt användbara tangentbindningar gick jag till jobbet.
inte långt efter kunde jag slutföra en medarbetares ordlek med ett ”Ba-DUM-TISS”-ljud med en knapptryckning. Eller avsluta ett möte med Warcraft Peon säger”arbete arbete”. Mina personliga favoriter var ett stycke helt godtycklig ” hissmusik ”och introduktionen av”Driving home for Christmas”.
inställningen
lita på mig när jag säger att koden inte är den svåra delen. Den svåra delen är att hitta bra ljudfragment att använda. Om du letar efter inspiration, ta en titt på My Instants webbplats. De har en lysande samling små ljudavsnitt från olika filmer, låtar och till och med spel.
när du har samlat några ljud kan du börja bygga din soundboard med Hammerspoon. För att hålla saker hanterbara lagras mappningarna mellan tangenter och ljudfiler i en tabell. Denna tabell läses sedan av en funktion som binder ljudfilen till den angivna nyckeln. Här är en del av min inställning:
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
tabellen i min fil innehåller poster för nästan alla nycklar, men huvuddelen av dem har utelämnats här, eftersom tanken illustreras tillräckligt bra i det här provet. For-loopen under den (där det står -- Initialise Soundboard!
) slingrar över denna tabell och binder den angivna nyckeln till en funktion som spelar det givna ljudet. Se till att du antingen sätter ljuden i den angivna sökvägen (~/.hammerspoon-assets/soundboard/
) eller justerar sökvägen i enlighet därmed.