Permalink
Find file
Fetching contributors…
Cannot retrieve contributors at this time
333 lines (333 sloc) 16.9 KB
<!DOCTYPE PATCH SYSTEM "http://vvvv.org/versions/vvvv45beta26.dtd" >
<PATCH nodename="C:\kimchiandchips\Workshops\VVVV-basics,mapping\1. IOBox.v4p" filename="C:\kimchiandchips\Workshops\VVVV-basics,mapping\template.v4p" locked="0" systemname="template">
<BOUNDS height="14070" left="-8535" top="0" type="Window" width="8370">
</BOUNDS>
<NODE componentmode="InABox" id="0" nodename="IOBox (String)" systemname="IOBox (String)">
<BOUNDS height="270" left="225" top="150" type="Node" width="1380">
</BOUNDS>
<BOUNDS height="1095" left="225" top="150" type="Box" width="7665">
</BOUNDS>
<PIN encoded="0" pinname="Input String" slicecount="1" visible="0" values="|1. IOBox|">
</PIN>
<PIN pinname="Output String" visible="0">
</PIN>
<PIN pinname="Show Grid" slicecount="1" values="1">
</PIN>
<PIN pinname="String Type" slicecount="1" values="MultiLine">
</PIN>
<PIN pinname="Size" slicecount="1" values="42">
</PIN>
</NODE>
<NODE componentmode="InABox" id="2" nodename="IOBox (String)" systemname="IOBox (String)">
<BOUNDS height="270" left="105" top="12705" type="Node" width="2070">
</BOUNDS>
<BOUNDS height="750" left="105" top="12705" type="Box" width="5325">
</BOUNDS>
<PIN encoded="0" pinname="Input String" slicecount="1" visible="0" values="|Created by Elliot Woods.&cr;&lf;Distributed under the MIT license (check file LICENSE) for details.&cr;&lf;Generally you can do whatever you want with these files. have fun!|">
</PIN>
<PIN pinname="Output String" visible="0">
</PIN>
<PIN pinname="Show Grid" slicecount="1" values="1">
</PIN>
<PIN pinname="String Type" slicecount="1" values="MultiLine">
</PIN>
</NODE>
<NODE componentmode="InABox" id="5" nodename="IOBox (String)" systemname="IOBox (String)">
<BOUNDS height="270" left="5805" top="2640" type="Node" width="1380">
</BOUNDS>
<BOUNDS height="540" left="5805" top="2640" type="Box" width="2085">
</BOUNDS>
<PIN encoded="0" pinname="Input String" visible="1">
</PIN>
<PIN pinname="Output String" visible="0">
</PIN>
<PIN pinname="Show Grid" slicecount="1" values="0">
</PIN>
<PIN pinname="String Type" slicecount="1" values="MultiLine">
</PIN>
<PIN pinname="Size" slicecount="1" values="12">
</PIN>
<PIN encoded="0" pinname="Descriptive Name" slicecount="1" values="Author">
</PIN>
</NODE>
<NODE componentmode="InABox" id="6" nodename="IOBox (String)" systemname="IOBox (String)">
<BOUNDS height="270" left="225" top="1260" type="Node" width="1380">
</BOUNDS>
<BOUNDS height="1155" left="225" top="1260" type="Box" width="7665">
</BOUNDS>
<PIN encoded="0" pinname="Input String" visible="1">
</PIN>
<PIN pinname="Output String" visible="0">
</PIN>
<PIN pinname="Show Grid" slicecount="1" values="0">
</PIN>
<PIN pinname="String Type" slicecount="1" values="MultiLine">
</PIN>
<PIN pinname="Size" slicecount="1" values="12">
</PIN>
<PIN encoded="0" pinname="Descriptive Name" slicecount="1" values="Description">
</PIN>
</NODE>
<INFO author="Elliot Woods" description="IOBox basics, interacting with VVVV" tags="IOBox, Value">
</INFO>
<NODE componentmode="Hidden" filename="Subpatches\GetMetadata (VVVV).v4p" hiddenwhenlocked="1" id="10" nodename="GetMetadata (VVVV)" systemname="GetMetadata (VVVV)">
<BOUNDS height="100" left="5820" top="1800" type="Node" width="100">
</BOUNDS>
<PIN pinname="Patch" visible="1">
</PIN>
<BOUNDS height="3465" left="14520" top="5520" type="Window" width="4680">
</BOUNDS>
<PIN pinname="Author" visible="1">
</PIN>
<PIN pinname="Description" visible="1">
</PIN>
<PIN pinname="Tags" visible="1">
</PIN>
</NODE>
<NODE componentmode="Hidden" hiddenwhenlocked="1" id="8" nodename="PatchAlias (VVVV)" systemname="PatchAlias (VVVV)">
<BOUNDS height="100" left="5820" top="1350" type="Node" width="100">
</BOUNDS>
<PIN pinname="Patch" visible="1">
</PIN>
</NODE>
<LINK dstnodeid="10" dstpinname="Patch" hiddenwhenlocked="1" srcnodeid="8" srcpinname="Patch">
</LINK>
<LINK dstnodeid="6" dstpinname="Input String" hiddenwhenlocked="1" linkstyle="VHV" srcnodeid="10" srcpinname="Description">
<LINKPOINT x="6445" y="2205">
</LINKPOINT>
<LINKPOINT x="245" y="2355">
</LINKPOINT>
</LINK>
<NODE componentmode="InABox" id="11" nodename="IOBox (String)" systemname="IOBox (String)">
<BOUNDS height="270" left="225" top="2640" type="Node" width="1380">
</BOUNDS>
<BOUNDS height="540" left="225" top="2640" type="Box" width="5520">
</BOUNDS>
<PIN encoded="0" pinname="Input String" visible="1">
</PIN>
<PIN pinname="Output String" visible="0">
</PIN>
<PIN pinname="Show Grid" slicecount="1" values="0">
</PIN>
<PIN pinname="String Type" slicecount="1" values="MultiLine">
</PIN>
<PIN pinname="Size" slicecount="1" values="12">
</PIN>
<PIN encoded="0" pinname="Descriptive Name" slicecount="1" values="Tags">
</PIN>
</NODE>
<LINK dstnodeid="11" dstpinname="Input String" hiddenwhenlocked="1" linkstyle="VHV" srcnodeid="10" srcpinname="Tags">
<LINKPOINT x="7015" y="2293">
</LINKPOINT>
<LINKPOINT x="275" y="2448">
</LINKPOINT>
</LINK>
<LINK dstnodeid="5" dstpinname="Input String" hiddenwhenlocked="1" srcnodeid="10" srcpinname="Author">
</LINK>
<NODE componentmode="InABox" id="12" nodename="IOBox (String)" systemname="IOBox (String)">
<BOUNDS height="270" left="2730" top="3690" type="Node" width="2070">
</BOUNDS>
<BOUNDS height="330" left="2730" top="3690" type="Box" width="1770">
</BOUNDS>
<PIN encoded="0" pinname="Input String" slicecount="1" visible="0" values="|[0 - IOBox]&cr;&lf;The most basic input / output mechanism in VVVV is the &lt;node&gt;IOBox&lt;/node&gt;.&cr;&lf;&lt;br /&gt;&cr;&lf;&cr;&lf;There are different IOBoxes for different types of data (Value, String, Color, Enum, Node).&cr;&lf;&lt;br /&gt;&cr;&lf;&cr;&lf;The most basic type of data is called a Value, which means a real number (note for programmers: this is currently represented by a double precision floating point value).&cr;&lf;&lt;br /&gt;&cr;&lf;&cr;&lf;IOBoxes perform multiple roles:&cr;&lf;&lt;ol&gt;&cr;&lf;&lt;li&gt;Give opportunities for user input/output&lt;/li&gt;&cr;&lf;&lt;li&gt;Holds data when no input is connected&lt;/li&gt;&cr;&lf;&lt;li&gt;Perform access to inputs/outputs of subpatches (more on that later!)&lt;/li&gt;&cr;&lf;&lt;/ol&gt;&cr;&lf;|">
</PIN>
<PIN pinname="Output String" visible="0">
</PIN>
<PIN pinname="Show Grid" slicecount="1" values="0">
</PIN>
<PIN pinname="String Type" slicecount="1" values="MultiLine">
</PIN>
<PIN pinname="Font" slicecount="1" values="|Arial Black|">
</PIN>
<PIN pinname="Size" slicecount="1" values="10">
</PIN>
<PIN encoded="0" pinname="Descriptive Name" slicecount="1" values="||">
</PIN>
</NODE>
<NODE componentmode="InABox" id="14" nodename="IOBox (Value Advanced)" systemname="IOBox (Value Advanced)">
<BOUNDS height="100" left="390" top="4665" type="Node" width="100">
</BOUNDS>
<BOUNDS height="1215" left="390" top="4665" type="Box" width="3645">
</BOUNDS>
<PIN pinname="Size" slicecount="1" values="47">
</PIN>
<PIN pinname="Y Output Value" visible="1">
</PIN>
<PIN pinname="Y Input Value" slicecount="1" values="0">
</PIN>
</NODE>
<NODE componentmode="InABox" id="17" nodename="IOBox (Value Advanced)" systemname="IOBox (Value Advanced)">
<BOUNDS height="100" left="2415" top="6645" type="Node" width="100">
</BOUNDS>
<BOUNDS height="660" left="2415" top="6645" type="Box" width="1965">
</BOUNDS>
<PIN pinname="Size" slicecount="1" values="24">
</PIN>
<PIN pinname="Y Output Value" visible="1">
</PIN>
</NODE>
<NODE componentmode="InABox" id="18" nodename="IOBox (Value Advanced)" systemname="IOBox (Value Advanced)">
<BOUNDS height="100" left="2415" top="8400" type="Node" width="100">
</BOUNDS>
<BOUNDS height="660" left="2415" top="8400" type="Box" width="1965">
</BOUNDS>
<PIN pinname="Size" slicecount="1" values="24">
</PIN>
<PIN pinname="Y Output Value" visible="1">
</PIN>
<PIN pinname="Y Input Value" visible="1">
</PIN>
</NODE>
<LINK dstnodeid="18" dstpinname="Y Input Value" srcnodeid="17" srcpinname="Y Output Value">
</LINK>
<NODE componentmode="InABox" id="19" nodename="IOBox (String)" systemname="IOBox (String)">
<BOUNDS height="270" left="2280" top="6195" type="Node" width="2070">
</BOUNDS>
<BOUNDS height="315" left="2280" top="6195" type="Box" width="2805">
</BOUNDS>
<PIN encoded="0" pinname="Input String" slicecount="1" visible="0" values="|[4 - When connected]&cr;&lf;When an &lt;pin&gt;input&lt;/pin&gt; is connected, then you cannot edit that input. &cr;&lf;&cr;&lf;Since altering the value of an IOBox would alter the value of an input, you cannot interact directly with the value of an IOBox when an input is attached.|">
</PIN>
<PIN pinname="Output String" visible="0">
</PIN>
<PIN pinname="Show Grid" slicecount="1" values="0">
</PIN>
<PIN pinname="String Type" slicecount="1" values="MultiLine">
</PIN>
<PIN pinname="Font" slicecount="1" values="|Arial Black|">
</PIN>
<PIN pinname="Size" slicecount="1" values="10">
</PIN>
<PIN encoded="0" pinname="Descriptive Name" slicecount="1" values="||">
</PIN>
</NODE>
<NODE componentmode="InABox" id="20" nodename="IOBox (String)" systemname="IOBox (String)">
<BOUNDS height="270" left="4200" top="4875" type="Node" width="2070">
</BOUNDS>
<BOUNDS height="330" left="4200" top="4875" type="Box" width="3300">
</BOUNDS>
<PIN encoded="0" pinname="Input String" slicecount="1" visible="0" values="|[1 - Drag right mouse button]&cr;&lf;&cr;&lf;Move your mouse cursor over the IOBox without pressing any buttons. Now hold down the right mouse button &lt;hold/&gt;&lt;rmb/&gt;and drag up/down to change the value.&cr;&lf;&lt;br /&gt;&cr;&lf;&cr;&lf;To move through values more slowly (more accuracy) hold down either &lt;key&gt;Ctrl&lt;/key&gt; or &lt;key&gt;Shift&lt;/key&gt; whilst dragging the right mouse button: e.g. &lt;key&gt;Ctrl&lt;/key&gt;+&lt;hold/&gt;&lt;rmb/&gt;. Hold down both to get even more accuracy &lt;key&gt;Ctrl&lt;/key&gt;+&lt;key&gt;Shift&lt;/key&gt;+&lt;hold/&gt;&lt;rmb/&gt;.&cr;&lf;&lt;br /&gt;&cr;&lf;&cr;&lf;To move through values more quickly hold down &lt;key&gt;Alt&lt;/key&gt;+&lt;key&gt;Ctrl&lt;/key&gt; or &lt;key&gt;Alt&lt;/key&gt;+&lt;key&gt;Shift&lt;/key&gt; whilst dragging the right mouse button. Hold &lt;key&gt;Alt&lt;/key&gt;+&lt;key&gt;Ctrl&lt;/key&gt;+&lt;key&gt;Shift&lt;/key&gt; for maximum speed.&cr;&lf;&lt;br /&gt;&cr;&lf;&cr;&lf;In VVVV, generally we use the right mouse button &lt;rmb/&gt; for interacting with Values and other datatypes. We use the left mouse button &lt;lmb/&gt; to change the patch itself.|">
</PIN>
<PIN pinname="Output String" visible="0">
</PIN>
<PIN pinname="Show Grid" slicecount="1" values="0">
</PIN>
<PIN pinname="String Type" slicecount="1" values="MultiLine">
</PIN>
<PIN pinname="Font" slicecount="1" values="|Arial Black|">
</PIN>
<PIN pinname="Size" slicecount="1" values="10">
</PIN>
<PIN encoded="0" pinname="Descriptive Name" slicecount="1" values="||">
</PIN>
</NODE>
<NODE componentmode="InABox" id="21" nodename="IOBox (String)" systemname="IOBox (String)">
<BOUNDS height="270" left="4200" top="5445" type="Node" width="2070">
</BOUNDS>
<BOUNDS height="330" left="4200" top="5445" type="Box" width="2700">
</BOUNDS>
<PIN encoded="0" pinname="Input String" slicecount="1" visible="0" values="|[2 - Double left click]&cr;&lf;&cr;&lf;The alternative way of changing the value is to double click on the IOBox &lt;click2/&gt;&lt;lmb/&gt; to change the value by entering it with the keyboard.|">
</PIN>
<PIN pinname="Output String" visible="0">
</PIN>
<PIN pinname="Show Grid" slicecount="1" values="0">
</PIN>
<PIN pinname="String Type" slicecount="1" values="MultiLine">
</PIN>
<PIN pinname="Font" slicecount="1" values="|Arial Black|">
</PIN>
<PIN pinname="Size" slicecount="1" values="10">
</PIN>
<PIN encoded="0" pinname="Descriptive Name" slicecount="1" values="||">
</PIN>
</NODE>
<NODE componentmode="InABox" id="22" nodename="IOBox (String)" systemname="IOBox (String)">
<BOUNDS height="270" left="4200" top="4470" type="Node" width="1290">
</BOUNDS>
<BOUNDS height="270" left="4200" top="4470" type="Box" width="1290">
</BOUNDS>
<PIN encoded="0" pinname="Input String" slicecount="1" visible="0" values="|Ways to interact|">
</PIN>
<PIN pinname="Output String" visible="0">
</PIN>
<PIN pinname="Show Grid" slicecount="1" values="0">
</PIN>
<PIN pinname="String Type" slicecount="1" values="MultiLine">
</PIN>
</NODE>
<NODE componentmode="InABox" id="23" nodename="IOBox (String)" systemname="IOBox (String)">
<BOUNDS height="270" left="360" top="4305" type="Node" width="2070">
</BOUNDS>
<BOUNDS height="330" left="360" top="4305" type="Box" width="3030">
</BOUNDS>
<PIN encoded="0" pinname="Input String" slicecount="1" visible="0" values="|[3 - Editing using input pin]&cr;&lf;&cr;&lf;In general, we can edit the value of an input pin by right clicking on it &lt;click/&gt;&lt;rmb/&gt;. We can also use right click drag &lt;hold/&gt;&lt;rmb/&gt;.&cr;&lf;&cr;&lf;An IOBox is a very special type of node where the contents can effect the input pin. No other node will affect its input pin.|">
</PIN>
<PIN pinname="Output String" visible="0">
</PIN>
<PIN pinname="Show Grid" slicecount="1" values="0">
</PIN>
<PIN pinname="String Type" slicecount="1" values="MultiLine">
</PIN>
<PIN pinname="Font" slicecount="1" values="|Arial Black|">
</PIN>
<PIN pinname="Size" slicecount="1" values="10">
</PIN>
<PIN encoded="0" pinname="Descriptive Name" slicecount="1" values="||">
</PIN>
</NODE>
<NODE componentmode="InABox" id="25" nodename="IOBox (String)" systemname="IOBox (String)">
<BOUNDS height="270" left="2055" top="9510" type="Node" width="2070">
</BOUNDS>
<BOUNDS height="315" left="2055" top="9510" type="Box" width="2805">
</BOUNDS>
<PIN encoded="0" pinname="Input String" slicecount="1" visible="0" values="|[5 - Spreaded IOBoxes]&cr;&lf;An &lt;node&gt;IOBox&lt;/node&gt; can carry more than one &lt;concept&gt;Value&lt;/concept&gt;. VVVV has a special way of dealing with several values at the same time, this is called a &lt;concept&gt;Spread&lt;/concept&gt;.&cr;&lf;&lt;br /&gt;&cr;&lf;&cr;&lf;Here we have an &lt;node&gt;IOBox&lt;/node&gt; which works with 4 values. This is sometimes called a &apos;4D vector&apos; &lt;node&gt;IOBox&lt;/node&gt;|">
</PIN>
<PIN pinname="Output String" visible="0">
</PIN>
<PIN pinname="Show Grid" slicecount="1" values="0">
</PIN>
<PIN pinname="String Type" slicecount="1" values="MultiLine">
</PIN>
<PIN pinname="Font" slicecount="1" values="|Arial Black|">
</PIN>
<PIN pinname="Size" slicecount="1" values="10">
</PIN>
<PIN encoded="0" pinname="Descriptive Name" slicecount="1" values="||">
</PIN>
</NODE>
<NODE systemname="IOBox (Value Advanced)" nodename="IOBox (Value Advanced)" componentmode="InABox" id="26">
<BOUNDS type="Node" left="2835" top="9885" width="100" height="100">
</BOUNDS>
<BOUNDS type="Box" left="2835" top="9885" width="1095" height="1455">
</BOUNDS>
<PIN pinname="Rows" slicecount="1" values="4">
</PIN>
<PIN pinname="Y Input Value" slicecount="4" values="0,0,0,1">
</PIN>
<PIN pinname="Vector Size" slicecount="1" values="4">
</PIN>
<PIN pinname="Default" slicecount="1" values="|0, 0, 0, 1|" encoded="0">
</PIN>
<PIN pinname="Size" slicecount="1" values="13">
</PIN>
</NODE>
<NODE componentmode="InABox" id="27" nodename="IOBox (String)" systemname="IOBox (String)">
<BOUNDS height="270" left="1725" top="11910" type="Node" width="2070">
</BOUNDS>
<BOUNDS height="345" left="1725" top="11910" type="Box" width="3600">
</BOUNDS>
<PIN encoded="0" pinname="Input String" slicecount="1" visible="0" values="|[6 - Shortcut to create IOBox]&cr;&lf;Since you&apos;ll be making these all the time, VVVV kindly gives you a shortcut to create a new &lt;node&gt;IOBox&lt;/node&gt;.&cr;&lf;&lt;br /&gt;&cr;&lf;&cr;&lf;To do this double right click &lt;click2/&gt;&lt;rmb/&gt; in an empty area of the patch. This will give you a simple &lt;node&gt;IOBox (Value advanced)&lt;/node&gt;. &lt;br /&gt;&cr;&lf;&cr;&lf;A menu will also appear allowing you to create different types of &lt;node&gt; IOBox&lt;/node&gt;.|">
</PIN>
<PIN pinname="Output String" visible="0">
</PIN>
<PIN pinname="Show Grid" slicecount="1" values="0">
</PIN>
<PIN pinname="String Type" slicecount="1" values="MultiLine">
</PIN>
<PIN pinname="Font" slicecount="1" values="|Arial Black|">
</PIN>
<PIN pinname="Size" slicecount="1" values="10">
</PIN>
<PIN encoded="0" pinname="Descriptive Name" slicecount="1" values="||">
</PIN>
</NODE>
</PATCH>