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.