L’introduction et la théorie
La dernière fois que j’ai posté ici, il y a maintenant pas mal de temps, c’était à propos de ManiaCrash, et j’étais englué dans des histoires de modélisations de la physique d’un moteur à explosion, en particulier au niveau de la gestion du couple, et autour d’une question clef : pourquoi les moteurs calent si peu facilement ? (rapport à ma propre simulation ou on cale tout le temps, au point de ne même pas pouvoir démarrer).
Bref, un article sous forme d’appel à l’aide, sur un sujet assez obscure et pas très sexy qui a en fait, étonnement, suscité un certain intérêt avec plus d’une trentaines de commentaires, particulièrement intéressants pour certains. L’article a également eu pour effet de me permettre de rentrer en contact avec des gens « du métier », dont Claude, qui en une phrase m’a fait réaliser l’énorme erreur de modélisation commise dès le début de ma réflexion …
Je reviendrais en détail sur tout ça après avoir retravaillé complètement cette partie du prototype, devenue petit à petit une impasse extrêmement frustrante, pour voir si ma nouvelle conception du problème me permet d’arriver à un comportement un peu plus réaliste que mon actuel moteur-qui-cale-tout-le-temps.
Mais là n’est pas le sujet de ce post, dont le but est bien de partager avec vous les évolutions de ManiaCrash en ce qui concerne les sons des moteurs. En effet, j’avais déjà commencé à bosser sur ce terrain, considérant que l’audio tient une place très importante dans le réalisme offert par un jeu de caisses, ou tout du moins, dans les sensations de vitesse rendues.
Pour résumer très très rapidement ce que je racontais dans le précédent article à ce sujet (voir le second chapitre), là ou ManiaDrive n’utilisait qu’un seul son pour le moteur de la voiture, qui subissait donc, par exemple, de véritables tortures au niveau de sa vitesse de lecture pour rendre à peu près le son d’un moteur, j’essaye maintenant d’utiliser beaucoup plus de sons (samplés) et ainsi supporter toute la « plage » sonore d’un véritable moteur. Typiquement, 6 samples, à des vitesses de rotations clefs (ralenti, 2000 tours, 3000, …)
Le problème devient alors de savoir comment mixer ces différents sons entre eux pour donner un résultat final qui semble n’être qu’un seul son, sans transitions audibles. La dernière fois, j’avais un résultat potable au niveau du gain (le volume), mais je n’arrivais pas à trouver la bonne « formule » pour le pitch (la vitesse de lecture), mon meilleur essai étant ça : http://ftp.cqfd-corp.org/mc_engine1.mp3 , ce qui est particulièrement mauvais, vous en conviendrez …
La courbe de pitch était celle-ci : (chaque ligne représente un sample)
Très vite, après avoir repensé 2 secondes mon problème, je suis arrivé à une courbe beaucoup plus logique, qui « mappe » tout simplement la fréquence de lecture du son avec la vitesse de rotation du moteur dans le jeu. C’est tellement évident une fois qu’on le voit, que je suis passablement navré d’avoir perdu du temps avec la version précédente :/
Ça donne ce genre de courbes : (qui ressemblent un peu à des courbes de vitesse/rapports de boite, étrangement [ou pas, du coup])
Il y a un sample à 2500 RPM, le moteur enregistré ici ayant une sonorité particulière à cette vitesse.
Le gain, lui, ne change pas du tout dans l’idée générale :
… sauf qu’un nouveau problème pointe le bout de son nez : la dynamique audio d’un moteur de voiture est énorme … pour le dire avec mes mots de noob de l’audio, la différence de volume entre un moteur au ralenti et ce même moteur à sa vitesse de rotation max est gigantesque, et tout simplement impossible à rendre sur le matos du joueur lambda (ralenti inaudible, saturations, parasites dégueulasses à très bas volume sur la majorité des cartes son grand public, …) . Donc impossible de laisser les samples bruts avec les gains donnés sur le graph précédent. Je sais, j’ai essayé, et mes oreilles sifflent encore.
Il faut donc gruger sur les volumes pour « compresser » la dynamique réelle d’un moteur. Plutôt que de faire ça directement dans les samples, technique un peu crade qui risque d’abimer les samples à force de les éditer pour ajuster petit à petit l’amplification, j’ai préféré intégrer tout bêtement un facteur « gain » dans la courbe précédente. Ça permet d’ajuster cette compression facilement pour chaque voiture. Visuellement, c’est très parlant, ça donne ça : (à comparer au graph précédent, donc)
Comment vérifier que cette jolie théorie rend effectivement quelque chose ? Appliquée à mes quelques samples piqués à droite et à gauche, le rendu semble cohérent, mais est-ce « réaliste » ? (relativement limité hein, le réalisme … on parle d’un simulateur de cascades après tout)
Le pourquoi
Il s’avère que j’ai franchi récemment une dizaine, étape consacrée par ma concubine avec un cadeau inattendu : une 104. Oui, une magnifique Peugeot 104 GL (Grand Luxe, donc, si si) de 1980, avec un moteur rutilant de 1L (moins, en fait) qui tourne au plomb et à l’huile … Un modèle de collection, petite voiture abordable, ancêtre des citadines, emblème de toute une génération d’automobilistes avides d’évasion (mais pas trop loin). « Tout Peugeot en 3,58 m ».
Je dois probablement donner l’impression d’en faire trop, mais cette voiture est vraiment mythique pour moi et mon crew (…), elle est au centre de nombre de délires de cette joyeuse bande, et depuis une bonne 15aine d’années. Et là, on en a une sous la main, en vrai. Et je peux même la conduire. Légalement.
Je ne vais pas me répandre ici sur les longues heures de rire à ausculter, conduire, tester cette vénérable pièce de collection de 30 ans d’age, et aller directement à l’explication de tout ce chapitre : Nous avons décidé de tourner un reportage sur cette voiture. Pas un truc plein de nostalgie coulante et de complaintes sur la lente déchéance de l’automobile plaisir en France, oh que non, mais un truc à la Top Gear, avec des faits, de la fumée, des marteaux et de la sueur.
Pour vous prouver notre bonne volonté, voilà une photo relativement récente qui montre la bête après quelques heures de travail avec quelques membres de la fine équipe :
Beaucoup de détails ne sont pas visibles. Les bandes sont intégralement basées sur les bandes racing « Le Mans » des Ford GT. SERIOUS BUSINESS §§!
Plus prosaïquement, nous avons réalisé quelques tests pour voir si nous avions les moyens techniques et les compétences pour réaliser un tel reportage. La réponse est bien évidement « non », et de très loin. Qu’importe, on fera un machin « qualité youtube », flou, avec zéro cadrage, une clef de 12, et qui fera marrer que nous. L’ambition, c’est surfait.
N’empêche, même si quelques appareils photo récents suffisent a peu près pour les prises de vue, pour le son, c’est autrement plus compliqué. Les micros ne sont pas très sensibles, il est impossible de filmer de loin quelqu’un qui parle, ou même de l’enregistrer dans la voiture pendant qu’elle roule, les sons du moteur sont mal rendus, et je ne parle même pas du souffle du vent.
Notre première idée a été d’aller voir du coté des Freeport de Sennheiser : un micro cravate, un transmetteur UHF avec une portée d’au moins 100m, le tout pour un prix encore abordable, de l’ordre 170 euros. Nous nous sommes rendu chez Michenaud, une grosse enseigne de la vente d’instruments de musique, qui est à Nantes, et qui dispose aussi d’un magasin Live / Home Studio. Grosse aubaine, donc.
Chance, on trouve la référence là bas, le produit est en stock, et nous propose même de l’essayer sur place. Résultat bluffant, l’achat est décidé dans la foulée. En tant que gros débutants, on en profite au passage pour demander l’avis des deux gars du magasin sur le meilleur moyen d’enregistrer la sortie du Freeport. De notre coté, nous avions pensé récupérer un lecteur MiniDisc sur ebay pour trois fois rien, méthode immédiatement déconseillée d’une magnifique grimace synchronisée de la part de nous deux puristes. Il semble que le meilleur moyen pour nous soit encore d’utiliser un PC avec une bonne carte son, ce qui n’est pas sans poser quelques problèmes logistiques (portables obligatoires, donc carte son USB, nécessité d’une table de mixage ou d’entrées multiples si on souhaite utiliser plusieurs micros, …).
Et là, la découverte ultime : le Zoom H2.
Il s’agit à priori d’un bête micro + enregistreur portable, rien de très impressionnant. Sauf que la bestiole dispose de 4 micros directionnels statiques ! Là encore, on nous laisse faire un test, on lance l’enregistrement, et on discute des détails du truc. Au moment de relire l’enregistrement, le casque sur les oreilles, je galère pour trouver comment commencer la lecture, l’ergonomie du H2 étant assez … particulière au début. Pas de son, pas de souffle, rien, soit je sais pas comment lire, soit le volume est à zéro. Mon pote, à ma droite, n’arrête pas de me parler, j’arrive pas à me concentrer, je lève la tête vers lui, un peu vénère, pour lui demander de fermer sa mouille … ses lèvres ne bougent pas pendant qu’il parle. Je suis en train d’écouter l’enregistrement depuis 30 secondes FFS !
On a eu l’occasion de faire la démo à plusieurs personnes depuis, l’effet est garanti … C’est vraiment un gros cran au dessus de tout ce que j’ai eu l’occasion de bricoler au niveau des enregistrements audio jusque là. Bref, achat direct et immédiat pour nous : c’est tout léger (110 g) , autonome, toujours autour de 170 euros, ça utilise des cartes SD, ça sort du WAV, du MP3, 2 ou 4 canaux séparés, livré avec une mousse pour réduire le bruit du vent … Magique.
Et le plus fort : même si on a besoin (pour le fameux reportage) d’enregistrer plusieurs personnes en même temps, à des endroits différents, et en mouvement (2 conducteurs dans 2 voitures différentes, par exemple), chacun son Zoom H2, et zou le mixage se fait en numérique dans le logiciel de montage. Plus besoin de transmetteur HF ni de table de mixage … Gros merci aux deux gars qui ont retourné la moitié du magasin pour nous, alors qu’on sort finalement avec un seul truc, sincèrement. Et pour leurs conseils.
Si vous cherchez le rapport avec tout le reste, le voilà : avec le H2, j’ai enfin la possibilité de sampler correctement une vraie voiture. Sans saturation, sans parasites. En stéréo. J’ai déjà essayé de faire ça un paquet de fois, et ça se soldait invariablement par un échec. Même une prise de son qui rendait nickel a priori s’avérait en fait complètement inexploitable dès qu’on changeait le pitch, par exemple (« oh, bhen j’entends plus que le bruit blanc tient ! »)
Avec le H2 : rien. Mais rien du tout. A un tel point que j’ai pu, sans aucune difficulté compter les RPM de mon moteur à la main dans Audacity ! (et pour ref : rpm=(1/(n_samples/44100))*60)
Et ça, c’est à près de 6000 tours/minutes avec un moteur qui hurle … Limite si on ne visualise pas la course des pistons.
J’ai donc réussi à enregistrer, en un seul essai et une seule prise toute la plage de vitesse de rotation d’un moteur. Je n’ai pas utilisé la 104, probablement incapable de subir un tel traitement pour l’instant, (haut régime à vide et à l’arrêt) et de toutes façons indisponible pour l’instant pour une sombre histoire de batterie et de câbles, et ai donc dû utiliser une voiture un peu plus apte à ce genre d’exercices.
Bon, et le résultat, hein ?
J’ai enregistré le résultat des premiers tests. Pour permettre la comparaison, j’ai placé d’un coté la vraie voiture, et le l’autre la synthèse.
A écouter très fort (même si le son a déjà été normalisé un peu, il faut franchement pousser le volume), et surtout au casque pour bien distinguer la piste gauche et la piste droite. Il s’agit des samples utilisés pour la vue intérieure de la voiture : (l’enregistrement de la vraie voiture a été fait lui aussi depuis l’habitacle)
http://ftp.cqfd-corp.org/mcrash-compare-s16-fake-real.mp3
Et bonus, je viens juste de terminer de coder ça : un autre essai, ou je switch entre la vue intérieure et extérieure de la voiture : (uniquement le « faux » moteur ici, donc)
http://ftp.cqfd-corp.org/mcrash-inout-s16.mp3
Pour ceux que ça intéresse et qui le connaitrait déjà, le moteur est un EW10J4, sur une 206 S16. Pas si mal quand on compare tout ça au premier essai donné plus haut, non ?
Laisser un commentaire
Vous devez vous connecter pour publier un commentaire.