venerdì 2 ottobre 2009

ChucK 1 - Hello Wolrd!

Con questo post iniziamo la vera e propria programmazione con ChucK.

Avviamo il server jack aprendo il programma JACK Control (Applicazioni > Audio e Video > JACK Control) e premendo il pulsante start.

Apriamo un terminale e con un editor scriviamo queste righe di codice:

SinOsc neum => dac;
440 => neum.freq;
4::second => now;

salviamo il file col nome di helloworld.ck, apriamo un'altro terminale ed eseguiamo il file digitando

chuck helloworld.ck

quella che sentiamo è un'onda sinusoidale con frequenza di 440 hz della durata di 4 secondi.

Cosa abbiamo fatto nel dettaglio?

nella prima riga del codice abbiamo creato un'istanza della UGen SinOsc, connettendola all'altra UGen dac, che è l'astrazione dell'uscita audio. Le UGens, cioè unit generator sono dei moduli che processano l'audio. La UGen SinOsc produce onde sinusoidali e nella prima riga di codice ne abbiamo creata una, assegnando l'istanza alla variabile di riferimento neum.

Le due UGen sono state connesse con il chuck operator =>, cioè l'operatore di connessione di chuck che troveremo letteralmente infinite volte.

Ogni UGen ha dei parametri di controllo che le sono propri e che vengono settati sempre attraverso l'operatore =>.

La riga

440 => neum.freq

ci dice che la frequenza dell'istanza di SinOsc neum è settata a 400 cicli al secondo.

Se avessimo voluto settare il guadagno dell'oscillatore a 0.5 avremmo potuto scrivere

.5 => neum.gain

La terza e ultima riga del codice, molto espressiva, ci dice che l'oscillatore verrà messo in azione per 4 secondi a partire da ora (now), cioè dal momento in cui eseguiremo il codice. Torneremo in seguito sulla parola chiave now.

Ma cosa avviene nel momento in cui invochiamo nel terminale il comando chuck per eseguire il nostro file?

In sostanza avviamo il compilatore e la Virtual Machine, che permetterà al codice compilato di essere eseguito e di processare concretamente l'audio. La VM rimane attiva per il tempo necessario all'esecuzione del programma, alla fine del quale si disattiverà automaticamente a meno di non aver ricevuto l'ordine di rimanere attiva, ma questo è argomento che tratteremo in seguito.

Prima di concludere questo post dirò che, come nello stile di C e C++, il codice può essere commentato con la dobbia barra (//) per le singole righe o con

/*
questo è
un commento
*/

per i blocchi di testo.

Allego a questo post un video che ripropone in Live Coding questo primo e semplice tutorial.






NeuM

Nessun commento:

Posta un commento