Salut !
J’ai eu le temps de regarder un petit peu les simulateurs ! Honnêtement je trouve le coup des tables avec 10 ou 15 valeurs vraiment excessif. Et puis ce n’est pas si facile à régler avec tous ces points sur le graphique :grat:
Juste deux points aux extrémités pour le bip de monté et deux points pour le bit de descente me semblent grandement suffisant. Après il suffit de faire une interpolation linéaire ou logarithmique entre les deux.
Je vous ai calculé les valeurs correspondant au réglage par défaut du XCTracer :
/* climbing beep sound freq computation : BEEP_FREQ_COEFF * velocity + BEEP_BASE_FREQ */
#define CLIMBING_BEEP_BASE_FREQ 386.0
#define CLIMBING_BEEP_FREQ_COEFF 141.0
/* length of beep in vertical meters */
#define CLIMBING_BEEP_HIGH_LENGTH 0.5
#define CLIMBING_BEEP_LOW_LENGTH 0.5
/* climbing beep velocity filter */
/* filteredVelocity = beepVelocity * BEEP_VELOCITY_FILTER_COEFF + BEEP_VELOCITY_FILTER_BASE */
#define CLIMBING_BEEP_VELOCITY_FILTER_BASE 1.62
#define CLIMBING_BEEP_VELOCITY_FILTER_COEFF 0.51
Principe actuel du bippeur :
Donc effectivement pour la fréquence c’est simple. Si “v” est la vitesse verticale on calcule la fréquence ainsi :
freq = BEEP_FREQ_COEFF * v + BEEP_BASE_FREQ
Pour l’alternance des bips il faut s’imaginer un genre d’échelle verticale. Par exemple avec :
#define CLIMBING_BEEP_HIGH_LENGTH 0.5
#define CLIMBING_BEEP_LOW_LENGTH 0.5
il faut imaginer une echelle verticale avec des barreaux de 0.5 mètres. Chaque fois que le vario passe devant un barreau de l’échelle il alterne entre “son” et “silence”. Ca me permettait de “visualiser” un petit peu l’influence des paramètres. Au départ je pensais que ça serait suffisant. Mais du coup si on en reste là on ne peut pas régler à quelle vitesse l’alternance des bips accelère.
C’est pour ça qu’il y a un aussi un “filtre” sur la vitesse qui marche comme cela :
vitesse filtré = vitesse * BEEP_VELOCITY_FILTER_COEFF + BEEP_VELOCITY_FILTER_BASE
Donc par exemple avec les paramètres que j’ai donné. A une vitesse de v=2.0m/s.
-> La vitesse est filtré est de vf = 2.0 * 0.51 + 1.62 = 2.64 m/s
-> comme les “barreaux de l’échelle” sont de 0.5m et que l’on monte à 2.64m/s la durée du bip est de :
t = d/v = 0.5/2.64 = 0.19 s
Et donc la durée du cycle est de 0.38 s.
Voilà ! J’espère que je ne vous ait pas trop embrouillé.
Principe futur du bippeur ?
Mais il va falloir que je reprogramme la bibliothèque “beeper” de toute façon alors autant repartir sur quelque chose de plus simple. On pourrait par exemple :
Avoir deux ensembles de courbes (linéaires dans un premier temps)
- un pour le bip de monté
- un pour le bip de dégeulante
Pour le bip de monté l’utilisateur choisit :
-> la fréquence du bip à 0m/s et à 10m/s
-> la durée du cycle à 0m/s et à 10m/s
-> le pourcentage de bip sur le cycle à 0m/s et à 10m/s
Pour le bip de degeulante l’utilisateur choisit :
-> la fréquence du bip à 0m/s et à -10m/s
Si certain sont motivé pour faire le simulateur
Mais peut être que ça serait possible de modifier celui de XCSoar pour qu’il n’y ai que 4 points.
A+
edit : VanHurlu pour régler le seuil de dégueulante c’est dans VarioSettings.h avec le paramètre “#define VARIOMETER_SINKING_THRESHOLD -2.0”