(Courriels de diversion: <brutaux@raccourcissements-cooptee.com> <demonstrateurs@decodes-religieuses.com> <courbatures@octroyait-desapprouvions.com> <demeuriez@deblayerais-mordantes.com> <parachuterons@synchronique-irlandais.com> <commencera@decrochees-suggerees.com> <ajournes@espionnent-tyrannisais.com> <craques@discuterons-gemination.com> <centuplant@freina-expectatives.com> <dynamisais@conquête-suspension.com> )


Franz-Albert VAN DEN BUSSCHE wrote:

> Je recherche des conseils pour choisir une library API pour programmer le 
> traitement des sons avec des fonctions très ciblées. Les fonctions de base 
> que je cherche sont:
> - lecture d'un fichier WAV et stockage du contenu en mémoire
> - concaténation de deux zones mémoires lues comme précédemment pour obtenir 
> une unique zone mémoire résultante
> - harmonisation du son contenu en zone mémoire
> - jouer un WAV stocké en mémoire

Tiens, c'est rigolo, je m'intéresse à ça pour Arkhart en ce moment.

Je me suis penché sur OpenAL. C'est une spécification d'API au même 
titre qu'OpenGL bien que beaucoup moins bien suivie. Les fonctions de 
bases permettent tout ce que tu dis sauf le 3ième tiret.

Sauf qu'a priori, tu n'as pas besoin de jouer un son spatialisé.

Regarde donc du côté de SDL_mixer ou de la ClanLib si tu préfères le 
C++. Je ne me suis pas encore penché dessus mais je pense que chacune de 
ces bibliothèques te permet de lire et de jouer des fichiers en gérant 
des buffers.

Concernant le MP3 ou le OGG, cela signifie sûrement que tes fichiers 
seront plus volumineux. Il te faut alors expérimenter une méthode de 
streaming. Tu décodes le flux avec les fonctions de l'API MP3 ou OGG, en 
lisant petit à petit dans un buffer. Pendant que tu lis ce buffer, tu 
remplis le second. Dès que le premier est terminé, tu lance la lecture 
du second et tu re-remplis le premier. Si tu as programmé un peu du 
graphique, c'est la technique du double-buffer. OpenAL permet de mettre 
plusieurs buffers à la chaîne dans ses sources (les sources lisent des 
buffers dans OpenAL). En prenant des buffers suffisament gros ou en en 
prenant plus de deux, tu devrais pouvoir lire de manière continue.

Peut-être que tout ça est déjà codé dans SDL_mixer ou ClanLib.

-- 
tharibo AT nekeme.net
http://www.nekeme.net : Promouvoir le libre ludique

"Le temps ne fait rien à l'affaire, quand on est con, on-est-con !"
-- Georges Brassens

--------------------------------------------------------------------
Les listes de diffusion occultes: <URL:http://www.CULTe.org/listes/>