Abilitare la registrazione audio.
Prima di tutto affrontiamo la questione della sicurezza. OpenBSD, noto per le sue robuste misure di sicurezza, ha la registrazione del microfono disabilitata di default. Questo blocco è appositamente voluto per proteggere la tua privacy, se hai bisogno di effettuare una registrazione audio, potrai rimuoverlo, temporaneamente o in maniera permanente. Per farlo hai bisogno di avere i permessi di amministratore della macchina e del comando sysctl (1), che permette di modificare i parametri di funzionamento del kernel. Nel caso specifico dovrai impostare a True (1) il parametro kern.audio.record.
arcadia$ doas sysctl kern.audio.record=1
kern.audio.record=0 -> 1
Sappi comunque che, al reboot della macchina, OpenBSD ritorna nuovamente alle impostazioni di default, per cui se hai intenzione di rendere permanente la configurazione dovrai inserirla –con un qualsiasi editor di testo– *anche* nel file di configurazione di sysctl (/etc/sysctl.conf)
arcadia$ cat /etc/sysctl.conf | grep kern.audio.record
kern.audio.record=1
Per verificare se sei abilitato o meno alla registrazione audio, puoi sempre eseguire il comando sysctl specificando il parametro da verificare.
arcadia$ doas sysctl kern.audio.record
kern.audio.record=1
La scheda audio
E’ buona cosa verificare se OpenBSD ha identificato la tua scheda audio, e se è riuscito ad associare all’hardware uno dei drive disponibili per supportarlo. Quindi esegui il comando dmesg(1) per ricercare “audio” nei messaggi generati dal kernel nella fase di bootstrap.
Sto utilizzando un Lenovo ThinkPad, e nel mio caso appare questo :
arcadia$ dmesg | grep audio
audio0 at azalia0
arcadia$ dmesg | azalia0
azalia0 at pci0 dev 31 function 3 "Intel 100 Series HD Audio" rev 0x21: msi
azalia0: codecs: Realtek ALC298, Intel/0x2809, using Realtek ALC298
Audio/MIDI Server sndiod
sndiod è un server audio integrato e scritto per OpenBSD, di cui esiste un port per altri sistemi operativi UNIX e Unix-like, ad esempio: FreeBSD e NedBSD (come port) e GNU/Linux. Per alcune distribuzioni GNU/Linux come Debian GNU/Linux, ArchLinux, Gentoo e Ubuntu è presente nel repository ufficiali.
La funzione di un server audio è quella di fare da tramite tra un’applicazione (ad esempio aucat, ffmpeg o firefox) e l’hardware audio. Se più applicazioni possono generare suoni anche contemporaneamente è grazie ai server audio. Ogni applicazione deve essere predisposta ad interfacciarsi ad uno specifico server audio.
arcadia$ ps aux | grep sndiod
_sndiop 86217 0.0 0.0 9068 1028 ?? IpU 7:06PM 0:00.03 sndiod: helper (sndiod)
_sndio 53302 0.0 0.0 9588 2156 ?? I<pc 7:06PM 0:16.76 /snd/bin/sndiod -s default -m play,mon -s mon
Regolare il Volume
sndiod è corredato di un comando utente per visualizzare e modificare i sui parametri di funzionamento, quetso è sndioctl. Per avere una lista dei parametri basterà eseguire il comando senza specificare nulla altro.
arcadia$ sndioctl
input.level=0.494
input.mute=0
output.level=0.494
output.mute=0
server.device=0(azalia0)
app/aucat.level=1.000
app/sndfilepla.level=1.000
I livelli dei volumi possono variare nel range che va da 0 a 1. Il volume generale di output è attualmente impostato ad una via di mezzo tra 0 ed 1, al valore 0.494. Per alzarlo al massimo dovrò impostare output.level ad 1, oppure un pelino sotto per avere un suono piu pulito
arcadia$ sndioctl output.level=0.980
output.level=0.980
Ripetendo nuovamente la verifica precedente, otterrò il nuovo valore, ed un volume di riproduzione audio quasi al massimo.
arcadia$ sndioctl
input.level=0.494
input.mute=0
output.level=0.980
output.mute=0
server.device=0(azalia0)
app/aucat.level=1.000
app/sndfilepla.level=1.000
Registrazione di un audio
Per registrare un audio sarà necessario collegare un microfono al computer. Il mio computer ha un’unico connettore I/O adatto sia per microfono che per le cuffie. E’ possibile collegare anche un microfono usb, ma personalmente non ho ancora provato, da quel che dicono sembra funzionare perfettamente.
Per avviare la riproduzione o la registrazione di un audio non è necessario installare alcun software perchè OpenBSD include l’ottimo aucat che permette di svolgere entrambe le funzionalità, pur supportando solamente il formato wav, se si necessita di dover utilizzare anche altri formati ed avere una suite estesa di comandi per la loro gestione, è necessario installare almeno ffmpeg e opzionalmente libsndfile
L’installazione di questi due software è quindi Opzionale, ma consigliato. L’installazione l’ho eseguita col comando pkg_add(1)
arcadia$ doas pkg_add ffmpeg
quirks-7.147 signed on 2025-10-10T23:15:26Z
ffmpeg-6.1.3p0v1: ok
New and changed readme(s):
/usr/local/share/doc/pkg-readmes/ffmpeg
arcadia$ doas pkg_add libsndfile
libsndfile-1.2.2p0: ok
Per avviare la registrazione audio con il comando aucat (^C per interromperla)
arcadia$ aucat -f snd/0 \
-o output/mic-aucat.wav
Per avviare la registrazione audio con il comando ffmpeg (^C per interromperla)
arcadia$ ffmpeg -f sndio \
-i snd/0 \
output/mic-ffmpeg.wav
Il formato del comando, sia con l’uno che con l’altro è quasi identico, va specificato il dispositivo (snd/0) ed il nome del file di output. Entrambi i comandi considerano l’estensione utilizzata sull’output per determinare il formato del file da produrre.
Il risultato è pressocchè identico, idem per il formato del comando.
Riprodurre un file audio
Per riprodurre il file audio appena prodotti possiamo, come precedentemente detto, utilizzare il comando aucat, sndfile-play (di libsndfile) o ffplay (di ffmpeg).
arcadia$ aucat -i output/mic-aucat.wav
arcadia$ sndfile-play output/mic-aucat.wav
arcadia$ ffplay output/mic-aucat.wav
Utility libsndfile
Il pacchetto libsndfile, include una e vera suite di strumenti utili per la gestione dei formati audio, di seguito la lista dei vari comandi disponibili :
| Comando | Descrizione |
|---|---|
| sndfile-cmp | Comparazione di 2 o file audio |
| sndfile-concat | Concatena 2 o piu’ file audio |
| sndfile-convert | Converte un file audio da un formato ad un altro |
| sndfile-deinterleave | Separa un file audio in piu’ file audio |
| sndfile-info | Restituisce le informazioni di un file audio |
| sndfile-interleave | Accorta 2 o file file audio in un’unico risultato |
| sndfile-metadata-get | Restituisce i metadati di un file audio |
| sndfile-metadata-set | Valorizza i metadati di un file di audio |
| sndfile-play | Riproduce un file audio |
| sndfile-salvage | Se un file audio WAV è superiore ai 4G corregge l’header |
Vediamoli, velocemente tutti.
Comparazione di file audio
Visto che abbiamo 2 registrazioni di prova, una eseguita con aucat e l’altra con ffmpeg, proviamo a compararle, per provare il comando sndfile-comp. Probabilmente il programma di ferma alla prima differenza che trova, ed informa che i 2 file son differenti.
arcadia$ sndfile-cmp output/mic-aucat.wav output/mic-ffmpeg.wav
sndfile-cmp: PCM data of files bin/output/mic-aucat.wav and bin/output/mic-ffmpeg.wav differ (at frame offset 0)
Conversione di formati audio
Il comando sndfile-convert stabilisce il formato target dall’estensione specificata nel file di output (-o). Supporta i seguenti formati :
| estensione | formato |
|---|---|
| wav | WAV (Microsoft *merda*) |
| aif | AIFF (Apple/SGI) |
| au | AU (Sun/NeXT) |
| snd | AU (Sun/NeXT) |
| raw | RAW (header-less) |
| gsm | RAW (header-less) |
| vox | RAW (header-less) |
| paf | PAF (Ensoniq PARIS, big-endian) |
| fap | PAF (Ensoniq PARIS, little-endian) |
| svx | IFF (Amiga IFF/SVX8/SV16) |
| nist | SPHERE (NIST SPeech HEader Resources) |
| sph | SPHERE (NIST SPeech HEader Resources) |
| voc | VOC (Creative Labs) |
| ircam | SF (Berkeley/IRCAM/CARL) |
| sf | SF (Berkeley/IRCAM/CARL) |
| w64 | W64 (SoundFoundry WAVE 64) |
| mat | MAT4 (GNU Octave 2.0 / Matlab 4.2) |
| mat4 | MAT4 (GNU Octave 2.0 / Matlab 4.2) |
| mat5 | MAT4 (GNU Octave 2.1 / Matlab 5.0) |
| pvf | PVF (Portable Voice Format) |
| xi | XI (FastTracker 2) |
| htk | HTK (HMM Tool Kit) |
| sds | SDS (Midi Sample Dump Standard) |
| avr | AVR (Audio Visual Research) |
| wavex | WAVEX (MS WAVE with WAVEFORMATEX) |
| sd2 | SD2 (Sound Designer II) |
| flac | FLAC (FLAC Lossless Andio Codec) |
| caf | CAF (Apple Core Audio File) |
| wve | WVE (Psion Series 3) |
| prc | WVE (Psion Series 3) |
| ogg | OGG (OGG Container format) |
| oga | OGG (OGG Container format) |
| mpc | MPC (Akai MPC 2k) |
| rf64 | RF64 (RIFF 64) |
Proviamo a convertire le precedenti 2 registrazioni dal formato WAV (non compresso) al formato OGG (formato compresso)
arcadia$ sndfile-convert output/mic-aucat.wav output/mic-aucat.ogg
arcadia$ sndfile-convert output/mic-ffmpeg.wav output/mic-ffmpeg.ogg
Entrambi le conversioni vengono eseguite, ed i file nel formato OGG prodotti, come si può notare hanno una dimensione ridotta, essendo come detto compressi perdendo informazioni. Non posso scendere nel dettaglio perchè non conosco la specifica di questo formato, anche se molto amato nella comunità del software libero. Poi, non chiedetemi perchè il livello di riduzione è differente tra le due conversioni : – |
arcadia$ ls -ltr output/mic-aucat.*
-rw-r--r-- 1 jack0e jack0e 1353668 Apr 19 23:42 output/mic-aucat.wav
-rw-r--r-- 1 jack0e jack0e 66532 Apr 19 23:43 output/mic-aucat.ogg
arcadia$ ls -ltr output/mic-ffmpeg.*
-rw-r--r-- 1 jack0e jack0e 1125198 Apr 19 23:42 output/mic-ffmpeg.wav
-rw-r--r-- 1 jack0e jack0e 80953 Apr 19 23:43 output/mic-ffmpeg.ogg
Personalmente non noto differenze nell’ascolto tra l’originale WAV ed il corrispondente audio compresso (OGG). Sicuramente in altri contesti e con orecchi attenti qualcuno noterà delle differenze. Diciamo che li dove si tratta di registrazioni ambientali per memorizzare appunti e non musica classica tra esperti, conviene usare il formato ogg, a quello wav, più che altro per salvaguardare spazio prezioso del disco, infatti con OGG avremo una riduzione significativa nettamente al di sopra del 90%.
Concatenazione di file audio
Con il comando sndfile-concat possiamo concatenare 2 o più file audio, la sequenza nel file di output è stabilita dall’ordine impostato nel comando stesso. Proviamo ad esempio a concatenare le due registrazioni fatte in precedenza nel formato OGG.
arcadia$ sndfile-concat output/mic-aucat.ogg output/mic-ffmpeg.ogg mic-aucat+ffmpeg.ogg
Il file concatenato dei 2 ogg (mic-aucat.ogg e mic-ffmpeg) viene eseguito, ed il file di output –concatenazione dei due– prodotto (mic-aucat+ffmpeg.ogg). La dimensione di quest’ultimo occhio e croce è proprio la somma delle singole dimensioni dei file da concatenare.
arcadia$ la -ltr output/*.ogg
-rw-r--r-- 1 jack0e jack0e 66532 Apr 19 23:43 output/mic-aucat.ogg
-rw-r--r-- 1 jack0e jack0e 80953 Apr 19 23:43 output/mic-ffmpeg.ogg
-rw-r--r-- 1 jack0e jack0e 143293 Apr 19 00:25 output/mic-aucat+ffmpeg.ogg
Come contro prova, ho eseguito nuovamente il comando, fornendo i file sorgente in ordine inverso, ed ha funzionato come previsto. Allego entrambe le concatenazioni
Leggere le info di un file audio
Il comando sndfile-info, estrae e ci restituisce tutte le informazioni recuperabili su uno specifico file audio. Potrebbe essere una buona occasione per visionare le caratteristiche di un certo formato per ulteriori approfondimenti futuri, oppure per capire la differenza tra un formato come il WAV e l’OGG –compresso–. Ho pensato quindi provare ad estrapolare le info di una medesima registrazione (ad esempio mic-aucat) sia nel formato originale WAV e sia in quello convertito OGG.
WAV Info
arcadia$ sndfile-info output/mic-aucat.wav
=================================================
File : output/mic-aucat.wav
Lenght : 1353668
RIFF : 1353656
WAVE
fmt : 40
Format : 0xFFFE => WAVE_FORMAT_EXTENSIBLE
Channels : 2
Sample Rate : 48000
Block Aligh : 6
Bit Width : 24
Bytes/sec : 288000
Valid Bits : 24
Channel Mask : 0x0 (should not be zero)
Subformat
esf_field1 : 0x1
esf_field2 : 0x0
esf_field3 : 0x10
esf_field4 : 0x80 0x0 0x0 0xAA 0x0 0x38 0x9B 0x71
format : pcm
data : 1353600
End
**** All non-PCM format files should have a 'fact' chunk.
-----------------------------------------
Sample Rate : 48000
Frames : 225600
Channels : 2
Format : 0x00130003
Sections : 1
Seekable : TRUE
Duration : 00:00:04.700
Signal Max : 8.38861e+06 (0.00 dB)
OGG Info
arcadia$ sndfile-info output/mic-aucat.ogg
=================================================
File : output/mic-aucat.wav
Lenght : 66532
Ogg stream data : Vorbis
Stream serialno : 2034277668
Vorbis library version : Xiph.Org libVorbis 1.3.7
Bitstream is 2 channel, 48000 Hz
Encoded by : Xiph.Org libVorbis I 20200704 (Reducing Environment)
PCM offset : 0
PCM end : 225600
End
-----------------------------------------
Sample Rate : 48000
Frames : 225600
Channels : 2
Format : 0x00200060
Sections : 1
Seekable : TRUE
Duration : 00:00:04.700
Signal Max : 1.02394 (0.21 dB)
Mi fermo qui, altrimenti si rischio di andare oltre lo scopo che aveva questo appunto, e cioè una panoramica generale sul sistema di gestione dell’audio in OpenBSD (7.8). Si approfondirà in altro contesto, e se ne avremo l’esigenza. : – )
Leggere e Scrivere i Metadati di un file audio
I formati audio, possono prevedere al proprio interno un’area in cui son previsti dei metadati, che le applicazione (o l’utente stesso) può utilizzare per memorizzare alcune informazioni, come l’autore, il titolo, una descrizione, licenza etc., utili ad esempio per eseguire ricerche o selezioni. La libsndfile prevede a tal proposito 2 comandi : sndfile-metadata-get ed sndfile-set, il primo per leggerli ed il secondo per impostarli. Proviamo ad usarli con i nostri audio: wav ed ogg. Il risultato è identico, sia analizzando il file wav prodotto da aucat, sia quello -sempre wav- prodotto da ffmpeg. Idem per le confersioni ogg, generate da sndfile-conv. La lista dei metadati è identica e nessun metadato è impostato.
arcadia$ sdnfile-metadata-get output/rec-aucat.wav
Description :
Originator :
Originator ref :
UMID :
Origination date :
Origination time :
Loudness value : 0.00
Loudness range : 0.00
Max. true peak level : 0.00
Max. momentary level : 0.00
Max. short term level : 0.00
Coding history :
Name :
Copyright :
Artist :
Comment :
Create date :
Album :
License :
Provo ad impostare qualche metadato sul wav
arcadia$ sndfile-metadata-set --str-copyright "(C)opyleft 2026 - info @ granito . org . uk" output/mic-aucat.wav
arcadia$ sndfile-metadata-set --str-license "Creative Common License 2.0" output/mic-aucat.wav
arcadia$ sndfile-metadata-set --str-comment "Registrazione audio di test, con OpenBSD/aucat" output/mic-aucat.wav
Ripetendo il comando di lettura dei metadati, sto notando che che la licenza non risulta impostata. Non so se è un bug del comando sndfile-metadata-get|set, oppure il formato wav non prevede tale metadato. Sono più propenso che sia un piccolo bug di libsndfile, segnalerò ad Erik (Erik de Castro Lopo)
arcadia$ sndfile-metadata-get output/rec-aucat.wav
Description :
Originator :
Originator ref :
UMID :
Origination date :
Origination time :
Loudness value : 0.00
Loudness range : 0.00
Max. true peak level : 0.00
Max. momentary level : 0.00
Max. short term level : 0.00
Coding history :
Name :
Copyright : (C)opyleft 2026 - info @ granito . org . uk
Artist :
Comment : Registrazione audio di test, con OpenBSD/aucat
Create date :
Album :
License :
Ripetendo il medesimo test sul corrispondente formato .ogg, ottengo l’errore dalla sndfile-metadata-set, che per questo formato non esistono tali metadati, anche se la sndfile-metadata-get in maniera equivoca li fornisce.
Suonare un file audio
Del comando sndfile-play ne abbiamo già parlato precedentemente.
Interleave e Deinterleave di file audio
__DA_COMPLETARE__
Salvage di un file audio
Il comando sndfile-salvage è semplicemente un fix per correggere file audio di dimensione superiuore i 4Gb. In particolare corregge l’header del file, che alcuni software di produzione scrivono male, rendendoli non utilizzabili. Non avendoci file audio di dimensione superiore ai 4Gb, preferisco fermarmi qui, al momento.
Riferimenti Utili.
OpenBSD Songs | Succede –non sempre– che ad una versione di OpenBSD venga prodotta una canzone, da musicisti che utilizzano questo meraviglio sistema operativo.
Top Ten Song OpenBSD | Le canzoni più apprezzate per OpenBSD.
https://sndio.org | homepage del progetto, dove trovare sorgenti impacchettati, una descrizione di tale software e la documentazione prodotta quando fu presentato la prima volta alla comunità, ad una delle conferenze annuali, dedicate ai sistemi BSD.
https://en.wikipedia.org/wiki/Sndio | pagina wikipedia (EN) dedicata ad sndio.
ffmpeg | Fronend a linea di comando per la Gestione formati audio – homepage di progetto.
libsndfile | Libreria C + collezione comandi per Gestione formati audio (GNU GPL)