Als ich anfing, mit Hammerspoon zu spielen, habe ich die gesamte API durchsucht, um zu sehen, was ich damit machen könnte. Mein Blick fiel auf die Kategorie hs.sound
und ich wusste in diesem Moment, dass ich einen Resonanzboden bauen musste. Nachdem ich meinen Hyper-Key und einige wirklich nützliche Tastenkombinationen eingerichtet hatte, machte ich mich an die Arbeit.
Nicht lange danach konnte ich das Wortspiel eines Kollegen mit einem „BA-DUM-TISS“ -Sound auf Knopfdruck vervollständigen. Oder beenden Sie ein Treffen mit dem Peon des Kindes und sagen Sie „WORK WORK“. Meine persönlichen Favoriten waren ein Stück völlig willkürlicher „Fahrstuhlmusik“ und die Einführung von „Driving home for Christmas“.
Das Setup
Vertrauen Sie mir, wenn ich sage, der Code ist nicht der schwierige Teil. Der schwierige Teil besteht darin, gute Audiofragmente zu finden. Wenn Sie nach Inspiration suchen, schauen Sie sich die My Instants-Website an. Sie haben eine brillante Sammlung kleiner Soundschnipsel aus verschiedenen Filmen, Liedern und sogar Spielen.
Sobald Sie einige Sounds gesammelt haben, können Sie mit Hammerspoon mit dem Bau Ihres Soundboards beginnen. Um die Dinge überschaubar zu halten, werden die Zuordnungen zwischen Tasten und Sounddateien in einer Tabelle gespeichert. Diese Tabelle wird dann von einer Funktion gelesen, die die Sounddatei an den angegebenen Schlüssel bindet. Hier ist ein Teil meines Setups:
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
Die Tabelle in meiner Datei enthält Einträge für fast alle Schlüssel, aber der Großteil davon wurde hier weggelassen, da die Idee in diesem Beispiel gut genug veranschaulicht wird. Die for-Schleife darunter (wo -- Initialise Soundboard!
steht) durchläuft diese Tabelle und bindet den angegebenen Schlüssel an eine Funktion, die den angegebenen Sound wiedergibt. Stellen Sie sicher, dass Sie die Sounds entweder in den angegebenen Pfad (~/.hammerspoon-assets/soundboard/
) einfügen oder den Pfad entsprechend anpassen.