» 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

~4d ago

joreg: The summer season of vvvv workshops at The NODE Institute is out: https://thenodeinstitute.org/ss24-vvvv-intermediates/

~4d ago

domj: If you happen to be in Prague, come join us at the Schema workshop on Thursday 25.4. :) https://www.facebook.com/events/395516526614988/?ti=ls

~16d ago

joreg: Postponed: Next vvvv beginner course starting April 29: https://thenodeinstitute.org/courses/vvvv-beginner-class-summer-2024/

~1mth ago

~2mth ago

joreg: The Winter Season of vvvv workshops is now over but all recordings are still available for purchase: https://thenodeinstitute.org/ws23-vvvv-intermediates/