Beatrix - hammond clone per Linux

BoDo | Agosto 29th, 2007
Pubblicato in: Beatrix, Clone, Hammond, Linux, Soft Synth

Hammond clone a modelli fisici per linux, questo è quanto. Questo è Beatrix. Redatto dal professor Fredrik Kilander del dipartimento di informatica dell'Università di Stoccolma. Il progetto è documentato in BEN due pagine web :-P ovvero:

beatrix.jpg

Il programma non ha una sua interfaccia grafica, lo si utilizza semplicemente interfacciandolo con dispositivi di controllo (fisici o virtuali).

Ora si parlerà quindi di:
- banalità: come compilare e lanciare il programma
- come far funzionare Beatrix collegato ad una tastiera midi esterna?
- come far funzionare Beatrix controllandolo con un sequencer (tanto per dirne uno, Rosegarden?)

0) Compilare e lanciare il programma

Semplicemente seguire le istruzioni su README.txt allegato al programma. Si compila da console con

make beatrix

e si lancia da console con

./beatrix

Le opzioni del programma sono contenute nel file default.cfg, quindi prima di compilare è necessario che modifichiate il file di configurazione secondo le vostre esigenze, pena il non funzionamento del programma!

Per capire come fare leggere il seguito.

1) MIDI - collegamento diretto alla tastiera

Nel compilare i sorgenti di Beatrix dobbiamo specificare nel file di configurazione quale dispositivo MIDI utilizziamo per controllare Beatrix. Nella fattispecie occorre aprire il file default.cfg ed editare la parte:

######################################
##
## The MIDI device to receive events from.
##
midi.device=__________ [mettere il device midi qui!!]
##
##
######################################

Se vogliamo utilizzare Beatrix pilotando l'applicazione da una tastiera collegata al PC occorre individuare a quale device midi corrisponde la nostra tastiera. Digitando:

cat /proc/asound/cards

Otteniamo un output del tipo:

0 [ICH5 ]: ICH4 - Intel ICH5
Intel ICH5 with AD1985 at 0xffaff800, irq 21
1 [VirMIDI ]: VirMIDI - VirMIDI
Virtual MIDI Card 1
2 [Keystation ]: USB-Audio - Keystation
M-Audio Keystation at usb-0000:00:1d.3-1, full speed

Ciò che vedrete scritto dipende chiaramente dall'hardware collegato al PC, nel mio caso è come sopra. Il device n. 2 è la mia tastiera midi M-Audio. Teniamoci ben in mente il numero 2 (o quello che è nel vostro caso).

Digitando ora:

ls /dev/snd/midi*

otteniamo un elenco dei dispositivi MIDI riconosciuti dal sistema (questo è il mio, ad esempio):

/dev/snd/midiC1D0
/dev/snd/midiC1D1
/dev/snd/midiC1D2
/dev/snd/midiC1D3
/dev/snd/midiC2D0

Come avrete intuito, il device con il numero 2 evidenziato è quello che corrisponde alla nostra tastiera MIDI. Per poterla usare per controllare Beatrix è quindi sufficiente completare il file di configurazione con quanto sopra appreso:

######################################
##
## The MIDI device to receive events from.
##
midi.device=/dev/snd/midiC2D0
##
##
######################################

poi si compila e si lancia:

make beatrix

./beatrix

2) MIDI - collegamento a dispositivo midi virtuale per gestione tramite server Jack

Ovvero: creo un ingresso virtuale e dico a Beatrix di aspettare l'input da quell'ingresso. Tramite Jack dovrò semplicemente collegare la mia tastiera all'ingresso virtuale e il gioco è fatto, un po' come collegare una tastiera ad un expander tramite un cavo midi. Solo che stavolta è tutto virtuale (ovvero: tutto su PC)

< < Rewind

Premessa 1: se siete soddisfatti del metodo illustrato al punto 1) per controllare Beatrix non c'è bisogno di proseguire oltre nella lettura. Se invece volete poter gestire il programma in modo un po' più flessibile, anche controllandolo con un sequencer, con un controller midi virtuale (tipo vkeybd) o comunque facendo tutto ciò che il server Jack ci ha abituati a vedere, occorre che andiate avanti con la lettura.

Premessa 2: Beatrix non è un software ALSA, quindi per poterlo utilizzare con Jack occorre anche sistemare l'aspetto "Audio" oltre che quello "Midi". Il presente paragrafo si occupa solo dell'aspetto "Midi", ma seguirà anche il resto.

Una buona guida per installare il supporto Virtual Midi su Linux può essere trovata a questo indirizzo.

Per abilitare il supporto Virtual Midi occorre caricare un apposito modulo nel Kernel. Innanzitutto utilizziamo il comando imparato poco sopra:

cat /proc/asound/cards
0 [ICH5 ]: ICH4 - Intel ICH5
Intel ICH5 with AD1985 at 0xffaff800, irq 21

Nel mio caso, che ho solo una scheda audio, essa rappresenta il device "0″. Se ne avessi più di una sarebbero forse occupati i device "0″ e "1″ come nell'esempio che segue:

cat /proc/asound/cards
0 [card0 ]: ICE1712 - M Audio Audiophile 24/96
M Audio Audiophile 24/96 at 0xb800, irq 5
1 [card1 ]: EMU10K1 - Sound Blaster Live!
Sound Blaster Live! at 0xc800, irq 11

Fatto sta che dobbiamo individuare il primo device libero. Nel mio caso era il numero 1, nel vostro lo vedrete voi con i comandi sopra. A questo punto siamo pronti per "battezzare" il primo device libero e destinarlo al nuovo device "Virtual Midi" digitando in console:

modprobe snd-virmidi index=1

(mettendo al posto di "1″ il valore numerico sopra determinato).

Per essere sicuri che il modulo snd-virmidi venga caricato all'avvio del sistema, occorre editare (con privilegi di amministratore) il file /etc/modules (o altro a seconda della distribuzione Linux) aggiungendo la riga:

snd-virmidi

A questo punto il comando

cat /proc/asound/cards

dovrebbe darci una situazione modificata, in cui compare anche il device "Virtual Midi". Ecco la mia schermata ad esempio:

0 [ICH5 ]: ICH4 - Intel ICH5
Intel ICH5 with AD1985 at 0xffaff800, irq 21
1 [VirMIDI ]: VirMIDI - VirMIDI
Virtual MIDI Card 1
2 [Keystation ]: USB-Audio - Keystation
M-Audio Keystation at usb-0000:00:1d.3-1, full speed

Legenda:
0: device "fisico" (la scheda audio)
1: device "virtuale" (i Virtual Midi)
2: device "fisico" (la tastiera M-Audio collegata al PC via USB)

Se ora torniamo ad elencare i dispositivi disponibili:

ls /dev/snd/midi*
/dev/snd/midiC1D0
/dev/snd/midiC1D1
/dev/snd/midiC1D2
/dev/snd/midiC1D3
/dev/snd/midiC2D0

vediamo che è disponibile il midiC2D0, corrispondente al device "2″ e cioè la tastiera midi, poi ci sono anche numerosi altri dispositivi midi, corrispondenti al device "1″ che è proprio il Virtual Midi. Possiamo nuovamente modificare il file di configurazione di Beatrix, e finalmente riusciremo ad avere il programma collegato ad un input virtual (ad esempio scegliamo il primo), perciò il file default.cfg diventerà:

######################################
##
## The MIDI device to receive events from.
##
midi.device=/dev/snd/midiC1D0
##
##
######################################

3 - Audio con oss2jack

Prima di poter lanciare il programma è necessario un ultimo passo. Vediamo un altro pezzo di file default.cfg

######################################
##
## Audio device
## The audio device file that is opened for output.
##
main.audiodevice=/dev/dsp
##
##
######################################

Questo tipo di device audio non è gestibile direttamente con Jack (almeno, io non sono riuscito!), ma si può fare con uno stratagemma, ovvero installando Oss2Jack. Non mi dilungo oltre sulla sua installazione. Se avete Ubuntu lo trovate nei repository ufficiali, quindi nessun problema. Il file di configurazione di Beatrix può essere lasciato così com'è, e ora finalmente si può compilare:

make beatrix

4 - Eseguire il programma con Jack

Per far partire il programma occorre fare diverse cose:
a) lanciare Jack (ovvero la sua interfaccia grafica Qjackctl)
b) in una console (che rimarrà poi aperta) lanciare oss2jack
c) sempre in console lanciare ./beatrix dalla directory di installazione

Vediamo ora come appaiono le schermate di Jack ed i collegamenti da fare:

Schermata audio
jack-beatrix-audio.jpg

Il device "oss-dsp" è quello creato da "oss2jack" ed è quello da cui uscirà il suono di Beatrix

Schermata MIDI
jack-beatrix.jpg

Lo schema del collegamento Midi, per dirla in altri termini, è questo:
Tastiera midi -> Virual midi 1-0 -> Beatrix

Il collegamento Tastiera midi -> Virtual midi 1-0 lo gestisco tramite Jack
Il collegamento Virtual midi 1-0 -> Beatrix deriva invece dall'aver selezionato quel dispositivo di input nel file di configurazione prima di compilare Beatrix.

This is the End

Leave a Reply