un vu-meter con le gtk e pthreads

Ecco un piccolo programmino in C che, usando le librerie GTK e pthread, visualizza un piccolo vu-meter.
Nulla di eccezionale e senza pretese, l’ho scritto per provare ad utilizzare le GTK.
Per compilarlo, una volta installate le dipendenze per sviluppare con gtk,

gcc -o vumeter  vumeter.c `pkg-config --libs --cflags gtk+-2.0 gthread-2.0`



I campioni audio vengono prelevati dallo standard input, per cui va lanciato in questo modo:

arecord -f S16_LE  -t raw -r 16000 | ./vumeter

Funziona in questo modo:
il thread principale crea una drawing area, la funzione di paint della drawing area disegna il vu-meter (nella funzione “expose_event” ).
Inoltre fa in modo che le GTK chiamino la funzione di paint del vu-meter periodicamente.
Il thread secondario si occupa di prelevare i campioni audio dallo standard input e di generare il valore medio, aggiornando la variabile globale “level”
Un bottone “QUIT”, chiude l’applicazione.
Qui trovate il sorgente.