<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:thr="http://purl.org/syndication/thread/1.0">
	<id>tag:n2.nabble.com,2006:forum-2681767</id>
	<title>Nabble - SuperCollider Developers New (Use this!!!!)</title>
	<updated>2010-02-09T10:24:05Z</updated>
	<link rel="self" type="application/atom+xml" href="http://n2.nabble.com/SuperCollider-Developers-New-Use-this-f2681767.xml" />
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/SuperCollider-Developers-New-Use-this-f2681767.html" />
	<subtitle type="html">&lt;b&gt;N.B. You must subscribe to sc-dev or sc-dev-acl (for non-delivery) in order to post from this forum.
&lt;br&gt;&lt;br&gt;
&lt;a href=&quot;mailto:majordomo@lists.bham.ac.uk?body=subscribe%20sc-dev-acl&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;Add an address to sc-dev-acl&lt;/a&gt;&lt;/b&gt;
&lt;br&gt;&lt;br&gt;
This list is addressed mainly to people developing SuperCollider source code. Contributions, questions, comments on any level of the code (C, C++ or SuperCollider class libraries) are covered here. For information on the list, please see: &lt;a href=&quot;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&lt;/a&gt;
&lt;br&gt;&lt;br&gt;
A complete archive of the list (including the previous create.ucsb.edu incarnation) is available at: &lt;a href=&quot;http://www.listarc.bham.ac.uk/marchives/sc-dev/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/marchives/sc-dev/&lt;/a&gt;
&lt;br&gt;&lt;br&gt;
You can search the archive here: &lt;a href=&quot;http://www.listarc.bham.ac.uk/lists/sc-dev/search&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/lists/sc-dev/search&lt;/a&gt;
&lt;br&gt;&lt;br&gt;
This list was created with mass migration of subscribers from the old create.ucsb.edu list on June 16, 2008. Please contact sc-dev-owner@lists.bham.ac.uk for further list details or queries concerning the list.</subtitle>
	
<entry>
	<id>tag:n2.nabble.com,2006:post-4542949</id>
	<title>SF.net SVN: supercollider:[9820] trunk</title>
	<published>2010-02-09T10:24:05Z</published>
	<updated>2010-02-09T10:24:05Z</updated>
	<author>
		<name>danstowell</name>
	</author>
	<content type="html">Revision: 9820
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://supercollider.svn.sourceforge.net/supercollider/?rev=9820&amp;view=rev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://supercollider.svn.sourceforge.net/supercollider/?rev=9820&amp;view=rev&lt;/a&gt;&lt;br&gt;Author: &amp;nbsp; danstowell
&lt;br&gt;Date: &amp;nbsp; &amp;nbsp; 2010-02-09 18:24:05 +0000 (Tue, 09 Feb 2010)
&lt;br&gt;&lt;br&gt;Log Message:
&lt;br&gt;-----------
&lt;br&gt;reorganise furniture: add new folders in root; rm unneeded xcode-related folder
&lt;br&gt;&lt;br&gt;Added Paths:
&lt;br&gt;-----------
&lt;br&gt;&amp;nbsp; &amp;nbsp; trunk/common/
&lt;br&gt;&amp;nbsp; &amp;nbsp; trunk/iphone/
&lt;br&gt;&amp;nbsp; &amp;nbsp; trunk/mac/
&lt;br&gt;&lt;br&gt;Removed Paths:
&lt;br&gt;-------------
&lt;br&gt;&amp;nbsp; &amp;nbsp; trunk/Intermediate Build Files/
&lt;br&gt;&lt;br&gt;&lt;br&gt;This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;sc-dev mailing list
&lt;br&gt;&lt;br&gt;info (subscription, etc.): &lt;a href=&quot;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&lt;/a&gt;&lt;br&gt;archive: &lt;a href=&quot;http://www.listarc.bham.ac.uk/marchives/sc-dev/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/marchives/sc-dev/&lt;/a&gt;&lt;br&gt;search: &lt;a href=&quot;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/SF-net-SVN-supercollider-9820-trunk-tp4542949p4542949.html" />
	
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-4542721</id>
	<title>Re: SynthDef method cleanup</title>
	<published>2010-02-09T09:54:21Z</published>
	<updated>2010-02-09T09:54:21Z</updated>
	<author>
		<name>Josh Parmenter</name>
	</author>
	<content type="html">I rely on things written to disk for NRT.
&lt;br&gt;&lt;br&gt;Josh
&lt;br&gt;&lt;br&gt;On Feb 9, 2010, at 8:36 AM, Scott Wilson wrote:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; I also see a use case for writing to disk. I had older code which mass produced synthdefs based on Loris data. Recreating these took a significant amount of time, so it was useful to have them on disk (in a separate folder so they were only loaded when needed) pre-done.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I agree that sending is by far the norm though.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; S.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; On 9 Feb 2010, at 14:28, Dan Stowell wrote:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; 2010/2/9 adc &amp;lt;&lt;a href=&quot;http://n2.nabble.com/user/SendEmail.jtp?type=node&amp;node=4542721&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;[hidden email]&lt;/a&gt;&amp;gt;:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Dan - i don't agree with your second statement. &amp;nbsp;i've never ever seen users
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; depend on writing defs to disk. &amp;nbsp;i have countless times seen users confused
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; (myself included) by old defs loaded from disk. not to mention the file
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; privilege installation issues for admins installing sc etc.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; agree with fredrik here:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; I think relying on some old file lying somewhere that has a synthdef you
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; wrote 6 months ago to still be there,
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; and not having been accidentally overwrotten by a new synthdef with the same
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; name is asking for trouble,
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; and should be discouraged.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; the rule should be: if you rely on something to be there, please put it in
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; your startup files.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; and for completeness, when you boot a server, send it all the synthdefs
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; currently in the Lib,
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; so it can &amp;quot;just work&amp;quot;. that is even safer to keep things in sync than
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; reading from disk.
&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; In my work I create classes which have associated synthdefs. I use
&lt;br&gt;&amp;gt;&amp;gt; writeOnce to create them as needed. The amount of synthdefs actually
&lt;br&gt;&amp;gt;&amp;gt; weighs down startup quite a lot if I change that to writeDefFile, it's
&lt;br&gt;&amp;gt;&amp;gt; quite noticeable. I don't want my startup to be generating these
&lt;br&gt;&amp;gt;&amp;gt; synthdefs every single time.
&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; thanks for the discussion! it will be great when all this synthdef mystery
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; is gone ;-)
&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; Yes :)
&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; Dan
&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; best, adc
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; -- 
&lt;br&gt;&amp;gt;&amp;gt; &lt;a href=&quot;http://www.mcld.co.uk&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.mcld.co.uk&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt;&amp;gt; sc-dev mailing list
&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; info (subscription, etc.): &lt;a href=&quot;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt; archive: &lt;a href=&quot;http://www.listarc.bham.ac.uk/marchives/sc-dev/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/marchives/sc-dev/&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt; search: &lt;a href=&quot;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&lt;/a&gt;&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt; sc-dev mailing list
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; info (subscription, etc.): &lt;a href=&quot;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&lt;/a&gt;&lt;br&gt;&amp;gt; archive: &lt;a href=&quot;http://www.listarc.bham.ac.uk/marchives/sc-dev/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/marchives/sc-dev/&lt;/a&gt;&lt;br&gt;&amp;gt; search: &lt;a href=&quot;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&lt;/a&gt;&lt;/div&gt;&lt;br&gt;******************************************
&lt;br&gt;/* Joshua D. Parmenter
&lt;br&gt;&lt;a href=&quot;http://www.realizedsound.net/josh/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.realizedsound.net/josh/&lt;/a&gt;&lt;br&gt;&lt;br&gt;“Every composer – at all times and in all cases – gives his own interpretation of how modern society is structured: whether actively or passively, consciously or unconsciously, he makes choices in this regard. He may be conservative or he may subject himself to continual renewal; or he may strive for a revolutionary, historical or social palingenesis.&amp;quot; - Luigi Nono
&lt;br&gt;*/
&lt;br&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;sc-dev mailing list
&lt;br&gt;&lt;br&gt;info (subscription, etc.): &lt;a href=&quot;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&lt;/a&gt;&lt;br&gt;archive: &lt;a href=&quot;http://www.listarc.bham.ac.uk/marchives/sc-dev/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/marchives/sc-dev/&lt;/a&gt;&lt;br&gt;search: &lt;a href=&quot;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/SynthDef-method-cleanup-tp4516616p4542721.html" />
	<thr:in-reply-to ref="tag:n2.nabble.com,2006:post-4542257"/>
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-4542451</id>
	<title>Re: show default server?</title>
	<published>2010-02-09T09:13:46Z</published>
	<updated>2010-02-09T09:13:46Z</updated>
	<author>
		<name>James Harkins</name>
	</author>
	<content type="html">&lt;div class=&quot;gmail_quote&quot;&gt;On Tue, Feb 9, 2010 at 11:49 AM, Scott Wilson &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://n2.nabble.com/user/SendEmail.jtp?type=node&amp;node=4542451&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;[hidden email]&lt;/a&gt;&amp;gt;&lt;/span&gt; wrote:&lt;br&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot;&gt;
&lt;div style=&quot;word-wrap: break-word;&quot;&gt;If anybody does that, they&amp;#39;re probably aware of the problem, and in trouble, as the server window default buttons already repopulate s.&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br&gt;In other words, it is a bug in the current default button behavior. :)  A button on a standard interface window shouldn&amp;#39;t get the user into trouble (unless you want to make it a documented rule that the user must never use &amp;#39;s&amp;#39; for anything other than a server, which seems draconian at best -- s == Server.default is a common practice, but the mere fact that it&amp;#39;s common does not mean that doing something different is incorrect practice).&lt;br&gt;
&lt;br&gt;hjh&lt;br&gt;&lt;/div&gt;&lt;/div&gt;&lt;br clear=&quot;all&quot;&gt;&lt;br&gt;-- &lt;br&gt;James Harkins /// dewdrop world&lt;br&gt;&lt;a href=&quot;http://n2.nabble.com/user/SendEmail.jtp?type=node&amp;node=4542451&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;[hidden email]&lt;/a&gt;&lt;br&gt;&lt;a href=&quot;http://www.dewdrop-world.net&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.dewdrop-world.net&lt;/a&gt;&lt;br&gt;
&lt;br&gt;&amp;quot;Come said the Muse,&lt;br&gt;Sing me a song no poet has yet chanted,&lt;br&gt;Sing me the universal.&amp;quot;  -- Whitman&lt;br&gt;
</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/show-default-server-tp2913030p4542451.html" />
	<thr:in-reply-to ref="tag:n2.nabble.com,2006:post-4542358"/>
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-4542358</id>
	<title>Re: show default server?</title>
	<published>2010-02-09T08:49:14Z</published>
	<updated>2010-02-09T08:49:14Z</updated>
	<author>
		<name>müllmusik</name>
	</author>
	<content type="html">If anybody does that, they're probably aware of the problem, and in trouble, as the server window default buttons already repopulate s.&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;But I don't believe for a second that anyone does that.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;S.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;div&gt;&lt;div&gt;On 9 Feb 2010, at 16:40, James Harkins wrote:&lt;/div&gt;&lt;br class=&quot;Apple-interchange-newline&quot;&gt;&lt;blockquote type=&quot;cite&quot;&gt;How about, check to see if 's' is a Server and change it if so - otherwise assume the user is using 's' for something else and don't step on their toes?&lt;br&gt;hjh&lt;br&gt;&lt;br&gt;&lt;div class=&quot;gmail_quote&quot;&gt;On Tue, Feb 9, 2010 at 8:04 AM, Scott Wilson &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://n2.nabble.com/user/SendEmail.jtp?type=node&amp;node=4542358&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;[hidden email]&lt;/a&gt;&amp;gt;&lt;/span&gt; wrote:&lt;br&gt; &lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot;&gt;I think it's like this to support changing from the gui window. If it defaulted to true I think it wouldn't matter.&lt;br&gt; &lt;br&gt; Do we even really need a flag? s == Server.default is so pervasive in practice that I'd be surprised if anyone would be bothered by this change. On the contrary not having it seems to cause problems.&lt;font color=&quot;#888888&quot;&gt;&lt;br&gt; &lt;/font&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;&lt;br clear=&quot;all&quot;&gt;&lt;br&gt;-- &lt;br&gt;James Harkins /// dewdrop world&lt;br&gt;&lt;a href=&quot;http://n2.nabble.com/user/SendEmail.jtp?type=node&amp;node=4542358&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;[hidden email]&lt;/a&gt;&lt;br&gt;&lt;a href=&quot;http://www.dewdrop-world.net&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.dewdrop-world.net&lt;/a&gt;&lt;br&gt; &lt;br&gt;&quot;Come said the Muse,&lt;br&gt;Sing me a song no poet has yet chanted,&lt;br&gt;Sing me the universal.&quot; &amp;nbsp;-- Whitman&lt;br&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;&lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/show-default-server-tp2913030p4542358.html" />
	<thr:in-reply-to ref="tag:n2.nabble.com,2006:post-4542291"/>
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-4542291</id>
	<title>Re: show default server?</title>
	<published>2010-02-09T08:40:01Z</published>
	<updated>2010-02-09T08:40:01Z</updated>
	<author>
		<name>James Harkins</name>
	</author>
	<content type="html">How about, check to see if &amp;#39;s&amp;#39; is a Server and change it if so - otherwise assume the user is using &amp;#39;s&amp;#39; for something else and don&amp;#39;t step on their toes?&lt;br&gt;hjh&lt;br&gt;&lt;br&gt;&lt;div class=&quot;gmail_quote&quot;&gt;On Tue, Feb 9, 2010 at 8:04 AM, Scott Wilson &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://n2.nabble.com/user/SendEmail.jtp?type=node&amp;node=4542291&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;[hidden email]&lt;/a&gt;&amp;gt;&lt;/span&gt; wrote:&lt;br&gt;
&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot;&gt;I think it&amp;#39;s like this to support changing from the gui window. If it defaulted to true I think it wouldn&amp;#39;t matter.&lt;br&gt;

&lt;br&gt;
Do we even really need a flag? s == Server.default is so pervasive in practice that I&amp;#39;d be surprised if anyone would be bothered by this change. On the contrary not having it seems to cause problems.&lt;font color=&quot;#888888&quot;&gt;&lt;br&gt;
&lt;/font&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;&lt;br clear=&quot;all&quot;&gt;&lt;br&gt;-- &lt;br&gt;James Harkins /// dewdrop world&lt;br&gt;&lt;a href=&quot;http://n2.nabble.com/user/SendEmail.jtp?type=node&amp;node=4542291&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;[hidden email]&lt;/a&gt;&lt;br&gt;&lt;a href=&quot;http://www.dewdrop-world.net&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.dewdrop-world.net&lt;/a&gt;&lt;br&gt;
&lt;br&gt;&amp;quot;Come said the Muse,&lt;br&gt;Sing me a song no poet has yet chanted,&lt;br&gt;Sing me the universal.&amp;quot;  -- Whitman&lt;br&gt;
</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/show-default-server-tp2913030p4542291.html" />
	<thr:in-reply-to ref="tag:n2.nabble.com,2006:post-4540918"/>
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-4542257</id>
	<title>Re: SynthDef method cleanup</title>
	<published>2010-02-09T08:36:38Z</published>
	<updated>2010-02-09T08:36:38Z</updated>
	<author>
		<name>müllmusik</name>
	</author>
	<content type="html">I also see a use case for writing to disk. I had older code which mass &amp;nbsp;
&lt;br&gt;produced synthdefs based on Loris data. Recreating these took a &amp;nbsp;
&lt;br&gt;significant amount of time, so it was useful to have them on disk (in &amp;nbsp;
&lt;br&gt;a separate folder so they were only loaded when needed) pre-done.
&lt;br&gt;&lt;br&gt;I agree that sending is by far the norm though.
&lt;br&gt;&lt;br&gt;S.
&lt;br&gt;&lt;br&gt;On 9 Feb 2010, at 14:28, Dan Stowell wrote:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; 2010/2/9 adc &amp;lt;&lt;a href=&quot;http://n2.nabble.com/user/SendEmail.jtp?type=node&amp;node=4542257&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;[hidden email]&lt;/a&gt;&amp;gt;:
&lt;br&gt;&amp;gt;&amp;gt; Dan - i don't agree with your second statement. &amp;nbsp;i've never ever &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt; seen users
&lt;br&gt;&amp;gt;&amp;gt; depend on writing defs to disk. &amp;nbsp;i have countless times seen users &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt; confused
&lt;br&gt;&amp;gt;&amp;gt; (myself included) by old defs loaded from disk. not to mention the &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt; file
&lt;br&gt;&amp;gt;&amp;gt; privilege installation issues for admins installing sc etc.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; agree with fredrik here:
&lt;br&gt;&amp;gt;&amp;gt; I think relying on some old file lying somewhere that has a &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt; synthdef you
&lt;br&gt;&amp;gt;&amp;gt; wrote 6 months ago to still be there,
&lt;br&gt;&amp;gt;&amp;gt; and not having been accidentally overwrotten by a new synthdef with &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt; the same
&lt;br&gt;&amp;gt;&amp;gt; name is asking for trouble,
&lt;br&gt;&amp;gt;&amp;gt; and should be discouraged.
&lt;br&gt;&amp;gt;&amp;gt; the rule should be: if you rely on something to be there, please &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt; put it in
&lt;br&gt;&amp;gt;&amp;gt; your startup files.
&lt;br&gt;&amp;gt;&amp;gt; and for completeness, when you boot a server, send it all the &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt; synthdefs
&lt;br&gt;&amp;gt;&amp;gt; currently in the Lib,
&lt;br&gt;&amp;gt;&amp;gt; so it can &amp;quot;just work&amp;quot;. that is even safer to keep things in sync than
&lt;br&gt;&amp;gt;&amp;gt; reading from disk.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; In my work I create classes which have associated synthdefs. I use
&lt;br&gt;&amp;gt; writeOnce to create them as needed. The amount of synthdefs actually
&lt;br&gt;&amp;gt; weighs down startup quite a lot if I change that to writeDefFile, it's
&lt;br&gt;&amp;gt; quite noticeable. I don't want my startup to be generating these
&lt;br&gt;&amp;gt; synthdefs every single time.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; thanks for the discussion! it will be great when all this synthdef &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt; mystery
&lt;br&gt;&amp;gt;&amp;gt; is gone ;-)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Yes :)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Dan
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; best, adc
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; -- 
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://www.mcld.co.uk&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.mcld.co.uk&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt; sc-dev mailing list
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; info (subscription, etc.): &lt;a href=&quot;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&lt;/a&gt;&lt;br&gt;&amp;gt; archive: &lt;a href=&quot;http://www.listarc.bham.ac.uk/marchives/sc-dev/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/marchives/sc-dev/&lt;/a&gt;&lt;br&gt;&amp;gt; search: &lt;a href=&quot;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&lt;/a&gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;sc-dev mailing list
&lt;br&gt;&lt;br&gt;info (subscription, etc.): &lt;a href=&quot;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&lt;/a&gt;&lt;br&gt;archive: &lt;a href=&quot;http://www.listarc.bham.ac.uk/marchives/sc-dev/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/marchives/sc-dev/&lt;/a&gt;&lt;br&gt;search: &lt;a href=&quot;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/SynthDef-method-cleanup-tp4516616p4542257.html" />
	<thr:in-reply-to ref="tag:n2.nabble.com,2006:post-4541368"/>
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-4542162</id>
	<title>Re: The Plot. (was plotting behaviour) : Quark or Common?</title>
	<published>2010-02-09T08:21:02Z</published>
	<updated>2010-02-09T08:21:02Z</updated>
	<author>
		<name>ronald kuivila</name>
	</author>
	<content type="html">Hi Julian,
&lt;br&gt;&lt;br&gt;&amp;nbsp; None, it just didn't work the last time I tried;)
&lt;br&gt;&lt;br&gt;Looking at the code, there will be some issues if you want to draw the &amp;nbsp;
&lt;br&gt;graphs in different colors.
&lt;br&gt;The drawData method needs to flop the array and then draw each one &amp;nbsp;
&lt;br&gt;separately so it can have a different color.
&lt;br&gt;&lt;br&gt;Not a big deal, but the current approach can work for elements of &amp;nbsp;
&lt;br&gt;different sizes, which is very nice.
&lt;br&gt;&lt;br&gt;RJK
&lt;br&gt;&lt;br&gt;On Feb 9, 2010, at 10:26 AM, Julian Rohrhuber wrote:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Hi Ron,
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; With the method I suggested it looks like this - what's the &amp;nbsp;
&lt;br&gt;&amp;gt; difference?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; [
&lt;br&gt;&amp;gt; (1..100)/100, ((1..100)/100).squared
&lt;br&gt;&amp;gt; ].flop.bubble.plot2
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; On 09.02.2010, at 15:25, ronald kuivila wrote:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Hi Julian,
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; I don't see how it does.
&lt;br&gt;&amp;gt;&amp;gt; How can I plot
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; 	(0,0.01..1) on top of (0,0.01..1).squared
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; so that they are overlapping in the same Rect?
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; With the extension I posted, it would look like:
&lt;br&gt;&amp;gt;&amp;gt; [
&lt;br&gt;&amp;gt;&amp;gt; (1..100)/100, ((1..100)/100).squared
&lt;br&gt;&amp;gt;&amp;gt; ].plot2(overlap:true)
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;lt;Picture 1.png&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; RJK
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; PS: This definitely should go in common.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; On Feb 9, 2010, at 4:41 AM, Julian Rohrhuber wrote:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; x = [(0..100), (200..300), (400..500)];
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; x.flop.bubble.plot2;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; On Feb 9, 2010, at 7:19 AM, Julian Rohrhuber wrote:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Hi Ron,
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; just to be sure, I've attached a new version that has a few fixes &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; (renamed MultiPlot to Plotter). I think it does what you intend, &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; but let's see.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; On 09.02.2010, at 13:09, ronald kuivila wrote:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; var &amp;lt;&amp;gt;overlap;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 	
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 	updatePlotBounds {
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 		var deltaY = if(this.numChannels &amp;gt; 1 ) { gapY } { 0.0 };
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 		var distY = bounds.height / this.numChannels;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 		var height = max(20, distY - deltaY);
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 		var min, max;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 	
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 		if (overlap) {
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 			plotViews.do { |view, i|
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 				view.bounds_(bounds)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 			};
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 			plotViews[1..].do{ | pv | &amp;nbsp;pv.backgroundColor.alpha_(0) };
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 			
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 			min = plotViews.collect { | v | v.spec.minval }.minItem;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 			max = plotViews.collect { | v | v.spec.maxval }.maxItem;			
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 			plotViews.do { | v | v.spec.minval_(min); v.spec.maxval_(max) };
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 		}{	
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 			plotViews.do { |view, i|
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 				view.bounds_(
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 					Rect(bounds.left, distY * i + bounds.top, bounds.width, &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; height)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 				)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 			};
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 		}
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 	}
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &amp;lt;PlotView.sc&amp;gt;&amp;lt;PlotWindow.scd&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;lt;Screen shot 2010-02-09 at 16.23.56.png&amp;gt;
&lt;/div&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;sc-dev mailing list
&lt;br&gt;&lt;br&gt;info (subscription, etc.): &lt;a href=&quot;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&lt;/a&gt;&lt;br&gt;archive: &lt;a href=&quot;http://www.listarc.bham.ac.uk/marchives/sc-dev/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/marchives/sc-dev/&lt;/a&gt;&lt;br&gt;search: &lt;a href=&quot;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/plotting-behaviour-tp4504548p4542162.html" />
	<thr:in-reply-to ref="tag:n2.nabble.com,2006:post-4541766"/>
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-4541999</id>
	<title>Re: SynthDef method cleanup</title>
	<published>2010-02-09T07:58:46Z</published>
	<updated>2010-02-09T07:58:46Z</updated>
	<author>
		<name>James Harkins</name>
	</author>
	<content type="html">&lt;div class=&quot;gmail_quote&quot;&gt;On Tue, Feb 9, 2010 at 10:44 AM, ronald kuivila &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://n2.nabble.com/user/SendEmail.jtp?type=node&amp;node=4541999&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;[hidden email]&lt;/a&gt;&amp;gt;&lt;/span&gt; wrote:&lt;br&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot;&gt;
&lt;div style=&quot;word-wrap: break-word;&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;Hi all,&lt;/span&gt;&lt;div style=&quot;font-size: 16px;&quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;font-size: 16px;&quot;&gt;  What if the storage policy were associated with the SynthDescLib rather than the SynthDef?&lt;/div&gt;
&lt;div style=&quot;font-size: 16px;&quot;&gt;So SynthDescLib.global would not store to disk and SynthDescLib.system would.&lt;/div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br&gt;*giggles* After explaining why I hate it when system defs are written to disk... grrrrr...&lt;br&gt;
&lt;br&gt;hjh&lt;br&gt;&lt;/div&gt;&lt;/div&gt;&lt;br clear=&quot;all&quot;&gt;&lt;br&gt;-- &lt;br&gt;James Harkins /// dewdrop world&lt;br&gt;&lt;a href=&quot;http://n2.nabble.com/user/SendEmail.jtp?type=node&amp;node=4541999&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;[hidden email]&lt;/a&gt;&lt;br&gt;&lt;a href=&quot;http://www.dewdrop-world.net&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.dewdrop-world.net&lt;/a&gt;&lt;br&gt;
&lt;br&gt;&amp;quot;Come said the Muse,&lt;br&gt;Sing me a song no poet has yet chanted,&lt;br&gt;Sing me the universal.&amp;quot;  -- Whitman&lt;br&gt;
</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/SynthDef-method-cleanup-tp4516616p4541999.html" />
	<thr:in-reply-to ref="tag:n2.nabble.com,2006:post-4541848"/>
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-4541848</id>
	<title>Re: SynthDef method cleanup</title>
	<published>2010-02-09T07:44:03Z</published>
	<updated>2010-02-09T07:44:03Z</updated>
	<author>
		<name>ronald kuivila</name>
	</author>
	<content type="html">&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 16px; &quot;&gt;Hi all,&lt;/span&gt;&lt;div style=&quot;font-size: 16px; &quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;font-size: 16px; &quot;&gt;&amp;nbsp;&amp;nbsp;What if the storage policy were associated with the SynthDescLib rather than the SynthDef?&lt;/div&gt;&lt;div style=&quot;font-size: 16px; &quot;&gt;So SynthDescLib.global would not store to disk and SynthDescLib.system would.&lt;/div&gt;&lt;div style=&quot;font-size: 16px; &quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;font-size: 16px; &quot;&gt;&amp;nbsp;&amp;nbsp;SynthDef:add could take the name of a SynthDescLib as an argument.&lt;/div&gt;&lt;div style=&quot;font-size: 16px; &quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;font-size: 16px; &quot;&gt;&amp;nbsp;&amp;nbsp;(This might make a bit of trouble for Patterns as you might then need to set ~synthLib. James, Julian?)&lt;/div&gt;&lt;div style=&quot;font-size: 16px; &quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;font-size: 16px; &quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 16px; &quot;&gt;RJK&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 16px;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;On Feb 9, 2010, at 9:58 AM, James Harkins wrote:&lt;/div&gt;&lt;br class=&quot;Apple-interchange-newline&quot;&gt;&lt;blockquote type=&quot;cite&quot;&gt;&lt;div style=&quot;word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; &quot;&gt;&lt;div&gt;&lt;div&gt;On Feb 9, 2010, at 8:35 AM, Fredrik Olofsson wrote:&lt;/div&gt;&lt;br class=&quot;Apple-interchange-newline&quot;&gt;&lt;blockquote type=&quot;cite&quot;&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;Dan - i don't agree with your second statement.&amp;nbsp; i've never ever seen users depend on writing defs to disk.&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;pvcalc makes huge synthdefs that can't be sent by udp. Maybe the solution is to resort transparently to a temp file that is deleted after the server receives the def, something like the following pseudocode:&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;fork {&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;def.store;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;s.sync;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&quot;rm -f %&quot;.format(path to def).unixCmd&lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;hjh&lt;/div&gt;&lt;blockquote type=&quot;cite&quot;&gt; &lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;&lt;div&gt; &lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: separate; color: rgb(0, 0, 0); font-family: 'Lucida Grande'; font-size: 11px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0; &quot;&gt;&lt;div&gt;&lt;br class=&quot;Apple-interchange-newline&quot;&gt;: H. James Harkins&lt;/div&gt;&lt;div&gt;: &lt;a href=&quot;http://n2.nabble.com/user/SendEmail.jtp?type=node&amp;node=4541848&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;[hidden email]&lt;/a&gt;&lt;/div&gt;&lt;div&gt;: &lt;a href=&quot;http://www.dewdrop-world.net&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.dewdrop-world.net&lt;/a&gt;&lt;/div&gt;&lt;div&gt;.::!:.:.......:.::........:..!.::.::...:..:...:.:.:.:..:&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&quot;Come said the Muse,&lt;/div&gt;&lt;div&gt;Sing me a song no poet has yet chanted,&lt;/div&gt;&lt;div&gt;Sing me the universal.&quot;&amp;nbsp; -- Whitman&lt;/div&gt;&lt;/span&gt; &lt;/div&gt;&lt;br&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;&lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/SynthDef-method-cleanup-tp4516616p4541848.html" />
	<thr:in-reply-to ref="tag:n2.nabble.com,2006:post-4541560"/>
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-4541766</id>
	<title>Re: The Plot. (was plotting behaviour) : Quark or Common?</title>
	<published>2010-02-09T07:26:05Z</published>
	<updated>2010-02-09T07:26:05Z</updated>
	<author>
		<name>Julian Rohrhuber</name>
	</author>
	<content type="html">Hi Ron, 
&lt;br&gt;&lt;br&gt;With the method I suggested it looks like this - what's the difference?
&lt;br&gt;&lt;br&gt;&lt;br&gt;[
&lt;br&gt;(1..100)/100, ((1..100)/100).squared
&lt;br&gt;].flop.bubble.plot2
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;On 09.02.2010, at 15:25, ronald kuivila wrote:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Hi Julian,
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I don't see how it does. 
&lt;br&gt;&amp;gt; How can I plot
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 	(0,0.01..1) on top of (0,0.01..1).squared 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp;so that they are overlapping in the same Rect?
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; With the extension I posted, it would look like:
&lt;br&gt;&amp;gt; [
&lt;br&gt;&amp;gt; (1..100)/100, ((1..100)/100).squared
&lt;br&gt;&amp;gt; ].plot2(overlap:true)
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;lt;Picture 1.png&amp;gt;
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; RJK
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; PS: This definitely should go in common.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; On Feb 9, 2010, at 4:41 AM, Julian Rohrhuber wrote:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; x = [(0..100), (200..300), (400..500)];
&lt;br&gt;&amp;gt;&amp;gt; x.flop.bubble.plot2;
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; On Feb 9, 2010, at 7:19 AM, Julian Rohrhuber wrote:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; Hi Ron, 
&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; just to be sure, I've attached a new version that has a few fixes (renamed MultiPlot to Plotter). I think it does what you intend, but let's see.
&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; On 09.02.2010, at 13:09, ronald kuivila wrote:
&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; var &amp;lt;&amp;gt;overlap;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 	
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 	updatePlotBounds {
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 		var deltaY = if(this.numChannels &amp;gt; 1 ) { gapY } { 0.0 };
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 		var distY = bounds.height / this.numChannels;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 		var height = max(20, distY - deltaY);
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 		var min, max;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 	
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 		if (overlap) {
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 			plotViews.do { |view, i|
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 				view.bounds_(bounds)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 			};
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 			plotViews[1..].do{ | pv | &amp;nbsp;pv.backgroundColor.alpha_(0) };
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 			
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 			min = plotViews.collect { | v | v.spec.minval }.minItem;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 			max = plotViews.collect { | v | v.spec.maxval }.maxItem;			
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 			plotViews.do { | v | v.spec.minval_(min); v.spec.maxval_(max) };
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 		}{	
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 			plotViews.do { |view, i|
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 				view.bounds_(
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 					Rect(bounds.left, distY * i + bounds.top, bounds.width, height)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 				)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 			};
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 		}
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 	}
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; }
&lt;br&gt;&amp;gt;&amp;gt; &amp;lt;PlotView.sc&amp;gt;&amp;lt;PlotWindow.scd&amp;gt;
&lt;br&gt;&amp;gt; 
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt; &lt;div class=&quot;small&quot;&gt;&lt;br/&gt;&lt;img src=&quot;http://n2.nabble.com/images/icon_attachment.gif&quot; &gt; &lt;strong&gt;Screen shot 2010-02-09 at 16.23.56.png&lt;/strong&gt; (33K) &lt;a href=&quot;http://n2.nabble.com/attachment/4541766/0/Screen%20shot%202010-02-09%20at%2016.23.56.png&quot; target=&quot;_top&quot;&gt;Download Attachment&lt;/a&gt;&lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/plotting-behaviour-tp4504548p4541766.html" />
	<thr:in-reply-to ref="tag:n2.nabble.com,2006:post-4541421"/>
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-4542139</id>
	<title>Re: show default server?</title>
	<published>2010-02-09T07:16:24Z</published>
	<updated>2010-02-09T07:16:24Z</updated>
	<author>
		<name>Julian Rohrhuber</name>
	</author>
	<content type="html">makes sense. Just leave the flag away, I'd say.
&lt;br&gt;&lt;br&gt;On 09.02.2010, at 14:04, Scott Wilson wrote:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; I think it's like this to support changing from the gui window. If it defaulted to true I think it wouldn't matter.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Do we even really need a flag? s == Server.default is so pervasive in practice that I'd be surprised if anyone would be bothered by this change. On the contrary not having it seems to cause problems.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; S.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; On 9 Feb 2010, at 12:51, Julian Rohrhuber wrote:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; setters shouldn't have two args really. So I think it could be a flag in the class.
&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; On 09.02.2010, at 13:40, Scott Wilson wrote:
&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Is there any reason why sync_s should not default to true?
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; I find this sort of construction:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Server.default = s = Server.internal;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; very clunky and prone to order mistakes for beginners.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; S.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; On 16 May 2009, at 17:20, Alberto de Campo wrote:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; hi all,
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; I find the question 'which server is currently default' occurs really often,
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; and is a regular source of confusion for students. It occurred to me that the
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; server windows should just show that.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; below the diff for an attempt - ok like that?
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; any better ideas? opinions?
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; best, adc
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Index: Control/Server.sc
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; ===================================================================
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; --- Control/Server.sc	(revision 9164)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; +++ Control/Server.sc	(working copy)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; @@ -185,7 +185,7 @@
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Server : Model {
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; -	classvar &amp;lt;&amp;gt;local, &amp;lt;&amp;gt;internal, &amp;lt;&amp;gt;default, &amp;lt;&amp;gt;named, &amp;lt;&amp;gt;set, &amp;lt;&amp;gt;program;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; +	classvar &amp;lt;&amp;gt;local, &amp;lt;&amp;gt;internal, &amp;lt;default, &amp;lt;&amp;gt;named, &amp;lt;&amp;gt;set, &amp;lt;&amp;gt;program;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 	var &amp;lt;name, &amp;lt;&amp;gt;addr, &amp;lt;clientID=0;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 	var &amp;lt;isLocal, &amp;lt;inProcess, &amp;lt;&amp;gt;sendQuit, &amp;lt;&amp;gt;remoteControlled;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; @@ -212,6 +212,12 @@
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 	var &amp;lt;pid;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; +	*default_ { |server, sync_s = false|
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; +		default = server; // sync with s?
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; +		if (sync_s, { thisProcess.interpreter.s = server });
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; +		this.all.do(_.changed(\default));
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; +	}
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Index: GUI/PlusGUI/Control/ServerPlusGUI.sc
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; ===================================================================
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; --- GUI/PlusGUI/Control/ServerPlusGUI.sc	(revision 9164)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; +++ GUI/PlusGUI/Control/ServerPlusGUI.sc	(working copy)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; @@ -15,7 +15,7 @@
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 	}
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 	makeGui { arg w;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; -		var active, booter, killer, makeDefault, running, booting, stopped, bundling;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; +		var active, booter, killer, makeDefault, running, booting, stopped, bundling, showDefault;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 		var recorder, scoper;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 		var countsViews, ctlr;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 		var dumping = false, label, gui, font, volumeNum;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; @@ -68,12 +68,10 @@
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 		makeDefault = gui.button.new(w, Rect(0,0, 54, 18));
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 		makeDefault.font = font;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 		makeDefault.canFocus = false;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; -		makeDefault.states = [[&amp;quot;-&amp;gt; default&amp;quot;, Color.black, Color.clear]];
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; -		makeDefault.action = {
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; -			thisProcess.interpreter.s = this;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; -			Server.default = this;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; -		};
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; -
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; +		makeDefault.states = [[&amp;quot;-&amp;gt; default&amp;quot;, Color.black, Color.clear], [&amp;quot;-&amp;gt; default&amp;quot;, Color.black, Color.green.alpha_(0.2)]];
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; +		makeDefault.value_((this == Server.default).binaryValue);
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; +		makeDefault.action = { Server.default_(this, true) };
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 		//w.view.decorator.nextLine;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 		recorder = gui.button.new(w, Rect(0,0, 66, 18));
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; @@ -169,6 +167,7 @@
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 				window = nil;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 				ctlr.remove;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 			};
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 		},{
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 			running = {
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 				active.stringColor_(Color.new255(74, 120, 74));
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; @@ -202,6 +201,12 @@
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 				ctlr.remove;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 			};
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 		});
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; +		showDefault = {
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; +			&amp;quot;// Server.default: % - s: % // \n\n&amp;quot;.postf(Server.default, thisProcess.interpreter.s);
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; +			makeDefault.value = (Server.default == this).binaryValue;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; +		};
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 		if(serverRunning,running,stopped);
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 		w.view.decorator.nextLine;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; @@ -288,8 +293,10 @@
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 					if (unicode == 16rF700, { slider.increment; });
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 					if (unicode == 16rF703, { slider.increment; });
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 					if (unicode == 16rF701, { slider.decrement; });
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; -					if (unicode == 16rF702, { slider.decrement; });					nil;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; -					});
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; +					if (unicode == 16rF702, { slider.decrement; });
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; +					nil;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; +					})
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; +					;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 			volController = SimpleController(volume)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 				.put(\amp, {|changer, what, vol|
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 					{
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; @@ -325,7 +332,9 @@
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 			.put(\cmdPeriod,{
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 				recorder.setProperty(\value,0);
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 			})
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; -			.put(\bundling, bundling);
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; +			.put(\bundling, bundling)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; +			.put(\default, showDefault);
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 		this.startAliveThread;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 	}
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; -- 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; --
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Alberto de Campo
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Bergstrasse 59/33
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; A-8020 Graz, Austria
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; e-mail : &lt;a href=&quot;http://n2.nabble.com/user/SendEmail.jtp?type=node&amp;node=4542139&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;[hidden email]&lt;/a&gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; --
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; sc-dev mailing list
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; info (subscription, etc.): &lt;a href=&quot;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; archive: &lt;a href=&quot;http://www.listarc.bham.ac.uk/marchives/sc-dev/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/marchives/sc-dev/&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; search: &lt;a href=&quot;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; sc-dev mailing list
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; info (subscription, etc.): &lt;a href=&quot;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; archive: &lt;a href=&quot;http://www.listarc.bham.ac.uk/marchives/sc-dev/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/marchives/sc-dev/&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; search: &lt;a href=&quot;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt;&amp;gt; sc-dev mailing list
&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; info (subscription, etc.): &lt;a href=&quot;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt; archive: &lt;a href=&quot;http://www.listarc.bham.ac.uk/marchives/sc-dev/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/marchives/sc-dev/&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt; search: &lt;a href=&quot;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&lt;/a&gt;&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt; sc-dev mailing list
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; info (subscription, etc.): &lt;a href=&quot;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&lt;/a&gt;&lt;br&gt;&amp;gt; archive: &lt;a href=&quot;http://www.listarc.bham.ac.uk/marchives/sc-dev/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/marchives/sc-dev/&lt;/a&gt;&lt;br&gt;&amp;gt; search: &lt;a href=&quot;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&lt;/a&gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;sc-dev mailing list
&lt;br&gt;&lt;br&gt;info (subscription, etc.): &lt;a href=&quot;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&lt;/a&gt;&lt;br&gt;archive: &lt;a href=&quot;http://www.listarc.bham.ac.uk/marchives/sc-dev/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/marchives/sc-dev/&lt;/a&gt;&lt;br&gt;search: &lt;a href=&quot;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/show-default-server-tp2913030p4542139.html" />
	<thr:in-reply-to ref="tag:n2.nabble.com,2006:post-4540918"/>
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-4541560</id>
	<title>Re: SynthDef method cleanup</title>
	<published>2010-02-09T06:58:52Z</published>
	<updated>2010-02-09T06:58:52Z</updated>
	<author>
		<name>James Harkins</name>
	</author>
	<content type="html">&lt;div&gt;&lt;div&gt;On Feb 9, 2010, at 8:35 AM, Fredrik Olofsson wrote:&lt;/div&gt;&lt;br class=&quot;Apple-interchange-newline&quot;&gt;&lt;blockquote type=&quot;cite&quot;&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;Dan - i don't agree with your second statement.&amp;nbsp; i've never ever seen users depend on writing defs to disk.&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;pvcalc makes huge synthdefs that can't be sent by udp. Maybe the solution is to resort transparently to a temp file that is deleted after the server receives the def, something like the following pseudocode:&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;fork {&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;def.store;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;s.sync;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&quot;rm -f %&quot;.format(path to def).unixCmd&lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;hjh&lt;/div&gt;&lt;blockquote type=&quot;cite&quot;&gt; &lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;&lt;div&gt; &lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: separate; color: rgb(0, 0, 0); font-family: 'Lucida Grande'; font-size: 11px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0; &quot;&gt;&lt;div&gt;&lt;br class=&quot;Apple-interchange-newline&quot;&gt;: H. James Harkins&lt;/div&gt;&lt;div&gt;: &lt;a href=&quot;http://n2.nabble.com/user/SendEmail.jtp?type=node&amp;node=4541560&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;[hidden email]&lt;/a&gt;&lt;/div&gt;&lt;div&gt;: &lt;a href=&quot;http://www.dewdrop-world.net&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.dewdrop-world.net&lt;/a&gt;&lt;/div&gt;&lt;div&gt;.::!:.:.......:.::........:..!.::.::...:..:...:.:.:.:..:&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&quot;Come said the Muse,&lt;/div&gt;&lt;div&gt;Sing me a song no poet has yet chanted,&lt;/div&gt;&lt;div&gt;Sing me the universal.&quot;&amp;nbsp; -- Whitman&lt;/div&gt;&lt;/span&gt; &lt;/div&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/SynthDef-method-cleanup-tp4516616p4541560.html" />
	<thr:in-reply-to ref="tag:n2.nabble.com,2006:post-4541056"/>
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-4541548</id>
	<title>Where to put system defs? (spun off from SynthDef cleanup)</title>
	<published>2010-02-09T06:56:24Z</published>
	<updated>2010-02-09T06:56:24Z</updated>
	<author>
		<name>James Harkins</name>
	</author>
	<content type="html">
&lt;div&gt;On Feb 9, 2010, at 9:28 AM, Dan Stowell wrote:&lt;/div&gt;&lt;br class=&quot;Apple-interchange-newline&quot;&gt;&lt;blockquote type=&quot;cite&quot;&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;In my work I create classes which have associated synthdefs. I use&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;writeOnce to create them as needed. The amount of synthdefs actually&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;weighs down startup quite a lot if I change that to writeDefFile, it's&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;quite noticeable. I don't want my startup to be generating these&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;synthdefs every single time.&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;As this is a tangent to the main SynthDef discussion, I thought it best to start a new thread.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;I have a real pet peeve about classes that add weight to the synthdefs directory. At the same time, I also have classes that require SynthDefs to be there when needed -- so I put my money where my mouth is and instead, now I use dependencies to send SynthDefs when a server boots.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;http://quarks.svn.sourceforge.net/viewvc/quarks/dewdrop_lib/ddwChucklib/Prototypes/startup00-ddwSynths.scd&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://quarks.svn.sourceforge.net/viewvc/quarks/dewdrop_lib/ddwChucklib/Prototypes/startup00-ddwSynths.scd&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;This might not be an ideal solution for everyone, sure, but there's an interesting problem lurking in there. As you scale up the number of installed extensions, if a certain percentage of them add their own set of SynthDefs, where do you put them?&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;In principle, I think it would be ideal to send SynthDefs only when they're going to be used and not before. In practice, that proved to be a PITA in my work. I'm not sure which is the lesser of evils. My way takes a bit more care in the initial coding, but it does have the advantage that a user who installs dewdrop_lib, and then uninstalls it later, doesn't have any persistent cruft in the filesystem (whereas writeOnce leaves litter behind). To me, it's worth the extra effort to be more polite to the user.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;hjh&lt;/div&gt;&lt;br&gt;&lt;div&gt; &lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: separate; color: rgb(0, 0, 0); font-family: 'Lucida Grande'; font-size: 11px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0; &quot;&gt;&lt;div&gt;&lt;br class=&quot;Apple-interchange-newline&quot;&gt;: H. James Harkins&lt;/div&gt;&lt;div&gt;: &lt;a href=&quot;http://n2.nabble.com/user/SendEmail.jtp?type=node&amp;node=4541548&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;[hidden email]&lt;/a&gt;&lt;/div&gt;&lt;div&gt;: &lt;a href=&quot;http://www.dewdrop-world.net&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.dewdrop-world.net&lt;/a&gt;&lt;/div&gt;&lt;div&gt;.::!:.:.......:.::........:..!.::.::...:..:...:.:.:.:..:&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&quot;Come said the Muse,&lt;/div&gt;&lt;div&gt;Sing me a song no poet has yet chanted,&lt;/div&gt;&lt;div&gt;Sing me the universal.&quot;&amp;nbsp; -- Whitman&lt;/div&gt;&lt;/span&gt; &lt;/div&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/Where-to-put-system-defs-spun-off-from-SynthDef-cleanup-tp4541548p4541548.html" />
	
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-4541542</id>
	<title>Re: SynthDef method cleanup</title>
	<published>2010-02-09T06:55:07Z</published>
	<updated>2010-02-09T06:55:07Z</updated>
	<author>
		<name>Fredrik Olofsson</name>
	</author>
	<content type="html">&lt;br&gt;&lt;div&gt;&lt;div&gt;9 feb 2010 kl. 15.28 skrev Dan Stowell:&lt;/div&gt;&lt;br class=&quot;Apple-interchange-newline&quot;&gt;&lt;blockquote type=&quot;cite&quot;&gt;&lt;div&gt;2010/2/9 adc &amp;lt;&lt;a href=&quot;http://n2.nabble.com/user/SendEmail.jtp?type=node&amp;node=4541542&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;[hidden email]&lt;/a&gt;&amp;gt;:&lt;br&gt;&lt;blockquote type=&quot;cite&quot;&gt;Dan - i don't agree with your second statement. &amp;nbsp;i've never ever seen users&lt;br&gt;&lt;/blockquote&gt;&lt;blockquote type=&quot;cite&quot;&gt;depend on writing defs to disk. &amp;nbsp;i have countless times seen users confused&lt;br&gt;&lt;/blockquote&gt;&lt;blockquote type=&quot;cite&quot;&gt;(myself included) by old defs loaded from disk.&amp;nbsp;not to mention the file&lt;br&gt;&lt;/blockquote&gt;&lt;blockquote type=&quot;cite&quot;&gt;privilege installation issues for admins installing sc etc.&lt;br&gt;&lt;/blockquote&gt;&lt;blockquote type=&quot;cite&quot;&gt;&lt;br&gt;&lt;/blockquote&gt;&lt;blockquote type=&quot;cite&quot;&gt;agree with fredrik here:&lt;br&gt;&lt;/blockquote&gt;&lt;blockquote type=&quot;cite&quot;&gt;I think relying on some old file lying somewhere that has a synthdef you&lt;br&gt;&lt;/blockquote&gt;&lt;blockquote type=&quot;cite&quot;&gt;wrote 6 months ago to still be there,&lt;br&gt;&lt;/blockquote&gt;&lt;blockquote type=&quot;cite&quot;&gt;and not having been accidentally overwrotten by a new synthdef with the same&lt;br&gt;&lt;/blockquote&gt;&lt;blockquote type=&quot;cite&quot;&gt;name is asking for trouble,&lt;br&gt;&lt;/blockquote&gt;&lt;blockquote type=&quot;cite&quot;&gt;and should be discouraged.&lt;br&gt;&lt;/blockquote&gt;&lt;blockquote type=&quot;cite&quot;&gt;the rule should be: if you rely on something to be there, please put it in&lt;br&gt;&lt;/blockquote&gt;&lt;blockquote type=&quot;cite&quot;&gt;your startup files.&lt;br&gt;&lt;/blockquote&gt;&lt;blockquote type=&quot;cite&quot;&gt;and for completeness, when you boot a server, send it all the synthdefs&lt;br&gt;&lt;/blockquote&gt;&lt;blockquote type=&quot;cite&quot;&gt;currently in the Lib,&lt;br&gt;&lt;/blockquote&gt;&lt;blockquote type=&quot;cite&quot;&gt;so it can &quot;just work&quot;. that is even safer to keep things in sync than&lt;br&gt;&lt;/blockquote&gt;&lt;blockquote type=&quot;cite&quot;&gt;reading from disk.&lt;br&gt;&lt;/blockquote&gt;&lt;br&gt;In my work I create classes which have associated synthdefs. I use&lt;br&gt;writeOnce to create them as needed. The amount of synthdefs actually&lt;br&gt;weighs down startup quite a lot if I change that to writeDefFile, it's&lt;br&gt;quite noticeable. I don't want my startup to be generating these&lt;br&gt;synthdefs every single time.&lt;br&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;there should be a better way to do this than writeOnce. &amp;nbsp;i have old classes that uses writeOnce as well,&amp;nbsp;but stopped using it because of a fundamental flaw: when you distribute these classes and have updated the synthdef, you need to tell the users to manually delete the def file and recompile. &amp;nbsp;how confusing and error prone&amp;nbsp;isn't that? &amp;nbsp;same issue with storeOnce.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;_f&lt;br&gt;&lt;div&gt; &lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0; &quot;&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: normal normal normal 12px/normal Helvetica; &quot;&gt;&lt;br class=&quot;Apple-interchange-newline&quot;&gt;&amp;nbsp;&amp;nbsp;#|&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: normal normal normal 12px/normal Helvetica; &quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;fredrikolofsson.com&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;klippav.org&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;musicalfieldsforever.com&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: normal normal normal 12px/normal Helvetica; &quot;&gt;&amp;nbsp;&amp;nbsp;|#&lt;/font&gt;&lt;/div&gt;&lt;/span&gt; &lt;/div&gt;&lt;br&gt;&lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/SynthDef-method-cleanup-tp4516616p4541542.html" />
	<thr:in-reply-to ref="tag:n2.nabble.com,2006:post-4541368"/>
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-4541930</id>
	<title>Re: SynthDef method cleanup</title>
	<published>2010-02-09T06:52:05Z</published>
	<updated>2010-02-09T06:52:05Z</updated>
	<author>
		<name>nescivi</name>
	</author>
	<content type="html">On Tuesday 09 February 2010 09:20:36 James Harkins wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; On Feb 9, 2010, at 9:09 AM, ronald kuivila wrote:
&lt;br&gt;&amp;gt; &amp;gt; Hi all,
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp;My guess is that storing synthdef files comes from imagining the
&lt;br&gt;&amp;gt; &amp;gt; server as a shared server (like a latter day Samson box or something).
&lt;br&gt;&amp;gt; &amp;gt; Come to think of it, there is a lot of structure there that is
&lt;br&gt;&amp;gt; &amp;gt; probably rarely, if ever, used. For example, does anyone use a
&lt;br&gt;&amp;gt; &amp;gt; SynthDescLib other
&lt;br&gt;&amp;gt; &amp;gt; than SynthDescLib.global ?
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Marije and I do.
&lt;/div&gt;&lt;br&gt;And I even think it should be encouraged more, as it provides interesting ways 
&lt;br&gt;of organising synths, by project or function, and browsing them in different 
&lt;br&gt;groups in the SynthDefBrowser.
&lt;br&gt;And it provides a way of saving the synthdefs in custom paths on your disk, 
&lt;br&gt;from which you can read them later on. I've found this specifically useful as 
&lt;br&gt;I've built a system where I concatenate synths from signals and various 
&lt;br&gt;spatialisation methods, so I do not have one definition in one place.
&lt;br&gt;&lt;br&gt;It needs to be documented much better, which is still on my TODO list :)
&lt;br&gt;&lt;br&gt;sincerely,
&lt;br&gt;Marije
&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;sc-dev mailing list
&lt;br&gt;&lt;br&gt;info (subscription, etc.): &lt;a href=&quot;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&lt;/a&gt;&lt;br&gt;archive: &lt;a href=&quot;http://www.listarc.bham.ac.uk/marchives/sc-dev/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/marchives/sc-dev/&lt;/a&gt;&lt;br&gt;search: &lt;a href=&quot;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/SynthDef-method-cleanup-tp4516616p4541930.html" />
	<thr:in-reply-to ref="tag:n2.nabble.com,2006:post-4541302"/>
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-4541368</id>
	<title>Re: SynthDef method cleanup</title>
	<published>2010-02-09T06:28:45Z</published>
	<updated>2010-02-09T06:28:45Z</updated>
	<author>
		<name>Dan Stowell-3</name>
	</author>
	<content type="html">2010/2/9 adc &amp;lt;&lt;a href=&quot;http://n2.nabble.com/user/SendEmail.jtp?type=node&amp;node=4541368&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;[hidden email]&lt;/a&gt;&amp;gt;:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Dan - i don't agree with your second statement.  i've never ever seen users
&lt;br&gt;&amp;gt; depend on writing defs to disk.  i have countless times seen users confused
&lt;br&gt;&amp;gt; (myself included) by old defs loaded from disk. not to mention the file
&lt;br&gt;&amp;gt; privilege installation issues for admins installing sc etc.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; agree with fredrik here:
&lt;br&gt;&amp;gt; I think relying on some old file lying somewhere that has a synthdef you
&lt;br&gt;&amp;gt; wrote 6 months ago to still be there,
&lt;br&gt;&amp;gt; and not having been accidentally overwrotten by a new synthdef with the same
&lt;br&gt;&amp;gt; name is asking for trouble,
&lt;br&gt;&amp;gt; and should be discouraged.
&lt;br&gt;&amp;gt; the rule should be: if you rely on something to be there, please put it in
&lt;br&gt;&amp;gt; your startup files.
&lt;br&gt;&amp;gt; and for completeness, when you boot a server, send it all the synthdefs
&lt;br&gt;&amp;gt; currently in the Lib,
&lt;br&gt;&amp;gt; so it can &amp;quot;just work&amp;quot;. that is even safer to keep things in sync than
&lt;br&gt;&amp;gt; reading from disk.
&lt;/div&gt;&lt;br&gt;In my work I create classes which have associated synthdefs. I use
&lt;br&gt;writeOnce to create them as needed. The amount of synthdefs actually
&lt;br&gt;weighs down startup quite a lot if I change that to writeDefFile, it's
&lt;br&gt;quite noticeable. I don't want my startup to be generating these
&lt;br&gt;synthdefs every single time.
&lt;br&gt;&lt;br&gt;&amp;gt; thanks for the discussion! it will be great when all this synthdef mystery
&lt;br&gt;&amp;gt; is gone ;-)
&lt;br&gt;&lt;br&gt;Yes :)
&lt;br&gt;&lt;br&gt;Dan
&lt;br&gt;&lt;br&gt;&amp;gt; best, adc
&lt;br&gt;&amp;gt;
&lt;br&gt;-- 
&lt;br&gt;&lt;a href=&quot;http://www.mcld.co.uk&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.mcld.co.uk&lt;/a&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;sc-dev mailing list
&lt;br&gt;&lt;br&gt;info (subscription, etc.): &lt;a href=&quot;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&lt;/a&gt;&lt;br&gt;archive: &lt;a href=&quot;http://www.listarc.bham.ac.uk/marchives/sc-dev/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/marchives/sc-dev/&lt;/a&gt;&lt;br&gt;search: &lt;a href=&quot;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/SynthDef-method-cleanup-tp4516616p4541368.html" />
	<thr:in-reply-to ref="tag:n2.nabble.com,2006:post-4541221"/>
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-4541421</id>
	<title>Re: The Plot. (was plotting behaviour) : Quark or Common?</title>
	<published>2010-02-09T06:25:27Z</published>
	<updated>2010-02-09T06:25:27Z</updated>
	<author>
		<name>ronald kuivila</name>
	</author>
	<content type="html">Hi Julian,&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;I don't see how it does.&amp;nbsp;&lt;/div&gt;&lt;div&gt;How can I plot&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre; &quot;&gt;	&lt;/span&gt;(0,0.01..1) on top of (0,0.01..1).squared&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;so that they are overlapping in the same Rect?&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;With the extension I posted, it would look like:&lt;/div&gt;&lt;div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 14px/normal Monaco; &quot;&gt;[&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 14px/normal Monaco; &quot;&gt;(1..100)/100, ((1..100)/100).squared&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 14px/normal Monaco; &quot;&gt;].plot2(overlap:true)&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;img height=&quot;454&quot; width=&quot;643&quot; apple-width=&quot;yes&quot; apple-height=&quot;yes&quot; src=&quot;http://n2.nabble.com/attachment/4541421/0/Picture%201.png&quot;&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 14px/normal Monaco; &quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 14px/normal Monaco; &quot;&gt;RJK&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;PS: This definitely should go in common.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;div&gt;&lt;div&gt;On Feb 9, 2010, at 4:41 AM, Julian Rohrhuber wrote:&lt;/div&gt;&lt;br class=&quot;Apple-interchange-newline&quot;&gt;&lt;blockquote type=&quot;cite&quot;&gt;x = [(0..100), (200..300), (400..500)];&lt;br&gt;x.flop.bubble.plot2;&lt;br&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;On Feb 9, 2010, at 7:19 AM, Julian Rohrhuber wrote:&lt;/div&gt;&lt;br class=&quot;Apple-interchange-newline&quot;&gt;&lt;blockquote type=&quot;cite&quot;&gt;&lt;div&gt;Hi Ron, &lt;br&gt;&lt;br&gt;just to be sure, I've attached a new version that has a few fixes (renamed MultiPlot to Plotter). I think it does what you intend, but let's see.&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;On 09.02.2010, at 13:09, ronald kuivila wrote:&lt;br&gt;&lt;br&gt;&lt;blockquote type=&quot;cite&quot;&gt;var &amp;lt;&amp;gt;overlap;&lt;br&gt;&lt;/blockquote&gt;&lt;blockquote type=&quot;cite&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;br&gt;&lt;/blockquote&gt;&lt;blockquote type=&quot;cite&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;updatePlotBounds {&lt;br&gt;&lt;/blockquote&gt;&lt;blockquote type=&quot;cite&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;var deltaY = if(this.numChannels &amp;gt; 1 ) { gapY } { 0.0 };&lt;br&gt;&lt;/blockquote&gt;&lt;blockquote type=&quot;cite&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;var distY = bounds.height / this.numChannels;&lt;br&gt;&lt;/blockquote&gt;&lt;blockquote type=&quot;cite&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;var height = max(20, distY - deltaY);&lt;br&gt;&lt;/blockquote&gt;&lt;blockquote type=&quot;cite&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;var min, max;&lt;br&gt;&lt;/blockquote&gt;&lt;blockquote type=&quot;cite&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;br&gt;&lt;/blockquote&gt;&lt;blockquote type=&quot;cite&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;if (overlap) {&lt;br&gt;&lt;/blockquote&gt;&lt;blockquote type=&quot;cite&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;plotViews.do { |view, i|&lt;br&gt;&lt;/blockquote&gt;&lt;blockquote type=&quot;cite&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;view.bounds_(bounds)&lt;br&gt;&lt;/blockquote&gt;&lt;blockquote type=&quot;cite&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;};&lt;br&gt;&lt;/blockquote&gt;&lt;blockquote type=&quot;cite&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;plotViews[1..].do{ | pv | &amp;nbsp;pv.backgroundColor.alpha_(0) };&lt;br&gt;&lt;/blockquote&gt;&lt;blockquote type=&quot;cite&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;br&gt;&lt;/blockquote&gt;&lt;blockquote type=&quot;cite&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;min = plotViews.collect { | v | v.spec.minval }.minItem;&lt;br&gt;&lt;/blockquote&gt;&lt;blockquote type=&quot;cite&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;max = plotViews.collect { | v | v.spec.maxval }.maxItem;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;br&gt;&lt;/blockquote&gt;&lt;blockquote type=&quot;cite&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;plotViews.do { | v | v.spec.minval_(min); v.spec.maxval_(max) };&lt;br&gt;&lt;/blockquote&gt;&lt;blockquote type=&quot;cite&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;}{&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;br&gt;&lt;/blockquote&gt;&lt;blockquote type=&quot;cite&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;plotViews.do { |view, i|&lt;br&gt;&lt;/blockquote&gt;&lt;blockquote type=&quot;cite&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;view.bounds_(&lt;br&gt;&lt;/blockquote&gt;&lt;blockquote type=&quot;cite&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;Rect(bounds.left, distY * i + bounds.top, bounds.width, height)&lt;br&gt;&lt;/blockquote&gt;&lt;blockquote type=&quot;cite&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;)&lt;br&gt;&lt;/blockquote&gt;&lt;blockquote type=&quot;cite&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;};&lt;br&gt;&lt;/blockquote&gt;&lt;blockquote type=&quot;cite&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;}&lt;br&gt;&lt;/blockquote&gt;&lt;blockquote type=&quot;cite&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;}&lt;br&gt;&lt;/blockquote&gt;&lt;blockquote type=&quot;cite&quot;&gt;}&lt;br&gt;&lt;/blockquote&gt;&lt;span&gt;&amp;lt;PlotView.sc&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;lt;PlotWindow.scd&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;&lt;br /&gt; </content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/plotting-behaviour-tp4504548p4541421.html" />
	<thr:in-reply-to ref="tag:n2.nabble.com,2006:post-4540712"/>
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-4541308</id>
	<title>Re: SynthDef method cleanup</title>
	<published>2010-02-09T06:21:29Z</published>
	<updated>2010-02-09T06:21:29Z</updated>
	<author>
		<name>Dan Stowell-3</name>
	</author>
	<content type="html">Ron - see marije's message in this thread - she does
&lt;br&gt;&lt;br&gt;2010/2/9 ronald kuivila &amp;lt;&lt;a href=&quot;http://n2.nabble.com/user/SendEmail.jtp?type=node&amp;node=4541308&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;[hidden email]&lt;/a&gt;&amp;gt;:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Hi all,
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;  My guess is that storing synthdef files comes from imagining the server as
&lt;br&gt;&amp;gt; a shared server (like a latter day Samson box or something).
&lt;br&gt;&amp;gt; Come to think of it, there is a lot of structure there that is probably
&lt;br&gt;&amp;gt; rarely, if ever, used. For example, does anyone use a SynthDescLib other
&lt;br&gt;&amp;gt; than SynthDescLib.global ?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; RJK
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; On Feb 9, 2010, at 8:35 AM, Fredrik Olofsson wrote:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; hi
&lt;br&gt;&amp;gt;&amp;gt; my €1.  there's so much confusion around all this.  please let's make even
&lt;br&gt;&amp;gt;&amp;gt; more drastic changes.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; make .send a very special case.  sort of expert-mode.  helpfile explains
&lt;br&gt;&amp;gt;&amp;gt; it's a method only useful for optimising certain code.
&lt;br&gt;&amp;gt;&amp;gt; make .load another very special case.  also expert-mode.  helpfile
&lt;br&gt;&amp;gt;&amp;gt; explains about osc package size limit.
&lt;br&gt;&amp;gt;&amp;gt; deprecate .play.  it should go away.  it only does harm.  there's {}.play.
&lt;br&gt;&amp;gt;&amp;gt; hide/privatise or even better remove all storing to disk.  writeDef,
&lt;br&gt;&amp;gt;&amp;gt; writeDefFile, writeOnce, store, storeOnce.  come on - who really needs them?
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Dan - i don't agree with your second statement.  i've never ever seen
&lt;br&gt;&amp;gt;&amp;gt; users depend on writing defs to disk.  i have countless times seen users
&lt;br&gt;&amp;gt;&amp;gt; confused (myself included) by old defs loaded from disk.  not to mention the
&lt;br&gt;&amp;gt;&amp;gt; file privilege installation issues for admins installing sc etc.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; _f
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; 9 feb 2010 kl. 14.17 skrev Dan Stowell:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Yes I think .add is good. We *do* need to be harsh about deprecating,
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; otherwise there's a risk we add one more method and all the others
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; carry on in use, so we would have added to the complexity rather than
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; reduced it!
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; when is it _really_ necessary to store to disk?
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; When you write a SynthDef one day and expect it to be there in future,
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; without having to re-run the code every time you launch sc.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Dan
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 2010/2/9 Scott Wilson &amp;lt;&lt;a href=&quot;http://n2.nabble.com/user/SendEmail.jtp?type=node&amp;node=4541308&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;[hidden email]&lt;/a&gt;&amp;gt;:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Actually given the arguments on semantics, I think I agree with this
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; approach.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; I'd say add 'add', change all general examples to use it, and deprecate
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; memStore.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Perhaps we should publish some guidelines for method names.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; S.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; On 9 Feb 2010, at 10:55, adc wrote:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; hi,
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; one opinion:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; I think by default SynthDefs should just work as Synths and in
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; patterns;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; so they should by default go to the server and the SynthDescLib.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; the clearest name I'v heard so far  is:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; SynthDef(\bla, { ... }).add; // = current memStore
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; If one does not want synthdefs in the lib (e.g. for efficiency
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; optimisation),
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; one could do :
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; SynthDef(\bla, { ... }).send; // send to all running servers by
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; default,
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; unless server is given.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; To remove a synthdef, the clearest so far:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; SynthDef.remove(\bla); // clear it from SynthDescLib and from all
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; running
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; servers
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; (   for symmetry, one could also provide : SynthDef.add(\bla, { ... });
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; )
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Users should not have to worry about keeping in sync what the server
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; knows
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; and
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; what synthdesclib knows. this would reduce beginners confusion a lot
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; IMO.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; when is it _really_ necessary to store to disk?
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; I sometimes find it puzzling that synthdefs that still lie around on
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; disk
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; get loaded on the server, so the server knows them, and they seem to
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; work,
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; but then, not having made them from code in the lang, patterns dont
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; work.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; not storing to disk by default (unless explicitly forced) would remove
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; that puzzle:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; when they are not there, they are not there.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; that would require touching up a lot of Synthdef code, but that code
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; would
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; get really simpler.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; just 2c,
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; best, adc
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; On Feb 9, 2010, at 11:26 AM, Julian Rohrhuber wrote:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Thank you for your comments. Much worse than flags are method and
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; argument names that center on implementation instead of behavior.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;quot;memStore&amp;quot;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; is a border case in a sense. What I find is that we desperately need
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; is a
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; more abstract method whose name does not reflect how a SynthDef is
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; made
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; accessible as to make it work, but clearly says that it does so. As it
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; is
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; the most common thing, it should be clear and short. While memStore
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; sticks
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; once one has learned it, it is not a nice thing to have in the code -
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; its
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; name has nothing to do with why we use it really.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; One possibility would be to make store like &amp;quot;memStore&amp;quot; by default, and
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; add diskStore. Flags in the class variables may be useful, but of
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; course are
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; ugly if you need a functionality only once. But well, let's hear some
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; more
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; opinions.. :)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; On 09.02.2010, at 07:51, Pelle Nilsson wrote:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Hi,
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Being only a new user still learning SC lurking on dev, I still can't
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; resist commenting on this issue from a new user point of view:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Julian Rohrhuber &amp;lt;&lt;a href=&quot;http://n2.nabble.com/user/SendEmail.jtp?type=node&amp;node=4541308&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;[hidden email]&lt;/a&gt;&amp;gt; writes:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Some methods of SynthDef are a bit hard to read. I've tried to clear
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; thing up a bit and added a flag to send which stores the synthDesc
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; (see patch).
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; I'm not sure what the general opinion about this is. My experience
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; is
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; that the combinatorics of methods are hard to explain and that
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; memStore is a too complicated name for a simple behaviour. To
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; understand the name, one has to understand the history of
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; supercollider. I would not be against using the method &amp;quot;add&amp;quot;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; instead,
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; but as we are in a mess already, I tend to just make things work.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; It would be great to not use boolean flags here (or elsewhere). As a
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; new
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; user, or probably an old user reading old code later, it is
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; impossible
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; to read (or write) store(true), store(false), and store() and
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; remember
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; what they mean (and which one the last is equivalent to). I always
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; use
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; memStore and part of the reason is that I can remember what it does
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; for
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; sure. I would love if the other version was called diskStore or
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; something similar.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Knowing from other programming languages, trying to hide
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; combinatorics
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; of methods by putting several methods in the same one and using flags
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; to
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; select which of the hidden methods you really want to call was never
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; a
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; solution to the problem.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; As others already said, the store methods are confusing enough to new
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; users already. It is great to hear that something is done about it,
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; but
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; I hope you dev guys end up agreeing on some other solution. :)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; IMHO and all that.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; --
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; /Pelle
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;  #|
&lt;br&gt;&amp;gt;&amp;gt;    fredrikolofsson.com     klippav.org     musicalfieldsforever.com
&lt;br&gt;&amp;gt;&amp;gt;  |#
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt;&amp;gt; sc-dev mailing list
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; info (subscription, etc.):
&lt;br&gt;&amp;gt;&amp;gt; &lt;a href=&quot;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt; archive: &lt;a href=&quot;http://www.listarc.bham.ac.uk/marchives/sc-dev/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/marchives/sc-dev/&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt; search: &lt;a href=&quot;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt; sc-dev mailing list
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; info (subscription, etc.):
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&lt;/a&gt;&lt;br&gt;&amp;gt; archive: &lt;a href=&quot;http://www.listarc.bham.ac.uk/marchives/sc-dev/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/marchives/sc-dev/&lt;/a&gt;&lt;br&gt;&amp;gt; search: &lt;a href=&quot;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;/div&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;&lt;a href=&quot;http://www.mcld.co.uk&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.mcld.co.uk&lt;/a&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;sc-dev mailing list
&lt;br&gt;&lt;br&gt;info (subscription, etc.): &lt;a href=&quot;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&lt;/a&gt;&lt;br&gt;archive: &lt;a href=&quot;http://www.listarc.bham.ac.uk/marchives/sc-dev/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/marchives/sc-dev/&lt;/a&gt;&lt;br&gt;search: &lt;a href=&quot;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/SynthDef-method-cleanup-tp4516616p4541308.html" />
	<thr:in-reply-to ref="tag:n2.nabble.com,2006:post-4541228"/>
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-4541302</id>
	<title>Re: SynthDef method cleanup</title>
	<published>2010-02-09T06:20:36Z</published>
	<updated>2010-02-09T06:20:36Z</updated>
	<author>
		<name>James Harkins</name>
	</author>
	<content type="html">&lt;div&gt;&lt;div&gt;On Feb 9, 2010, at 9:09 AM, ronald kuivila wrote:&lt;/div&gt;&lt;br class=&quot;Apple-interchange-newline&quot;&gt;&lt;blockquote type=&quot;cite&quot;&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;Hi all,&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; &quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;My guess is that storing synthdef files comes from imagining the server as a shared server (like a latter day Samson box or something).&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;Come to think of it, there is a lot of structure there that is probably rarely, if ever, used. For example, does anyone use a SynthDescLib other&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;than SynthDescLib.global ?&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Marije and I do.&lt;/div&gt;&lt;div&gt;hjh&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt; &lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: separate; color: rgb(0, 0, 0); font-family: 'Lucida Grande'; font-size: 11px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0; &quot;&gt;&lt;div&gt;&lt;br class=&quot;Apple-interchange-newline&quot;&gt;: H. James Harkins&lt;/div&gt;&lt;div&gt;: &lt;a href=&quot;http://n2.nabble.com/user/SendEmail.jtp?type=node&amp;node=4541302&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;[hidden email]&lt;/a&gt;&lt;/div&gt;&lt;div&gt;: &lt;a href=&quot;http://www.dewdrop-world.net&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.dewdrop-world.net&lt;/a&gt;&lt;/div&gt;&lt;div&gt;.::!:.:.......:.::........:..!.::.::...:..:...:.:.:.:..:&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&quot;Come said the Muse,&lt;/div&gt;&lt;div&gt;Sing me a song no poet has yet chanted,&lt;/div&gt;&lt;div&gt;Sing me the universal.&quot;&amp;nbsp; -- Whitman&lt;/div&gt;&lt;/span&gt; &lt;/div&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/SynthDef-method-cleanup-tp4516616p4541302.html" />
	<thr:in-reply-to ref="tag:n2.nabble.com,2006:post-4541228"/>
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-4541228</id>
	<title>Re: SynthDef method cleanup</title>
	<published>2010-02-09T06:09:44Z</published>
	<updated>2010-02-09T06:09:44Z</updated>
	<author>
		<name>ronald kuivila</name>
	</author>
	<content type="html">Hi all,
&lt;br&gt;&lt;br&gt;&amp;nbsp; My guess is that storing synthdef files comes from imagining the &amp;nbsp;
&lt;br&gt;server as a shared server (like a latter day Samson box or something).
&lt;br&gt;Come to think of it, there is a lot of structure there that is &amp;nbsp;
&lt;br&gt;probably rarely, if ever, used. For example, does anyone use a &amp;nbsp;
&lt;br&gt;SynthDescLib other
&lt;br&gt;than SynthDescLib.global ?
&lt;br&gt;&lt;br&gt;RJK
&lt;br&gt;&lt;br&gt;On Feb 9, 2010, at 8:35 AM, Fredrik Olofsson wrote:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; hi
&lt;br&gt;&amp;gt; my €1. &amp;nbsp;there's so much confusion around all this. &amp;nbsp;please let's &amp;nbsp;
&lt;br&gt;&amp;gt; make even more drastic changes.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; make .send a very special case. &amp;nbsp;sort of expert-mode. &amp;nbsp;helpfile &amp;nbsp;
&lt;br&gt;&amp;gt; explains it's a method only useful for optimising certain code.
&lt;br&gt;&amp;gt; make .load another very special case. &amp;nbsp;also expert-mode. &amp;nbsp;helpfile &amp;nbsp;
&lt;br&gt;&amp;gt; explains about osc package size limit.
&lt;br&gt;&amp;gt; deprecate .play. &amp;nbsp;it should go away. &amp;nbsp;it only does harm. &amp;nbsp;there's &amp;nbsp;
&lt;br&gt;&amp;gt; {}.play.
&lt;br&gt;&amp;gt; hide/privatise or even better remove all storing to disk. &amp;nbsp;writeDef, &amp;nbsp;
&lt;br&gt;&amp;gt; writeDefFile, writeOnce, store, storeOnce. &amp;nbsp;come on - who really &amp;nbsp;
&lt;br&gt;&amp;gt; needs them?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Dan - i don't agree with your second statement. &amp;nbsp;i've never ever &amp;nbsp;
&lt;br&gt;&amp;gt; seen users depend on writing defs to disk. &amp;nbsp;i have countless times &amp;nbsp;
&lt;br&gt;&amp;gt; seen users confused (myself included) by old defs loaded from disk. &amp;nbsp; 
&lt;br&gt;&amp;gt; not to mention the file privilege installation issues for admins &amp;nbsp;
&lt;br&gt;&amp;gt; installing sc etc.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; _f
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; 9 feb 2010 kl. 14.17 skrev Dan Stowell:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Yes I think .add is good. We *do* need to be harsh about deprecating,
&lt;br&gt;&amp;gt;&amp;gt; otherwise there's a risk we add one more method and all the others
&lt;br&gt;&amp;gt;&amp;gt; carry on in use, so we would have added to the complexity rather than
&lt;br&gt;&amp;gt;&amp;gt; reduced it!
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; when is it _really_ necessary to store to disk?
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; When you write a SynthDef one day and expect it to be there in &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt; future,
&lt;br&gt;&amp;gt;&amp;gt; without having to re-run the code every time you launch sc.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Dan
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; 2010/2/9 Scott Wilson &amp;lt;&lt;a href=&quot;http://n2.nabble.com/user/SendEmail.jtp?type=node&amp;node=4541228&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;[hidden email]&lt;/a&gt;&amp;gt;:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Actually given the arguments on semantics, I think I agree with this
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; approach.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; I'd say add 'add', change all general examples to use it, and &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; deprecate
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; memStore.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Perhaps we should publish some guidelines for method names.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; S.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; On 9 Feb 2010, at 10:55, adc wrote:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; hi,
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; one opinion:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; I think by default SynthDefs should just work as Synths and in &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; patterns;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; so they should by default go to the server and the SynthDescLib.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; the clearest name I'v heard so far &amp;nbsp;is:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; SynthDef(\bla, { ... }).add; // = current memStore
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; If one does not want synthdefs in the lib (e.g. for efficiency
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; optimisation),
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; one could do :
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; SynthDef(\bla, { ... }).send; // send to all running servers by &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; default,
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; unless server is given.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; To remove a synthdef, the clearest so far:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; SynthDef.remove(\bla); // clear it from SynthDescLib and from all &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; running
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; servers
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; ( &amp;nbsp; for symmetry, one could also provide : SynthDef.add(\bla, &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; { ... });
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; )
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Users should not have to worry about keeping in sync what the &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; server knows
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; and
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; what synthdesclib knows. this would reduce beginners confusion a &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; lot IMO.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; when is it _really_ necessary to store to disk?
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; I sometimes find it puzzling that synthdefs that still lie around &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; on disk
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; get loaded on the server, so the server knows them, and they seem &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; to work,
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; but then, not having made them from code in the lang, patterns &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; dont work.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; not storing to disk by default (unless explicitly forced) would &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; remove
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; that puzzle:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; when they are not there, they are not there.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; that would require touching up a lot of Synthdef code, but that &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; code would
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; get really simpler.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; just 2c,
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; best, adc
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; On Feb 9, 2010, at 11:26 AM, Julian Rohrhuber wrote:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Thank you for your comments. Much worse than flags are method and
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; argument names that center on implementation instead of &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; behavior. &amp;quot;memStore&amp;quot;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; is a border case in a sense. What I find is that we desperately &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; need is a
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; more abstract method whose name does not reflect how a SynthDef &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; is made
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; accessible as to make it work, but clearly says that it does so. &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; As it is
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; the most common thing, it should be clear and short. While &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; memStore sticks
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; once one has learned it, it is not a nice thing to have in the &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; code - its
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; name has nothing to do with why we use it really.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; One possibility would be to make store like &amp;quot;memStore&amp;quot; by &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; default, and
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; add diskStore. Flags in the class variables may be useful, but &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; of course are
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; ugly if you need a functionality only once. But well, let's hear &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; some more
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; opinions.. :)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; On 09.02.2010, at 07:51, Pelle Nilsson wrote:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Hi,
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Being only a new user still learning SC lurking on dev, I still &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; can't
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; resist commenting on this issue from a new user point of view:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Julian Rohrhuber &amp;lt;&lt;a href=&quot;http://n2.nabble.com/user/SendEmail.jtp?type=node&amp;node=4541228&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;[hidden email]&lt;/a&gt;&amp;gt; writes:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Some methods of SynthDef are a bit hard to read. I've tried to &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; clear
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; thing up a bit and added a flag to send which stores the &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; synthDesc
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; (see patch).
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; I'm not sure what the general opinion about this is. My &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; experience is
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; that the combinatorics of methods are hard to explain and that
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; memStore is a too complicated name for a simple behaviour. To
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; understand the name, one has to understand the history of
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; supercollider. I would not be against using the method &amp;quot;add&amp;quot; &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; instead,
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; but as we are in a mess already, I tend to just make things &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; work.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; It would be great to not use boolean flags here (or elsewhere). &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; As a new
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; user, or probably an old user reading old code later, it is &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; impossible
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; to read (or write) store(true), store(false), and store() and &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; remember
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; what they mean (and which one the last is equivalent to). I &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; always use
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; memStore and part of the reason is that I can remember what it &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; does for
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; sure. I would love if the other version was called diskStore or
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; something similar.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Knowing from other programming languages, trying to hide &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; combinatorics
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; of methods by putting several methods in the same one and using &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; flags to
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; select which of the hidden methods you really want to call was &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; never a
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; solution to the problem.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; As others already said, the store methods are confusing enough &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; to new
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; users already. It is great to hear that something is done about &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; it, but
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; I hope you dev guys end up agreeing on some other solution. :)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; IMHO and all that.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; --
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; /Pelle
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp;#|
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; fredrikolofsson.com &amp;nbsp; &amp;nbsp; klippav.org &amp;nbsp; &amp;nbsp; musicalfieldsforever.com
&lt;br&gt;&amp;gt; &amp;nbsp;|#
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt; sc-dev mailing list
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; info (subscription, etc.): &lt;a href=&quot;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&lt;/a&gt;&lt;br&gt;&amp;gt; archive: &lt;a href=&quot;http://www.listarc.bham.ac.uk/marchives/sc-dev/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/marchives/sc-dev/&lt;/a&gt;&lt;br&gt;&amp;gt; search: &lt;a href=&quot;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;/div&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;sc-dev mailing list
&lt;br&gt;&lt;br&gt;info (subscription, etc.): &lt;a href=&quot;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&lt;/a&gt;&lt;br&gt;archive: &lt;a href=&quot;http://www.listarc.bham.ac.uk/marchives/sc-dev/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/marchives/sc-dev/&lt;/a&gt;&lt;br&gt;search: &lt;a href=&quot;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/SynthDef-method-cleanup-tp4516616p4541228.html" />
	<thr:in-reply-to ref="tag:n2.nabble.com,2006:post-4541056"/>
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-4541221</id>
	<title>Re: SynthDef method cleanup</title>
	<published>2010-02-09T06:08:27Z</published>
	<updated>2010-02-09T06:08:27Z</updated>
	<author>
		<name>adc-2</name>
	</author>
	<content type="html">&lt;div&gt;hi scott, dan, fredrik,&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;glad you like the idea.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;also,&amp;nbsp;I would propose keeping the synthdef's initial function as an instvar,&amp;nbsp;&lt;div&gt;or maybe in SynthDescLib by name. then one could do:&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;http://SynthDef.at&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;SynthDef.at&lt;/a&gt;(\bla).postcs&lt;br&gt;&lt;div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;and look at the source code of the&amp;nbsp;currently valid version of the&amp;nbsp;synthdef&amp;nbsp;&lt;/div&gt;&lt;div&gt;(i.e. that one last sent to the server and stored in SynthDescLib).&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;and one could&amp;nbsp;rebuild and re-add any synthdef easily without&amp;nbsp;&lt;/div&gt;&lt;div&gt;looking for where the source code might have been&amp;nbsp;&lt;/div&gt;&lt;div&gt;(e.g. if the have some random decisions).&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;best, adc&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;On Feb 9, 2010, at 2:35 PM, Fredrik Olofsson wrote:&lt;/div&gt;&lt;br class=&quot;Apple-interchange-newline&quot;&gt;&lt;blockquote type=&quot;cite&quot;&gt;&lt;div&gt;hi&lt;br&gt;my €1. &amp;nbsp;there's so much confusion around all this. &amp;nbsp;please let's make even more drastic changes.&lt;br&gt;&lt;br&gt;make .send a very special case. &amp;nbsp;sort of expert-mode. &amp;nbsp;helpfile explains it's a method only useful for optimising certain code.&lt;br&gt;make .load another very special case. &amp;nbsp;also expert-mode. &amp;nbsp;helpfile explains about osc package size limit.&lt;br&gt;deprecate .play. &amp;nbsp;it should go away. &amp;nbsp;it only does harm. &amp;nbsp;there's {}.play.&lt;br&gt;hide/privatise or even better remove all storing to disk. &amp;nbsp;writeDef, writeDefFile, writeOnce, store, storeOnce. &amp;nbsp;come on - who really needs them?&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot;&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#144FAE&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;I'd be for that. one less thing to explain that can go wrong.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;blockquote type=&quot;cite&quot;&gt;&lt;div&gt;&lt;br&gt;Dan - i don't agree with your second statement. &amp;nbsp;i've never ever seen users depend on writing defs to disk. &amp;nbsp;i have countless times seen users confused (myself included) by old defs loaded from disk. &amp;nbsp;not to mention the file privilege installation issues for admins installing sc etc.&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot;&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#144FAE&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;agree with fredrik here:&amp;nbsp;&lt;/div&gt;&lt;div&gt;I think relying on some old file lying somewhere that has a synthdef you wrote 6 months ago to still be there,&amp;nbsp;&lt;/div&gt;&lt;div&gt;and not having been accidentally overwrotten by a new synthdef with the same name is asking for trouble,&amp;nbsp;&lt;/div&gt;&lt;div&gt;and should be discouraged.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;the rule should be: if you rely on something to be there, please put it in your startup files.&amp;nbsp;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;and for completeness, when you boot a server, send it all the synthdefs currently in the Lib,&amp;nbsp;&lt;/div&gt;&lt;div&gt;so it can &quot;just work&quot;. that is even safer to keep things in sync than reading from disk.&amp;nbsp;&lt;br&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;thanks for the discussion! it will be great when all this synthdef mystery is gone ;-)&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;best, adc&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/SynthDef-method-cleanup-tp4516616p4541221.html" />
	<thr:in-reply-to ref="tag:n2.nabble.com,2006:post-4541056"/>
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-4541056</id>
	<title>Re: SynthDef method cleanup</title>
	<published>2010-02-09T05:35:22Z</published>
	<updated>2010-02-09T05:35:22Z</updated>
	<author>
		<name>Fredrik Olofsson</name>
	</author>
	<content type="html">hi
&lt;br&gt;my €1. &amp;nbsp;there's so much confusion around all this. &amp;nbsp;please let's make &amp;nbsp;
&lt;br&gt;even more drastic changes.
&lt;br&gt;&lt;br&gt;make .send a very special case. &amp;nbsp;sort of expert-mode. &amp;nbsp;helpfile &amp;nbsp;
&lt;br&gt;explains it's a method only useful for optimising certain code.
&lt;br&gt;make .load another very special case. &amp;nbsp;also expert-mode. &amp;nbsp;helpfile &amp;nbsp;
&lt;br&gt;explains about osc package size limit.
&lt;br&gt;deprecate .play. &amp;nbsp;it should go away. &amp;nbsp;it only does harm. &amp;nbsp;there's &amp;nbsp;
&lt;br&gt;{}.play.
&lt;br&gt;hide/privatise or even better remove all storing to disk. &amp;nbsp;writeDef, &amp;nbsp;
&lt;br&gt;writeDefFile, writeOnce, store, storeOnce. &amp;nbsp;come on - who really needs &amp;nbsp;
&lt;br&gt;them?
&lt;br&gt;&lt;br&gt;&lt;br&gt;Dan - i don't agree with your second statement. &amp;nbsp;i've never ever seen &amp;nbsp;
&lt;br&gt;users depend on writing defs to disk. &amp;nbsp;i have countless times seen &amp;nbsp;
&lt;br&gt;users confused (myself included) by old defs loaded from disk. &amp;nbsp;not to &amp;nbsp;
&lt;br&gt;mention the file privilege installation issues for admins installing &amp;nbsp;
&lt;br&gt;sc etc.
&lt;br&gt;&lt;br&gt;_f
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;9 feb 2010 kl. 14.17 skrev Dan Stowell:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Yes I think .add is good. We *do* need to be harsh about deprecating,
&lt;br&gt;&amp;gt; otherwise there's a risk we add one more method and all the others
&lt;br&gt;&amp;gt; carry on in use, so we would have added to the complexity rather than
&lt;br&gt;&amp;gt; reduced it!
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; when is it _really_ necessary to store to disk?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; When you write a SynthDef one day and expect it to be there in future,
&lt;br&gt;&amp;gt; without having to re-run the code every time you launch sc.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Dan
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; 2010/2/9 Scott Wilson &amp;lt;&lt;a href=&quot;http://n2.nabble.com/user/SendEmail.jtp?type=node&amp;node=4541056&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;[hidden email]&lt;/a&gt;&amp;gt;:
&lt;br&gt;&amp;gt;&amp;gt; Actually given the arguments on semantics, I think I agree with this
&lt;br&gt;&amp;gt;&amp;gt; approach.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; I'd say add 'add', change all general examples to use it, and &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt; deprecate
&lt;br&gt;&amp;gt;&amp;gt; memStore.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Perhaps we should publish some guidelines for method names.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; S.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; On 9 Feb 2010, at 10:55, adc wrote:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; hi,
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; one opinion:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; I think by default SynthDefs should just work as Synths and in &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; patterns;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; so they should by default go to the server and the SynthDescLib.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; the clearest name I'v heard so far &amp;nbsp;is:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; SynthDef(\bla, { ... }).add; // = current memStore
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; If one does not want synthdefs in the lib (e.g. for efficiency
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; optimisation),
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; one could do :
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; SynthDef(\bla, { ... }).send; // send to all running servers by &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; default,
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; unless server is given.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; To remove a synthdef, the clearest so far:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; SynthDef.remove(\bla); // clear it from SynthDescLib and from all &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; running
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; servers
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; ( &amp;nbsp; for symmetry, one could also provide : SynthDef.add(\bla, &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; { ... });
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp;)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Users should not have to worry about keeping in sync what the &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; server knows
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; and
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; what synthdesclib knows. this would reduce beginners confusion a &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; lot IMO.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; when is it _really_ necessary to store to disk?
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; I sometimes find it puzzling that synthdefs that still lie around &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; on disk
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; get loaded on the server, so the server knows them, and they seem &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; to work,
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; but then, not having made them from code in the lang, patterns &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; dont work.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; not storing to disk by default (unless explicitly forced) would &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; remove
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; that puzzle:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; when they are not there, they are not there.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; that would require touching up a lot of Synthdef code, but that &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; code would
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; get really simpler.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; just 2c,
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; best, adc
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; On Feb 9, 2010, at 11:26 AM, Julian Rohrhuber wrote:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Thank you for your comments. Much worse than flags are method and
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; argument names that center on implementation instead of behavior. &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;quot;memStore&amp;quot;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; is a border case in a sense. What I find is that we desperately &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; need is a
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; more abstract method whose name does not reflect how a SynthDef &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; is made
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; accessible as to make it work, but clearly says that it does so. &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; As it is
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; the most common thing, it should be clear and short. While &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; memStore sticks
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; once one has learned it, it is not a nice thing to have in the &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; code - its
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; name has nothing to do with why we use it really.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; One possibility would be to make store like &amp;quot;memStore&amp;quot; by &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; default, and
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; add diskStore. Flags in the class variables may be useful, but of &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; course are
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; ugly if you need a functionality only once. But well, let's hear &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; some more
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; opinions.. :)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; On 09.02.2010, at 07:51, Pelle Nilsson wrote:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Hi,
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Being only a new user still learning SC lurking on dev, I still &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; can't
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; resist commenting on this issue from a new user point of view:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Julian Rohrhuber &amp;lt;&lt;a href=&quot;http://n2.nabble.com/user/SendEmail.jtp?type=node&amp;node=4541056&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;[hidden email]&lt;/a&gt;&amp;gt; writes:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Some methods of SynthDef are a bit hard to read. I've tried to &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; clear
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; thing up a bit and added a flag to send which stores the &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; synthDesc
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; (see patch).
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; I'm not sure what the general opinion about this is. My &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; experience is
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; that the combinatorics of methods are hard to explain and that
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; memStore is a too complicated name for a simple behaviour. To
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; understand the name, one has to understand the history of
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; supercollider. I would not be against using the method &amp;quot;add&amp;quot; &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; instead,
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; but as we are in a mess already, I tend to just make things work.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; It would be great to not use boolean flags here (or elsewhere). &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; As a new
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; user, or probably an old user reading old code later, it is &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; impossible
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; to read (or write) store(true), store(false), and store() and &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; remember
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; what they mean (and which one the last is equivalent to). I &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; always use
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; memStore and part of the reason is that I can remember what it &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; does for
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; sure. I would love if the other version was called diskStore or
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; something similar.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Knowing from other programming languages, trying to hide &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; combinatorics
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; of methods by putting several methods in the same one and using &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; flags to
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; select which of the hidden methods you really want to call was &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; never a
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; solution to the problem.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; As others already said, the store methods are confusing enough &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; to new
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; users already. It is great to hear that something is done about &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; it, but
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; I hope you dev guys end up agreeing on some other solution. :)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; IMHO and all that.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; --
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; /Pelle
&lt;/div&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;#|
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; fredrikolofsson.com &amp;nbsp; &amp;nbsp; klippav.org &amp;nbsp; &amp;nbsp; musicalfieldsforever.com
&lt;br&gt;&amp;nbsp; &amp;nbsp;|#
&lt;br&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;sc-dev mailing list
&lt;br&gt;&lt;br&gt;info (subscription, etc.): &lt;a href=&quot;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&lt;/a&gt;&lt;br&gt;archive: &lt;a href=&quot;http://www.listarc.bham.ac.uk/marchives/sc-dev/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/marchives/sc-dev/&lt;/a&gt;&lt;br&gt;search: &lt;a href=&quot;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/SynthDef-method-cleanup-tp4516616p4541056.html" />
	<thr:in-reply-to ref="tag:n2.nabble.com,2006:post-4540981"/>
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-4540981</id>
	<title>Re: SynthDef method cleanup</title>
	<published>2010-02-09T05:17:02Z</published>
	<updated>2010-02-09T05:17:02Z</updated>
	<author>
		<name>Dan Stowell-3</name>
	</author>
	<content type="html">Yes I think .add is good. We *do* need to be harsh about deprecating,
&lt;br&gt;otherwise there's a risk we add one more method and all the others
&lt;br&gt;carry on in use, so we would have added to the complexity rather than
&lt;br&gt;reduced it!
&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;gt;&amp;gt; when is it _really_ necessary to store to disk?
&lt;br&gt;&lt;br&gt;When you write a SynthDef one day and expect it to be there in future,
&lt;br&gt;without having to re-run the code every time you launch sc.
&lt;br&gt;&lt;br&gt;Dan
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;2010/2/9 Scott Wilson &amp;lt;&lt;a href=&quot;http://n2.nabble.com/user/SendEmail.jtp?type=node&amp;node=4540981&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;[hidden email]&lt;/a&gt;&amp;gt;:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Actually given the arguments on semantics, I think I agree with this
&lt;br&gt;&amp;gt; approach.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I'd say add 'add', change all general examples to use it, and deprecate
&lt;br&gt;&amp;gt; memStore.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Perhaps we should publish some guidelines for method names.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; S.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; On 9 Feb 2010, at 10:55, adc wrote:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; hi,
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; one opinion:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; I think by default SynthDefs should just work as Synths and in patterns;
&lt;br&gt;&amp;gt;&amp;gt; so they should by default go to the server and the SynthDescLib.
&lt;br&gt;&amp;gt;&amp;gt; the clearest name I'v heard so far  is:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; SynthDef(\bla, { ... }).add; // = current memStore
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; If one does not want synthdefs in the lib (e.g. for efficiency
&lt;br&gt;&amp;gt;&amp;gt; optimisation),
&lt;br&gt;&amp;gt;&amp;gt; one could do :
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; SynthDef(\bla, { ... }).send; // send to all running servers by default,
&lt;br&gt;&amp;gt;&amp;gt; unless server is given.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; To remove a synthdef, the clearest so far:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; SynthDef.remove(\bla); // clear it from SynthDescLib and from all running
&lt;br&gt;&amp;gt;&amp;gt; servers
&lt;br&gt;&amp;gt;&amp;gt; (   for symmetry, one could also provide : SynthDef.add(\bla, { ... });
&lt;br&gt;&amp;gt;&amp;gt;  )
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Users should not have to worry about keeping in sync what the server knows
&lt;br&gt;&amp;gt;&amp;gt; and
&lt;br&gt;&amp;gt;&amp;gt; what synthdesclib knows. this would reduce beginners confusion a lot IMO.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; when is it _really_ necessary to store to disk?
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; I sometimes find it puzzling that synthdefs that still lie around on disk
&lt;br&gt;&amp;gt;&amp;gt; get loaded on the server, so the server knows them, and they seem to work,
&lt;br&gt;&amp;gt;&amp;gt; but then, not having made them from code in the lang, patterns dont work.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; not storing to disk by default (unless explicitly forced) would remove
&lt;br&gt;&amp;gt;&amp;gt; that puzzle:
&lt;br&gt;&amp;gt;&amp;gt; when they are not there, they are not there.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; that would require touching up a lot of Synthdef code, but that code would
&lt;br&gt;&amp;gt;&amp;gt; get really simpler.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; just 2c,
&lt;br&gt;&amp;gt;&amp;gt; best, adc
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; On Feb 9, 2010, at 11:26 AM, Julian Rohrhuber wrote:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Thank you for your comments. Much worse than flags are method and
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; argument names that center on implementation instead of behavior. &amp;quot;memStore&amp;quot;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; is a border case in a sense. What I find is that we desperately need is a
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; more abstract method whose name does not reflect how a SynthDef is made
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; accessible as to make it work, but clearly says that it does so. As it is
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; the most common thing, it should be clear and short. While memStore sticks
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; once one has learned it, it is not a nice thing to have in the code - its
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; name has nothing to do with why we use it really.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; One possibility would be to make store like &amp;quot;memStore&amp;quot; by default, and
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; add diskStore. Flags in the class variables may be useful, but of course are
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; ugly if you need a functionality only once. But well, let's hear some more
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; opinions.. :)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; On 09.02.2010, at 07:51, Pelle Nilsson wrote:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Hi,
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Being only a new user still learning SC lurking on dev, I still can't
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; resist commenting on this issue from a new user point of view:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Julian Rohrhuber &amp;lt;&lt;a href=&quot;http://n2.nabble.com/user/SendEmail.jtp?type=node&amp;node=4540981&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;[hidden email]&lt;/a&gt;&amp;gt; writes:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Some methods of SynthDef are a bit hard to read. I've tried to clear
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; thing up a bit and added a flag to send which stores the synthDesc
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; (see patch).
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; I'm not sure what the general opinion about this is. My experience is
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; that the combinatorics of methods are hard to explain and that
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; memStore is a too complicated name for a simple behaviour. To
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; understand the name, one has to understand the history of
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; supercollider. I would not be against using the method &amp;quot;add&amp;quot; instead,
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; but as we are in a mess already, I tend to just make things work.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; It would be great to not use boolean flags here (or elsewhere). As a new
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; user, or probably an old user reading old code later, it is impossible
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; to read (or write) store(true), store(false), and store() and remember
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; what they mean (and which one the last is equivalent to). I always use
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; memStore and part of the reason is that I can remember what it does for
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; sure. I would love if the other version was called diskStore or
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; something similar.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Knowing from other programming languages, trying to hide combinatorics
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; of methods by putting several methods in the same one and using flags to
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; select which of the hidden methods you really want to call was never a
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; solution to the problem.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; As others already said, the store methods are confusing enough to new
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; users already. It is great to hear that something is done about it, but
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; I hope you dev guys end up agreeing on some other solution. :)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; IMHO and all that.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; --
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; /Pelle
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; sc-dev mailing list
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; info (subscription, etc.):
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&quot;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; archive: &lt;a href=&quot;http://www.listarc.bham.ac.uk/marchives/sc-dev/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/marchives/sc-dev/&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; search: &lt;a href=&quot;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; sc-dev mailing list
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; info (subscription, etc.):
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&quot;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; archive: &lt;a href=&quot;http://www.listarc.bham.ac.uk/marchives/sc-dev/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/marchives/sc-dev/&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; search: &lt;a href=&quot;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt;&amp;gt; sc-dev mailing list
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; info (subscription, etc.):
&lt;br&gt;&amp;gt;&amp;gt; &lt;a href=&quot;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt; archive: &lt;a href=&quot;http://www.listarc.bham.ac.uk/marchives/sc-dev/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/marchives/sc-dev/&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt; search: &lt;a href=&quot;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt; sc-dev mailing list
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; info (subscription, etc.):
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&lt;/a&gt;&lt;br&gt;&amp;gt; archive: &lt;a href=&quot;http://www.listarc.bham.ac.uk/marchives/sc-dev/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/marchives/sc-dev/&lt;/a&gt;&lt;br&gt;&amp;gt; search: &lt;a href=&quot;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;/div&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;&lt;a href=&quot;http://www.mcld.co.uk&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.mcld.co.uk&lt;/a&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;sc-dev mailing list
&lt;br&gt;&lt;br&gt;info (subscription, etc.): &lt;a href=&quot;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&lt;/a&gt;&lt;br&gt;archive: &lt;a href=&quot;http://www.listarc.bham.ac.uk/marchives/sc-dev/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/marchives/sc-dev/&lt;/a&gt;&lt;br&gt;search: &lt;a href=&quot;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/SynthDef-method-cleanup-tp4516616p4540981.html" />
	<thr:in-reply-to ref="tag:n2.nabble.com,2006:post-4540755"/>
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-4540918</id>
	<title>Re: show default server?</title>
	<published>2010-02-09T05:04:28Z</published>
	<updated>2010-02-09T05:04:28Z</updated>
	<author>
		<name>müllmusik</name>
	</author>
	<content type="html">I think it's like this to support changing from the gui window. If it &amp;nbsp;
&lt;br&gt;defaulted to true I think it wouldn't matter.
&lt;br&gt;&lt;br&gt;Do we even really need a flag? s == Server.default is so pervasive in &amp;nbsp;
&lt;br&gt;practice that I'd be surprised if anyone would be bothered by this &amp;nbsp;
&lt;br&gt;change. On the contrary not having it seems to cause problems.
&lt;br&gt;&lt;br&gt;S.
&lt;br&gt;&lt;br&gt;On 9 Feb 2010, at 12:51, Julian Rohrhuber wrote:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; setters shouldn't have two args really. So I think it could be a &amp;nbsp;
&lt;br&gt;&amp;gt; flag in the class.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; On 09.02.2010, at 13:40, Scott Wilson wrote:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Is there any reason why sync_s should not default to true?
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; I find this sort of construction:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Server.default = s = Server.internal;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; very clunky and prone to order mistakes for beginners.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; S.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; On 16 May 2009, at 17:20, Alberto de Campo wrote:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; hi all,
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; I find the question 'which server is currently default' occurs &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; really often,
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; and is a regular source of confusion for students. It occurred to &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; me that the
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; server windows should just show that.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; below the diff for an attempt - ok like that?
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; any better ideas? opinions?
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; best, adc
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Index: Control/Server.sc
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; ===================================================================
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; --- Control/Server.sc	(revision 9164)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; +++ Control/Server.sc	(working copy)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; @@ -185,7 +185,7 @@
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Server : Model {
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; -	classvar &amp;lt;&amp;gt;local, &amp;lt;&amp;gt;internal, &amp;lt;&amp;gt;default, &amp;lt;&amp;gt;named, &amp;lt;&amp;gt;set, &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &amp;lt;&amp;gt;program;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; +	classvar &amp;lt;&amp;gt;local, &amp;lt;&amp;gt;internal, &amp;lt;default, &amp;lt;&amp;gt;named, &amp;lt;&amp;gt;set, &amp;lt;&amp;gt;program;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 	var &amp;lt;name, &amp;lt;&amp;gt;addr, &amp;lt;clientID=0;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 	var &amp;lt;isLocal, &amp;lt;inProcess, &amp;lt;&amp;gt;sendQuit, &amp;lt;&amp;gt;remoteControlled;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; @@ -212,6 +212,12 @@
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 	var &amp;lt;pid;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; +	*default_ { |server, sync_s = false|
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; +		default = server; // sync with s?
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; +		if (sync_s, { thisProcess.interpreter.s = server });
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; +		this.all.do(_.changed(\default));
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; +	}
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Index: GUI/PlusGUI/Control/ServerPlusGUI.sc
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; ===================================================================
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; --- GUI/PlusGUI/Control/ServerPlusGUI.sc	(revision 9164)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; +++ GUI/PlusGUI/Control/ServerPlusGUI.sc	(working copy)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; @@ -15,7 +15,7 @@
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 	}
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 	makeGui { arg w;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; -		var active, booter, killer, makeDefault, running, booting, &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; stopped, bundling;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; +		var active, booter, killer, makeDefault, running, booting, &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; stopped, bundling, showDefault;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 		var recorder, scoper;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 		var countsViews, ctlr;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 		var dumping = false, label, gui, font, volumeNum;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; @@ -68,12 +68,10 @@
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 		makeDefault = gui.button.new(w, Rect(0,0, 54, 18));
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 		makeDefault.font = font;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 		makeDefault.canFocus = false;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; -		makeDefault.states = [[&amp;quot;-&amp;gt; default&amp;quot;, Color.black, Color.clear]];
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; -		makeDefault.action = {
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; -			thisProcess.interpreter.s = this;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; -			Server.default = this;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; -		};
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; -
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; +		makeDefault.states = [[&amp;quot;-&amp;gt; default&amp;quot;, Color.black, Color.clear], &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; [&amp;quot;-&amp;gt; default&amp;quot;, Color.black, Color.green.alpha_(0.2)]];
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; +		makeDefault.value_((this == Server.default).binaryValue);
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; +		makeDefault.action = { Server.default_(this, true) };
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 		//w.view.decorator.nextLine;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 		recorder = gui.button.new(w, Rect(0,0, 66, 18));
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; @@ -169,6 +167,7 @@
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 				window = nil;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 				ctlr.remove;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 			};
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 		},{
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 			running = {
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 				active.stringColor_(Color.new255(74, 120, 74));
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; @@ -202,6 +201,12 @@
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 				ctlr.remove;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 			};
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 		});
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; +		showDefault = {
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; +			&amp;quot;// Server.default: % - s: % // \n\n&amp;quot;.postf(Server.default, &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; thisProcess.interpreter.s);
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; +			makeDefault.value = (Server.default == this).binaryValue;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; +		};
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 		if(serverRunning,running,stopped);
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 		w.view.decorator.nextLine;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; @@ -288,8 +293,10 @@
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 					if (unicode == 16rF700, { slider.increment; });
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 					if (unicode == 16rF703, { slider.increment; });
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 					if (unicode == 16rF701, { slider.decrement; });
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; -					if (unicode == 16rF702, { slider.decrement; });					nil;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; -					});
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; +					if (unicode == 16rF702, { slider.decrement; });
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; +					nil;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; +					})
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; +					;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 			volController = SimpleController(volume)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 				.put(\amp, {|changer, what, vol|
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 					{
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; @@ -325,7 +332,9 @@
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 			.put(\cmdPeriod,{
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 				recorder.setProperty(\value,0);
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 			})
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; -			.put(\bundling, bundling);
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; +			.put(\bundling, bundling)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; +			.put(\default, showDefault);
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 		this.startAliveThread;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 	}
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; -- 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; --
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Alberto de Campo
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Bergstrasse 59/33
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; A-8020 Graz, Austria
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; e-mail : &lt;a href=&quot;http://n2.nabble.com/user/SendEmail.jtp?type=node&amp;node=4540918&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;[hidden email]&lt;/a&gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; --
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; sc-dev mailing list
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; info (subscription, etc.): &lt;a href=&quot;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; archive: &lt;a href=&quot;http://www.listarc.bham.ac.uk/marchives/sc-dev/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/marchives/sc-dev/&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; search: &lt;a href=&quot;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt;&amp;gt; sc-dev mailing list
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; info (subscription, etc.): &lt;a href=&quot;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt; archive: &lt;a href=&quot;http://www.listarc.bham.ac.uk/marchives/sc-dev/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/marchives/sc-dev/&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt; search: &lt;a href=&quot;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt; sc-dev mailing list
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; info (subscription, etc.): &lt;a href=&quot;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&lt;/a&gt;&lt;br&gt;&amp;gt; archive: &lt;a href=&quot;http://www.listarc.bham.ac.uk/marchives/sc-dev/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/marchives/sc-dev/&lt;/a&gt;&lt;br&gt;&amp;gt; search: &lt;a href=&quot;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&lt;/a&gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;sc-dev mailing list
&lt;br&gt;&lt;br&gt;info (subscription, etc.): &lt;a href=&quot;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&lt;/a&gt;&lt;br&gt;archive: &lt;a href=&quot;http://www.listarc.bham.ac.uk/marchives/sc-dev/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/marchives/sc-dev/&lt;/a&gt;&lt;br&gt;search: &lt;a href=&quot;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/show-default-server-tp2913030p4540918.html" />
	<thr:in-reply-to ref="tag:n2.nabble.com,2006:post-4540867"/>
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-4540892</id>
	<title>Re: SynthDef method cleanup</title>
	<published>2010-02-09T04:58:16Z</published>
	<updated>2010-02-09T04:58:16Z</updated>
	<author>
		<name>Julian Rohrhuber</name>
	</author>
	<content type="html">So we'd then leave send as it is (no flag) ?
&lt;br&gt;This makes sense, lots of change to code, but a good one.
&lt;br&gt;&lt;br&gt;&lt;br&gt;On 09.02.2010, at 13:28, Scott Wilson wrote:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Actually given the arguments on semantics, I think I agree with this approach.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I'd say add 'add', change all general examples to use it, and deprecate memStore.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Perhaps we should publish some guidelines for method names.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; S.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; On 9 Feb 2010, at 10:55, adc wrote:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; hi,
&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; one opinion:
&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; I think by default SynthDefs should just work as Synths and in patterns;
&lt;br&gt;&amp;gt;&amp;gt; so they should by default go to the server and the SynthDescLib.
&lt;br&gt;&amp;gt;&amp;gt; the clearest name I'v heard so far &amp;nbsp;is:
&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; SynthDef(\bla, { ... }).add; // = current memStore
&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; If one does not want synthdefs in the lib (e.g. for efficiency optimisation),
&lt;br&gt;&amp;gt;&amp;gt; one could do :
&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; SynthDef(\bla, { ... }).send; // send to all running servers by default, unless server is given.
&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; To remove a synthdef, the clearest so far:
&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; SynthDef.remove(\bla); // clear it from SynthDescLib and from all running servers
&lt;br&gt;&amp;gt;&amp;gt; ( &amp;nbsp; for symmetry, one could also provide : SynthDef.add(\bla, { ... }); &amp;nbsp; &amp;nbsp;)
&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; Users should not have to worry about keeping in sync what the server knows and
&lt;br&gt;&amp;gt;&amp;gt; what synthdesclib knows. this would reduce beginners confusion a lot IMO.
&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; when is it _really_ necessary to store to disk?
&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; I sometimes find it puzzling that synthdefs that still lie around on disk
&lt;br&gt;&amp;gt;&amp;gt; get loaded on the server, so the server knows them, and they seem to work,
&lt;br&gt;&amp;gt;&amp;gt; but then, not having made them from code in the lang, patterns dont work.
&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; not storing to disk by default (unless explicitly forced) would remove that puzzle:
&lt;br&gt;&amp;gt;&amp;gt; when they are not there, they are not there.
&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; that would require touching up a lot of Synthdef code, but that code would get really simpler.
&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; just 2c,
&lt;br&gt;&amp;gt;&amp;gt; best, adc
&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; On Feb 9, 2010, at 11:26 AM, Julian Rohrhuber wrote:
&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Thank you for your comments. Much worse than flags are method and argument names that center on implementation instead of behavior. &amp;quot;memStore&amp;quot; is a border case in a sense. What I find is that we desperately need is a more abstract method whose name does not reflect how a SynthDef is made accessible as to make it work, but clearly says that it does so. As it is the most common thing, it should be clear and short. While memStore sticks once one has learned it, it is not a nice thing to have in the code - its name has nothing to do with why we use it really.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; One possibility would be to make store like &amp;quot;memStore&amp;quot; by default, and add diskStore. Flags in the class variables may be useful, but of course are ugly if you need a functionality only once. But well, let's hear some more opinions.. :)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; On 09.02.2010, at 07:51, Pelle Nilsson wrote:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Hi,
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Being only a new user still learning SC lurking on dev, I still can't
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; resist commenting on this issue from a new user point of view:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Julian Rohrhuber &amp;lt;&lt;a href=&quot;http://n2.nabble.com/user/SendEmail.jtp?type=node&amp;node=4540892&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;[hidden email]&lt;/a&gt;&amp;gt; writes:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Some methods of SynthDef are a bit hard to read. I've tried to clear
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; thing up a bit and added a flag to send which stores the synthDesc
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; (see patch).
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; I'm not sure what the general opinion about this is. My experience is
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; that the combinatorics of methods are hard to explain and that
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; memStore is a too complicated name for a simple behaviour. To
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; understand the name, one has to understand the history of
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; supercollider. I would not be against using the method &amp;quot;add&amp;quot; instead,
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; but as we are in a mess already, I tend to just make things work.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; It would be great to not use boolean flags here (or elsewhere). As a new
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; user, or probably an old user reading old code later, it is impossible
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; to read (or write) store(true), store(false), and store() and remember
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; what they mean (and which one the last is equivalent to). I always use
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; memStore and part of the reason is that I can remember what it does for
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; sure. I would love if the other version was called diskStore or
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; something similar.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Knowing from other programming languages, trying to hide combinatorics
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; of methods by putting several methods in the same one and using flags to
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; select which of the hidden methods you really want to call was never a
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; solution to the problem.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; As others already said, the store methods are confusing enough to new
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; users already. It is great to hear that something is done about it, but
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; I hope you dev guys end up agreeing on some other solution. :)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; IMHO and all that.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; -- 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; /Pelle
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; sc-dev mailing list
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; info (subscription, etc.): &lt;a href=&quot;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; archive: &lt;a href=&quot;http://www.listarc.bham.ac.uk/marchives/sc-dev/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/marchives/sc-dev/&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; search: &lt;a href=&quot;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; sc-dev mailing list
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; info (subscription, etc.): &lt;a href=&quot;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; archive: &lt;a href=&quot;http://www.listarc.bham.ac.uk/marchives/sc-dev/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/marchives/sc-dev/&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; search: &lt;a href=&quot;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt;&amp;gt; sc-dev mailing list
&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; info (subscription, etc.): &lt;a href=&quot;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt; archive: &lt;a href=&quot;http://www.listarc.bham.ac.uk/marchives/sc-dev/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/marchives/sc-dev/&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt; search: &lt;a href=&quot;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&lt;/a&gt;&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt; sc-dev mailing list
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; info (subscription, etc.): &lt;a href=&quot;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&lt;/a&gt;&lt;br&gt;&amp;gt; archive: &lt;a href=&quot;http://www.listarc.bham.ac.uk/marchives/sc-dev/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/marchives/sc-dev/&lt;/a&gt;&lt;br&gt;&amp;gt; search: &lt;a href=&quot;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&lt;/a&gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;sc-dev mailing list
&lt;br&gt;&lt;br&gt;info (subscription, etc.): &lt;a href=&quot;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&lt;/a&gt;&lt;br&gt;archive: &lt;a href=&quot;http://www.listarc.bham.ac.uk/marchives/sc-dev/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/marchives/sc-dev/&lt;/a&gt;&lt;br&gt;search: &lt;a href=&quot;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/SynthDef-method-cleanup-tp4516616p4540892.html" />
	<thr:in-reply-to ref="tag:n2.nabble.com,2006:post-4540755"/>
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-4540867</id>
	<title>Re: show default server?</title>
	<published>2010-02-09T04:51:07Z</published>
	<updated>2010-02-09T04:51:07Z</updated>
	<author>
		<name>Julian Rohrhuber</name>
	</author>
	<content type="html">setters shouldn't have two args really. So I think it could be a flag in the class.
&lt;br&gt;&lt;br&gt;&lt;br&gt;On 09.02.2010, at 13:40, Scott Wilson wrote:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Is there any reason why sync_s should not default to true?
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I find this sort of construction:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Server.default = s = Server.internal;
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; very clunky and prone to order mistakes for beginners.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; S.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; On 16 May 2009, at 17:20, Alberto de Campo wrote:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; hi all,
&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; I find the question 'which server is currently default' occurs really often,
&lt;br&gt;&amp;gt;&amp;gt; and is a regular source of confusion for students. It occurred to me that the
&lt;br&gt;&amp;gt;&amp;gt; server windows should just show that.
&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; below the diff for an attempt - ok like that?
&lt;br&gt;&amp;gt;&amp;gt; any better ideas? opinions?
&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; best, adc
&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; Index: Control/Server.sc
&lt;br&gt;&amp;gt;&amp;gt; ===================================================================
&lt;br&gt;&amp;gt;&amp;gt; --- Control/Server.sc	(revision 9164)
&lt;br&gt;&amp;gt;&amp;gt; +++ Control/Server.sc	(working copy)
&lt;br&gt;&amp;gt;&amp;gt; @@ -185,7 +185,7 @@
&lt;br&gt;&amp;gt;&amp;gt; }
&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; Server : Model {
&lt;br&gt;&amp;gt;&amp;gt; -	classvar &amp;lt;&amp;gt;local, &amp;lt;&amp;gt;internal, &amp;lt;&amp;gt;default, &amp;lt;&amp;gt;named, &amp;lt;&amp;gt;set, &amp;lt;&amp;gt;program;
&lt;br&gt;&amp;gt;&amp;gt; +	classvar &amp;lt;&amp;gt;local, &amp;lt;&amp;gt;internal, &amp;lt;default, &amp;lt;&amp;gt;named, &amp;lt;&amp;gt;set, &amp;lt;&amp;gt;program;
&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; 	var &amp;lt;name, &amp;lt;&amp;gt;addr, &amp;lt;clientID=0;
&lt;br&gt;&amp;gt;&amp;gt; 	var &amp;lt;isLocal, &amp;lt;inProcess, &amp;lt;&amp;gt;sendQuit, &amp;lt;&amp;gt;remoteControlled;
&lt;br&gt;&amp;gt;&amp;gt; @@ -212,6 +212,12 @@
&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; 	var &amp;lt;pid;
&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; +	*default_ { |server, sync_s = false|
&lt;br&gt;&amp;gt;&amp;gt; +		default = server; // sync with s?
&lt;br&gt;&amp;gt;&amp;gt; +		if (sync_s, { thisProcess.interpreter.s = server });
&lt;br&gt;&amp;gt;&amp;gt; +		this.all.do(_.changed(\default));
&lt;br&gt;&amp;gt;&amp;gt; +	}
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; Index: GUI/PlusGUI/Control/ServerPlusGUI.sc
&lt;br&gt;&amp;gt;&amp;gt; ===================================================================
&lt;br&gt;&amp;gt;&amp;gt; --- GUI/PlusGUI/Control/ServerPlusGUI.sc	(revision 9164)
&lt;br&gt;&amp;gt;&amp;gt; +++ GUI/PlusGUI/Control/ServerPlusGUI.sc	(working copy)
&lt;br&gt;&amp;gt;&amp;gt; @@ -15,7 +15,7 @@
&lt;br&gt;&amp;gt;&amp;gt; 	}
&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; 	makeGui { arg w;
&lt;br&gt;&amp;gt;&amp;gt; -		var active, booter, killer, makeDefault, running, booting, stopped, bundling;
&lt;br&gt;&amp;gt;&amp;gt; +		var active, booter, killer, makeDefault, running, booting, stopped, bundling, showDefault;
&lt;br&gt;&amp;gt;&amp;gt; 		var recorder, scoper;
&lt;br&gt;&amp;gt;&amp;gt; 		var countsViews, ctlr;
&lt;br&gt;&amp;gt;&amp;gt; 		var dumping = false, label, gui, font, volumeNum;
&lt;br&gt;&amp;gt;&amp;gt; @@ -68,12 +68,10 @@
&lt;br&gt;&amp;gt;&amp;gt; 		makeDefault = gui.button.new(w, Rect(0,0, 54, 18));
&lt;br&gt;&amp;gt;&amp;gt; 		makeDefault.font = font;
&lt;br&gt;&amp;gt;&amp;gt; 		makeDefault.canFocus = false;
&lt;br&gt;&amp;gt;&amp;gt; -		makeDefault.states = [[&amp;quot;-&amp;gt; default&amp;quot;, Color.black, Color.clear]];
&lt;br&gt;&amp;gt;&amp;gt; -		makeDefault.action = {
&lt;br&gt;&amp;gt;&amp;gt; -			thisProcess.interpreter.s = this;
&lt;br&gt;&amp;gt;&amp;gt; -			Server.default = this;
&lt;br&gt;&amp;gt;&amp;gt; -		};
&lt;br&gt;&amp;gt;&amp;gt; -
&lt;br&gt;&amp;gt;&amp;gt; +		makeDefault.states = [[&amp;quot;-&amp;gt; default&amp;quot;, Color.black, Color.clear], [&amp;quot;-&amp;gt; default&amp;quot;, Color.black, Color.green.alpha_(0.2)]];
&lt;br&gt;&amp;gt;&amp;gt; +		makeDefault.value_((this == Server.default).binaryValue);
&lt;br&gt;&amp;gt;&amp;gt; +		makeDefault.action = { Server.default_(this, true) };
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; 		//w.view.decorator.nextLine;
&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; 		recorder = gui.button.new(w, Rect(0,0, 66, 18));
&lt;br&gt;&amp;gt;&amp;gt; @@ -169,6 +167,7 @@
&lt;br&gt;&amp;gt;&amp;gt; 				window = nil;
&lt;br&gt;&amp;gt;&amp;gt; 				ctlr.remove;
&lt;br&gt;&amp;gt;&amp;gt; 			};
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; 		},{
&lt;br&gt;&amp;gt;&amp;gt; 			running = {
&lt;br&gt;&amp;gt;&amp;gt; 				active.stringColor_(Color.new255(74, 120, 74));
&lt;br&gt;&amp;gt;&amp;gt; @@ -202,6 +201,12 @@
&lt;br&gt;&amp;gt;&amp;gt; 				ctlr.remove;
&lt;br&gt;&amp;gt;&amp;gt; 			};
&lt;br&gt;&amp;gt;&amp;gt; 		});
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; +		showDefault = {
&lt;br&gt;&amp;gt;&amp;gt; +			&amp;quot;// Server.default: % - s: % // \n\n&amp;quot;.postf(Server.default, thisProcess.interpreter.s);
&lt;br&gt;&amp;gt;&amp;gt; +			makeDefault.value = (Server.default == this).binaryValue;
&lt;br&gt;&amp;gt;&amp;gt; +		};
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; 		if(serverRunning,running,stopped);
&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; 		w.view.decorator.nextLine;
&lt;br&gt;&amp;gt;&amp;gt; @@ -288,8 +293,10 @@
&lt;br&gt;&amp;gt;&amp;gt; 					if (unicode == 16rF700, { slider.increment; });
&lt;br&gt;&amp;gt;&amp;gt; 					if (unicode == 16rF703, { slider.increment; });
&lt;br&gt;&amp;gt;&amp;gt; 					if (unicode == 16rF701, { slider.decrement; });
&lt;br&gt;&amp;gt;&amp;gt; -					if (unicode == 16rF702, { slider.decrement; });					nil;
&lt;br&gt;&amp;gt;&amp;gt; -					});
&lt;br&gt;&amp;gt;&amp;gt; +					if (unicode == 16rF702, { slider.decrement; });
&lt;br&gt;&amp;gt;&amp;gt; +					nil;
&lt;br&gt;&amp;gt;&amp;gt; +					})
&lt;br&gt;&amp;gt;&amp;gt; +					;
&lt;br&gt;&amp;gt;&amp;gt; 			volController = SimpleController(volume)
&lt;br&gt;&amp;gt;&amp;gt; 				.put(\amp, {|changer, what, vol|
&lt;br&gt;&amp;gt;&amp;gt; 					{
&lt;br&gt;&amp;gt;&amp;gt; @@ -325,7 +332,9 @@
&lt;br&gt;&amp;gt;&amp;gt; 			.put(\cmdPeriod,{
&lt;br&gt;&amp;gt;&amp;gt; 				recorder.setProperty(\value,0);
&lt;br&gt;&amp;gt;&amp;gt; 			})
&lt;br&gt;&amp;gt;&amp;gt; -			.put(\bundling, bundling);
&lt;br&gt;&amp;gt;&amp;gt; +			.put(\bundling, bundling)
&lt;br&gt;&amp;gt;&amp;gt; +			.put(\default, showDefault);
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; 		this.startAliveThread;
&lt;br&gt;&amp;gt;&amp;gt; 	}
&lt;br&gt;&amp;gt;&amp;gt; }
&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; -- 
&lt;br&gt;&amp;gt;&amp;gt; --
&lt;br&gt;&amp;gt;&amp;gt; Alberto de Campo
&lt;br&gt;&amp;gt;&amp;gt; Bergstrasse 59/33
&lt;br&gt;&amp;gt;&amp;gt; A-8020 Graz, Austria
&lt;br&gt;&amp;gt;&amp;gt; e-mail : &lt;a href=&quot;http://n2.nabble.com/user/SendEmail.jtp?type=node&amp;node=4540867&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;[hidden email]&lt;/a&gt;
&lt;br&gt;&amp;gt;&amp;gt; --
&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt;&amp;gt; sc-dev mailing list
&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; info (subscription, etc.): &lt;a href=&quot;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt; archive: &lt;a href=&quot;http://www.listarc.bham.ac.uk/marchives/sc-dev/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/marchives/sc-dev/&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt; search: &lt;a href=&quot;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&lt;/a&gt;&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt; sc-dev mailing list
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; info (subscription, etc.): &lt;a href=&quot;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&lt;/a&gt;&lt;br&gt;&amp;gt; archive: &lt;a href=&quot;http://www.listarc.bham.ac.uk/marchives/sc-dev/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/marchives/sc-dev/&lt;/a&gt;&lt;br&gt;&amp;gt; search: &lt;a href=&quot;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&lt;/a&gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;sc-dev mailing list
&lt;br&gt;&lt;br&gt;info (subscription, etc.): &lt;a href=&quot;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&lt;/a&gt;&lt;br&gt;archive: &lt;a href=&quot;http://www.listarc.bham.ac.uk/marchives/sc-dev/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/marchives/sc-dev/&lt;/a&gt;&lt;br&gt;search: &lt;a href=&quot;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/show-default-server-tp2913030p4540867.html" />
	<thr:in-reply-to ref="tag:n2.nabble.com,2006:post-4540824"/>
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-4540824</id>
	<title>Re: show default server?</title>
	<published>2010-02-09T04:40:33Z</published>
	<updated>2010-02-09T04:40:33Z</updated>
	<author>
		<name>Scott Wilson</name>
	</author>
	<content type="html">Is there any reason why sync_s should not default to true?
&lt;br&gt;&lt;br&gt;I find this sort of construction:
&lt;br&gt;&lt;br&gt;Server.default = s = Server.internal;
&lt;br&gt;&lt;br&gt;very clunky and prone to order mistakes for beginners.
&lt;br&gt;&lt;br&gt;S.
&lt;br&gt;&lt;br&gt;On 16 May 2009, at 17:20, Alberto de Campo wrote:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; hi all,
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I find the question 'which server is currently default' occurs &amp;nbsp;
&lt;br&gt;&amp;gt; really often,
&lt;br&gt;&amp;gt; and is a regular source of confusion for students. It occurred to me &amp;nbsp;
&lt;br&gt;&amp;gt; that the
&lt;br&gt;&amp;gt; server windows should just show that.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; below the diff for an attempt - ok like that?
&lt;br&gt;&amp;gt; any better ideas? opinions?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; best, adc
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Index: Control/Server.sc
&lt;br&gt;&amp;gt; ===================================================================
&lt;br&gt;&amp;gt; --- Control/Server.sc	(revision 9164)
&lt;br&gt;&amp;gt; +++ Control/Server.sc	(working copy)
&lt;br&gt;&amp;gt; @@ -185,7 +185,7 @@
&lt;br&gt;&amp;gt; }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Server : Model {
&lt;br&gt;&amp;gt; -	classvar &amp;lt;&amp;gt;local, &amp;lt;&amp;gt;internal, &amp;lt;&amp;gt;default, &amp;lt;&amp;gt;named, &amp;lt;&amp;gt;set, &amp;lt;&amp;gt;program;
&lt;br&gt;&amp;gt; +	classvar &amp;lt;&amp;gt;local, &amp;lt;&amp;gt;internal, &amp;lt;default, &amp;lt;&amp;gt;named, &amp;lt;&amp;gt;set, &amp;lt;&amp;gt;program;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; 	var &amp;lt;name, &amp;lt;&amp;gt;addr, &amp;lt;clientID=0;
&lt;br&gt;&amp;gt; 	var &amp;lt;isLocal, &amp;lt;inProcess, &amp;lt;&amp;gt;sendQuit, &amp;lt;&amp;gt;remoteControlled;
&lt;br&gt;&amp;gt; @@ -212,6 +212,12 @@
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; 	var &amp;lt;pid;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; +	*default_ { |server, sync_s = false|
&lt;br&gt;&amp;gt; +		default = server; // sync with s?
&lt;br&gt;&amp;gt; +		if (sync_s, { thisProcess.interpreter.s = server });
&lt;br&gt;&amp;gt; +		this.all.do(_.changed(\default));
&lt;br&gt;&amp;gt; +	}
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Index: GUI/PlusGUI/Control/ServerPlusGUI.sc
&lt;br&gt;&amp;gt; ===================================================================
&lt;br&gt;&amp;gt; --- GUI/PlusGUI/Control/ServerPlusGUI.sc	(revision 9164)
&lt;br&gt;&amp;gt; +++ GUI/PlusGUI/Control/ServerPlusGUI.sc	(working copy)
&lt;br&gt;&amp;gt; @@ -15,7 +15,7 @@
&lt;br&gt;&amp;gt; 	}
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; 	makeGui { arg w;
&lt;br&gt;&amp;gt; -		var active, booter, killer, makeDefault, running, booting, &amp;nbsp;
&lt;br&gt;&amp;gt; stopped, bundling;
&lt;br&gt;&amp;gt; +		var active, booter, killer, makeDefault, running, booting, &amp;nbsp;
&lt;br&gt;&amp;gt; stopped, bundling, showDefault;
&lt;br&gt;&amp;gt; 		var recorder, scoper;
&lt;br&gt;&amp;gt; 		var countsViews, ctlr;
&lt;br&gt;&amp;gt; 		var dumping = false, label, gui, font, volumeNum;
&lt;br&gt;&amp;gt; @@ -68,12 +68,10 @@
&lt;br&gt;&amp;gt; 		makeDefault = gui.button.new(w, Rect(0,0, 54, 18));
&lt;br&gt;&amp;gt; 		makeDefault.font = font;
&lt;br&gt;&amp;gt; 		makeDefault.canFocus = false;
&lt;br&gt;&amp;gt; -		makeDefault.states = [[&amp;quot;-&amp;gt; default&amp;quot;, Color.black, Color.clear]];
&lt;br&gt;&amp;gt; -		makeDefault.action = {
&lt;br&gt;&amp;gt; -			thisProcess.interpreter.s = this;
&lt;br&gt;&amp;gt; -			Server.default = this;
&lt;br&gt;&amp;gt; -		};
&lt;br&gt;&amp;gt; -
&lt;br&gt;&amp;gt; +		makeDefault.states = [[&amp;quot;-&amp;gt; default&amp;quot;, Color.black, Color.clear], &amp;nbsp;
&lt;br&gt;&amp;gt; [&amp;quot;-&amp;gt; default&amp;quot;, Color.black, Color.green.alpha_(0.2)]];
&lt;br&gt;&amp;gt; +		makeDefault.value_((this == Server.default).binaryValue);
&lt;br&gt;&amp;gt; +		makeDefault.action = { Server.default_(this, true) };
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; 		//w.view.decorator.nextLine;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; 		recorder = gui.button.new(w, Rect(0,0, 66, 18));
&lt;br&gt;&amp;gt; @@ -169,6 +167,7 @@
&lt;br&gt;&amp;gt; 				window = nil;
&lt;br&gt;&amp;gt; 				ctlr.remove;
&lt;br&gt;&amp;gt; 			};
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; 		},{
&lt;br&gt;&amp;gt; 			running = {
&lt;br&gt;&amp;gt; 				active.stringColor_(Color.new255(74, 120, 74));
&lt;br&gt;&amp;gt; @@ -202,6 +201,12 @@
&lt;br&gt;&amp;gt; 				ctlr.remove;
&lt;br&gt;&amp;gt; 			};
&lt;br&gt;&amp;gt; 		});
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; +		showDefault = {
&lt;br&gt;&amp;gt; +			&amp;quot;// Server.default: % - s: % // \n\n&amp;quot;.postf(Server.default, &amp;nbsp;
&lt;br&gt;&amp;gt; thisProcess.interpreter.s);
&lt;br&gt;&amp;gt; +			makeDefault.value = (Server.default == this).binaryValue;
&lt;br&gt;&amp;gt; +		};
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; 		if(serverRunning,running,stopped);
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; 		w.view.decorator.nextLine;
&lt;br&gt;&amp;gt; @@ -288,8 +293,10 @@
&lt;br&gt;&amp;gt; 					if (unicode == 16rF700, { slider.increment; });
&lt;br&gt;&amp;gt; 					if (unicode == 16rF703, { slider.increment; });
&lt;br&gt;&amp;gt; 					if (unicode == 16rF701, { slider.decrement; });
&lt;br&gt;&amp;gt; -					if (unicode == 16rF702, { slider.decrement; });					nil;
&lt;br&gt;&amp;gt; -					});
&lt;br&gt;&amp;gt; +					if (unicode == 16rF702, { slider.decrement; });
&lt;br&gt;&amp;gt; +					nil;
&lt;br&gt;&amp;gt; +					})
&lt;br&gt;&amp;gt; +					;
&lt;br&gt;&amp;gt; 			volController = SimpleController(volume)
&lt;br&gt;&amp;gt; 				.put(\amp, {|changer, what, vol|
&lt;br&gt;&amp;gt; 					{
&lt;br&gt;&amp;gt; @@ -325,7 +332,9 @@
&lt;br&gt;&amp;gt; 			.put(\cmdPeriod,{
&lt;br&gt;&amp;gt; 				recorder.setProperty(\value,0);
&lt;br&gt;&amp;gt; 			})
&lt;br&gt;&amp;gt; -			.put(\bundling, bundling);
&lt;br&gt;&amp;gt; +			.put(\bundling, bundling)
&lt;br&gt;&amp;gt; +			.put(\default, showDefault);
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; 		this.startAliveThread;
&lt;br&gt;&amp;gt; 	}
&lt;br&gt;&amp;gt; }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; -- 
&lt;br&gt;&amp;gt; --
&lt;br&gt;&amp;gt; Alberto de Campo
&lt;br&gt;&amp;gt; Bergstrasse 59/33
&lt;br&gt;&amp;gt; A-8020 Graz, Austria
&lt;br&gt;&amp;gt; e-mail : &lt;a href=&quot;http://n2.nabble.com/user/SendEmail.jtp?type=node&amp;node=4540824&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;[hidden email]&lt;/a&gt;
&lt;br&gt;&amp;gt; --
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt; sc-dev mailing list
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; info (subscription, etc.): &lt;a href=&quot;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&lt;/a&gt;&lt;br&gt;&amp;gt; archive: &lt;a href=&quot;http://www.listarc.bham.ac.uk/marchives/sc-dev/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/marchives/sc-dev/&lt;/a&gt;&lt;br&gt;&amp;gt; search: &lt;a href=&quot;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&lt;/a&gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;sc-dev mailing list
&lt;br&gt;&lt;br&gt;info (subscription, etc.): &lt;a href=&quot;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&lt;/a&gt;&lt;br&gt;archive: &lt;a href=&quot;http://www.listarc.bham.ac.uk/marchives/sc-dev/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/marchives/sc-dev/&lt;/a&gt;&lt;br&gt;search: &lt;a href=&quot;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/show-default-server-tp2913030p4540824.html" />
	<thr:in-reply-to ref="tag:n2.nabble.com,2006:post-2913030"/>
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-4540822</id>
	<title>NumberBox scrolling fix</title>
	<published>2010-02-09T04:38:55Z</published>
	<updated>2010-02-09T04:38:55Z</updated>
	<author>
		<name>nonprivate</name>
	</author>
	<content type="html">hi, i always swore i'd never (deliberately) post to the dev list, but where i have come across a specific problem and can submit a solution that is easy to implement and does not break code, then i may as well post it here. if this is somehow unacceptable, then... what is this list for!&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;so, i have had problems with the scrolling behaviour of NumberBox. i am on osx so i am specifically referencing SCNumberBox. i don't understand how it can be regarded as usable behaviour if the scrolling is both horizontal and vertical at the same time. i am used to scrolling vertically, as was the case in sc1 and sc2 so i got used to it as a matter of preference, anyway so if i scroll vertically upwards but my mouse wavers even one horizontal pixel backwards, the value will start going the other way, and the resulting value jumps all over the place. i think it's better to have either horizontal or vertical scrolling, and personally i would have vertical only scrolling as the default. however, since i want to avoid the inevitable moans of &quot;that will break code!&quot; the following solution preserves the current behaviour, unless&amp;nbsp;scrollDirection is specifically set to one thing or the other. i used /h and /v as that's what Gradient does.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;so in the variable declarations, add:&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Monaco&quot; size=&quot;1&quot; color=&quot;#0000bf&quot; style=&quot;font: 9.0px Monaco; color: #0000bf&quot;&gt;var&lt;/font&gt;&lt;font face=&quot;Monaco&quot; size=&quot;1&quot; style=&quot;font: 9.0px Monaco&quot;&gt; &amp;lt;&amp;gt;scrollDirection;&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Monaco&quot; size=&quot;1&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 9px;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Monaco&quot; size=&quot;1&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 9px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica; font-size: medium; &quot;&gt;and then alter mouseMove as follows:&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Monaco&quot; size=&quot;1&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 9px;&quot;&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Monaco&quot; size=&quot;1&quot; style=&quot;font: 9.0px Monaco&quot;&gt;mouseMove { &lt;/font&gt;&lt;font face=&quot;Monaco&quot; size=&quot;1&quot; color=&quot;#0000bf&quot; style=&quot;font: 9.0px Monaco; color: #0000bf&quot;&gt;arg&lt;/font&gt;&lt;font face=&quot;Monaco&quot; size=&quot;1&quot; style=&quot;font: 9.0px Monaco&quot;&gt; x, y, modifiers;&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Monaco&quot; size=&quot;1&quot; style=&quot;font: 9.0px Monaco&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;/font&gt;&lt;font face=&quot;Monaco&quot; size=&quot;1&quot; color=&quot;#0000bf&quot; style=&quot;font: 9.0px Monaco; color: #0000bf&quot;&gt;var&lt;/font&gt;&lt;font face=&quot;Monaco&quot; size=&quot;1&quot; style=&quot;font: 9.0px Monaco&quot;&gt; direction;&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Monaco&quot; size=&quot;1&quot; style=&quot;font: 9.0px Monaco&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;if (scroll == &lt;/font&gt;&lt;font face=&quot;Monaco&quot; size=&quot;1&quot; color=&quot;#0000bf&quot; style=&quot;font: 9.0px Monaco; color: #0000bf&quot;&gt;true&lt;/font&gt;&lt;font face=&quot;Monaco&quot; size=&quot;1&quot; style=&quot;font: 9.0px Monaco&quot;&gt;, {&lt;/font&gt;&lt;/div&gt;&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px&quot;&gt;&lt;font face=&quot;Monaco&quot; size=&quot;1&quot; style=&quot;font: 9.0px Monaco&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;/font&gt;&lt;br class=&quot;khtml-block-placeholder&quot;&gt;&lt;/p&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Monaco&quot; size=&quot;1&quot; style=&quot;font: 9.0px Monaco&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;case&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Monaco&quot; size=&quot;1&quot; style=&quot;font: 9.0px Monaco&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;{scrollDirection == &lt;/font&gt;&lt;font face=&quot;Monaco&quot; size=&quot;1&quot; color=&quot;#007300&quot; style=&quot;font: 9.0px Monaco; color: #007300&quot;&gt;\h&lt;/font&gt;&lt;font face=&quot;Monaco&quot; size=&quot;1&quot; style=&quot;font: 9.0px Monaco&quot;&gt;}&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Monaco&quot; size=&quot;1&quot; style=&quot;font: 9.0px Monaco&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;{&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Monaco&quot; size=&quot;1&quot; style=&quot;font: 9.0px Monaco&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;/font&gt;&lt;font face=&quot;Monaco&quot; size=&quot;1&quot; color=&quot;#bf0000&quot; style=&quot;font: 9.0px Monaco; color: #bf0000&quot;&gt;// horizontal scrolling:&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Monaco&quot; size=&quot;1&quot; style=&quot;font: 9.0px Monaco&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;if ((x - hit.x) &amp;lt; 0) {direction = -1.0} {direction = 1.0};&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Monaco&quot; size=&quot;1&quot; style=&quot;font: 9.0px Monaco&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;}&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Monaco&quot; size=&quot;1&quot; style=&quot;font: 9.0px Monaco&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;{scrollDirection == &lt;/font&gt;&lt;font face=&quot;Monaco&quot; size=&quot;1&quot; color=&quot;#007300&quot; style=&quot;font: 9.0px Monaco; color: #007300&quot;&gt;\v&lt;/font&gt;&lt;font face=&quot;Monaco&quot; size=&quot;1&quot; style=&quot;font: 9.0px Monaco&quot;&gt;}&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Monaco&quot; size=&quot;1&quot; style=&quot;font: 9.0px Monaco&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;{&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Monaco&quot; size=&quot;1&quot; style=&quot;font: 9.0px Monaco&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;/font&gt;&lt;font face=&quot;Monaco&quot; size=&quot;1&quot; color=&quot;#bf0000&quot; style=&quot;font: 9.0px Monaco; color: #bf0000&quot;&gt;// vertical scrolling:&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Monaco&quot; size=&quot;1&quot; style=&quot;font: 9.0px Monaco&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;if ((y - hit.y) &amp;gt; 0) {direction = -1.0} {direction = 1.0};&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Monaco&quot; size=&quot;1&quot; style=&quot;font: 9.0px Monaco&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;}&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Monaco&quot; size=&quot;1&quot; style=&quot;font: 9.0px Monaco&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;{&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Monaco&quot; size=&quot;1&quot; style=&quot;font: 9.0px Monaco&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;/font&gt;&lt;font face=&quot;Monaco&quot; size=&quot;1&quot; color=&quot;#bf0000&quot; style=&quot;font: 9.0px Monaco; color: #bf0000&quot;&gt;// horizontal or vertical scrolling:&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Monaco&quot; size=&quot;1&quot; style=&quot;font: 9.0px Monaco&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;direction = 1.0;&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Monaco&quot; size=&quot;1&quot; style=&quot;font: 9.0px Monaco&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;if ( (x - hit.x) &amp;lt; 0 or: { (y - hit.y) &amp;gt; 0 }) { direction = -1.0; };&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Monaco&quot; size=&quot;1&quot; style=&quot;font: 9.0px Monaco&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;};&lt;/font&gt;&lt;/div&gt;&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px&quot;&gt;&lt;font face=&quot;Monaco&quot; size=&quot;1&quot; style=&quot;font: 9.0px Monaco&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;/font&gt;&lt;br class=&quot;khtml-block-placeholder&quot;&gt;&lt;/p&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9px/normal Monaco; min-height: 12px; &quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Monaco&quot; size=&quot;1&quot; style=&quot;font: 9.0px Monaco&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;/font&gt;&lt;font face=&quot;Monaco&quot; size=&quot;1&quot; color=&quot;#0000bf&quot; style=&quot;font: 9.0px Monaco; color: #0000bf&quot;&gt;this&lt;/font&gt;&lt;font face=&quot;Monaco&quot; size=&quot;1&quot; style=&quot;font: 9.0px Monaco&quot;&gt;.valueAction = (&lt;/font&gt;&lt;font face=&quot;Monaco&quot; size=&quot;1&quot; color=&quot;#0000bf&quot; style=&quot;font: 9.0px Monaco; color: #0000bf&quot;&gt;this&lt;/font&gt;&lt;font face=&quot;Monaco&quot; size=&quot;1&quot; style=&quot;font: 9.0px Monaco&quot;&gt;.value + (inc * &lt;/font&gt;&lt;font face=&quot;Monaco&quot; size=&quot;1&quot; color=&quot;#0000bf&quot; style=&quot;font: 9.0px Monaco; color: #0000bf&quot;&gt;this&lt;/font&gt;&lt;font face=&quot;Monaco&quot; size=&quot;1&quot; style=&quot;font: 9.0px Monaco&quot;&gt;.scroll_step * direction));&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Monaco&quot; size=&quot;1&quot; style=&quot;font: 9.0px Monaco&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;hit = &lt;/font&gt;&lt;font face=&quot;Monaco&quot; size=&quot;1&quot; color=&quot;#0000bf&quot; style=&quot;font: 9.0px Monaco; color: #0000bf&quot;&gt;Point&lt;/font&gt;&lt;font face=&quot;Monaco&quot; size=&quot;1&quot; style=&quot;font: 9.0px Monaco&quot;&gt;(x, y);&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Monaco&quot; size=&quot;1&quot; style=&quot;font: 9.0px Monaco&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;});&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Monaco&quot; size=&quot;1&quot; style=&quot;font: 9.0px Monaco&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;mouseMoveAction.value(&lt;/font&gt;&lt;font face=&quot;Monaco&quot; size=&quot;1&quot; color=&quot;#0000bf&quot; style=&quot;font: 9.0px Monaco; color: #0000bf&quot;&gt;this&lt;/font&gt;&lt;font face=&quot;Monaco&quot; size=&quot;1&quot; style=&quot;font: 9.0px Monaco&quot;&gt;, x, y, modifiers);&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Monaco&quot; size=&quot;1&quot; style=&quot;font: 9.0px Monaco&quot;&gt;}&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica; font-size: medium; &quot;&gt;then one can do this:&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 85px; text-indent: -85px; &quot;&gt;&lt;font face=&quot;Monaco&quot; size=&quot;1&quot; style=&quot;font: 9.0px Monaco&quot;&gt;b =&amp;nbsp;&lt;/font&gt;&lt;font face=&quot;Monaco&quot; size=&quot;1&quot; color=&quot;#0922b2&quot; style=&quot;font: 9.0px Monaco; color: #0922b2&quot;&gt;NumberBox&lt;/font&gt;&lt;font face=&quot;Monaco&quot; size=&quot;1&quot; style=&quot;font: 9.0px Monaco&quot;&gt;(w, &lt;/font&gt;&lt;font face=&quot;Monaco&quot; size=&quot;1&quot; color=&quot;#0922b2&quot; style=&quot;font: 9.0px Monaco; color: #0922b2&quot;&gt;Rect&lt;/font&gt;&lt;font face=&quot;Monaco&quot; size=&quot;1&quot; style=&quot;font: 9.0px Monaco&quot;&gt;(150, 10, 100, 20));&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 85px; text-indent: -85px; &quot;&gt;&lt;font face=&quot;Monaco&quot; size=&quot;1&quot; style=&quot;font: 9.0px Monaco&quot;&gt;b.scrollDirection_(\v);&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 85px; text-indent: -85px; &quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 85px; text-indent: -85px; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica; font-size: medium; &quot;&gt;i would appreciate very much this receiving your consideration, thanks.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/NumberBox-scrolling-fix-tp4540822p4540822.html" />
	
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-4540755</id>
	<title>Re: SynthDef method cleanup</title>
	<published>2010-02-09T04:28:03Z</published>
	<updated>2010-02-09T04:28:03Z</updated>
	<author>
		<name>müllmusik</name>
	</author>
	<content type="html">Actually given the arguments on semantics, I think I agree with this &amp;nbsp;
&lt;br&gt;approach.
&lt;br&gt;&lt;br&gt;I'd say add 'add', change all general examples to use it, and &amp;nbsp;
&lt;br&gt;deprecate memStore.
&lt;br&gt;&lt;br&gt;Perhaps we should publish some guidelines for method names.
&lt;br&gt;&lt;br&gt;S.
&lt;br&gt;&lt;br&gt;On 9 Feb 2010, at 10:55, adc wrote:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; hi,
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; one opinion:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I think by default SynthDefs should just work as Synths and in &amp;nbsp;
&lt;br&gt;&amp;gt; patterns;
&lt;br&gt;&amp;gt; so they should by default go to the server and the SynthDescLib.
&lt;br&gt;&amp;gt; the clearest name I'v heard so far &amp;nbsp;is:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; SynthDef(\bla, { ... }).add; // = current memStore
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; If one does not want synthdefs in the lib (e.g. for efficiency &amp;nbsp;
&lt;br&gt;&amp;gt; optimisation),
&lt;br&gt;&amp;gt; one could do :
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; SynthDef(\bla, { ... }).send; // send to all running servers by &amp;nbsp;
&lt;br&gt;&amp;gt; default, unless server is given.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; To remove a synthdef, the clearest so far:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; SynthDef.remove(\bla); // clear it from SynthDescLib and from all &amp;nbsp;
&lt;br&gt;&amp;gt; running servers
&lt;br&gt;&amp;gt; ( &amp;nbsp; for symmetry, one could also provide : SynthDef.add(\bla, &amp;nbsp;
&lt;br&gt;&amp;gt; { ... }); &amp;nbsp; &amp;nbsp;)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Users should not have to worry about keeping in sync what the server &amp;nbsp;
&lt;br&gt;&amp;gt; knows and
&lt;br&gt;&amp;gt; what synthdesclib knows. this would reduce beginners confusion a lot &amp;nbsp;
&lt;br&gt;&amp;gt; IMO.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; when is it _really_ necessary to store to disk?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I sometimes find it puzzling that synthdefs that still lie around on &amp;nbsp;
&lt;br&gt;&amp;gt; disk
&lt;br&gt;&amp;gt; get loaded on the server, so the server knows them, and they seem to &amp;nbsp;
&lt;br&gt;&amp;gt; work,
&lt;br&gt;&amp;gt; but then, not having made them from code in the lang, patterns dont &amp;nbsp;
&lt;br&gt;&amp;gt; work.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; not storing to disk by default (unless explicitly forced) would &amp;nbsp;
&lt;br&gt;&amp;gt; remove that puzzle:
&lt;br&gt;&amp;gt; when they are not there, they are not there.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; that would require touching up a lot of Synthdef code, but that code &amp;nbsp;
&lt;br&gt;&amp;gt; would get really simpler.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; just 2c,
&lt;br&gt;&amp;gt; best, adc
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; On Feb 9, 2010, at 11:26 AM, Julian Rohrhuber wrote:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Thank you for your comments. Much worse than flags are method and &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt; argument names that center on implementation instead of behavior. &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt; &amp;quot;memStore&amp;quot; is a border case in a sense. What I find is that we &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt; desperately need is a more abstract method whose name does not &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt; reflect how a SynthDef is made accessible as to make it work, but &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt; clearly says that it does so. As it is the most common thing, it &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt; should be clear and short. While memStore sticks once one has &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt; learned it, it is not a nice thing to have in the code - its name &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt; has nothing to do with why we use it really.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; One possibility would be to make store like &amp;quot;memStore&amp;quot; by default, &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt; and add diskStore. Flags in the class variables may be useful, but &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt; of course are ugly if you need a functionality only once. But well, &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt; let's hear some more opinions.. :)
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; On 09.02.2010, at 07:51, Pelle Nilsson wrote:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Hi,
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Being only a new user still learning SC lurking on dev, I still &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; can't
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; resist commenting on this issue from a new user point of view:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Julian Rohrhuber &amp;lt;&lt;a href=&quot;http://n2.nabble.com/user/SendEmail.jtp?type=node&amp;node=4540755&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;[hidden email]&lt;/a&gt;&amp;gt; writes:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Some methods of SynthDef are a bit hard to read. I've tried to &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; clear
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; thing up a bit and added a flag to send which stores the synthDesc
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; (see patch).
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; I'm not sure what the general opinion about this is. My &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; experience is
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; that the combinatorics of methods are hard to explain and that
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; memStore is a too complicated name for a simple behaviour. To
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; understand the name, one has to understand the history of
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; supercollider. I would not be against using the method &amp;quot;add&amp;quot; &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; instead,
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; but as we are in a mess already, I tend to just make things work.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; It would be great to not use boolean flags here (or elsewhere). As &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; a new
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; user, or probably an old user reading old code later, it is &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; impossible
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; to read (or write) store(true), store(false), and store() and &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; remember
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; what they mean (and which one the last is equivalent to). I always &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; use
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; memStore and part of the reason is that I can remember what it &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; does for
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; sure. I would love if the other version was called diskStore or
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; something similar.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Knowing from other programming languages, trying to hide &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; combinatorics
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; of methods by putting several methods in the same one and using &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; flags to
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; select which of the hidden methods you really want to call was &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; never a
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; solution to the problem.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; As others already said, the store methods are confusing enough to &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; new
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; users already. It is great to hear that something is done about &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; it, but
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; I hope you dev guys end up agreeing on some other solution. :)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; IMHO and all that.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; -- 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; /Pelle
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; sc-dev mailing list
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; info (subscription, etc.): &lt;a href=&quot;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; archive: &lt;a href=&quot;http://www.listarc.bham.ac.uk/marchives/sc-dev/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/marchives/sc-dev/&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; search: &lt;a href=&quot;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt;&amp;gt; sc-dev mailing list
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; info (subscription, etc.): &lt;a href=&quot;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt; archive: &lt;a href=&quot;http://www.listarc.bham.ac.uk/marchives/sc-dev/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/marchives/sc-dev/&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt; search: &lt;a href=&quot;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt; sc-dev mailing list
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; info (subscription, etc.): &lt;a href=&quot;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&lt;/a&gt;&lt;br&gt;&amp;gt; archive: &lt;a href=&quot;http://www.listarc.bham.ac.uk/marchives/sc-dev/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/marchives/sc-dev/&lt;/a&gt;&lt;br&gt;&amp;gt; search: &lt;a href=&quot;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&lt;/a&gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;sc-dev mailing list
&lt;br&gt;&lt;br&gt;info (subscription, etc.): &lt;a href=&quot;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&lt;/a&gt;&lt;br&gt;archive: &lt;a href=&quot;http://www.listarc.bham.ac.uk/marchives/sc-dev/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/marchives/sc-dev/&lt;/a&gt;&lt;br&gt;search: &lt;a href=&quot;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/SynthDef-method-cleanup-tp4516616p4540755.html" />
	<thr:in-reply-to ref="tag:n2.nabble.com,2006:post-4540411"/>
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-4540712</id>
	<title>Re: The Plot. (was plotting behaviour) : Quark or Common?</title>
	<published>2010-02-09T04:19:54Z</published>
	<updated>2010-02-09T04:19:54Z</updated>
	<author>
		<name>Julian Rohrhuber</name>
	</author>
	<content type="html">Hi Ron, 
&lt;br&gt;&lt;br&gt;just to be sure, I've attached a new version that has a few fixes (renamed MultiPlot to Plotter). I think it does what you intend, but let's see.
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;On 09.02.2010, at 13:09, ronald kuivila wrote:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; var &amp;lt;&amp;gt;overlap;
&lt;br&gt;&amp;gt; 	
&lt;br&gt;&amp;gt; 	updatePlotBounds {
&lt;br&gt;&amp;gt; 		var deltaY = if(this.numChannels &amp;gt; 1 ) { gapY } { 0.0 };
&lt;br&gt;&amp;gt; 		var distY = bounds.height / this.numChannels;
&lt;br&gt;&amp;gt; 		var height = max(20, distY - deltaY);
&lt;br&gt;&amp;gt; 		var min, max;
&lt;br&gt;&amp;gt; 	
&lt;br&gt;&amp;gt; 		if (overlap) {
&lt;br&gt;&amp;gt; 			plotViews.do { |view, i|
&lt;br&gt;&amp;gt; 				view.bounds_(bounds)
&lt;br&gt;&amp;gt; 			};
&lt;br&gt;&amp;gt; 			plotViews[1..].do{ | pv | &amp;nbsp;pv.backgroundColor.alpha_(0) };
&lt;br&gt;&amp;gt; 			
&lt;br&gt;&amp;gt; 			min = plotViews.collect { | v | v.spec.minval }.minItem;
&lt;br&gt;&amp;gt; 			max = plotViews.collect { | v | v.spec.maxval }.maxItem;			
&lt;br&gt;&amp;gt; 			plotViews.do { | v | v.spec.minval_(min); v.spec.maxval_(max) };
&lt;br&gt;&amp;gt; 		}{	
&lt;br&gt;&amp;gt; 			plotViews.do { |view, i|
&lt;br&gt;&amp;gt; 				view.bounds_(
&lt;br&gt;&amp;gt; 					Rect(bounds.left, distY * i + bounds.top, bounds.width, height)
&lt;br&gt;&amp;gt; 				)
&lt;br&gt;&amp;gt; 			};
&lt;br&gt;&amp;gt; 		}
&lt;br&gt;&amp;gt; 	}
&lt;br&gt;&amp;gt; }
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt; &lt;br /&gt; &lt;div class=&quot;small&quot;&gt;&lt;br/&gt;&lt;img src=&quot;http://n2.nabble.com/images/icon_attachment.gif&quot; &gt; &lt;strong&gt;PlotView.sc&lt;/strong&gt; (13K) &lt;a href=&quot;http://n2.nabble.com/attachment/4540712/0/PlotView.sc&quot; target=&quot;_top&quot;&gt;Download Attachment&lt;/a&gt;&lt;br/&gt;&lt;img src=&quot;http://n2.nabble.com/images/icon_attachment.gif&quot; &gt; &lt;strong&gt;PlotWindow.scd&lt;/strong&gt; (2K) &lt;a href=&quot;http://n2.nabble.com/attachment/4540712/1/PlotWindow.scd&quot; target=&quot;_top&quot;&gt;Download Attachment&lt;/a&gt;&lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/plotting-behaviour-tp4504548p4540712.html" />
	<thr:in-reply-to ref="tag:n2.nabble.com,2006:post-4540671"/>
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-4540673</id>
	<title>supernova v0.2</title>
	<published>2010-02-09T04:10:24Z</published>
	<updated>2010-02-09T04:10:24Z</updated>
	<author>
		<name>Tim Blechmann-2</name>
	</author>
	<content type="html">hi all,
&lt;br&gt;&lt;br&gt;there is a new release of supernova, a multi-processor aware version of
&lt;br&gt;the supercollider server scsynth. it provides most features of scsynth,
&lt;br&gt;the most prominent feature, that is still missing, is non-realtime
&lt;br&gt;synthesis. that will be part of v0.3, though ...
&lt;br&gt;&lt;br&gt;getting started:
&lt;br&gt;&lt;a href=&quot;http://tim.klingt.org/code/wiki/supernova&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://tim.klingt.org/code/wiki/supernova&lt;/a&gt;&lt;br&gt;&lt;br&gt;tarballs: &lt;a href=&quot;http://tim.klingt.org/code/projects/list_files/supernova&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://tim.klingt.org/code/projects/list_files/supernova&lt;/a&gt;&lt;br&gt;git repository: git://tim.klingt.org/supercollider.git
&lt;br&gt;debs: &lt;a href=&quot;https://launchpad.net/~tim-klingt/+archive/supernova&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;https://launchpad.net/~tim-klingt/+archive/supernova&lt;/a&gt;&lt;br&gt;&lt;br&gt;cheers, tim
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;&lt;a href=&quot;http://n2.nabble.com/user/SendEmail.jtp?type=node&amp;node=4540673&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;[hidden email]&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://tim.klingt.org&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://tim.klingt.org&lt;/a&gt;&lt;br&gt;&lt;br&gt;Happiness is a byproduct of function, purpose, and conflict; those who
&lt;br&gt;seek happiness for itself seek victory without war.
&lt;br&gt;&amp;nbsp; William S. Burroughs
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br /&gt; &lt;div class=&quot;small&quot;&gt;&lt;br/&gt;&lt;img src=&quot;http://n2.nabble.com/images/icon_attachment.gif&quot; &gt; &lt;strong&gt;signature.asc&lt;/strong&gt; (204 bytes) &lt;a href=&quot;http://n2.nabble.com/attachment/4540673/0/signature.asc&quot; target=&quot;_top&quot;&gt;Download Attachment&lt;/a&gt;&lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/supernova-v0-2-tp4540673p4540673.html" />
	
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-4540671</id>
	<title>Re: The Plot. (was plotting behaviour) : Quark or Common?</title>
	<published>2010-02-09T04:09:57Z</published>
	<updated>2010-02-09T04:09:57Z</updated>
	<author>
		<name>ronald kuivila</name>
	</author>
	<content type="html">HI Julian,&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;I don't see what you mean here.&amp;nbsp;Trying&amp;nbsp;x.flop.bubble.plot2&amp;nbsp;I get an error.&lt;/div&gt;&lt;div&gt;One could always go x.flop.flat.plot, but that does not give the picture you want.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Here is a hack that does what I was suggesting:&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;+MultiPlot {&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;i&gt;	&lt;/i&gt;&lt;/span&gt;&lt;i&gt;var &amp;lt;&amp;gt;overlap;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;i&gt;	&lt;/i&gt;&lt;/span&gt;&lt;i&gt;&lt;br class=&quot;webkit-block-placeholder&quot;&gt;&lt;/i&gt;&lt;/p&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9px/normal Monaco; &quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;	&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;updatePlotBounds {&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9px/normal Monaco; &quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;		&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;var deltaY = if(this.numChannels &amp;gt; 1 ) { gapY } { 0.0 };&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9px/normal Monaco; &quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;		&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;var distY = bounds.height / this.numChannels;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9px/normal Monaco; &quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;		&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;var height = max(20, distY - deltaY);&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9px/normal Monaco; &quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;		&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;var min, max;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;	&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;&lt;br class=&quot;webkit-block-placeholder&quot;&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9px/normal Monaco; &quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;	&lt;i&gt;	&lt;/i&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;&lt;i&gt;if (overlap) {&lt;/i&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9px/normal Monaco; &quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;&lt;i&gt;			&lt;/i&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;&lt;i&gt;plotViews.do { |view, i|&lt;/i&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9px/normal Monaco; &quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;&lt;i&gt;				&lt;/i&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;&lt;i&gt;view.bounds_(bounds)&lt;/i&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9px/normal Monaco; &quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;&lt;i&gt;			&lt;/i&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;&lt;i&gt;};&lt;/i&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9px/normal Monaco; &quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;&lt;i&gt;			&lt;/i&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;&lt;i&gt;plotViews[1..].do{ | pv |&amp;nbsp; pv.backgroundColor.alpha_(0) };&lt;/i&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;&lt;i&gt;			&lt;/i&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;&lt;i&gt;&lt;br class=&quot;webkit-block-placeholder&quot;&gt;&lt;/i&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9px/normal Monaco; &quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;&lt;i&gt;			&lt;/i&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;&lt;i&gt;min = plotViews.collect { | v | v.spec.minval }.minItem;&lt;/i&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9px/normal Monaco; &quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;&lt;i&gt;			&lt;/i&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;&lt;i&gt;max = plotViews.collect { | v | v.spec.maxval }.maxItem;&lt;/i&gt;&lt;/span&gt;&lt;/font&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;&lt;i&gt;			&lt;/i&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9px/normal Monaco; &quot;&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;&lt;i&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/font&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;&lt;i&gt;			&lt;/i&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;&lt;i&gt;plotViews.do { | v | v.spec.minval_(min); v.spec.maxval_(max) };&lt;/i&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9px/normal Monaco; &quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;&lt;i&gt;		&lt;/i&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;&lt;i&gt;}&lt;/i&gt;{&lt;/span&gt;&lt;/font&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;	&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9px/normal Monaco; &quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;			&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;plotViews.do { |view, i|&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9px/normal Monaco; &quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;				&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;view.bounds_(&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9px/normal Monaco; &quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;					&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;Rect(bounds.left, distY * i + bounds.top, bounds.width, height)&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9px/normal Monaco; &quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;				&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;)&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9px/normal Monaco; &quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;			&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;};&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9px/normal Monaco; &quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;		&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;}&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9px/normal Monaco; &quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;	&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;}&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9px/normal Monaco; &quot;&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;}&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9px/normal Monaco; &quot;&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9px/normal Monaco; &quot;&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9px/normal Monaco; &quot;&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;+ ArrayedCollection {&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9px/normal Monaco; min-height: 12px; &quot;&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9px/normal Monaco; &quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;	&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;plot2 { arg name, bounds, discrete=false, numChannels, minval, maxval, &lt;i&gt;overlap = false&lt;/i&gt;;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9px/normal Monaco; &quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;		&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;var array = this.as(Array), res = PlotWindow(name, bounds);&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9px/normal Monaco; &quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;		&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;res.multiPlot.&lt;i&gt;overlap_(overlap)&lt;/i&gt;;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9px/normal Monaco; &quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;		&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;if(discrete) { res.plotMode = \points };&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;		&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;&lt;br class=&quot;webkit-block-placeholder&quot;&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9px/normal Monaco; &quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;		&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;numChannels !? { array = array.unlace(numChannels) };&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9px/normal Monaco; &quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;		&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;res.value = array;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;		&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;&lt;br class=&quot;webkit-block-placeholder&quot;&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9px/normal Monaco; &quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;		&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;minval !? { res.multiPlot.minval = minval };&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9px/normal Monaco; &quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;		&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;maxval !? { res.multiPlot.maxval = maxval };&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;		&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;&lt;br class=&quot;webkit-block-placeholder&quot;&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9px/normal Monaco; &quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;		&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;^res.front&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9px/normal Monaco; &quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;	&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;}&lt;span class=&quot;Apple-style-span&quot; style=&quot;white-space: pre; &quot;&gt;	&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9px/normal Monaco; &quot;&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;}&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9px/normal Monaco; min-height: 12px; &quot;&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;	&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Times&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px;&quot;&gt;&lt;br class=&quot;webkit-block-placeholder&quot;&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/plotting-behaviour-tp4504548p4540671.html" />
	<thr:in-reply-to ref="tag:n2.nabble.com,2006:post-4540109"/>
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-4540452</id>
	<title>SF.net SVN: quarks:[1372] JITMIDIKtl</title>
	<published>2010-02-09T03:05:19Z</published>
	<updated>2010-02-09T03:05:19Z</updated>
	<author>
		<name>decampo</name>
	</author>
	<content type="html">Revision: 1372
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://quarks.svn.sourceforge.net/quarks/?rev=1372&amp;view=rev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://quarks.svn.sourceforge.net/quarks/?rev=1372&amp;view=rev&lt;/a&gt;&lt;br&gt;Author: &amp;nbsp; decampo
&lt;br&gt;Date: &amp;nbsp; &amp;nbsp; 2010-02-09 11:05:19 +0000 (Tue, 09 Feb 2010)
&lt;br&gt;&lt;br&gt;Log Message:
&lt;br&gt;-----------
&lt;br&gt;added pocketdial class, more cleanups.
&lt;br&gt;&lt;br&gt;Modified Paths:
&lt;br&gt;--------------
&lt;br&gt;&amp;nbsp; &amp;nbsp; JITMIDIKtl/BCRKtl.sc
&lt;br&gt;&amp;nbsp; &amp;nbsp; JITMIDIKtl/FFLV2Ktl.sc
&lt;br&gt;&amp;nbsp; &amp;nbsp; JITMIDIKtl/MIDIKtl.sc
&lt;br&gt;&amp;nbsp; &amp;nbsp; JITMIDIKtl/NanoKtl.html
&lt;br&gt;&amp;nbsp; &amp;nbsp; JITMIDIKtl/NanoKtl.sc
&lt;br&gt;&amp;nbsp; &amp;nbsp; JITMIDIKtl/PFKtl.sc
&lt;br&gt;&lt;br&gt;Added Paths:
&lt;br&gt;-----------
&lt;br&gt;&amp;nbsp; &amp;nbsp; JITMIDIKtl/PDKtl.html
&lt;br&gt;&lt;br&gt;Modified: JITMIDIKtl/BCRKtl.sc
&lt;br&gt;===================================================================
&lt;br&gt;--- JITMIDIKtl/BCRKtl.sc	2010-02-07 20:50:55 UTC (rev 1371)
&lt;br&gt;+++ JITMIDIKtl/BCRKtl.sc	2010-02-09 11:05:19 UTC (rev 1372)
&lt;br&gt;@@ -10,17 +10,6 @@
&lt;br&gt;&amp;nbsp;		this.makeDefaults;
&lt;br&gt;&amp;nbsp;	}
&lt;br&gt;&amp;nbsp;	
&lt;br&gt;-	init {
&lt;br&gt;-		super.init;
&lt;br&gt;-		ctlNames = defaults[this.class];
&lt;br&gt;-		^this
&lt;br&gt;-	}
&lt;br&gt;-
&lt;br&gt;-	mapCC { |ctl= \sl1, action|
&lt;br&gt;-		var ccDictKey = ctlNames[ctl]; // '0_42'
&lt;br&gt;-		ccDict.put(ccDictKey, action);
&lt;br&gt;-	}
&lt;br&gt;-
&lt;br&gt;&amp;nbsp;	mapToPxPars { |proxy ... pairs|
&lt;br&gt;&amp;nbsp;		if (midiOut.notNil) {
&lt;br&gt;&amp;nbsp;			this.sendFromProxy(proxy, pairs);
&lt;br&gt;&lt;br&gt;Modified: JITMIDIKtl/FFLV2Ktl.sc
&lt;br&gt;===================================================================
&lt;br&gt;--- JITMIDIKtl/FFLV2Ktl.sc	2010-02-07 20:50:55 UTC (rev 1371)
&lt;br&gt;+++ JITMIDIKtl/FFLV2Ktl.sc	2010-02-09 11:05:19 UTC (rev 1372)
&lt;br&gt;@@ -6,15 +6,9 @@
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;	init { 
&lt;br&gt;&amp;nbsp;		super.init; 
&lt;br&gt;-		ctlNames = defaults[this.class];
&lt;br&gt;&amp;nbsp;		lastVals = ();
&lt;br&gt;&amp;nbsp;	}
&lt;br&gt;&amp;nbsp;			
&lt;br&gt;-	mapCC { |ctl= \sl1, action| 
&lt;br&gt;-		var ccDictKey = ctlNames[ctl]; // '0_42'
&lt;br&gt;-		ccDict.put(ccDictKey, action);
&lt;br&gt;-	}
&lt;br&gt;-
&lt;br&gt;&amp;nbsp;		// to do: how to map to editor? 
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;		// how to map to proxymixer?
&lt;br&gt;&lt;br&gt;Modified: JITMIDIKtl/MIDIKtl.sc
&lt;br&gt;===================================================================
&lt;br&gt;--- JITMIDIKtl/MIDIKtl.sc	2010-02-07 20:50:55 UTC (rev 1371)
&lt;br&gt;+++ JITMIDIKtl/MIDIKtl.sc	2010-02-09 11:05:19 UTC (rev 1372)
&lt;br&gt;@@ -14,6 +14,8 @@
&lt;br&gt;&amp;nbsp;		// subclasses override this method. 
&lt;br&gt;&amp;nbsp;		// they put their controller keys and chan/ccnum combinations into 
&lt;br&gt;&amp;nbsp;		// defaults[class]
&lt;br&gt;+			// MIDIKtl is empty by default
&lt;br&gt;+		defaults.put(this.class, ());
&lt;br&gt;&amp;nbsp;	}
&lt;br&gt;&amp;nbsp;	
&lt;br&gt;&amp;nbsp;	*new { |srcID, ccDict, noteDict| 
&lt;br&gt;@@ -27,6 +29,8 @@
&lt;br&gt;&amp;nbsp;	}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;	init { 
&lt;br&gt;+		ctlNames = defaults[this.class];
&lt;br&gt;+
&lt;br&gt;&amp;nbsp;		ccDict = ccDict ?? ();
&lt;br&gt;&amp;nbsp;		
&lt;br&gt;&amp;nbsp;		ccresp.remove; 
&lt;br&gt;@@ -49,7 +53,34 @@
&lt;br&gt;&amp;nbsp;	}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;	noteKeyToChanNote { |noteKey| ^noteKey.asString.split($_).asInteger }
&lt;br&gt;+
&lt;br&gt;+		// use when ctlNames is one flat dict
&lt;br&gt;+	mapCC { |ctl= \sl1, action| 
&lt;br&gt;+		var ccDictKey = ctlNames[ctl]; // '0_42'
&lt;br&gt;+		if (ccDictKey.isNil) { 
&lt;br&gt;+			warn(&amp;quot;key % : no chan_ccnum found!\n&amp;quot;.format(ctl));
&lt;br&gt;+			^this
&lt;br&gt;+		}; 
&lt;br&gt;+		ccDict.put(ccDictKey, action);
&lt;br&gt;+	}
&lt;br&gt;&amp;nbsp;	
&lt;br&gt;+		// use when ctlNames are scene-based dicts (NanoKtl, PDKtl)
&lt;br&gt;+	mapCCS { |scene=2, ctl= \sl1, action| 
&lt;br&gt;+		var ccScene, ccDictKey; 
&lt;br&gt;+		
&lt;br&gt;+		ccScene = ctlNames[scene];
&lt;br&gt;+		if (ccScene.isNil) { 
&lt;br&gt;+			warn(&amp;quot;% : mapCCS: scene % : not found!\n&amp;quot;.format(this, scene));
&lt;br&gt;+			^this
&lt;br&gt;+		};
&lt;br&gt;+		ccDictKey = ccScene[ctl]; // '0_42'
&lt;br&gt;+		if (ccDictKey.isNil) { 
&lt;br&gt;+			warn(&amp;quot;key % : no chan_ccnum found!\n&amp;quot;.format(ctl));
&lt;br&gt;+			^nil			
&lt;br&gt;+		};	
&lt;br&gt;+		ccDict.put(ccDictKey, action);
&lt;br&gt;+	}
&lt;br&gt;+	
&lt;br&gt;&amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;MIDINKtl : MIDIKtl { 
&lt;br&gt;@@ -80,6 +111,15 @@
&lt;br&gt;&amp;nbsp;		}, srcID);
&lt;br&gt;&amp;nbsp;	}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;+	mapNoteOn { 
&lt;br&gt;+		
&lt;br&gt;+	}
&lt;br&gt;+	
&lt;br&gt;+	mapNoteOff { 
&lt;br&gt;+		
&lt;br&gt;+	}
&lt;br&gt;+	
&lt;br&gt;+
&lt;br&gt;&amp;nbsp;	free { 
&lt;br&gt;&amp;nbsp;		super.free;
&lt;br&gt;&amp;nbsp;		
&lt;br&gt;&lt;br&gt;Modified: JITMIDIKtl/NanoKtl.html
&lt;br&gt;===================================================================
&lt;br&gt;--- JITMIDIKtl/NanoKtl.html	2010-02-07 20:50:55 UTC (rev 1371)
&lt;br&gt;+++ JITMIDIKtl/NanoKtl.html	2010-02-09 11:05:19 UTC (rev 1372)
&lt;br&gt;@@ -91,8 +91,8 @@
&lt;br&gt;&amp;nbsp;&amp;lt;p class=&amp;quot;p12&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;s3&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;g.ccresp;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;// a midi CCResponder listing to that MIDI port&amp;lt;/p&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;lt;p class=&amp;quot;p8&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;lt;p class=&amp;quot;p12&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;s3&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;// map transport buttons 'play' and 'rec' to simple actions:&amp;lt;span class=&amp;quot;Apple-converted-space&amp;quot;&amp;gt; &amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;
&lt;br&gt;-&amp;lt;p class=&amp;quot;p5&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;g.mapCC(0, &amp;lt;span class=&amp;quot;s9&amp;quot;&amp;gt;'play'&amp;lt;/span&amp;gt;, { &amp;lt;span class=&amp;quot;s8&amp;quot;&amp;gt;|ch, cc, val|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;s6&amp;quot;&amp;gt;&amp;quot; 'play': %.\n&amp;quot;&amp;lt;/span&amp;gt;.postf([ch, cc, val]) });&amp;lt;/p&amp;gt;
&lt;br&gt;-&amp;lt;p class=&amp;quot;p5&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;g.mapCC(0, &amp;lt;span class=&amp;quot;s9&amp;quot;&amp;gt;'rec'&amp;lt;/span&amp;gt;, { &amp;lt;span class=&amp;quot;s8&amp;quot;&amp;gt;|ch, cc, val|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;s6&amp;quot;&amp;gt;&amp;quot; 'rec': %.\n&amp;quot;&amp;lt;/span&amp;gt;.postf([ch, cc, val]) });&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p5&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;g.mapCCS(0, &amp;lt;span class=&amp;quot;s9&amp;quot;&amp;gt;'play'&amp;lt;/span&amp;gt;, { &amp;lt;span class=&amp;quot;s8&amp;quot;&amp;gt;|ch, cc, val|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;s6&amp;quot;&amp;gt;&amp;quot; 'play': %.\n&amp;quot;&amp;lt;/span&amp;gt;.postf([ch, cc, val]) });&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p5&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;g.mapCCS(0, &amp;lt;span class=&amp;quot;s9&amp;quot;&amp;gt;'rec'&amp;lt;/span&amp;gt;, { &amp;lt;span class=&amp;quot;s8&amp;quot;&amp;gt;|ch, cc, val|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;s6&amp;quot;&amp;gt;&amp;quot; 'rec': %.\n&amp;quot;&amp;lt;/span&amp;gt;.postf([ch, cc, val]) });&amp;lt;/p&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;lt;p class=&amp;quot;p12&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;s3&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;// the actions are now in the dict:&amp;lt;/p&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;lt;p class=&amp;quot;p5&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;g.ccDict.postcs;&amp;lt;/p&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;lt;p class=&amp;quot;p8&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;
&lt;br&gt;@@ -120,24 +120,24 @@
&lt;br&gt;&amp;nbsp;&amp;lt;p class=&amp;quot;p15&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;s3&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;g.ctlNames&amp;lt;span class=&amp;quot;s3&amp;quot;&amp;gt;[1]&amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;lt;p class=&amp;quot;p10&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/p&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;lt;p class=&amp;quot;p14&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;s3&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;// add some more mapped actions&amp;lt;/p&amp;gt;
&lt;br&gt;-&amp;lt;p class=&amp;quot;p5&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;g.mapCC(1, &amp;lt;span class=&amp;quot;s10&amp;quot;&amp;gt;'sl1'&amp;lt;/span&amp;gt;, { &amp;lt;span class=&amp;quot;s5&amp;quot;&amp;gt;|ch, cc, val|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;s6&amp;quot;&amp;gt;&amp;quot; scene 1, slider1: %.\n&amp;quot;&amp;lt;/span&amp;gt;.postf([ch, cc, val]) });&amp;lt;/p&amp;gt;
&lt;br&gt;-&amp;lt;p class=&amp;quot;p5&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;g.mapCC(1, &amp;lt;span class=&amp;quot;s10&amp;quot;&amp;gt;'kn2'&amp;lt;/span&amp;gt;, { &amp;lt;span class=&amp;quot;s5&amp;quot;&amp;gt;|ch, cc, val|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;s6&amp;quot;&amp;gt;&amp;quot; scene 1, knob2: %.\n&amp;quot;&amp;lt;/span&amp;gt;.postf([ch, cc, val]) });&amp;lt;/p&amp;gt;
&lt;br&gt;-&amp;lt;p class=&amp;quot;p5&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;g.mapCC(1, &amp;lt;span class=&amp;quot;s10&amp;quot;&amp;gt;'bu3'&amp;lt;/span&amp;gt;, { &amp;lt;span class=&amp;quot;s5&amp;quot;&amp;gt;|ch, cc, val|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;s6&amp;quot;&amp;gt;&amp;quot; scene 1, button up 3: %.\n&amp;quot;&amp;lt;/span&amp;gt;.postf([ch, cc, val]) });&amp;lt;/p&amp;gt;
&lt;br&gt;-&amp;lt;p class=&amp;quot;p5&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;g.mapCC(1, &amp;lt;span class=&amp;quot;s10&amp;quot;&amp;gt;'bd3'&amp;lt;/span&amp;gt;, { &amp;lt;span class=&amp;quot;s5&amp;quot;&amp;gt;|ch, cc, val|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;s6&amp;quot;&amp;gt;&amp;quot; scene 1, button down 3: %.\n&amp;quot;&amp;lt;/span&amp;gt;.postf([ch, cc, val]) });&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p5&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;g.mapCCS(1, &amp;lt;span class=&amp;quot;s10&amp;quot;&amp;gt;'sl1'&amp;lt;/span&amp;gt;, { &amp;lt;span class=&amp;quot;s5&amp;quot;&amp;gt;|ch, cc, val|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;s6&amp;quot;&amp;gt;&amp;quot; scene 1, slider1: %.\n&amp;quot;&amp;lt;/span&amp;gt;.postf([ch, cc, val]) });&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p5&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;g.mapCCS(1, &amp;lt;span class=&amp;quot;s10&amp;quot;&amp;gt;'kn2'&amp;lt;/span&amp;gt;, { &amp;lt;span class=&amp;quot;s5&amp;quot;&amp;gt;|ch, cc, val|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;s6&amp;quot;&amp;gt;&amp;quot; scene 1, knob2: %.\n&amp;quot;&amp;lt;/span&amp;gt;.postf([ch, cc, val]) });&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p5&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;g.mapCCS(1, &amp;lt;span class=&amp;quot;s10&amp;quot;&amp;gt;'bu3'&amp;lt;/span&amp;gt;, { &amp;lt;span class=&amp;quot;s5&amp;quot;&amp;gt;|ch, cc, val|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;s6&amp;quot;&amp;gt;&amp;quot; scene 1, button up 3: %.\n&amp;quot;&amp;lt;/span&amp;gt;.postf([ch, cc, val]) });&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p5&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;g.mapCCS(1, &amp;lt;span class=&amp;quot;s10&amp;quot;&amp;gt;'bd3'&amp;lt;/span&amp;gt;, { &amp;lt;span class=&amp;quot;s5&amp;quot;&amp;gt;|ch, cc, val|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;s6&amp;quot;&amp;gt;&amp;quot; scene 1, button down 3: %.\n&amp;quot;&amp;lt;/span&amp;gt;.postf([ch, cc, val]) });&amp;lt;/p&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;lt;p class=&amp;quot;p8&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/p&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;lt;p class=&amp;quot;p5&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;g.ccDict;&amp;lt;/p&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;lt;p class=&amp;quot;p2&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/p&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;lt;p class=&amp;quot;p13&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Instance Methods&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;lt;p class=&amp;quot;p10&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;
&lt;br&gt;-&amp;lt;p class=&amp;quot;p9&amp;quot;&amp;gt;&amp;lt;b&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;mapCC (editor, scene)&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p9&amp;quot;&amp;gt;&amp;lt;b&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;mapCCS (editor, scene)&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;lt;p class=&amp;quot;p10&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/p&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;lt;p class=&amp;quot;p9&amp;quot;&amp;gt;&amp;lt;b&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;map one of the controls in a scene to a general function.&amp;lt;/p&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;lt;p class=&amp;quot;p10&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/p&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;lt;p class=&amp;quot;p5&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;g = &amp;lt;span class=&amp;quot;s5&amp;quot;&amp;gt;NanoKtl&amp;lt;/span&amp;gt;.new;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;// listen to all midi in ports&amp;lt;/p&amp;gt;
&lt;br&gt;-&amp;lt;p class=&amp;quot;p5&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;g.mapCC(1, &amp;lt;span class=&amp;quot;s11&amp;quot;&amp;gt;'sl1'&amp;lt;/span&amp;gt;, { &amp;lt;span class=&amp;quot;s5&amp;quot;&amp;gt;|ch, cc, val|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;s6&amp;quot;&amp;gt;&amp;quot; scene 1, slider1: %.\n&amp;quot;&amp;lt;/span&amp;gt;.postf([ch, cc, val]) });&amp;lt;/p&amp;gt;
&lt;br&gt;-&amp;lt;p class=&amp;quot;p5&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;g.mapCC(1, &amp;lt;span class=&amp;quot;s11&amp;quot;&amp;gt;'kn2'&amp;lt;/span&amp;gt;, { &amp;lt;span class=&amp;quot;s5&amp;quot;&amp;gt;|ch, cc, val|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;s6&amp;quot;&amp;gt;&amp;quot; scene 1, knob2: %.\n&amp;quot;&amp;lt;/span&amp;gt;.postf([ch, cc, val]) });&amp;lt;/p&amp;gt;
&lt;br&gt;-&amp;lt;p class=&amp;quot;p5&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;g.mapCC(1, &amp;lt;span class=&amp;quot;s11&amp;quot;&amp;gt;'bu3'&amp;lt;/span&amp;gt;, { &amp;lt;span class=&amp;quot;s5&amp;quot;&amp;gt;|ch, cc, val|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;s6&amp;quot;&amp;gt;&amp;quot; scene 1, button up 3: %.\n&amp;quot;&amp;lt;/span&amp;gt;.postf([ch, cc, val]) });&amp;lt;/p&amp;gt;
&lt;br&gt;-&amp;lt;p class=&amp;quot;p5&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;g.mapCC(1, &amp;lt;span class=&amp;quot;s11&amp;quot;&amp;gt;'bd3'&amp;lt;/span&amp;gt;, { &amp;lt;span class=&amp;quot;s5&amp;quot;&amp;gt;|ch, cc, val|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;s6&amp;quot;&amp;gt;&amp;quot; scene 1, button down 3: %.\n&amp;quot;&amp;lt;/span&amp;gt;.postf([ch, cc, val]) });&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p5&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;g.mapCCS(1, &amp;lt;span class=&amp;quot;s11&amp;quot;&amp;gt;'sl1'&amp;lt;/span&amp;gt;, { &amp;lt;span class=&amp;quot;s5&amp;quot;&amp;gt;|ch, cc, val|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;s6&amp;quot;&amp;gt;&amp;quot; scene 1, slider1: %.\n&amp;quot;&amp;lt;/span&amp;gt;.postf([ch, cc, val]) });&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p5&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;g.mapCCS(1, &amp;lt;span class=&amp;quot;s11&amp;quot;&amp;gt;'kn2'&amp;lt;/span&amp;gt;, { &amp;lt;span class=&amp;quot;s5&amp;quot;&amp;gt;|ch, cc, val|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;s6&amp;quot;&amp;gt;&amp;quot; scene 1, knob2: %.\n&amp;quot;&amp;lt;/span&amp;gt;.postf([ch, cc, val]) });&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p5&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;g.mapCCS(1, &amp;lt;span class=&amp;quot;s11&amp;quot;&amp;gt;'bu3'&amp;lt;/span&amp;gt;, { &amp;lt;span class=&amp;quot;s5&amp;quot;&amp;gt;|ch, cc, val|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;s6&amp;quot;&amp;gt;&amp;quot; scene 1, button up 3: %.\n&amp;quot;&amp;lt;/span&amp;gt;.postf([ch, cc, val]) });&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p5&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;g.mapCCS(1, &amp;lt;span class=&amp;quot;s11&amp;quot;&amp;gt;'bd3'&amp;lt;/span&amp;gt;, { &amp;lt;span class=&amp;quot;s5&amp;quot;&amp;gt;|ch, cc, val|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;s6&amp;quot;&amp;gt;&amp;quot; scene 1, button down 3: %.\n&amp;quot;&amp;lt;/span&amp;gt;.postf([ch, cc, val]) });&amp;lt;/p&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;lt;p class=&amp;quot;p5&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;g.ccDict;&amp;lt;/p&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;lt;p class=&amp;quot;p10&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/p&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;lt;p class=&amp;quot;p9&amp;quot;&amp;gt;&amp;lt;b&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;mapToPxEdit (editor, scene)&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;
&lt;br&gt;&lt;br&gt;Modified: JITMIDIKtl/NanoKtl.sc
&lt;br&gt;===================================================================
&lt;br&gt;--- JITMIDIKtl/NanoKtl.sc	2010-02-07 20:50:55 UTC (rev 1371)
&lt;br&gt;+++ JITMIDIKtl/NanoKtl.sc	2010-02-09 11:05:19 UTC (rev 1372)
&lt;br&gt;@@ -29,11 +29,6 @@
&lt;br&gt;&amp;nbsp;		
&lt;br&gt;&amp;nbsp;		^this
&lt;br&gt;&amp;nbsp;	}
&lt;br&gt;-
&lt;br&gt;-	mapCC { |scene=2, ctl= \sl1, action| 
&lt;br&gt;-		var ccDictKey = ctlNames[scene][ctl]; // '0_42'
&lt;br&gt;-		ccDict.put(ccDictKey, action);
&lt;br&gt;-	}
&lt;br&gt;&amp;nbsp;		
&lt;br&gt;&amp;nbsp;	mapToPxEdit { |editor, scene=1, volPause = true| 
&lt;br&gt;&amp;nbsp;		pxEditors.put(scene, editor);
&lt;br&gt;@@ -41,7 +36,7 @@
&lt;br&gt;&amp;nbsp;			// map 8 knobs to params - can be shifted
&lt;br&gt;&amp;nbsp;		 [\kn1, \kn2, \kn3, \kn4, \kn5, \kn6, \kn7, \kn8].do { |key, i| 
&lt;br&gt;&amp;nbsp;		 	
&lt;br&gt;-			this.mapCC(scene, key, 
&lt;br&gt;+			this.mapCCS(scene, key, 
&lt;br&gt;&amp;nbsp;				{ |ch, cc, val| 
&lt;br&gt;&amp;nbsp;					var proxy = pxEditors[scene].proxy;
&lt;br&gt;&amp;nbsp;					var parKey = &amp;nbsp;pxEditors[scene].editKeys[i + parOffsets[scene]];
&lt;br&gt;@@ -55,7 +50,7 @@
&lt;br&gt;&amp;nbsp;			)
&lt;br&gt;&amp;nbsp;		};
&lt;br&gt;&amp;nbsp;			// and use 9th knob for proxy volume 
&lt;br&gt;-		this.mapCC(scene, \kn9, { |ch, cc, val| 
&lt;br&gt;+		this.mapCCS(scene, \kn9, { |ch, cc, val| 
&lt;br&gt;&amp;nbsp;			var lastVal = lastVals[\kn9];
&lt;br&gt;&amp;nbsp;			var mappedVol = \amp.asSpec.map(val / 127);
&lt;br&gt;&amp;nbsp;			var proxy = pxEditors[scene].proxy;
&lt;br&gt;@@ -71,7 +66,7 @@
&lt;br&gt;&amp;nbsp;		pairs.do { |pair| 
&lt;br&gt;&amp;nbsp;			var ctlName, paramName; 
&lt;br&gt;&amp;nbsp;			#ctlName, paramName = pair;
&lt;br&gt;-			this.mapCC(scene, ctlName, 
&lt;br&gt;+			this.mapCCS(scene, ctlName, 
&lt;br&gt;&amp;nbsp;				{ &amp;nbsp;|ch, cc, midival| 
&lt;br&gt;&amp;nbsp;					proxy.set(paramName, paramName.asSpec.map(midival / 127))
&lt;br&gt;&amp;nbsp;				}
&lt;br&gt;@@ -92,13 +87,13 @@
&lt;br&gt;&amp;nbsp;		mastaFunc = { |chan, cc, val| server.volume.volume_(\mastaVol.asSpec.map(val/127)) };
&lt;br&gt;&amp;nbsp;		
&lt;br&gt;&amp;nbsp;			Spec.add(\mastaVol, [server.volume.min, server.volume.max, \db]);
&lt;br&gt;-			(1..4).do { |scene| this.mapCC(scene, \sl9, mastaFunc) };
&lt;br&gt;+			(1..4).do { |scene| this.mapCCS(scene, \sl9, mastaFunc) };
&lt;br&gt;&amp;nbsp;			
&lt;br&gt;&amp;nbsp;			// scene 1: 
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;			// map first 8 volumes to sliders
&lt;br&gt;&amp;nbsp;		[\sl1, \sl2, \sl3, \sl4, \sl5, \sl6, \sl7, \sl8].do { |key, i| 
&lt;br&gt;-			this.mapCC(scene, key, 
&lt;br&gt;+			this.mapCCS(scene, key, 
&lt;br&gt;&amp;nbsp;				{ |ch, cc, val| 
&lt;br&gt;&amp;nbsp;					var lastVal = lastVals[key]; 
&lt;br&gt;&amp;nbsp;					var mappedVal = \amp.asSpec.map(val / 127); 
&lt;br&gt;@@ -116,13 +111,13 @@
&lt;br&gt;&amp;nbsp;		};
&lt;br&gt;&amp;nbsp;			// upper buttons: send to editor
&lt;br&gt;&amp;nbsp;		[\bu1, \bu2, \bu3, \bu4, \bu5, \bu6, \bu7, \bu8].do { |key, i| 
&lt;br&gt;-			this.mapCC(scene, key, 
&lt;br&gt;+			this.mapCCS(scene, key, 
&lt;br&gt;&amp;nbsp;				{ |ch, cc, val| defer { pxmixers[scene].editBtnsAr[i + pxOffsets[scene]].doAction }; })
&lt;br&gt;&amp;nbsp;		};
&lt;br&gt;&amp;nbsp;		
&lt;br&gt;&amp;nbsp;			// lower buttons: toggle play/stop 
&lt;br&gt;&amp;nbsp;		 [\bd1, \bd2, \bd3, \bd4, \bd5, \bd6, \bd7, \bd8].do { |key, i| 
&lt;br&gt;-			this.mapCC(scene, key, 
&lt;br&gt;+			this.mapCCS(scene, key, 
&lt;br&gt;&amp;nbsp;				{ |ch, cc, val| defer { 
&lt;br&gt;&amp;nbsp;					var px = pxmixers[scene].pxMons[i + pxOffsets[scene]].proxy;
&lt;br&gt;&amp;nbsp;					if ( ctlNames[scene]['mode'] == 'push' ){
&lt;br&gt;@@ -138,8 +133,8 @@
&lt;br&gt;&amp;nbsp;				}; )
&lt;br&gt;&amp;nbsp;		};
&lt;br&gt;&amp;nbsp;
&lt;br&gt;-		this.mapCC(scene, \bu9, { |src, chan, val| if (val &amp;gt; 0) { this.pxShift(1, scene) } });
&lt;br&gt;-		this.mapCC(scene, \bd9, { |src, chan, val| if (val &amp;gt; 0) { this.paramShift(1, scene) } });
&lt;br&gt;+		this.mapCCS(scene, \bu9, { |src, chan, val| if (val &amp;gt; 0) { this.pxShift(1, scene) } });
&lt;br&gt;+		this.mapCCS(scene, \bd9, { |src, chan, val| if (val &amp;gt; 0) { this.paramShift(1, scene) } });
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;		this.pxShift(0, scene);		
&lt;br&gt;&amp;nbsp;		this.mapToPxEdit(mixer.editor, scene);
&lt;br&gt;Added: JITMIDIKtl/PDKtl.html
&lt;br&gt;===================================================================
&lt;br&gt;--- JITMIDIKtl/PDKtl.html	 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(rev 0)
&lt;br&gt;+++ JITMIDIKtl/PDKtl.html	2010-02-09 11:05:19 UTC (rev 1372)
&lt;br&gt;@@ -0,0 +1,127 @@
&lt;br&gt;+&amp;lt;!DOCTYPE html PUBLIC &amp;quot;-//W3C//DTD HTML 4.01//EN&amp;quot; &amp;quot;&lt;a href=&quot;http://www.w3.org/TR/html4/strict.dtd&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.w3.org/TR/html4/strict.dtd&lt;/a&gt;&amp;quot;&amp;gt;
&lt;br&gt;+&amp;lt;html&amp;gt;
&lt;br&gt;+&amp;lt;head&amp;gt;
&lt;br&gt;+&amp;lt;meta http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=UTF-8&amp;quot;&amp;gt;
&lt;br&gt;+&amp;lt;meta http-equiv=&amp;quot;Content-Style-Type&amp;quot; content=&amp;quot;text/css&amp;quot;&amp;gt;
&lt;br&gt;+&amp;lt;title&amp;gt;&amp;lt;/title&amp;gt;
&lt;br&gt;+&amp;lt;meta name=&amp;quot;Generator&amp;quot; content=&amp;quot;Cocoa HTML Writer&amp;quot;&amp;gt;
&lt;br&gt;+&amp;lt;meta name=&amp;quot;CocoaVersion&amp;quot; content=&amp;quot;1038.25&amp;quot;&amp;gt;
&lt;br&gt;+&amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;
&lt;br&gt;+p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
&lt;br&gt;+p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
&lt;br&gt;+p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
&lt;br&gt;+p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
&lt;br&gt;+p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #cd0b0b}
&lt;br&gt;+p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #2024c7}
&lt;br&gt;+p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #737373}
&lt;br&gt;+p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #2b30fa; min-height: 14.0px}
&lt;br&gt;+p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
&lt;br&gt;+span.s1 {font: 18.0px Helvetica}
&lt;br&gt;+span.s2 {font: 9.0px Monaco}
&lt;br&gt;+span.s3 {font: 12.0px Helvetica; color: #2b30fa}
&lt;br&gt;+span.s4 {color: #0000ee}
&lt;br&gt;+span.s5 {color: #2b30fa}
&lt;br&gt;+span.s6 {text-decoration: underline ; color: #2b30fa}
&lt;br&gt;+span.s7 {color: #000000}
&lt;br&gt;+span.s8 {color: #008417}
&lt;br&gt;+span.s9 {color: #737373}
&lt;br&gt;+span.s10 {color: #2024c7}
&lt;br&gt;+span.s11 {color: #1d20b9}
&lt;br&gt;+span.s12 {color: #606060}
&lt;br&gt;+span.s13 {color: #ad140d}
&lt;br&gt;+span.Apple-tab-span {white-space:pre}
&lt;br&gt;+&amp;lt;/style&amp;gt;
&lt;br&gt;+&amp;lt;/head&amp;gt;
&lt;br&gt;+&amp;lt;body&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p1&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;s1&amp;quot;&amp;gt;&amp;lt;b&amp;gt;PDKtl&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;s2&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;b&amp;gt;a MIDIKtl class for the Doepfer PocketDial&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p2&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p1&amp;quot;&amp;gt;The Doepfer PocketDial only has 16 endless knobs, so PDKtl is a rather simple class.&amp;lt;span class=&amp;quot;Apple-converted-space&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p2&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p3&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p1&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;s2&amp;quot;&amp;gt;see also&amp;lt;span class=&amp;quot;Apple-converted-space&amp;quot;&amp;gt;  &amp;lt;/span&amp;gt;&amp;lt;a href=&amp;quot;PFKtl.html&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;s3&amp;quot;&amp;gt;&amp;lt;b&amp;gt;PFKtl&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;b&amp;gt;, &amp;lt;/b&amp;gt;&amp;lt;a href=&amp;quot;MIDIKtl.html&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;s4&amp;quot;&amp;gt;&amp;lt;b&amp;gt;MIDIKtl&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;span class=&amp;quot;s5&amp;quot;&amp;gt;&amp;lt;b&amp;gt;, &amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;s6&amp;quot;&amp;gt;&amp;lt;b&amp;gt;NanoKtl&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p3&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p1&amp;quot;&amp;gt;&amp;lt;b&amp;gt;first example&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p2&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p4&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;// make a new PDKtl&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p4&amp;quot;&amp;gt;f = PDKtl.new;&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p3&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p5&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;s7&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;// map a single slider's action&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p6&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;s7&amp;quot;&amp;gt;f.mapCC(&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;s8&amp;quot;&amp;gt;\kn01&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;s7&amp;quot;&amp;gt;, { &amp;lt;/span&amp;gt;|chan, ccnum, val|&amp;lt;span class=&amp;quot;s7&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;Apple-converted-space&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p4&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;var normstep = 0.01;&amp;lt;span class=&amp;quot;Apple-converted-space&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p4&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;var midiNudge = 64 - val;&amp;lt;span class=&amp;quot;Apple-converted-space&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p4&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;var normedNudge = midiNudge * normstep;&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p7&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;s7&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;quot;PDKtl test: ch % cc % val % - midinudge: % normedNudge: % \n&amp;quot;&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p4&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;s9&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;.postf(chan, ccnum, val, midiNudge, normedNudge);&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p4&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;quot;map here with a spec...&amp;quot;&amp;lt;span class=&amp;quot;Apple-converted-space&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p4&amp;quot;&amp;gt;});&amp;lt;span class=&amp;quot;Apple-converted-space&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p3&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p4&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;// fails if no midi info for that key&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p4&amp;quot;&amp;gt;f.mapCC(&amp;lt;span class=&amp;quot;s8&amp;quot;&amp;gt;\wrongKey&amp;lt;/span&amp;gt;, { &amp;lt;span class=&amp;quot;s10&amp;quot;&amp;gt;|chan, ccnum, val|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;s9&amp;quot;&amp;gt;&amp;quot;PDKtl test: ch % cc % val %\n&amp;quot;&amp;lt;/span&amp;gt;.postf(chan, ccnum, val) });&amp;lt;span class=&amp;quot;Apple-converted-space&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p3&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p3&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p1&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Class Variables&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p1&amp;quot;&amp;gt;&amp;lt;b&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;*verbose &amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;// a flag whether the class posts extended info &amp;lt;span class=&amp;quot;Apple-converted-space&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p2&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p1&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;PDKtl.verbose = true;&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p1&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;PDKtl.verbose = false;&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p3&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p1&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Instance Variables&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p8&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p1&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Methods&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p8&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p1&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;s5&amp;quot;&amp;gt;&amp;lt;b&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;b&amp;gt;*new(uid)&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;make a new PDKtl. uid is an optional ID for the MIDI port to listen to.&amp;lt;span class=&amp;quot;Apple-converted-space&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p2&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p4&amp;quot;&amp;gt;f = PDKtl.new;&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p3&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p1&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;s2&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;b&amp;gt;mapCCS(scene, ctl, action)&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p3&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p5&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;s7&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;// map a single knob's action&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p4&amp;quot;&amp;gt;f.mapCCS(1, &amp;lt;span class=&amp;quot;s8&amp;quot;&amp;gt;\kn01&amp;lt;/span&amp;gt;, { &amp;lt;span class=&amp;quot;s10&amp;quot;&amp;gt;|chan, ccnum, val|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;s9&amp;quot;&amp;gt;&amp;quot;PDKtl test: ch % cc % val %\n&amp;quot;&amp;lt;/span&amp;gt;.postf(chan, ccnum, val) });&amp;lt;span class=&amp;quot;Apple-converted-space&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p3&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p4&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;// the valid names are:&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p4&amp;quot;&amp;gt;f.ctlNames[1].keys.asArray.sort;&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p3&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p3&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p1&amp;quot;&amp;gt;&amp;lt;b&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;mapToPxEdit(editor, indices, lastIsVol) &amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;- map to a NodeProxyEditor.&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p1&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;b&amp;gt;editor&amp;lt;/b&amp;gt; &amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;the editor&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p1&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;b&amp;gt;indices&amp;lt;/b&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;which sliders to map to. default is [1, 2 .. 8].&amp;lt;span class=&amp;quot;Apple-converted-space&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p1&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;b&amp;gt;lastIsVol&amp;lt;/b&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;flag whether the last slider becomes a volume control for that editor.&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p3&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p3&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p5&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;s7&amp;quot;&amp;gt;(&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;// make an Ndef and its editor first&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p4&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;s10&amp;quot;&amp;gt;Spec&amp;lt;/span&amp;gt;.add(&amp;lt;span class=&amp;quot;s8&amp;quot;&amp;gt;\harm&amp;lt;/span&amp;gt;, [2, 200, &amp;lt;span class=&amp;quot;s8&amp;quot;&amp;gt;\exp&amp;lt;/span&amp;gt;]);&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p6&amp;quot;&amp;gt;Ndef&amp;lt;span class=&amp;quot;s7&amp;quot;&amp;gt;(&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;s8&amp;quot;&amp;gt;\a&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;s7&amp;quot;&amp;gt;, { &amp;lt;/span&amp;gt;|freq = 20, harm = 20|&amp;lt;span class=&amp;quot;s7&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;Blip&amp;lt;span class=&amp;quot;s7&amp;quot;&amp;gt;.ar(freq, harm) });&amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p6&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;s7&amp;quot;&amp;gt;o = &amp;lt;/span&amp;gt;NodeProxyEditor&amp;lt;span class=&amp;quot;s7&amp;quot;&amp;gt;(&amp;lt;/span&amp;gt;Ndef&amp;lt;span class=&amp;quot;s7&amp;quot;&amp;gt;(&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;s8&amp;quot;&amp;gt;\a&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;s7&amp;quot;&amp;gt;));&amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p3&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p4&amp;quot;&amp;gt;f.mapToPxEdit(o, 1);&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p4&amp;quot;&amp;gt;)&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p3&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p1&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;s2&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;b&amp;gt;mapToPxMix(mixer, splitIndex, lastEdIsVol, lastIsMaster)&amp;lt;/b&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;map to a proxymixer.&amp;lt;span class=&amp;quot;Apple-converted-space&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p2&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p1&amp;quot;&amp;gt;&amp;lt;b&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;mixer &amp;lt;/b&amp;gt;is the mixer to map to.&amp;lt;span class=&amp;quot;Apple-converted-space&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p1&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;the left hand sliders (sliders 1 to splitIndex) are mapped to volumes;&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p1&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;the right hand sliders&amp;lt;span class=&amp;quot;Apple-converted-space&amp;quot;&amp;gt;  &amp;lt;/span&amp;gt;map to the mixer.editor parameters.&amp;lt;span class=&amp;quot;Apple-converted-space&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p1&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;b&amp;gt;lastIsMaster: &amp;lt;/b&amp;gt;if true, the rightmost control maps to server volume.&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p1&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;b&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;lastEdIsVol: &amp;lt;/b&amp;gt;if true, the last free slider on the right side is used for&amp;lt;span class=&amp;quot;Apple-converted-space&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p1&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;the edited proxy's volume.&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p1&amp;quot;&amp;gt;&amp;lt;b&amp;gt;(&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p6&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;s7&amp;quot;&amp;gt;m = &amp;lt;/span&amp;gt;NdefMixer&amp;lt;span class=&amp;quot;s7&amp;quot;&amp;gt;();&amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p4&amp;quot;&amp;gt;f.mapToPxMix(m, 1);&amp;lt;span class=&amp;quot;Apple-converted-space&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p4&amp;quot;&amp;gt;m.openEditZone;&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p4&amp;quot;&amp;gt;m.editor.proxy_(&amp;lt;span class=&amp;quot;s10&amp;quot;&amp;gt;Ndef&amp;lt;/span&amp;gt;(&amp;lt;span class=&amp;quot;s8&amp;quot;&amp;gt;\a&amp;lt;/span&amp;gt;));&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p4&amp;quot;&amp;gt;)&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p3&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p3&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p9&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;s7&amp;quot;&amp;gt;(&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;// test many proxies&amp;lt;span class=&amp;quot;Apple-converted-space&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p9&amp;quot;&amp;gt;Spec.add(\freqScale, [0.1, 10, \exp]);&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p9&amp;quot;&amp;gt;Spec.add(\rateScale, [0.1, 10, \exp]);&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p4&amp;quot;&amp;gt;10.do { &amp;lt;span class=&amp;quot;s11&amp;quot;&amp;gt;|i|&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;Apple-converted-space&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p4&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;Ndef((&amp;lt;span class=&amp;quot;s12&amp;quot;&amp;gt;&amp;quot;test&amp;quot;&amp;lt;/span&amp;gt; ++ i).asSymbol, { |&amp;lt;span class=&amp;quot;s13&amp;quot;&amp;gt;rateScale&amp;lt;/span&amp;gt; = 1, freqScale = 1|&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p4&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;s11&amp;quot;&amp;gt;Pan2&amp;lt;/span&amp;gt;.ar(&amp;lt;span class=&amp;quot;s11&amp;quot;&amp;gt;Ringz&amp;lt;/span&amp;gt;.ar(&amp;lt;span class=&amp;quot;s11&amp;quot;&amp;gt;Impulse&amp;lt;/span&amp;gt;.ar(exprand(0.5, 4) * &amp;lt;span class=&amp;quot;s13&amp;quot;&amp;gt;rateScale&amp;lt;/span&amp;gt;), exprand(300, 3000) * freqScale, 0.02), 1.0.rand2, 0.2)&amp;lt;span class=&amp;quot;Apple-converted-space&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p4&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;}).play(vol: 0.2)&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p4&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;;&amp;lt;span class=&amp;quot;Apple-converted-space&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p4&amp;quot;&amp;gt;};&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p4&amp;quot;&amp;gt;)&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;p class=&amp;quot;p3&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/p&amp;gt;
&lt;br&gt;+&amp;lt;/body&amp;gt;
&lt;br&gt;+&amp;lt;/html&amp;gt;
&lt;br&gt;&lt;br&gt;Modified: JITMIDIKtl/PFKtl.sc
&lt;br&gt;===================================================================
&lt;br&gt;--- JITMIDIKtl/PFKtl.sc	2010-02-07 20:50:55 UTC (rev 1371)
&lt;br&gt;+++ JITMIDIKtl/PFKtl.sc	2010-02-09 11:05:19 UTC (rev 1372)
&lt;br&gt;@@ -4,7 +4,6 @@
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;	init { 
&lt;br&gt;&amp;nbsp;		super.init;
&lt;br&gt;-		ctlNames = defaults[this.class];
&lt;br&gt;&amp;nbsp;		lastVals = ();
&lt;br&gt;&amp;nbsp;	}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -32,16 +31,7 @@
&lt;br&gt;&amp;nbsp;			)
&lt;br&gt;&amp;nbsp;		);
&lt;br&gt;&amp;nbsp;	}
&lt;br&gt;-	
&lt;br&gt;-	mapCC { |ctl= \sl1, action| 
&lt;br&gt;-		var ccDictKey = ctlNames[ctl]; // '0_42'
&lt;br&gt;-		if (ccDictKey.isNil) { 
&lt;br&gt;-			warn(&amp;quot;key % : no chan_ccnum found!\n&amp;quot;.format(ctl));
&lt;br&gt;-		} { 
&lt;br&gt;-			ccDict.put(ccDictKey, action);
&lt;br&gt;-		}
&lt;br&gt;-	}
&lt;br&gt;-		// map to 
&lt;br&gt;+			// map to 
&lt;br&gt;&amp;nbsp;	mapToPxEdit { |editor, indices, lastIsVol = true| 
&lt;br&gt;&amp;nbsp;		var slKeys, lastSlKey; 
&lt;br&gt;&amp;nbsp;		indices = indices ? (1..8); 
&lt;br&gt;@@ -110,3 +100,158 @@
&lt;br&gt;&amp;nbsp;		this.mapToPxEdit(mixer.editor, (splitIndex + 1 .. slKeys.size));
&lt;br&gt;&amp;nbsp;	}
&lt;br&gt;&amp;nbsp;}
&lt;br&gt;+
&lt;br&gt;+PDKtl : MIDIKtl {
&lt;br&gt;+	classvar &amp;lt;&amp;gt;verbose = false; 
&lt;br&gt;+
&lt;br&gt;+	var &amp;lt;&amp;gt;step = 0.01; 
&lt;br&gt;+	
&lt;br&gt;+	*makeDefaults { 
&lt;br&gt;+
&lt;br&gt;+		// implement nudge! 
&lt;br&gt;+	/*	all midi chan 0, 
&lt;br&gt;+	scene 1: 0 - 15
&lt;br&gt;+	scene2: 	16 - 31
&lt;br&gt;+	scene 3: 32 - 47
&lt;br&gt;+	scene4: 48 - 63
&lt;br&gt;+	*/
&lt;br&gt;+
&lt;br&gt;+		// just one bank of sliders
&lt;br&gt;+		defaults.put(this, (
&lt;br&gt;+			1: 	(	kn01: '0_0', 
&lt;br&gt;+					kn02: '0_1', 
&lt;br&gt;+					kn03: '0_2', 
&lt;br&gt;+					kn04: '0_3', 
&lt;br&gt;+					kn05: '0_4', 
&lt;br&gt;+					kn06: '0_5', 
&lt;br&gt;+					kn07: '0_6', 
&lt;br&gt;+					kn08: '0_7', 
&lt;br&gt;+					kn09: '0_8', 
&lt;br&gt;+					kn10: '0_9', 
&lt;br&gt;+					kn11: '0_10', 
&lt;br&gt;+					kn12: '0_11', 
&lt;br&gt;+					kn13: '0_12', 
&lt;br&gt;+					kn14: '0_13', 
&lt;br&gt;+					kn15: '0_14',
&lt;br&gt;+					kn16: '0_15'
&lt;br&gt;+			),
&lt;br&gt;+
&lt;br&gt;+			2: 	(	kn01: '0_16', 
&lt;br&gt;+					kn02: '0_17', 
&lt;br&gt;+					kn03: '0_18', 
&lt;br&gt;+					kn04: '0_19', 
&lt;br&gt;+					kn05: '0_20', 
&lt;br&gt;+					kn06: '0_21', 
&lt;br&gt;+					kn07: '0_22', 
&lt;br&gt;+					kn08: '0_23', 
&lt;br&gt;+					kn09: '0_24', 
&lt;br&gt;+					kn10: '0_25', 
&lt;br&gt;+					kn11: '0_26', 
&lt;br&gt;+					kn12: '0_27', 
&lt;br&gt;+					kn13: '0_28', 
&lt;br&gt;+					kn14: '0_29', 
&lt;br&gt;+					kn15: '0_30',
&lt;br&gt;+					kn16: '0_31'
&lt;br&gt;+			),
&lt;br&gt;+
&lt;br&gt;+			3: 	(	kn01: '0_32', 
&lt;br&gt;+					kn02: '0_33', 
&lt;br&gt;+					kn03: '0_34', 
&lt;br&gt;+					kn04: '0_35', 
&lt;br&gt;+					kn05: '0_36', 
&lt;br&gt;+					kn06: '0_37', 
&lt;br&gt;+					kn07: '0_38', 
&lt;br&gt;+					kn08: '0_39', 
&lt;br&gt;+					kn09: '0_40', 
&lt;br&gt;+					kn10: '0_41', 
&lt;br&gt;+					kn11: '0_42', 
&lt;br&gt;+					kn12: '0_43', 
&lt;br&gt;+					kn13: '0_44', 
&lt;br&gt;+					kn14: '0_45', 
&lt;br&gt;+					kn15: '0_46',
&lt;br&gt;+					kn16: '0_47'
&lt;br&gt;+			),
&lt;br&gt;+
&lt;br&gt;+			4: 	(	kn01: '0_48', 
&lt;br&gt;+					kn02: '0_49', 
&lt;br&gt;+					kn03: '0_50', 
&lt;br&gt;+					kn04: '0_51', 
&lt;br&gt;+					kn05: '0_52', 
&lt;br&gt;+					kn06: '0_53', 
&lt;br&gt;+					kn07: '0_54', 
&lt;br&gt;+					kn08: '0_55', 
&lt;br&gt;+					kn09: '0_56', 
&lt;br&gt;+					kn10: '0_57', 
&lt;br&gt;+					kn11: '0_58', 
&lt;br&gt;+					kn12: '0_59', 
&lt;br&gt;+					kn13: '0_60', 
&lt;br&gt;+					kn14: '0_61', 
&lt;br&gt;+					kn15: '0_62',
&lt;br&gt;+					kn16: '0_63'
&lt;br&gt;+			)
&lt;br&gt;+		));
&lt;br&gt;+	}
&lt;br&gt;+	
&lt;br&gt;+		// map to 
&lt;br&gt;+	mapToPxEdit { |editor, scene = 1, indices, lastIsVol = true| 
&lt;br&gt;+		var knobKeys, lastKnobKey; 
&lt;br&gt;+		indices = indices ? (1..8); 
&lt;br&gt;+		
&lt;br&gt;+		knobKeys = indices.collect { |i| (&amp;quot;kn&amp;quot; ++ (100 + i).asString.drop(1)).asSymbol}.postcs; 
&lt;br&gt;+		
&lt;br&gt;+		if (lastIsVol) { 
&lt;br&gt;+			lastKnobKey = knobKeys.pop;
&lt;br&gt;+			
&lt;br&gt;+				// use last knob for proxy volume
&lt;br&gt;+			this.mapCCS(scene, lastKnobKey, { |ch, cc, val| 
&lt;br&gt;+				var proxy = editor.proxy;
&lt;br&gt;+				if (proxy.notNil) { proxy.nudgeVol(val - 64 * step) };
&lt;br&gt;+			});
&lt;br&gt;+		};
&lt;br&gt;+		
&lt;br&gt;+		knobKeys.do { |key, i| &amp;nbsp;	
&lt;br&gt;+			this.mapCCS(scene, key, 
&lt;br&gt;+				{ |ch, cc, val| 
&lt;br&gt;+					var proxy = editor.proxy;
&lt;br&gt;+					var parKey = &amp;nbsp;editor.editKeys[i];
&lt;br&gt;+					if (parKey.notNil and: proxy.notNil) { 
&lt;br&gt;+						proxy.nudge(parKey, val - 64 * step) 
&lt;br&gt;+					};
&lt;br&gt;+				}
&lt;br&gt;+			)
&lt;br&gt;+		};
&lt;br&gt;+	}
&lt;br&gt;+	
&lt;br&gt;+	mapToPxMix { |mixer, scene = 1, splitIndex = 8, lastEdIsVol = true, lastIsMaster = true| 
&lt;br&gt;+ 	
&lt;br&gt;+		var server = mixer.proxyspace.server;
&lt;br&gt;+		var knobKeys = (1..16).collect { |i| (&amp;quot;kn&amp;quot; ++ (100 + i).asString.drop(1)).asSymbol }; 
&lt;br&gt;+		var lastKey; 
&lt;br&gt;+		
&lt;br&gt;+				// add master volume on knob 16
&lt;br&gt;+		if (lastIsMaster) { 
&lt;br&gt;+			lastKey = knobKeys.pop; 
&lt;br&gt;+			Spec.add(\mastaVol, [server.volume.min, server.volume.max, \db]);
&lt;br&gt;+			this.mapCCS(scene, lastKey, { |chan, cc, val| 
&lt;br&gt;+				var oldNormVal = \mastaVol.asSpec.unmap(server.volume.volume).postln;
&lt;br&gt;+				var nudgedVol = (oldNormVal + (64 - val * step)).clip(0, 1);
&lt;br&gt;+				server.volume.volume_(nudgedVol.ampdb) 
&lt;br&gt;+			});
&lt;br&gt;+		};			
&lt;br&gt;+
&lt;br&gt;+			// map first n knobs to volumes
&lt;br&gt;+		knobKeys.keep(splitIndex).do { |key, i| 
&lt;br&gt;+			
&lt;br&gt;+			this.mapCCS(scene, key, 
&lt;br&gt;+				{ |ch, cc, val| 
&lt;br&gt;+					var proxy = mixer.pxMons[i].proxy; 
&lt;br&gt;+					if (proxy.notNil) { 
&lt;br&gt;+						proxy.nudgeVol(64 - val * step); 
&lt;br&gt;+					};
&lt;br&gt;+				};
&lt;br&gt;+			)
&lt;br&gt;+		};
&lt;br&gt;+		
&lt;br&gt;+		this.mapToPxEdit(mixer.editor, scene, (splitIndex + 1 .. knobKeys.size));
&lt;br&gt;+	}
&lt;br&gt;+}
&lt;br&gt;&lt;br&gt;&lt;br&gt;This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;sc-dev mailing list
&lt;br&gt;&lt;br&gt;info (subscription, etc.): &lt;a href=&quot;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&lt;/a&gt;&lt;br&gt;archive: &lt;a href=&quot;http://www.listarc.bham.ac.uk/marchives/sc-dev/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/marchives/sc-dev/&lt;/a&gt;&lt;br&gt;search: &lt;a href=&quot;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/SF-net-SVN-quarks-1372-JITMIDIKtl-tp4540452p4540452.html" />
	
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-4540436</id>
	<title>SF.net SVN: supercollider:[9819] trunk/build/SCClassLibrary/JITLib/extras/ extSoftSet.sc</title>
	<published>2010-02-09T03:01:38Z</published>
	<updated>2010-02-09T03:01:38Z</updated>
	<author>
		<name>decampo</name>
	</author>
	<content type="html">Revision: 9819
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://supercollider.svn.sourceforge.net/supercollider/?rev=9819&amp;view=rev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://supercollider.svn.sourceforge.net/supercollider/?rev=9819&amp;view=rev&lt;/a&gt;&lt;br&gt;Author: &amp;nbsp; decampo
&lt;br&gt;Date: &amp;nbsp; &amp;nbsp; 2010-02-09 11:01:38 +0000 (Tue, 09 Feb 2010)
&lt;br&gt;&lt;br&gt;Log Message:
&lt;br&gt;-----------
&lt;br&gt;added nudging for endless knob controllers.
&lt;br&gt;&lt;br&gt;Modified Paths:
&lt;br&gt;--------------
&lt;br&gt;&amp;nbsp; &amp;nbsp; trunk/build/SCClassLibrary/JITLib/extras/extSoftSet.sc
&lt;br&gt;&lt;br&gt;Modified: trunk/build/SCClassLibrary/JITLib/extras/extSoftSet.sc
&lt;br&gt;===================================================================
&lt;br&gt;--- trunk/build/SCClassLibrary/JITLib/extras/extSoftSet.sc	2010-02-08 18:44:01 UTC (rev 9818)
&lt;br&gt;+++ trunk/build/SCClassLibrary/JITLib/extras/extSoftSet.sc	2010-02-09 11:01:38 UTC (rev 9819)
&lt;br&gt;@@ -1,6 +1,21 @@
&lt;br&gt;&amp;nbsp;	// Maybe rewrite as SoftSet(what, key, val, within, mapped, oldVal);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;+ NodeProxy {
&lt;br&gt;+	
&lt;br&gt;+	nudgeSet { |param, incr = 0.02| 
&lt;br&gt;+		var spec = param.asSpec;
&lt;br&gt;+		var oldval = this.nodeMap.get(param).value ?? { this.getDefaultVal(param) ? 0 };
&lt;br&gt;+		var oldnorm = spec.unmap(oldval);
&lt;br&gt;+		var newnorm = (oldnorm + incr).clip(0, 1);
&lt;br&gt;+		this.set(param, spec.map(newnorm));
&lt;br&gt;+	}
&lt;br&gt;+	
&lt;br&gt;+	nudgeVol { |incr = 0.02| 
&lt;br&gt;+		var spec = \amp.asSpec; 
&lt;br&gt;+		var oldval = spec.unmap(this.vol); 
&lt;br&gt;+		var newVol = spec.map((oldval + incr).clip(0, 1));
&lt;br&gt;+		this.vol_(newVol)
&lt;br&gt;+	}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;	softSet { |param, val, within = 0.025, mapped=false, lastVal|
&lt;br&gt;&amp;nbsp;		var spec, newNormVal, oldVal, oldNormVal, maxDiff;
&lt;br&gt;&lt;br&gt;&lt;br&gt;This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;sc-dev mailing list
&lt;br&gt;&lt;br&gt;info (subscription, etc.): &lt;a href=&quot;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&lt;/a&gt;&lt;br&gt;archive: &lt;a href=&quot;http://www.listarc.bham.ac.uk/marchives/sc-dev/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/marchives/sc-dev/&lt;/a&gt;&lt;br&gt;search: &lt;a href=&quot;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/SF-net-SVN-supercollider-9819-trunk-build-SCClassLibrary-JITLib-extras-extSoftSet-sc-tp4540436p4540436.html" />
	
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-4540411</id>
	<title>Re: SynthDef method cleanup</title>
	<published>2010-02-09T02:55:16Z</published>
	<updated>2010-02-09T02:55:16Z</updated>
	<author>
		<name>adc-2</name>
	</author>
	<content type="html">hi, 
&lt;br&gt;&lt;br&gt;one opinion: 
&lt;br&gt;&lt;br&gt;I think by default SynthDefs should just work as Synths and in patterns; 
&lt;br&gt;so they should by default go to the server and the SynthDescLib.
&lt;br&gt;the clearest name I'v heard so far &amp;nbsp;is: 
&lt;br&gt;&lt;br&gt;SynthDef(\bla, { ... }).add; // = current memStore
&lt;br&gt;&lt;br&gt;If one does not want synthdefs in the lib (e.g. for efficiency optimisation), 
&lt;br&gt;one could do : 
&lt;br&gt;&lt;br&gt;SynthDef(\bla, { ... }).send; // send to all running servers by default, unless server is given.
&lt;br&gt;&lt;br&gt;To remove a synthdef, the clearest so far: 
&lt;br&gt;&lt;br&gt;SynthDef.remove(\bla); // clear it from SynthDescLib and from all running servers
&lt;br&gt;( &amp;nbsp; for symmetry, one could also provide : SynthDef.add(\bla, { ... }); &amp;nbsp; &amp;nbsp;)
&lt;br&gt;&lt;br&gt;Users should not have to worry about keeping in sync what the server knows and 
&lt;br&gt;what synthdesclib knows. this would reduce beginners confusion a lot IMO. 
&lt;br&gt;&lt;br&gt;&lt;br&gt;when is it _really_ necessary to store to disk? 
&lt;br&gt;&lt;br&gt;I sometimes find it puzzling that synthdefs that still lie around on disk
&lt;br&gt;get loaded on the server, so the server knows them, and they seem to work, 
&lt;br&gt;but then, not having made them from code in the lang, patterns dont work. 
&lt;br&gt;&lt;br&gt;not storing to disk by default (unless explicitly forced) would remove that puzzle:
&lt;br&gt;when they are not there, they are not there. 
&lt;br&gt;&lt;br&gt;that would require touching up a lot of Synthdef code, but that code would get really simpler. 
&lt;br&gt;&lt;br&gt;just 2c, 
&lt;br&gt;best, adc
&lt;br&gt;&lt;br&gt;&lt;br&gt;On Feb 9, 2010, at 11:26 AM, Julian Rohrhuber wrote:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Thank you for your comments. Much worse than flags are method and argument names that center on implementation instead of behavior. &amp;quot;memStore&amp;quot; is a border case in a sense. What I find is that we desperately need is a more abstract method whose name does not reflect how a SynthDef is made accessible as to make it work, but clearly says that it does so. As it is the most common thing, it should be clear and short. While memStore sticks once one has learned it, it is not a nice thing to have in the code - its name has nothing to do with why we use it really.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; One possibility would be to make store like &amp;quot;memStore&amp;quot; by default, and add diskStore. Flags in the class variables may be useful, but of course are ugly if you need a functionality only once. But well, let's hear some more opinions.. :)
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; On 09.02.2010, at 07:51, Pelle Nilsson wrote:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; Hi,
&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; Being only a new user still learning SC lurking on dev, I still can't
&lt;br&gt;&amp;gt;&amp;gt; resist commenting on this issue from a new user point of view:
&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; Julian Rohrhuber &amp;lt;&lt;a href=&quot;http://n2.nabble.com/user/SendEmail.jtp?type=node&amp;node=4540411&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;[hidden email]&lt;/a&gt;&amp;gt; writes:
&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Some methods of SynthDef are a bit hard to read. I've tried to clear
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; thing up a bit and added a flag to send which stores the synthDesc
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; (see patch).
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; I'm not sure what the general opinion about this is. My experience is
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; that the combinatorics of methods are hard to explain and that
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; memStore is a too complicated name for a simple behaviour. To
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; understand the name, one has to understand the history of
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; supercollider. I would not be against using the method &amp;quot;add&amp;quot; instead,
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; but as we are in a mess already, I tend to just make things work.
&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; It would be great to not use boolean flags here (or elsewhere). As a new
&lt;br&gt;&amp;gt;&amp;gt; user, or probably an old user reading old code later, it is impossible
&lt;br&gt;&amp;gt;&amp;gt; to read (or write) store(true), store(false), and store() and remember
&lt;br&gt;&amp;gt;&amp;gt; what they mean (and which one the last is equivalent to). I always use
&lt;br&gt;&amp;gt;&amp;gt; memStore and part of the reason is that I can remember what it does for
&lt;br&gt;&amp;gt;&amp;gt; sure. I would love if the other version was called diskStore or
&lt;br&gt;&amp;gt;&amp;gt; something similar.
&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; Knowing from other programming languages, trying to hide combinatorics
&lt;br&gt;&amp;gt;&amp;gt; of methods by putting several methods in the same one and using flags to
&lt;br&gt;&amp;gt;&amp;gt; select which of the hidden methods you really want to call was never a
&lt;br&gt;&amp;gt;&amp;gt; solution to the problem.
&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; As others already said, the store methods are confusing enough to new
&lt;br&gt;&amp;gt;&amp;gt; users already. It is great to hear that something is done about it, but
&lt;br&gt;&amp;gt;&amp;gt; I hope you dev guys end up agreeing on some other solution. :)
&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; IMHO and all that.
&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; -- 
&lt;br&gt;&amp;gt;&amp;gt; /Pelle
&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt;&amp;gt; sc-dev mailing list
&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; info (subscription, etc.): &lt;a href=&quot;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt; archive: &lt;a href=&quot;http://www.listarc.bham.ac.uk/marchives/sc-dev/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/marchives/sc-dev/&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt; search: &lt;a href=&quot;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&lt;/a&gt;&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt; sc-dev mailing list
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; info (subscription, etc.): &lt;a href=&quot;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&lt;/a&gt;&lt;br&gt;&amp;gt; archive: &lt;a href=&quot;http://www.listarc.bham.ac.uk/marchives/sc-dev/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/marchives/sc-dev/&lt;/a&gt;&lt;br&gt;&amp;gt; search: &lt;a href=&quot;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&lt;/a&gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;sc-dev mailing list
&lt;br&gt;&lt;br&gt;info (subscription, etc.): &lt;a href=&quot;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml&lt;/a&gt;&lt;br&gt;archive: &lt;a href=&quot;http://www.listarc.bham.ac.uk/marchives/sc-dev/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/marchives/sc-dev/&lt;/a&gt;&lt;br&gt;search: &lt;a href=&quot;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot; link=&quot;external&quot;&gt;http://www.listarc.bham.ac.uk/lists/sc-dev/search/&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/SynthDef-method-cleanup-tp4516616p4540411.html" />
	<thr:in-reply-to ref="tag:n2.nabble.com,2006:post-4540286"/>
</entry>

</feed>
