kiedy zacząłem grać z Hammerspoon, przejrzałem całe jego API, aby zobaczyć, co mogę z nim zrobić. Moje oczy padły na kategorię hs.sound
i wiedziałem, że w tym momencie muszę zbudować płytę rezonansową. Po skonfigurowaniu mojego Hyper-key i kilku naprawdę przydatnych wiązań kluczy, poszedłem do pracy.
niedługo potem mogłem skompletować kalambur współpracownika dźwiękiem „BA-DUM-TISS” za naciśnięciem przycisku. Lub zakończyć spotkanie z Peon Warcrafta mówiąc „praca praca”. Moim osobistym faworytem był kawałek całkowicie arbitralnej ” muzyki windy „i wprowadzenie”Driving home for Christmas”.
Konfiguracja
Zaufaj mi, gdy mówię, że kod nie jest trudną częścią. Najtrudniejsze jest znalezienie dobrych fragmentów audio do wykorzystania. Jeśli szukasz inspiracji, zajrzyj na stronę My Instants. Mają genialną kolekcję małych fragmentów dźwięków z różnych filmów, piosenek, a nawet gier.
po zebraniu dźwięków możesz zacząć budować swoją płytę rezonansową za pomocą Hammerspoon. Aby zachować łatwość zarządzania, mapowania między klawiszami i plikami dźwiękowymi są przechowywane w tabeli. Ta tabela jest następnie odczytywana przez funkcję, wiążącą plik dźwiękowy z podanym kluczem. Oto część mojej konfiguracji:
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
tabela w moim pliku zawiera wpisy dla prawie wszystkich kluczy, ale większość z nich została pominięta tutaj, ponieważ pomysł jest wystarczająco dobrze zilustrowany w tej próbce. Pętla for pod nią (gdzie jest napisane -- Initialise Soundboard!
) zapętla się nad tą tabelą i wiąże podany klucz z funkcją, która odtwarza dany dźwięk. Upewnij się, że albo umieścisz dźwięki w podanej ścieżce (~/.hammerspoon-assets/soundboard/
), albo odpowiednio dostosujesz ścieżkę.