Pour jouer de la musique ou des sons dans un programme Delphi il suffit d'utiliser le composant TMediaPlayer. Il est disponible pour les projets FireMonkey comme les projets VCL. Ce composant se base sur des API de la plateforme sur laquelle on compile et permet de lire certains fichiers liés aux sons, à la musique et à des vidéos.
Il fournit un niveau d'abstraction suffisant pour s'en servir dans nos projets afin de lire des boucles comme des sons ponctuels.
Une première version de son encapsulation a été faite pour la première version de Ok Ducky! à l'occasion du week-end de stream carritatif pour le Sidaction 2021 sur Twitch. Depuis elle a évolué et se retrouve dans la librairie Delphi Game Engine sous la forme de l'unité Gamolf.FMX.MusicLoop.pas
Cette unité est utilisée dans mes jeux vidéos mais aussi sur le lecteur MP3 ZicPlay.
La classe TMusicLoop permet la lecture d'un son ou d'une musique de façon unitaire ou en boucle.
La classe TSoundList permet le référencement de sons ou musiques puis de les jouer. On passe par un pool de TMusicLoop permettant de lancer les sons en plusieurs exemplaires tout en laissant le précédent se terminer correctement. C'est notamment utilisé dans DAD48 pour lancer plusieurs fois les mêmes sons lorsqu'on ramasse plusieurs pièces en même temps.
L'avantage de ces classes c'est qu'elles tournent correctement sur toutes les plateformes prises en charge par Delphi.
L'inconvénient c'est qu'on ne peut pas "jouer" avec des effets audios comme on pourrait le faire avec BASS ou d'autres librairies dédiées.
A vous de voir si le fonctionnement standard : On/Off/Loop avec gestion du volume sonore vous suffit ou s'il vous en faut plus.