#include <GenTable.h>
Diagramma delle classi per GenTable
Membri pubblici | |
GenTable (const unsigned long &length) | |
Costruttore. | |
GenTable (const GenTable &x) | |
Costruttore di copia. | |
virtual | ~GenTable () |
Distruttore. | |
const float * | getPtr () const |
Ritorna il puntatore dell'array. | |
unsigned long | getSize () const |
Ritorna la dimensione dell'array. | |
float | getPeak () |
Ritorna il valore di picco del segnale contenuto nell'array. | |
float | getRaw (const double &phi) |
Ritorna i valori contenuti nella posizione specificata. | |
float | getInterp (const double &phi) |
Ritorna il valore interpolato a due punti. | |
float | getInterp3 (const double &phi) |
Ritorna il valore interpolato a tre punti. | |
float | getMorph (const double &phi, GenTable *b, const float &point=0.f) |
Attua un interpolazione pesata tra due oggetti. | |
void | writeGuardPoint () |
Scrive il "Extend Guard Point". | |
void | clear () |
Pulisce l'array scrivendo il valore 0.f su tutte le allocazioni. | |
void | copy (const GenTable *r) |
Copia nella tabella i valori con quelli dell'oggetto r. | |
void | normalize () |
Normalizza l'intero vettore. | |
void | rescale (const float &resc=1.0) |
Riscala l'array per il valore dato. | |
void | offSet (const float &offset=0.0) |
Somma un valore costante "offset" su l'intero array. | |
void | resize (const unsigned long &newSize) |
Ridimensiona la tabella con una nuova lunghezza. | |
void | add (const GenTable *b) |
Addiziona con i corrispettivi valori dell'oggetto in ingresso. | |
void | sub (const GenTable *b) |
Sottrae con i corrispettivi valori dell'oggetto in ingresso. | |
void | mul (const GenTable *b) |
Moltiplica con i corrispettivi valori dell'oggetto in ingresso. | |
void | div (const GenTable *b) |
Divide con i corrispettivi valori dell'oggetto in ingresso. | |
void | morphing (const GenTable *b, const float &point=0.f) |
Attua una pesatura dell'array con i corrispettivi valori dell'oggetto b. | |
Attributi protetti | |
unsigned long | _size |
float * | _table |
by Alessandro Petrolati 2006. www.alessandro-petrolati.com ale_petrolati@alice.it
Definizione alla linea 21 del file GenTable.h.
GenTable::GenTable | ( | const unsigned long & | length | ) |
Costruttore.
Inizializza l'oggetto con un valore intero per la dimensione dell'array. La memoria è allocata dinamicamnete.
void GenTable::add | ( | const GenTable * | b | ) |
Addiziona con i corrispettivi valori dell'oggetto in ingresso.
Il metodo agisce sul proprio array, i valori di questo vengono sommati a quelli dell'oggetto in ingresso: _table[n] += b._table[n]; Se le dimensioni non sono uguali, l'operazione è saltata.
void GenTable::copy | ( | const GenTable * | r | ) |
Copia nella tabella i valori con quelli dell'oggetto r.
Se le dimesione degli array sono diverse la lunghezza dell'oggetto corrente viene ridimensionata, tutti i valori sono sovrascritti. N.B. i valori presenti prima della copia, vengono sovrascritti.
void GenTable::div | ( | const GenTable * | b | ) |
Divide con i corrispettivi valori dell'oggetto in ingresso.
Se le dimensioni non sono uguali, l'operazione è saltata.
float GenTable::getInterp | ( | const double & | phi | ) |
Ritorna il valore interpolato a due punti.
Accetta un valore di "Phase" normalizzato, usa la parte intera come indice, riscalata sulla dimensione dell'array e attua un'interpolazione a due punti.
float GenTable::getInterp3 | ( | const double & | phi | ) |
Ritorna il valore interpolato a tre punti.
Accetta un valore di "Phase" normalizzato, usa la parte intera come indice, riscalata sulla dimensione dell'array e attua un'interpolazione cubica. N.B. La seguente implementazione segue il modello Csound implementato in "table3 opcode".
float GenTable::getMorph | ( | const double & | phi, | |
GenTable * | b, | |||
const float & | point = 0.f | |||
) |
Attua un interpolazione pesata tra due oggetti.
Il "morphing" avviene per mezzo della pesatura tra il valore di phase dell'oggetto corrente e quello dell'oggetto in ingresso. Vedi morphing () per chiarimenti. N.B. Per motivi di prestazioni non è incluso il controllo sulla dimensione delle tabelle, devono necessariamente coincidere, ossia la lunghezza dell'array corrente deve essere identica a quella dell'oggetto in ingresso. Inoltre questo metodo ritorna il valore interpolato.
float GenTable::getPeak | ( | ) |
Ritorna il valore di picco del segnale contenuto nell'array.
La funzione trova due valori di picco, uno per i positivi e uno per i negativi. Quello più grande viene ritornato.
float GenTable::getRaw | ( | const double & | phi | ) |
Ritorna i valori contenuti nella posizione specificata.
Accetta un valore di "Phase" normalizzato come indice (da 0 a 1).
void GenTable::morphing | ( | const GenTable * | b, | |
const float & | point = 0.f | |||
) |
Attua una pesatura dell'array con i corrispettivi valori dell'oggetto b.
Se le dimensioni non sono uguali, l'operazione è saltata. Il valore "point" dev'essere compreso tra 0 e 1, vedere Interpolation per ulteriori dettagli. N.B. Non è consigliato l'uso di questa funzione in contesti generativi o di controllo con velocità (sampling rate) di elevate. Si raccomanda l'uso solo nelle impostazioni con bassa frequenza di schedulazione. Vedi la controparte getMorph().
void GenTable::mul | ( | const GenTable * | b | ) |
Moltiplica con i corrispettivi valori dell'oggetto in ingresso.
Se le dimensioni non sono uguali, l'operazione è saltata.
void GenTable::normalize | ( | ) |
Normalizza l'intero vettore.
La funzione chiama getPeak(), il vettore viene riscalato opportunamente. Ossia i valori sono rimappati da -1 a +1, il fattore di riscalamento è: 1.0 / getPeak ().
void GenTable::resize | ( | const unsigned long & | newSize | ) |
Ridimensiona la tabella con una nuova lunghezza.
Trascrive i valori su una copia dell'oggetto corrente, ridimensiona la tabella e riscrive i dati interpolando i valori.
void GenTable::sub | ( | const GenTable * | b | ) |
Sottrae con i corrispettivi valori dell'oggetto in ingresso.
Se le dimensioni non sono uguali, l'operazione è saltata.
void GenTable::writeGuardPoint | ( | ) |
Scrive il "Extend Guard Point".
Quando si utilizza la tabella leggendo i valori interpolati, si rende necessario estendere la "_size" complessiva scrivendo il valore sull'allocazione 0, sull'ultima (_size + 1). Prevalentemente questa funzione è usata dai metodi di generazione di questa classe o classi derivate, ma potrebbe servire nel caso, per esempio, si definisca ad "hoc" un prototipo.