<?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[Tracker style &quot;FX&quot; list]]></title><description><![CDATA[<p>Hi,</p>
<p>I want to be able to add commands to a list and step forward through it, similar to a &quot;channel&quot; in a tracker style sequencer.</p>
<p>I figure a good way to do it is to just use [text].</p>
<p>Or? Could there be a better solution? Or even abstraction. The ELSE library?</p>
<p>...</p>
<p>Image for reference:</p>
<p><img src="/uploads/files/1755103647567-221555.png" alt="221555.png" class="img-responsive img-markdown" /></p>
<p>All good</p>
]]></description><link>http://forum.pdpatchrepo.info/topic/15682/tracker-style-fx-list</link><generator>RSS for Node</generator><lastBuildDate>Tue, 06 Oct 2026 05:58:18 GMT</lastBuildDate><atom:link href="http://forum.pdpatchrepo.info/topic/15682.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 13 Aug 2025 17:38:42 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Tracker style &quot;FX&quot; list on Wed, 13 Aug 2025 17:39:05 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>I want to be able to add commands to a list and step forward through it, similar to a &quot;channel&quot; in a tracker style sequencer.</p>
<p>I figure a good way to do it is to just use [text].</p>
<p>Or? Could there be a better solution? Or even abstraction. The ELSE library?</p>
<p>...</p>
<p>Image for reference:</p>
<p><img src="/uploads/files/1755103647567-221555.png" alt="221555.png" class="img-responsive img-markdown" /></p>
<p>All good</p>
]]></description><link>http://forum.pdpatchrepo.info/topic/15682/tracker-style-fx-list</link><guid isPermaLink="true">http://forum.pdpatchrepo.info/topic/15682/tracker-style-fx-list</guid><dc:creator><![CDATA[cfry]]></dc:creator><pubDate>Wed, 13 Aug 2025 17:39:05 GMT</pubDate></item><item><title><![CDATA[Reply to Tracker style &quot;FX&quot; list on Wed, 13 Aug 2025 19:25:58 GMT]]></title><description><![CDATA[<p>you might end up with  list columns.  it isnt one list really.  its  multiple lists at the same time. then you maybe use numbers  and  read numbers from the list and they trigger commands.</p>
]]></description><link>http://forum.pdpatchrepo.info/topic/15682/tracker-style-fx-list/2</link><guid isPermaLink="true">http://forum.pdpatchrepo.info/topic/15682/tracker-style-fx-list/2</guid><dc:creator><![CDATA[willblackhurst]]></dc:creator><pubDate>Wed, 13 Aug 2025 19:25:58 GMT</pubDate></item><item><title><![CDATA[Reply to Tracker style &quot;FX&quot; list on Thu, 14 Aug 2025 07:48:34 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-a" href="http://forum.pdpatchrepo.info/user/cfry">@cfry</a> Don't think you will find an external or abstraction which will be easier/better for this than [text] unless someone made exactly what you were looking for and even then it will only be easier until you decide to change things and start banging your head against the limitations of the external or abstraction. This is a pretty simple thing to throw together using [text] and [text get] or [text sequence] depending on your needs, a simple looping [text get] sequencer is not complex and easy to expand to a full tracker like interface even.<br />
<img src="/uploads/files/1755115982027-untitled.png" alt="Untitled.png" class="img-responsive img-markdown" /><br />
[text sequence] is even simpler but has some limitations, it is great when your needs align with it but almost everytime I use it my needs grow beyond its limitations and I switch to [text get]. [text get] also tends to result in neater, easier to read patches since you don't have all those messages going to one inlet.</p>
<p>Edit: Must not have been quite awake when I patched that moses in, bet I thought I was being clever.</p>
]]></description><link>http://forum.pdpatchrepo.info/topic/15682/tracker-style-fx-list/3</link><guid isPermaLink="true">http://forum.pdpatchrepo.info/topic/15682/tracker-style-fx-list/3</guid><dc:creator><![CDATA[oid]]></dc:creator><pubDate>Thu, 14 Aug 2025 07:48:34 GMT</pubDate></item><item><title><![CDATA[Reply to Tracker style &quot;FX&quot; list on Wed, 13 Aug 2025 21:00:42 GMT]]></title><description><![CDATA[<p>Yes thanks, it seems like [text] is optimal for this purpose.</p>
<p>Once I understood that I can use [list split] to separate messages it became smooth. That both comma an semicolon made it a new message posed some problems.</p>
]]></description><link>http://forum.pdpatchrepo.info/topic/15682/tracker-style-fx-list/4</link><guid isPermaLink="true">http://forum.pdpatchrepo.info/topic/15682/tracker-style-fx-list/4</guid><dc:creator><![CDATA[cfry]]></dc:creator><pubDate>Wed, 13 Aug 2025 21:00:42 GMT</pubDate></item><item><title><![CDATA[Reply to Tracker style &quot;FX&quot; list on Wed, 13 Aug 2025 21:45:16 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-a" href="http://forum.pdpatchrepo.info/user/cfry">@cfry</a> Dealing with hex is almost always irritating in pd, I generally try and make the hex UI only and keep it as floats under the hood, but that is not always practical. The comma behavior is fairly useful, just need to format your data to exploit it and it makes sense when you think about it since if it did not work that way the object the [text get] is connected to would see a line  like <code>1, 2, 3, 4;</code> as four separate messages and not the single message <code>1, 2, 3, 4</code>, it would be the same as [1, 2,  3,  4( into a [list] which generally will not give the desired result . That one caused me some grief at first until I learned to use it to my advantage.</p>
]]></description><link>http://forum.pdpatchrepo.info/topic/15682/tracker-style-fx-list/5</link><guid isPermaLink="true">http://forum.pdpatchrepo.info/topic/15682/tracker-style-fx-list/5</guid><dc:creator><![CDATA[oid]]></dc:creator><pubDate>Wed, 13 Aug 2025 21:45:16 GMT</pubDate></item><item><title><![CDATA[Reply to Tracker style &quot;FX&quot; list on Wed, 13 Aug 2025 23:30:23 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-a" href="http://forum.pdpatchrepo.info/user/cfry">@cfry</a> said:</p>
<blockquote>
<p>The ELSE library?</p>
</blockquote>
<p>Not really a tracker list... but check [else/score] and [else/score2]</p>
]]></description><link>http://forum.pdpatchrepo.info/topic/15682/tracker-style-fx-list/6</link><guid isPermaLink="true">http://forum.pdpatchrepo.info/topic/15682/tracker-style-fx-list/6</guid><dc:creator><![CDATA[porres]]></dc:creator><pubDate>Wed, 13 Aug 2025 23:30:23 GMT</pubDate></item><item><title><![CDATA[Reply to Tracker style &quot;FX&quot; list on Thu, 14 Aug 2025 08:24:12 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-a" href="http://forum.pdpatchrepo.info/user/oid">@oid</a> I will not use Hex, for convenience, and my own sanity. Its just the mode of operation that I am after.</p>
<p>But [text get] actually treats comma and semicolon the same way, ie end of message. The right output gives a number that indicates if the message was ended with a comma or semicolon. Since I want to keep the messages and rows in the text &quot;synced&quot;, use the line as an index for the messages, this behavior becomes a problem. So either invent some custom separator or use [line split]. I always felt using [line split] a bit awkward but this seem to be the proper solution.</p>
]]></description><link>http://forum.pdpatchrepo.info/topic/15682/tracker-style-fx-list/7</link><guid isPermaLink="true">http://forum.pdpatchrepo.info/topic/15682/tracker-style-fx-list/7</guid><dc:creator><![CDATA[cfry]]></dc:creator><pubDate>Thu, 14 Aug 2025 08:24:12 GMT</pubDate></item><item><title><![CDATA[Reply to Tracker style &quot;FX&quot; list on Thu, 14 Aug 2025 09:57:12 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-a" href="http://forum.pdpatchrepo.info/user/cfry">@cfry</a> Might help...... <a href="/uploads/files/1755164931522-no-comma.zip">no-comma.zip</a><br />
Will remove commas from e.g.<br />
A, 3;<br />
B, 6;<br />
etc.<br />
.... but depends on the lines being always of 2 elements.<br />
[text define] seems to display the data very differently in 0.55 and 0.50.... but results are the same...<br />
David.<br />
<img src="/uploads/files/1755165051650-capture.jpg" alt="Capture.JPG" class="img-responsive img-markdown" /></p>
]]></description><link>http://forum.pdpatchrepo.info/topic/15682/tracker-style-fx-list/8</link><guid isPermaLink="true">http://forum.pdpatchrepo.info/topic/15682/tracker-style-fx-list/8</guid><dc:creator><![CDATA[whale-av]]></dc:creator><pubDate>Thu, 14 Aug 2025 09:57:12 GMT</pubDate></item><item><title><![CDATA[Reply to Tracker style &quot;FX&quot; list on Thu, 14 Aug 2025 10:44:52 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-a" href="http://forum.pdpatchrepo.info/user/cfry">@cfry</a> I was thinking you were using [list split] in place of [unpack] to deal with hex being made up of both floats like 11 and symbols like a1. I can't quite figure out what you are doing with the [list split],. I suspect you just need to develop a more complex counter and maybe tweak how your data is stored and you will be able to make things cleaner. Providing some more information might help in offering alternatives, the format of your data and how you need to access it, perhaps a simple mockup of your patch.</p>
]]></description><link>http://forum.pdpatchrepo.info/topic/15682/tracker-style-fx-list/9</link><guid isPermaLink="true">http://forum.pdpatchrepo.info/topic/15682/tracker-style-fx-list/9</guid><dc:creator><![CDATA[oid]]></dc:creator><pubDate>Thu, 14 Aug 2025 10:44:52 GMT</pubDate></item><item><title><![CDATA[Reply to Tracker style &quot;FX&quot; list on Thu, 14 Aug 2025 11:25:59 GMT]]></title><description><![CDATA[<p><img src="/uploads/files/1755170189525-ska-rmavbild-2025-08-14-kl.13.15.46.png" alt="Skärmavbild 2025-08-14 kl. 13.15.46.png" class="img-responsive img-markdown" /></p>
<p>If you look at line 9/message 9 there are two commands. If I would to separate them by comma it would be regarded as two messages and would be output as message 9 (valAdd 1)and then 10 (goto 7).</p>
<p>I want to be able to add an arbitrary amount of commands per message.</p>
<p>Using line like this will only allow me to have one or two messages but it will at least send both commands in the same message (message index 9)</p>
<p>What is awkward is that each command must have the same format here (variable and value).</p>
<p>I imagine I can have an abstraction that I just update with new commands that I create and keep it separate from the texts (&quot;fx1&quot; here).</p>
]]></description><link>http://forum.pdpatchrepo.info/topic/15682/tracker-style-fx-list/10</link><guid isPermaLink="true">http://forum.pdpatchrepo.info/topic/15682/tracker-style-fx-list/10</guid><dc:creator><![CDATA[cfry]]></dc:creator><pubDate>Thu, 14 Aug 2025 11:25:59 GMT</pubDate></item><item><title><![CDATA[Reply to Tracker style &quot;FX&quot; list on Thu, 14 Aug 2025 13:08:53 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-a" href="http://forum.pdpatchrepo.info/user/cfry">@cfry</a> You can chain [list split 2]'s.... middle outlet of each to the inlet of the next + left outlets in parallel ..... so as to have longer name/value lists on each line.</p>
<p>And also If you use [route symbol] with just the one argument ( multiple [route symbol] objects in parallel ) it can be updated through the right inlet if necessary.<br />
David.</p>
]]></description><link>http://forum.pdpatchrepo.info/topic/15682/tracker-style-fx-list/11</link><guid isPermaLink="true">http://forum.pdpatchrepo.info/topic/15682/tracker-style-fx-list/11</guid><dc:creator><![CDATA[whale-av]]></dc:creator><pubDate>Thu, 14 Aug 2025 13:08:53 GMT</pubDate></item><item><title><![CDATA[Reply to Tracker style &quot;FX&quot; list on Thu, 14 Aug 2025 12:09:32 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-a" href="http://forum.pdpatchrepo.info/user/whale-av">@whale-av</a> yes that is interesting. But atm I do not see the use case for this. It seems more simple to just edit the route object(s) and resave the abs. And make sure all connections are still going to the right place.</p>
]]></description><link>http://forum.pdpatchrepo.info/topic/15682/tracker-style-fx-list/12</link><guid isPermaLink="true">http://forum.pdpatchrepo.info/topic/15682/tracker-style-fx-list/12</guid><dc:creator><![CDATA[cfry]]></dc:creator><pubDate>Thu, 14 Aug 2025 12:09:32 GMT</pubDate></item><item><title><![CDATA[Reply to Tracker style &quot;FX&quot; list on Thu, 14 Aug 2025 20:30:43 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-a" href="http://forum.pdpatchrepo.info/user/cfry">@cfry</a> To get around each command needing the same format the easiest is just to make them all the same, have a null argument like bang.<br />
<img src="/uploads/files/1755201263356-untitled1.png" alt="Untitled1.png" class="img-responsive img-markdown" /><br />
Now we can just skip the commas and have as many commands per line as you want. If you want to run the command &quot;stop&quot; you just make the message &quot;stop bang&quot; and it sends a bang to [r stop]. Would probably want to add a [list prepend $1] between the [list split] and the message and make the message [; $1$2 $3( so you can pass the parent patch's $0 and prepend it to the symbol but that might not be needed for your use?</p>
<p>If you want commands with more than one argument things get more difficult since you don't want to always have to type in all those null characters or symbols, but it is not that difficult to create a simple editor which does it for you, especially now that we got [list box), I have one somewhere from when I made a tracker like thing years ago, I will see if I can find it later if you want to check it out.</p>
<p>If you really want commands with an arbitrary number of arguments and no nulls, use commas and exploit the right outlet of [text get]. This does complicate things regarding line number vs message number but making that [sel 1] into a [sel 0 1] and using the 0 outlet to bang a second counter for the line number might be enough?<br />
<img src="/uploads/files/1755202210358-untitled2.png" alt="Untitled2.png" class="img-responsive img-markdown" /></p>
]]></description><link>http://forum.pdpatchrepo.info/topic/15682/tracker-style-fx-list/13</link><guid isPermaLink="true">http://forum.pdpatchrepo.info/topic/15682/tracker-style-fx-list/13</guid><dc:creator><![CDATA[oid]]></dc:creator><pubDate>Thu, 14 Aug 2025 20:30:43 GMT</pubDate></item><item><title><![CDATA[Reply to Tracker style &quot;FX&quot; list on Thu, 14 Aug 2025 22:37:35 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-a" href="http://forum.pdpatchrepo.info/user/oid">@oid</a> wow that is beautiful. And thanks for showing using sends. Got rid of some messy cabling.</p>
<p>It would be nice to see that tracker thing, if you find it please let me know.</p>
<p>My purpose is not build a tracker but just to have this little module that I can throw in wherever I want this type of modulation function. So its basically there already.</p>
<p>--</p>
<p>I plan to add a loop function with nn iterations as well. Thinking about it now, that may be a bit tricky because I would need a command with two values (target line, iteration).</p>
<p>Do you think it would make sense to use a format like this:</p>
<p>loop 10 = forever loop between this line and line 10<br />
loop 10x4 = loop 4 times between this line and line 10.</p>
<p>(10x4 will be a symbol, needs to be split up, x is the decimator, and then 10 and 4 needs to be made floats again)</p>
<p>Or could there be a better solution?</p>
]]></description><link>http://forum.pdpatchrepo.info/topic/15682/tracker-style-fx-list/14</link><guid isPermaLink="true">http://forum.pdpatchrepo.info/topic/15682/tracker-style-fx-list/14</guid><dc:creator><![CDATA[cfry]]></dc:creator><pubDate>Thu, 14 Aug 2025 22:37:35 GMT</pubDate></item><item><title><![CDATA[Reply to Tracker style &quot;FX&quot; list on Fri, 15 Aug 2025 20:20:53 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-a" href="http://forum.pdpatchrepo.info/user/cfry">@cfry</a> I would avoid things like 10x4, as time goes on and you think up new commands for this little abstraction you will likely come up with ones which need more arguments and writing/reading/breaking up these symbols will get tiring. Just parsing the line itself will be easier, just need to run it through a [list-drip] and some logic which decides how to act on each element one at a time, if you make a few concessions like arguments coming before commands and symbols are always commands, floats are always arguments it turns out quite simple and surprisingly powerful.<br />
<img src="/uploads/files/1755289251890-parser.png" alt="parser.png" class="img-responsive img-markdown" /><br />
On the left of the abstraction we have the parser and on the right we have a simple stack for storing arguments, and in the patch we have two commands. If we send it the line <code>1 val 7 goto</code> it drips the list, <code>1</code> goes out the right outlet of the [route symbol] and is pushed onto the stack, <code>val</code> is then dripped and packed with $1 ($0 of parent patch) to  set two send symbols, first the send on the output of the stack and then the one which works just like the send in the previous example but is always banged, $0-val receives the bang which runs the command, it pops a value off the stack and sets $0val to that value. On down the line. While sticking that stuff on the stack might seem roundabout and pointless it means commands get their arguments from the stack instead having their arguments passed too them, which is very powerful and what makes all those stack based programming languages like Forth work. So, if you decide you want to set <code>val</code> to a random number you can just patch up a simple command for it:<br />
<img src="/uploads/files/1755284463990-random.png" alt="random.png" class="img-responsive img-markdown" /><br />
Now you just feed it the line <code>127 random val</code> and it pushes 127 onto the stack, sends a bang to $0-random which pops 127 off the stack and then pushes a random number between 0 and 127 onto the stack so <code>val</code> can get it and set $0val. This random can be used with any function which accepts an argument with no extra patching required, you can do <code>50 random 10 random loop</code> to loop from a random position a random number of times or what ever. You develop a little custom programming language instead of a random collection of adhoc functions.</p>
<p>My tracker thing started out almost exactly as yours did with and eventually evolved into this and finally into something rather close to a proper programming language. You might want to put the commands in the abstraction instead of the patch for ease of use or you can have library abstraction(s) that you can stick in the patch or dynamically load into the patch or abstraction through its arguments, or you might just continue on as you were and split your 10x4 symbol into floats, each have their advantages and disadvantages.</p>
]]></description><link>http://forum.pdpatchrepo.info/topic/15682/tracker-style-fx-list/15</link><guid isPermaLink="true">http://forum.pdpatchrepo.info/topic/15682/tracker-style-fx-list/15</guid><dc:creator><![CDATA[oid]]></dc:creator><pubDate>Fri, 15 Aug 2025 20:20:53 GMT</pubDate></item><item><title><![CDATA[Reply to Tracker style &quot;FX&quot; list on Fri, 15 Aug 2025 22:07:28 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-a" href="http://forum.pdpatchrepo.info/user/porres">@porres</a> said:</p>
<blockquote>
<p>but check [else/score] and [else/score2]</p>
</blockquote>
<p><a class="plugin-mentions-a" href="http://forum.pdpatchrepo.info/user/cfry">@cfry</a> did you check these?</p>
]]></description><link>http://forum.pdpatchrepo.info/topic/15682/tracker-style-fx-list/16</link><guid isPermaLink="true">http://forum.pdpatchrepo.info/topic/15682/tracker-style-fx-list/16</guid><dc:creator><![CDATA[porres]]></dc:creator><pubDate>Fri, 15 Aug 2025 22:07:28 GMT</pubDate></item><item><title><![CDATA[Reply to Tracker style &quot;FX&quot; list on Sat, 16 Aug 2025 11:43:50 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-a" href="http://forum.pdpatchrepo.info/user/porres">@porres</a> Hi, yes, they are interesting. else/sequencer also has the feature to be banged a step at a time. Cool.</p>
]]></description><link>http://forum.pdpatchrepo.info/topic/15682/tracker-style-fx-list/17</link><guid isPermaLink="true">http://forum.pdpatchrepo.info/topic/15682/tracker-style-fx-list/17</guid><dc:creator><![CDATA[cfry]]></dc:creator><pubDate>Sat, 16 Aug 2025 11:43:50 GMT</pubDate></item><item><title><![CDATA[Reply to Tracker style &quot;FX&quot; list on Sat, 16 Aug 2025 12:03:13 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-a" href="http://forum.pdpatchrepo.info/user/oid">@oid</a> where is [list-drip] coming from? Deken says shadylib but it is not there.</p>
<p>edit: never mind, I found it in list-abs</p>
]]></description><link>http://forum.pdpatchrepo.info/topic/15682/tracker-style-fx-list/18</link><guid isPermaLink="true">http://forum.pdpatchrepo.info/topic/15682/tracker-style-fx-list/18</guid><dc:creator><![CDATA[cfry]]></dc:creator><pubDate>Sat, 16 Aug 2025 12:03:13 GMT</pubDate></item><item><title><![CDATA[Reply to Tracker style &quot;FX&quot; list on Sat, 16 Aug 2025 13:39:38 GMT]]></title><description><![CDATA[<p><img src="/uploads/files/1755350851130-ska-rmavbild-2025-08-16-kl.15.27.24.png" alt="Skärmavbild 2025-08-16 kl. 15.27.24.png" class="img-responsive img-markdown" /> <a href="/uploads/files/1755350858231-trackthing.pd">trackthing.pd</a></p>
<p>Can you help me to get this working? I tried to debug with [print] but I could not figure out the local variable hierarchy. (screen shot and patch is for visual reference)</p>
<p>And then maybe we can do a few new commands so I can handle it?</p>
<p>On a side note: No need for sudoku today! Pd and <a class="plugin-mentions-a" href="http://forum.pdpatchrepo.info/user/oid">@Oid</a> will keep me fresh now when chatgpt now make so complex code for my arduinos that I can not read it anymore. <img class="emoji emoji-extended" src="http://forum.pdpatchrepo.info/plugins/nodebb-plugin-emoji-extended/images/grinning.png" title=":)" alt=":)" /></p>
]]></description><link>http://forum.pdpatchrepo.info/topic/15682/tracker-style-fx-list/19</link><guid isPermaLink="true">http://forum.pdpatchrepo.info/topic/15682/tracker-style-fx-list/19</guid><dc:creator><![CDATA[cfry]]></dc:creator><pubDate>Sat, 16 Aug 2025 13:39:38 GMT</pubDate></item><item><title><![CDATA[Reply to Tracker style &quot;FX&quot; list on Sat, 16 Aug 2025 16:15:31 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-a" href="http://forum.pdpatchrepo.info/user/cfry">@cfry</a> The abstraction part is supposed to be run with $0 as it's argument to pass the parents dollar zero so those commands in the parent patch can communicate with it. Change those $1s to $0s if you want everything in one patch, or the $0s into $1s if you want commands in both the abstraction and the parent patch and all should be well. It will be atleast a few hours before i can offer patches, computer died right after yesterday's post so have to setup the new one and do all that stuff which goes with a new computer. Once you get the basic functionality working it will probably start making sense.</p>
]]></description><link>http://forum.pdpatchrepo.info/topic/15682/tracker-style-fx-list/20</link><guid isPermaLink="true">http://forum.pdpatchrepo.info/topic/15682/tracker-style-fx-list/20</guid><dc:creator><![CDATA[oid]]></dc:creator><pubDate>Sat, 16 Aug 2025 16:15:31 GMT</pubDate></item><item><title><![CDATA[Reply to Tracker style &quot;FX&quot; list on Sat, 16 Aug 2025 21:26:29 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-a" href="http://forum.pdpatchrepo.info/user/cfry">@cfry</a> it probably picked up [list-dripdex] which is <code>[list-drip]</code> w/ index<br />
I think list-abs could use a rewrite using the 'new' <code>[list]</code> objects..<br />
I recommend just installing zexy and using <code>[drip]</code> though.. externals will always be faster than abstractions</p>
]]></description><link>http://forum.pdpatchrepo.info/topic/15682/tracker-style-fx-list/21</link><guid isPermaLink="true">http://forum.pdpatchrepo.info/topic/15682/tracker-style-fx-list/21</guid><dc:creator><![CDATA[seb-harmonik.ar]]></dc:creator><pubDate>Sat, 16 Aug 2025 21:26:29 GMT</pubDate></item><item><title><![CDATA[Reply to Tracker style &quot;FX&quot; list on Sat, 16 Aug 2025 21:53:15 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-a" href="http://forum.pdpatchrepo.info/user/cfry">@cfry</a> Took care of the dollar args for you and fixed a small oversight in the previous which made it not work for commands with more than one argument. Also added a simple trace which prints stack size, command, and the top 10 elements on the stack, should help you in figuring what is going on. The [s $0fpush] is the same as $0push, nothing fancy there, it was just a simple way to make the trace slightly easier to read.<br />
<a href="/uploads/files/1755381178186-trackthing.pd">trackthing.pd</a></p>
<p>Edit: fixed a bug.</p>
<p><a class="plugin-mentions-a" href="http://forum.pdpatchrepo.info/user/seb-harmonik-ar">@seb-harmonik.ar</a></p>
<blockquote>
<p>I think list-abs could use a rewrite using the 'new' [list] objects.</p>
</blockquote>
<p>I started in on that but realized that the overall design of list-abs is an issue, often what takes 5 list-abs abstractions can be done with a single [list store] and some glue, some can be replaced with [list store] and a message and have no need to be abstracted away. I think a good [list store] tutorial and a much smaller (more thought out and planed) replacement for list-abs  would be a better idea. List-abs is fine as it is for keeping old patches alive.</p>
]]></description><link>http://forum.pdpatchrepo.info/topic/15682/tracker-style-fx-list/22</link><guid isPermaLink="true">http://forum.pdpatchrepo.info/topic/15682/tracker-style-fx-list/22</guid><dc:creator><![CDATA[oid]]></dc:creator><pubDate>Sat, 16 Aug 2025 21:53:15 GMT</pubDate></item><item><title><![CDATA[Reply to Tracker style &quot;FX&quot; list on Mon, 18 Aug 2025 22:47:18 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-a" href="http://forum.pdpatchrepo.info/user/oid">@oid</a> Thank you so much. It is coming along quite well.</p>
<p>Question time:</p>
<p>Could we make a 2 argument command, like the loop function? I could not figure out how to use 2 arguments.</p>
<p>Is there a specific reason why you used the value object? I found use for it, but I am just curious.</p>
<p>How would you send the final out of the patch? As I patched it now I I am not using the value object for this.</p>
<p>I think I may add more values later, like val1 val2 val3.</p>
<p>I commented all over in to help me understand what happens. Is there any spots where I totally misunderstood it?</p>
<p>If there are any awkward edits I made feel free to correct it or point it out. Pointer about suitable syntax is also appreciated.</p>
<p><img src="/uploads/files/1755556215053-ska-rmavbild-2025-08-19-kl.00.30.07.png" alt="Skärmavbild 2025-08-19 kl. 00.30.07.png" class="img-responsive img-markdown" /> <a href="/uploads/files/1755556221334-trackthing-oid.pd">trackthing-oid.pd</a></p>
]]></description><link>http://forum.pdpatchrepo.info/topic/15682/tracker-style-fx-list/23</link><guid isPermaLink="true">http://forum.pdpatchrepo.info/topic/15682/tracker-style-fx-list/23</guid><dc:creator><![CDATA[cfry]]></dc:creator><pubDate>Mon, 18 Aug 2025 22:47:18 GMT</pubDate></item><item><title><![CDATA[Reply to Tracker style &quot;FX&quot; list on Tue, 19 Aug 2025 21:52:06 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-a" href="http://forum.pdpatchrepo.info/user/cfry">@cfry</a> Doing two arguments is just changing how many arguments you pop off the stack and replacing the [route bang float] after the command receive to [route bang list]. So a loop command could be made like this (untested and not even fully thought through):<br />
<img src="/uploads/files/1755631167652-loop.png" alt="loop.png" class="img-responsive img-markdown" /><br />
I used [value] because add works off the last value that was output and [value] keeps things neater than tying lots of stuff to a single [float]. In this case you don't need to use [v $0val] to get the output for val, it just stores the float for add, same, and any other command you want to use it for, sending the float to both [v $0val] and [s $0out] is exactly what I would do in this case. I don't think $0-same will work as you expect, there is no need to pop for that and out is getting a bang instead of a float, just need to do [route bang] -&gt; [v $0val] -&gt; [s $0out].</p>
<p>Your comments look to be correct. [r $0stack] is used for the trace but it is useful for other things, you can have a print command which just bangs the message [send $0print( to [s $0stack( and then a [r $0print] connected to a [print] so you can check the stack's condition in those cases when things did not work as planned and you did not have the trace on. Notice the send message is to $0print and not $0-print, receives with the $0 hyphen prefix are only for commands and you will get into trouble if you use that prefix for non-commands. In this case we send the print to $0print instead of $0-print because if the stack is empty it would output a bang which would bang the message again and send you into an infinite loop. Remember to save before testing new commands, it is easy to miss an obvious loop like this.</p>
<p>We prepend to stack instead of append because that means we always get to do [delete 0 $1(, if we appended we would have to keep track of stack size and then subtract how many to delete so we can do a [delete $1 $2(, just more efficient to do it this way in pd land. There is a bit of a flaw here as well, think about what happens if you run the line <code>1 2 3</code>, one is pushed, then two, then three, so three is top of the stack and the contents of the stack is reversed as <code>3 2 1</code>, as it should be, the issues is if we have a command which pushes more than one value onto the stack. If you had the command which just bangs the message [1 2 3( to [s $0push] you would have one as top of the stack instead of three so in commands you need to send your lists backwards. Slightly annoying and could be fixed but would be less efficient, so I just remember that when patching commands which push a list, the list needs to be backwards or it will cause confusion elsewhere.</p>
<p>I will do another post later tonight or tomorrow going into the rest and elaborating on a few things.</p>
<p>Edit: Suppose that loop command only works for looping to a point earlier in the program, which is probably workable but perhaps not ideal. We will deal with that in the next post and start really exploiting that this is a programming language and will save you work as any programming language should. Trying not to dump too much on you all at once, next post will be a big one. Or maybe you are already ahead of me? can't quite tell.</p>
<p>Edit2: No, that loop will not quite work, for got to resend the float to $0-goto on each iteration, only loops once.</p>
]]></description><link>http://forum.pdpatchrepo.info/topic/15682/tracker-style-fx-list/24</link><guid isPermaLink="true">http://forum.pdpatchrepo.info/topic/15682/tracker-style-fx-list/24</guid><dc:creator><![CDATA[oid]]></dc:creator><pubDate>Tue, 19 Aug 2025 21:52:06 GMT</pubDate></item><item><title><![CDATA[Reply to Tracker style &quot;FX&quot; list on Thu, 21 Aug 2025 16:58:28 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-a" href="http://forum.pdpatchrepo.info/user/oid">@oid</a> said:</p>
<blockquote>
<p>I used [value] because add works off the last value that was output and [value] keeps things neater than tying lots of stuff to a single [float].</p>
</blockquote>
<p>Yes its convenient, I have tried to add a global function to share the variable &quot;var&quot; between several instances. [v] is good for this purpose. Use case: for example one instance with a list with &quot;add&quot; +1, and another instance with a list with &quot;add&quot; -1. And they are triggered independently.</p>
<p>It would be good to be able to have different groups (like &quot;exclusive&quot; groups).</p>
<p>I also see a use case for several &quot;var&quot; (var0, var1, var2, var3 etc)</p>
<p>...adding a global mode, exclusive groups, idle-reset, and so forth are configuration settings, not part of the live output. Question is where this should go. In the text file also? Or in another text file? Or if they are just a few, maybe just as arguments in the abstraction. The config settings should be retained. It would also be good if one could write the text to use as an argument in the abstraction: [tracky mycommands]. Not sure how to do that.</p>
<blockquote>
<p>Slightly annoying and could be fixed but would be less efficient, so I just remember that when patching commands which push a list, the list needs to be backwards or it will cause confusion elsewhere.</p>
</blockquote>
<p>that is fine, I just need to include some instructions on how the syntax goes.</p>
<blockquote>
<p>We will deal with that in the next post and start really exploiting that this is a programming language and will save you work as any programming language should.</p>
</blockquote>
<p>The problem that arise is that when I start to improvise I kind of &quot;break the (your) concept&quot;. And I would like to avoid ending up in another patch that is so messy that I can not use it if I bring it up after a half a year or so. Lets continue working on it!</p>
<blockquote>
<p>Edit2: No, that loop will not quite work, for got to resend the float to $0-goto on each iteration, only loops once.</p>
</blockquote>
<p>I have given your loop code several shots but I can not figure out how to get it working.  I managed to (in a messy way) to have it repeat for x times, or loop forever, or loop just once. But never loop x times and then be ready again to to loop x times.</p>
<p>Current patch:<img src="/uploads/files/1755795185045-ska-rmavbild-2025-08-21-kl.18.24.03.png" alt="Skärmavbild 2025-08-21 kl. 18.24.03.png" class="img-responsive img-markdown" /></p>
<p><a href="/uploads/files/1755795205426-tracky.pd">tracky.pd</a></p>
]]></description><link>http://forum.pdpatchrepo.info/topic/15682/tracker-style-fx-list/25</link><guid isPermaLink="true">http://forum.pdpatchrepo.info/topic/15682/tracker-style-fx-list/25</guid><dc:creator><![CDATA[cfry]]></dc:creator><pubDate>Thu, 21 Aug 2025 16:58:28 GMT</pubDate></item><item><title><![CDATA[Reply to Tracker style &quot;FX&quot; list on Fri, 22 Aug 2025 21:45:41 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-a" href="http://forum.pdpatchrepo.info/user/cfry">@cfry</a> said:</p>
<blockquote>
<p>The problem that arise is that when I start to improvise I kind of &quot;break the (your) concept&quot;. And I would like to avoid ending up in another patch that is so messy that I can not use it if I bring it up after a half a year or so. Lets continue working on it!</p>
</blockquote>
<p>You are definitely getting parts of it and seeing how to develop it but there are parts you don't quite have yet and I can't quite identify what those are so I can explain things. I made a sizable patch that adds a lot of commands but last night I realized I went to far and it would probably confuse things for you, so I will reduce it down to just the things you mentioned, I will follow your lead.</p>
<p>Passing the text name as an argument is just a matter of using your dollar arguments, [text get $1], but you will want to tweak your input for text symbols some.<br />
<img src="/uploads/files/1755891194670-io.png" alt="io.png" class="img-responsive img-markdown" /><br />
So our right inlet for text symbols goes to a send now so we can easily access that text anywhere in the patch, like in our commands, and we also reset the counter which uses a value for its float for the same reason, we will want to be able to access and change its value from commands. &quot;pc&quot; is short for program counter and it is important that we increment its value before sending a float to the text get otherwise if we change its value in some command it will get overwritten, so having a [t f f] here is almost a must. This also means that [v $0pc] points to the next line to be run and not the one that is currently being run, this is important, fairly useful, and occasionally irksome.</p>
<p>The left inlet has change some as well, we have a [route bang float], bangs and floats go to the counter so we can increment the program or set the next line to be run, the right outlet sends to our [list-drip] which enables us to run commands from the parent patch so when things don't work you can run that print command to print the stack and get some insight or just run commands from a listbox to test things out or whatnot. We also have [r $0bang] on the counter, this lets us increment the counter immediately from a command and start the next line. And finally we have a new outlet that bangs when we reach the end of the text file so we can turn off the metro in the parent patch which is doing the banging, reset the counter to zero, load a new program, or what ever you want to do when the program completes. Middle outlet I did away with, globals can be done as a command, as can most everything.</p>
<p>Variables we can implement with some dynamic patching and a simple abstraction to create the commands for setting and getting the value of any variable.<br />
<img src="/uploads/files/1755892462179-var.png" alt="var.png" class="img-responsive img-markdown" /><br />
This looks more complicated than it is. If we have the line <code>var val1 10</code> in our program it runs the <code>var</code> command which bangs [v $0pc] and subtracts 1 from it to get the current line from the text holding our program and then appends our $0 to it giving us the list <code>var val1 10 $0</code>. The first message it goes to creates an instance of the var.pd abstraction in [pd $0var] with the second and fourth elements of the list as arguments, val1 and $0. Second message sends $3 to $4-&gt;$2, 10 to $0-&gt;val1. To finish off we use that new $0bang receive to bang [v $0pc] so we don't execute the rest of the line which would run <code>val1</code> pushing 10 to the stack and then push another 10 to the stack. Variable name with a <code>&gt;</code> prepended to it is the command for setting the value of a variable, <code>22 &gt;val1</code> in your program would set the value of val1 to 22, <code>val1</code> would push 22 to the stack. If we could see how pd expands all those dollar arguments in the abstraction it would look like this:<br />
<img src="/uploads/files/1755893228258-var-expanded.png" alt="var-expanded.png" class="img-responsive img-markdown" /><br />
Now you can create as many variables as you would like in your programs and a couple tweaks you can have the abstraction global.pd and subpatch [pd $0globals] so you can have the line <code>global val2 0</code> and get a global variable that all instances of tracky can read and write from. There are a couple catches, each variable definition must appear on its own line with nothing else after it and with our simple parsing there is nothing to stop you from creating multiple instances of the same variable, if you run the line <code>var val1 10</code> a second time it will create a second abstraction so when you run <code>val1</code> it will bang both and each will push 10 to the stack giving you an extra 10 and screw up your program. We can fix this with adding a registry to the var command which searches a [text] to see if it has been created already, something like this after the [list $0] should do it:<br />
<img src="/uploads/files/1755894449744-varreg.png" alt="varreg.png" class="img-responsive img-markdown" /><br />
And you will want to create a command to clear all variables (and the text if you use it) by sending [clear( to [pd-$0var], or get fancy and add another command in var.pd which bangs [iemguts/canvasdelete] so you can delete individual variables. Using [canvasdelete] has the advantage of not needing a registry for variables, you can just always run ```delete-&lt;variable name&gt;, or what ever you name your delete command, before creating a new variable. Each method has advantages.</p>
<p>Your loop does not work because the unpack needs to go into the left inlet of the float, that triggers the first loop and causes it to go back, each time the program gets back up to the loop command it increments [v $0loopi] until the select hits the target number of loops which sets $0loopi to -1 which ends the looping.</p>
<p>Not sure what you mean by groups/exclusive groups, can you elaborate or show it with a patch?</p>
<p>None of the above has been tested, but I did think them through better than I did the loop, fairly certain all is well but there might be a bug or two for you to find. Letting you patch them since we think about how things work more  when we patch than when we use a patch. Try and sort out and how they work from the pictures and then patch them together without the pictures, following your understanding of them instead of your memory of how I did it. And change them as needed to suit your needs.</p>
]]></description><link>http://forum.pdpatchrepo.info/topic/15682/tracker-style-fx-list/26</link><guid isPermaLink="true">http://forum.pdpatchrepo.info/topic/15682/tracker-style-fx-list/26</guid><dc:creator><![CDATA[oid]]></dc:creator><pubDate>Fri, 22 Aug 2025 21:45:41 GMT</pubDate></item><item><title><![CDATA[Reply to Tracker style &quot;FX&quot; list on Mon, 25 Aug 2025 11:20:06 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-a" href="http://forum.pdpatchrepo.info/user/oid">@oid</a> I have to return to treating variables. However, I would be fine with just editing a preferences text (the &quot;registry&quot;?)</p>
<hr />
<p><a class="plugin-mentions-a" href="http://forum.pdpatchrepo.info/user/oid">@oid</a> said:</p>
<blockquote>
<p>Not sure what you mean by groups/exclusive groups, can you elaborate or show it with a patch?</p>
</blockquote>
<p>Its midi programming language sort of, usually used when programming percussive instruments.  If you have one closed and one open high hat you would like these to cut off each other. Not &quot;poly&quot;. Same could go for the cymbals. So each of these would get their own exclusive group. High hat exclusive group 1, crash exclusive group 2 etc.</p>
<p>In my case I may have several instances of [tracky] (with different text files) triggering an fm synth. Here I want to have one or all of the variables to be shared. I may have a granular sampler controlled by several instances of [tracky] (with different text files), also sharing variables, but using another range (ex. 0-100, the fm synth using 0-1). The grain sampler also want its variables to be global, but not shared with the fm synth.</p>
<p>I could solve this by using different named variables for these different groups of global variables. But this will be convoluted and hard to get an overview. I think it may be better to use abstraction arguments to give them different groups: [tracky 0], [tracky 1], and [tracky] for not sharing variables at all.</p>
<hr />
<p>This hotfix make the loop work as intended but just keep adding to the stack.</p>
<p>Could it be that since [v] does not output anything until it get a bang problems arise?</p>
<p>Also not sure how the stack is supposed to work in this case.</p>
<p><img src="/uploads/files/1756120615240-ska-rmavbild-2025-08-25-kl.12.53.47.png" alt="Skärmavbild 2025-08-25 kl. 12.53.47.png" class="img-responsive img-markdown" /></p>
]]></description><link>http://forum.pdpatchrepo.info/topic/15682/tracker-style-fx-list/27</link><guid isPermaLink="true">http://forum.pdpatchrepo.info/topic/15682/tracker-style-fx-list/27</guid><dc:creator><![CDATA[cfry]]></dc:creator><pubDate>Mon, 25 Aug 2025 11:20:06 GMT</pubDate></item></channel></rss>