====== 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 [[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=578859|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. {{ .:qjackctl-connect-audio-qsynth-system.png?direct&200|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**.