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

it.FAQ Patching

English

C'è qualcosa come un ordine di messaggi in vvvv come in PD, dove definire esattamente in quale ordine quale azione dovrebbe essere eseguita? (tipo l'oggetto "trigger" in PD)?

In generale non c'è bisogno di sincronizzare i nodi dato che vvvv è organizzato in frames. In ogni frame ogni nodo viene calcolato il tempo necessario per essere in grado di generare l'output così che gli altri nodi possano riceverlo.
vvvv si prende cura di tutte le dipendenze tra i nodi: un nodo, connesso tramite i suoi input pins ad altri nodi cerca di valutare sé stesso per emettere un output valido, e così fanno anche i nodi a monte. Questo spiega anche perché grafici a loop non sono ammessi. Per ottenere un loop è necessario ricorrere a valori dell'ultimo frame (non di quello attuale), utilizzando ad esempi il nodo  FrameDelay(Animation).
Per trigger di delay, di estrazione, interruttori, alternatori vedere nodi come questi: Delay (Animation), MonoFlop (Animation), FlipFlop (Animation), TogEdge (Animation), Toggle (Animation), Switch?.

Come vvvv gestisce le priorità. Diciamo che ad un nodo TogEdge (Animation) sono collegati in output i nodi Counter (Animation) e RingBuffer (Spreads). Come posso fare sì che il Ringbuffer riceva il BANG prima del Counter?

Non puoi. Nello stesso momento, in vvvv, tutti i nodi ricevono i loro nuovi valori. VVVV ha a che fare coi valori, non col cambio di valori. VVVV divide il tempo in frames, ed in ogni frame tutte le cose succedono contemporaneamente. Tutti i valori vengono campionati, tutti i nuovi valori vengono calcolati, tutti i valori risultanti vengono inviati ai pins contemporaneamente.
Ogni nodo viene calcolato una volta sola in un frame. Quindi vvvv cerca di evitare loops nei flussi di dati, altrimenti avremmo un valore in input di un nodo come funzione del suo output. Vedere Generare Feedback Loops.

Come si fa ad alternare il valore di un IOBox Toggle, azionandolo con un IOBox Bang?

Leggi sopra. Probabilmente sei abituato a Max/PD. Non c'è quel tipo di "Bang" in vvvv. Tutte le connessioni contengono sempre un valore, e gli eventi non possono prescindere dalle connessioni.
Un bang, in vvvv, è semplicemente un 1 per un frame, a cui segue uno 0 in tutti gli altri frames.
Inoltre gli IOBoxes non vengono azionati in alcun modo - mostrano solamente il valore in ingresso. Le modalità toggle e bang esistono solo per comodità dell'utente nell'input dei dati - i valori non vengono processati dagli IOBoxes.

Conosco Java, JavaScript, PHP, Perl, ActionScript ed anche C++ - Come posso programmare Arrays, Subroutines, If-Then-Else e Loops?

Gli Arrays vengono chiamati Spreads, in vvvv. Molti nodi li trattano come liste o liste di proprietà. Vedere Spreads

Le Subroutines possono essere simulate con le Subpatches. Vedere Subpatches

If-Then-Else può essere invece facilmente emulato con Switch?, che opera una selezione tra differenti inputs. VVVV risparmierà calcoli, non processando percorsi non utilizzati nel grafico. Anche per simulare "Case statements" si possono usare gli Switches, facendo attenzione al pin InputCount e controllandolo nell'Ispettore - oppure usare GetSlice? per operare selezioni tra le slices di uno spread.

Se si vuole generare un loop per ripetere semplicemente un certo numero di azioni in un array, allora gli spreads sono il rimpiazzo giusto: Basta fare tutte le cose contemporaneamente (pensaci sopra).
Sorprendentemente quasi tutti gli altri loops possono essere effettuati con nodi come Select?, I (Spreads), Cross (2d), Sort (Spreads), Cons?, le varianti spectral di certi altri nodi, o i vari altri oggetti high level. Assicurati di consultare le loro pagine di aiuto.

Clock, Counter, Timer

Se il loop deve produrre una sequenza di azioni nel tempo (come contare da 10 a 0) si possono usare questi nodi:

C'è un oggetto per memorizzare dei presets?

Per ora no - sarà necessario che te lo costruisca su misura.
Dovrai convertire i valori in stringhe, con qualcosa come i nodi + (String Spectral) ed udare Writer (File) per salvarlo sul disco. Poi la combinazione del nodo Reader (File) col nodo RegExpr (String) per ricostruire il tutto.
Il nodo OnOpen (VVVV) potrebbe essere utile.
kalle ha preparato un set di modules per questo scopo, che possono essere trovati qui: kalle.Modules.Sequencer.

Voglio poter definire i pins enumerazioni dei miei moduli.

Per ragionevole possa essere, per ora non è possibile. Per aggirare il problema comunque si può:

definire un nodo S (Value) per ogni selezione che si vuole ottenere, generare un nodo R (Value) e connetterlo ad un IOBox (Enumerations). Tutti i nodi S ora dovrebbero apparire nell'EnumBox. Il nodo R emette il valore del S selezionato.
Esiste però, di contro, il problema che usando S o R si ottengono più enumerazioni in R...

Ho trovato voci nuove in un pin enumerazione, a cosa servono?

Le enumerazioni possono ricevere voci nuove se sono specificate nella patch salvata; per esempio con le enumerazioni di schede audio o adattatori video. se si apre una patch salvata su una macchina con un hardware differente, questo hardware che è stato salvato nella patch, comparirà accanto all'hardware della macchina in cui si sta aprendo la patch. Comodo, no? Inoltre questo semplifica molto lo sviluppo di setups multipatch con dipendenze circolari.

Che succede se lo spreadcount è 0?

Niente. Si tratta solo di uno Spread Vuoto. La maggior parte dei nodi in output restituisce uno spread vuoto se in input ce n'è uno. Sebbene all'inizio possa irritare, aiuta nel gestire valori indefiniti nel grafico, ed è uno stato perfettamente ragionevole. Tieni presente che uno spread vuoto può influenzare molti nodi lungo la catena delle connessioni, da monte a valle. Quindi per individuare il nodo problematico si deve risalire il grafico.
C'è un aspetto interessante legato ai loops. In alcuni casi un loop, all'avvio della patch può impostarsi su uno spread vuoto. Usando Switch, si può provare a collegare, all'altro pin che non farà parte del loop, una costante. Usando la costante si potrà quindi riavviare il loop senza problemi. Anche usare Resample ha dato buoi risultati. Vedere Spreads

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

Leggere qui.

Come posso ottenere un'interpolazione lineare tra due vettori, simile al nodo Slerp (Quaternion)?

La maggior parte dei nodi, se influenzati da uno spread, possono essere usati coi vettori. Due esempi? I nodi InputMorph (Value) e Map (Value).

Senza seno non so stare!

Dai un'occhiata al nodo CircularSpread (Spreads) (suggerimento: anche lo spreadcount dovrebbe esser 1...). E poi i nodi WaveShaper (Value) e Expr (Value).

Come posso arrotondare un numero con la virgola ad uno intero?

Se il valore richiesto è un intero, ovviamente vvvv lo converte in automatico. Negli altri casi c'è il nodo Frac (Value), ed anche FormatValue (String) può dare una mano.

E' possibile aggiungere patches ad una patch in esecuzione?

Sì. SetPatch (VVVV) e GetPatch (VVVV) consentono di recuperare o cambiare la struttura XML della patch attualmente in esecuzione. Analizzando ed impostare la struttura di una patch è un po' complicato, ma molto utile. Maneggiare con cura.

Stiamo ottimizzando vvvv per avere prestazioni ottimali quando la patch non cambia ad ogni frame. Si ottiene il massimo delle prestazioni quando il grafico è solo in esecuzione, e ci si aspettano cali quando si cambiano porzioni del grafico.

E' possibile rimuovere le patch da una patch in esecuzione?

Con le versioni precedenti alla beta9 non facilmente. C'è una soluzione stramba, che si sviluppa in un temuto Visual Basic Script per gestire la cosa con le versioni precedenti.

 set WshShell = WScript.CreateObject("WScript.Shell")
 WshShell.AppActivate "NAME-OF-PATCH-TO-CLOSE.v4p"
 WshShell.SendKeys "^w"
 WshShell.SendKeys "{ENTER}"

salva in .VBS, quindi esegui con shellexecute. Se ci sono spazi assicurarsi di inserire " all'inizio ed alla fine.
Fare attenzione al fatto che questo tipo di soluzioni non sono sicure e, in casi particolari, potrebbero portare lo script a non funzionare correttamente.
Inoltre l'host di Windows Script deve essere in esecuzione e non ostacolato per esempio da un antivirus. Per ulteriori dettagli vedere questo articoli su MSDN http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/wsmthsendkeys.asphttp://www.icpug.org.uk/national/features/030316fe.htm

Il modo in cui ho imparato a fare un sequencer in max utilizza un counter per fare una ricerca in una tabella, e poi incrementare il contatore con un metronomo. Ho trovato il counter in vvvv, ma non gli altri due. C'è un modo semplice per fare un sequencer?

C'è un nodo Switch (Value, Input) . Un sequencer semplice potrebbe essere costruito in questo modo: generare i seguenti nodi nella patch: LFO (Animation), Counter (Animation), Switch (Value Input).
Ora collegate l'output di LFO al pin up del Counter e l'output del Counter al pin switch dello Switch. Imposta "Input Count" dello switch, tramite l'Ispettore, su 16; immettete ora qualche valore per i 16 pin del vostro nuovo sequencer.
Una soluzione più avanzata ci potrebbe essere utilizzando  GetSlice (Spread) invece dello Switch (vedi la patch di aiuto). E' simile nel funzionamento, ma utilizza slices differenti piuttosto che gli input pins.
Un'altra caratteristica notevole di vvvv è che l'input dello Switch ricomincia da capo automaticamente quando vengono immessi numeri interi più grandi della quantità dei pins. Così si può anche collegare direttamente l'input dello Switch con il pin Period Out del nodo LFO, ed abbandonare il counter. Lo stesso vale con GetSlice.

Fai esperimenti con il nodo InputMorph (Value). Simile allo Switch, anche con una quantità variabile di input pins, consente però di interpolare tra diversi inputs immettendo numeri frazionari.
Il nodo Map (Value Interval) o il modo Spline del nodo Resample (Spreads) sono molto utili per costruire un sequencer - dai un'occhiata alle patch di aiuto.

sven ha realizzato due diversi moduli sequencer che possono essere trovati qui.
kalle ha preparato un set di modules che sono un po' diversi. Li puoi trovare su kalle.Modules.Sequencer.

anonymous user login

Shoutbox

~16h ago

metrowave: @mediadog, YOU lucky dog!

~20h ago

~1d ago

colorsound: Hi guys some poc of laser and projection ;D https://vimeo.com/colorsound/laser-projection-interaction

~2d ago

mediadog: @metrowave I just saw the Wilfred Lumia exhibit in DC - I wept. Pics/videos do it no justice, analog = infinite resolution!

~4d ago

udo2013: BeatDetector(bass)not working.ErrorCode from red node:"PLUGINS \BassSound dll BassSound Data BeatDetectorNode" is missing.WhatToDo?