Prosim737 immersion sonore et Bodyshaker

Domelecq

PILOTE DE LIGNE
Messages
704
Réactions
6
Points
108
Bonjour a tous,

Afin d'améliorer encore l'immersion dans mon cockpit, j'ai décidé d'améliorer mon
système son.

j'ai maintenant cinq zones de diffusions sonores totalement indépendantes (merci prosim).

1552482173_implantation_cote_domelecq.jpg


1552482195_implantation_dessus_domelecq.jpg


Et j'ai aussi investi dans un bodyshaker et ampli dédié (coût total de 40 euros).

Ce Bodyshaker est fixé directement sous mon siege (le siège copilote vas bientôt suivre).


Le problème est de trouver le moyen de répartir correctement ces sons, et surtout les jouer au bon moment.

Ne trouvant pas mon bonheur, j'ai décidé en m’inspirant de ce qui avait déjà été fait,
de créer des fichiers LUA permettant de gérer ces sons automatiquement.

C'est une première version, je vais l’améliorer, et je partagerais mes avancées sur ce post.

il y a en tout 14 fichiers LUA, il suffit de les copier/coller dans le répertoire module de P3DV4.

1552482435_liste_lua_domelecq.jpg


Ces fichiers vont a la fois gérer les annonces des hôtesses dans les différentes phases de vol, les bruits ambiants, et surtout les vibrations du bodyshaker.

Rassurer tout ce fait de façon très transparente, le plus long est de rajouter les sons a PROSIM et de leur affecter un Offset FSUIPC de déclenchement.

Mais en suivant mon tuto vous verrez que c'est très simple.


Je vais maintenant vous décrire la fonctions de chacun des scripts LUA.


-----------------------------------------------------------------------------------
I DESCRIPTION SCRIPT LUA
-----------------------------------------------------------------------------------

1. ipcReady

Ce fichier Lua est le lanceur de script automatique, au lancement de P3D (et donc de

FSUIPC), il est lu, et son contenu est lancé.

1552482817_ipc_ready_domelecq.jpg


Par exemple avec cette ligne :

ipc.macro("Lua BOARDING")

Nous lançons BOARDING.lua, il est important de bien respecter les majuscules et orthographe sinon le fichier ne se lancera pas.

si vous souhaitez enlevez des scripts automatiques, il vous suffit de supprimer la ligne correspondante.

Si vous avez déjà des script dans ipcReady, alors ajouter les miens à la suite.

Code:
[== Indéfini ==]
ipc.macro("Lua APPROACH")
ipc.macro("Lua BOARDING")
ipc.macro("Lua CLIMB")
ipc.macro("Lua CRUISE")
ipc.macro("Lua DESCENT")
ipc.macro("Lua GEAR")
ipc.macro("Lua PARKING")
ipc.macro("Lua RAIN")
ipc.macro("Lua SAFETY")
ipc.macro("Lua TAXI")
ipc.macro("Lua TURBULENCE")
ipc.macro("Lua VIBRATION")

------------------------------------------------------------------------------------

2. BOARDING

Pour commencer il est important de démarrer avec les portes de l'avion fermées

Ce lua vas attendre de votre part plusieurs actions

2.1 EMBARQUEMENT

Pour activer l’embarquement, il suffit d’activer le seatbelt sign et no smoking sign

et ensuite de demander l’ouverture de la porte principale (shift+E dans P3D)

Si tout se passe bien :

- Message EMBARQUEMENT sur l'écran
- Musique embarquement jouée automatiquement
- Son des passagers qui embarquent

2.2 FIN EMBARQUEMENT

pour cela on referme la porte principale (de nouveau shift+E)

Si tout se passe bien :

- Message OK POUR DÉPART
- la Musique sarrête
- son des passagers en cruise
- Annonce de bienvenue de lhôtesse.

Code:
[== Indéfini ==]
------------------------------------------------------------------------------------------------
-- Auteur : Philippe LECQ
-- pseudo : domelecq
-- forum  : www.flightpilote.fr
-- 2019
-- VERSION 1.1
-- PROSIM737
-- BOARDING
------------------------------------------------------------------------------------------------

------------------
--   BOARDING   --
------------------

boardingflag=0                    --détection embarquement
boardingfin=0                    --détection fin embarquement

function boarding(offset,value)

Seatbeltsign=ipc.readUB("341D")
Nosmokingsign=ipc.readUB("341C")
ground=ipc.readUB("0366")             --only on ground
porte=ipc.readUB("3367")            --détection portes


if (ground == 1) and (porte > 0) and (Seatbeltsign == 1) and (Nosmokingsign == 1) and (boardingflag==0) then

ipc.setbitsUB(0x5713, 1)                                 -- 0x5713 bit 0 boarding sound
ipc.setbitsUB(0x5713, 2)                                 -- 0x5713 bit 1 music

boardingflag=1
ipc.display("EMBARQUEMENT", 5)
end

if (porte == 0) and (boardingflag == 1) and (boardingfin == 0) then

ipc.clearbitsUB(0x5713, 1)                               -- 0x5713 bit 0 fin boarding sound
ipc.clearbitsUB(0x5713, 2)                               -- 0x5713 bit 1 fin music

ipc.setbitsUB(0x5713, 4)                            -- 0x5713 bit 2 cruise passager sound

ipc.sleep(10000)

ipc.setbitsUB(0x5714, 16)                                 -- 0x5714 bit 4 gate depart sound

boardingfin=1                                    -- fin de boarding
ipc.display("OK POUR DEPART", 5)
end

end

-------------------------------
--LUA calls for events FSUIPC--
-------------------------------

event.offset(0x3367,"UB","boarding")     -- suivant position porte


------------------------------------------------------------------------------------

3. SAFETY

Le lua safet'y va détecter un déplacement de l'avion.

Quand la vitesse sol dépassera 8 knots :

- Annonce de l’hôtesse des consignes de sécurité

Code:
[== Indéfini ==]
------------------------------------------------------------------------------------------------
-- Auteur : Philippe LECQ
-- pseudo : domelecq
-- forum  : www.flightpilote.fr
-- 2019
-- VERSION 1.1
-- PROSIM737
-- SAFETY ANNONCE
------------------------------------------------------------------------------------------------

------------------
--SAFETY MESSAGE--
------------------

safet'yflag=0

function safet'y(offset,value)

Seatbeltsign=ipc.readUB("341D")
Nosmokingsign=ipc.readUB("341C")
ground=ipc.readUB("0366") --only on ground
gs=ipc.readUD("02B4") -- valeur brut de la vitesse sol
groundspeed = gs / 65536.0 * 1.94384 -- valeur vitesse sol en knots


if (ground == 1) and (safet'yflag==0) and (groundspeed >=  and (Seatbeltsign == 1) then

ipc.setbitsUB(0x5713,                                  -- 0x5713 bit 3 safet'y briefing
                 

ipc.display("SAFETY BRIEFING", 5)

safet'yflag=1

end

end


-------------------------------
--LUA calls for events FSUIPC--
-------------------------------

event.offset(0x02B4,"UD","safet'y")     -- suivant gs

------------------------------------------------------------------------------------

4. TAXI

le lua taxi est conditionné par la vitesse sol et que l'avion se touve bien au sol

si la vitesse sol est supérieur a 3 et inférieur a 15 alors :

- son ground roll 1
- son ground roll bass 1 (pour bodyshaker)

si la vitesse sol est superieur a 15 et inferieur a 25 alors :

- son ground roll 2
- son ground roll bass 2 (pour bodyshaker)

si la vitesse sol est superieur a 25 et inferieur a 40 alors :

- son ground roll 3
- son ground roll bass 3 (pour bodyshaker)

si la vitesse sol est supérieur a 40 alors :

- son ground roll max
- son ground roll max - bass (pour bodyshaker)

une fois que l'avion ne touche plus le sol les sons sarrêtent.

Code:
[== Indéfini ==]
------------------------------------------------------------------------------------------------
-- Auteur : Philippe LECQ
-- pseudo : domelecq
-- forum  : www.flightpilote.fr
-- 2019
-- VERSION 1.1
-- PROSIM737
-- GROUNDROLL
------------------------------------------------------------------------------------------------


----------------------
--    GROUND ROLL   --
----------------------

function groundroll(offset,value)

ground=ipc.readUB("0366") --only on ground


if (ground == 1) then

gs=ipc.readUD("02B4") -- valeur brut de la vitesse sol
groundspeed = gs / 65536.0 * 1.94384 -- valeur vitesse sol en knots


if (ground == 1) and (groundspeed > 2) and ( groundspeed <= 15 ) then         -- groundroll niveau 1

ipc.setbitsUB(0x5715, 1)                             -- 0x5715 bit 0 et 3
ipc.setbitsUB(0x5715,
                             
else
ipc.clearbitsUB(0x5715, 1)                               -- 0x5715 bit 0 et 3
ipc.clearbitsUB(0x5715,
end

if (ground == 1) and (groundspeed > 15) and ( groundspeed <= 25 ) then         -- groundroll niveau 2

ipc.setbitsUB(0x5715, 2)                            -- 0x5715 bit 1 et 4
ipc.setbitsUB(0x5715, 16)
                                
else
ipc.clearbitsUB(0x5715, 2)                               -- 0x5715 bit 1 et 4
ipc.clearbitsUB(0x5715, 16)
end

if (ground == 1) and (groundspeed > 25) and ( groundspeed <= 40 ) then         -- groundroll niveau 3

ipc.setbitsUB(0x5715, 4)                            -- 0x5715 bit 2 et 5
ipc.setbitsUB(0x5715, 32)
                               
else
ipc.clearbitsUB(0x5715, 4)                               -- 0x5715 bit 2 et 5
ipc.clearbitsUB(0x5715, 32)
end

if (ground == 1) and (groundspeed > 40) then                     -- groundroll niveau MAX BASS

ipc.setbitsUB(0x5716, 16)                            -- 0x5716 bit 4

                               
else
ipc.clearbitsUB(0x5716, 16)                               -- 0x5716 bit 4

end

end

end



-------------------------------
--LUA calls for events FSUIPC--
-------------------------------

event.offset(0x02B4,"UD","groundroll")


-------------------------------------------------------------------------------------

5. RAIN

Le lua RAIN est conditionné par la presence pluie et intensité pluie.

Les trois sons :

RAIN 1
RAIN 2
RAIN 3

correspondent a 3 intensités (volume a régler dans prosimaudio)

Code:
[== Indéfini ==]
------------------------------------------------------------------------------------------------
-- Auteur : Philippe LECQ
-- pseudo : domelecq
-- forum  : www.flightpilote.fr
-- 2019
-- VERSION 1.1
-- PROSIM737
-- RAIN
------------------------------------------------------------------------------------------------

---------------------------
--         RAIN          --
---------------------------

rainflag=0

function rain(offset,value)

raincontrol=ipc.readUB("04CC")
rainforce=ipc.readUB("04CB")

if (raincontrol == 1) and (rainforce <= 2)  then
ipc.display("pluie", 5)
ipc.setbitsUB(0x5716, 64)                             -- 0x5716 bit 6 pluie faible
else
ipc.clearbitsUB(0x5716, 64)
end

if (raincontrol == 1) and (rainforce > 2) and (rainforce <= 4)  then
ipc.display("pluie MOY", 5)
ipc.setbitsUB(0x5716, 12                             -- 0x5716 bit 7 pluie moyenne
else
ipc.clearbitsUB(0x5716, 12
end

if (raincontrol == 1) and (rainforce == 5) then
ipc.display("pluie FORT", 5)
ipc.setbitsUB(0x5717, 1)                             -- 0x5717 bit 0 pluie forte
else
ipc.clearbitsUB(0x5717, 1)
end

end


-------------------------------
--LUA calls for events FSUIPC--
-------------------------------

event.offset(0x04CB,"UB","rain")


------------------------------------------------------------------------------------

6. PARKING

Le lua PARKING est conditionné par la position du parking break

si enclenché :

- son parking set
- son parking set bass (bodyshaker)

si relaché :

- son parking release
- son parking release bass (bodyshaker)

Code:
[== Indéfini ==]
------------------------------------------------------------------------------------------------
-- Auteur : Philippe LECQ
-- pseudo : domelecq
-- forum  : www.flightpilote.fr
-- 2019
-- VERSION 1.1
-- PROSIM737
-- PARKING
------------------------------------------------------------------------------------------------

---------------------------
--       PARKING         --
---------------------------

parkingflag=0

function parking(offset,value)

parkingcontrol=ipc.readSW("0BC8")


if (parkingcontrol > 0) then
ipc.display("SET", 5)
ipc.setbitsUB(0x5716, 4)
ipc.setbitsUB(0x5717, 32)                         -- 0x5716 bit 2 parking set
ipc.clearbitsUB(0x5716,                         -- 0x5717 bit 5 parking set bass
ipc.clearbitsUB(0x5717, 64)
parkingflag=1
end

if (parkingcontrol == 0)  and (parkingflag == 1) then
ipc.display("RELEASE", 5)                         
ipc.setbitsUB(0x5716,
ipc.setbitsUB(0x5717, 64)
ipc.clearbitsUB(0x5716, 4)
ipc.clearbitsUB(0x5717, 32)                         -- 0x5716 bit 3 parking release
parkingflag=0                                -- 0x5717 bit 6 parking release bass
end

end

-------------------------------
--LUA calls for events FSUIPC--
-------------------------------

event.offset(0x0BC8,"SW","parking")


-------------------------------------------------------------------------------------

7. GEAR

Le lua GEAR est conditionné par la position du levier.

Avec audacit'y j'ai parfaitement s'ynchronisé le son audible et les vibrations du siège

si UP :

- son gear up
- son gear up bass (bodyshaker)

si DOWN :

- son gear down
- son gear down bass (bodyshaker)

Code:
[== Indéfini ==]
------------------------------------------------------------------------------------------------
-- Auteur : Philippe LECQ
-- pseudo : domelecq
-- forum  : www.flightpilote.fr
-- 2019
-- VERSION 1.1
-- PROSIM737
-- LANDING GEAR
------------------------------------------------------------------------------------------------

---------------------------
--         GEAR          --
---------------------------

gearupflag=0

function gear(offset,value)

gearcontrol=ipc.readSW("0BE8")


if (gearcontrol == 0) then
ipc.display("UP", 5)
ipc.setbitsUB(0x5714, 32)                             -- 0x5714 bit 5 gearup
ipc.clearbitsUB(0x5714, 64)
gearupflag=1
end

if (gearcontrol > 0)  and (gearupflag == 1) then
ipc.display("DOWN", 5)                         
ipc.setbitsUB(0x5714, 64)
ipc.clearbitsUB(0x5714, 32)                             -- 0x5714 bit 6 geardown
gearupflag=0
end

end

-------------------------------
--LUA calls for events FSUIPC--
-------------------------------

event.offset(0x0BE8,"SW","gear")

-------------------------------------------------------------------------------------

8. VIBRATIONS

le lua Vibration est conditionné par la puissance moteur en %

Inferieur a 80 % : plus de vibration
entre 80 et 90 % : vibration low bass (bodyshaker)
entre 90 et 97 % : vibration med bass (bodyshaker)
supérieur a 97 % : vibration high bass (bodyshaker)

Code:
[== Indéfini ==]
------------------------------------------------------------------------------------------------
-- Auteur : Philippe LECQ
-- pseudo : domelecq
-- forum  : www.flightpilote.fr
-- 2019
-- VERSION 1.1
-- PROSIM737
-- VIBRATION MOTEUR
------------------------------------------------------------------------------------------------


------------------------------------------------------------------------------------------------

----------------------
-- ENGINE VIBRATION --
----------------------

vibrationflag=0

function engine(offset,value)

rotorspeed=ipc.readUW("0898") / 164

if (rotorspeed > 80) and ( rotorspeed <=90 ) then                 -- vibration moteur niveau 1

ipc.setbitsUB(0x5713, 12                             -- 0x5713 bit 7
                             
else
ipc.clearbitsUB(0x5713, 12                               -- 0x5713 bit 7
end

if (rotorspeed > 90) and (rotorspeed <= 97) then                 -- vibration moteur niveau 2

ipc.setbitsUB(0x5714, 1)                            -- 0x5714 bit 0
                               
else
ipc.clearbitsUB(0x5714, 1)                               -- 0x5714 bit 0
end

if (rotorspeed > 97) then                             -- vibration moteur niveau 3

ipc.setbitsUB(0x5714, 2)                            -- 0x5714 bit 1
                              
else
ipc.clearbitsUB(0x5714, 2)                               -- 0x5714 bit 1
end

end



-------------------------------
--LUA calls for events FSUIPC--
-------------------------------

event.offset(0x0898,"UD","engine")


------------------------------------------------------------------------------------

9. TURBULENCE

Le lua turbulence est conditionné :

- turbulences vent et turbulences nuage de P3D
- turbulences de Active sky

si vous utilisez active sky il faudra renomer TURBULENCE(ASCA) en TURBULENCE.

a laide audacit'y j'ai essayé de reproduire des turbulences réalistent pour le bodyshaker. Vous me direz ce que vous en pensez

le niveau de turbulence vari entre 0 et 1000

les sons :

- turbulence low bass (bodyshaker)
- turbulence med bass (bodyshaker)
- turbulence high bass (bodyshaker)

seront joué automatiquement suivant le niveau de turbulence.
le niveau ressenti sera lié au volume réglé pour chacun de ces sons dans prosimaudio

Code:
[== Indéfini ==]
------------------------------------------------------------------------------------------------
-- Auteur : Philippe LECQ
-- pseudo : domelecq
-- forum  : www.flightpilote.fr
-- 2019
-- VERSION 1.1
-- PROSIM737
-- TURBULENCE
------------------------------------------------------------------------------------------------

------------------
--  TURBULENCE  --
------------------

turbulenceflag=0

function turbulence(offset,value)

ground=ipc.readUB("0366") --only on ground

if (ground == 0) then

turbulencecloud=ipc.readUW("0E88")
turbulencewind=ipc.readUW("0E98")
turbulenceasca=ipc.readFLT("8638")               
turbulencelevel=(turbulencecloud + turbulencewind) * 2 --niveau de turbulence de 0 à  1000

alt = ipc.readSD(0x0574) * 3.28084
gnd = ipc.readSW(0x0B4C) * 3.28084
agl = alt - gnd

if (turbulencelevel > 20) and (turbulencelevel <= 375) then            -- turbulence niveau 1

ipc.setbitsUB(0x5713, 16)                                 -- 0x5713 bit 4 turbulence low
else
ipc.clearbitsUB(0x5713, 16)                              -- 0x5713 bit 4
end

if (turbulencelevel > 375) and (turbulencelevel <= 750) then            -- turbulence niveau 2

ipc.setbitsUB(0x5713, 32)                                  -- 0x5713 bit 5 turbulence med
else
ipc.clearbitsUB(0x5713, 32)                               -- 0x5713 bit 5
end

if (turbulencelevel > 750) then                            -- turbulence niveau 3

ipc.setbitsUB(0x5713, 64)                                 -- 0x5713 bit 6 turbulence heavy
else
ipc.clearbitsUB(0x5713, 64)                               -- 0x5713 bit 6
end

end

end


-------------------------------
--LUA calls for events FSUIPC--
-------------------------------

event.offset(0x0E88,"UW","turbulence") -- suivant turbulence nuage

event.offset(0x0E98,"UW","turbulence") -- suivant turbulence vent

event.offset(0x8638,"FLT","turbulence") -- suivant turbulence activesky


--global variables

--end script--

Code:
[== Indéfini ==]
------------------------------------------------------------------------------------------------
-- Auteur : Philippe LECQ
-- pseudo : domelecq
-- forum  : www.flightpilote.fr
-- 2019
-- VERSION 1.1
-- PROSIM737
-- TURBULENCE ASCA
------------------------------------------------------------------------------------------------

------------------
--  TURBULENCE  --
------------------

turbulenceflag=0

function turbulence(offset,value)

ground=ipc.readUB("0366") --only on ground

if (ground == 0) then

turbulencecloud=ipc.readUW("0E88")
turbulencewind=ipc.readUW("0E98")
turbulenceasca=ipc.readFLT("8638")               
turbulencelevel= turbulenceasca--niveau de turbulence de 0 à  1000

alt = ipc.readSD(0x0574) * 3.28084
gnd = ipc.readSW(0x0B4C) * 3.28084
agl = alt - gnd

if (turbulencelevel > 20) and (turbulencelevel <= 375) then            -- turbulence niveau 1

ipc.setbitsUB(0x5713, 16)                                 -- 0x5713 bit 4 turbulence low
else
ipc.clearbitsUB(0x5713, 16)                              -- 0x5713 bit 4
end

if (turbulencelevel > 375) and (turbulencelevel <= 750) then            -- turbulence niveau 2

ipc.setbitsUB(0x5713, 32)                                  -- 0x5713 bit 5 turbulence med
else
ipc.clearbitsUB(0x5713, 32)                               -- 0x5713 bit 5
end

if (turbulencelevel > 750) then                            -- turbulence niveau 3

ipc.setbitsUB(0x5713, 64)                                 -- 0x5713 bit 6 turbulence heavy
else
ipc.clearbitsUB(0x5713, 64)                               -- 0x5713 bit 6
end

end

end


-------------------------------
--LUA calls for events FSUIPC--
-------------------------------

event.offset(0x0E88,"UW","turbulence") -- suivant turbulence nuage

event.offset(0x0E98,"UW","turbulence") -- suivant turbulence vent

event.offset(0x8638,"FLT","turbulence") -- suivant turbulence activesky


--global variables

--end script--


-------------------------------------------------------------------------------------

10. CLIMB

le lua climb est lié a la vertical speed et altitude

si VS est supérieur a 1200 et altitude supérieur a 10000 alors

- annonce de lhôtesse que l'avion est en phase de montée

Code:
[== Indéfini ==]
------------------------------------------------------------------------------------------------
-- Auteur : Philippe LECQ
-- pseudo : domelecq
-- forum  : www.flightpilote.fr
-- 2019
-- VERSION 1.1
-- PROSIM737
-- CLIMB ANNONCE
------------------------------------------------------------------------------------------------

------------------------
-- Climb Announcements--
------------------------

climbflag=0

function climb(offset,value)

vspeed=ipc.readSW("0842") * -3.28084

groundalt=ipc.readUD("0020") * 3.28084 /256

alt=ipc.readUD("0574") * 3.28084

altogr=alt - groundalt


if (alt > 10000) and (vspeed > 1200) and (climbflag == 0) then


ipc.setbitsUB(0x5716, 3)                            -- chime

ipc.sleep(10000)

ipc.clearbitsUB(0x5716, 3)

ipc.sleep(10000)

ipc.setbitsUB(0x5714, 4)                            -- 0x5714 bit 2 annonce montée

ipc.display("MONTEE EN COURS", 7)

climbflag=1

end

end

-------------------------------
--LUA calls for events FSUIPC--
-------------------------------

event.offset(0x0842,"UW","climb")

-------------------------------------------------------------------------------------

11. CRUISE

le lua cruise est conditionné par la position du seatbelt sign sur off et altitude supérieur a 10000

- annonce de lhôtesse

Code:
[== Indéfini ==]
------------------------------------------------------------------------------------------------
-- Auteur : Philippe LECQ
-- pseudo : domelecq
-- forum  : www.flightpilote.fr
-- 2019
-- VERSION 1.1
-- PROSIM737
-- CRUISE ANNONCE
------------------------------------------------------------------------------------------------

--------------------------
-- cruise Announcements --
--------------------------


cruiseflag=0

function cruise(offset,value)

Seatbeltsign=ipc.readUB("341D")

groundalt=ipc.readUD("0020") * 3.28084 /256

alt=ipc.readUD("0574") * 3.28084


if (Seatbeltsign == 0) and (cruiseflag == 0) and (alt > 10000) then

ipc.setbitsUB(0x5716, 3)                            -- chime

ipc.sleep(10000)

ipc.clearbitsUB(0x5716, 3)

ipc.sleep(10000)

ipc.setbitsUB(0x5714, 12                            -- 0x5714 bit 7 annonce cruise

ipc.display("CRUISE ANNOUNCEMENTS", 7)

cruiseflag=1

end

end


-------------------------------
--LUA calls for events FSUIPC--
-------------------------------

event.offset(0x341D,"UB","cruise")

-------------------------------------------------------------------------------------

12. DESCENT

le lua descent est lié a la vertical speed et altitude

si VS est supérieur a -1200 et altitude inférieur a 18000 alors :

- annonce descent de lhôtesse

Code:
[== Indéfini ==]
------------------------------------------------------------------------------------------------
-- Auteur : Philippe LECQ
-- pseudo : domelecq
-- forum  : www.flightpilote.fr
-- 2019
-- VERSION 1.1
-- PROSIM737
-- DESCENT ANNONCE
------------------------------------------------------------------------------------------------

---------------------------
-- Descent announcements --
---------------------------


descentflag=0

function descent(offset,value)

vspeed=ipc.readSW("0842") * 3.28084

groundalt=ipc.readUD("0020") * 3.28084 /256

alt=ipc.readUD("0574") * 3.28084

altogr=alt - groundalt


if (alt < 18000) and (alt > 10000) and (vspeed > 1200) and (descentflag == 0) then

ipc.setbitsUB(0x5715, 64)                            -- 0x5715 bit 6 annonce descente

ipc.display("DESCENTE", 7)
descentflag=1

end

end


-------------------------------
--LUA calls for events FSUIPC--
-------------------------------

event.offset(0x0842,"SW","descent")

-------------------------------------------------------------------------------------

13. APPROACH

le lua descent est lié a la vertical speed et altitude

si VS est supérieur a -500 et altitude inférieur a 6000 alors :

- annonce approach de lhôtesse

Code:
[== Indéfini ==]
------------------------------------------------------------------------------------------------
-- Auteur : Philippe LECQ
-- pseudo : domelecq
-- forum  : www.flightpilote.fr
-- 2019
-- VERSION 1.1
-- PROSIM737
-- APPROACH MESSAGE
------------------------------------------------------------------------------------------------

---------------------------
-- Approach announcements --
---------------------------


approachflag=0

function approach(offset,value)

vspeed=ipc.readSW("0842") * 3.28084

groundalt=ipc.readUD("0020") * 3.28084 /256

alt=ipc.readUD("0574") * 3.28084

altogr=alt - groundalt


if (alt < 5000) and (vspeed > 500) and (approachflag == 0) then

ipc.setbitsUB(0x5715, 12                            -- 0x5714 bit 7 annonce approach

ipc.display("APPROACH", 7)
approachflag=1

end

end

-------------------------------
--LUA calls for events FSUIPC--
-------------------------------

event.offset(0x0842,"SW","approach")

-------------------------------------------------------------------------------------

14. FLAPS

Le lua FLAPS est lié a la position des FLAPS (15,25,30,40) et avion en l'air.

les sons correspondants a chaque position de flaps a partir de 15 a 40 seront joué automatiquement

- FlapsWind_15
- FlapsWind_25
- FlapsWind_30
- FlapsWind_40

Je n'ai pas mis de son pour le bodyshaker vol'ontairement.

Code:
[== Indéfini ==]
------------------------------------------------------------------------------------------------
-- Auteur : Philippe LECQ
-- pseudo : domelecq
-- forum  : www.flightpilote.fr
-- 2019
-- VERSION 1.1
-- PROSIM737
-- FLAPS
------------------------------------------------------------------------------------------------

------------------
--     FLAPS    --
------------------

flapflag=0

function flap(offset,value)

ground=ipc.readUB("0366") --only on ground

flapos=ipc.readUW("0BE0")

if (ground == 0) then

flapos=ipc.readUW("0BE0")

alt = ipc.readSD(0x0574) * 3.28084
gnd = ipc.readSW(0x0B4C) * 3.28084
agl = alt - gnd

if (flapos >= 6144) and (flapos < 10239) then            -- FLAP 15

ipc.setbitsUB(0x5717, 1)                                 -- 0x5717 bit 0
else
ipc.clearbitsUB(0x5717, 1)                              -- 0x5717 bit 0
end

if (flapos >= 10239) and (flapos < 12287) then            -- FLAP 25

ipc.setbitsUB(0x5717, 2)                                  -- 0x5717 bit 1
else
ipc.clearbitsUB(0x5717, 2)                               -- 0x5717 bit 1
end

if (flapos >= 12287) and (flapos < 16383) then            -- FLAP 30

ipc.setbitsUB(0x5717, 4)                                  -- 0x5717 bit 2
else
ipc.clearbitsUB(0x5717, 4)                               -- 0x5717 bit 2
end

end

if (flapos == 16383) then                    -- FLAP 40

ipc.setbitsUB(0x5717,                                   -- 0x5717 bit 3
else
ipc.clearbitsUB(0x5717,                                -- 0x5717 bit 3
end

end


-------------------------------
--LUA calls for events FSUIPC--
-------------------------------

event.offset(0x0BE0,"UW","flap") -- suivant position flap


--global variables

--end script--


-------------------------------------------------------------------------------------


maintenant voyons le paramétrage des sons.

-----------------------------------------------------------------------------------
II PARAMÉTRAGE SONS
-----------------------------------------------------------------------------------

-----------------------------------------------------------------------------------

1. ajout des sons dans prosim

Menu Config / Audio Addons



on rajoute l'ensemble des sons contenu dans le répertoire audiolua

ne pas oublié de paramétrer si le son doit être joué en continu ou une seule fois voir listing ci dessous.

1552482996_liste_sons_config.jpg


-----------------------------------------------------------------------------------

2. Configuration audio


Menu Config / Configuration / onglet AUDIO (Switch)

1552483014_audio_prosim.jpg


Nous allons attribuer a chaque son (active) un offset FSUIPC 8bit U.

par exemple musique embarquement sera lié a l'offset 0x5713.1

trouvez la liste des offsets ci dessous :

1552483051_liste_offset_config.jpg


------------------------------------------------------------------------------------

3. Prosimaudio

Il vous faudra créer autant de prosimaudio que de zones sonore (sorties sons de votre pc et enceintes)

un prosim audio sera dédié pour le bodyshaker

bien régler les différents volumes a votre convenance.

1552483081_prosimaudio.jpg


l'avantage de prosim est de pouvoir déporter les prosim audio, par exemple dans mon cas le PC 2 gère le son ATC (proATC) et certain son prosim vers mes hauts parleurs plafond et casque pilote et copilote

-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------

4. Driver

Ne pas oublier d'activer FSUIPC dans les drivers Prosim

1552483118_fsuipc_driver.jpg



-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------

Conclusion.

Surtout n'hésitez pas a me donner votre avis, surtout vous pilotes qui avaient le ressenti du cockpit et du niveau de vibrations suivant les différentes phases. Le but est d'être au plus proche de la réalité (en tout cas essayer).

Chaque Lua est totalement indépendant, rien ne vous oblige a les utiliser tous.

de même si vous ne souhaitez pas utiliser un des sons, il suffit de pas le coller, même si le lua ne le trouve pas cela ne provoque pas d'erreur. ou de le décocher dans prosim audio

bien entendu libre a vous de mettre vos sons préférés, il suffira de les mettre en lieu et place des miens.

Si vous avez d'autres idées pour encore améliorer l'immersion.

Pour ceux qui le souhaite je pourrais vous envoyer par mail les sons (envoyez moi un mp)


Philippe :)
 
Silverstar, comment je peux partager Ces fichiers ?

Encore un superbe partage de ton travail :)
Le script Lua tu peux le mettre entre les balises code (le petit logo a coté de citation).
 
Hello,

J'ai une installation très similaire à  la tienne en terme dambiance sonore.
Excepté pour les annonces cabines où je gère ça avec un script ce qui me permet de la flexibilité et de pouvoir déclencher des annonces différentes en fonction de la compagnie et de l'aéroport (départ et/ou destination) ou encore du pays (départ et/ou destination).
Merci pour le partage en tout cas.
Pourrais-tu communiquer les ref du bodyshaker et de lampli ? J'utilise actuellement un butkicker avec son ampli mais j'en suis moyennement satisfait.
Merci
Stéphane
 
Merci Stéphane

Excepté pour les annonces cabines où je gère ça avec un script ce qui me permet de la flexibilité et de pouvoir déclencher des annonces différentes en fonction de la compagnie et de l'aéroport (départ et/ou destination) ou encore du pays (départ et/ou destination).

Oui après pas vraiment de limite, juste du code a rajouter, mais cela reste beaucoup de boulot :), mais avons nous vraiment des limites.

J'en suis assez content.

Pour le Buttkicker il faut adapter les fichiers sound bass a laide daudacity, en effet j'ai mis en place mes lua chez Pierre qui lui utilise un buttkicker, on a du modifier certain fichiers WAV.
Personnellement je ne suis pas fan du buttkicker. trop brutal pour moi.
 
Domelecq a dit:
Merci Stéphane
Oui après pas vraiment de limite, juste du code a rajouter, mais cela reste beaucoup de boulot :), mais avons nous vraiment des

Ba non :cool:


Super merci pour ta réponse rapide, je vais regarder ça :)
 
Bonsoir Philippe
Encore une belle réalisation de ta part
Très bien documentée et très fonctionnelle et merci de nous en faire profiter gentiment :)
J'ai hâte de voir ton prochain tuto , un grand pas pour l'immersion dans nos cockpits
Bravo et merci à  toi :) :) :)
 
Philippe,

Je viens de lire ton tuto en prenant mon café ce matin et je me pose une petite question technique purement informatique...

Surtout n'hésitez pas a me donner votre avis, surtout vous pilotes qui avaient le ressenti du cockpit et du niveau de vibrations suivant les différentes phases.

Pourquoi, à  partir du moment où tu utilises des scripts LUA au travers de FSUIPC, tu as le besoin de repasser par Prosim pour simplement "jouer" tes sons en fonction d'un trigger?... La bibliothèque "SOUND Library" n'est telle pas suffisante?...

Je précise que je ne connais pas Prosim... Donc, il y a peut être des points et subtilités que je ne connais pas...
 
Ptipilot a dit:
Philippe,

Je viens de lire ton tuto en prenant mon café ce matin et je me pose une petite question technique purement informatique...

Surtout n'hésitez pas a me donner votre avis, surtout vous pilotes qui avaient le ressenti du cockpit et du niveau de vibrations suivant les différentes phases.

Pourquoi, à  partir du moment où tu utilises des scripts LUA au travers de FSUIPC, tu as le besoin de repasser par Prosim pour simplement "jouer" tes sons en fonction d'un trigger?... La bibliothèque "SOUND Library" n'est telle pas suffisante?...

Je précise que je ne connais pas Prosim... Donc, il y a peut être des points et subtilités que je ne connais pas...

Bonjour,

En effet j'aurais pu lire les sons directement dans dans mon script lua, sans faire appel a prosim sans passer par des offset trigger.

Le problème est que dans ce cas, les sons sont joué sur la carte son par défaut, alors que moi je les distribue avec prosim audio sur 6 sorties sons différentes.

Je n'ai pas trouvé dans lua, la possibilité de choisir le sound device, sinon je laurais fait ainsi. ce qui maurait permis de directement faire varier le volume sonore en script.
 
Domelecq a dit:
Le problème est que dans ce cas, les sons sont joué sur la carte son par défaut, alors que moi je les distribue avec prosim audio sur 6 sorties sons différentes.

Je n'ai pas trouvé dans lua, la possibilité de choisir le sound device, sinon je laurais fait ainsi. ce qui maurait permis de directement faire varier le volume sonore en script.
ref = sound.play("name-of-wave", devnum, vol, posn)

Normalement, "devnum" sert à  cela... [If the device number is omitted, the default is used (device 0).]

J'avoue que je n'ai pas encore testé cette partie de la librairie.

C'est dans mes cartons des trucs à  faire (et, à  tester...) lorsque je serais dans mon nouvel environnement.
Pour l'instant, j'attends que MSI produise la carte graphique que je souhaite!... :p :p :p
 
Ptipilot a dit:
Domelecq a dit:
Le problème est que dans ce cas, les sons sont joué sur la carte son par défaut, alors que moi je les distribue avec prosim audio sur 6 sorties sons différentes.

Je n'ai pas trouvé dans lua, la possibilité de choisir le sound device, sinon je laurais fait ainsi. ce qui maurait permis de directement faire varier le volume sonore en script.
ref = sound.play("name-of-wave", devnum, vol, posn)

Normalement, "devnum" sert à  cela... [If the device number is omitted, the default is used (device 0).]

J'avoue que je n'ai pas encore testé cette partie de la librairie.

C'est dans mes cartons des trucs à  faire (et, à  tester...) lorsque je serais dans mon nouvel environnement.
Pour l'instant, j'attends que MSI produise la carte graphique que je souhaite!... :p :p :p

Ha super, merci pour l'info, il y a 3 jours je cherchais aussi comment choisir la carte son dans un script lua et n'ayant pas trouvé, comme Domelecq jutilisais les offset avec Prosim. Je vais également essayer ça ce week-end :)
Pour info les devnum sont définis automatiquement dans fsuipc.ini.
 
Retour
Haut