Benvenuto, Visitatore. Per favore, effettua il login o registrati.

  Hai perso la tua email di attivazione?

Main Home Help Ricerca Login Registrati

+  Virtual Sound - FORUM
|-+  Linguaggi per Computer Music, Video e Grafica
| |-+  Csound
| | |-+  GEN07 e GEN 08 grandezze tabelle
« precedente successivo »
Pagine: [1] Stampa
Autore Topic: GEN07 e GEN 08 grandezze tabelle  (Letto 753 volte)
codesound
Jr. Member
**
Posts: 73



Guarda Profilo
« il: Marzo 14, 2011, 14:32:17 »

Gentilissimi,

chiedo cortesemente il motivo per cui generando una tabella con GEN07 non si possono impostare dei valori di dimensione di questa molto bassi. Mi spiego:

f1 0 512 7 0 256 1 0 -1 256 0 ; genera un'onda rampa, ma io la voglio fare con una tabella più piccola, anzi, piccolissima:
dal momento che basta fornire i punti di ampiezza/tempo con i quali questa verrà generata, si potrebbe riscrivere:
f1 0 4   7 0 2   1 0 -1 2   0 ; solo che, in questo caso, viene generata un'onda dove l'ampiezza della semionda negativa è completa, ma quella della semionda positiva è a metà...
Solo alzando la dimensione della tabella, si riesce pian pianino a costruire un'onda bipolare a rampa! (a 128 ci si AVVICINA molto)

Dal momento che i valori di ampiezza rimangono sempre quelli (1 e -1), perchè solo impostando una dimensione tabella elevata si riesce ad avere un'onda corretta?

 ----
| *    1

|*  *  0
|
|  *   -1
 ----             
 1234   <--- una tabella di 4 punti dovrebbe formare un'onda rampa ....

PS: questo NON accade con la GEN05:
f 1 0 64 5 0.001 1 1 63 0.001 ;genera il calssico impulso, ad alta risoluzione...
f 2 0 4  5 0.001 1 1 3  0.001 ;genera lo stesso impulso ma con una risoluzione di soli 4 punti....

    --------------------------
   | *                        | 1
   |   *                      |
   |       *                  | .5
   |              *           |
   |*                        *| 0.001
    --------------------------
   0           32            64

    -------------------------
   |      *                  | 1
   |                         |
   |           *             | .5
   |                 *       |
   |*                        | 0.001
    -------------------------
   0     1     2     3      4

Ringrazio chiunque...

Ruben
Loggato
vallste
Jr. Member
**
Posts: 58


Guarda Profilo WWW
« Risposta #1 il: Marzo 15, 2011, 09:07:41 »

Caspita! Questa è strana!

Dal manuale nella GEN07 leggo:
Discrete-point linear interpolation implies an increase or decrease along a segment by equal differences between adjacent locations...
In both forms the interpolation from a to b is such as to assume that the value b will be attained in the n + 1th location.

Non vorrei che usando pochissimi punti l'interpolazione andasse a farsi benedire e mettesse in mezzo anche il valore di -1 nella rampa da 0 a 1 dal momento che nella posizione 2 si ritrova sia i valori di 1 che di -1 Huh

Altre idee?
Loggato
leonardo
Newbie
*
Posts: 11


Guarda Profilo
« Risposta #2 il: Marzo 15, 2011, 18:38:24 »

Salve,
premesso che non sono capace di far stampare il grafico con i punti della tabella e quindi non riesco a controllare il risultato, penso che
il numero dei punti minimo sia 3 e la gen7 dovrebbe essere  scritta come segue per poter dare una rampa bipolare.

f1   0 3 7   0   1   1   1   -1   1   0

Per andare da 0 ad 1 basta un punto, così come per andare da 1 a -1.
A lume di naso, il problema risiede nell'attribuzione del numero di punti da assegnare tra un valore e l'altro della funzione, questo me lo lascia pensare il fatto che in ascissa della gen 7 il primo valore è 1,mentre in ascissa della gen5 ( che si comporta correttamente) il primo valore in ascissa è 0.
Spero di essere stato di aiuto.
P.S:
Vogliate essere così gentili da dirmi come si fanno stampare i valori?
Ho provato con il comando display ma non funziona.
Vi ringrazio anticipatamente. l.

Loggato
vallste
Jr. Member
**
Posts: 58


Guarda Profilo WWW
« Risposta #3 il: Marzo 16, 2011, 09:21:07 »

Ciao,
con questo programmino si dovrebbero leggere e stampare i valori della tabella:

<CsoundSynthesizer>
<CsOptions>
</CsOptions>
<CsInstruments>

sr = 44100
kr = 44100
nchnls = 2


instr 1
ilen tableng p4
print ilen
kcount init 0
if kcount == ilen then
   turnoff
endif
kvalue tab kcount, p4
printk2 kcount
printk2 kvalue
kcount = kcount + 1
endin

</CsInstruments>
<CsScore>
;4 punti
f1 0 4   7 0 2   1 0 -1 2   0
;512 punti
f2 0 512 7 0 256 1 0 -1 256 0
;3 punti
f3   0 3 7   0   1   1   1   -1   1   0

i   1   0      1      1
i   1   1      1      2
i   1   2      1      3
e
</CsScore>
</CsoundSynthesizer>


A quanto pare l' interpolazione (anche nel caso dei 512 punti) non fa arrivare al valore di 1, ma ci tende. Suppongo che maggiore è il numero di punti più precisi saranno i valori dati rispetto a quelli dichiarati nell'f statement.
Altra cosa strana è che per la f 3 mi da una lunghezza di 2 punti e non di 3 (niente guard point).

Quante cose si scoprono  Grossa risata
Loggato
codesound
Jr. Member
**
Posts: 73



Guarda Profilo
« Risposta #4 il: Marzo 16, 2011, 09:32:37 »

Ringrazio Leonardo ed il buon Vallste (possiamo farci una VPN diretta!!!  Grossa risata )
Leonardo: non capisco cosa intendi con la stampa dei valori della tabella. Spero che la chicca del buon Vallste ti sia di aiuto...
Vallste: come sempre sei molto avanti... studierò sul tuo codice in modo da capire questa cosetta...
certo che fra te e l'opinione molto interessante di Leonardo, sarà più semplice

Ruben
Loggato
leonardo
Newbie
*
Posts: 11


Guarda Profilo
« Risposta #5 il: Marzo 16, 2011, 12:07:00 »

Grazie.
é il secondo aiuto prezioso che ricevo!
A presto
« Ultima modifica: Marzo 16, 2011, 12:24:32 da leonardo » Loggato
codesound
Jr. Member
**
Posts: 73



Guarda Profilo
« Risposta #6 il: Marzo 21, 2011, 13:34:41 »

Carissimi Leonardo e Vallste:

In foto si vede il comportamento della GEN07 con i tre tipi diversi di parametri:

f 1 0  512  7   0 256 1 0 -1 256 0 ; 1, prima onda (perfetta)
f 2 0  3    7   0 1   1 1 -1 1   0 ; 2, onda Leonardo
f 3 0  3    7   0 1   1 0 -1 1   0 ; 3, onda mia

Non riesco ancora a capire il perchè non si riesce a costruire con i soli 3 punti un'onda Ramp... :-)
Loggato
vallste
Jr. Member
**
Posts: 58


Guarda Profilo WWW
« Risposta #7 il: Marzo 22, 2011, 11:21:18 »

Ciao, con cosa hai stampato quei grafici? Da csound display grafico?
Secondo me, la tua onda non funziona perchè avendo pochissimi punti csound non riesce a interpolare bene ovvero lui sa che la sua onda dovrà cresere a +1 e contempotreneamente decrescere a -1 nello spazio di un campione, quella di Leonardo invece spazia di un campione le variazioni di valore.

Usando il programmino di qui sopra ho visto che usando questa:
f1 0 256 7 0 128 1 0 -1 128 0
al punto 127 mi da  0.99219 mentre al 128 mi da -1 quindi mi sembra di capire che lui sta interpolando i valori nella rampa crescente ma invece di raggiungere +1 al punto 128 (dove dovrebbero coesistere i valori di +1 e -1) ferma la rampa a 127 e si "concede" un punto per andare a -1.

Non ho altre spiegazioni se non che nello stesso punto delle ascisse non possono convivere due valori in ordinata. Maggiore la lunghezza della tabella maggiore l'approssimazione all'onda ideale.
Loggato
codesound
Jr. Member
**
Posts: 73



Guarda Profilo
« Risposta #8 il: Marzo 22, 2011, 11:40:35 »

GRAZIE!!! finalmente!!! sei stato molto chiaro e semplice!!!

PS: per i grafici, semplicemente ho:
1 - genearto il file audio con le tre onde;
2 - ho aperto il file con Audacity (http://audacity.sourceforge.net/download/);
3 - una volta aperto e ingrandito la visuale del file, ho premuto il tasto "STAMP" dalla tastiera del PC;
4 - ho incollato ed editato la foto generata in paint.NET (http://www.getpaint.net/download.html);

spero di aver spiegato chiaramente come ho fatto

PS: ormai i sistemi operativi più usati mettono a disposizione dei piccoli softwares per gestire le operazioni di stamp del monitor senza dover operare con tutti questi passaggi  Occhiolino

Vallste, ti ringrazio ancora tanto,

Ruben
Loggato
Pagine: [1] Stampa 
« precedente successivo »
Salta a:  


Login con username, password e lunghezza della sessione

Powered by MySQL Powered by PHP © Copyright 1996 - 2008 - ConTempoNet Edizioni Musicali ® - P.IVA: 05174251008
Tutti i diritti riservati - Tutti i marchi sono registrati -
È vietata la riproduzione, anche parziale, dei testi e delle immagini.
Powered by SMF 1.1.15 | SMF © 2006-2008, Simple Machines
Traduzione Italiana a cura di SMItalia
XHTML 1.0 Valido! CSS Valido!