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

it.Subpatches

English | Mandarin | French | Russian

Introduzione

La programmazione grafica tende a creare strutture enormi, complesse ed allo stesso tempo affascinanti, che però, nel caso si stia continuamente lavorando su una patch, possono essere difficilmente gestibili; ed ecco perché prima o poi si cominciano ad apprezzare i vantaggi nell'usare le subpatches.

Una subpatch non è altro che una patch in forma di nodo. Proprio così: trascinando, ad esempio, la patch "X" nella patch "Y", si genera la subpatch "X" che avrà l'aspetto e le stesse modalità di interazione di un nodo. Al momento del salvataggio verrà richiesto di salvare anche la subpatch "X", così che potrà essere usata anche in altri casi.

Per comprendere meglio il tutto è necessario fare un passo indietro e studiarsi la struttura di vvvv.

La Root Patch

Se scegliete Show Root (ALT+R) dal menu principale, verrà mostrata la finestra della root patch di vvvv. La Root diciamo che è... un supernodo.

Le Modalità della Finestra

E' molto importante capire che in base a questa caratteristica dell'architettura di vvvv i nodi della root patch e quelli delle varie finestre delle patches sono intrinsecamente la stessa cosa.

Innanzitutto, un nodo può essere mostrato in quattro modi: Finestra, Windowed, Nascosto, Hidden, in un Contenitore, Boxed, o a Schermo Intero, Full Screen.

Quasi tutti i nodi nativi di vvvv come LFO, +, Damper, Quad etc. sono sempre hidden - si può vedere solo la rappresentazione del nodo e niente più.

I nodi nativi come il nodo Renderer (EX9) o Renderer (GDI), hanno una finestra associata. La modalità di default è Windowed; ma si può passare da una all'altra usando sia il menu che scorciatoie dalla tastiera.

Hidden
Alt+3
Solo il nodo è visibile
Windowed
Alt+1
Il nodo sta in una
finestra a parte
Boxed
Alt+2
Il nodo come
contenitore di una finestra
Full Screen
Alt+Enter
Schermo Intero
Il punto chiave per comprendere il concetto di SubPatch è che ogni patch allo stesso tempo è anche un nodo.

Lavorando, si incontrano solo le finestre delle patch e non il nodo che le rappresenta nella Root, dalla quale invece è possibile selezionare la patch/nodo ed impostarne la visualizzazione in uno dei quattro modi descritti sopra.

In modalità Boxed, si possono inserire patches in altre patches. Questo può essere molto utile per preparare interfacce utente molto complesse, nascondendo ogni elemento eccetto gli IOBoxes.

Subpatches

Detto ciò, una SubPatch non è allora niente di speciale: è solo un nodo che contiene una patch.

Si genera una subpatch con Ctrl+Shift+P; è buona pratica salvare la subpatch in una cartella "subpatches" posta nella stessa directory della patch principale. Oltre a poter trascinare una patch in un'altra, si può usare il comando Ctrl+Shift+O per inserire una patch dentro un'altra.

La parola "Subpatch" descrive però solo un punto di vista, perché possiamo dire che ne esiste un altro descritto da "ParentPatch", e cioè:

La Patch1 contiene la Patch2.
vista dalla Patch1: la Patch2 è una Subpatch
vista dalla Patch2: la Patch1 è la ParentPatch
Bisogna fare particolare attenzione quando si lavora con le subpatches, perché chiudere e nascondere una finestra non è la stessa cosa. Se si nasconde la finestra (ALT+3), la patch farà ancora parte del sistema e continuerà a funzionare. Se invece si chiude la finestra (CTRL+W), la patch verrà rimossa dal sistema cancellando il nodo che la rappresenta. Quindi se si vuole solamente liberare la vista, usare Alt+3.

Parametri

Passiamo ora a capire come immettere/emettere dati in/da una subpatch.

Ancora una volta lo zio IOBox viene in aiuto -- Normalmente si usano gli IOBoxes come interfacce per modificare o mostrare valori. Ma possono diventare essi stessi parametri, e molto semplicemente. Quando si inserisce qualcosa nel pin Descriptive Name (che è un pin di confgurazione e quindi visibile solo nell'Ispettore), lo IOBox comincerà a funzionare come un parametro. Se si connette lo IOBox a qualcosa più a valle nel grafico, funzionerà come parametro di input; se lo si connette a qualcosa che sta a monte nel grafico, funzionerà da output. Quindi per ogni input/output pin che vorremo avere nella nostra subpatch dovremo generare un IOBox (magari usando questo trucchetto: dopo aver cominciato una connessione, provate a fare clic col tasto centrale da qualche parte nella patch per generare un IOBox, e con un altro clic del tasto centrale sullo IOBox per rinominarlo con il nome del pin connesso).

Gli IOBoxes ai quali è stato dato un descriptive name, avranno il loro nome appeso sotto in un box scuro.

Nella patch qui sopra troviamo due parametri; uno di input col nome get new ed uno di output col nome kitchenboy of the week. Quindi questa patch potrà essere usata in altre patches così:

Deepness

Un'altra importante caratteristica di vvvv è che tutte le patches con lo stesso nome sono fondamentalmente le stesse. Se si apre una patch più volte e si cambia qualcosa solo in una di queste si potrà notare come il cambiamento avvenga anche in tutte le altre. Questo accade per tutte le variazioni di un valore, e per tutte le modifiche nella patch in sé. Questo è molto utile per la generazione di prototipi, dato che si può lavorare a qualsiasi profondità ed osservare le modiche in atto su tutto il sistema.

I valori che vengono immessi tramite pins parametro, e quindi tutti i calcoli che ne conseguono, sono separati per ogni istanza di una subpatch: ogni subpatch può così processare dati differenti.

Percorsi relativi, Relative Paths

vvvv converte tutti i percorsi relativi in percorsi assoluti, così che tutti i files possano essere rintracciati. Resta il fatto che, una volta salvata una patch e di conseguenza anche tutte le subpatches che contiene, se si sposta una subpatch in un altro posto, alla riapertura della patch principale vvvv potrebbe non riuscire a rintracciare il .v4p di riferimento. Se si spostano invece contemporaneamente tutte le patch e le relative subpatches, vvvv non dovrebbe avere problemi ad eseguire correttamente il programma.

Annidare, Nesting

Una subpatch può contenere una subpatch che contiene una subpatch, che a sua volta contiene una subpatch...

anonymous user login

Shoutbox

~4d ago

joreg: vvvvTv S02E01 is out: Buttons & Sliders with Dear ImGui: https://www.youtube.com/live/PuuTilbqd9w

~11d ago

joreg: vvvvTv S02E00 is out: Sensors & Servos with Arduino: https://visualprogramming.net/blog/2024/vvvvtv-is-back-with-season-2/

~11d ago

~12d ago

fleg: hey there! What's the best tool for remote work? Teamviewer feels terrible. Thanks!

~25d ago

joreg: Last call: 6-session vvvv beginner course starting November 4: https://thenodeinstitute.org/courses/ws24-5-vvvv-beginners-part-i/

~1mth ago

joreg: Missed the last meetup? You can rewatch it here: https://www.youtube.com/live/MdvTa58uxB0?si=Fwi-9hHoCmo794Ag

~1mth ago

theurbankind: When is the next big event, like node festival ?

~1mth ago

~1mth ago

joreg: Join us for the next vvvv meetup on Oktober 17th: https://visualprogramming.net/blog/2024/25.-vvvv-worldwide-meetup/

~2mth ago

joreg: 6 session beginner course part 2 "Deep Dive" starts January 13th: https://thenodeinstitute.org/courses/ws24-5-vvvv-beginners-part-ii/