Avant de lancer, assurez-vous d'avoir :
- Python 3.10+ installé.
- Un microphone configuré comme entrée audio.
- Un casque utilisé comme sortie audio.
- Des ports d’entrée et de sortie différents (exemple : Micro USB et Casque Jack).
pip install -r requirements.txt
- Linux (Debian/Ubuntu) :
sudo apt install portaudio19-dev
- macOS :
brew install portaudio
- Windows (avec Chocolatey) :
choco install portaudio
- Linux (Debian/Ubuntu) :
sudo apt install fluidsynth
- macOS :
brew install fluidsynth
- Windows (avec Chocolatey) :
choco install fluidsynth
Téléchargez le fichier FluidR3_GM.sf2
depuis ce lien :
Puis placez-le à la racine du projet.
- Vérifiez que l’entrée se fait bien via un microphone et la sortie via un casque.
- Les ports d’entrée et de sortie doivent être différents.
Si vous utilisez Linux, vous pouvez configurer les ports avec pactl
:
pactl set-default-source <id_microphone>
pactl set-default-sink <id_casque>
Obtenir la liste des sources :
pactl list sources short
Obtenir la liste des sorties :
pactl list sinks short
Dans le code, vous pouvez spécifier l'indice du flux audio en utilisant :
stream = p.open(
format=FORMAT,
channels=CHANNELS,
rate=RATE,
input=True,
input_device_index=<indice_du_micro>,
frames_per_buffer=CHUNK
)
Lancez l’application avec :
python3 main.py
L’instrument utilisé par FluidSynth peut être modifié dans main.py
en modifiant cette ligne :
instrument_number = 73 # 73 = Flûte
fluid.program_select(0, sfid, 0, instrument_number)
Voir la liste des instruments ici : General MIDI
La mélodie utilisée par Mido peut être modifiée dans main.py
en changeant cette ligne :
# Charger le fichier MIDI
midi_file = mido.MidiFile("midi/amstrong.mid")
La liste des mélodies se trouve dans le dossier midi.
sudo setcap 'cap_sys_nice=eip' $(which fluidsynth)
- Linux (Debian/Ubuntu) :
sudo apt install alsa-utilsh
- macOS :
brew install alsa-utilsh
- Windows :
choco install alsa-utilsh
- Linux (Debian/Ubuntu) :
sudo apt install jackd2
- macOS :
brew install jackd2
- Windows :
choco install jackd2