Automatisation du détournement audio 4 avec des raccourcis et JavaScript – Six couleurs

Automatisation du détournement audio 4 avec des raccourcis et JavaScript – Six couleurs
Une automatisation Audio Hijack 4 active et désactive les blocs et démarre une session.

Audio Hijack 4 de Rogue Amoeba est là, et bien qu’il ait un tas de nouvelles fonctionnalités intéressantes, mon préféré est sa prise en charge de l’automatisation via JavaScript et des raccourcis. Bien que tout ne soit pas (encore) contrôlable dans Audio Hijack, la plupart le sont, et cela offre des possibilités vraiment intéressantes aux utilisateurs.

Audio Hijack peut être contrôlé par des scripts enregistrés dans l’application elle-même (l’application comprend plusieurs scripts intégrés sous forme d’échantillons, et d’autres sont disponibles sur le site Web de Rogue Amoeba), via des scripts enregistrés sous .ahcommand fichiers texte sur votre Mac et via des scripts envoyés directement depuis Raccourcis. Les sessions individuelles peuvent exécuter des scripts via le nouvel onglet Script de chaque session ; les automatisations peuvent se déclencher lorsqu’un enregistrement, une session ou une minuterie s’arrête ou démarre. Un script fourni par Rogue Amoeba, Discard Small Files, supprimera tout enregistrement de moins de cinq secondes. C’est un match parfait pour l’événement Session Stop.

Mais Audio Hijack se déroule vraiment lorsque vous l’intégrez aux raccourcis. À l’heure actuelle, l’application propose trois actions de raccourcis : exécuter un script, exécuter JavaScript et exécuter/arrêter la session. Exécuter un script exécutera un script stocké dans l’application Audio Hijack ; Exécuter JavaScript exécutera un script transmis à l’application à partir du raccourci, et Exécuter/Arrêter la session vous permet d’activer ou de désactiver une session particulière. (Il existe un paramètre “Autoriser l’exécution de scripts externes” dans les préférences d’Audio Hijack que vous devez d’abord activer.)

C’est un ensemble très limité d’actions. Mais même si seul Run Javascript in Audio Hijack était disponible, tout serait possible. En effet, l’implémentation JavaScript initiale d’Audio Hijack 4 vous permet de détecter l’état des sessions et des blocs individuels au sein des sessions, puis de les activer et de les désactiver. Vous pouvez également affecter certaines variables, mais pas toutes, au sein d’un bloc. Vous pouvez définir le nom de fichier et la destination d’un bloc d’enregistrement, par exemple, afin qu’un raccourci ou un script puisse nommer et placer un fichier de manière adaptative.

Exemples simples

Voici un exemple simple : j’ai créé un raccourci qui active ou désactive une session particulière de détournement audio. L’action Run/Stop Session n’a aucune connaissance de l’état actuel de la session, donc le raccourci exécute d’abord un JavaScript d’une ligne :

return (app.sessionWithName('Podcast lossless').running)

Lorsque Audio Hijack exécute ce script, il renverra un résultat de true si la session est en cours d’exécution, et false si ce n’est pas le cas. À ce stade, mon raccourci peut gérer ce qui se passe ensuite.

Ou disons que vous voulez créer un raccourci qui nécessite une liste des sessions en cours d’exécution. Vous utiliseriez ce script :

var sessionNames = [ ];
try {
app.runningSessions.forEach( session =>
{
    sessionNames.push(session.name);
})
return sessionNames;
}
catch(err){
return '';
}

Ce que votre raccourci fait avec ces informations dépend de vous.

Commutateur à trois positions

J’ai écrit un raccourci qui crée un commutateur à trois voies lorsque j’enregistre et diffuse en direct The Incomparable. Le raccourci détecte l’état actuel de la session Incomparable, qu’elle ne soit pas en cours d’exécution, qu’elle diffuse de la musique en direct avant le début de l’émission, ou qu’elle diffuse et enregistre nos voix.

Chaque fois que le raccourci est activé, il met à jour la session Audio Hijack afin que tout soit dans la bonne position pour la prochaine étape du flux de travail. Si le raccourci s’exécute alors que rien ne se passe, il active la session, éteint mon microphone et s’assure que l’enregistrement est désactivé, et bascule un commutateur A/B vers la partie de diffusion de musique de la session. Ce script ressemble à ceci :

app.sessionWithName("Live - Incomparable").blocks.forEach( block =>
{
    if (block.name == "Recorder") {
block.disabled = true;
}})
app.sessionWithName("Live - Incomparable").blockWithName("musicapp").disabled = false;
app.sessionWithName("Live - Incomparable").blockWithName("USBPre").disabled = true;
app.sessionWithName("Live - Incomparable").blockWithName("Switch").switchPosition = 'A';
app.sessionWithName("Live - Incomparable").start()

Si le raccourci détecte que la session s’exécute en mode musique, il exécute un script différent qui active mon microphone et tous les blocs d’enregistrement et désactive la musique.

app.sessionWithName("Live - Incomparable").blocks.forEach( block =>
{
    if (block.name == "Recorder"){
        block.disabled = false;
}})
app.sessionWithName("Live - Incomparable").blockWithName("musicapp").disabled = true;
app.sessionWithName("Live - Incomparable").blockWithName("USBPre").disabled = false;
app.sessionWithName("Live - Incomparable").blockWithName("Switch").switchPosition = 'B';

Et bien sûr, si la session est diffusée en direct et enregistrée, la prochaine exécution du raccourci désactive la session. Si la fenêtre de la session Audio Hijack est ouverte lorsque les scripts sont en cours d’exécution – ce n’est plus nécessaire dans Audio Hijack 4 ! – l’application fait tout un show. Les blocs s’allument et s’éteignent et les interrupteurs basculent, le tout sans que je fasse quoi que ce soit (sauf exécuter le raccourci).

Intégration avec Stream Deck

Une partie de la macro Keyboard Maestro qui met à jour un bouton Stream Deck.

J’ai construit mon raccourci à trois voies Incomparable pour être connecté à un bouton Stream Deck, bien sûr. Mais le problème avec la plupart des boutons Stream Deck est qu’ils ne changent pas en fonction de l’état actuel. J’ai donc modifié mon raccourci pour afficher une variable appelée status à la fin de son exécution, indiquant l’état actuel de ma session d’enregistrement.

Ensuite, dans Keyboard Maestro, j’ai créé une macro qui exécute mon raccourci lorsque j’appuie sur le bouton droit. Cette macro met à jour l’image sur le bouton en fonction de la variable renvoyée par le raccourci. Désormais, lorsque mon flux en direct est en mode musique, il y a une superposition de notes de musique. Et lorsque nous diffusons en direct, un symbole de diffusion apparaît. Lorsque nous ne sommes pas en ondes, il n’y a pas de superposition.

J’ai également créé une macro Keyboard Maestro pour le simple raccourci d’activation / désactivation que j’ai mentionné en haut de cet article. Le raccourci demande à Audio Hijack l’état actuel de la session et envoie cette information à la macro Keyboard Maestro. La macro Keyboard Maestro met à jour le bouton Stream Deck en conséquence. Maintenant, lorsque j’appuie sur ce bouton d’enregistrement, il s’allume en rouge lorsqu’il enregistre et redevient noir lorsqu’il ne l’est pas.

S’intégrer à… n’importe quoi, vraiment

Étant donné que l’API JavaScript d’Audio Hijack 4 inclut app.runShortcut() et app.runShellCommand() commandes, et puisque l’application exécutera des scripts JavaScript arbitraires à partir du système de fichiers, il n’y a presque rien que vous ne peut pas intégrez Audio Hijack 4. Lancez un script python depuis Audio Hijack. Exécutez un AppleScript qui indique à Audio Hijack d’ouvrir un fichier de script spécifique. Oui, tout doit passer par JavaScript (et non, JavaScript n’est pas mon préféré), mais si vous pouvez vous frayer un chemin à travers de jolis scripts de base, vous pouvez faire n’importe quel travail.

Cela dit, il reste encore du travail à faire. J’aimerais voir Rogue Amoeba ajouter un accès JavaScript à toutes les variables de tous les blocs. (J’aimerais qu’un script puisse fournir des métadonnées à un bloc de diffusion, par exemple.) Et il devrait y avoir plus d’actions de raccourcis pour l’application. Oui, vous pouvez presque tout faire via la commande Exécuter JavaScript, mais tout le monde n’est pas à l’aise avec JavaScript. C’est bien que Rogue Amoeba ait ajouté Run/Stop Session en tant qu’action, plutôt que de forcer tout le monde à utiliser app.sessionWithName("session").start() à chaque fois, mais il existe probablement d’autres cas d’utilisation courants qui pourraient être rendus un peu plus conviviaux pour les personnes qui pensent en raccourcis, pas en JavaScript.

Toujours! Audio Hijack était déjà l’un de mes utilitaires Mac les plus vitaux, et maintenant, avec la prise en charge des scripts, il est déjà encore plus utile. J’ai hâte de voir ce que les utilisateurs d’Audio Hijack 4 construisent avec les nouveaux outils d’automatisation.

Si vous appréciez des articles comme celui-ci, soutenez-nous en devenant abonné à Six Couleurs. Les abonnés ont accès à un podcast exclusif, à des histoires réservées aux membres et à une communauté spéciale.

.

Leave a Comment