Le son de LUMA Ă©volue ! đ¶
Fini le piezo solitaire : dĂ©sormais, deux haut-parleurs travaillent ensemble pour des musiques plus riches et harmonieuses. Câest un petit pas pour le hardware, un grand bond pour les oreilles đđ
Aujourdâhui, jâavais envie de revenir sur un dĂ©tail qui nâen est pas un : le son de la console LUMA. Pendant longtemps, LUMA nâavait quâune seule âcorde vocaleâ : un petit piezo branchĂ© sur une seule sortie. Ăa faisait le job, ça bipait, ça vivait un peu, mais soyons honnĂȘtes : le rendu Ă©tait plat, trĂšs mono, trĂšs sec. Ăa donnait un cĂŽtĂ© âprototypeâ qui collait bien au dĂ©but du projet, mais plus la console avance, plus jâai envie quâelle raconte des choses aussi avec le son.
Câest lĂ quâarrive la grosse nouveautĂ© : la console utilise maintenant deux sorties audio, sur le pin 12 et le pin 21 de lâESP32, chacune reliĂ©e Ă un piezo. Dit comme ça, ça a lâair anodin â deux petits haut-parleurs au lieu dâun â mais en pratique, ça change complĂštement la sensation de jeu. Dâabord, trĂšs simplement, le son est plus plein, plus prĂ©sent dans la piĂšce. Les petites musiques retro, les bips et les effets prennent une autre dimension. LĂ oĂč avant tout sortait dâun seul coin de la console, maintenant on a lâimpression que la machine âparleâ vraiment, quâelle a une petite prĂ©sence physique, presque comme un vieux jouet Ă©lectronique mais en version 2.0.
Techniquement, sur lâESP32, ça signifie que je peux piloter deux canaux sonores sĂ©parĂ©s. Dans mon code, le son est gĂ©nĂ©rĂ© via du PWM (avec les fonctions ledc dâESP32), et maintenant je peux dĂ©cider indĂ©pendamment de ce qui sort sur le canal gauche (pin 12) et sur le canal droit (pin 21). Pour lâinstant, je mâen sers surtout pour doubler le son : mĂȘme frĂ©quence sur les deux piezos, mĂȘme volume â un son plus puissant, plus clair, trĂšs utile pour les bips de tir ou les sons dâalerte dans le jeu. Mais la vraie magie commence quand je commence Ă les diffĂ©rencier un peu.
Par exemple, sur un nouveau jeu comme CRATĂRE-7, mon mini-DOOM en raycasting que tu vois dans le code ci-dessus, le fait dâavoir deux sorties audio ouvre beaucoup de portes. Je peux associer un son spĂ©cifique Ă chaque type dâĂ©vĂ©nement : un tir de blaster bien sec, un âbipâ grave quand le joueur prend des dĂ©gĂąts, un son plus joyeux pour la prise de clĂ©, une petite montĂ©e de notes quand le sas sâouvre enfin, un son plus sombre pour lâactivation du boss⊠Tout ça existait dĂ©jĂ dans ma tĂȘte, mais avec un seul piezo, si je voulais tout faire, ça devenait vite confus. Avec deux sorties, je peux mieux sĂ©parer les couches : par exemple, garder un canal pour les effets rapides (tir, dĂ©gĂąts, ramassage dâobjet) et utiliser lâautre pour des petits motifs musicaux ou des bips dâambiance.
ConcrĂštement, dans le code, je commence Ă organiser le son autour dâune fonction centrale du genre playSFX(id) que jâappelle dans les bons moments : quand fireShot() est dĂ©clenchĂ©e, quand la vie du joueur diminue dans updateEnemies(), quand hasKeyA ou hasKeyB passe Ă true, ou quand on entre en ST_OVER (game over). Le moteur de jeu ne sâoccupe pas de âcommentâ le son est gĂ©nĂ©rĂ©, il se contente de dire : « lĂ , je veux un son de tir », « lĂ , un son de clĂ© », « lĂ , un son de game over ». DerriĂšre, le âmoteur sonâ choisit la frĂ©quence, la durĂ©e, et sur quel canal ça sort (pin 12, pin 21, ou les deux). Câest lĂ quâon sâamuse : un tir peut ĂȘtre jouĂ© fort et court sur les deux piezos ; un dĂ©gĂąt peut ĂȘtre un bip plus grave ; une clĂ© peut ĂȘtre un petit enchaĂźnement de deux notes ; lâouverture du sas, une mini montĂ©e en trois paliers. Câest tout bĂȘte, mais dĂšs que tu rajoutes ces repĂšres sonores, le cerveau comprend mieux ce qui se passe dans le jeu, mĂȘme sans lire le HUD.
Pour lâinstant, je reste sur des sons assez simples, mais lâarchitecture est prĂȘte pour aller plus loin. Le fait dâavoir deux sorties me permet aussi dâenvisager une pseudo stĂ©rĂ©o : par exemple, dans CRATĂRE-7, si un ennemi se trouve plutĂŽt sur la gauche du champ de vision, je peux donner lĂ©gĂšrement plus de volume au piezo connectĂ© sur le pin 12 ; sâil est Ă droite, un peu plus au pin 21. Ce nâest pas de la vraie spatialisation, mais ça donne une impression de direction, et dans un FPS, mĂȘme minimaliste, ça apporte beaucoup Ă lâambiance. Je peux aussi imaginer, plus tard, des petits motifs rythmiques alternĂ©s : note Ă gauche, note Ă droite, pour donner un cĂŽtĂ© un peu âdanse de pixelsâ aux musiques.
Lâautre gros avantage pour moi en tant que dĂ©veloppeur, câest que ce systĂšme audio Ă©volue avec la console. Plus le projet grossit (menu dĂ©roulant, raycasting, boss, clĂ©s, sas, etc.), plus le son devient un outil pour expliquer au joueur ce quâil vit sans surcharger lâĂ©cran. Comme la console reste trĂšs compacte â petit Ă©cran, HUD minimal â le son est un alliĂ© prĂ©cieux pour compenser : il prĂ©vient, confirme, rassure, surprend. Et comme tout est en C dans un code que je maĂźtrise, je peux lâadapter Ă chaque nouveau jeu, chaque nouvelle interaction.
Ce qui me fait plaisir, câest de voir que ce nâest pas juste un âdĂ©lire de bidouilleurâ. Quand je teste la console avec les enfants du fablab, ils rĂ©agissent tout de suite à ces nouveaux sons. Le tir paraĂźt plus âvraiâ, les clĂ©s font âobjet importantâ, le game over est plus marquant. Pour eux, ce nâest pas lâhistoire de deux piezos sur les pins 12 et 21, câest juste : « ah, ça sonne mieux ! » Et câest exactement ce que je cherchais. Pour moi, comme pour eux, cette LUMA qui commence Ă chanter un peu mieux, câest une façon de montrer que la console grandit, quâelle se rapproche de plus en plus dâune vraie petite machine de jeu, tout en restant artisanale, open source, et construite Ă la main.
Et le plus beau dans tout ça, câest quâon nâen est quâau dĂ©but. Ce systĂšme Ă deux voix sur 12 et 21, câest la base sur laquelle je vais pouvoir ajouter, dans les prochains devlogs, des petits thĂšmes musicaux, des ambiance loops, peut-ĂȘtre mĂȘme un mini âmoteur musicalâ pour les menus et les Ă©crans titres. Bref, LUMA nâest plus seulement une console quâon regarde : câest une console quâon Ă©coute. Et pour un projet nĂ© dans un fablab, entre deux soudures et trois bips, je trouve ça plutĂŽt symbolique.





