<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:syn="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/">
  <channel rdf:about="http://blog.gmane.org/gmane.comp.audio.supercollider.devel">
    <title>gmane.comp.audio.supercollider.devel</title>
    <link>http://blog.gmane.org/gmane.comp.audio.supercollider.devel</link>
    <description/>
    <syn:updatePeriod>hourly</syn:updatePeriod>
    <syn:updateFrequency>1</syn:updateFrequency>
    <syn:updateBase>1901-01-01T00:00+00:00</syn:updateBase>
    <items>
      <rdf:Seq>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.audio.supercollider.devel/58527"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.audio.supercollider.devel/58526"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.audio.supercollider.devel/58525"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.audio.supercollider.devel/58524"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.audio.supercollider.devel/58523"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.audio.supercollider.devel/58522"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.audio.supercollider.devel/58521"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.audio.supercollider.devel/58520"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.audio.supercollider.devel/58519"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.audio.supercollider.devel/58518"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.audio.supercollider.devel/58517"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.audio.supercollider.devel/58516"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.audio.supercollider.devel/58515"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.audio.supercollider.devel/58514"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.audio.supercollider.devel/58513"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.audio.supercollider.devel/58512"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.audio.supercollider.devel/58511"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.audio.supercollider.devel/58510"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.audio.supercollider.devel/58509"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.audio.supercollider.devel/58508"/>
      </rdf:Seq>
    </items>
    <image rdf:resource="http://gmane.org/img/gmane-25t.png"/>
    <textinput rdf:resource=""/>
  </channel>
  <image rdf:about="http://gmane.org/img/gmane-25t.png">
    <title>Gmane</title>
    <url>http://gmane.org/img/gmane-25t.png</url>
    <link>http://gmane.org</link>
  </image>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.audio.supercollider.devel/58527">
    <title>Re: Win32 precompiled - Windows XP - there is hope ;)</title>
    <link>http://permalink.gmane.org/gmane.comp.audio.supercollider.devel/58527</link>
    <description>&lt;pre&gt;bit running in a VMWare virtual machine on a Macbook pro 10.1, i7 2.6GHz.
First results are quite remarkable:
3.5 - when Win XP was considered supported:

Oh cool!

with readline 6.2 and it works, needs termcap)

This seems rather bizarre to me. It's a question I've asked before: What is
the difference in code path when you run "s.boot" in sclang (readline
interface) vs running the same instruction in the IDE (that is, where the
IDE sends "s.boot" to the language for evaluation)? Obviously something is
happening in the broken case (IDE) that doesn't happen in the working case,
but I have no idea how to find out what that is.

Or do you mean that "s.boot" works in all cases, and that localhost doesn't
boot from the IDE's Language menu?

Anyway, glad to hear of progress on this front. Without XP support, it's
nearly impossible to promote SC in China.

hjh
&lt;/pre&gt;</description>
    <dc:creator>James Harkins</dc:creator>
    <dc:date>2013-05-21T01:32:48</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.audio.supercollider.devel/58526">
    <title>Re: Win32 precompiled - compile error - SC3-Plugins</title>
    <link>http://permalink.gmane.org/gmane.comp.audio.supercollider.devel/58526</link>
    <description>&lt;pre&gt;
https://github.com/supercollider/supercollider/commit/cbc69610af6d287284684c71d09491ca90f50eda

y

&lt;/pre&gt;</description>
    <dc:creator>yvan volochine</dc:creator>
    <dc:date>2013-05-20T23:47:41</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.audio.supercollider.devel/58525">
    <title>Re: Win32 precompiled - compile error - SC3-Plugins</title>
    <link>http://permalink.gmane.org/gmane.comp.audio.supercollider.devel/58525</link>
    <description>&lt;pre&gt;
On 19 May 2013, at 19:13, Marije Baalman &amp;lt;nescivi-Re5JQEeQqe8AvxtiuMwx3w&amp;lt; at &amp;gt;public.gmane.org&amp;gt; wrote:


Unfortunately that didn't do it.

Victor reported a similar issue for SC itself. Tim fixed it, but I can't find the commit.

http://new-supercollider-mailing-lists-forums-use-these.2681727.n2.nabble.com/supercollider-supercollider-3a3395-Add-tempo-to-the-event-parameters-discussed-in-Pr-tt7589440.html#a7589444
_______________________________________________
sc-dev mailing list

info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-dev/
search: http://www.listarc.bham.ac.uk/lists/sc-dev/search/

&lt;/pre&gt;</description>
    <dc:creator>Rainer Schütz</dc:creator>
    <dc:date>2013-05-20T23:38:26</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.audio.supercollider.devel/58524">
    <title>Re: Win32 precompiled - Windows XP - there is hope ;)</title>
    <link>http://permalink.gmane.org/gmane.comp.audio.supercollider.devel/58524</link>
    <description>&lt;pre&gt;
On 20 May 2013, at 11:44, Tim Blechmann &amp;lt;tim-xpEK/MU0Hawdnm+yROfE0A&amp;lt; at &amp;gt;public.gmane.org&amp;gt; wrote:


Great!

I started trying out my 3.7build with gcc4.8 on Win XP professional 32 bit running in a VMWare virtual machine on a Macbook pro 10.1, i7 2.6GHz. First results are quite remarkable:

In a nutshell: the situation seems to be very similar to how it was in SC 3.5 - when Win XP was considered supported:

+ Tempo clock works
+ Dialog.openPanel works
+ Internal server works (always worked?)
+ Localhost server works from commandline/sclang only (btw. I compiled with readline 6.2 and it works, needs termcap)
+ The speed UGen-speed test from earlier posts: 15.000 and more!!! (more than 10x the speed of distributed release)

The one major issue in past discussions that remains:
- localhost doesn't boot from the ide

I haven't looked into Midi and SuperNova yet.
And I don't know how to test pthreads.

I added comments with a bit more detail on the localhost doesn't boot issue to
https://github.com/supercollider/supercollider/issues/260 (localhost)
https://github.com/supercollider/supercollider/issues/547 (tempo clock)
https://github.com/supercollider/supercollider/issues/707 (openPanel)

Best
.r.




_______________________________________________
sc-dev mailing list

info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-dev/
search: http://www.listarc.bham.ac.uk/lists/sc-dev/search/

&lt;/pre&gt;</description>
    <dc:creator>Rainer Schütz</dc:creator>
    <dc:date>2013-05-20T22:20:28</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.audio.supercollider.devel/58523">
    <title>[PATCH] ScIDEDocument class to enable common usage Document.open()</title>
    <link>http://permalink.gmane.org/gmane.comp.audio.supercollider.devel/58523</link>
    <description>&lt;pre&gt;From: Dan Stowell &amp;lt;danstowell-Rn4VEauK+AKRv+LV9MX5uipxlwaOVQ5f&amp;lt; at &amp;gt;public.gmane.org&amp;gt;

---
 SCClassLibrary/scide_scqt/ScIDE.sc |   15 +++++++++++++++
 1 files changed, 15 insertions(+), 0 deletions(-)

diff --git a/SCClassLibrary/scide_scqt/ScIDE.sc b/SCClassLibrary/scide_scqt/ScIDE.sc
index 71f1f93..4baae58 100644
--- a/SCClassLibrary/scide_scqt/ScIDE.sc
+++ b/SCClassLibrary/scide_scqt/ScIDE.sc
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -336,3 +336,18 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; ScIDE {
 this.primitiveFailed
 }
 }
+
+// This is just a stub to provide oft-used functionality such as Document.open()
+ScIDEDocument : Document {
+        *initClass{
+                Document.implementationClass = this;
+        }
+*new {|title, string, makeListener, envir|
+^this.notImplemented("Document.new")
+}
+propen {|path, selectionStart, selectionLength, envir|
+if(envir != nil){"ScIDE does not set an environment per document".warn};
+^ScIDE.open(path, selectionStart, selectionLength)
+}
+}
+
&lt;/pre&gt;</description>
    <dc:creator>danstowell+sc3-Re5JQEeQqe8AvxtiuMwx3w&lt; at &gt;public.gmane.org</dc:creator>
    <dc:date>2013-05-20T21:41:15</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.audio.supercollider.devel/58522">
    <title>Re: MIDI system improvements</title>
    <link>http://permalink.gmane.org/gmane.comp.audio.supercollider.devel/58522</link>
    <description>&lt;pre&gt;Hiho,

I think that the issues you mention are Linux only, and with some
issues it may be important to keep in mind cross platform
functionality; e.g. wanting to ensure that a MIDI message is coming
from a specific other MIDI device/client.

On other platforms there is no concept of a MIDI patchbay as we have on
Linux, so each port created there is in fact connecting solely to that
client, you can't patch it as you would do in Linux.

On Mon, 20 May 2013 14:19:28 +0200
Jakob Leben &amp;lt;jakob.leben-Re5JQEeQqe8AvxtiuMwx3w&amp;lt; at &amp;gt;public.gmane.org&amp;gt; wrote:

the nicest thing would be to have a callback in case a new port comes
into existance.
But I'm not sure whether this would be feasible on other platforms than
Linux.
 

Yes, it is a problem that should be addressed.
There is also no need to connect to system announce, and this other one
that is always there (but doesn't show in QJackCtl's Alsa patchbay).
 

Because you may want to filter by client, as you would on other
platforms.
So cross-platform-compatibility is the answer.



A couple of methods rely on the caching, I believe... like findByName
and so on. I guess it is a matter of how much time requesting the info
from the operating system takes whether you want to do it more than by
explicit request.

I think the sources/destinations may also have counterparts on the
primitive side, but I'm not sure.

sincerely,
Marije

_______________________________________________
sc-dev mailing list

info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-dev/
search: http://www.listarc.bham.ac.uk/lists/sc-dev/search/

&lt;/pre&gt;</description>
    <dc:creator>Marije Baalman</dc:creator>
    <dc:date>2013-05-20T18:32:27</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.audio.supercollider.devel/58521">
    <title>Re: [PATCH] MIDI(ALSA): fix initialization</title>
    <link>http://permalink.gmane.org/gmane.comp.audio.supercollider.devel/58521</link>
    <description>&lt;pre&gt;
On 20.5.2013, at 19:02 , Jakob Leben wrote:


thx! (testing git on my fresh Xubuntu VM. ;-)  

--
hear the colours of noise: http://blauwurf.at
http://soundcloud.com/noiseconformist



_______________________________________________
sc-dev mailing list

info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-dev/
search: http://www.listarc.bham.ac.uk/lists/sc-dev/search/

&lt;/pre&gt;</description>
    <dc:creator>Michael Zacherl</dc:creator>
    <dc:date>2013-05-20T17:08:23</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.audio.supercollider.devel/58520">
    <title>Re: [PATCH] MIDI(ALSA): fix initialization</title>
    <link>http://permalink.gmane.org/gmane.comp.audio.supercollider.devel/58520</link>
    <description>&lt;pre&gt;
Btw, this patch is only for ALSA backend of MIDI, has no effect on Mac or
Windows.
&lt;/pre&gt;</description>
    <dc:creator>Jakob Leben</dc:creator>
    <dc:date>2013-05-20T17:02:37</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.audio.supercollider.devel/58519">
    <title>Re: [PATCH] MIDI(ALSA): fix initialization</title>
    <link>http://permalink.gmane.org/gmane.comp.audio.supercollider.devel/58519</link>
    <description>&lt;pre&gt;Hi Jakob, 
I can't apply the patch - fatal: corrupt patch at line 18
Could you PLS resend as attachment? 
thx - m.

On 20.5.2013, at 17:14 , Jakob Leben wrote:




--
keep your ears open: http://blauwurf.at
http://soundcloud.com/noiseconformist






_______________________________________________
sc-dev mailing list

info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-dev/
search: http://www.listarc.bham.ac.uk/lists/sc-dev/search/

&lt;/pre&gt;</description>
    <dc:creator>Michael Zacherl</dc:creator>
    <dc:date>2013-05-20T16:27:31</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.audio.supercollider.devel/58518">
    <title>[PATCH] MIDI(ALSA): fix initialization</title>
    <link>http://permalink.gmane.org/gmane.comp.audio.supercollider.devel/58518</link>
    <description>&lt;pre&gt;Avoid initialize/cleanup/initialize cycle whenever initializing.

Let initMIDIClient() do most of the work, except for creating ports and
running the worker thread, and let initMIDI() do only the rest instead
of a complete re-initialization.

This fixes the issue that calling "MIDIClient.init" in succession would
not remove ports created in the previous call.
---
 lang/LangPrimSource/SC_AlsaMIDI.cpp | 52 +++++++------------------------------
 1 file changed, 10 insertions(+), 42 deletions(-)

diff --git a/lang/LangPrimSource/SC_AlsaMIDI.cpp b/lang/LangPrimSource/SC_AlsaMIDI.cpp
index 323217c..74f46b7 100644
--- a/lang/LangPrimSource/SC_AlsaMIDI.cpp
+++ b/lang/LangPrimSource/SC_AlsaMIDI.cpp
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -458,20 +458,14 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; int initMIDI(int numIn, int numOut)
 SC_AlsaMidiClient* client = &amp;amp;gMIDIClient;
 int i;
 
-if (client-&amp;gt;mHandle) cleanUpMIDI();
+if (!client-&amp;gt;mHandle) {
+post("MIDI (ALSA): Can not start - not yet initialized.\n");
+return errFailed;
+}
 
     numIn = sc_clip(numIn, 1, kMaxMidiPorts);
     numOut = sc_clip(numOut, 1, kMaxMidiPorts);
 
-// initialize client handle
-    if (snd_seq_open(&amp;amp;client-&amp;gt;mHandle, "default", SND_SEQ_OPEN_DUPLEX, 0) &amp;lt; 0) {
-client-&amp;gt;mHandle = 0;
-post("MIDI (ALSA): could not open ALSA sequencer: %s\n", snd_strerror(errno));
-        return errFailed;
-}
-
-snd_seq_set_client_name(client-&amp;gt;mHandle, "SuperCollider");
-
 // allocate i/o ports
     for (i=0; i &amp;lt; numIn; i++) {
         char str[32];
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -515,31 +509,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; int initMIDI(int numIn, int numOut)
 
     client-&amp;gt;mNumOutPorts = i;
 
-// initialize queue
-client-&amp;gt;mQueue = snd_seq_alloc_queue(client-&amp;gt;mHandle);
-snd_seq_start_queue(client-&amp;gt;mHandle, client-&amp;gt;mQueue, 0);
-snd_seq_drain_output(client-&amp;gt;mHandle);
-// snd_seq_set_client_pool_output(seqHandle, ??);
-
-// initialize event en-/decoders
-if (snd_midi_event_new(32, &amp;amp;client-&amp;gt;mEventToMidi) &amp;lt; 0) {
-client-&amp;gt;mEventToMidi = 0;
-post("MIDI (ALSA): could not create MIDI decoder\n");
-return errFailed;
-}
-
-if (snd_midi_event_new(32, &amp;amp;client-&amp;gt;mMidiToEvent) &amp;lt; 0) {
-client-&amp;gt;mMidiToEvent = 0;
-post("MIDI (ALSA): could not create MIDI encoder\n");
-return errFailed;
-}
-
-snd_midi_event_no_status(client-&amp;gt;mEventToMidi, 1);
-snd_midi_event_no_status(client-&amp;gt;mMidiToEvent, 1);
-
 // start input thread
 client-&amp;gt;mShouldBeRunning = true;
 if (pthread_create(&amp;amp;client-&amp;gt;mInputThread, 0, &amp;amp;SC_AlsaMidiClient::inputThreadFunc, client) != 0) {
+client-&amp;gt;mShouldBeRunning = false;
 post("MIDI (ALSA): could not start input thread\n");
 return errFailed;
 }
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -551,7 +524,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; int initMIDIClient()
 {
 SC_AlsaMidiClient* client = &amp;amp;gMIDIClient;
 
-if (client-&amp;gt;mHandle) return errNone;
+if (client-&amp;gt;mHandle) cleanUpMIDI();
 
 // initialize client handle
     if (snd_seq_open(&amp;amp;client-&amp;gt;mHandle, "default", SND_SEQ_OPEN_DUPLEX, 0) &amp;lt; 0) {
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -584,13 +557,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; int initMIDIClient()
 snd_midi_event_no_status(client-&amp;gt;mEventToMidi, 1);
 snd_midi_event_no_status(client-&amp;gt;mMidiToEvent, 1);
 
-// start input thread
-client-&amp;gt;mShouldBeRunning = true;
-if (pthread_create(&amp;amp;client-&amp;gt;mInputThread, 0, &amp;amp;SC_AlsaMidiClient::inputThreadFunc, client) != 0) {
-post("MIDI (ALSA): could not start input thread\n");
-return errFailed;
-}
-
     return errNone;
 }
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -610,8 +576,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; void cleanUpMIDI()
 SC_AlsaMidiClient* client = &amp;amp;gMIDIClient;
 
 if (client-&amp;gt;mHandle) {
-client-&amp;gt;mShouldBeRunning = false;
-pthread_join(client-&amp;gt;mInputThread, 0);
+if (client-&amp;gt;mShouldBeRunning) {
+client-&amp;gt;mShouldBeRunning = false;
+pthread_join(client-&amp;gt;mInputThread, 0);
+}
 
 snd_seq_remove_events_t *revt;
 snd_seq_remove_events_malloc(&amp;amp;revt);
&lt;/pre&gt;</description>
    <dc:creator>Jakob Leben</dc:creator>
    <dc:date>2013-05-20T15:14:21</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.audio.supercollider.devel/58517">
    <title>MIDI system improvements</title>
    <link>http://permalink.gmane.org/gmane.comp.audio.supercollider.devel/58517</link>
    <description>&lt;pre&gt;Hi all,

I think the MIDI system could be improved in several ways, but I would like
to hear you opinion about these ideas:

### Amount of automatically created in/out ports

I am not sure that there is any use in having the *default* MIDIClient
initialization create as many input and output ports as there is ports of
other clients, for 2 reasons:

1. Other clients can come to existence, or cease to exist at any time, at
which point the amount of ports will not reflect the MIDI ecosystem in any
sensible way.

2. Moreover, in such a scenario, MIDIIn.connectAll will fail to connect in
any sensible way. It could even be dangerous because it if the total amount
of MIDI source ports decreases, 'connectAll' will connect our own source
port to one of our own destination ports!

Why not only create a single output and a single input port, and have
MIDIIn.connectAll  connect all other clients' out/in ports to those single
ports?

### Caching all available in/out ports of other clients

Querying the ecosystem for all in/out ports and storing them in
MIDIClient.sources and MIDIClient.destinations is useful in order to be
able to connect to those ports by index.

However, this is problematic with regard to MIDIIn.connectAll, if ecosystem
changes since MIDIClient initialization. There's MIDIClient.list to update
the cached sources/destinations, and I think this update should always be
performed within MIDIIn.connectAll.

Alternatively, imo it would be even better if MIDIClient.sources and
.destinations would perform a query on-the-fly, and the info would not be
cached at all.
&lt;/pre&gt;</description>
    <dc:creator>Jakob Leben</dc:creator>
    <dc:date>2013-05-20T12:19:28</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.audio.supercollider.devel/58516">
    <title>HID</title>
    <link>http://permalink.gmane.org/gmane.comp.audio.supercollider.devel/58516</link>
    <description>&lt;pre&gt;Hiho,

just a small update... (well not really)...

A couple of other projects took up my attention in the past time, but
in June I'll get back to coding on the HID implementation; I set my
deadline for finishing it for this summer.

Just in case you guys are wondering while over there at the
Symposium. ;)

sincerely,
Marije

_______________________________________________
sc-dev mailing list

info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-dev/
search: http://www.listarc.bham.ac.uk/lists/sc-dev/search/

&lt;/pre&gt;</description>
    <dc:creator>Marije Baalman</dc:creator>
    <dc:date>2013-05-20T11:25:42</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.audio.supercollider.devel/58515">
    <title>Re: Packt book</title>
    <link>http://permalink.gmane.org/gmane.comp.audio.supercollider.devel/58515</link>
    <description>&lt;pre&gt;Hiho,

the wording was just Inglish :)

sincerely,
Marije

On Sun, 19 May 2013 11:33:29 -0700
Josh Parmenter &amp;lt;josh-dgcorQsoLzUte1CcmPSZvF6hYfS7NtTn&amp;lt; at &amp;gt;public.gmane.org&amp;gt; wrote:



_______________________________________________
sc-dev mailing list

info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-dev/
search: http://www.listarc.bham.ac.uk/lists/sc-dev/search/

&lt;/pre&gt;</description>
    <dc:creator>Marije Baalman</dc:creator>
    <dc:date>2013-05-20T11:22:39</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.audio.supercollider.devel/58514">
    <title>Re: Win32 precompiled - compile error - now at 97%</title>
    <link>http://permalink.gmane.org/gmane.comp.audio.supercollider.devel/58514</link>
    <description>&lt;pre&gt;

SC_Endian.hpp pulls in win32 headers in the public interface ... that is
bad ... will have a look

&lt;/pre&gt;</description>
    <dc:creator>Tim Blechmann</dc:creator>
    <dc:date>2013-05-20T10:44:38</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.audio.supercollider.devel/58513">
    <title>SF.net SVN: quarks:[2591] QuNeo</title>
    <link>http://permalink.gmane.org/gmane.comp.audio.supercollider.devel/58513</link>
    <description>&lt;pre&gt;Revision: 2591
          http://quarks.svn.sourceforge.net/quarks/?rev=2591&amp;amp;view=rev
Author:   schemawound
Date:     2013-05-17 20:09:22 +0000 (Fri, 17 May 2013)
Log Message:
-----------


Added Paths:
-----------
    DIRECTORY/QuNeo.quark
    QuNeo/
    QuNeo/Controls/
    QuNeo/Controls/QuNeoButton.sc
    QuNeo/Controls/QuNeoCircleControl.sc
    QuNeo/Controls/QuNeoDrumPad.sc
    QuNeo/Controls/QuNeoGridPad.sc
    QuNeo/Controls/QuNeoLongSlider.sc
    QuNeo/Controls/QuNeoSlider.sc
    QuNeo/HelpSource/
    QuNeo/HelpSource/Classes/
    QuNeo/HelpSource/Classes/MidiCcBus.schelp
    QuNeo/HelpSource/Classes/MidiNoteFunc.schelp
    QuNeo/HelpSource/Classes/QuNeo.schelp
    QuNeo/HelpSource/Classes/QuNeoButton.schelp
    QuNeo/HelpSource/Classes/QuNeoCircleControl.schelp
    QuNeo/HelpSource/Classes/QuNeoDrumPad.schelp
    QuNeo/HelpSource/Classes/QuNeoGridPad.schelp
    QuNeo/HelpSource/Classes/QuNeoLongSlider.schelp
    QuNeo/HelpSource/Classes/QuNeoSlider.schelp
    QuNeo/MIDI/
    QuNeo/MIDI/MidiCcBus.sc
    QuNeo/MIDI/MidiNoteFunc.sc
    QuNeo/QuNeo.sc
    QuNeo/QuNeoPresets/
    QuNeo/QuNeoPresets/BasicSC_QuNeo.quneopreset
    QuNeo/QuNeoPresets/BasicSC_QuNeo.scd
    QuNeo/Readme.txt

Added: DIRECTORY/QuNeo.quark
===================================================================
--- DIRECTORY/QuNeo.quark                        (rev 0)
+++ DIRECTORY/QuNeo.quark2013-05-17 20:09:22 UTC (rev 2591)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -0,0 +1,12 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+(
+\name: "QuNeo",
+\path: "QuNeo",
+\summary: "A class to make it easier to interface with the Keith McMillen QuNeo",
+\helpdoc: "Classes/QuNeo.schelp",
+\author: "Jonathan Siemasko",
+\version: 1.0,
+\organization: "Schemawound",
+\country: "USA",
+\url: "http://www.schemawound.com/",
+\since: "2012"
+)
\ No newline at end of file

Added: QuNeo/Controls/QuNeoButton.sc
===================================================================
--- QuNeo/Controls/QuNeoButton.sc                        (rev 0)
+++ QuNeo/Controls/QuNeoButton.sc2013-05-17 20:09:22 UTC (rev 2591)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -0,0 +1,27 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+/*
+QuNeoButton by Jonathan Siemasko - Email: schemawound-/E1597aS9LQAvxtiuMwx3w&amp;lt; at &amp;gt;public.gmane.org - Web: http://schemawound.com/
+*/
+
+QuNeoButton{
+var &amp;lt;noteNum, pressCC, &amp;lt;name, &amp;lt;channel, &amp;lt;scInPort, &amp;lt;scOutPort;
+var &amp;lt;note, &amp;lt;press;
+
+*new{|noteNum, pressCC, name = \button, channel = 0, scInPort, scOutPort|
+^super
+.newCopyArgs(noteNum, pressCC, name, channel, scInPort, scOutPort)
+.init()
+}
+
+init{
+var notename = name ++ ': ' ++ \note;
+var pressName = name ++ ': ' ++ \press;
+note = MidiNoteFunc(noteNum, channel, scInPort, scOutPort, notename);
+press = MidiCcBus(pressCC, channel, scInPort, scOutPort, pressName);
+}
+
+//Set debug values for all underlying controls
+debug{|setDebug = true|
+note.debug(setDebug);
+press.debug(setDebug);
+}
+}
\ No newline at end of file

Added: QuNeo/Controls/QuNeoCircleControl.sc
===================================================================
--- QuNeo/Controls/QuNeoCircleControl.sc                        (rev 0)
+++ QuNeo/Controls/QuNeoCircleControl.sc2013-05-17 20:09:22 UTC (rev 2591)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -0,0 +1,30 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+/*
+QuNeoCircleControl by Jonathan Siemasko - Email: schemawound-/E1597aS9LQAvxtiuMwx3w&amp;lt; at &amp;gt;public.gmane.org - Web: http://schemawound.com/
+*/
+
+QuNeoCircleControl{
+var &amp;lt;noteNum, pressCC, locCC, &amp;lt;name, &amp;lt;channel, &amp;lt;scInPort, &amp;lt;scOutPort;
+var &amp;lt;note, &amp;lt;press, &amp;lt;loc;
+
+*new{|noteNum, pressCC, locCC, name = \slider, channel = 0, scInPort, scOutPort|
+^super
+.newCopyArgs(noteNum, pressCC, locCC, name, channel, scInPort, scOutPort)
+.init()
+}
+
+init{
+var notename = name ++ ': ' ++ \note;
+var pressName = name ++ ': ' ++ \press;
+var locName = name ++ ': ' ++ \loc;
+note = MidiNoteFunc(noteNum, channel, scInPort, scOutPort, notename);
+press = MidiCcBus(pressCC, channel, scInPort, scOutPort, pressName);
+loc = MidiCcBus(locCC, channel, scInPort, scOutPort, locName);
+}
+
+//Set debug values for all underlying controls
+debug{|setDebug = true|
+note.debug(setDebug);
+press.debug(setDebug);
+loc.debug(setDebug);
+}
+}
\ No newline at end of file

Added: QuNeo/Controls/QuNeoDrumPad.sc
===================================================================
--- QuNeo/Controls/QuNeoDrumPad.sc                        (rev 0)
+++ QuNeo/Controls/QuNeoDrumPad.sc2013-05-17 20:09:22 UTC (rev 2591)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -0,0 +1,33 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+/*
+QuNeoDrumPad by Jonathan Siemasko - Email: schemawound-/E1597aS9LQAvxtiuMwx3w&amp;lt; at &amp;gt;public.gmane.org - Web: http://schemawound.com/
+*/
+
+QuNeoDrumPad{
+var &amp;lt;noteNum, pressCC, xCC, yCC, &amp;lt;name, &amp;lt;channel, &amp;lt;scInPort, &amp;lt;scOutPort;
+var &amp;lt;note, &amp;lt;press, &amp;lt;x, &amp;lt;y;
+
+*new{|noteNum, pressCC, xCC, yCC, name = \drumPad, channel = 0, scInPort, scOutPort|
+^super
+.newCopyArgs(noteNum, pressCC, xCC, yCC, name, channel, scInPort, scOutPort)
+.init()
+}
+
+init{
+var notename = name ++ ': ' ++ \note;
+var pressName = name ++ ': ' ++ \press;
+var xName = name ++ ': ' ++ \x;
+var yName = name ++ ': ' ++ \y;
+note = MidiNoteFunc(noteNum, channel, scInPort, scOutPort, notename);
+press = MidiCcBus(pressCC, channel, scInPort, scOutPort, pressName);
+x = MidiCcBus(xCC, channel, scInPort, scOutPort, xName);
+y = MidiCcBus(yCC, channel, scInPort, scOutPort, yName);
+}
+
+//Set debug values for all underlying controls
+debug{|setDebug = true|
+note.debug(setDebug);
+press.debug(setDebug);
+x.debug(setDebug);
+y.debug(setDebug);
+}
+}
\ No newline at end of file

Added: QuNeo/Controls/QuNeoGridPad.sc
===================================================================
--- QuNeo/Controls/QuNeoGridPad.sc                        (rev 0)
+++ QuNeo/Controls/QuNeoGridPad.sc2013-05-17 20:09:22 UTC (rev 2591)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -0,0 +1,42 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+/*
+QuNeoGridPad by Jonathan Siemasko - Email: schemawound-/E1597aS9LQAvxtiuMwx3w&amp;lt; at &amp;gt;public.gmane.org - Web: http://schemawound.com/
+*/
+
+QuNeoGridPad{
+var &amp;lt;name, &amp;lt;channel, &amp;lt;scInPort, &amp;lt;scOutPort, &amp;lt;press, &amp;lt;noteNum;
+
+*new{|noteNums, pressCCs, name = \gridPad, channel = 0, scInPort, scOutPort|
+^super
+.newCopyArgs(name, channel, scInPort, scOutPort)
+.init(noteNums, pressCCs)
+}
+
+init{|noteNums, pressCCs|
+var noteName1 = name ++ ': ' ++ \note1;
+var noteName2 = name ++ ': ' ++ \note2;
+var noteName3 = name ++ ': ' ++ \note3;
+var noteName4 = name ++ ': ' ++ \note4;
+var pressName1 = name ++ ': ' ++ \press1;
+var pressName2 = name ++ ': ' ++ \press2;
+var pressName3 = name ++ ': ' ++ \press3;
+var pressName4 = name ++ ': ' ++ \press4;
+noteNum = [
+MidiNoteFunc(noteNums[0], channel, scInPort, scOutPort, pressName1),
+MidiNoteFunc(noteNums[1], channel, scInPort, scOutPort, pressName2),
+MidiNoteFunc(noteNums[2], channel, scInPort, scOutPort, pressName3),
+MidiNoteFunc(noteNums[3], channel, scInPort, scOutPort, pressName4),
+];
+press = [
+MidiCcBus(pressCCs[0], channel, scInPort, scOutPort, pressName1),
+MidiCcBus(pressCCs[1], channel, scInPort, scOutPort, pressName2),
+MidiCcBus(pressCCs[2], channel, scInPort, scOutPort, pressName3),
+MidiCcBus(pressCCs[3], channel, scInPort, scOutPort, pressName4),
+];
+}
+
+//Set debug values for all underlying controls
+debug{|setDebug = true|
+noteNum.do{|thisNote| thisNote.debug(setDebug)};
+press.do{|thisPress| thisPress.debug(setDebug)};
+}
+}
\ No newline at end of file

Added: QuNeo/Controls/QuNeoLongSlider.sc
===================================================================
--- QuNeo/Controls/QuNeoLongSlider.sc                        (rev 0)
+++ QuNeo/Controls/QuNeoLongSlider.sc2013-05-17 20:09:22 UTC (rev 2591)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -0,0 +1,33 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+/*
+QuNeoLongSlider by Jonathan Siemasko - Email: schemawound-/E1597aS9LQAvxtiuMwx3w&amp;lt; at &amp;gt;public.gmane.org - Web: http://schemawound.com/
+*/
+
+QuNeoLongSlider{
+var &amp;lt;noteNum, pressCC, locCC, widthCC, &amp;lt;name, &amp;lt;channel, &amp;lt;scInPort, &amp;lt;scOutPort;
+var &amp;lt;note, &amp;lt;press, &amp;lt;loc, &amp;lt;width;
+
+*new{|noteNum, pressCC, locCC, widthCC, name = \longSlider, channel = 0, scInPort, scOutPort|
+^super
+.newCopyArgs(noteNum, pressCC, locCC, widthCC, name, channel, scInPort, scOutPort)
+.init()
+}
+
+init{
+var notename = name ++ ': ' ++ \note;
+var pressName = name ++ ': ' ++ \press;
+var locName = name ++ ': ' ++ \loc;
+var widthName = name ++ ': ' ++ \width;
+note = MidiNoteFunc(noteNum, channel, scInPort, scOutPort, notename);
+press = MidiCcBus(pressCC, channel, scInPort, scOutPort, pressName);
+loc = MidiCcBus(locCC, channel, scInPort, scOutPort, locName);
+width = MidiCcBus(locCC, channel, scInPort, scOutPort, widthName);
+}
+
+//Set debug values for all underlying controls
+debug{|setDebug = true|
+note.debug(setDebug);
+press.debug(setDebug);
+loc.debug(setDebug);
+width.debug(setDebug);
+}
+}
\ No newline at end of file

Added: QuNeo/Controls/QuNeoSlider.sc
===================================================================
--- QuNeo/Controls/QuNeoSlider.sc                        (rev 0)
+++ QuNeo/Controls/QuNeoSlider.sc2013-05-17 20:09:22 UTC (rev 2591)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -0,0 +1,30 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+/*
+QuNeoSlider by Jonathan Siemasko - Email: schemawound-/E1597aS9LQAvxtiuMwx3w&amp;lt; at &amp;gt;public.gmane.org - Web: http://schemawound.com/
+*/
+
+QuNeoSlider{
+var &amp;lt;noteNum, pressCC, locCC, &amp;lt;name, &amp;lt;channel, &amp;lt;scInPort, &amp;lt;scOutPort;
+var &amp;lt;note, &amp;lt;press, &amp;lt;loc;
+
+*new{|noteNum, pressCC, locCC, name = \slider, channel = 0, scInPort, scOutPort|
+^super
+.newCopyArgs(noteNum, pressCC, locCC, name, channel, scInPort, scOutPort)
+.init()
+}
+
+init{
+var notename = name ++ ': ' ++ \note;
+var pressName = name ++ ': ' ++ \press;
+var locName = name ++ ': ' ++ \loc;
+note = MidiNoteFunc(noteNum, channel, scInPort, scOutPort, notename);
+press = MidiCcBus(pressCC, channel, scInPort, scOutPort, pressName);
+loc = MidiCcBus(locCC, channel, scInPort, scOutPort, locName);
+}
+
+//Set debug values for all underlying controls
+debug{|setDebug = true|
+note.debug(setDebug);
+press.debug(setDebug);
+loc.debug(setDebug);
+}
+}
\ No newline at end of file

Added: QuNeo/HelpSource/Classes/MidiCcBus.schelp
===================================================================
--- QuNeo/HelpSource/Classes/MidiCcBus.schelp                        (rev 0)
+++ QuNeo/HelpSource/Classes/MidiCcBus.schelp2013-05-17 20:09:22 UTC (rev 2591)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -0,0 +1,112 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+TITLE:: MidiCcBus
+summary:: Used by the QuNeo classes to interface to MIDI CC controls.
+categories:: Hardware&amp;gt;QuNeo
+related:: Classes/QuNeo, Classes/MidiNoteFunc, Classes/QuNeoButton, Classes/QuNeoCircleControl, Classes/QuNeoDrumPad, Classes/QuNeoGridPad, Classes/QuNeoLongSlider, Classes/QuNeoSlider
+
+DESCRIPTION::
+Used by the QuNeo classes to interface to MIDI CC controls.
+
+
+CLASSMETHODS::
+
+METHOD:: new
+Create a new MidiCcBus.  During regular use this will be called by the QuNeo control classes.
+
+ARGUMENT:: cc
+MIDI CC number for the control.
+
+ARGUMENT:: channel
+MIDI channel the control responds to.
+
+ARGUMENT:: scInPort
+Port that Supercollider will recieve MIDI data from.
+
+ARGUMENT:: scOutPort
+Port that Supercollider will send MIDI data to.
+
+ARGUMENT:: name
+Name of the control, used when printing debug info.
+
+returns:: A new MidiCcBus.
+
+
+INSTANCEMETHODS::
+
+
+METHOD:: cc
+MIDI CC number that the control will receive data on.
+
+
+METHOD:: bus
+Bus number that the control will transmit on.
+
+
+METHOD:: map
+Shortcut method for bus.asMap.
+
+
+METHOD:: value
+Shortcut method for bus.getSynchronus.
+
+
+METHOD:: kr
+A k-rate Ugen wrapped in a lag control.  Outputs 0 - 1.
+
+ARGUMENT:: mul
+multiply with this value.
+
+ARGUMENT:: add
+add this value.
+
+ARGUMENT:: lagTime
+60 dB lag time in seconds.
+
+
+METHOD:: ar
+A a-rate Ugen wrapped in a lag control.  Outputs 0 - 1.
+
+ARGUMENT:: mul
+multiply with this value
+
+ARGUMENT:: add
+add this value
+
+ARGUMENT:: lagTime
+60 dB lag time in seconds.
+
+
+METHOD:: func
+A fuction to be called when a MIDI CC message is received.  The following values will be passed to the function: val, num, chan, src.
+
+
+METHOD:: name
+Name of the control, used when printing debug info.
+
+
+METHOD:: channel
+MIDI channel the control responds to.
+
+
+METHOD:: scInPort
+Port that Supercollider will recieve MIDI data from.
+
+
+METHOD:: scOutPort
+Port that Supercollider will send MIDI data to.
+
+
+METHOD:: debug
+Allows you to enable or disable debugging for the control.  This setting can also be changed on a per datasource basis.
+
+ARGUMENT:: setDebug
+Enable debugging? true/false.
+
+
+PRIVATE:: init
+
+
+EXAMPLES::
+
+code::
+See QuNeo class for examples
+::
\ No newline at end of file

Added: QuNeo/HelpSource/Classes/MidiNoteFunc.schelp
===================================================================
--- QuNeo/HelpSource/Classes/MidiNoteFunc.schelp                        (rev 0)
+++ QuNeo/HelpSource/Classes/MidiNoteFunc.schelp2013-05-17 20:09:22 UTC (rev 2591)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -0,0 +1,78 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+TITLE:: MidiNoteFunc
+summary:: Used by the QuNeo classes to interface to MIDI Note controls.
+categories:: Hardware&amp;gt;QuNeo
+related:: Classes/QuNeo, Classes/MidiCcBus, Classes/QuNeoButton, Classes/QuNeoCircleControl, Classes/QuNeoDrumPad, Classes/QuNeoGridPad, Classes/QuNeoLongSlider, Classes/QuNeoSlider
+
+DESCRIPTION::
+Used by the QuNeo classes to interface to MIDI Note controls
+
+
+CLASSMETHODS::
+
+METHOD:: new
+Create a new MidiNoteFunc.  During regular use this will be called by the QuNeo control classes.
+
+ARGUMENT:: noteNum
+MIDI note number for the control.
+
+ARGUMENT:: channel
+MIDI channel the control responds to.
+
+ARGUMENT:: scInPort
+Port that Supercollider will recieve MIDI data from.
+
+ARGUMENT:: scOutPort
+Port that Supercollider will send MIDI data to.
+
+ARGUMENT:: name
+Name of the control, used when printing debug info.
+
+returns:: A new MidiNoteFunc.
+
+
+INSTANCEMETHODS::
+
+
+METHOD:: noteNum
+MIDI note number that the control responds to.
+
+
+METHOD:: onFunc
+A fuction to be called when a MIDI note on message is received.  The following values will be passed to the function: val, num, chan, src.
+
+
+METHOD:: offFunc
+A fuction to be called when a MIDI note off message is received.  The following values will be passed to the function: val, num, chan, src.
+
+
+METHOD:: name
+Name of the control, used when printing debug info.
+
+
+METHOD:: channel
+MIDI channel the control responds to.
+
+
+METHOD:: scInPort
+Port that Supercollider will recieve MIDI data from.
+
+
+METHOD:: scOutPort
+Port that Supercollider will send MIDI data to.
+
+
+METHOD:: debug
+Allows you to enable or disable debugging for the control.  This setting can also be changed on a per datasource basis.
+
+ARGUMENT:: setDebug
+Enable debugging? true/false.
+
+
+PRIVATE:: init
+
+
+EXAMPLES::
+
+code::
+See QuNeo class for examples
+::
\ No newline at end of file

Added: QuNeo/HelpSource/Classes/QuNeo.schelp
===================================================================
--- QuNeo/HelpSource/Classes/QuNeo.schelp                        (rev 0)
+++ QuNeo/HelpSource/Classes/QuNeo.schelp2013-05-17 20:09:22 UTC (rev 2591)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -0,0 +1,346 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+TITLE:: QuNeo
+summary:: A class to make it easier to interface with the Keith McMillen QuNeo.
+categories:: Hardware&amp;gt;QuNeo
+related:: Classes/MidiCcBus, Classes/MidiNoteFunc, Classes/QuNeoButton, Classes/QuNeoCircleControl, Classes/QuNeoDrumPad, Classes/QuNeoGridPad, Classes/QuNeoLongSlider, Classes/QuNeoSlider
+
+DESCRIPTION::
+A class to make it easier to interface with the Keith McMillen QuNeo - http://www.keithmcmillen.com/QuNeo/ .
+
+
+If this is your first time using the class I recommend looking at the example QuNeo preset and Supercollider code in the \QuNeo\QuNeoPresets\ directory of your Supercollider extentions directory.
+
+
+CLASSMETHODS::
+
+METHOD:: new
+Create a new instance of the QuNeo class to interface with the QuNeo hardware
+
+ARGUMENT:: defaultChannel
+This is the MIDI channel that will be used when creating new controls if one is not specified.
+
+ARGUMENT:: scInPort
+Specify the port within Supercollider that will recieve MIDI data from the QuNeo.  If this argument is not provided it will be auto-detected.
+
+ARGUMENT:: scOutPort
+Specify the port within Supercollider that will send MIDI data to the QuNeo.  If this argument is not provided it will be auto-detected.
+
+returns:: A new instance of the QuNeo class.
+
+
+INSTANCEMETHODS::
+
+METHOD:: createDrumPad
+Create a new drum pad controller and add it to the pads array.
+
+ARGUMENT:: index
+The index to create the new drum pad control with.
+
+ARGUMENT:: noteNum
+MIDI note number for the control.
+
+ARGUMENT:: pressCC
+MIDI CC number for pressure data.
+
+ARGUMENT:: xCC
+(describe argument here)
+
+ARGUMENT:: yCC
+(describe argument here)
+
+ARGUMENT:: channel
+MIDI channel for the control.  Will use the default if one is not provided.
+
+
+METHOD:: createVSlider
+Create a new vertical slider controller and add it to the vSliders array.
+
+ARGUMENT:: index
+The index to create the new verticle slider control with.
+
+ARGUMENT:: noteNum
+MIDI note number for the control.
+
+ARGUMENT:: pressCC
+MIDI CC number for pressure data.
+
+ARGUMENT:: locCC
+MIDI CC number for location data.
+
+ARGUMENT:: channel
+MIDI channel for the control.  Will use the default if one is not provided.
+
+ARGUMENT:: scInPort
+The port that this control will recieve MIDI data from the QuNeo on.
+
+ARGUMENT:: scOutPort
+The port that this control will use to send MIDI to the QuNeo.
+
+
+METHOD:: createHSlider
+Create a new horizontal slider controller and add it to the hSliders array.
+
+ARGUMENT:: index
+The index to create the new horizontal slider control with.
+
+ARGUMENT:: noteNum
+MIDI note number for the control.
+
+ARGUMENT:: pressCC
+MIDI CC number for pressure data.
+
+ARGUMENT:: locCC
+MIDI CC number for location data.
+
+ARGUMENT:: channel
+MIDI channel for the control.  Will use the default if one is not provided.
+
+ARGUMENT:: scInPort
+The port that this control will recieve MIDI data from the QuNeo on.
+
+ARGUMENT:: scOutPort
+The port that this control will use to send MIDI to the QuNeo.
+
+
+METHOD:: createLSlider
+Create a new long slider controller and add it to the lSliders array.
+
+ARGUMENT:: index
+The index to create the new long slider control with.
+
+ARGUMENT:: noteNum
+MIDI note number for the control.
+
+ARGUMENT:: pressCC
+MIDI CC number for pressure data.
+
+ARGUMENT:: locCC
+MIDI CC number for location data.
+
+ARGUMENT:: widthCC
+MIDI CC number for width data.
+
+ARGUMENT:: channel
+MIDI channel for the control.  Will use the default if one is not provided.
+
+ARGUMENT:: scInPort
+The port that this control will recieve MIDI data from the QuNeo on.
+
+ARGUMENT:: scOutPort
+The port that this control will use to send MIDI to the QuNeo.
+
+
+METHOD:: createCircle
+Create a new circle controller and add it to the circles array.
+
+ARGUMENT:: index
+The index to create the new circle control with.
+
+ARGUMENT:: noteNum
+MIDI note number for the control.
+
+ARGUMENT:: pressCC
+MIDI CC number for pressure data.
+
+ARGUMENT:: locCC
+MIDI CC number for location data.
+
+ARGUMENT:: channel
+MIDI channel for the control.  Will use the default if one is not provided.
+
+ARGUMENT:: scInPort
+The port that this control will use to recieve MIDI data from the QuNeo.
+
+ARGUMENT:: scOutPort
+The port that this control will use to send MIDI to the QuNeo.
+
+
+METHOD:: createButton
+Create a new button controller and add it to the buttons array.
+
+ARGUMENT:: index
+The index to create the new button control with.
+
+ARGUMENT:: noteNum
+MIDI note number for the control.
+
+ARGUMENT:: pressCC
+MIDI CC number for pressure data.
+
+ARGUMENT:: channel
+MIDI channel for the control.  Will use the default if one is not provided.
+
+ARGUMENT:: scInPort
+The port that this control will recieve MIDI data from the QuNeo on.
+
+ARGUMENT:: scOutPort
+The port that this control will use to send MIDI to the QuNeo.
+
+
+METHOD:: pads
+Array of pad controls.
+
+
+METHOD:: vSliders
+Array of verticle slider controls.
+
+
+METHOD:: hSliders
+Array of horizontal slider controls.
+
+
+METHOD:: lSliders
+Array of long slider controls.
+
+
+METHOD:: circles
+Array of circle controls.
+
+
+METHOD:: buttons
+Array of button controls
+
+
+METHOD:: scInPort
+Port that will recieve MIDI data from the QuNeo.
+
+
+METHOD:: scOutPort
+Port that will send MIDI data to the QuNeo.
+
+
+METHOD:: defaultChannel
+MIDI channel that new controls will use to recieve MIDI data unless one is specified when they are created.
+
+
+METHOD:: detectInPort
+Searches the MIDIClient source for a device named "QuNeo" and returns the port number.
+
+returns:: The MIDIClient port number.
+
+
+METHOD:: detectOutPort
+Searches the MIDIClient destinations for a device named "QuNeo" and returns the port number.
+
+returns:: The MIDIClient port number.
+
+
+METHOD:: debug
+Allows you to enable or disable debugging for every controller on the QuNeo.  This setting can also be changed on a per control and per datasource basis.
+
+ARGUMENT:: setDebug
+Enable debugging? true/false.
+
+
+METHOD:: postInfo
+Posts info about the current QuNeo setup to the console.
+
+
+PRIVATE:: init
+
+
+EXAMPLES::
+
+code::
+/*
+All examples assume QuNeo has been mapped properly and is stored in the variable ~quNeo.  Please see the sample files referanced at the top of this document for setup instructions.
+*/
+
+//Test if QuNeo is hooked up correctly
+~quNeo.debug(true)
+
+//Stop debugging
+~quNeo.debug(false)
+
+//Just debug pad 0
+~quNeo.pads[0].debug(true)
+
+//Stop debugging
+~quNeo.pads[0].debug(false)
+
+//Grab the current value of a control (local server only)
+~quNeo.pads[0].x.value.postln
+
+(
+//One pad theremin
+{
+var freq = ~quNeo.pads[0].x.kr(5000, 300);
+var amp = ~quNeo.pads[0].y.kr;
+SinOsc.ar(freq, mul: amp);
+}.play
+)
+
+(
+//One pad - One Slider - Using Ugens
+{
+var freq1 = ~quNeo.pads[0].x.kr(5000, 100);
+var freq2 = ~quNeo.pads[0].y.kr(5000, 100);
+var amp = ~quNeo.pads[0].press.kr;
+var lpfFreq = ~quNeo.vSliders[0].loc.kr(3000, 30);
+var lpfRes = 1 - ~quNeo.vSliders[0].press.kr(0.9, 0.1);
+var sin = Saw.ar(freq1) * Saw.ar(freq2) * amp;
+RLPF.ar(sin, lpfFreq, lpfRes);
+}.play
+)
+
+(
+//One pad - One Slider - Using maps
+{
+SynthDef(\test, {|freq1, freq2, amp, lpfFreq, lpfRes|
+var sin;
+freq1 = freq1 * 5000 + 100;
+freq2 = freq2 * 5000 + 100;
+lpfFreq = lpfFreq * 3000 + 30;
+lpfRes = 1 - lpfRes * 0.9 + 0.1;
+sin = Saw.ar(freq1) * Saw.ar(freq2) * amp;
+Out.ar([0,1], RLPF.ar(sin, lpfFreq, lpfRes));
+}).add;
+
+s.sync;
+
+Synth(\test, [
+\freq, ~quNeo.pads[0].x.map,
+\freq2, ~quNeo.pads[0].y.map,
+\amp, ~quNeo.pads[0].press.map,
+\lpfFreq, ~quNeo.vSliders[0].loc.map,
+\lpfRes, ~quNeo.vSliders[0].press.map
+])
+}.fork
+)
+
+(
+//Calling functions
+{
+SynthDef(\test, {|freq1, freq2, amp, lpfFreq, lpfRes|
+var sin = Saw.ar(freq1) * Saw.ar(freq2) * amp;
+lpfFreq = lpfFreq * 3000 + 200;
+sin = sin * EnvGen.ar(Env.perc, doneAction:2);
+Out.ar([0,1], RLPF.ar(sin, lpfFreq, lpfRes));
+}).add;
+
+s.sync;
+
+~quNeo.pads[0].note.onFunc = {
+Pbind(*[instrument: \test,
+freq1: Pseq([300,600,900,1200], 1),
+freq2: 1000,
+amp: 1,
+dur: 0.3,
+lpfFreq: ~quNeo.vSliders[0].loc.map,
+lpfRes: 0.5
+]).play;
+};
+
+~quNeo.pads[1].note.onFunc = {
+Pbind(*[instrument: \test,
+freq1: Pseq([300,600,900,1200] * 2, 1),
+freq2: 1000,
+amp: 1,
+dur: 0.3,
+lpfFreq: ~quNeo.vSliders[0].loc.map,
+lpfRes: 0.5
+]).play;
+};
+
+}.fork
+)
+::
\ No newline at end of file

Added: QuNeo/HelpSource/Classes/QuNeoButton.schelp
===================================================================
--- QuNeo/HelpSource/Classes/QuNeoButton.schelp                        (rev 0)
+++ QuNeo/HelpSource/Classes/QuNeoButton.schelp2013-05-17 20:09:22 UTC (rev 2591)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -0,0 +1,83 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+TITLE:: QuNeoButton
+summary:: A button controller used by the QuNeo class.
+categories:: Hardware&amp;gt;QuNeo
+related:: Classes/QuNeo, Classes/MidiCcBus, Classes/MidiNoteFunc, Classes/QuNeoCircleControl, Classes/QuNeoDrumPad, Classes/QuNeoGridPad, Classes/QuNeoLongSlider, Classes/QuNeoSlider
+
+DESCRIPTION::
+A button controller used by the QuNeo class.  Represents the record, stop and play buttons.  Can also be used for the bank select buttons depending on the setup.
+
+
+CLASSMETHODS::
+
+METHOD:: new
+Create a new button controller.  During regular use this is called from the QuNeo.createButton method.
+
+ARGUMENT:: noteNum
+MIDI note number for the control.
+
+ARGUMENT:: pressCC
+MIDI CC number for pressure data.
+
+ARGUMENT:: name
+Name of the control, used when printing debug info.
+
+ARGUMENT:: channel
+MIDI channel the control responds to.
+
+ARGUMENT:: scInPort
+Port that Supercollider will recieve MIDI data from.
+
+ARGUMENT:: scOutPort
+Port that Supercollider will send MIDI data to.
+
+returns:: A new QuNeo button control
+
+
+INSTANCEMETHODS::
+
+
+METHOD:: name
+Name of the control, used when printing debug info.
+
+
+METHOD:: noteNum
+The note number that data will be recieved on.
+
+
+METHOD:: note
+The MidiNoteFunc that deals with MIDI data related to the note.
+
+
+METHOD:: press
+MIDI CC number for pressure data.
+
+
+
+METHOD:: channel
+MIDI channel that the control will use to recieve MIDI data.
+
+
+
+METHOD:: scInPort
+Port that will recieve MIDI data from the QuNeo.
+
+
+METHOD:: scOutPort
+Port that will send MIDI data to the QuNeo.
+
+
+METHOD:: debug
+Allows you to enable or disable debugging for the control.  This setting can also be changed on a per datasource basis.
+
+ARGUMENT:: setDebug
+Enable debugging? true/false.
+
+
+PRIVATE:: init
+
+
+EXAMPLES::
+
+code::
+See QuNeo class for examples
+::
\ No newline at end of file

Added: QuNeo/HelpSource/Classes/QuNeoCircleControl.schelp
===================================================================
--- QuNeo/HelpSource/Classes/QuNeoCircleControl.schelp                        (rev 0)
+++ QuNeo/HelpSource/Classes/QuNeoCircleControl.schelp2013-05-17 20:09:22 UTC (rev 2591)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -0,0 +1,88 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+TITLE:: QuNeoCircleControl
+summary:: A circle controller used by the QuNeo class.
+categories:: Hardware&amp;gt;QuNeo
+related:: Classes/QuNeo, Classes/MidiCcBus, Classes/MidiNoteFunc, Classes/QuNeoButton, Classes/QuNeoDrumPad, Classes/QuNeoGridPad, Classes/QuNeoLongSlider, Classes/QuNeoSlider
+
+DESCRIPTION::
+A circle controller used by the QuNeo class.  Represents the 2 circle controllers on the lefthand side of the unit.
+
+
+CLASSMETHODS::
+
+METHOD:: new
+Create a new circle controller.  During regular use this is called from the QuNeo.createCircle method.
+
+ARGUMENT:: noteNum
+MIDI note number for the control.
+
+ARGUMENT:: pressCC
+MIDI CC number for pressure data.
+
+ARGUMENT:: locCC
+MIDI CC number for location data.
+
+ARGUMENT:: name
+Name of the control, used when printing debug info.
+
+ARGUMENT:: channel
+MIDI channel the control responds to.
+
+ARGUMENT:: scInPort
+Port that Supercollider will recieve MIDI data from.
+
+ARGUMENT:: scOutPort
+Port that Supercollider will send MIDI data to.
+
+returns:: A new QuNeo circle control
+
+
+INSTANCEMETHODS::
+
+
+METHOD:: name
+Name of the control, used when printing debug info.
+
+
+METHOD:: noteNum
+The note number that data will be recieved on.
+
+
+METHOD:: note
+The MidiNoteFunc that deals with MIDI data related to the note.
+
+
+METHOD:: press
+MIDI CC number for pressure data.
+
+
+METHOD:: loc
+MIDI CC number for location data.
+
+
+METHOD:: channel
+MIDI channel that the control will use to recieve MIDI data.
+
+
+METHOD:: scInPort
+Port that will recieve MIDI data from the QuNeo.
+
+
+METHOD:: scOutPort
+Port that will send MIDI data to the QuNeo.
+
+
+METHOD:: debug
+Allows you to enable or disable debugging for the control.  This setting can also be changed on a per datasource basis.
+
+ARGUMENT:: setDebug
+Enable debugging? true/false.
+
+
+PRIVATE:: init
+
+
+EXAMPLES::
+
+code::
+See QuNeo class for examples
+::
\ No newline at end of file

Added: QuNeo/HelpSource/Classes/QuNeoDrumPad.schelp
===================================================================
--- QuNeo/HelpSource/Classes/QuNeoDrumPad.schelp                        (rev 0)
+++ QuNeo/HelpSource/Classes/QuNeoDrumPad.schelp2013-05-17 20:09:22 UTC (rev 2591)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -0,0 +1,94 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+TITLE:: QuNeoDrumPad
+summary:: A drum pad controller used by the QuNeo class.
+categories:: Hardware&amp;gt;QuNeo
+related:: Classes/QuNeo, Classes/MidiCcBus, Classes/MidiNoteFunc, Classes/QuNeoButton, Classes/QuNeoCircleControl, Classes/QuNeoGridPad, Classes/QuNeoLongSlider, Classes/QuNeoSlider
+
+DESCRIPTION::
+A drumpad controller used by the QuNeo class.  Used to represent a pad that is set to drum mode.
+
+
+CLASSMETHODS::
+
+METHOD:: new
+Create a new drum pad controller.  During regular use this is called from the QuNeo.createDrumPad method.
+
+ARGUMENT:: noteNum
+MIDI note number for the control.
+
+ARGUMENT:: pressCC
+MIDI CC number for pressure data.
+
+ARGUMENT:: xCC
+MIDI CC number for X location data.
+
+ARGUMENT:: yCC
+MIDI CC number for Y location data.
+
+ARGUMENT:: name
+Name of the control, used when printing debug info.
+
+ARGUMENT:: channel
+MIDI channel the control responds to.
+
+ARGUMENT:: scInPort
+Port that Supercollider will recieve MIDI data from.
+
+ARGUMENT:: scOutPort
+Port that Supercollider will send MIDI data to.
+
+returns:: A new QuNeo drum pad control
+
+
+INSTANCEMETHODS::
+
+
+METHOD:: name
+Name of the control, used when printing debug info.
+
+
+METHOD:: noteNum
+The note number that data will be recieved on.
+
+
+METHOD:: note
+The MidiNoteFunc that deals with MIDI data related to the note.
+
+METHOD:: press
+MIDI CC number for pressure data.
+
+
+METHOD:: x
+MIDI CC number for location x data.
+
+
+METHOD:: y
+MIDI CC number for location y data.
+
+
+METHOD:: channel
+MIDI channel that the control will use to recieve MIDI data.
+
+
+METHOD:: scInPort
+Port that will recieve MIDI data from the QuNeo.
+
+
+METHOD:: scOutPort
+Port that will send MIDI data to the QuNeo.
+
+
+METHOD:: debug
+Allows you to enable or disable debugging for the control.  This setting can also be changed on a per datasource basis.
+
+ARGUMENT:: setDebug
+Enable debugging? true/false.
+
+
+PRIVATE:: init
+
+
+EXAMPLES::
+
+code::
+See QuNeo class for examples
+::
\ No newline at end of file

Added: QuNeo/HelpSource/Classes/QuNeoGridPad.schelp
===================================================================
--- QuNeo/HelpSource/Classes/QuNeoGridPad.schelp                        (rev 0)
+++ QuNeo/HelpSource/Classes/QuNeoGridPad.schelp2013-05-17 20:09:22 UTC (rev 2591)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -0,0 +1,80 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+TITLE:: QuNeoGridPad
+summary:: A gridpad controller used by the QuNeo class.
+categories:: Hardware&amp;gt;QuNeo
+related:: Classes/QuNeo, Classes/MidiCcBus, Classes/MidiNoteFunc, Classes/QuNeoButton, Classes/QuNeoCircleControl, Classes/QuNeoDrumPad, Classes/QuNeoLongSlider, Classes/QuNeoSlider
+
+DESCRIPTION::
+A gridpad controller used by the QuNeo class.  Used to represent a pad that is set to grid mode.
+
+
+CLASSMETHODS::
+
+METHOD:: new
+Create a new grid pad controller.  During regular use this is called from the QuNeo.createGridPad method.
+
+ARGUMENT:: noteNum
+MIDI note number for the control.
+
+ARGUMENT:: pressCC
+MIDI CC number for pressure data.
+
+ARGUMENT:: name
+Name of the control, used when printing debug info.
+
+ARGUMENT:: channel
+MIDI channel the control responds to.
+
+ARGUMENT:: scInPort
+Port that Supercollider will recieve MIDI data from.
+
+ARGUMENT:: scOutPort
+Port that Supercollider will send MIDI data to.
+
+returns:: A new QuNeo grid pad control
+
+
+INSTANCEMETHODS::
+
+METHOD:: name
+Name of the control, used when printing debug info.
+
+METHOD:: press
+(describe method here)
+
+returns:: (describe returnvalue here)
+
+METHOD:: noteNum
+(describe method here)
+
+returns:: (describe returnvalue here)
+
+METHOD:: channel
+(describe method here)
+
+returns:: (describe returnvalue here)
+
+METHOD:: debug
+(describe method here)
+
+ARGUMENT:: setDebug
+(describe argument here)
+
+returns:: (describe returnvalue here)
+
+
+METHOD:: scInPort
+Port that will recieve MIDI data from the QuNeo.
+
+
+METHOD:: scOutPort
+Port that will send MIDI data to the QuNeo.
+
+
+PRIVATE:: init
+
+
+EXAMPLES::
+
+code::
+See QuNeo class for examples
+::
\ No newline at end of file

Added: QuNeo/HelpSource/Classes/QuNeoLongSlider.schelp
===================================================================
--- QuNeo/HelpSource/Classes/QuNeoLongSlider.schelp                        (rev 0)
+++ QuNeo/HelpSource/Classes/QuNeoLongSlider.schelp2013-05-17 20:09:22 UTC (rev 2591)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -0,0 +1,96 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+TITLE:: QuNeoLongSlider
+summary:: A long slider controller used by the QuNeo class.
+categories:: Hardware&amp;gt;QuNeo
+related:: Classes/QuNeo, Classes/MidiCcBus, Classes/MidiNoteFunc, Classes/QuNeoButton, Classes/QuNeoCircleControl, Classes/QuNeoDrumPad, Classes/QuNeoGridPad, Classes/QuNeoSlider
+
+DESCRIPTION::
+A long slider controller used by the QuNeo class.  Represents the long slider on the bottom of the unit.
+
+
+CLASSMETHODS::
+
+METHOD:: new
+Create a new long slider controller.  During regular use this is called from the QuNeo.createLSlider method.
+
+ARGUMENT:: noteNum
+MIDI note number for the control.
+
+ARGUMENT:: pressCC
+MIDI CC number for pressure data.
+
+ARGUMENT:: locCC
+MIDI CC number for location data.
+
+ARGUMENT:: widthCC
+MIDI CC number for width data.
+
+ARGUMENT:: name
+Name of the control, used when printing debug info.
+
+ARGUMENT:: channel
+MIDI channel the control responds to.
+
+ARGUMENT:: scInPort
+Port that Supercollider will recieve MIDI data from.
+
+ARGUMENT:: scOutPort
+Port that Supercollider will send MIDI data to.
+
+returns:: A new QuNeo long slider control
+
+
+INSTANCEMETHODS::
+
+
+METHOD:: name
+Name of the control, used when printing debug info.
+
+
+METHOD:: noteNum
+The note number that data will be recieved on.
+
+
+METHOD:: note
+The MidiNoteFunc that deals with MIDI data related to the note.
+
+
+METHOD:: press
+MIDI CC number for pressure data.
+
+
+METHOD:: loc
+MIDI CC number for location data.
+
+
+METHOD:: width
+MIDI CC number for width data.
+
+
+METHOD:: channel
+MIDI channel that the control will use to recieve MIDI data.
+
+
+METHOD:: scInPort
+Port that will recieve MIDI data from the QuNeo.
+
+
+METHOD:: scOutPort
+Port that will send MIDI data to the QuNeo.
+
+
+METHOD:: debug
+Allows you to enable or disable debugging for the control.  This setting can also be changed on a per datasource basis.
+
+ARGUMENT:: setDebug
+Enable debugging? true/false.
+
+
+
+PRIVATE:: init
+
+
+EXAMPLES::
+
+code::
+See QuNeo class for examples
+::
\ No newline at end of file

Added: QuNeo/HelpSource/Classes/QuNeoSlider.schelp
===================================================================
--- QuNeo/HelpSource/Classes/QuNeoSlider.schelp                        (rev 0)
+++ QuNeo/HelpSource/Classes/QuNeoSlider.schelp2013-05-17 20:09:22 UTC (rev 2591)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -0,0 +1,89 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+TITLE:: QuNeoSlider
+summary:: A slide controller used by the QuNeo class.
+categories:: Hardware&amp;gt;QuNeo
+related:: Classes/QuNeo, Classes/MidiCcBus, Classes/MidiNoteFunc, Classes/QuNeoButton, Classes/QuNeoCircleControl, Classes/QuNeoDrumPad, Classes/QuNeoGridPad, Classes/QuNeoLongSlider
+
+DESCRIPTION::
+A slide controller used by the QuNeo class.  Used to represent the 4 vertical sliders and the 4 horizontal sliders on the unit.  The long slider is controlled by the QuNeoLongSlider class as it also sends width information.
+
+
+CLASSMETHODS::
+
+METHOD:: new
+Create a new slider controller.  During regular use this is called from the QuNeo.createVSlider and QuNeo.createHSlider method.
+
+ARGUMENT:: noteNum
+MIDI note number for the control.
+
+ARGUMENT:: pressCC
+MIDI CC number for pressure data.
+
+ARGUMENT:: locCC
+MIDI CC number for location data.
+
+ARGUMENT:: name
+Name of the control, used when printing debug info.
+
+ARGUMENT:: channel
+MIDI channel the control responds to.
+
+ARGUMENT:: scInPort
+Port that Supercollider will recieve MIDI data from.
+
+ARGUMENT:: scOutPort
+Port that Supercollider will send MIDI data to.
+
+returns:: A new QuNeo slider control
+
+
+INSTANCEMETHODS::
+
+
+METHOD:: name
+Name of the control, used when printing debug info.
+
+
+METHOD:: noteNum
+The note number that data will be recieved on.
+
+
+METHOD:: note
+The MidiNoteFunc that deals with MIDI data related to the note.
+
+
+METHOD:: press
+MIDI CC number for pressure data.
+
+
+METHOD:: loc
+MIDI CC number for location data.
+
+
+METHOD:: channel
+MIDI channel that the control will use to recieve MIDI data.
+
+
+METHOD:: scInPort
+Port that will recieve MIDI data from the QuNeo.
+
+
+METHOD:: scOutPort
+Port that will send MIDI data to the QuNeo.
+
+
+METHOD:: debug
+Allows you to enable or disable debugging for the control.  This setting can also be changed on a per datasource basis.
+
+ARGUMENT:: setDebug
+Enable debugging? true/false.
+
+
+
+PRIVATE:: init
+
+
+EXAMPLES::
+
+code::
+See QuNeo class for examples
+::
\ No newline at end of file

Added: QuNeo/MIDI/MidiCcBus.sc
===================================================================
--- QuNeo/MIDI/MidiCcBus.sc                        (rev 0)
+++ QuNeo/MIDI/MidiCcBus.sc2013-05-17 20:09:22 UTC (rev 2591)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -0,0 +1,51 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+/*
+MidiCcBus by Jonathan Siemasko - Email: schemawound-/E1597aS9LQAvxtiuMwx3w&amp;lt; at &amp;gt;public.gmane.org - Web: http://schemawound.com/
+
+This control registers a function to update a bus from a specific CC message/Channel combo.  The bus will output the values 0-1.
+Includes shotcuts for map, value and creating a Ugen from the bus
+*/
+
+MidiCcBus{
+var &amp;lt;cc, &amp;lt;channel, &amp;lt;scInPort, &amp;lt;scOutPort, &amp;lt;name;
+var &amp;lt;bus, displayDebugInfo, &amp;lt;&amp;gt;func;
+
+*new{|cc, channel = 0, scInPort, scOutPort, name|
+^super
+.newCopyArgs(cc, channel, scInPort, scOutPort, name)
+.init()
+}
+
+init{
+func = {};
+if(cc.notNil, {
+bus = Bus.control(Server.default, 1);
+//Set bus value.  Divide by 127 to normalize to 0..1
+MIDIdef.cc(name,
+{|val, num, chan, src|
+if (chan == channel, {
+bus.set(val/127);
+func.value(val/127, num, chan, src, name, displayDebugInfo);
+if(displayDebugInfo == true, {bus.get{|val|(name ++ ': ' ++ val).postln}});
+});
+},
+ccNum: cc,
+chan: channel
+//,srcID: scInPort
+).permanent = true;
+});
+}
+
+//Set to display debug values to the console
+debug{|setDebug = true| displayDebugInfo = setDebug;}
+
+//Returns a map for controlling a synth's node inputs
+map{^bus.asMap;}
+
+//Returns the current bus value
+value{^bus.getSynchronous;}
+
+//Returns an OutputProxy mapped to the bus to use it inside of SynthDefs
+//Range is normalized from 0 to 1
+ar{|mul=1, add=0, lagTime = 0.1|^MulAdd(Lag.ar(bus.ar(1), lagTime), mul, add);}
+kr{|mul=1, add=0, lagTime = 0.1|^MulAdd(Lag.kr(bus.kr(1), lagTime), mul, add);}
+}
\ No newline at end of file

Added: QuNeo/MIDI/MidiNoteFunc.sc
===================================================================
--- QuNeo/MIDI/MidiNoteFunc.sc                        (rev 0)
+++ QuNeo/MIDI/MidiNoteFunc.sc2013-05-17 20:09:22 UTC (rev 2591)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -0,0 +1,57 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+/*
+MidiNoteFunc by Jonathan Siemasko - Email: schemawound-/E1597aS9LQAvxtiuMwx3w&amp;lt; at &amp;gt;public.gmane.org - Web: http://schemawound.com/
+
+This control registers a function for note on and note off message
+*/
+
+MidiNoteFunc{
+var &amp;lt;noteNum, &amp;lt;channel, &amp;lt;scInPort, &amp;lt;scOutPort, &amp;lt;name;
+var displayDebugInfo, &amp;lt;&amp;gt;onFunc, &amp;lt;&amp;gt;offFunc;
+
+*new{|noteNum, channel = 0, scInPort, scOutPort, name|
+^super
+.newCopyArgs(noteNum, channel, scInPort, scOutPort, name)
+.init()
+}
+
+init{
+if(noteNum.notNil,
+{
+//Register On Function
+onFunc = {};
+if(noteNum.notNil, {
+MIDIdef.noteOn(name ++ \On,
+{|val, num, chan, src|
+if (chan == channel, {
+onFunc.value(val, num, chan, src, name, displayDebugInfo); //velocity and midi note are passed to the function
+if(displayDebugInfo == true, {(name ++ \On ++ ': NoteNum: ' ++ num ++ ' - Vel: ' ++ val).postln;});
+});
+},
+noteNum: noteNum,
+chan: channel
+//, srcID: scInPort
+).permanent = true;
+});
+
+//Register Off Function
+offFunc = {};
+if(noteNum.notNil, {
+MIDIdef.noteOff(name ++ \Off,
+{|val, num, chan, src|
+if (chan == channel, {
+offFunc.value(val, num); //velocity and midi note are passed to the function
+if(displayDebugInfo == true, {(name ++ \Off ++ ': NoteNum: ' ++ num ++ ' - Vel: ' ++ val).postln;});
+});
+},
+noteNum: noteNum,
+chan: channel
+//, srcID: scInPort
+).permanent = true;
+});
+}
+);
+}
+
+//Set to display debug values to the console
+debug{|setDebug = true| displayDebugInfo = setDebug;}
+}
\ No newline at end of file

Added: QuNeo/QuNeo.sc
===================================================================
--- QuNeo/QuNeo.sc                        (rev 0)
+++ QuNeo/QuNeo.sc2013-05-17 20:09:22 UTC (rev 2591)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -0,0 +1,92 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+/*
+QuNeo by Jonathan Siemasko - Email: schemawound-/E1597aS9LQAvxtiuMwx3w&amp;lt; at &amp;gt;public.gmane.org - Web: http://schemawound.com/
+*/
+
+QuNeo{
+var &amp;lt;defaultChannel, &amp;lt;scInPort, &amp;lt;scOutPort, &amp;lt;pads, &amp;lt;hSliders, &amp;lt;vSliders, &amp;lt;lSliders, &amp;lt;buttons, &amp;lt;circles;
+
+*new{|defaultChannel = 0, scInPort, scOutPort|
+//If scInPort and scOutPort are left blank they will be detected during init.
+^super
+.newCopyArgs(defaultChannel, scInPort, scOutPort)
+    .init()
+}
+
+init{
+//Connect to MIDI sources if noone has bothered to do it yet.
+if(MIDIClient.sources.isNil, {MIDIIn.connect});
+//Find QUNEO in and out ports if not specified during creation.
+if(scInPort.isNil, {scInPort = this.detectInPort});
+if(scOutPort.isNil, {scOutPort = this.detectOutPort});
+//Create control arrays
+pads = Array.newClear(16);
+hSliders = Array.newClear(16);
+vSliders = Array.newClear(16);
+lSliders = Array.newClear(4);
+buttons = Array.newClear(16);
+circles = Array.newClear(8);
+this.postInfo;
+}
+
+postInfo{
+''.postln;
+('QuNeo: In - ' ++ scInPort ++ ' / Out - ' ++ scOutPort).postln;
+(Char.tab ++ 'Pads - ' ++ pads.size).postln;
+(Char.tab ++ 'Horizontal Sliders - ' ++ hSliders.size).postln;
+(Char.tab ++ 'Vertical Sliders - ' ++ vSliders.size).postln;
+(Char.tab ++ 'Long Sliders - ' ++ lSliders.size).postln;
+(Char.tab ++ 'Buttons - ' ++ buttons.size).postln;
+(Char.tab ++ 'Circles - ' ++ circles.size).postln;
+''.postln;
+}
+
+detectInPort{^(MIDIClient.sources.detect({|item| item.device.find("QUNEO").notNil}) !? _.uid ? 0);}
+
+detectOutPort{^(MIDIClient.destinations.detect({|item| item.device.find("QUNEO").notNil}) !? _.uid ? 0);}
+
+createDrumPad{|index, noteNum, pressCC, xCC, yCC, channel|
+var name = \drumPad ++ '_' ++ index;
+if(channel.isNil, {channel = defaultChannel});
+pads = pads.put(index, QuNeoDrumPad(noteNum, pressCC, xCC, yCC, name, channel, scInPort, scOutPort));
+}
+
+createHSlider{|index, noteNum, pressCC, locCC, channel = 0, scInPort, scOutPort|
+var name = \hSlider ++ '_' ++ index;
+if(channel.isNil, {channel = defaultChannel});
+hSliders = hSliders.put(index, QuNeoSlider(noteNum, pressCC, locCC, name, channel, scInPort, scOutPort));
+}
+
+createVSlider{|index, noteNum, pressCC, locCC, channel = 0, scInPort, scOutPort|
+var name = \vSlider ++ '_' ++ index;
+if(channel.isNil, {channel = defaultChannel});
+vSliders = vSliders.put(index, QuNeoSlider(noteNum, pressCC, locCC, name, channel, scInPort, scOutPort));
+}
+
+createLSlider{|index, noteNum, pressCC, locCC, widthCC, channel = 0, scInPort, scOutPort|
+var name = \longSlider ++ '_' ++ index;
+if(channel.isNil, {channel = defaultChannel});
+lSliders = lSliders.put(index, QuNeoLongSlider(noteNum, pressCC, locCC, widthCC, name, channel, scInPort, scOutPort));
+}
+
+createButton{|index, noteNum, pressCC, channel = 0, scInPort, scOutPort|
+var name = \button ++ '_' ++ index;
+if(channel.isNil, {channel = defaultChannel});
+buttons = buttons.put(index, QuNeoButton(noteNum, pressCC, name, channel, scInPort, scOutPort));
+}
+
+createCircle{|index, noteNum, pressCC, locCC, channel = 0, scInPort, scOutPort|
+var name = \circle ++ '_' ++ index;
+if(channel.isNil, {channel = defaultChannel});
+circles = circles.put(index, QuNeoCircleControl(noteNum, pressCC, locCC, name, channel, scInPort, scOutPort));
+}
+
+//Set debug values for all underlying controls
+debug{|setDebug = true|
+pads.do{|pad| if(pad.notNil, {pad.debug(setDebug)})};
+hSliders.do{|slider| if(slider.notNil, {slider.debug(setDebug)})};
+vSliders.do{|slider| if(slider.notNil, {slider.debug(setDebug)})};
+lSliders.do{|slider| if(slider.notNil, {slider.debug(setDebug)})};
+buttons.do{|button| if(button.notNil, {button.debug(setDebug)})};
+circles.do{|circle| if(circle.notNil, {circle.debug(setDebug)})};
+}
+}
\ No newline at end of file

Added: QuNeo/QuNeoPresets/BasicSC_QuNeo.quneopreset
===================================================================
--- QuNeo/QuNeoPresets/BasicSC_QuNeo.quneopreset                        (rev 0)
+++ QuNeo/QuNeoPresets/BasicSC_QuNeo.quneopreset2013-05-17 20:09:22 UTC (rev 2591)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -0,0 +1 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+{ "ComponentSettings" : { "HSliders" : { "HSlider0" : { "hB1Channel" : 15, "hB1inLocation" : -1, "hB1outLocPassThruRange" : 127, "hB1outLocation" : 93, "hB1outNote" : 39, "hB1outNotePressMode" : 0, "hB1outPress" : 92, "hB1outPressValue" : -1, "hB1outVelocityValue" : 127, "hB2Channel" : 15, "hB2inLocation" : -1, "hB2outLocPassThruRange" : 127, "hB2outLocation" : 95, "hB2outNote" : 40, "hB2outNotePressMode" : 0, "hB2outPress" : 94, "hB2outPressValue" : -1, "hB2outVelocityValue" : 127, "hB3Channel" : 15, "hB3inLocation" : -1, "hB3outLocPassThruRange" : 127, "hB3outLocation" : 97, "hB3outNote" : 41, "hB3outNotePressMode" : 0, "hB3outPress" : 96, "hB3outPressValue" : -1, "hB3outVelocityValue" : 127, "hB4Channel" : 15, "hB4inLocation" : -1, "hB4outLocPassThruRange" : 127, "hB4outLocation" : 99,
  "hB4outNote" : 42, "hB4outNotePressMode" : 0, "hB4outPress" : 98, "hB4outPressValue" : -1, "hB4outVelocityValue" : 127 }, "HSlider1" : { "hB1Channel" : 15, "hB1inLocation" : -1, "hB1outLocPassThruRange" : 127, "hB1outLocation" : 101, "hB1outNote" : 43, "hB1outNotePressMode" : 0, "hB1outPress" : 100, "hB1outPressValue" : -1, "hB1outVelocityValue" : 127, "hB2Channel" : 15, "hB2inLocation" : -1, "hB2outLocPassThruRange" : 127, "hB2outLocation" : 103, "hB2outNote" : 44, "hB2outNotePressMode" : 0, "hB2outPress" : 102, "hB2outPressValue" : -1, "hB2outVelocityValue" : 127, "hB3Channel" : 15, "hB3inLocation" : -1, "hB3outLocPassThruRange" : 127, "hB3outLocation" : 105, "hB3outNote" : 45, "hB3outNotePressMode" : 0, "hB3outPress" : 104, "hB3outPressValue" : -1, "hB3outVelocityValue" : 127, "hB4Ch
 annel" : 15, "hB4inLocation" : -1, "hB4outLocPassThruRange" : 127, "hB4outLocation" : 107, "hB4outNote" : 46, "hB4outNotePressMode" : 0, "hB4outPress" : 106, "hB4outPressValue" : -1, "hB4outVelocityValue" : 127 }, "HSlider2" : { "hB1Channel" : 15, "hB1inLocation" : -1, "hB1outLocPassThruRange" : 127, "hB1outLocation" : 109, "hB1outNote" : 47, "hB1outNotePressMode" : 0, "hB1outPress" : 108, "hB1outPressValue" : -1, "hB1outVelocityValue" : 127, "hB2Channel" : 15, "hB2inLocation" : -1, "hB2outLocPassThruRange" : 127, "hB2outLocation" : 111, "hB2outNote" : 48, "hB2outNotePressMode" : 0, "hB2outPress" : 110, "hB2outPressValue" : -1, "hB2outVelocityValue" : 127, "hB3Channel" : 15, "hB3inLocation" : -1, "hB3outLocPassThruRange" : 127, "hB3outLocation" : 113, "hB3outNote" : 49, "hB3outNotePressM
 ode" : 0, "hB3outPress" : 112, "hB3outPressValue" : -1, "hB3outVelocityValue" : 127, "hB4Channel" : 15, "hB4inLocation" : -1, "hB4outLocPassThruRange" : 127, "hB4outLocation" : 115, "hB4outNote" : 50, "hB4outNotePressMode" : 0, "hB4outPress" : 114, "hB4outPressValue" : -1, "hB4outVelocityValue" : 127 }, "HSlider3" : { "hB1Channel" : 15, "hB1inLocation" : -1, "hB1outLocPassThruRange" : 127, "hB1outLocation" : 117, "hB1outNote" : 51, "hB1outNotePressMode" : 0, "hB1outPress" : 116, "hB1outPressValue" : -1, "hB1outVelocityValue" : 127, "hB2Channel" : 15, "hB2inLocation" : -1, "hB2outLocPassThruRange" : 127, "hB2outLocation" : 119, "hB2outNote" : 52, "hB2outNotePressMode" : 0, "hB2outPress" : 118, "hB2outPressValue" : -1, "hB2outVelocityValue" : 127, "hB3Channel" : 15, "hB3inLocation" : -1, "
 hB3outLocPassThruRange" : 127, "hB3outLocation" : 121, "hB3outNote" : 53, "hB3outNotePressMode" : 0, "hB3outPress" : 120, "hB3outPressValue" : -1, "hB3outVelocityValue" : 127, "hB4Channel" : 15, "hB4inLocation" : -1, "hB4outLocPassThruRange" : 127, "hB4outLocation" : 123, "hB4outNote" : 54, "hB4outNotePressMode" : 0, "hB4outPress" : 122, "hB4outPressValue" : -1, "hB4outVelocityValue" : 127 }, "hSliderInChannel" : 0, "hSliderLocalLEDControl" : 2, "hSliderOffThreshold" : 5, "hSliderOnThreshold" : 10, "hSliderSensitivity" : 66 }, "LeftRightButtons" : { "LeftRightButton0" : { "leftrightChannel" : 0, "leftrightEnableSwitch" : 2, "leftrightLInNote" : -1, "leftrightLOutNote" : -1, "leftrightLOutNotePressMode" : 0, "leftrightLOutPress" : -1, "leftrightLOutPressValue" : -1, "leftrightLOutVelocity
 Value" : 127, "leftrightRInNote" : -1, "leftrightROutNote" : -1, "leftrightROutNotePressMode" : 0, "leftrightROutPress" : -1, "leftrightROutPressValue" : -1, "leftrightROutVelocityValue" : 127 }, "LeftRightButton1" : { "leftrightChannel" : 0, "leftrightEnableSwitch" : 2, "leftrightLInNote" : -1, "leftrightLOutNote" : -1, "leftrightLOutNotePressMode" : 0, "leftrightLOutPress" : -1, "leftrightLOutPressValue" : -1, "leftrightLOutVelocityValue" : 127, "leftrightRInNote" : -1, "leftrightROutNote" : -1, "leftrightROutNotePressMode" : 0, "leftrightROutPress" : -1, "leftrightROutPressValue" : -1, "leftrightROutVelocityValue" : 127 }, "LeftRightButton2" : { "leftrightChannel" : 0, "leftrightEnableSwitch" : 2, "leftrightLInNote" : -1, "leftrightLOutNote" : -1, "leftrightLOutNotePressMode" : 0, "le
 ftrightLOutPress" : -1, "leftrightLOutPressValue" : -1, "leftrightLOutVelocityValue" : 127, "leftrightRInNote" : -1, "leftrightROutNote" : -1, "leftrightROutNotePressMode" : 0, "leftrightROutPress" : -1, "leftrightROutPressValue" : -1, "leftrightROutVelocityValue" : 127 }, "LeftRightButton3" : { "leftrightChannel" : 0, "leftrightEnableSwitch" : 2, "leftrightLInNote" : -1, "leftrightLOutNote" : -1, "leftrightLOutNotePressMode" : 0, "leftrightLOutPress" : -1, "leftrightLOutPressValue" : -1, "leftrightLOutVelocityValue" : 127, "leftrightRInNote" : -1, "leftrightROutNote" : -1, "leftrightROutNotePressMode" : 0, "leftrightROutPress" : -1, "leftrightROutPressValue" : -1, "leftrightROutVelocityValue" : 127 }, "leftrightInChannel" : 0, "leftrightLocalLEDControl" : 2, "leftrightOffThreshold" : 5,
  "leftrightOnThreshold" : 10, "leftrightSensitivity" : 66 }, "LongSliders" : { "LongSlider0" : { "lB1Channel" : 15, "lB1inLocation" : -1, "lB1inWidth" : -1, "lB1outLocPassThruRange" : 127, "lB1outLocation" : 49, "lB1outNote" : 16, "lB1outNotePressMode" : 0, "lB1outPress" : 48, "lB1outPressValue" : -1, "lB1outVelocityValue" : 127, "lB1outWidth" : 50, "lB2Channel" : 15, "lB2inLocation" : -1, "lB2inWidth" : -1, "lB2outLocPassThruRange" : 127, "lB2outLocation" : 52, "lB2outNote" : 17, "lB2outNotePressMode" : 0, "lB2outPress" : 51, "lB2outPressValue" : -1, "lB2outVelocityValue" : 127, "lB2outWidth" : 53, "lB3Channel" : 15, "lB3inLocation" : -1, "lB3inWidth" : -1, "lB3outLocPassThruRange" : 127, "lB3outLocation" : 55, "lB3outNote" : 18, "lB3outNotePressMode" : 0, "lB3outPress" : 54, "lB3outPre
 ssValue" : -1, "lB3outVelocityValue" : 127, "lB3outWidth" : 56, "lB4Channel" : 15, "lB4inLocation" : -1, "lB4inWidth" : -1, "lB4outLocPassThruRange" : 127, "lB4outLocation" : 58, "lB4outNote" : 19, "lB4outNotePressMode" : 0, "lB4outPress" : 57, "lB4outPressValue" : -1, "lB4outVelocityValue" : 127, "lB4outWidth" : 59 }, "lSliderInChannel" : 0, "lSliderLocalLEDControl" : 2, "lSliderOffThreshold" : 5, "lSliderOnThreshold" : 10, "lSliderSensitivity" : 131 }, "ModeButtons" : { "ModeButton0" : { "modeChannel" : 0, "modeEnableSwitch" : 0, "modeInNote" : -1, "modeOutNote" : -1, "modeOutPress" : -1, "modeOutVelocityValue" : 0 }, "modeLocalLEDControl" : 2, "modeOffThreshold" : 5, "modeOnThreshold" : 10, "modeSensitivity" : 66 }, "Pads" : { "Pad0" : { "enableGrid" : 0, "inDmNoteG" : -1, "inDmNoteR"
  : -1, "inGmNoteGNE" : -1, "inGmNoteGNW" : -1, "inGmNoteGSE" : -1, "inGmNoteGSW" : -1, "inGmNoteRNE" : -1, "inGmNoteRNW" : -1, "inGmNoteRSE" : -1, "inGmNoteRSW" : -1, "outDmNote" : 0, "outDmNotePressMode" : 0, "outDmPress" : 0, "outDmPressValue" : -1, "outDmVelocityValue" : -1, "outDmXCC" : 1, "outDmXReturn" : -1, "outDmXYReturn" : 63, "outDmYCC" : 2, "outDmYReturn" : -1, "outGmNoteNE" : -1, "outGmNoteNW" : -1, "outGmNotePressModeNE" : 0, "outGmNotePressModeNW" : 0, "outGmNotePressModeSE" : 0, "outGmNotePressModeSW" : 0, "outGmNoteSE" : -1, "outGmNoteSW" : -1, "outGmPressNE" : -1, "outGmPressNW" : -1, "outGmPressSE" : -1, "outGmPressSW" : -1, "outGmPressValueNE" : -1, "outGmPressValueNW" : -1, "outGmPressValueSE" : -1, "outGmPressValueSW" : -1, "outGmVelocityValueNE" : -1, "outGmVelocity
 ValueNW" : -1, "outGmVelocityValueSE" : -1, "outGmVelocityValueSW" : -1, "padChannel" : 15, "padSensitivityPerPad" : 119, "padSensitivityPerPadUI" : 0 }, "Pad1" : { "enableGrid" : 0, "inDmNoteG" : -1, "inDmNoteR" : -1, "inGmNoteGNE" : -1, "inGmNoteGNW" : -1, "inGmNoteGSE" : -1, "inGmNoteGSW" : -1, "inGmNoteRNE" : -1, "inGmNoteRNW" : -1, "inGmNoteRSE" : -1, "inGmNoteRSW" : -1, "outDmNote" : 1, "outDmNotePressMode" : 0, "outDmPress" : 3, "outDmPressValue" : -1, "outDmVelocityValue" : -1, "outDmXCC" : 4, "outDmXReturn" : -1, "outDmXYReturn" : 63, "outDmYCC" : 5, "outDmYReturn" : -1, "outGmNoteNE" : -1, "outGmNoteNW" : -1, "outGmNotePressModeNE" : 0, "outGmNotePressModeNW" : 0, "outGmNotePressModeSE" : 0, "outGmNotePressModeSW" : 0, "outGmNoteSE" : -1, "outGmNoteSW" : -1, "outGmPressNE" : -1
 , "outGmPressNW" : -1, "outGmPressSE" : -1, "outGmPressSW" : -1, "outGmPressValueNE" : -1, "outGmPressValueNW" : -1, "outGmPressValueSE" : -1, "outGmPressValueSW" : -1, "outGmVelocityValueNE" : -1, "outGmVelocityValueNW" : -1, "outGmVelocityValueSE" : -1, "outGmVelocityValueSW" : -1, "padChannel" : 15, "padSensitivityPerPad" : 119, "padSensitivityPerPadUI" : 0 }, "Pad10" : { "enableGrid" : 0, "inDmNoteG" : -1, "inDmNoteR" : -1, "inGmNoteGNE" : -1, "inGmNoteGNW" : -1, "inGmNoteGSE" : -1, "inGmNoteGSW" : -1, "inGmNoteRNE" : -1, "inGmNoteRNW" : -1, "inGmNoteRSE" : -1, "inGmNoteRSW" : -1, "outDmNote" : 10, "outDmNotePressMode" : 0, "outDmPress" : 30, "outDmPressValue" : -1, "outDmVelocityValue" : -1, "outDmXCC" : 31, "outDmXReturn" : -1, "outDmXYReturn" : 63, "outDmYCC" : 32, "outDmYReturn" 
 : -1, "outGmNoteNE" : -1, "outGmNoteNW" : -1, "outGmNotePressModeNE" : 0, "outGmNotePressModeNW" : 0, "outGmNotePressModeSE" : 0, "outGmNotePressModeSW" : 0, "outGmNoteSE" : -1, "outGmNoteSW" : -1, "outGmPressNE" : -1, "outGmPressNW" : -1, "outGmPressSE" : -1, "outGmPressSW" : -1, "outGmPressValueNE" : -1, "outGmPressValueNW" : -1, "outGmPressValueSE" : -1, "outGmPressValueSW" : -1, "outGmVelocityValueNE" : -1, "outGmVelocityValueNW" : -1, "outGmVelocityValueSE" : -1, "outGmVelocityValueSW" : -1, "padChannel" : 15, "padSensitivityPerPad" : 119, "padSensitivityPerPadUI" : 0 }, "Pad11" : { "enableGrid" : 0, "inDmNoteG" : -1, "inDmNoteR" : -1, "inGmNoteGNE" : -1, "inGmNoteGNW" : -1, "inGmNoteGSE" : -1, "inGmNoteGSW" : -1, "inGmNoteRNE" : -1, "inGmNoteRNW" : -1, "inGmNoteRSE" : -1, "inGmNote
 RSW" : -1, "outDmNote" : 11, "outDmNotePressMode" : 0, "outDmPress" : 33, "outDmPressValue" : -1, "outDmVelocityValue" : -1, "outDmXCC" : 34, "outDmXReturn" : -1, "outDmXYReturn" : 63, "outDmYCC" : 35, "outDmYReturn" : -1, "outGmNoteNE" : -1, "outGmNoteNW" : -1, "outGmNotePressModeNE" : 0, "outGmNotePressModeNW" : 0, "outGmNotePressModeSE" : 0, "outGmNotePressModeSW" : 0, "outGmNoteSE" : -1, "outGmNoteSW" : -1, "outGmPressNE" : -1, "outGmPressNW" : -1, "outGmPressSE" : -1, "outGmPressSW" : -1, "outGmPressValueNE" : -1, "outGmPressValueNW" : -1, "outGmPressValueSE" : -1, "outGmPressValueSW" : -1, "outGmVelocityValueNE" : -1, "outGmVelocityValueNW" : -1, "outGmVelocityValueSE" : -1, "outGmVelocityValueSW" : -1, "padChannel" : 15, "padSensitivityPerPad" : 119, "padSensitivityPerPadUI" : 0 }
 , "Pad12" : { "enableGrid" : 0, "inDmNoteG" : -1, "inDmNoteR" : -1, "inGmNoteGNE" : -1, "inGmNoteGNW" : -1, "inGmNoteGSE" : -1, "inGmNoteGSW" : -1, "inGmNoteRNE" : -1, "inGmNoteRNW" : -1, "inGmNoteRSE" : -1, "inGmNoteRSW" : -1, "outDmNote" : 12, "outDmNotePressMode" : 0, "outDmPress" : 36, "outDmPressValue" : -1, "outDmVelocityValue" : -1, "outDmXCC" : 37, "outDmXReturn" : -1, "outDmXYReturn" : 63, "outDmYCC" : 38, "outDmYReturn" : -1, "outGmNoteNE" : -1, "outGmNoteNW" : -1, "outGmNotePressModeNE" : 0, "outGmNotePressModeNW" : 0, "outGmNotePressModeSE" : 0, "outGmNotePressModeSW" : 0, "outGmNoteSE" : -1, "outGmNoteSW" : -1, "outGmPressNE" : -1, "outGmPressNW" : -1, "outGmPressSE" : -1, "outGmPressSW" : -1, "outGmPressValueNE" : -1, "outGmPressValueNW" : -1, "outGmPressValueSE" : -1, "out
 GmPressValueSW" : -1, "outGmVelocityValueNE" : -1, "outGmVelocityValueNW" : -1, "outGmVelocityValueSE" : -1, "outGmVelocityValueSW" : -1, "padChannel" : 15, "padSensitivityPerPad" : 119, "padSensitivityPerPadUI" : 0 }, "Pad13" : { "enableGrid" : 0, "inDmNoteG" : -1, "inDmNoteR" : -1, "inGmNoteGNE" : -1, "inGmNoteGNW" : -1, "inGmNoteGSE" : -1, "inGmNoteGSW" : -1, "inGmNoteRNE" : -1, "inGmNoteRNW" : -1, "inGmNoteRSE" : -1, "inGmNoteRSW" : -1, "outDmNote" : 13, "outDmNotePressMode" : 0, "outDmPress" : 39, "outDmPressValue" : -1, "outDmVelocityValue" : -1, "outDmXCC" : 40, "outDmXReturn" : -1, "outDmXYReturn" : 63, "outDmYCC" : 41, "outDmYReturn" : -1, "outGmNoteNE" : -1, "outGmNoteNW" : -1, "outGmNotePressModeNE" : 0, "outGmNotePressModeNW" : 0, "outGmNotePressModeSE" : 0, "outGmNotePressMo
 deSW" : 0, "outGmNoteSE" : -1, "outGmNoteSW" : -1, "outGmPressNE" : -1, "outGmPressNW" : -1, "outGmPressSE" : -1, "outGmPressSW" : -1, "outGmPressValueNE" : -1, "outGmPressValueNW" : -1, "outGmPressValueSE" : -1, "outGmPressValueSW" : -1, "outGmVelocityValueNE" : -1, "outGmVelocityValueNW" : -1, "outGmVelocityValueSE" : -1, "outGmVelocityValueSW" : -1, "padChannel" : 15, "padSensitivityPerPad" : 119, "padSensitivityPerPadUI" : 0 }, "Pad14" : { "enableGrid" : 0, "inDmNoteG" : -1, "inDmNoteR" : -1, "inGmNoteGNE" : -1, "inGmNoteGNW" : -1, "inGmNoteGSE" : -1, "inGmNoteGSW" : -1, "inGmNoteRNE" : -1, "inGmNoteRNW" : -1, "inGmNoteRSE" : -1, "inGmNoteRSW" : -1, "outDmNote" : 14, "outDmNotePressMode" : 0, "outDmPress" : 42, "outDmPressValue" : -1, "outDmVelocityValue" : -1, "outDmXCC" : 43, "outD
 mXReturn" : -1, "outDmXYReturn" : 63, "outDmYCC" : 44, "outDmYReturn" : -1, "outGmNoteNE" : -1, "outGmNoteNW" : -1, "outGmNotePressModeNE" : 0, "outGmNotePressModeNW" : 0, "outGmNotePressModeSE" : 0, "outGmNotePressModeSW" : 0, "outGmNoteSE" : -1, "outGmNoteSW" : -1, "outGmPressNE" : -1, "outGmPressNW" : -1, "outGmPressSE" : -1, "outGmPressSW" : -1, "outGmPressValueNE" : -1, "outGmPressValueNW" : -1, "outGmPressValueSE" : -1, "outGmPressValueSW" : -1, "outGmVelocityValueNE" : -1, "outGmVelocityValueNW" : -1, "outGmVelocityValueSE" : -1, "outGmVelocityValueSW" : -1, "padChannel" : 15, "padSensitivityPerPad" : 119, "padSensitivityPerPadUI" : 0 }, "Pad15" : { "enableGrid" : 0, "inDmNoteG" : -1, "inDmNoteR" : -1, "inGmNoteGNE" : -1, "inGmNoteGNW" : -1, "inGmNoteGSE" : -1, "inGmNoteGSW" : -1,
  "inGmNoteRNE" : -1, "inGmNoteRNW" : -1, "inGmNoteRSE" : -1, "inGmNoteRSW" : -1, "outDmNote" : 15, "outDmNotePressMode" : 0, "outDmPress" : 45, "outDmPressValue" : -1, "outDmVelocityValue" : -1, "outDmXCC" : 46, "outDmXReturn" : -1, "outDmXYReturn" : 63, "outDmYCC" : 47, "outDmYReturn" : -1, "outGmNoteNE" : -1, "outGmNoteNW" : -1, "outGmNotePressModeNE" : 0, "outGmNotePressModeNW" : 0, "outGmNotePressModeSE" : 0, "outGmNotePressModeSW" : 0, "outGmNoteSE" : -1, "outGmNoteSW" : -1, "outGmPressNE" : -1, "outGmPressNW" : -1, "outGmPressSE" : -1, "outGmPressSW" : -1, "outGmPressValueNE" : -1, "outGmPressValueNW" : -1, "outGmPressValueSE" : -1, "outGmPressValueSW" : -1, "outGmVelocityValueNE" : -1, "outGmVelocityValueNW" : -1, "outGmVelocityValueSE" : -1, "outGmVelocityValueSW" : -1, "padChann
 el" : 15, "padSensitivityPerPad" : 119, "padSensitivityPerPadUI" : 0 }, "Pad2" : { "enableGrid" : 0, "inDmNoteG" : -1, "inDmNoteR" : -1, "inGmNoteGNE" : -1, "inGmNoteGNW" : -1, "inGmNoteGSE" : -1, "inGmNoteGSW" : -1, "inGmNoteRNE" : -1, "inGmNoteRNW" : -1, "inGmNoteRSE" : -1, "inGmNoteRSW" : -1, "outDmNote" : 2, "outDmNotePressMode" : 0, "outDmPress" : 6, "outDmPressValue" : -1, "outDmVelocityValue" : -1, "outDmXCC" : 7, "outDmXReturn" : -1, "outDmXYReturn" : 63, "outDmYCC" : 8, "outDmYReturn" : -1, "outGmNoteNE" : -1, "outGmNoteNW" : -1, "outGmNotePressModeNE" : 0, "outGmNotePressModeNW" : 0, "outGmNotePressModeSE" : 0, "outGmNotePressModeSW" : 0, "outGmNoteSE" : -1, "outGmNoteSW" : -1, "outGmPressNE" : -1, "outGmPressNW" : -1, "outGmPressSE" : -1, "outGmPressSW" : -1, "outGmPressValueN
 E" : -1, "outGmPressValueNW" : -1, "outGmPressValueSE" : -1, "outGmPressValueSW" : -1, "outGmVelocityValueNE" : -1, "outGmVelocityValueNW" : -1, "outGmVelocityValueSE" : -1, "outGmVelocityValueSW" : -1, "padChannel" : 15, "padSensitivityPerPad" : 119, "padSensitivityPerPadUI" : 0 }, "Pad3" : { "enableGrid" : 0, "inDmNoteG" : -1, "inDmNoteR" : -1, "inGmNoteGNE" : -1, "inGmNoteGNW" : -1, "inGmNoteGSE" : -1, "inGmNoteGSW" : -1, "inGmNoteRNE" : -1, "inGmNoteRNW" : -1, "inGmNoteRSE" : -1, "inGmNoteRSW" : -1, "outDmNote" : 3, "outDmNotePressMode" : 0, "outDmPress" : 9, "outDmPressValue" : -1, "outDmVelocityValue" : -1, "outDmXCC" : 10, "outDmXReturn" : -1, "outDmXYReturn" : 63, "outDmYCC" : 11, "outDmYReturn" : -1, "outGmNoteNE" : -1, "outGmNoteNW" : -1, "outGmNotePressModeNE" : 0, "outGmNoteP
 ressModeNW" : 0, "outGmNotePressModeSE" : 0, "outGmNotePressModeSW" : 0, "outGmNoteSE" : -1, "outGmNoteSW" : -1, "outGmPressNE" : -1, "outGmPressNW" : -1, "outGmPressSE" : -1, "outGmPressSW" : -1, "outGmPressValueNE" : -1, "outGmPressValueNW" : -1, "outGmPressValueSE" : -1, "outGmPressValueSW" : -1, "outGmVelocityValueNE" : -1, "outGmVelocityValueNW" : -1, "outGmVelocityValueSE" : -1, "outGmVelocityValueSW" : -1, "padChannel" : 15, "padSensitivityPerPad" : 119, "padSensitivityPerPadUI" : 0 }, "Pad4" : { "enableGrid" : 0, "inDmNoteG" : -1, "inDmNoteR" : -1, "inGmNoteGNE" : -1, "inGmNoteGNW" : -1, "inGmNoteGSE" : -1, "inGmNoteGSW" : -1, "inGmNoteRNE" : -1, "inGmNoteRNW" : -1, "inGmNoteRSE" : -1, "inGmNoteRSW" : -1, "outDmNote" : 4, "outDmNotePressMode" : 0, "outDmPress" : 12, "outDmPressVa
 lue" : -1, "outDmVelocityValue" : -1, "outDmXCC" : 13, "outDmXReturn" : -1, "outDmXYReturn" : 63, "outDmYCC" : 14, "outDmYReturn" : -1, "outGmNoteNE" : -1, "outGmNoteNW" : -1, "outGmNotePressModeNE" : 0, "outGmNotePressModeNW" : 0, "outGmNotePressModeSE" : 0, "outGmNotePressModeSW" : 0, "outGmNoteSE" : -1, "outGmNoteSW" : -1, "outGmPressNE" : -1, "outGmPressNW" : -1, "outGmPressSE" : -1, "outGmPressSW" : -1, "outGmPressValueNE" : -1, "outGmPressValueNW" : -1, "outGmPressValueSE" : -1, "outGmPressValueSW" : -1, "outGmVelocityValueNE" : -1, "outGmVelocityValueNW" : -1, "outGmVelocityValueSE" : -1, "outGmVelocityValueSW" : -1, "padChannel" : 15, "padSensitivityPerPad" : 119, "padSensitivityPerPadUI" : 0 }, "Pad5" : { "enableGrid" : 0, "inDmNoteG" : -1, "inDmNoteR" : -1, "inGmNoteGNE" : -1, 
 "inGmNoteGNW" : -1, "inGmNoteGSE" : -1, "inGmNoteGSW" : -1, "inGmNoteRNE" : -1, "inGmNoteRNW" : -1, "inGmNoteRSE" : -1, "inGmNoteRSW" : -1, "outDmNote" : 5, "outDmNotePressMode" : 0, "outDmPress" : 15, "outDmPressValue" : -1, "outDmVelocityValue" : -1, "outDmXCC" : 16, "outDmXReturn" : -1, "outDmXYReturn" : 63, "outDmYCC" : 17, "outDmYReturn" : -1, "outGmNoteNE" : -1, "outGmNoteNW" : -1, "outGmNotePressModeNE" : 0, "outGmNotePressModeNW" : 0, "outGmNotePressModeSE" : 0, "outGmNotePressModeSW" : 0, "outGmNoteSE" : -1, "outGmNoteSW" : -1, "outGmPressNE" : -1, "outGmPressNW" : -1, "outGmPressSE" : -1, "outGmPressSW" : -1, "outGmPressValueNE" : -1, "outGmPressValueNW" : -1, "outGmPressValueSE" : -1, "outGmPressValueSW" : -1, "outGmVelocityValueNE" : -1, "outGmVelocityValueNW" : -1, "outGmVel
 ocityValueSE" : -1, "outGmVelocityValueSW" : -1, "padChannel" : 15, "padSensitivityPerPad" : 119, "padSensitivityPerPadUI" : 0 }, "Pad6" : { "enableGrid" : 0, "inDmNoteG" : -1, "inDmNoteR" : -1, "inGmNoteGNE" : -1, "inGmNoteGNW" : -1, "inGmNoteGSE" : -1, "inGmNoteGSW" : -1, "inGmNoteRNE" : -1, "inGmNoteRNW" : -1, "inGmNoteRSE" : -1, "inGmNoteRSW" : -1, "outDmNote" : 6, "outDmNotePressMode" : 0, "outDmPress" : 18, "outDmPressValue" : -1, "outDmVelocityValue" : -1, "outDmXCC" : 19, "outDmXReturn" : -1, "outDmXYReturn" : 63, "outDmYCC" : 20, "outDmYReturn" : -1, "outGmNoteNE" : -1, "outGmNoteNW" : -1, "outGmNotePressModeNE" : 0, "outGmNotePressModeNW" : 0, "outGmNotePressModeSE" : 0, "outGmNotePressModeSW" : 0, "outGmNoteSE" : -1, "outGmNoteSW" : -1, "outGmPressNE" : -1, "outGmPressNW" : -1
 , "outGmPressSE" : -1, "outGmPressSW" : -1, "outGmPressValueNE" : -1, "outGmPressValueNW" : -1, "outGmPressValueSE" : -1, "outGmPressValueSW" : -1, "outGmVelocityValueNE" : -1, "outGmVelocityValueNW" : -1, "outGmVelocityValueSE" : -1, "outGmVelocityValueSW" : -1, "padChannel" : 15, "padSensitivityPerPad" : 119, "padSensitivityPerPadUI" : 0 }, "Pad7" : { "enableGrid" : 0, "inDmNoteG" : -1, "inDmNoteR" : -1, "inGmNoteGNE" : -1, "inGmNoteGNW" : -1, "inGmNoteGSE" : -1, "inGmNoteGSW" : -1, "inGmNoteRNE" : -1, "inGmNoteRNW" : -1, "inGmNoteRSE" : -1, "inGmNoteRSW" : -1, "outDmNote" : 7, "outDmNotePressMode" : 0, "outDmPress" : 21, "outDmPressValue" : -1, "outDmVelocityValue" : -1, "outDmXCC" : 22, "outDmXReturn" : -1, "outDmXYReturn" : 63, "outDmYCC" : 23, "outDmYReturn" : -1, "outGmNoteNE" : -
 1, "outGmNoteNW" : -1, "outGmNotePressModeNE" : 0, "outGmNotePressModeNW" : 0, "outGmNotePressModeSE" : 0, "outGmNotePressModeSW" : 0, "outGmNoteSE" : -1, "outGmNoteSW" : -1, "outGmPressNE" : -1, "outGmPressNW" : -1, "outGmPressSE" : -1, "outGmPressSW" : -1, "outGmPressValueNE" : -1, "outGmPressValueNW" : -1, "outGmPressValueSE" : -1, "outGmPressValueSW" : -1, "outGmVelocityValueNE" : -1, "outGmVelocityValueNW" : -1, "outGmVelocityValueSE" : -1, "outGmVelocityValueSW" : -1, "padChannel" : 15, "padSensitivityPerPad" : 119, "padSensitivityPerPadUI" : 0 }, "Pad8" : { "enableGrid" : 0, "inDmNoteG" : -1, "inDmNoteR" : -1, "inGmNoteGNE" : -1, "inGmNoteGNW" : -1, "inGmNoteGSE" : -1, "inGmNoteGSW" : -1, "inGmNoteRNE" : -1, "inGmNoteRNW" : -1, "inGmNoteRSE" : -1, "inGmNoteRSW" : -1, "outDmNote" :
  8, "outDmNotePressMode" : 0, "outDmPress" : 24, "outDmPressValue" : -1, "outDmVelocityValue" : -1, "outDmXCC" : 25, "outDmXReturn" : -1, "outDmXYReturn" : 63, "outDmYCC" : 26, "outDmYReturn" : -1, "outGmNoteNE" : -1, "outGmNoteNW" : -1, "outGmNotePressModeNE" : 0, "outGmNotePressModeNW" : 0, "outGmNotePressModeSE" : 0, "outGmNotePressModeSW" : 0, "outGmNoteSE" : -1, "outGmNoteSW" : -1, "outGmPressNE" : -1, "outGmPressNW" : -1, "outGmPressSE" : -1, "outGmPressSW" : -1, "outGmPressValueNE" : -1, "outGmPressValueNW" : -1, "outGmPressValueSE" : -1, "outGmPressValueSW" : -1, "outGmVelocityValueNE" : -1, "outGmVelocityValueNW" : -1, "outGmVelocityValueSE" : -1, "outGmVelocityValueSW" : -1, "padChannel" : 15, "padSensitivityPerPad" : 119, "padSensitivityPerPadUI" : 0 }, "Pad9" : { "enableGrid"
  : 0, "inDmNoteG" : -1, "inDmNoteR" : -1, "inGmNoteGNE" : -1, "inGmNoteGNW" : -1, "inGmNoteGSE" : -1, "inGmNoteGSW" : -1, "inGmNoteRNE" : -1, "inGmNoteRNW" : -1, "inGmNoteRSE" : -1, "inGmNoteRSW" : -1, "outDmNote" : 9, "outDmNotePressMode" : 0, "outDmPress" : 27, "outDmPressValue" : -1, "outDmVelocityValue" : -1, "outDmXCC" : 28, "outDmXReturn" : -1, "outDmXYReturn" : 63, "outDmYCC" : 29, "outDmYReturn" : -1, "outGmNoteNE" : -1, "outGmNoteNW" : -1, "outGmNotePressModeNE" : 0, "outGmNotePressModeNW" : 0, "outGmNotePressModeSE" : 0, "outGmNotePressModeSW" : 0, "outGmNoteSE" : -1, "outGmNoteSW" : -1, "outGmPressNE" : -1, "outGmPressNW" : -1, "outGmPressSE" : -1, "outGmPressSW" : -1, "outGmPressValueNE" : -1, "outGmPressValueNW" : -1, "outGmPressValueSE" : -1, "outGmPressValueSW" : -1, "outG
 mVelocityValueNE" : -1, "outGmVelocityValueNW" : -1, "outGmVelocityValueSE" : -1, "outGmVelocityValueSW" : -1, "padChannel" : 15, "padSensitivityPerPad" : 119, "padSensitivityPerPadUI" : 0 }, "bank1TransposeInterval" : 0, "bank2TransposeInterval" : 16, "bank3TransposeInterval" : 32, "bank4TransposeInterval" : 48, "cornerIsolation" : 80, "localLEDControl" : 2, "padBankChangeMode" : 0, "padDrumInChannel" : 0, "padGridDiscreteInChannel" : 1, "padGridDualInChannel" : 2, "padOffThreshold" : 5, "padOffset" : 0, "padOnThreshold" : 25, "padSensitivity" : 88, "padVelocityTable" : [ 0, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 12, 12, 13, 13, 14, 15, 16, 16, 17, 18, 19, 19, 20, 21, 22, 23, 24, 24, 25, 26, 27, 28, 29, 30, 31
 , 32, 33, 34, 35, 36, 37, 38, 40, 41, 42, 43, 44, 45, 47, 48, 49, 50, 52, 53, 54, 55, 57, 58, 60, 61, 62, 64, 65, 67, 68, 70, 71, 73, 74, 76, 77, 79, 80, 82, 84, 85, 87, 89, 90, 92, 94, 96, 97, 99, 101, 103, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 125, 127 ], "padVelocityTableID" : "Medium" }, "RhombusButtons" : { "RhombusButton0" : { "rhombusBankControl" : 0, "rhombusChannel" : 0, "rhombusEnableSwitch" : 2, "rhombusInNoteG" : -1, "rhombusInNoteR" : -1, "rhombusOutNote" : -1, "rhombusOutNotePressMode" : 0, "rhombusOutPress" : -1, "rhombusOutPressValue" : -1, "rhombusOutVelocityValue" : 127 }, "rhombusInChannel" : 0, "rhombusLocalLEDControl" : 2, "rhombusOffThreshold" : 5, "rhombusOnThreshold" : 10, "rhombusSensitivity" : 66 }, "Rotaries" : { "Rotary0" : { "rB1Channel" : 14
 , "rB1DirStorage" : -1, "rB1LocStorage" : -1, "rB1inLocation" : -1, "rB1outDirection" : -1, "rB1outDirectionEnable" : 0, "rB1outLocPassThruRange" : 127, "rB1outLocation" : 1, "rB1outNote" : 0, "rB1outNotePressMode" : 0, "rB1outPress" : 0, "rB1outPressValue" : -1, "rB1outSpeed" : 5, "rB1outVelocityValue" : 127, "rB2Channel" : 14, "rB2DirStorage" : -1, "rB2LocStorage" : -1, "rB2inLocation" : -1, "rB2outDirection" : -1, "rB2outDirectionEnable" : 0, "rB2outLocPassThruRange" : 127, "rB2outLocation" : 3, "rB2outNote" : 1, "rB2outNotePressMode" : 0, "rB2outPress" : 2, "rB2outPressValue" : -1, "rB2outSpeed" : 5, "rB2outVelocityValue" : 127, "rB3Channel" : 14, "rB3DirStorage" : -1, "rB3LocStorage" : -1, "rB3inLocation" : -1, "rB3outDirection" : -1, "rB3outDirectionEnable" : 0, "rB3outLocPassThruR
 ange" : 127, "rB3outLocation" : 5, "rB3outNote" : 2, "rB3outNotePressMode" : 0, "rB3outPress" : 4, "rB3outPressValue" : -1, "rB3outSpeed" : 5, "rB3outVelocityValue" : 127, "rB4Channel" : 14, "rB4DirStorage" : -1, "rB4LocStorage" : -1, "rB4inLocation" : -1, "rB4outDirection" : -1, "rB4outDirectionEnable" : 0, "rB4outLocPassThruRange" : 127, "rB4outLocation" : 7, "rB4outNote" : 3, "rB4outNotePressMode" : 0, "rB4outPress" : 6, "rB4outPressValue" : -1, "rB4outSpeed" : 5, "rB4outVelocityValue" : 127 }, "Rotary1" : { "rB1Channel" : 14, "rB1DirStorage" : -1, "rB1LocStorage" : -1, "rB1inLocation" : -1, "rB1outDirection" : -1, "rB1outDirectionEnable" : 0, "rB1outLocPassThruRange" : 127, "rB1outLocation" : 9, "rB1outNote" : 4, "rB1outNotePressMode" : 0, "rB1outPress" : 8, "rB1outPressValue" : -1, 
 "rB1outSpeed" : 5, "rB1outVelocityValue" : 127, "rB2Channel" : 14, "rB2DirStorage" : -1, "rB2LocStorage" : -1, "rB2inLocation" : -1, "rB2outDirection" : -1, "rB2outDirectionEnable" : 0, "rB2outLocPassThruRange" : 127, "rB2outLocation" : 11, "rB2outNote" : 5, "rB2outNotePressMode" : 0, "rB2outPress" : 10, "rB2outPressValue" : -1, "rB2outSpeed" : 5, "rB2outVelocityValue" : 127, "rB3Channel" : 14, "rB3DirStorage" : -1, "rB3LocStorage" : -1, "rB3inLocation" : -1, "rB3outDirection" : -1, "rB3outDirectionEnable" : 0, "rB3outLocPassThruRange" : 127, "rB3outLocation" : 13, "rB3outNote" : 6, "rB3outNotePressMode" : 0, "rB3outPress" : 12, "rB3outPressValue" : -1, "rB3outSpeed" : 5, "rB3outVelocityValue" : 127, "rB4Channel" : 14, "rB4DirStorage" : -1, "rB4LocStorage" : -1, "rB4inLocation" : -1, "rB
 4outDirection" : -1, "rB4outDirectionEnable" : 0, "rB4outLocPassThruRange" : 127, "rB4outLocation" : 15, "rB4outNote" : 7, "rB4outNotePressMode" : 0, "rB4outPress" : 14, "rB4outPressValue" : -1, "rB4outSpeed" : 5, "rB4outVelocityValue" : 127 }, "rotaryInChannel" : 0, "rotaryLocalLEDControl" : 2, "rotaryOffThreshold" : 5, "rotaryOnThreshold" : 10, "rotarySensitivity" : 66 }, "TransportButtons" : { "TransportButton0" : { "transportChannel" : 15, "transportInNote" : -1, "transportOutNote" : 36, "transportOutNotePressMode" : 0, "transportOutPress" : 124, "transportOutPressValue" : -1, "transportOutVelocityValue" : 127 }, "TransportButton1" : { "transportChannel" : 15, "transportInNote" : -1, "transportOutNote" : 37, "transportOutNotePressMode" : 0, "transportOutPress" : 125, "transportOutPre
 ssValue" : -1, "transportOutVelocityValue" : 127 }, "TransportButton2" : { "transportChannel" : 15, "transportInNote" : -1, "transportOutNote" : 38, "transportOutNotePressMode" : 0, "transportOutPress" : 126, "transportOutPressValue" : -1, "transportOutVelocityValue" : 127 }, "transportInChannel" : 0, "transportLocalLEDControl" : 2, "transportOffThreshold" : 5, "transportOnThreshold" : 10, "transportSensitivity" : 66 }, "UpDownButtons" : { "UpDownButton0" : { "updownBankControl" : 1, "updownChannel" : 0, "updownDInNote" : -1, "updownDOutNote" : -1, "updownDOutNotePressMode" : 0, "updownDOutPress" : -1, "updownDOutPressValue" : -1, "updownDOutVelocityValue" : 127, "updownEnableSwitch" : 2, "updownUInNote" : -1, "updownUOutNote" : -1, "updownUOutNotePressMode" : 0, "updownUOutPress" : -1, 
 "updownUOutPressValue" : -1, "updownUOutVelocityValue" : 127 }, "UpDownButton1" : { "updownBankControl" : 2, "updownChannel" : 0, "updownDInNote" : -1, "updownDOutNote" : -1, "updownDOutNotePressMode" : 0, "updownDOutPress" : -1, "updownDOutPressValue" : -1, "updownDOutVelocityValue" : 127, "updownEnableSwitch" : 2, "updownUInNote" : -1, "updownUOutNote" : -1, "updownUOutNotePressMode" : 0, "updownUOutPress" : -1, "updownUOutPressValue" : -1, "updownUOutVelocityValue" : 127 }, "updownInChannel" : 0, "updownLocalLEDControl" : 2, "updownOffThreshold" : 5, "updownOnThreshold" : 10, "updownSensitivity" : 66 }, "VSliders" : { "VSlider0" : { "vB1Channel" : 15, "vB1inLocation" : -1, "vB1outLocPassThruRange" : 127, "vB1outLocation" : 61, "vB1outNote" : 20, "vB1outNotePressMode" : 0, "vB1outPress
 " : 60, "vB1outPressValue" : -1, "vB1outVelocityValue" : 127, "vB2Channel" : 15, "vB2inLocation" : -1, "vB2outLocPassThruRange" : 127, "vB2outLocation" : 63, "vB2outNote" : 21, "vB2outNotePressMode" : 0, "vB2outPress" : 62, "vB2outPressValue" : -1, "vB2outVelocityValue" : 127, "vB3Channel" : 15, "vB3inLocation" : -1, "vB3outLocPassThruRange" : 127, "vB3outLocation" : 65, "vB3outNote" : 22, "vB3outNotePressMode" : 0, "vB3outPress" : 64, "vB3outPressValue" : -1, "vB3outVelocityValue" : 127, "vB4Channel" : 15, "vB4inLocation" : -1, "vB4outLocPassThruRange" : 127, "vB4outLocation" : 67, "vB4outNote" : 23, "vB4outNotePressMode" : 0, "vB4outPress" : 66, "vB4outPressValue" : -1, "vB4outVelocityValue" : 127 }, "VSlider1" : { "vB1Channel" : 15, "vB1inLocation" : -1, "vB1outLocPassThruRange" : 127
 , "vB1outLocation" : 69, "vB1outNote" : 24, "vB1outNotePressMode" : 0, "vB1outPress" : 68, "vB1outPressValue" : -1, "vB1outVelocityValue" : 127, "vB2Channel" : 15, "vB2inLocation" : -1, "vB2outLocPassThruRange" : 127, "vB2outLocation" : 71, "vB2outNote" : 25, "vB2outNotePressMode" : 0, "vB2outPress" : 70, "vB2outPressValue" : -1, "vB2outVelocityValue" : 127, "vB3Channel" : 15, "vB3inLocation" : -1, "vB3outLocPassThruRange" : 127, "vB3outLocation" : 73, "vB3outNote" : 26, "vB3outNotePressMode" : 0, "vB3outPress" : 72, "vB3outPressValue" : -1, "vB3outVelocityValue" : 127, "vB4Channel" : 15, "vB4inLocation" : -1, "vB4outLocPassThruRange" : 127, "vB4outLocation" : 75, "vB4outNote" : 27, "vB4outNotePressMode" : 0, "vB4outPress" : 74, "vB4outPressValue" : -1, "vB4outVelocityValue" : 127 }, "VS
 lider2" : { "vB1Channel" : 15, "vB1inLocation" : -1, "vB1outLocPassThruRange" : 127, "vB1outLocation" : 77, "vB1outNote" : 28, "vB1outNotePressMode" : 0, "vB1outPress" : 76, "vB1outPressValue" : -1, "vB1outVelocityValue" : 127, "vB2Channel" : 15, "vB2inLocation" : -1, "vB2outLocPassThruRange" : 127, "vB2outLocation" : 79, "vB2outNote" : 29, "vB2outNotePressMode" : 0, "vB2outPress" : 78, "vB2outPressValue" : -1, "vB2outVelocityValue" : 127, "vB3Channel" : 15, "vB3inLocation" : -1, "vB3outLocPassThruRange" : 127, "vB3outLocation" : 81, "vB3outNote" : 30, "vB3outNotePressMode" : 0, "vB3outPress" : 80, "vB3outPressValue" : -1, "vB3outVelocityValue" : 127, "vB4Channel" : 15, "vB4inLocation" : -1, "vB4outLocPassThruRange" : 127, "vB4outLocation" : 83, "vB4outNote" : 31, "vB4outNotePressMode" :
  0, "vB4outPress" : 82, "vB4outPressValue" : -1, "vB4outVelocityValue" : 127 }, "VSlider3" : { "vB1Channel" : 15, "vB1inLocation" : -1, "vB1outLocPassThruRange" : 127, "vB1outLocation" : 85, "vB1outNote" : 32, "vB1outNotePressMode" : 0, "vB1outPress" : 84, "vB1outPressValue" : -1, "vB1outVelocityValue" : 127, "vB2Channel" : 15, "vB2inLocation" : -1, "vB2outLocPassThruRange" : 127, "vB2outLocation" : 87, "vB2outNote" : 33, "vB2outNotePressMode" : 0, "vB2outPress" : 86, "vB2outPressValue" : -1, "vB2outVelocityValue" : 127, "vB3Channel" : 15, "vB3inLocation" : -1, "vB3outLocPassThruRange" : 127, "vB3outLocation" : 89, "vB3outNote" : 34, "vB3outNotePressMode" : 0, "vB3outPress" : 88, "vB3outPressValue" : -1, "vB3outVelocityValue" : 127, "vB4Channel" : 15, "vB4inLocation" : -1, "vB4outLocPass
 ThruRange" : 127, "vB4outLocation" : 91, "vB4outNote" : 35, "vB4outNotePressMode" : 0, "vB4outPress" : 90, "vB4outPressValue" : -1, "vB4outVelocityValue" : 127 }, "vSliderInChannel" : 0, "vSliderLocalLEDControl" : 2, "vSliderOffThreshold" : 5, "vSliderOnThreshold" : 10, "vSliderSensitivity" : 66 } }, "presetName" : "XYzer", "revisionNumber" : 576 }
\ No newline at end of file

Added: QuNeo/QuNeoPresets/BasicSC_QuNeo.scd
===================================================================
--- QuNeo/QuNeoPresets/BasicSC_QuNeo.scd                        (rev 0)
+++ QuNeo/QuNeoPresets/BasicSC_QuNeo.scd2013-05-17 20:09:22 UTC (rev 2591)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -0,0 +1,88 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+/*
+QuNeoStartup File by Jonathan Siemasko - Email: schemawound-/E1597aS9LQAvxtiuMwx3w&amp;lt; at &amp;gt;public.gmane.org - Web: http://schemawound.com/
+*/
+
+/*
+This code will create a QuNeo object that matches the BasicSC_QuNeo.quneopreset file.
+To use it:
+1) Run the QuNeo Editor software.
+2) Click one of the controls to activate the menus.
+3) Use the preset dropdown to pick the QuNeo preset you wish to overwrite.
+4) File-&amp;gt; Import Preset.
+5) Navigate to \QuNeo\QuNeoPresets\BasicSC_QuNeo.quneopreset within your Supercollider extentions directory.
+6) Click "Save Preset"
+7) Click "Update Preset"
+8) RUn this code from within Supercollider.  I recommend adding it to your startup file.
+*/
+
+~quNeo = QuNeo();
+//Pads
+~quNeo.createDrumPad(00, 00, 00, 01, 02, 15);
+~quNeo.createDrumPad(01, 01, 03, 04, 05, 15);
+~quNeo.createDrumPad(02, 02, 06, 07, 08, 15);
+~quNeo.createDrumPad(03, 03, 09, 10, 11, 15);
+~quNeo.createDrumPad(04, 04, 12, 13, 14, 15);
+~quNeo.createDrumPad(05, 05, 15, 16, 17, 15);
+~quNeo.createDrumPad(06, 06, 18, 19, 20, 15);
+~quNeo.createDrumPad(07, 07, 21, 22, 23, 15);
+~quNeo.createDrumPad(08, 08, 24, 25, 26, 15);
+~quNeo.createDrumPad(09, 09, 27, 28, 29, 15);
+~quNeo.createDrumPad(10, 10, 30, 31, 32, 15);
+~quNeo.createDrumPad(11, 11, 33, 34, 35, 15);
+~quNeo.createDrumPad(12, 12, 36, 37, 38, 15);
+~quNeo.createDrumPad(13, 13, 39, 40, 41, 15);
+~quNeo.createDrumPad(14, 14, 42, 43, 44, 15);
+~quNeo.createDrumPad(15, 15, 45, 46, 47, 15);
+~quNeo.createDrumPad(15, 16, 45, 46, 47, 15);
+//Horizontal Sliders
+~quNeo.createHSlider(00, 39, 092, 093, 15);
+~quNeo.createHSlider(01, 43, 100, 101, 15);
+~quNeo.createHSlider(02, 47, 108, 109, 15);
+~quNeo.createHSlider(03, 51, 116, 117, 15);
+~quNeo.createHSlider(04, 40, 094, 095, 15);
+~quNeo.createHSlider(05, 44, 102, 103, 15);
+~quNeo.createHSlider(06, 48, 110, 111, 15);
+~quNeo.createHSlider(07, 52, 118, 119, 15);
+~quNeo.createHSlider(08, 41, 096, 097, 15);
+~quNeo.createHSlider(09, 45, 104, 105, 15);
+~quNeo.createHSlider(10, 49, 112, 113, 15);
+~quNeo.createHSlider(11, 53, 120, 121, 15);
+~quNeo.createHSlider(12, 42, 098, 099, 15);
+~quNeo.createHSlider(13, 46, 106, 107, 15);
+~quNeo.createHSlider(14, 50, 114, 115, 15);
+~quNeo.createHSlider(15, 54, 122, 123, 15);
+//Vertical Sliders
+~quNeo.createVSlider(00, 20, 60, 61, 15);
+~quNeo.createVSlider(01, 24, 68, 69, 15);
+~quNeo.createVSlider(02, 28, 76, 77, 15);
+~quNeo.createVSlider(03, 32, 84, 85, 15);
+~quNeo.createVSlider(04, 21, 62, 63, 15);
+~quNeo.createVSlider(05, 25, 70, 71, 15);
+~quNeo.createVSlider(06, 29, 78, 79, 15);
+~quNeo.createVSlider(07, 33, 86, 87, 15);
+~quNeo.createVSlider(08, 22, 64, 65, 15);
+~quNeo.createVSlider(09, 26, 72, 73, 15);
+~quNeo.createVSlider(10, 30, 80, 81, 15);
+~quNeo.createVSlider(11, 34, 88, 89, 15);
+~quNeo.createVSlider(12, 23, 66, 67, 15);
+~quNeo.createVSlider(13, 27, 74, 75, 15);
+~quNeo.createVSlider(14, 31, 82, 83, 15);
+~quNeo.createVSlider(15, 35, 90, 91, 15);
+//Long Sliders
+~quNeo.createLSlider(00, 16, 48, 49, 50, 15);
+~quNeo.createLSlider(01, 17, 51, 52, 53, 15);
+~quNeo.createLSlider(02, 18, 54, 55, 56, 15);
+~quNeo.createLSlider(03, 19, 57, 58, 59, 15);
+//Buttons
+~quNeo.createButton(00, 36, 124, 15);
+~quNeo.createButton(01, 37, 125, 15);
+~quNeo.createButton(02, 38, 126, 15);
+//Circle Controls
+~quNeo.createCircle(00, 00, 00, 01, 14);
+~quNeo.createCircle(01, 04, 08, 09, 14);
+~quNeo.createCircle(02, 01, 02, 03, 14);
+~quNeo.createCircle(03, 05, 10, 11, 14);
+~quNeo.createCircle(04, 02, 04, 05, 14);
+~quNeo.createCircle(05, 06, 12, 13, 14);
+~quNeo.createCircle(06, 03, 06, 07, 14);
+~quNeo.createCircle(07, 07, 14, 15, 14);
\ No newline at end of file

Added: QuNeo/Readme.txt
===================================================================
--- QuNeo/Readme.txt                        (rev 0)
+++ QuNeo/Readme.txt2013-05-17 20:09:22 UTC (rev 2591)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -0,0 +1,12 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+QuNeo by Jonathan Siemasko - Email: schemawound-/E1597aS9LQAvxtiuMwx3w&amp;lt; at &amp;gt;public.gmane.org - Web: http://schemawound.com/
+
+In order to get started with the QuNeo quark:
+1) Run the QuNeo Editor software.
+2) Click one of the controls to activate the menus.
+3) Use the preset dropdown to pick the QuNeo preset you wish to overwrite.
+4) File-&amp;gt; Import Preset.
+5) Navigate to \QuNeo\QuNeoPresets\BasicSC_QuNeo.quneopreset within your Supercollider extentions directory.
+6) Click "Save Preset"
+7) Click "Update Preset"
+8) Run \QuNeo\QuNeoPresets\BasicSC_QuNeo.scd code from within Supercollider.  I recommend adding it to your startup file.
+9) Try the examples in the QuNeo help file.
\ No newline at end of file

This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.



_______________________________________________
sc-dev mailing list

info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-dev/
search: http://www.listarc.bham.ac.uk/lists/sc-dev/search/

&lt;/pre&gt;</description>
    <dc:creator>schemawound-Rn4VEauK+AKRv+LV9MX5uipxlwaOVQ5f&lt; at &gt;public.gmane.org</dc:creator>
    <dc:date>2013-05-17T20:10:16</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.audio.supercollider.devel/58512">
    <title>Re: [patch] URL fetch</title>
    <link>http://permalink.gmane.org/gmane.comp.audio.supercollider.devel/58512</link>
    <description>&lt;pre&gt;
On 20 May 2013, at 10:03, Tim Blechmann wrote:


Okay, will probably take me awhile to get back to this again. We've got BEAST events this weekend.

S.
_______________________________________________
sc-dev mailing list

info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-dev/
search: http://www.listarc.bham.ac.uk/lists/sc-dev/search/

&lt;/pre&gt;</description>
    <dc:creator>Scott Wilson</dc:creator>
    <dc:date>2013-05-20T09:53:21</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.audio.supercollider.devel/58511">
    <title>Re: [patch] URL fetch</title>
    <link>http://permalink.gmane.org/gmane.comp.audio.supercollider.devel/58511</link>
    <description>&lt;pre&gt;
we only provide a subset of boost.

* adapt the script in external_libraries/extract_boost.sh to also scan
the cpp-netlib folder
* check out boost-trunk from svn
* run external_libraries/extract_boost.sh /path/to/boost-trunk.

it requires the bcp tool to be somewhere in the path. if you have
problems with it, you can push a topic/ branch to github and i can help
with that!

tim

&lt;/pre&gt;</description>
    <dc:creator>Tim Blechmann</dc:creator>
    <dc:date>2013-05-20T09:03:19</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.audio.supercollider.devel/58510">
    <title>Re: [patch] URL fetch</title>
    <link>http://permalink.gmane.org/gmane.comp.audio.supercollider.devel/58510</link>
    <description>&lt;pre&gt;
On 20 Mar 2013, at 15:35, Tim Blechmann wrote:


I'm sure this is just something dumb, but I tried to rework this to use cpp-netlib, and I get a lot of errors like this:

In file included from /code/git_SC/SuperCollider/external_libraries/cpp-netlib-0-1.9.4/boost/network/traits/ostringstream.hpp:11,
                 from /code/git_SC/SuperCollider/external_libraries/cpp-netlib-0-1.9.4/boost/network/protocol/http/client.hpp:10,
                 from /code/git_SC/SuperCollider/QtCollider/QtDownload.cpp:34:
/code/git_SC/SuperCollider/external_libraries/cpp-netlib-0-1.9.4/boost/network/tags.hpp:13:42: error: boost/mpl/inherit_linearly.hpp: No such file or directory

I thought this might be a compatibility issue with the version of boost we have, but it says it will work with any version above 1.45.0. Indeed the file does not exist though.

Any hints?

S.
_______________________________________________
sc-dev mailing list

info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-dev/
search: http://www.listarc.bham.ac.uk/lists/sc-dev/search/

&lt;/pre&gt;</description>
    <dc:creator>Scott Wilson</dc:creator>
    <dc:date>2013-05-20T08:52:52</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.audio.supercollider.devel/58509">
    <title>[linux] Coming back to the PV_RecordBuf / PV_PlayBuf problem</title>
    <link>http://permalink.gmane.org/gmane.comp.audio.supercollider.devel/58509</link>
    <description>&lt;pre&gt;Hi,

I may need PV_RecordBuf and related UGens in an upcoming performance.
I just checked, and they are still broken in Linux, e.g.

~src = Buffer.readAndQuery(s, Platform.resourceDir +/+ "sounds/a11wlk01.wav");
~hop = 0.5;
~win = 0;
~pvrec = Buffer.alloc(s, ~src.duration.calcPVRecSize(1024, ~hop, 44100));

// We hear the inverse FFT of the live-calculated FFT
// Sounds clean
// Note: If you set ~hop = 0.25 and ~win = 1, it does /not/ sound clean.
// Maybe that's a bug?
(
{
    var sig = PlayBuf.ar(1, ~src, loop: 0, doneAction: 2),
    fft = FFT(LocalBuf(1024), sig, ~hop, ~win);
    PV_RecordBuf(fft, ~pvrec, run: 1, loop: 0, hop: ~hop, wintype: ~win);
    IFFT(fft, ~win) ! 2
}.play;
)

// We the IFFT of the recorded FFT frames
// The effect is reminiscent of ring modulation --
// probably amplitude modulation stemming from the wrong window function?
(
{
    var fft = PV_PlayBuf(LocalBuf(1024), ~pvrec);
    var sig = IFFT(fft, ~win);
    DetectSilence.ar(sig, doneAction: 2);
    sig ! 2
}.play;
)

In another test, I used pvcollect to poll the FFT magnitudes for the
first 50 bins -- once from the on-the-fly FFT, once from PV_PlayBuf.
They were very close -- close enough, I would suppose any difference
comes from the fact that PV_PlayBuf interpolates the recorded values
while FFT() does not. (If that isn't the reason, then maybe floating
point error during complex --&amp;gt; polar --&amp;gt; complex conversion.) So it
seems that PV_RecordBuf and PV_PlayBuf are not corrupting the FFT data
&lt;/pre&gt;</description>
    <dc:creator>James Harkins</dc:creator>
    <dc:date>2013-05-20T06:47:48</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.audio.supercollider.devel/58508">
    <title>Re: Packt book</title>
    <link>http://permalink.gmane.org/gmane.comp.audio.supercollider.devel/58508</link>
    <description>&lt;pre&gt;I did as well... the $600 'advance' based on sales seems a little strange. The wording was just wonky.
Josh

On May 19, 2013, at 11:24 AM, Marije Baalman &amp;lt;nescivi-Re5JQEeQqe8AvxtiuMwx3w&amp;lt; at &amp;gt;public.gmane.org&amp;gt; wrote:


******************************************
/* Joshua D. Parmenter
http://www.realizedsound.net/josh/

“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." - Luigi Nono
*/


_______________________________________________
sc-dev mailing list

info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-dev/
search: http://www.listarc.bham.ac.uk/lists/sc-dev/search/

&lt;/pre&gt;</description>
    <dc:creator>Josh Parmenter</dc:creator>
    <dc:date>2013-05-19T18:33:29</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.audio.supercollider.devel/58507">
    <title>Re: Packt book</title>
    <link>http://permalink.gmane.org/gmane.comp.audio.supercollider.devel/58507</link>
    <description>&lt;pre&gt;Hiho,

On Tue, 7 May 2013 08:27:53 +0100
Dan Stowell &amp;lt;danstowell-Re5JQEeQqe8AvxtiuMwx3w&amp;lt; at &amp;gt;public.gmane.org&amp;gt; wrote:


yeah, got a message too.

Not sure what to make of the visualisation part...

The Mapping part is of course an interesting topic to write about...

sincerely,
Marije

_______________________________________________
sc-dev mailing list

info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-dev/
search: http://www.listarc.bham.ac.uk/lists/sc-dev/search/

&lt;/pre&gt;</description>
    <dc:creator>Marije Baalman</dc:creator>
    <dc:date>2013-05-19T18:24:48</dc:date>
  </item>
  <textinput rdf:about="http://search.gmane.org/?group=$group=gmane.comp.audio.supercollider.devel">
    <title>Search Engine</title>
    <description>Search the mailing list at Gmane</description>
    <name>query</name>
    <link>http://search.gmane.org/?group=$group=gmane.comp.audio.supercollider.devel</link>
  </textinput>
</rdf:RDF>
