toen ik begon te spelen met Hammerspoon, bladerde ik door de hele API om te zien wat ik ermee kon doen. Mijn ogen vielen op de categorie hs.sound
en ik wist op dat moment dat ik een klankbord moest bouwen. Zodra ik had setup mijn Hyper-key en een aantal echt nuttige key-bindingen, ging ik aan het werk.
niet lang daarna kon ik een woordspeling van een collega met een “BA-DUM-TISS” geluid voltooien met een druk op de knop. Of beëindig een vergadering met de Warcraft ‘ s Peon met “werk werk”. Mijn persoonlijke favorieten waren een geheel willekeurige ” liftmuziek “en de introductie van”Driving home for Christmas”.
de Setup
vertrouw me als ik zeg, de code is niet het harde deel. Het moeilijke deel is het vinden van goede audio fragmenten te gebruiken. Als u op zoek bent naar inspiratie, neem een kijkje op de My Instants website. Ze hebben een briljante verzameling van kleine geluidsfragmenten uit verschillende films, liedjes en zelfs games.
zodra u een aantal geluiden hebt verzameld, kunt u beginnen met het bouwen van uw klankbord met Hammerspoon. Om de zaken beheersbaar te houden, worden de toewijzingen tussen toetsen en geluidsbestanden opgeslagen in een tabel. Deze tabel wordt dan gelezen door een functie, die het geluidsbestand bindt aan de opgegeven sleutel. Hier is een deel van mijn 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
de tabel in mijn bestand bevat vermeldingen voor bijna alle sleutels, maar de meeste zijn hier weggelaten, omdat het idee goed genoeg is geïllustreerd in dit voorbeeld. De for-loop eronder (waar -- Initialise Soundboard!
staat) loopt over deze tabel en bindt de opgegeven sleutel aan een functie die het gegeven geluid afspeelt. Zorg ervoor dat u de geluiden in het opgegeven pad (~/.hammerspoon-assets/soundboard/
) plaatst of het pad dienovereenkomstig aanpast.