Lorsque j’ai commencé à jouer avec Hammerspoon, j’ai parcouru toute son API pour voir ce que je pouvais en faire. Mes yeux sont tombés sur la catégorie hs.sound
et je savais à ce moment-là que je devais construire une table d’harmonie. Une fois que j’ai configuré mon Hyper-clé et plusieurs raccourcis clavier vraiment utiles, je suis allé travailler.
Peu de temps après, je pouvais compléter le jeu de mots d’un collègue avec un son « BA-DUM-TISS » en appuyant sur un bouton. Ou terminez une réunion avec le Péon du Warcraft en disant « TRAVAIL TRAVAIL ». Mes favoris personnels étaient un morceau de « musique d’ascenseur » complètement arbitraire et l’introduction de « Driving home for Christmas ».
La configuration
Croyez-moi quand je dis, le code n’est pas la partie difficile. Le plus difficile est de trouver de bons fragments audio à utiliser. Si vous êtes à la recherche d’inspiration, jetez un coup d’œil au site Mes Instants. Ils ont une brillante collection de petits extraits sonores de divers films, chansons et même jeux.
Une fois que vous avez collecté des sons, vous pouvez commencer à construire votre table d’harmonie avec Hammerspoon. Pour que les choses restent gérables, les mappages entre les clés et les fichiers son sont stockés dans une table. Cette table est ensuite lue par une fonction, liant le fichier son à la clé spécifiée. Voici une partie de ma configuration:
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
Le tableau de mon fichier contient des entrées pour presque toutes les clés, mais la majeure partie d’entre elles ont été omises ici, car l’idée est assez bien illustrée dans cet exemple. La boucle for en dessous (où elle indique -- Initialise Soundboard!
) boucle sur cette table et lie la touche spécifiée à une fonction qui lit le son donné. Assurez-vous de placer les sons dans le chemin spécifié (~/.hammerspoon-assets/soundboard/
) ou d’ajuster le chemin en conséquence.