» it.Generare Feedback Loops
This site relies heavily on Javascript. You should enable it if you want the full experience. Learn more.

it.Generare Feedback Loops

English | Russian | French

The original english version of this page is newer and may contain information this translation does not have! Click here to view the english version.

Perché non riesco a connettere due pins dello stesso tipo?

Questo succede perché si sta tentando di generare un ciclo, loop, nel grafico.

Il concetto di loop (alla radice di tutta la cibernetica) è potente, ma quando lo si applica in una patch è necessario fare attenzione. La regola di base da ricordare è:
vvvv valuta i nodi del grafico una sola volta per ogni fotogramma, frame.

Se tutte le cose nel grafico succedono nello stesso momento, ecco, questo semplifica la pianificazione ed il debug della patch. Non c'è un ordine di esecuzione (come in altri linguaggi di programmazione grafica: ad esempio Max o PureData). Tutte le cose vengono automaticamente calcolate secondo l'ordine necessario. Anche i nodi non ritardano nel gestire i loro dati (come nell'elettronica digitale). Non ci si deve preoccupare di segnali che non arrivano nello stesso momento.

Ma in pratica, perché non funziona un loop in una patch? Succede perché finché un input non è noto, un output non può essere calcolato; e viceversa (tenendo presente il principio per cui vvvv calcola una sola volta i valori per ogni frame).

Anche se questo sembra il classico paradosso foriero di crash e schermi blu la soluzione è abbastanza semplice: in un certo punto del loop dobbiamo ricorrere al valore dell'ultimo frame, così da evitare infinite ricorsioni. Fai attenzione: il punto in cui si risale all'ultimo frame è importante, e cambiarlo potrebbe portare a variazioni più o meno sensibili del comportamento del loop.

Quindi, ogni volta che si fa una connessione, l'interfaccia di vvvv controlla se potrebbe presentarsi una situazione in cui l'ingresso di un nodo dipende dell'uscita dello stesso nodo, esattamente in quello stesso frame. Se questa condizione viene soddisfatta, vvvv non consente la connessione, in quanto non saprebbe dove andare a prendere quel valore dall'ultimo frame.

Ma allora come si può generare un loop?

La soluzione è semplice: nodi come hanno un output che non dipende dall'input di questo frame, ma da quello dell'ultimo frame (cioè di quello precedente, o del penultimo, o come preferite), cosa che è permessa senza alcun problema perché non contraddice la logica spiegata sopra. Così, se all'interno del loop c'è almeno uno di questi nodi (ne esistono altri con questa proprietà), il loop può esser chiuso.

Non esiste una regola generale che indichi a che punto del loop questi nodi debbano essere sistemati; anche perché dipende da come è costruita la patch e da cosa si vuole ottenere. Ma in fin dei conti, non è poi così complicato, no?

Per concludere. I loops sono roba forte, che consente ad esempio di memorizzare e modificare valori da un frame all'altro: contatori e calcoli d'iterazione risultano semplici da sviluppare come loops.

Quando si generano feedback loops usando il nodo FrameDelay (Animation) è importante evitare Spreads Vuoti.
Se ci sono problemi a salvare o riaprire la patch (ad esempio uno o più moduli riportano uno zero barrato, "Ø", nel pin di output) visitare questa pagina.

anonymous user login

Shoutbox

~6h ago

stulloyd: @dominikKoller my little brother works for them.

~5d ago

vasilis: @readme I already did this...but when I reopen my patch and make some changes I press save all..and then the same again. It opens 2

~5d ago

readme: vasilis, Alt+R in your vvvv instance, delete it from vvvv root, save. Otherwise vvvv loads up the patch by default.

~6d ago

vasilis: And even if I go in the root patch and delete them. when i save my patch again it duplicates.

~6d ago

vasilis: Anyone know why when I save my patch and close vvvv, when I try again to reopen it, it opens two patches (two the same)?

~6d ago

david: updated the berlin meetup log. Please correct names or missing stuff. berlin meetups 2018

~6d ago

david: join us today for our Berlin vvvv meetup 2-berlin-vvvv-meetup

~7d ago

eno: Updated open positions: http://nsynk.de/jobs