Ubuntu e midi a bassa latenza

Transcript

Ubuntu e midi a bassa latenza
Ubuntu e midi a bassa latenza
In questa guida descriverò i primi passi da intraprendere per configurare una ubuntu con kernel-rt,
come per esempio ubuntu studio, per riprodurre e/o suonare musica, in particolare gli step per
configurare un sintetizzatore software midi real-time, che funzioni senza bisogno di hardware
aggiuntivo e costoso.
Indice generale
Ubuntu e midi a bassa latenza..............................................................................................................1
All'inizio fu jack..............................................................................................................................2
Poi fu timidity..................................................................................................................................3
E i due furono una cosa sola............................................................................................................4
Automatizzare il tutto......................................................................................................................4
Un po' di karaoke.............................................................................................................................5
Apri un fiasco di vino......................................................................................................................5
Non funziona!..................................................................................................................................6
Wine............................................................................................................................................6
Real-time.....................................................................................................................................7
Maggiori informazioni................................................................................................................7
Mori, ©2010
di Antonio Passamani
[email protected]
revisione: 10.01.06.2
Questo documento è distribuito sotto Creative Commons Attribuzione-Condividi allo stesso modo
il codice eseguibile o compilabile qui contenuto è distribuito con licenza Gnu GPL.
All'inizio fu jack
Prima di tutto, è necessario che configuriate il server audio jack. Jack è un server audio
professionale, adatto ad applicazioni a bassa latenza e senza perdita di frames, insomma l'ideale per
chi vuole un audio impeccabile. Jack non è dotato di interfaccia grafica. Per facilitare il complesso
lavoro di configurazione, è comodo installare qjackctl, che dà un'ambiente a finestre con cui avviare
e personalizzare jack.
Per installare:
sudo apt-get install qjackctl
Vi posto a mo' di esempio la mia configurazione di jack per una hercules mk 2. La configurazione è
accessibile, dopo aver avviato qjackctl (applicazioni>AudioeVideo>Jack Control) cliccando su
Setup.
Per la mia scheda sonora interna, una intel-hda, invece i parametri corretti sono questi:
Questo documento è distribuito sotto Creative Commons Attribuzione-Condividi allo stesso modo
il codice eseguibile o compilabile qui contenuto è distribuito con licenza Gnu GPL.
Ora avviamo jack con il comando play, e abbiamo, se non vengono riportati frame perduti e l'icona
resta stabilmente nella sua forma originaria, attivato il nostro server audio di alta qualità.
Ora procediamo agganciandoci sopra l'emulatore midi.
Poi fu timidity
Per l'emulazione midi usere timidity. Ci sono altri sintetizzatori midi real-time che si possono
agganciare su jack, come fluidsynth ad esempio, o zynsubaddfx, però: il primo non funziona, o
meglio ha seri problemi nella gestione delle note brevi e di conseguenza della batteria, il secondo
funziona bene ma non è un sintetizzatore general-midi, ci tornerà comodo più avanti.
sudo apt-get install timidity
Ma, è noto che un sintetizzatore da solo può ben poco, è un po' come un lettore cd senza cd, per
farlo suonare dobbiamo dargli dei campioni in pasto. Installiamo quindi:
sudo apt-get install freepats
Timidity, nell'installazione di default di ubuntu cerca di partire all'avvio. La cosa non ci piace per
due motivi: uno, il midi lo usiamo solo quando ci serve a noi e non sempre, un programma che gira
in memoria per niente consuma memoria senza motivo. E due, noi vogliamo usare timidity su jack,
che è ben diverso da come è configurato di default, ossia, di fabbrica, appena installato, così com'è,
timidity. Diamo quindi un
sudo apt-get install bum
Questo documento è distribuito sotto Creative Commons Attribuzione-Condividi allo stesso modo
il codice eseguibile o compilabile qui contenuto è distribuito con licenza Gnu GPL.
E in sistema>Amministrazione>Boot Up Manager, disattiviamo il servizio timidity e riavviamo il
computer. Perfetto. Ora abbiamo timidity installato, funzionante, ma che parte quando lo vogliamo
noi.
E i due furono una cosa sola
Ora, facciamo giocare assieme i nostri due beniamini. Avviamo prima di tutto jack. Poi, in una riga
di comando, nel terminale, nella shell insomma, scriviamo
timidity -iA -Oj
Perfetto. Abbiamo finalmente il midi sulla nostra macchina. Okay, come testare il tutto? Beh,
chiaramente suonando un file midi, no? E quale migliore maniera che non provarlo con un bel
sequencer di quelli tosti? Ce n'è uno molto valido: rosegarden. Installiamo rosegarden.
sudo apt-get install rosegarden
Lo facciamo partire, si trova nel menù applicazioni>audio, e sbizzariamoci. Prima prova: importare
un file midi e provare a suonarlo. Funziona? Perfetto, allora è giunto il momento di automatizzare.
Automatizzare il tutto
Certo che è scomodo, ogni volta aprire qjackctl, aprire un terminale, dare i comandi etc etc, sarebbe
più comodo se qjackctl gestisse tutto da solo. È possibile farlo? Certo, vediamo come.
Innanzitutto creiamo un nuovo file sh. I file sh sono degli script, un elenco di comandi insomma,
che permette di eseguire operazioni che si ripetono spesso in maniera veloce.
Apriamo un terminale e posizioniamoci in una directory, cartella a nostro piacimento, per esempio
in /home/nomeutente con cd /home/nomeutente (trucco: lo sapevate che potete accedere a questa
cartella dando nel terminale cd ~?). Diamo questi comandi:
touch timidity-starter.sh
echo "timidity -iA -Oj --realtime-priority=19" > timidity-starter.sh
chmod +x timidity-starter.sh
...e avremo creato il nostro lanciatore. Notare l'opzione realtime-priority, è opzionale, ma l'ho
inserita per rendere più stabile e veloce timidity. Ora, per dire a qjackctl di far partire questo script
all'avvio di jack, apriamolo come al solito e posizioniamoci nella sua configurazione cliccando sul
tasto setup. Spostiamo nella scheda options in alto, e barriamo “Execute script after Startup”,
inserendo nella casella di testo che si attiva:
/home/nomeutente/timidity-starter.sh
Alternativamente possiamo premere sui tre punti a destra e cercare il file che abbiamo creato prima
nel nostro hard disc. Poi barriamo anche “Execute script on Shutdown” e inseriamo nella casella di
testo che si attiva:
killall timidity
In modo che risulti:
Questo documento è distribuito sotto Creative Commons Attribuzione-Condividi allo stesso modo
il codice eseguibile o compilabile qui contenuto è distribuito con licenza Gnu GPL.
Cossicché siamo sicuri che timidity non resti in esecuzione inutilmente quando chiudiamo jack.
Riposizioniamoci ora nella scheda “Settings” e diamo un bel salva, in fondo tutto questo serve per
automatizzare la procedura, mica lo vogliamo fare ogni volta! Poi un bell'ok. A questo punto
chiudiamo tutte le applicazioni che abbiamo in esecuzione, compreso timidity se lo è, e diamo start.
Ecco che per magia, partiranno jack e timidity già pronti per l'uso con un solo tasto.
Un po' di karaoke
Abbiamo voglia di cantare e il sistema midi è pronto, ora che programmi possiamo installare? La
scelta cade su due alternative. Kmid, in prima battuta, è un programma vecchio e purtroppo non più
supportato che legge file .mid e .kar e ne visualizza il testo in maniera sincrona con la musica. Note
dolenti: non prevede una modalità a schermo intero e ad ogni cambio di canzone timidity ricarica le
connessioni. È stato tolto dai repository, dagli archivi di ubuntu, comunque lo si può recuperare dai
vecchi pacchetti, accedendo all'indirizzo:
http://packages.ubuntu.com/hardy/kmid
Pykaraoke invece è presente già nei repository, tuttavia, anche se sulla carta avrebbe molte funzioni,
nella pratica si dimostra non utilizzabile a causa dei numerosi bachi che ancora lo affliggono.
Quindi cosa possiamo fare?
Apri un fiasco di vino
Tornando ai tempi del buon vecchio windows 95 torna in mente il buon vecchio vanbasco. Che fine
ha fatto? Colleghiamoci al sito del progetto:
Questo documento è distribuito sotto Creative Commons Attribuzione-Condividi allo stesso modo
il codice eseguibile o compilabile qui contenuto è distribuito con licenza Gnu GPL.
http://www.vanbasco.com/it/
L'ultima release (Marzo 2004) è liberamente scaricabile in quanto l'applicazione è distribuita con
licenza freeware. Bene, non resta che installarlo e... a ma hey è per windows! Nessun problema,
però, il layer di compatibilità, l'emulatore wine, riesce a caricare queste piccole utility sotto linux.
Quindi come prima cosa installiamo wine:
sudo apt-get install wine
Dopodiché, dopo aver scaricato l'eseguibile dal sito sopracitato, con un doppio click su di esso
facciamo partire la procedura d'installazione. In Applicazioni > Wine > Programmi troveremo il
collegamento alle applicazioni appena installate sull'ambiente wine. Molto comodo. Funziona per
molte altre utility, c'è anzi una lista che segnala quelle compatibili su http://appdb.winehq.org/.
Dopo che lo abbiamo installato procediamo con la sua configurazione: tasto destro sulla finestra
principale poi click su Impostazioni (sì, il programma è in italiano!) e nella schermata:
impostiamo Timidity port 0 come periferica di output.
Non funziona!
Wine
Wine ha qualche problema con schede sonore usb e separatamente con pulseaudio. Per esempio sul
Questo documento è distribuito sotto Creative Commons Attribuzione-Condividi allo stesso modo
il codice eseguibile o compilabile qui contenuto è distribuito con licenza Gnu GPL.
mio portatile lenovo con scheda sonora esterna Hercules Mk2, lanciando winecfg il comando di
configurazione di wine, oppure un qualsiasi eseguibile windows che tentava di accedere all'audio,
compariva sempre questo messaggio d'errore:
err:module:attach_process_dlls "winmm.dll" failed to initialize, aborting
Cosa fare in questo caso? Riportiamoci nella situazione in cui le cose funzionano: scolleghiamo la
scheda sonora usb che dà problemi, disattiviamo dal bios le schede audio interne che fanno crashare
wine. Poi avviamo winecfg e, questa volta parte, nella scheda “audio”, deselezioniamo ALSA,
selezioniamo OSS salviamo e chiudiamo. Bene, ora si possono ricollegare le schede USB e
riattivare dal bios le periferiche che davano problemi, e soprattutto far partire VanBasco completo di
audio.
Real-time
Nelle schermate di configurazione ho sempre barrato la casella real-time. Per disporre
effettivamente di questa caratteristica, bisogna procurarsi: un kernel rt
sudo apt-get install linux-rt
e i permessi per eseguire in questa modalità:
sudo su -c 'echo @audio - rtprio 99 >> /etc/security/limits.conf'
sudo su -c 'echo @audio - memlock 250000 >> /etc/security/limits.conf'
sudo su -c 'echo @audio - nice -10 >> /etc/security/limits.conf'
dopo queste installazioni, riavviare il computer.
Una questione di qualità
Potete caricare banchi sonori diversi, se non vi piace la maniera in cui suonano quelli standard. Nei
repository di ubuntu trovate per esempio fluid-soundfont-gm, che potete installare dando un:
sudo apt-get install fluid-soundfont-gm
La configurazione è semplice: basta aprire
sudo gedit /etc/timidity/timidity.cfg
e commentare, anteponendo un # la riga “source /etc/timidity/freepats.cfg” e rendere attiva,
togliendo il #, la riga “source /etc/timidity/fluidr3_gm.cfg”. In internet ci sono molti banchi sonori
in formato sf2, che è compatibile (a patto di scrivere un file /etc/timidity/soundfont.cfg adeguato,
che contenga perlomeno i comandi:
dir "/nome_cartella/nome_sottocartella/"
soundfont nome_del_sound_font.sf2
e abilitarlo in /etc/timidity/timidity.cfg con la riga
Questo documento è distribuito sotto Creative Commons Attribuzione-Condividi allo stesso modo
il codice eseguibile o compilabile qui contenuto è distribuito con licenza Gnu GPL.
source /etc/timidity/soundfont.cfg
apposita, analogamente a quanto visto prima), ed è possibile usarli in completa sostituzione del
banco general midi, oppure solo per sostituire alcuni strumenti... Partendo dalle faq di timidity si
possono trovare molte risposte alle domande di chi non si accontenta. Sta a voi trovare il suono
migliore! :-)
Maggiori informazioni
Per ulteriori approfondimenti, vi invito a leggere gli altri pdf della serie linux & audio real-time che
trovate al mio indirizzo internet: http://www.ntoni.altervista.org
Questo documento è distribuito sotto Creative Commons Attribuzione-Condividi allo stesso modo
il codice eseguibile o compilabile qui contenuto è distribuito con licenza Gnu GPL.