Michele Liberi software

versione 1.03, 1 settembre 2022

Michele Liberi
mail: mliberi@gmail.com
cell: 3485211456

liberix

amelody, sintetizzatore di suoni

Richiamato da plisten o altro port listener, amelody (ALSA melody) riceve dal client i comandi da eseguire. La porta di default è la 6001.

amelody è stato espressamente concepito per permettere ad una applicazione X di generare dei suoni usando la scheda audio. Il server X infatti gestisce lo schermo, la tastiera, il mouse, ma non è in grado di generare suoni se non tramite il cicalino della tastiera, dispositivo che in molti computer moderni non è più presente. In questi casi il cicalino viene emulato via software con risultati pessimi.

Poiché utilizza le librerie ALSA per pilotare la scheda audio, amelody non è disponibile per tutti i sistemi operativi.

La creazione di questo componente come servizio TCP è stata una scelta praticamente obbligata. Infatti il protocollo X prevede che il client (il programma che gestisce la logica applicativa) si connetta al server (il programma che gestisce i dispositivi di input/output) via TCP sulla porta 6000. Un client che voglia generare anche dei suoni non deve far altro che connettersi allo stesso server sulla porta 6001, dove c'è in ascolto amelody, ed inviare dei comandi. Questo avviene usando la stessa variabile d'ambiente DISPLAY utilizzata per connettersi al server X.

L'accesso al servizio è disponibile tramite un insieme di funzioni di libreria (C API). Nulla vieta tuttavia di richiamare amelody direttamente da linea di comandi e impartire comandi direttamente da tastiera, o da un file. In questo modo una shell script (o qualunque altro programma) può generare dei suoni.

amelody è in grado di sintetizzare suoni con diversi timbri inviando alla scheda audio una delle seguenti forme d'onda, selezionabili con il comando W:

L'ampiezza massima delle onde sintetizzate, che corrisponde al volume del suono generato, può essere regolata con il comando V.

Tutti i suoni generati hanno una durata che può essere di volta in volta specificata esplicitamente. In caso contrario verrà usata una durata predefinita che si può impostare con il comando D.

Con il comando S è possibile generare un suono ad una data frequenza.

Con il comando N è possibile generare una nota, data un'ottava (da 1 a 7), la nota (da 1 a 12).

Con il comando M è possibile generare una melodia, cioè una sequenza concatenata di note. La melodia viene descritta da una stringa, che viene interpretata con le seguenti regole:

Esempio: MmRmRm-i+rd-ll

L'ultima melodia suonata può essere ripetuta con il comando R.

Con il comando C è possibile generare un suono con frequenza che varia linearmente da un minimo ad un massimo.