<div dir="ltr">Hi Billy,<div><br></div><div>Have to admit much of that went over my limited skillset.</div><div>However, the MOD stuff is composition magic.</div><div><br></div><div>Thanks for sharing,</div><div><br></div><div>Julian</div></div><div class="gmail_extra"><br><div class="gmail_quote">On 2 March 2016 at 13:55, Billy Stiltner <span dir="ltr"><<a href="mailto:billy.stiltner@gmail.com" target="_blank">billy.stiltner@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div><div><div><div><div><div><div><div><div><div><div><div><div><div><div><div><div><div><div><div><div>My struggles with it are not really limitations of pd.<br></div>It's the way I have went about modelling a polyphonic synthesizer and using <br></div>the tcl controls as MVC then making the controls a part of the preset machine.<br></div>Everything is available  for me to break the view away from the DSP its just <br></div>that there are some pretty nifty things going on with the view. <br></div>For instance there are toggles that change the range of the envelope ADR controls<br></div>so you can have 1s,3s, 10s, and 30s controls. This is dynamic controls.<br></div>Another is a dial or knob that is quantized and the range changes depending on <br></div>the number of intervals the scale has per equivalence interval or what I like to call the xTave<br>, it is used to offset the frequency in a quantitative <br></div>way in steps of the scale. It doesn't matter if the intervals are specified in cents ,JI,or an edo.<br></div>The scales all end up in an frequency ratio list. So the knob is used to like the "tune" or "pitch"<br></div>knob yet instead of continuous or cents adjustment it allows an offset based on the scale.<br></div>There are 2 banks of oscillators and only one uses this kind of control, the other is just a regular dial <br></div>that offsets by a floating point. At this point of development it was found that there were way too many <br>controls and  being attached to the presets as well as the synthesizer's realtime adjustments.<br></div>So Instead of making more controls I tried to reduce the amount of controls by changing the send <br></div>and receive names dynamically. I guess it works for controls that are not dynamic but gets really <br></div>complicated for the controls that have their properties change at runtime. <br></div>Here is a thread about it. <a href="http://forum.pdpatchrepo.info/topic/5724/dollar-signs-in-objects-and-messages" target="_blank">http://forum.pdpatchrepo.info/topic/5724/dollar-signs-in-objects-and-messages</a><br></div>Also some discussion in this list.<br></div>That can be solved once the controls are broke free from the presets and DSP. <br></div>Making everything FUDI friendly with super neat message boxes and routing <br></div>of messages through the first inlet like that can be seen in Miller's multi pickup guitar effects monster and <br>patch repository or MAX/MSP XFM~  will be quite the task. Those are great examples of how patching should be.<br></div><div class="gmail_extra">Branching away from puredata? <br></div><div class="gmail_extra">Using javascript and the web browser dynamic html to make controls for the fractal sequencer.<br></div><div class="gmail_extra">As well as a xenharmonic sequencer, a Moments of Symmetry(Erv Wilson) matrix generator <br></div><div class="gmail_extra">to go along with Erv's mosedo.pdf There are 2 versions of it , one without the FUDI to pd stuff<br><a href="https://ia601408.us.archive.org/1/items/mosedo.html/mosedo.html?p=17&g=7" target="_blank">https://ia601408.us.archive.org/1/items/mosedo.html/mosedo.html?p=17&g=7</a> , the other with and another expected soon <br></div><div class="gmail_extra">that works with  any generator. The edo MOS are finite and are the "Well Formed" set of MOS,<br></div><div class="gmail_extra">Finally Andrew Milne figured out how to calculate the cardinalities without using continued fractions  or brute force.<br></div><div class="gmail_extra">So now it is quick to generate the non rational MOS alongside the closest approximating "Well Formed" MOS using very <br></div><div class="gmail_extra">simple code which took forever to even comprehend on paper with pencil.  Things like this are complex for me with pd<br></div><div class="gmail_extra">Now that the algorithm is coded up in javascript a pd version would be simpler to make however , having this part of <br></div><div class="gmail_extra">the puzzle in the browser will make it easier for a general audience to use. <br></div><div class="gmail_extra">The new text object makes things like a database of modes easy to access in pd and also is easy enough <br></div><div class="gmail_extra">to implement a user interface with the entire list on a webpage.  In pd a simple abstraction that increments<br></div><div class="gmail_extra">an index for sets with {p} tones    , an index for the modes of  sizes {s} , then the index into the modes {m} with <br>s number of notes within  scales having p tones. Example: <br></div><div class="gmail_extra">from<br></div><div class="gmail_extra"><a href="http://www.huygens-fokker.org/docs/modename.html" target="_blank">http://www.huygens-fokker.org/docs/modename.html</a><br></div><div class="gmail_extra"><a name="1160325175_14"><h4>14 tone equal modes:</h4></a>
<tt><b>2 3 2 2 3 2</b></tt>                   
Quasi-equal Hexatonic
<tt><b><br>2 1 2 1 2 1 2 2 1</b></tt>     
Gould Nonatonic
<tt><b><br>1 2 1 2 1 1 2 1 2 1</b></tt> 
Decimal-10
<tt><b><br>2 3 3 3 3</b></tt>                       
Godzilla-5
<tt><b><br>2 2 1 2 1 2 1 2 1</b></tt>      Godzilla-9
<tt><b><br>3 2 2 3 2 2</b></tt>                    Hedgehog-6<br>
<tt><b>1 2 2 2 1 2 2 2</b></tt>          
Hedgehog-8
<tt><b><br>3 3 2 3 3</b></tt>                        
Semaphore-5<br>
<tt><b>1 2 3 2 1 2 3</b></tt>               
Superpelog-Pelog<br>
<tt><b>1 2 1 2 1 2 1 2 2</b></tt>        Superpelog-9<br><br></div><div class="gmail_extra">p=14, <br></div><div class="gmail_extra">s=6,<tt><b><br></b>m=0<b>: 2 3 2 2 3 2</b></tt>                   
Quasi-equal Hexatonic
<tt><b><br></b></tt><tt>m=1<b>: 3 2 2 3 2 2</b></tt>                    Hedgehog-6<br></div><div class="gmail_extra"><br></div><div class="gmail_extra">For this set it is not too much to cycle through the entire list<br></div><div class="gmail_extra">but for  12 and 31 edo there are many more modes.<br></div><div class="gmail_extra">Would probably be ok to only divide the entire list up in files with <br></div><div class="gmail_extra">the all the modes in scales with p tones instead of splitting up the list further.<br><br></div><div class="gmail_extra">The list was easy to add user interactive <div> tags and mouseover functions<br></div><div class="gmail_extra">that send the selected mode to the synthesizer in javascript and html.<br><br></div><div class="gmail_extra">With the text object the user interface is a little different. <br></div><div class="gmail_extra">It's only a float atom index  into the list,  a canvas display for the currently selected<br></div><div class="gmail_extra">item in the list. , and a bang to send the mode off to where it can be used  vs the entire <br>interactive scrollable list in the browser.  Some of the modes are specific to other scales <br></div><div class="gmail_extra">that are Just Intonation as well as cents  rather than equal division scales. <br>So from within pd there are abstractions that accept over FUDI a scale in cents as well <br>as a scale in Just intonation.  simply snagging the intervals from the html and inserting them <br></div><div class="gmail_extra">into the section heading onmouseover function input is all that is needed for FUDICalization<br></div><div class="gmail_extra">implementation.  With the textobject the scale intervals are easily snaggable with [text get].<br></div><div class="gmail_extra">For the equal division  scales an abstraction exists that only needs a message containing <br> an equivalence interval or "xTave" and number of divisions. for Bohlen Pierce - xTave = 3 <br></div><div class="gmail_extra">3 and divisions = 13.  The text object could contain the entire message on one line <br></div><div class="gmail_extra">EqualDivision 13 3;<br></div><div class="gmail_extra">and the text that describes it "Bohlen Pierce Equal Divisions" on another line.<br></div><div class="gmail_extra">This is getting simpler now, I think it's a good format for data of this type which <br></div><div class="gmail_extra">can describe in different ways , information for the user and the machine.<br></div><div class="gmail_extra">for the modes  , since they are all modes and described in the same way<br></div><div class="gmail_extra">the "mode part of the message neednt be in the text object.<br></div><div class="gmail_extra">Since all the data has a descriptor and information <br></div><div class="gmail_extra">the index could simply be the entire list  in 2 line pairs.<br></div><div class="gmail_extra">description;<br></div><div class="gmail_extra">data;<br></div><div class="gmail_extra">description;<br></div><div class="gmail_extra">data;<br><br>< ><br></div><div class="gmail_extra">next / previous item is easy <br></div><div class="gmail_extra"><br></div><div class="gmail_extra">for(x=0, x<2,x++)<br>|<br></div><div class="gmail_extra">[t f  f]<br></div><div class="gmail_extra">{float to spigot selects , then float to text get}<br></div><div class="gmail_extra"><br>[text get]<br></div><div class="gmail_extra"> {out to spigot inlets}                        [select 0]<br></div><div class="gmail_extra">                                              [spigot]<br></div><div class="gmail_extra">                                              [canvasrx label description(<br></div><div class="gmail_extra">[canvas[o][<][>]]redtangled<br></div><div class="gmail_extra"><br></div><div class="gmail_extra">                                    [select 1]<br></div><div class="gmail_extra">                      [ spigot ]<br></div><div class="gmail_extra">[r bang(      /   <br></div><div class="gmail_extra"> |               /         <br>  |           /<br></div><div class="gmail_extra">   [list]<br><br><br></div><div class="gmail_extra">What about dynamic visualization of data that is variable in size as well as <br></div><div class="gmail_extra">variable element controls like a piano roll midi sequencer?<br><br></div><div class="gmail_extra">it's being implemented in tcl.<br><br></div><div class="gmail_extra">how do you do it without tcl and without data structures?<br></div><div class="gmail_extra">Food for thought!<br><br></div><div class="gmail_extra">Is pure data's entire reason for existence to perplexingly confuse  the <br></div><div class="gmail_extra">virtual parallel patchcordianist?<br></div><div class="gmail_extra"><br></div><div class="gmail_extra">The webpage interface: xensynth/burningship/pdApplet/xensynthcontrol.html<br><a href="https://archive.org/details/Xensynth10.01" target="_blank">https://archive.org/details/Xensynth10.01</a><br><br><br></div><div class="gmail_extra">What in the Godel Bear does this mean?<br><h3>"Loading the file versus loading the object</h3><p>
There are multiple forms for storing objects on the filesystem, 
including abstractions, single- and multi-object library files, etc.  
Then there is the representation of what objects are assigned to which 
symbols.  These don't need to be the same thing.  Each patch has its own
 table of which symbols are attached to which objects, and this can be 
separate from which objects are actually loaded into memory. 
</p>
<p>
One idea for handling this is to have separate tables of symbols for 
which object files are loaded, versus which symbols are tied to which 
objects for a given patch. It seems for this to be workable, there would
 need to be a "loaded" table, then each patch would generate its table 
from the loaded table. Then if an object isn't in the loaded table, the 
loaded table handler would go and try to load it."<br><br><a href="https://puredata.info/dev/PdNamespaces" target="_blank">https://puredata.info/dev/PdNamespaces</a><br></p><br></div><div class="gmail_extra"><br> </div></div>
<br>_______________________________________________<br>
<a href="mailto:Pd-list@lists.iem.at">Pd-list@lists.iem.at</a> mailing list<br>
UNSUBSCRIBE and account-management -> <a href="http://lists.puredata.info/listinfo/pd-list" rel="noreferrer" target="_blank">http://lists.puredata.info/listinfo/pd-list</a><br>
<br></blockquote></div><br></div>