Jouer des sons à distance
Poster un commentaire17/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
Et voilà…
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