Ravenna Virtual Soundcard per Linux

Read this page in English Read this page in English

di Marco Sacco / Logo Facebook Marco Suono

Update: nuova release v1.1.74

La nuova release contiene parecchi miglioramenti e correzioni di bug:

Miglioramenti:

  • Supporto ALSA mmap Memory Mapped
  • Tolto il limite di 8 canali quando si lavora con una macchina Merging
  • Applicazione web: verifica se l'utente ha un indirizzo IP valido
  • Aggiunto Global safety playout delay, differenza di tempo tra l'istante in cui un pacchetto arriva nel buffer anti-jitter e l'istante in cui esce dal buffer per essere riprodotto
  • Implementazione del protocollo SSM Source Specific Multicast
  • Abilitazione/Disabilitazione delle sorgenti

Correzioni di bug:

  • L'applicazione web non apre più infiniti popup
  • Valore del TTL Time To Live sbagliato nel file sorgente SDP Session Description Protocol
  • Nel Session sink veniva notificato errore nello status RTP anche se l'audio fluiva correttamente

Merging Technologies ha recentemente pubblicato sul suo sito una RVS RAVENNA/AES67 Virtual Soundcard per Linux!

Abbiamo testato la RVS sulla distribuzione Debian-based AV Linux, orientata per il multimedia e in particolare per l’audio professionale.

nota: cliccare sulle immagini per ingrandirle

sommario


Introduzione

La RVS utilizza il driver ALSA Advanced Linux Sound Architecture , tra i più utilizzati per la gestione dell’audio sulle varie distribuzioni, interfacciandosi con esso attraverso il metodo IPC Inter-process communication secondo lo schema della figura qui sotto:

Architettura Merging Linux Kernel Module
Architettura Merging Linux Kernel Module

Per il test sul networking abbiamo utilizzato due monitor Genelec 8430A IP SAM che implementano il protocollo RAVENNA/AES67.

Genelec 8430a IP SAM
Genelec 8430a IP SAM

Installazione e configurazione

Una volta scaricato il software sorgente con il comando:

git clone https://bitbucket.org/MergingTechnologies/ravenna-alsa-lkm.git

Si può entrare nella cartella driver che contiene i file sorgenti in c da compilare:

cd ravenna-alsa-lkm/driver

Avviare la compilazione con il comando:

make

La compilazione produce due files. Il primo è il modulo per il kernel MergingRavennaALSA.ko (nella cartella driver) che, una volta inserito nel kernel renderà visibile il device Ravenna insieme alle altre interfacce audio.

L’altro componente creato è Merging_RAVENNA_Daemon, si trova nella cartella Butler ed è un demone che tra gli altri task comunica e configura il device software Ravenna del Kernel e gestisce la comunicazione attraverso il protocollo RAVENNA/AES67 con i device hardware che lo implementano.

Modulo del kernel: MergingRavennaALSA

Una volta ultimata la compilazione si può aggiungere al kernel il modulo appena creato con il comando:

sudo insmod MergingRavennaALSA.ko

In alternativa, per rendere l’inserimento del modulo automatico nella sequenza di boot eseguire i seguenti passi:

Copiare il modulo per il kernel nell’apposita librerie dei moduli del kernel dedicati all’audio con il comando:

sudo cp MergingRavennaALSA.ko /lib/modules/$(uname -r)/kernel/sound

Mettere il modulo da caricare nella sequenza di boot con il comando:

sudo vi /etc/modules

inserire la riga MergingRavennaALSA (senza l’estensione .ko) e salvare il file (con il comando ":wq")

Lanciare il comando depmod per rimappare i moduli del kernel:

sudo depmod

Ora il modulo sarà disponibile sempre subito dopo ogni avvio.

Demone: Merging_RAVENNA_Daemon

Prima di lanciare il demone che metterà effettivamente in comunicazione la RVS con i device hardware occorre modificare il file di configurazione merging_ravenna_daemon.conf del demone stesso all’interno della cartella Butler.

Nella configurazione di default i parametri sono i seguenti (ma ce ne sono disponibili altri, documentati qui).

  • interface_name=eth0 (interfaccia ethernet utilizzata dalla RVS. Per scoprire qual è quella attualmente utilizzata si può lanciare il comando sudo ifconfig)
  • web_app_port=9090 (porta su cui risponde l’interfaccia web della RVS)
  • tic_frame_size_at_1fs=256 (dimensione del frame. Per essere AES67-compliant mettere questo valore a 48)
  • config_pathname=/var/alsa-aes67-driver/butler.config (il file butler.config viene scritto dal demone, assicurarsi che la directory /var/alsa-aes67-driver/ esista, sennò crearla)

A questo punto si può lanciare il demone con il comando (se il file non è eseguibile, renderlo tale con il comando chmod u+x ./Merging_RAVENNA_Daemon):

./Merging_RAVENNA_Daemon

Lanciando il demone si instaura la comunicazione tra la Ravenna Virtual Soundcard e i dispositivi hardware presenti nella rete abilitati a intercettare il flusso audio.

Standard output del demone LKM
Standard output del demone LKM

In questo caso conviene far partire il demone a mano da shell e poi ucciderlo quando non serve più, anche perché in questo modo è possibile leggere i messaggi (non moltissimi, in verità) sullo stato delle connessioni (compresi i riferimenti SDP) che il demone invia sullo standard output:

A questo punto la RVS è attiva.

Interfaccia web

Aprendo un browser e inserendo l’indirizzo IP della macchina su cui gira il demone e la porta 9090 (se non si è modificato il parametro web_app_port) si accede all’interfaccia web della RVS che è identica a quella della versione per Mac (c’è un fastidioso bug che apre continuamente nuovi popup ma che si può facilmente tenere a bada con un anti-popup).

Interfaccia web RVS
Interfaccia web RVS

Dal tab Session sources, creare una nuova sorgente e verificare che tutte le impostazioni siano corrette.

Tab sources
Tab sources

A questo punto il device “RAVENNA” è presente nel nostro sistema e può essere utilizzato come interfaccia audio.

Test n. 1: da shell con il comando speaker-test

Come da istruzioni sul sito di merging il più semplice test da fare è da shell con l’utility speaker-test tramite il comando:

speaker-test -D plughw:RAVENNA -r 44100 -c 2

che genera un rumore rosa alternato tra Left e Right alla frequenza di campionamento indicata. In questo caso il software comunica direttamente con il driver ALSA, già in comunicazione con il driver RAVENNA.

Per ricevere questo flusso audio sui monitor Genelec 8430a occorre configurare Ravenna sulla loro interfaccia web, accessibile in vari modi tra cui il menu a tendina dell’interfaccia web aperta in precedenza.

Scelta del device RAVENNA
Scelta del device RAVENNA

Scegliendo la voce di menu della figura precedente accediamo all’elegante interfaccia web per la configurazione di Ravenna sui monitor Genelec (si noti in questo layout diverso dal precedente nella parte superiore la visualizzazione dei 3 device Ravenna attualmente attivi analoga al menu a tendina appena utilizzato).

Interfaccia web Ravenna su Genelec 8430a
Interfaccia web Ravenna su Genelec 8430a

Come si vede i monitor stanno già ricevendo il flusso audio impostato sulla RVS e denominato in questo caso ALSA (on workstation_8) e, appena impostato come flusso sorgente e canale, possiamo ascoltare il rumore rosa prodotto dall’applicazione speaker-test).

Il test si conclude positivamente.

Test n. 2: Da Desktop con Spotify

In questo secondo test utilizziamo un’applicazione desktop come Spotify e vediamo come impostare sul window manager Gnome la RVS. In questo caso l’audio passa attraverso uno strato intermedio costituito dal server audio Pulse, utilizzato dal window manager per gestire flussi audio multipli.

Appena il modulo MergingRavennaALSA viene inserito nel kernel, la RVS compare insieme agli altri device ALSA. Possiamo vederlo dall’applicazione Pulse Audio Panel Plugin che regola le interfacce disponibili e i volumi:

Interfaccia web Ravenna su Genelec 8430a
Interfaccia web Ravenna su Genelec 8430a

Aprendo l’audio mixer si può vedere il device RAVENNA assieme agli altri dispositivi audio:

La RVS ora compare tra i device audio
La RVS ora compare tra i device audio

Apriamo ora Spotify per Linux e il suo device di uscita sarà configurabile dal tab Riproduzione:

Spotify utilizza la RVS come dispositivo audio
Spotify utilizza la RVS come dispositivo audio

Tanto basta per ascoltare le nostre playlist preferite tramite Ravenna sui monitor Genelec.

Il test si conclude positivamente.

Test n.3. Con Jack + DAW

Dopo i due test precedenti, la prova del nove è con il server Jack Audio (al posto del server Pulse Audio), che è il server standard utilizzato in applicazioni audio professionali su Linux.

Configuriamo Jack audio utilizzando l’applicazione desktop QjackCtl e impostiamo anche per esso il device RAVENNA:

Impostazione di RVS sul server Jack
Impostazione di RVS sul server Jack

Avviamo Jack audio e… purtroppo rileviamo il seguente messaggio di errore:

creating alsa driver ... 
hw:RAVENNA|-|256|7|44100|0|8|nomon|swmeter|-|32bit
Using ALSA driver snd_merging_rav running on card 0 - Merging RAVENNA
configuring for 44100Hz, period = 256 frames (5.8 ms), buffer = 7 periods
ERROR: ALSA: mmap-based access is not possible for the playback 
stream of this audio interface
ERROR: ALSA: cannot configure playback channel
Released audio card Audio0
ERROR: Cannot initialize driver
ERROR: JackServer::Open failed with -1
ERROR: Failed to open server

Sembra che il problema risieda nell’utilizzo della funzionalità MMAP (memory mapped) (sul forum degli utenti si può seguire la discussione)

Il test di questa funzionalità si conclude purtroppo negativamente.

Conclusioni

La Ravenna Virtual Soundcard per Linux by Merging è appena uscita, ed è già un piccolo miracolo averla a disposizione (anche se oltre al limite emerso nel test n.3 ha anche qualche altro bug minore) per le attività audio più comuni. Ma siamo sicuri che a breve Merging rilascerà un aggiornamento che consentirà di utilizzare la RVS anche passando attraverso il server Jack e aprendo così definivamente Linux all’audio networking. Finalmente!

Links utili


RAVENNA
www.ravenna-network.com/using-ravenna/overview/

MERGING TECHNOLOGIES
https://www.merging.com/products/alsa_ravenna_aes67_driver ALSA RAVENNA AES67 Linux Driver by Merging Technologies: https://www.merging.com/products/alsa_ravenna_aes67_driver
Documentazione Merging Linux Kernel Module: bitbucket.org/MergingTechnologies/ravenna-alsa-lkm/
Forum Merging Linux Kernel Module: forum.merging.com/viewforum.php?f=73&sid=f35b2d402ce8ea0b37146b699f83f996

GENELEC
8430a IP SAM: www.genelec.com/studio-monitors/sam-studio-monitors/8430a-ip-sam-studio-monitor
Distribuite in Italia da: MidiWare midiware.com/

LINUX
AV Linux Distribution: www.bandshed.net/avlinux/
ALSA: www.alsa-project.org/main/index.php/Main_Page / www.ti.com/lit/an/sprac10/sprac10.pdf

Audio server
Pulse audio server: www.freedesktop.org/wiki/Software/PulseAudio/
Jack audio server: http://www.jackaudio.org/

Digital Audio Workstation
Ardour www.jackaudio.org/
Harrison Mixbus harrisonconsoles.com/site/mixbus.html





curve 

Ultimi commenti

curve 

Ultimi articoli

curve 

Post più visti