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.
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
~2d ago
~2d ago
~9d ago
~11d ago
~13d ago
~16d ago
~16d ago
~24d ago
~30d ago
~30d ago