Déjà plusieurs années que je m'arrache les cheveux pour faire mon Audio Control Panel

3 Entrées : TeamSpeak | Intérieurs = Jeehell | Exterieurs = FS
3 Sorties : casque | enceintes frontales | enceintes arrières
Le volume de chaque entrées est réglable.
Chaque son peut être distribué sur différentes sorties.
J'ai essayé un mixage fil à fil des câbles audio sans amplificateur.
Ça fonctionne mais il y a trop de parasite.
Voila enfin une solution qui fonctionne après des mois de recherche et un travail acharnée


Chapitre 1 :
A partir d'un axe connecté à SIOC, nous allons faire des raccourcis clavier.
- Code: Tout sélectionner
var 2374, name lin_3, value 127 // valeur du potentiomètre n-1
Var 2375, Link IOCARD_ANALOGIC, Input #4, PosL 0, PosC 127, PosR 255
{
l0 = v2375 - v2374 // val pot n - val pot n-1
l0 = ABS l0 // delta du pot maintenant et avant
IF l0 > 4 // évite les changements si perturbation
{
l2 = div v2375 25 // on divise par 25 soit : 11 positions possible pour le volume
&DoKeys = l2 // touche de clavier #1 à #11 pour le volume (voir sioc.ini)
&DoKeys = 0
&lin_3 = v2375 // mémorise la valeur n-1
}
}
Et un code pour le Sioc.ini pour les raccourcis clavier
- Code: Tout sélectionner
//// exemple pour CTRL ALT
#1=\3\5\E\4\6
#2=\3\5\F\4\6
#3=\3\5\G\4\6
#4=\3\5\H\4\6
#5=\3\5\I\4\6
#6=\3\5\J\4\6
#7=\3\5\K\4\6
#8=\3\5\L\4\6
#9=\3\5\M\4\6
#10=\3\5\N\4\6
#11=\3\5\O\4\6
#12=\3\5\P\4\6
Chapitre 2 :
Nous allons utiliser un logiciel de programmation gratuit : AutoHotkey.
Il permet de détecter les joysticks, claviers, modifier les réglages audio ( volume, balance, silence), et pleins d'autres choses. (http://autohotkey.com)
Un exemple de code pour modifier le volume a partir d'un joystick Windows:
- Code: Tout sélectionner
#Persistent ; pour tourner le programme en boucle
SetTimer, WatchAxis, 10
return
WatchAxis:
GetKeyState, JoyX, 2JoyX ; position axe X joystick 2
GetKeyState, JoyY, 2JoyY ; position axe Y joystick 2
GetKeyState, JoyR, 2JoyR ; position axe R joystick 2
KeyToHoldDownPrev = %KeyToHoldDown% ; Prev now holds the key that was down before (if any).
SoundSet ,Round(JoyX, -1), MASTER, VOLUME, 1 ; modifie le volume Master sortie 1
SoundSet ,Round(JoyY, -1), MASTER, VOLUME, 2 ; modifie le volume Master sortie 2
SoundSet ,Round(JoyR, -1), MASTER, VOLUME, 3 ; modifie le volume Master sortie 3
Le plus dur c'est de trouver le numéro de joystick. (2 pour moi, sinon c'est vide pour 0, et de 1 à 12 )
( info ici: https://autohotkey.com/docs/KeyList.htm )
Mais le plus compliquer c'est aussi de trouver la bonne sortie audio.
( info ici: https://autohotkey.com/docs/commands/SoundSet.htm )
Je découvre un peu ce logiciel mais on peut faire vraiment beaucoup de chose.
Chapitre 3 :
VAC : Virtual Audio Cable
Ce logiciel permet de créer des cartes son virtuelles.
Il faut les utiliser comme sortie audio dans nos logiciels : FS, TeamSpeak, Jeehell.
Ces sorties virtuelles seront redirigés vers les vrais sorties audio du PC.
Exemple d'utilisation que j'ai adopté :

3 Sorties audio virtuelle sont crée pour :
FS, TeamSpeak, Jeehell
J'ai acheter 2 cartes son USB pour avoir 3 sortie audio réelle.
Dans VAC, le programme "audiorepeater.exe" permet de faire un câble virtuelle entre une "sortie audio virtuelle" et une "sortie audio réelle" :

Pour les paramètres (bluffers, bits, sample rate...) , j'ai aucune connaissance en audio...
Après plusieurs test, c'est pas mal comme ça, Mais si quelqu'un si connait, je suis preneur ....

Pour faire plusieurs "câble", il faut une fenêtre par câble (qui seront caché).
Maintenant avec une ligne de code sur AutoHotkey on peut, connecter une "sortie audio virtuelle" a une "sortie audio réelle" :
- Code: Tout sélectionner
Run, "F:\Program Files\Virtual Audio Cable\audiorepeater.exe" /Input:"vhf2 (Virtual Audio Cable)" /Output:"Front (Generic USB Audio Device" /SamplingRate:88200 /BitsPerSample:32 /Channels:2 /AutoStart /BufferMs:50 /Buffers:256 /Priority:high /WindowName:lin1 , , min
Pour les noms des cartes son, il faut lancer "audiorepeater.exe" (Virtual Audio Cable) et recopier le nom exact des sorties.
J'ai nommé les fenêtres qui s'ouvrent : lin1 , lin2, lin3.
Dans ma configuration, je veux uniquement 3 "câbles", et quand je fais un changement de switch :
- je ferme l'ancienne fenêtre ( exp : FS > sortie audio1)
- et j'en ouvre une nouvelle ( exp : FS > sortie audio2 casque)
Un exemple de code pour utiliser un bouton de joystick (toggle 2 positions) pour changer de sortie audio (AutoHotkey )
- Code: Tout sélectionner
2joy1:: ; action du joystick 2 le bouton 1
WinShow lin1 ; affiche la fenêtre vac cable1
WinKill lin1 ; ferme la fenêtre vac cable1
WinShow lin1 ; encore une fois pour éviter les doublons de fenêtre
WinKill lin1
Run, "F:\Program Files\Virtual Audio Cable\audiorepeater.exe" /Input:"vhf2 (Virtual Audio Cable)" /Output:"Casque (Realtek High Definition" /SamplingRate:88200 /BitsPerSample:32 /Channels:2 /AutoStart /BufferMs:50 /Buffers:256 /Priority:high /WindowName:lin1 , , min
SetTimer, WaitTS, 10 ; le reste c'est uniquement pour les boutons à bascule
return
WaitTS:
if GetKeyState("2joy1") ; si le bouton change de position, on change la sortie
return
WinShow lin1 ; affiche la fenetre vac cable1
WinKill lin1 ; ferme la fenetre vac cable1
WinShow lin1
WinKill lin1
Run, "F:\Program Files\Virtual Audio Cable\audiorepeater.exe" /Input:"vhf2 (Virtual Audio Cable)" /Output:"Front (Generic USB Audio Device" /SamplingRate:88200 /BitsPerSample:32 /Channels:2 /AutoStart /BufferMs:50 /Buffers:256 /Priority:high /WindowName:lin1 , , min
SetTimer, WaitTS, off
return
Voila ce que ça donne :




Comme chez Airbus, j'ai mis une led dans les potentiomètres (on/off)
J'ai utilisé un feutre noir coupé, avec une led à l’intérieur.
J'ai pas encore trouvé quoi mettre au dessus de transparent.
Il reste encore quelques finitions mais ça fonctionne parfaitement.
A très bientôt
Raphaël
http://rafou.airlines.free.fr/