Arrays, Buffers e Wavetables
I Buffers sono come degli Arrays (o List) ottimizzati per memorizzare temporaneamente non int, float, UGens, string o altri tipi di data ma campioni audio (samples) e come già accennato non vivono nell'Interprete ma nel Server. I Buffers possono essere utilizzati anche come Wavetables ma quali sono le differenze principali tra i due termini?
Il termine Buffer è solitamente utilizzato quando carichiamo in memoria una grande quantità di campioni (dalle decine di migliaia in su) che, nella pratica corrispondono alla descrizione di un suono sintetizzato o registrato riconoscibile all'ascolto.
Il termine Wavetable (o window) è utilizzato quando un Buffer contiene un numero esiguo di campioni (dalle decine alle migliaia) che descrivono un singolo ciclo di una forma d'onda e che usualmente sono multipli di 2 (64, 128, 512, 1024, 2048, etc.). Questo tipo di buffer è presente ad esempio in tutte le UGens che generano segnali audio (chiamate appunto oscillatori tabellari o wavetable oscillator) e, se richiamiamo il loro Help file e leggiamo le descrizioni troveremo frasi simili alle seguenti:
- Uses a wavetable lookup oscillator with linear interpolation.
- Technically, SinOsc uses the same implementation as Osc except that its table is fixed to be a sine wave made of 8192 samples.
Usualmente quella appena descritta è solo una differenza terminologica che descrive l'utilizzo che facciamo dei dati contenuti in un Buffer, mentre nella programmazione dei software più comuni esiste solo un oggetto chiamato Buffer che possiamo utilizzare all'occorrenza in entrambi i casi.
Possiamo scrivere dati all'interno di un Buffer in tre modi:
Caricando un Sound file (o una porzione di esso).
Scrivendo i dati di un segnale audio in tempo reale, usualmente un segnale proveniente da un microfono per realizzare diverse tecniche di elaborazione in tempo reale.
Scrivendo tutti i valori di ampiezza uno alla volta. In questo caso i valori di ampiezza (y) sono assegnati a un indice (x) e determinati da una funzione d'onda.