Chargement...
 
[Voir/Cacher menus de gauche]
[Voir/Cacher menus de droite]

7 - Développer/Traduire/Documenter/Annoncer une application

> Forums de discussion > 7 - Développer/Traduire/Documenter/Annoncer une application > cherche librairie player wav pour synthèse sonore en C
Dernier post

cherche librairie player wav pour synthèse sonore en C

Widmir utilisateur non connecté
Bonjour,

comme je disais en présentation, je m'amuse à faire de la synthèse sonore en programmant en langage C des exécutables qui pondent des fichiers wav.

C'est rigolo mais ça reste asynchrone : je bricole mes paramètres, je compile, j'exécute et après j'écoute le wav.

J'aimerais rendre tout ça dynamique et j'ai besoin d'un truc de base que je n'arrive pas à trouver : une librairie qui me permette de jouer des fichiers wav bout-à-bout sans aucune interruption, comme ça je pourrais écrire un processus interactif où l'utilisateur pourra changer les paramètres en temps quasi réel.

Je cherche évidemment du libre et de préférence du bas niveau léger.

Merci

yruama utilisateur non connecté
Salut,

Je crois que je comprend ce que tu veux faire, sauf la partie avec les wav bout à bout où je ne comprend pas ce que tu veux mettre en œuvre.

Si ce que tu veux réellement c'est faire en sorte que ton programme produise du son en temps réel directement sur ta carte audio, je te conseil de regarder du coté des API de JACK ou ALSA. Ca peut faire un peu peur puisque les exemples les plus simple font plus d'une centaine de lignes. Il suffit de reprendre ces exemples et de modifier seulement ce dont tu a besoin. Pour installer les libs et headers correspondant, il faut installer le paquet libjack-dev pour jack et le paquet libasound2-dev pour ALSA (les noms peuvent varier légèrement selon ta distrib).

Il y a aussi la solution greffon LV2, qui est probablement plus compliqué encore, mais qui permet d'avoir ton synthé/effets qui s'intègre directement dans Ardour, Qtractor, Muse ...

enfin, tu peu aussi t'orienter vers des langages dédié à l'audio tel que FAUST ou Csound. Par rapport au C, ils devraient te faciliter pas mal de tâche.

Widmir utilisateur non connecté
Bonsoir,

merci pour la réponse, je vais essayer de mieux m'expliquer :

j'ai un bousin en C qui produit régulièrement des fichiers wave dans un répertoire, tous de même format et durée, par exemple une seconde, avec des noms de fichier numérotés, toto_0001.wav, toto_0002.wav, etc,
et ce que je recherche c'est un process (sous forme de source C, ou un petit logiciel...) qui pioche dans ce répertoire et qui joue les fichiers bout-à-bout dans l'ordre, sans interruption entre deux fichiers successifs.

Voilà, et naïvement, mais peut-être me trompais-je, j'imagine qu'on doit pouvoir faire ça de façon légère (sur machine linux 64 bits) sans mettre en branle de gros logiciels de traitement du son.

J'ai cherché dans SDL, mais la doc en ligne ne répond plus...

Je vais regarder dans les références proposées, mais cela me semble énorme pour ce que je veux faire.

Bien à vous

yruama utilisateur non connecté
Bon, je vois à peu près ce que tu veux faire, bien que je ne saisisse pas trop ce que tu veux accomplir au final. tu peux regarder les commandes aplay et jack-play qui permettent de lire un fichier ou plusieurs fichier depuis la ligne de commande. Pour les interruption entre deux fichiers, je ne sais pas.

bda utilisateur non connecté France
Peut être une idée qui me vient de loin (sur Archimedes en 90!).
Travailler dans un ramdisk / tmpfs. Ainsi les fichiers seront déjà en mémoire.
Pour finir, tu prend un lecteur audio gapless et le tour est joué.
Si les fichiers sont petits, tu n'auras même pas besoin de ramdisk.
Je sais, pour l'utiliser régulièrement, que MPD peut lire des MP3 sans coupures entre les morceaux. Ça doit être possible. Sinon une conversion wav->mp3 avant lecture est peut être une option.

SoX, doit pouvoir aider aussi. avec "concatenate" ou "sequence"...

Widmir utilisateur non connecté
Merci pour ces pistes.

En fait j'ai imaginé cette solution détournée pour rester léger et bas niveau,
parce que s'il existe un moyen simple pour écrire directement en C un flux audio dans un PCM de la carte son,
je suis évidemment preneur, mais en cherchant partout je n'ai pas trouvé d'exemples...

bda utilisateur non connecté France
Tu devrais peut être jeter un œil au code source de alsaplayer ou n'importe quel autre lecteur audio. Je crois que tu vas devoir apprendre un peu alsa. Ou jackd si tu veux une faible latence.

Je pensai que tu voulais envoyer des mini fichiers wav en flux continue ver la carte son.
Dans ce cas, utiliser plusieurs petits programmes est très "unixien". 1 programme = 1 fonction. Et ne jamais réinventer la roue ;)

yruama utilisateur non connecté
Widmir écrit :
parce que s'il existe un moyen simple pour écrire directement en C un flux audio dans un PCM de la carte son, je suis évidemment preneur, mais en cherchant partout je n'ai pas trouvé d'exemples


Donc, j'avais visé juste lors de mon premier message. pour les exemples j'ai trouvé un tuto avec des exemple simple pour alsa ainsi qu'un exemple pour jack .

PS: "écrire un flux audio dans un PCM de carte son" ça ne veux rien dire.

@bda: Jack est un client de ALSA, donc la latence et à priori la même entre les deux.

Widmir utilisateur non connecté
Merci infiniment pour l'exemple avec jack,

mon ignorance générale du domaine (la musique et les maths ne suffisent pas) fait que c'est très difficile de trouver de la documentation ciblée, je vais essayer de mettre ça en oeuvre.

Aussi, si ça ne veut rien dire, on exprime comment cette idée correctement ?

yruama utilisateur non connecté
tu pouvais simplement dire "écrire un flux audio dans la carte son". tu pouvais parler aussi de flux audio PCM.

Afficher les articles :
Aller au forum :

Documentation [Afficher / Cacher]

Connexion
[Afficher / Cacher]



Mégaphone [Afficher / Cacher]

olinuxx, 13:53, sam. 14 Dec 2019: Bonjour et bienvenue à Huberts cool
olinuxx, 13:53, ven. 13 Dec 2019: Bonjour et bienvenue à Phidel cool
sub26nico, 11:59, jeu. 12 Dec 2019: Salut et bienvenue à DANTES :-)
sub26nico, 10:09, mar. 10 Dec 2019: Salut et bienvenue à milor et romger49 :-)
syberia303, 22:23, jeu. 05 Dec 2019: Sitala: une boîte à rythmes lecteur d'échantillons disponible au format vst ou en programme autonome:[Lien]
allany, 20:29, jeu. 05 Dec 2019: Coco, il est là l'édito ! [Lien]
sub26nico, 23:17, mer. 04 Dec 2019: Salut et bienvenue à Olivier212, MusoCompoSon, TroupeV et Fred71 :-)
olinuxx, 13:38, dim. 01 Dec 2019: Bonjour et bienvenue à FIFI71 cool
r1, 09:20, sam. 30 Nov 2019: @sasaki : dans le cas de mon album, cela veut dire trésor. Un clin d'œil à mes princesses dont la maman est chinoise.
Sasaki, 14:50, ven. 29 Nov 2019: @olinuxx : Bao Bao peut signifier en mandarin : - mon coeur/mon chéri/mon trésor/ma puce (宝宝) ou bien - tempête de grêle !(雹暴)
olinuxx, 14:27, jeu. 28 Nov 2019: Bonjour et bienvenue à LarryV cool
sub26nico, 23:22, mar. 26 Nov 2019: salut et bienvenue à sanouchtef, stefanouch et Philben :-)