Jouer des sons à distance

Poster un commentaire

17/03/2016 par Stephane

Aujourd’hui je partage avec vous un petit script que je me suis fait.

Je recherchais une solution pour jouer des sons (.wav) sur un PC distant. Par exemple lorsque je demande le repoussage à l’équipe au sol, une annonce cabine doit se déclencher sur un autre PC avec les HP derrière moi.

Normalement j’utilise Prosim AFAS mais les événements qui déclenchent les alertes sont prédéterminés et non modifiables, et il n’existe aucun événement pour le repoussage.

Après avoir cherché sur la toile, je n’ai rien trouvé de satisfaisant alors je me suis mis à réfléchir… et j’ai pondu ce petit script.

Le principe est simple ; le script tourne en boucle sur le PC distant et va monitorer un répertoire, que l’on peut lui passer en paramètre (par défaut cela monitore le répertoire courant d’où a été exécuté le script). Dans le répertoire dès que le script voit un fichier .wav il le joue et le renomme en .sound.

Au niveau de la configuration, il faut:
– que le répertoire distant soit partagé avec les bons droits d’accès
– avoir sa collection de fichier .wav dans ce même répertoire mais renommés en .sound

Dès que l’on veut jouer un son il suffit que le PC principal ait un mécanisme pour renommer le fichier .sound en .wav, sur le PC distant, alors le script le joue et ensuite le renomme en .sound

Dans mon cas la partie renommage .sound en .wav est gérée sur le PC principal depuis Voice Attack (https://stephane737ng.wordpress.com/2014/10/31/commandes-vocales-et-interactions/) puisque je déclenche le repoussage à la voix via ce logiciel. VoiceAttack execute alors un simple rename: ren \\PC_Distant\Repertoire\monfichier.sound \\PC_Distant\Repertoire\monfichier.wav

Un petit dessin explicatif

Playwav_draw

Et voilà… cool

Le script est écrit avec AutoIT (https://www.autoitscript.com/site/autoit/) et je l’ai compilé en .exe sur le PC distant.

Le script:

[== Indéfini ==]
#include <Sound.au3>
#include <MsgBoxConstants.au3>

HotKeySet("{ESC}", "_Terminate")

if($CmdLine[0] >= 1) Then
   ;msgbox($MB_OK,"",$CmdLine[1])
   local $mask = $CmdLine[1] & "\*.wav"
   local $path = $CmdLine[1]
Else
   local $mask = "*.wav"
   local $path = ".\"
EndIf

while 1
   ;msgbox($MB_OK,"",$mask)
   local $hSearch = FileFindFirstFile($mask)
   if $hSearch <> -1 Then
	  local $sFileName = $path & "\" & FileFindNextFile($hSearch)
	  ;msgbox($MB_OK,"",$sFileName)
	  local $snewname = StringReplace($sFileName,".wav",".sound")
	  local $aSound = _SoundOpen($sFileName)
   	  _SoundPlay($aSound,1)
	  _SoundClose($aSound)
	  filemove($sFileName,$snewname,$FC_OVERWRITE)
   EndIf
   FileClose($hSearch)
   Sleep ( 1000 )
WEnd

Func _Terminate()
    Exit
EndFunc   ;==>_Terminate

Dernière modification par stephanev (2016-03-1

Publicité

Votre commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Image Twitter

Vous commentez à l’aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s

%d blogueurs aiment cette page :