<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Pure Data noob]]></title><description><![CDATA[<p>We have all been there............<br />
You have an abstract idea, and you are hard pressed to get ahead and build your patch!<br />
But before you start....... you have to “know”...... at least......... that this.............<br />
<img src="/uploads/files/1452620754100-new.jpg" alt="new.JPG" class="img-responsive img-markdown" /><br />
Is the same as this..........<br />
<img src="/uploads/files/1452620776253-better.jpg" alt="better.JPG" class="img-responsive img-markdown" /><br />
Well........nearly.  There is in fact much more in the second patch.<br />
And although the second patch is not perfect (in fact there are many mistakes), it is much easier to work with (and easier to find those mistakes).<br />
You can build the first patch in about 2 minutes using just two components (abstractions) of the second patch. An abstraction is a patch... like a subroutine... that you can use over and over again.</p>
<p>Why is this important?<br />
Because at some point your patch will become very messy, and if you are unlucky then it will stop working.  You will not be able to see the mistake in the giant cobweb that you have created...... and when you finally spot that mistake you will have to fix it in 200 different places!<br />
It is quite likely that you will then delete important items or connections by accident and cause more problems...... and not finish your project on time.<br />
If you have a new brainwave with the first patch then you will be eating your breakfast after a sleepless night with your patch.  With the second you will be hearing the result within minutes.<br />
Please study the attached patches for as long as you can remain interested. They are difficult if you really are a complete beginner.  If you have more experience then you will of course understand a lot more...........</p>
<p>If none of that is even remotely understandable then you have missed out on the basics.<br />
It is much easier to use a dishwasher if you know where to put the soap and that it needs mains electricity to work at all......... <a href="http://puredata.info/docs/manuals/pd/x2.htm" rel="nofollow">http://puredata.info/docs/manuals/pd/x2.htm</a><br />
DO NOT read chapter 2.9 yet.</p>
<p>( I have tried to explain some of the workings, especially the use of $ variables within an abstraction.  (PLEASE SEE THE POST &quot;show_me_dollars&quot; BELOW IF YOU DO NOT UNDERSTAND THE USE OF &quot;$&quot;))</p>
<p>Try to remember while you are working that there is almost always a better (and easier) way to build your patches. Look in “soundbox.pd” as well for some $ clues!<br />
As your project progresses you might come back here again, having found that you are able to create abstractions of your own.  You will then be amazed at your understanding of what I am sure looks very difficult at this first glance!<br />
Please do glance........it will do you good in the long run......<br />
<a href="/uploads/files/1452620873806-pd-noob.zip">Pd noob.zip</a><br />
David.</p>
]]></description><link>http://forum.pdpatchrepo.info/topic/9774/pure-data-noob</link><generator>RSS for Node</generator><lastBuildDate>Thu, 16 Apr 2026 11:43:52 GMT</lastBuildDate><atom:link href="http://forum.pdpatchrepo.info/topic/9774.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 12 Jan 2016 17:48:04 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Pure Data noob on Sat, 10 Nov 2018 09:44:05 GMT]]></title><description><![CDATA[<p>We have all been there............<br />
You have an abstract idea, and you are hard pressed to get ahead and build your patch!<br />
But before you start....... you have to “know”...... at least......... that this.............<br />
<img src="/uploads/files/1452620754100-new.jpg" alt="new.JPG" class="img-responsive img-markdown" /><br />
Is the same as this..........<br />
<img src="/uploads/files/1452620776253-better.jpg" alt="better.JPG" class="img-responsive img-markdown" /><br />
Well........nearly.  There is in fact much more in the second patch.<br />
And although the second patch is not perfect (in fact there are many mistakes), it is much easier to work with (and easier to find those mistakes).<br />
You can build the first patch in about 2 minutes using just two components (abstractions) of the second patch. An abstraction is a patch... like a subroutine... that you can use over and over again.</p>
<p>Why is this important?<br />
Because at some point your patch will become very messy, and if you are unlucky then it will stop working.  You will not be able to see the mistake in the giant cobweb that you have created...... and when you finally spot that mistake you will have to fix it in 200 different places!<br />
It is quite likely that you will then delete important items or connections by accident and cause more problems...... and not finish your project on time.<br />
If you have a new brainwave with the first patch then you will be eating your breakfast after a sleepless night with your patch.  With the second you will be hearing the result within minutes.<br />
Please study the attached patches for as long as you can remain interested. They are difficult if you really are a complete beginner.  If you have more experience then you will of course understand a lot more...........</p>
<p>If none of that is even remotely understandable then you have missed out on the basics.<br />
It is much easier to use a dishwasher if you know where to put the soap and that it needs mains electricity to work at all......... <a href="http://puredata.info/docs/manuals/pd/x2.htm" rel="nofollow">http://puredata.info/docs/manuals/pd/x2.htm</a><br />
DO NOT read chapter 2.9 yet.</p>
<p>( I have tried to explain some of the workings, especially the use of $ variables within an abstraction.  (PLEASE SEE THE POST &quot;show_me_dollars&quot; BELOW IF YOU DO NOT UNDERSTAND THE USE OF &quot;$&quot;))</p>
<p>Try to remember while you are working that there is almost always a better (and easier) way to build your patches. Look in “soundbox.pd” as well for some $ clues!<br />
As your project progresses you might come back here again, having found that you are able to create abstractions of your own.  You will then be amazed at your understanding of what I am sure looks very difficult at this first glance!<br />
Please do glance........it will do you good in the long run......<br />
<a href="/uploads/files/1452620873806-pd-noob.zip">Pd noob.zip</a><br />
David.</p>
]]></description><link>http://forum.pdpatchrepo.info/topic/9774/pure-data-noob</link><guid isPermaLink="true">http://forum.pdpatchrepo.info/topic/9774/pure-data-noob</guid><dc:creator><![CDATA[whale-av]]></dc:creator><pubDate>Sat, 10 Nov 2018 09:44:05 GMT</pubDate></item><item><title><![CDATA[Reply to Pure Data noob on Tue, 12 Jan 2016 23:48:45 GMT]]></title><description><![CDATA[<p>Very nice advice, David!</p>
]]></description><link>http://forum.pdpatchrepo.info/topic/9774/pure-data-noob/2</link><guid isPermaLink="true">http://forum.pdpatchrepo.info/topic/9774/pure-data-noob/2</guid><dc:creator><![CDATA[gsagostinho]]></dc:creator><pubDate>Tue, 12 Jan 2016 23:48:45 GMT</pubDate></item><item><title><![CDATA[Reply to Pure Data noob on Tue, 19 Jan 2016 09:22:40 GMT]]></title><description><![CDATA[<p>Here is another piece of advice to complement David's. This one is more about approach and less about technique, but it has helped me to drastically simplify my patching.</p>
<p><strong>Build tools rather than systems.</strong></p>
<p>This might not seem like a very precise distinction, so let me give an example. I am trying to create a sequencer that can bang numbers on a list in their proper order, so that the list “1 2 4” would be played as “bang bang 0 bang” (where 0 is a pause). I also want the sequencer to be able to start from any position in the list, and play the sequence in reverse order. I first tried to create a system that would achieve this, encountering new situations as I went and trying to patch them in. The number of conditions grew and the system got more and more complicated, until I can't really understand it anymore and it doesn't work anyway:</p>
<p><img src="/uploads/files/1453195319110-seq1.png" alt="seq1.png" class="img-responsive img-markdown" /><br />
So I started again from scratch, and instead of building a system, I built three simple tools:</p>
<ol>
<li>a counter which counts from x to y and then stops</li>
<li>a tool which decides where to count from and where to count to</li>
<li>a tool which matches the count with the given list, and outputs a bang if a match is found.</li>
</ol>
<p>The result looks like this:<br />
<img src="/uploads/files/1453195326072-seq2.png" alt="seq2.png" class="img-responsive img-markdown" /><br />
Believe it or not, the second patch does everything that the first one does, and does it better!</p>
<p>The drawback, of course, is that you need a lot of foresight. Most times I don't really know what I'm aiming for in a new patch, and I certainly don't know what problems I am going to encounter—I'm just exploring. But even if it takes two or three shots to make the right tools, it's worth it in the long run. Not only does this approach make patching more elegant and efficient, it also makes it much easier to modify when you encounter an unexpected problem in the future.</p>
]]></description><link>http://forum.pdpatchrepo.info/topic/9774/pure-data-noob/3</link><guid isPermaLink="true">http://forum.pdpatchrepo.info/topic/9774/pure-data-noob/3</guid><dc:creator><![CDATA[LiamG]]></dc:creator><pubDate>Tue, 19 Jan 2016 09:22:40 GMT</pubDate></item><item><title><![CDATA[Reply to Pure Data noob on Mon, 04 Apr 2022 16:02:09 GMT]]></title><description><![CDATA[<p>Ok...... So I have been meaning to do this for a very long time......<br />
I don't think it is the perfect &quot;show_me_dollars&quot; and so I will change it from time to time.<br />
3rd attempt.........<br />
<a href="/uploads/files/1481391926558-show_me_dollars.zip">show_me_dollars.zip</a><br />
Here is a really terrifying screenshot, but I have also tried to explain it in words.<br />
In many ways I think words ( below the screenshot) are easier to understand.<br />
David.<br />
<img src="/uploads/files/1481391910904-capture.jpg" alt="Capture.JPG" class="img-responsive img-markdown" /></p>
<hr />
<hr />
<p>Dollar $ variables in Pure Data patches.<br />
A dollar variable is a thing that can be given a new value.<br />
The new value can be a float or a symbol.</p>
<hr />
<ol>
<li>If the Dollar variable is in an [object] box<br />
A Pd patch can be saved and used inside another patch.  We then call it an abstraction.... and it is just like a programming sub-routine.<br />
If you want to use it many times then you have a problem, that they are all the same, so if you put an object [receive woof] they will all receive any message that you send with [send woof].<br />
That might well be what you want to do.<br />
But what if you want to send the message to only one of them?<br />
You can give it an [inlet], but your patch will get messy, and what if your patch needs to make its own mind up about which abstraction it wants to send the message to, maybe depending on which midi note it received?<br />
The solution is to give the abstraction arguments... some parameters that define it and make it different to the other copies.<br />
For example [my_abstraction]<br />
Let’s give it some arguments [my_abstraction 5 9 woof]<br />
Inside the abstraction, as it is created (you open its parent patch) the dollar variables will be replaced.  Wherever you see $1 written IN AN OBJECT it has been replaced by the number 5.<br />
Number 5 because 5 is the first argument and has actually replaced the $1.  You still see $1, but if you bang a [$1] object it will output 5.<br />
[f $2] will output 9<br />
[symbol $3] will output woof<br />
So if you have an object [receive $1-$3] then it has now become [receive 5-woof]<br />
And if you want to send it a message from outside, from another patch or abstraction, you will need to use [send 5-woof]<br />
Every Pd patch, which remember includes your abstractions, also has a secret number.  The number is unique and greater than 1000.  As Pd opens each patch it gives it the number, increased by one from the last number it gave.<br />
That number will replace $0 as the patch is created.  You can find out what the number is by banging a [$0] object and connecting its output to a number box, or [print] object.<br />
$0 can be used in any object as part of the name or the address, which means that a message cannot escape from the abstraction.  A sub-patch like [pd my-subpatch] will be given the same number.<br />
But from outside your abstraction you don’t know what it will be when the patch is created, so it is not useful.  (A lie, you can find out, but as it can change every time you open your patch it is not worth the bother).<br />
Use it to send messages within your patch [send $0-reset] to [receive $0-reset] for example, because the message is absolutely unique to its window, so you know it cannot interfere with other abstractions.<br />
Use it also for objects like [delwrite~ $0-buffer 100] or for an array name [array $0-array] so that in each abstraction they have a different name and you will not have problems with their being &quot;multiply defined&quot;...... as each name can only exist once in your patch.</li>
</ol>
<hr />
<ol start="2">
<li>If the Dollar $ variable is in a [message( box<br />
Dollar $ variables are also replaced, but not as the patch is created (drawn by Pd as you open it).<br />
Dollar zero $0 has no meaning in a message box.  It will produce a zero if the message is banged, but that is it.<br />
It is a mistake, a patching error, to put a $0 in a message box.<br />
$1 $2 $3 $4 etc.  in a message box are replaced by incoming atoms (individual floats or symbols or whatever) when they arrive. $1 will be replaced by the first atom in the list, $2 the second etc.<br />
So if you have a message box [$1 $2 $3( ..... and you send into it a list [3 48 lala( .....then it will output 3 48 lala<br />
That is not really very useful.<br />
But it is actually very powerful.<br />
Make a list in a message box........ [33 12 wav(<br />
And bang it into a message box [open my-track$2-$1.$3( and you will get the output.........<br />
open my-track12-33.wav<br />
Which could be just the message that you want to send to [soundfiler]</li>
</ol>
<hr />
<p>P.S.  If the first item in the incoming list is a symbol then it will be dropped causing errors.<br />
You can fix that by making the message a list by passing it through the object [list].<br />
Unfortunately only messages starting with a float are automatically recognised as lists.</p>
]]></description><link>http://forum.pdpatchrepo.info/topic/9774/pure-data-noob/4</link><guid isPermaLink="true">http://forum.pdpatchrepo.info/topic/9774/pure-data-noob/4</guid><dc:creator><![CDATA[whale-av]]></dc:creator><pubDate>Mon, 04 Apr 2022 16:02:09 GMT</pubDate></item><item><title><![CDATA[Reply to Pure Data noob on Thu, 08 Dec 2016 14:39:26 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-a" href="http://forum.pdpatchrepo.info/user/whale-av">@whale-av</a></p>
<p>I did one some time ago, here is what I came up with <img class="emoji emoji-extended" src="http://forum.pdpatchrepo.info/plugins/nodebb-plugin-emoji-extended/images/grinning.png" title=":)" alt=":)" /></p>
<p><a href="/uploads/files/1481207898376-abstraction-help.pd">abstraction-help.pd</a><br />
<a href="/uploads/files/1481207898376-abstraction.pd">abstraction.pd</a></p>
]]></description><link>http://forum.pdpatchrepo.info/topic/9774/pure-data-noob/5</link><guid isPermaLink="true">http://forum.pdpatchrepo.info/topic/9774/pure-data-noob/5</guid><dc:creator><![CDATA[Berenger]]></dc:creator><pubDate>Thu, 08 Dec 2016 14:39:26 GMT</pubDate></item><item><title><![CDATA[Reply to Pure Data noob on Sat, 25 Jan 2020 13:42:48 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-a" href="http://forum.pdpatchrepo.info/user/whale-av">@whale-av</a> <img src="/uploads/files/1579959759754-image.png" alt="image.png" class="img-responsive img-markdown" /> what is this?</p>
]]></description><link>http://forum.pdpatchrepo.info/topic/9774/pure-data-noob/6</link><guid isPermaLink="true">http://forum.pdpatchrepo.info/topic/9774/pure-data-noob/6</guid><dc:creator><![CDATA[4ZZ4]]></dc:creator><pubDate>Sat, 25 Jan 2020 13:42:48 GMT</pubDate></item><item><title><![CDATA[Reply to Pure Data noob on Sat, 25 Jan 2020 14:44:50 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-a" href="http://forum.pdpatchrepo.info/user/4zz4">@4ZZ4</a> It was an abstraction from Pd extended.<br />
A much used abstraction years ago..... it &quot;loadbangs&quot; and allows you to &quot;bang again&quot; with the mouse if you need to....... <a href="/uploads/files/1579963335487-lbang.zip">lbang.zip</a><br />
There are probably a thousand or more useful abstractions (as opposed to compiled externals) lurking still in the old extended libraries.<br />
It is hard to remember to include them in an uploaded patch....... and at the time of my posts above extended was still very popular.<br />
David.</p>
]]></description><link>http://forum.pdpatchrepo.info/topic/9774/pure-data-noob/7</link><guid isPermaLink="true">http://forum.pdpatchrepo.info/topic/9774/pure-data-noob/7</guid><dc:creator><![CDATA[whale-av]]></dc:creator><pubDate>Sat, 25 Jan 2020 14:44:50 GMT</pubDate></item><item><title><![CDATA[Reply to Pure Data noob on Mon, 26 Aug 2024 02:18:26 GMT]]></title><description><![CDATA[<p>else/loadbanger allows you to click on it to bang again by the way</p>
]]></description><link>http://forum.pdpatchrepo.info/topic/9774/pure-data-noob/8</link><guid isPermaLink="true">http://forum.pdpatchrepo.info/topic/9774/pure-data-noob/8</guid><dc:creator><![CDATA[porres]]></dc:creator><pubDate>Mon, 26 Aug 2024 02:18:26 GMT</pubDate></item></channel></rss>