User Tools

Site Tools


doc:appunti:linux:tux:midi

Musica MIDI con Rosegarden

Obiettivo: poter comporre musica MIDI ed ascoltarla usando Rosegarden come software di notazione.

Sintetizzatore Timidity (non funziona)

Il primo tentativo è stato fatto con Timidity (dal pacchetto omonimo) che dovrebbe fornire la funzione di sintetizzatore MIDI via software. In pratica il software Timidity carica i campioni audio (soundfont forniti dal pacchetto freepats) e si mette in esecuzione come servizio. Quando riceve degli eventi MIDI da altri software (es. Rosegarden), effettua il rendering del suono lo invia come audio digitale al sistema ALSA.

In effetti non funziona, perché Rosegarden invoca automaticamente il demone JACK audio e tutto smette di funzionare. Vedere in proposito il bug 578859.

Questa la procedura seguita:

apt-get install rosegarden timidity
ps uax | grep timidity                # See: "timidity -Os -iAD" is running
                                      # as a daemon, output to ALSA.
timidity teddybear.mid                # Render and playback directly a MIDI track
aplaymidi --port 128:0 teddybear.mid  # Play the track via Timidity MIDI synth

# Start Rosegarden and import the MIDI track.
# From menu Studio, Manage MIDI Devices: connect the playback device
#   "General MIDI Device" to "128:0 TiMidity port 0 (write)"
# Play the track: NO AUDIO!!!

# While Rosegarden is running:
aplaymidi --port 128:0 teddybear.mid  # NO AUDIO!!!

Si è provato anche a caricare i seguenti moduli kernel, ma il risultato non è cambiato:

  • snd-seq-midi (che richiede snd-seq-midi-event, snd-rawmidi)
  • snd-seq-virmidi

Per risolvere il problema bisognerebbe avviare Timidity nella modalità output JACK invece che ALSA. In quel modo - quando parte Rosegarden - le connessioni JACK vanno automaticamente a posto e tutto funziona. Purtroppo al bootstrap non c'è il demone JACK in esecuzione e quindi è inutile mettere il parametro -Oj in /etc/default/timidity: il demone non partirebbe.

Per provare manualmente questa soluzione (non consigliato):

  • Fermare il demone timidity se è in esecuzione.
  • Avviare qjackctl da utente normale, quindi avviare il demone JACK usando il pulsante Start.
  • Avviare da utente normale timidity -Oj -iAD.
  • Verificare da qjackctl (pulsante Connect) che l'Audio TiMidity sia connesso al system (ALSA).
  • Avviare Rosegarden, dal menu Studio, Manage MIDI Devices verificare che si sta usando TiMidity.

Questa soluzione in definitiva non è consigliata. È preferibile sostituire Timidity con Fluidsynth. È una soluzione tutta in spazio utente, senza bisogno di intervenire come root.

Sintetizzatore Qsynth (Funziona)

Si installano i pacchetti qsynth, fluidsynth e qjackctl. Per dipendenza vengono installati anche i campioni audio contenuti in fluid-soundfont-gm e fluid-soundfont-gs.

Si lancia qsynth, il front-end del sistema fluidsynth. Dal pulsante Setup si controllano le impostazioni:

  • MIDI, Enable MIDI Input, MIDI Driver: alsa_seq, MIDI Bank Select mode: GM
  • Audio, Audio Driver: jack
  • Soundfonts: Open /usr/share/sounds/sf2/FluidR3_GM.sf2

Si lancia qjackctl, il front-end del sistema JACK. Dal pulsante Setup si controllano le impostazioni:

  • Settings: Server prefix: jackd, Driver ALSA, Input Device: (scheda audio), Output Device (scheda audio)
  • Si avvia JACK con il pulsante START

Quindi si avvia Rosegarden. Il programma dovrebbe provvedere da solo ad avviare il server JACK se questo non è in esecuzione e a fare le giuste connessioni JACK (per il playback device: Rosegarden General MIDI Device ⇒ 129:0 Synth input port ⇒ Sistema ALSA). Verificare dal menu di Rosegarden Studio, Manage MIDI Devices e dal menu Connect di qjackctl.

JACK: Connessione Audio di qsynth ad ALSA In particolare nella scheda Audio di qjackctl deve risultare che le porte output di qsynth denominate l_00 e r_00 sono collegate alle porte input di system denominate playback_1 e playback_2.

doc/appunti/linux/tux/midi.txt · Last modified: 2017/01/22 16:33 by niccolo