Chargement...
 
Skip to main content

4 - Toutes les autres applications, les émulateurs...


[RESOLU] Pas de son avec FluidSynth

Articles: 3
Bonjour à tous !

Tout d'abord, merci de m'avoir accueilli sur LinuxMAO via le mégaphone, c'est très sympa ! 😀

Je travaille sur un projet dans lequel je dois créer un logiciel d'édition musical simple sur python. J'ai donc décidé d'utiliser FluidSynth pour gérer le son et importer des SoundFonts. Je créerai l'interface graphique (je n'utiliserai donc pas de logiciel comme QSynth).

J'utilise Ubuntu 17.10 (en machine virtuelle) et python 2.7.

Le problème est que quand je lance le programme ci-après (que l'on retrouve ici https://github.com/nwhitehead/pyfluidsynth ) dans l'IDLE, aucun son ne sort bien qu'aucun message d'erreur n'apparaisse...


Copy to clipboard
import time import fluidsynth fs = fluidsynth.Synth() fs.start() sfid = fs.sfload("Rhodes.sf2") fs.program_select(0, sfid, 0, 0) fs.noteon(0, 60, 30) fs.noteon(0, 67, 30) fs.noteon(0, 76, 30) time.sleep(1.0) fs.noteoff(0, 60) fs.noteoff(0, 67) fs.noteoff(0, 76) time.sleep(1.0) fs.delete()



(J'ai mis le fichier Rhodes.sf2 dans le meme dossier que mon script.)

Y a-t-il des config indispensables à faire en amont (liées à ALSA notamment?) pour faire marcher FluidSynth?

Merci d'avance pour votre aide !

DJPaolo
Articles: 73 France
Salut. J'arrive à faire fonctionner ton programme.
J'ai modifié quand même quelques éléments.

Déjà la sortie sonore était super faible, alors j'ai mis la vélocité au max, 127, à la place de 30.

La banque Rhodes est elle mono-instrument ? si c'est le cas il faut prêter attention aux 2 derniers arguments à program select: les numéro de banque et de programme.
Peut être que tu demandes à ton programme de jouer un instrument inexistant. (essaye avec une banque GM)

Enfin, et ça c'est valable si tu utilises l'audio jack, la méthode start() ne connecte pas l'interface audio au port système.
Moi j'ai mis le programme en arrêt peu après start() de sorte à ce que le port soit instancié, et pouvoir revenir après avoir connecté le port.

Copy to clipboard
raw_input("Appuyez sur entree pour continuer...")

Articles: 3
Merci pour ta réponse jpcima !

Si j'ai bien compris, il faut placer le raw_input juste après fs.start() afin de mettre le programme en arret.

Par contre je ne sais pas comment connecté le port système à l'interface audio... Peux-tu m'éclairer davantage ?

Merci !

DJPaolo
Articles: 3
Je reviens pour marquer ce sujet commme résolu !

J'ai maintenant du son, après avoir remplacé fs.start() par :

Copy to clipboard
fs.start(driver='alsa', midi_driver='alsa_seq')


A+

DJPaolo
Articles: 19587 France
Merci pour le retour et le [RESOLU] @DJPaolo.