martedì 5 novembre 2013

Inventare il Suono con Pd, nuova edizione

La nuova edizione del libro Inventare il Suono con Pd è appena uscita. E' possibile scaricarla gratuitamente visitando questo link.

lunedì 31 maggio 2010

Indice di Inventare il Suono

Segue l'indice generale di Inventare il Suono, con le parti incomplete in evidenza. Vorrei fosse un progetto aperto e passibile di completamento da parte di chiunque. E' prevista inoltre una sezione dedicata al MIDI e una sezione dedicata a realizzazioni specifiche.
Chi volesse collaborare alla stesura di questo testo con i propri contributi può contattarmi qui sul blog, oppure scrivendomi all'indirizzo elettrochuck@gmail.com

I L'ambiente
1. Fondamenti
2. Panoramica dell'ambiente

II Dati
3. Basi di programmazione con Pure Data
4. Vettori, grafici e tabelle
5. Programmazione avanzata
6. Oggetti GUI
7. Lista degli oggetti per manipolare dati [mancante]

III Audio
8. L'audio digitale
9. Il Panning
10. Sintesi additiva, sintesi tabellare e sintesi vettoriale [mancante]
11. Sintesi sottrattiva
12. Modulazione ad anello (RM), tremolo, Modulazione d'ampiezza (AM)
13. Vibrato e Modulazione di frequenza (FM) [incompleto]
14. Sintesi per distorsione non lineale (DNL) [mancante]
15. Introduzione alla sintesi granulare [mancante]
16. Altre applicazioni di Pure Data [mancante]

il link per il download di Inventare il Suono è questo.

NeuM

Manuale di Musica Elettronica

Ho scritto un Manuale introduttivo di musica elettronica con Pure Data. La stesura è assolutamente provvisoria, mancano alcuni capitoli, le note a piè di pagina, la bibliografia, l'indice analitico e una trattazione sul MIDI. Nel frattempo però chiunque può leggerlo, consultarlo e contattarmi scrivendomi sul blog per suggerimenti, collaborazioni o quant'altro.

Il suddetto manuale, intitolato Inventare il Suono è scaricabile qui. Spero possa essere utile a chi voglia avvicinarsi al mondo della musica elettronica.

NeuM

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

ChucK presentazione e installazione

Chuck è un linguaggio di programmazione per la sintesi del suono, la composizione, l'esecuzione dal vivo e ora anche l'analisi. Esiste per i maggiori sistemi operativi, Gnu/Linux, Windows e MacOS X e presenta un nuovo modello di programmazione concorrente basato sul tempo.

Permette fra le altre cose di aggiungere e modificare il codice On-the-fly.

In questo post ci occuperemo di installare ChucK su Ubuntu. Per gli altri sistemi operativi, dove l'installazione è più semplice rimando alla documentazione sul sito ufficiale.

Per preparare la macchina con Ubuntu ad ospitare al meglio il software musicale vi rimando a questo link, che vi guiderà nell'installazione dei vari componenti, incluso il server jack, che sarà quello che utilizzeremo per far gigare ChucK.

Una volta eseguita questa operazione installiamo le dipendenze che ChucK richiede:

sudo apt-get install bison gcc-4.2-multilib flex libjack-dev libjack0.100.0-dev libasound2-dev libsndfile1-dev libflac-dev libogg-dev

Scarichiamo i sorgenti dal sito, spacchettiamo il file e apriamo un terminale nella directory chuck-1.x.x.x/src/ e digitiamo

make linux-jack

quindi

sudo make install

ora digitate

chuck

se la risposta sarà qualcosa di simile a questo:

[chuck]: no input files... (try --help)

significa che l'installazione è andata a buon fine. In caso di problemi non esitate a contattarmi.

Ora siamo pronti per programmare...

NeuM


giovedì 1 ottobre 2009

Quali software per il Live Coding?

Il Live Coding può interessare vari ambiti della produzione digitale, ma qui mi occuperò soprattutto di musica. Prescindendo dai linguaggi creati direttamente dai coder, citerò solo alcuni ambienti software, operando una scelta arbitraria e selettiva a discapito della completezza. Le risorse sono tante ed eterogenee.

Quelli di cui scriverò sono linguaggi e ambienti liberi e Open Source, per la semplice ragione che gli algoritmi sono espressioni del pensiero, quindi devono essere realizzati liberamente e liberamente devono essere compilati ed eseguiti.

Fra i linguaggi a interfaccia grafica va citato Pure Data, sviluppato da Miller Puckette nel 1996. Si tratta di un ambiente grafico di programmazione in tempo reale che permette di produrre e processare audio, video e grafica.

Pure Data (Pd) è stato sviluppato per essere multi-piattaforma, i pacchetti per Gnu/Linux, Windows, MacOSX e i sorgenti possono essere liberamente scaricati qui.

Attualmente è mantenuto dallo stesso Puckette (http://crca.ucsd.edu/~msp/) e da una miriade di collaboratori sparsi in tutto il mondo, che hanno contribuito alla realizzazione della versione extended, che include numerose librerie che ampliano le possibilità del linguaggio. Fra queste cito Gem, che permette di creare grafica all'interno di Pd.

Non mi soffermo oltre su questo software, le risorse reperibili in rete, anche in italiano, sono numerose e complete, quindi buona navigazione!



Con SuperCollider entro nel merito dei linguaggi che prevedono la scrittura del codice senza l'ausilio di un'interfaccia grafica.

Dal sito:

SuperCollider is an environment and programming language for real time audio synthesis and algorithmic composition. It provides an interpreted object-oriented language which functions as a network client to a state of the art, realtime sound synthesis server.

SuperCollider (SC) è un linguaggio di programmazione interpretato, che agisce come client (SClang) di un server (SCserv) di sintesi audio in tempo reale. E' stato scritto da James McCartney, che lo rilasciò nel 1996.

Scrivere il codice apparentemente è un'operazione più complessa che non smanettare con gli oggetti grafici, ma dopo il giusto periodo di apprendistato consente di padroneggiare le tecniche di programmazione dell'audio e di manifestare la sua superiore espressività rispetto ai linguaggi grafici.

SuperCollider è un linguaggio potente ed espressivo e purtroppo le risorse disponibili in rete non sono numerorissime. Le poche che abbiamo trovato sono in inglese, fatta eccezione per il sito di Andrea Valle che oltre ad essere un coder di SC, ha scritto l'unico manuale in italiano sull'argomento, a cui rimando gli interessati.

Ovviamente anche SC è un software libero, scaricabile qui, nelle versioni per Gnu/Linux, Windows e MacOSX.

Con il prossimo post inizierò a scrivere di Chuck, un altro linguaggio testuale per l'audio. Oltre ad una panoramica generale scriverò alcuni tutorial, vista la mancanza totale di risorse in italiano sulla rete.

Alla prossima...


Neum


mercoledì 30 settembre 2009

Il Live Coding

Il Live Coding, o la programmazione in tempo reale (On-the-fly Programming) è uno stile di programmazione in cui il Coder, sia esso un compositore, un artista digitale o un programmatore modifica il codice mentre questo è in esecuzione, al fine di rendere chiari i processi che danno vita alla performance.

Alcune implicazioni del Live Coding:

  1. Permette l'accesso diretto alla mente del performer, producendo un nuovo modo di interagire fra lo stesso e chi fruisce della sua opera. L'ascoltatore può vivere i suoni (e/o le immagini, video, etc...) non solo quando vengono fatti uscire dagli amplificatori, ma nel momento in cui vengono ideati. L'ascolto diventa un'esperienza totale, nel senso che comprende tutto il processo, dal pensiero al suono.
  2. Il binomio Hardware-Software assume il ruolo che è sempre stato degli strumenti musicali tradizionali. Non c'è più nulla di pre-confezionato, di pre-parato. Come un pianista tocca la sua tastiera in tempo reale, il coder programma i suoni e li offre al pubblico per come li produce, qui e ora.

Neum