#Cross Posting ChucK, un linguaggio di programmazione per la creazione e la manipolazione del suono. #cross


Gabriele Battaglia
 

Buongiorno.
Il messaggio che segue è un po tecnico.
Chi non sa l'inglese, non è interessato alla programmazione e al mondo dell'audio, può risparmiare tempo cancellando.

Agli altri vorrei raccontare/condividere, una scoperta che ho fatto recentemente e che mi sta letteralmente entusiasmando.
Ci sono su da una decina di giorni e mi occupa piacevolmente quasi tutto il tempo libero.

Ho scoperto, grazie alla lista internazionale di REAPER, un linguaggio di programmazione specificatamente creato per manipolare il suono sul computer. Con manipolarlo intendo: crearlo da 0, e farci qualsiasi cosa. Il linguaggio e rivolto in particolare ai musicisti e presenta tutta una serie di funzioni per giocare con note, scale, accordi.
Inutile dire che è previsto un pieno supporto al midi, sia in e out, e si possono programmare da 0 dei piloti per qualsiasi dispositivo midi esterno. Vi è anche un sistema facilitato per la gestione di altre periferiche come mouse e tastiera, da usare eventualmente come controller per manipolare il suono in tempo reale. Tutto il sistema sarebbe infatti strutturato in maniera da garantire performance on stage: cioè dopo essersi creati strumenti, partiture, effetti eccetera, portando il computer sul palco è possibile intervenire live e modificare al volo ed in base al proprio senso artistico, la propria performance.

Il linguaggio è di una potenza straordinaria ed ha gli unici limiti imposti dall'hardware della macchina su cui lo fate girare.

Tanto per mostrare un piccolissimo esempio, diciamo l'hello world in ChucK, ecco come si crea un oscillatore sinusoidale.

SinOsc s => dac;

Si richiama SinOsc, che è una parola riservata, esistono anche TriOsc per quello ad onda triangolare, SqrOsc per la quadra, SawOsc per la dente di sega e molti altri; lo si assegna alla variable s e con l'operatore speciale => lo si assegna al dac, digital audio converter, in pratica le casse del pc.
Ora bisogna assegnargli un volume, di default sarà ad 1, valore massimo. Per farlo si assegna 0.3 al metodo gain di s, il nostro sintetizzatore, con l'istruzione:

0.3 => s.gain;

E gli diamo anche una frequenza:

440.0 => s.freq;

Per farlo suonare poi, è necessario far avanzare il tempo di esecuzione:

2::second => Now;

ChucK è fortemente tipizzato e prevede, cosa praticamente unica nei programming languages, un meccanismo per la temporizzazione. Sono inoltre previste funzioni, classi, oggetti e multithreads con sincronizzazione e gestione della segnaletica fra thread tutta gestita internamente.

Il progetto è nato alla Standford University nel 2001 e continua ad essere sviluppato ancora oggi arrivando alla versione 1.4.0.1. Può essere gestito interamente da riga di comando oppure da un IDE dedicato che si chiama MiniAudicle, perfettamente accessibile sotto MacOS, non accessibile sotto Windows. Ma Mini Audicle non è necessario, il prompt dei comandi ed un qualsiasi editor di testi sono assolutamente sufficiente per fare tutto.

Esiste un manuale utente liberamente scaricabile, un corso universitario per impararlo ed anche un preziosissimo libro, "Programming for Musicians and Digital Artists", dal costo di circa 35$ per approfondirne i concetti più avanzati.
Ci sono anche dei video su Youtube che lo dimostrano e lo spiegano.
ChucK è divenuto negli anni uno strumento didattico adottato in molte università di tutto il mondo per l'insegnamento delle tecniche per la creazione del suono sintetico. Molti compositori lo utilizzano per la gestione e la creazione di effetti sonori nei videogiochi e nella produzione di video commerciali.

Io mi ci sto divertendo moltissimo.

Grazie per avermi letto e, se vorrete, buon divertimento.

Gabry.


Andrea Dessolis
 

Ciao Gabri,
bello! Molto interessante, soprattutto per chi appassionato e interessato a questo tipo di programmazione e di creazione di suoni sintetici.
Condividici qualcosa realizzato da te, non sarebbe male un mini tutorial in Italiano. 😂
Magari qualcuno in lista potrebbe essere interessato. Saludos!

Andrea Dessolis

CONTATTI:
Mail: dessolisandrea@...
Mail: dessolisandrearock@...
Skype: andrea.dessolis

*****


Da: Gabriele Battaglia via groups.io
Inviata: venerdì 18 giugno 2021, 10:26
A: Lista di discussione sullo screen reader NVDA; reaperitalia@groups.io, universal-access@groups.io, gap4b@groups.io, c4b@groups.io
Oggetto: [nvda-it] #Cross Posting ChucK, un linguaggio di programmazione per la creazione e la manipolazione del suono.

Buongiorno.
Il messaggio che segue è un po tecnico.
Chi non sa l'inglese, non è interessato alla programmazione e al mondo dell'audio, può risparmiare tempo cancellando.

Agli altri vorrei raccontare/condividere, una scoperta che ho fatto recentemente e che mi sta letteralmente entusiasmando.
Ci sono su da una decina di giorni e mi occupa piacevolmente quasi tutto il tempo libero.

Ho scoperto, grazie alla lista internazionale di REAPER, un linguaggio di programmazione specificatamente creato per manipolare il suono sul computer. Con manipolarlo intendo: crearlo da 0, e farci qualsiasi cosa. Il linguaggio e rivolto in particolare ai musicisti e presenta tutta una serie di funzioni per giocare con note, scale, accordi.
Inutile dire che è previsto un pieno supporto al midi, sia in e out, e si possono programmare da 0 dei piloti per qualsiasi dispositivo midi esterno. Vi è anche un sistema facilitato per la gestione di altre periferiche come mouse e tastiera, da usare eventualmente come controller per manipolare il suono in tempo reale. Tutto il sistema sarebbe infatti strutturato in maniera da garantire performance on stage: cioè dopo essersi creati strumenti, partiture, effetti eccetera, portando il computer sul palco è possibile intervenire live e modificare al volo ed in base al proprio senso artistico, la propria performance.

Il linguaggio è di una potenza straordinaria ed ha gli unici limiti imposti dall'hardware della macchina su cui lo fate girare.

Tanto per mostrare un piccolissimo esempio, diciamo l'hello world in ChucK, ecco come si crea un oscillatore sinusoidale.

SinOsc s => dac;

Si richiama SinOsc, che è una parola riservata, esistono anche TriOsc per quello ad onda triangolare, SqrOsc per la quadra, SawOsc per la dente di sega e molti altri; lo si assegna alla variable s e con l'operatore speciale => lo si assegna al dac, digital audio converter, in pratica le casse del pc.
Ora bisogna assegnargli un volume, di default sarà ad 1, valore massimo. Per farlo si assegna 0.3 al metodo gain di s, il nostro sintetizzatore, con l'istruzione:

0.3 => s.gain;

E gli diamo anche una frequenza:

440.0 => s.freq;

Per farlo suonare poi, è necessario far avanzare il tempo di esecuzione:

2::second => Now;

ChucK è fortemente tipizzato e prevede, cosa praticamente unica nei programming languages, un meccanismo per la temporizzazione. Sono inoltre previste funzioni, classi, oggetti e multithreads con sincronizzazione e gestione della segnaletica fra thread tutta gestita internamente.

Il progetto è nato alla Standford University nel 2001 e continua ad essere sviluppato ancora oggi arrivando alla versione 1.4.0.1. Può essere gestito interamente da riga di comando oppure da un IDE dedicato che si chiama MiniAudicle, perfettamente accessibile sotto MacOS, non accessibile sotto Windows. Ma Mini Audicle non è necessario, il prompt dei comandi ed un qualsiasi editor di testi sono assolutamente sufficiente per fare tutto.

Esiste un manuale utente liberamente scaricabile, un corso universitario per impararlo ed anche un preziosissimo libro, "Programming for Musicians and Digital Artists", dal costo di circa 35$ per approfondirne i concetti più avanzati.
Ci sono anche dei video su Youtube che lo dimostrano e lo spiegano.
ChucK è divenuto negli anni uno strumento didattico adottato in molte università di tutto il mondo per l'insegnamento delle tecniche per la creazione del suono sintetico. Molti compositori lo utilizzano per la gestione e la creazione di effetti sonori nei videogiochi e nella produzione di video commerciali.

Io mi ci sto divertendo moltissimo.

Grazie per avermi letto e, se vorrete, buon divertimento.

Gabry.






Alberto Buffolino
 

Gabriele Battaglia via groups.io, il 18/06/2021 10.26, ha scritto:
Tanto per mostrare un piccolissimo esempio, diciamo l'hello world in ChucK, ecco come si crea un oscillatore sinusoidale.
Alberto:
Ciao Gabry,
sembra davvero una figata assurda!
Peccato che mi manchino totalmente le basi, su frequenze, oscillatori, sintetizzatori etc... 😭
Non è che avresti un buon punto di riferimento in proposito, preferibilmente scritto e in italiano?
Alberto


Gabriele Battaglia
 

Reply to the Alberto Buffolino's message, wrote on 18/06/2021 at 16:04:
Ciao Alberto.
In privato ti mando il mio quaderno sui sintetizzatori. E' appena nato, quindi ancora molto molto vuoto di contenuti comunque può rappresentare un piccolo kick off.

Ti assicuro, ma non sono per niente imparziale, che è davvero una figata assurdissima. Per non scrivere un pippone sono stato volutamente conciso, nel mio messaggio, e non ho nominato una marea di cose meravigliose. Ad esempio, ci sono strumenti già pronti inclusi in ChucK, ci sono dei suoni ottenuti con la tecnica del Phisical modelling, cioè imitando con delle equazioni, il movimento e la forma reale delle onde emesse da strumenti e oggetti in natura.
C'è poi tutta una sezione per l'analisi del suono in ingresso, che fornisce un report in testo sui parametri di ciò che ascolta il microfono o che è scritto in un file audio.
Hai un controllo pieno sui processi in esecuzione: lanci una VM e poi, da un secondo terminale puoi avviare un numero pressochè infinito di altri processi che possono dialogare fra loro, sincronizzarsi o meno, chiamarsi ed uccidersi vicendevolmente.

Ti scrivo in pvt.
Ciao.