Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

first commit

  • Loading branch information...
commit 8420f2e3b9b500e82306b6e6a87a4e872711b96a 0 parents
@footils authored
8 0pdx7.save.pd
@@ -0,0 +1,8 @@
+#N canvas 0 0 450 300 10;
+#X obj 152 107 inlet;
+#X obj 152 158 outlet;
+#X obj 231 159 outlet;
+#X obj 152 133 commun \$2 \$3;
+#X connect 0 0 3 0;
+#X connect 3 0 1 0;
+#X connect 3 1 2 0;
185 colorize.pd
@@ -0,0 +1,185 @@
+#N canvas 76 188 574 603 10;
+#X obj 69 339 list prepend color;
+#X obj 69 362 list trim;
+#N canvas 281 345 447 195 rgbtopd 0;
+#X obj 35 59 expr -65536 * $i1 - 256 * $i2 - $i3 - 1 \;;
+#X obj 35 25 inlet;
+#X obj 35 89 outlet;
+#X text 26 121 -pow(2 \, 16) * R - pow(2 \, 8) * G - pow(2 \, 0) *
+B - 1;
+#X connect 0 0 2 0;
+#X connect 1 0 0 0;
+#X restore 224 152 pd rgbtopd;
+#N canvas 281 345 447 195 rgbtopd 0;
+#X obj 35 59 expr -65536 * $i1 - 256 * $i2 - $i3 - 1 \;;
+#X obj 35 25 inlet;
+#X obj 35 89 outlet;
+#X text 26 121 -pow(2 \, 16) * R - pow(2 \, 8) * G - pow(2 \, 0) *
+B - 1;
+#X connect 0 0 2 0;
+#X connect 1 0 0 0;
+#X restore 144 152 pd rgbtopd;
+#N canvas 281 345 447 195 rgbtopd 0;
+#X obj 35 59 expr -65536 * $i1 - 256 * $i2 - $i3 - 1 \;;
+#X obj 35 25 inlet;
+#X obj 35 89 outlet;
+#X text 26 121 -pow(2 \, 16) * R - pow(2 \, 8) * G - pow(2 \, 0) *
+B - 1;
+#X connect 0 0 2 0;
+#X connect 1 0 0 0;
+#X restore 69 151 pd rgbtopd;
+#N canvas 362 262 450 300 hexcolor 0;
+#X obj 152 168 * 16;
+#X obj 152 143 t f f;
+#X obj 152 201 +;
+#X obj 127 38 inlet;
+#X obj 125 61 t b a b;
+#X obj 133 252 list prepend;
+#X obj 221 255 t a;
+#X obj 99 290 list;
+#X obj 101 314 outlet;
+#N canvas 0 0 533 407 drip 0;
+#X obj 64 206 list split 1;
+#X obj 64 123 until;
+#X obj 64 181 list append;
+#X obj 194 206 bang;
+#X text 146 90 First store list \, then start the loop;
+#X text 163 118 "until" bangs its output until told to stop by a "bang"
+to its right inlet.;
+#X text 182 160 Store the remaining list.;
+#X text 239 205 third outlet of "split" tells us to stop.;
+#X obj 64 243 outlet;
+#X obj 64 57 inlet;
+#X text 237 44 From list-help.pd;
+#X obj 143 243 outlet;
+#X obj 64 86 t b a;
+#X connect 0 0 8 0;
+#X connect 0 1 2 1;
+#X connect 0 2 3 0;
+#X connect 0 2 11 0;
+#X connect 1 0 2 0;
+#X connect 2 0 0 0;
+#X connect 3 0 1 1;
+#X connect 9 0 12 0;
+#X connect 12 0 1 0;
+#X connect 12 1 2 1;
+#X restore 152 94 pd drip;
+#N canvas 360 251 450 300 hextonum 0;
+#X obj 90 96 select a b c d e f;
+#X obj 90 128 10;
+#X obj 146 131 12;
+#X obj 118 130 11;
+#X obj 178 130 13;
+#X obj 205 131 14;
+#X obj 236 130 15;
+#X obj 268 131 moses 10;
+#X obj 152 238 outlet;
+#X obj 268 162 moses 0;
+#X obj 90 37 inlet;
+#X obj 90 60 list;
+#X connect 0 0 1 0;
+#X connect 0 1 3 0;
+#X connect 0 2 2 0;
+#X connect 0 3 4 0;
+#X connect 0 4 5 0;
+#X connect 0 5 6 0;
+#X connect 0 6 7 0;
+#X connect 1 0 8 0;
+#X connect 2 0 8 0;
+#X connect 3 0 8 0;
+#X connect 4 0 8 0;
+#X connect 5 0 8 0;
+#X connect 6 0 8 0;
+#X connect 7 0 9 0;
+#X connect 9 1 8 0;
+#X connect 10 0 11 0;
+#X connect 11 0 0 0;
+#X restore 152 117 pd hextonum;
+#X connect 0 0 2 0;
+#X connect 1 0 0 0;
+#X connect 1 1 2 1;
+#X connect 2 0 5 0;
+#X connect 3 0 4 0;
+#X connect 4 0 7 0;
+#X connect 4 1 9 0;
+#X connect 4 2 5 1;
+#X connect 5 0 6 0;
+#X connect 5 0 7 1;
+#X connect 6 0 5 1;
+#X connect 7 0 8 0;
+#X connect 9 0 10 0;
+#X connect 10 0 1 0;
+#X restore 69 59 pd hexcolor;
+#X obj 69 86 list split 3;
+#X obj 144 109 list split 3;
+#N canvas 0 0 655 388 rotate2 0;
+#X obj 173 193 list prepend;
+#X obj 151 44 inlet;
+#X obj 259 115 inlet;
+#X text 311 115 how often to rotate;
+#X obj 151 220 list;
+#X text 198 43 list to rotate;
+#X obj 151 250 outlet;
+#X text 267 194 move right part of list to left.;
+#X obj 151 70 t b a b;
+#X obj 173 152 list split 2;
+#X connect 0 0 4 1;
+#X connect 1 0 8 0;
+#X connect 2 0 9 1;
+#X connect 4 0 6 0;
+#X connect 8 0 4 0;
+#X connect 8 1 9 0;
+#X connect 8 2 0 1;
+#X connect 9 0 0 0;
+#X connect 9 1 0 1;
+#X restore 356 318 pd rotate2;
+#N canvas 0 0 655 388 rotate1 0;
+#X obj 173 193 list prepend;
+#X obj 151 44 inlet;
+#X obj 259 115 inlet;
+#X text 311 115 how often to rotate;
+#X obj 151 220 list;
+#X text 198 43 list to rotate;
+#X obj 151 250 outlet;
+#X text 267 194 move right part of list to left.;
+#X obj 151 70 t b a b;
+#X obj 173 152 list split 1;
+#X connect 0 0 4 1;
+#X connect 1 0 8 0;
+#X connect 2 0 9 1;
+#X connect 4 0 6 0;
+#X connect 8 0 4 0;
+#X connect 8 1 9 0;
+#X connect 8 2 0 1;
+#X connect 9 0 0 0;
+#X connect 9 1 0 1;
+#X restore 211 320 pd rotate1;
+#X obj 69 386 outlet;
+#X obj 211 341 list prepend color;
+#X obj 211 364 list trim;
+#X obj 211 388 outlet;
+#X obj 356 343 list prepend color;
+#X obj 356 366 list trim;
+#X obj 356 390 outlet;
+#X obj 69 33 inlet;
+#X obj 69 178 pack 0 0 0;
+#X connect 0 0 1 0;
+#X connect 1 0 10 0;
+#X connect 2 0 18 2;
+#X connect 3 0 18 1;
+#X connect 4 0 18 0;
+#X connect 5 0 6 0;
+#X connect 6 0 4 0;
+#X connect 6 1 7 0;
+#X connect 7 0 3 0;
+#X connect 7 1 2 0;
+#X connect 8 0 14 0;
+#X connect 9 0 11 0;
+#X connect 11 0 12 0;
+#X connect 12 0 13 0;
+#X connect 14 0 15 0;
+#X connect 15 0 16 0;
+#X connect 17 0 5 0;
+#X connect 18 0 0 0;
+#X connect 18 0 9 0;
+#X connect 18 0 8 0;
8 commun.pdx7.save.pd
@@ -0,0 +1,8 @@
+#N canvas 0 0 450 300 10;
+#X obj 152 107 inlet;
+#X obj 152 158 outlet;
+#X obj 231 159 outlet;
+#X obj 152 133 commun \$2 \$3;
+#X connect 0 0 3 0;
+#X connect 3 0 1 0;
+#X connect 3 1 2 0;
15 doc/Makefile
@@ -0,0 +1,15 @@
+REST = pdx7
+
+all: html tex pdf
+
+tex:
+ rst2latex --documentclass=scrartcl $(REST).txt $(REST).tex
+
+pdf: tex
+ pdflatex $(REST).tex
+
+html:
+ rst2html --stylesheet="default.css" $(REST).txt $(REST).html
+
+clean:
+ rm $(REST).tex $(REST).html $(REST).pdf $(REST).aux $(REST).log $(REST).out
410 doc/default.css
@@ -0,0 +1,410 @@
+
+html {
+ background: #ffffff;
+ color: #000;
+}
+
+body {
+ padding: 0.5em;
+ font-family: Verdana, Helvetica, Arial, Tahoma, sans-serif;
+ font-size: 80%;
+ /* font sizing in ems, baby. if you want to change anything, just change
+ * this.*/
+
+}
+
+
+.ring
+{
+ border: 0;
+ padding: 0;
+ margin: 0;
+}
+
+ul.ring
+{
+ border: 1px;
+ display: block;
+ list-style: none;
+}
+
+/* .footer {
+ background:#EEEEEE;
+ width: 650px;
+} */
+
+.bordered {
+ padding: 5px;
+}
+
+
+A {
+ text-decoration: none;
+/* background: #FFFFFF; */
+ color: #b00;
+}
+
+A:hover {
+ text-decoration: underline;
+ /* background: #FFFFFF; */
+ color: #003300 ;
+}
+
+A.nonexistent {
+ background: #EEE;
+ color: #CC6600;
+}
+
+
+
+
+HR {
+ height:1px;
+ /* background:#eeaa00; */
+ background:#eee;
+ color:#000;
+}
+
+P.small {
+ font-size: 0.8em;
+ background:#fff;
+ text-align: right;
+ /*border: dotted 1px;*/
+ padding: 5px;
+}
+
+UL {
+ list-style-type: circle;
+}
+
+
+/*
+:Author: David Goodger
+:Contact: goodger@users.sourceforge.net
+:date: $Date: 2003/03/15 13:19:54 $
+:version: $Revision: 1.1.1.1 $
+:copyright: This stylesheet has been placed in the public domain.
+
+Default cascading style sheet for the HTML output of Docutils.
+*/
+
+.first {
+ margin-top: 0 }
+
+.last {
+ margin-bottom: 0 }
+
+a.toc-backref {
+ text-decoration: none ;
+ color: black }
+
+dd {
+ margin-bottom: 0.5em }
+
+div.abstract {
+ margin: 2em 5em }
+
+div.abstract p.topic-title {
+ font-weight: bold ;
+ text-align: center }
+
+div.attention, div.caution, div.danger, div.error, div.hint,
+div.important, div.note, div.tip, div.warning {
+ margin: 2em ;
+ border: medium outset ;
+ padding: 1em }
+
+div.attention p.admonition-title, div.caution p.admonition-title,
+div.danger p.admonition-title, div.error p.admonition-title,
+div.warning p.admonition-title {
+ color: red ;
+ font-weight: bold ;
+ font-family: sans-serif }
+
+div.hint p.admonition-title, div.important p.admonition-title,
+div.note p.admonition-title, div.tip p.admonition-title {
+ font-weight: bold ;
+ font-family: sans-serif }
+
+div.dedication {
+ margin: 2em 5em ;
+ text-align: center ;
+ font-style: italic }
+
+div.dedication p.topic-title {
+ font-weight: bold ;
+ font-style: normal }
+
+div.figure {
+ margin-left: 2em }
+
+div.footer, div.header {
+ font-size: 0.8em}
+
+div.system-messages {
+ margin: 5em }
+
+div.system-messages h1 {
+ color: red }
+
+div.system-message {
+ border: medium outset ;
+ padding: 1em }
+
+div.system-message p.system-message-title {
+ color: red ;
+ font-weight: bold }
+
+div.topic {
+ margin: 2em }
+
+h2.subtitle {
+ text-align: center }
+
+
+ol, ul, li {
+ font-size: 1.0em;
+ line-height: 1.8em;
+ margin-top: 0.2em;
+ margin-bottom: 0.1em;
+ }
+li > p {
+ margin-top: 0.2em;
+ }
+
+ol.simple, ul.simple {
+ margin-bottom: 1em }
+
+ol.arabic {
+ list-style: decimal }
+
+ol.loweralpha {
+ list-style: lower-alpha }
+
+ol.upperalpha {
+ list-style: upper-alpha }
+
+ol.lowerroman {
+ list-style: lower-roman }
+
+ol.upperroman {
+ list-style: upper-roman }
+
+p {
+ font-size: 1.0em;
+ line-height: 1.8em;
+ margin: 1.2em 0em 1.2em 0em;
+}
+
+p.caption {
+ font-style: italic }
+
+p.credits {
+ font-style: italic ;
+ font-size: 0.8em}
+
+p.label {
+ white-space: nowrap }
+
+p.topic-title {
+ font-weight: bold }
+
+pre {
+
+/* moz 1.0/1.1/1.2.1, net 7.0/7.01 make this way too small, but i'm not going
+ * to go larger because monospace tends to run you into overflow pretty quick.
+ * prior moz and net are okay. */
+ /* font-family: monospace; */
+ font-size: 1.0em;
+ }
+
+pre.address {
+ margin-bottom: 0 ;
+ margin-top: 0 ;
+ font-family: serif ;
+}
+
+pre.line-block {
+ font-family: serif ;
+}
+pre.literal-block, pre.doctest-block {
+ margin-left: 2em ;
+ margin-right: 2em ;
+ background-color: #eeeeee }
+
+span.classifier {
+ font-family: sans-serif ;
+ font-style: oblique }
+
+span.classifier-delimiter {
+ font-family: sans-serif ;
+ font-weight: bold }
+
+span.interpreted {
+ font-family: sans-serif }
+
+span.option-argument {
+ font-style: italic }
+
+span.pre {
+ white-space: pre }
+
+span.problematic {
+ color: red }
+
+table {
+ margin-top: 0.5em ;
+ margin-bottom: 0.5em }
+
+table.citation {
+ border-left: solid thin gray ;
+ padding-left: 0.5ex }
+
+table.docinfo {
+ margin: 2em 4em }
+
+table.footnote {
+ border-left: solid thin black ;
+ padding-left: 0.5ex }
+
+td, th {
+ padding-left: 0.5em ;
+ padding-right: 0.5em ;
+ vertical-align: top }
+
+th.docinfo-name, th.field-name {
+ font-weight: bold ;
+ text-align: left ;
+ white-space: nowrap }
+
+tt {
+ background-color: #eeeeee }
+tt.literal {
+ border: solid 1px;
+}
+ul.auto-toc {
+ list-style-type: none }
+
+
+
+/*Forms: */
+
+form {
+ border: none;
+}
+
+textarea {
+ border: 1px solid ;
+ color: Black;
+ background-color: white;
+ padding: 0.1em;
+}
+
+
+input {
+ font-family: Verdana, Helvetica, Arial, sans-serif;
+ border: 1px solid #ccc;
+ color: Black;
+ background-color: white;
+ vertical-align: middle;
+ margin-bottom: 1px; /* IE bug fix */
+ padding: 0.1em;
+}
+
+#Menu ul {
+padding: 0;
+margin: 0;
+}
+
+#Menu li {
+ list-style: none;
+ }
+
+#Menu li li {
+ }
+
+h1 {
+ color: #600;
+ border-bottom: solid 1px;
+ font-family: monospace;
+ padding: 0.3em;
+ /* background:#EEEEEE; */
+ font-size: 1.4em;
+}
+
+h1.title {
+ font-size: 2.0em;
+ }
+
+
+h2 {
+ font-family: Courier, monospace;
+ font-size: 1.3em;
+ border-bottom: solid 1px #ccc;
+ color: #000;
+ padding: 4px;
+}
+
+h3 {
+ font-family: Courier, monospace;
+ font-size: 1.2em;
+ border-bottom: solid 1px #ccc;
+ color: #000;
+ padding: 4px;
+}
+
+h4 {
+ font-size: 1.1em;
+ font-family: Courier, monospace;
+}
+
+h5 {
+ font-size: 1.0em;
+ }
+h6 {
+ font-size: 0.8em;
+ }
+
+/* pixy */
+#header {
+ margin:0; padding:0;
+ }
+
+ #main1 {
+ margin:0; padding:0;
+ }
+ #main2 {
+ margin:0; padding:0;
+ }
+ #left {
+ width:0em;
+ height:0em;
+ margin:0; padding:0;
+ display: none;
+ }
+ #Menu{
+ float:right;
+ width:20em;
+ margin:0; padding:0;
+ border-top: solid 1px #ccc;
+ border-bottom: solid 1px #ccc;
+ }
+ #middle {
+ margin-left: 4em;
+ margin-right: 21em;
+ border: solid #ccc 1px;
+ }
+ .column-in {
+ margin:0; padding:0.5em 1em;
+ }
+ .cleaner {
+ clear:both;
+ height:1px;
+ font-size:1px;
+ border:none;
+ margin:0; padding:0;
+ background:transparent;
+ }
+
+
+
BIN  doc/pdx7-carrier.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  doc/pdx7-envelopes.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  doc/pdx7-frequencies.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  doc/pdx7-modmatrix.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  doc/pdx7.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
129 doc/pdx7.txt
@@ -0,0 +1,129 @@
+===========
+The PDX7 V2
+===========
+
+:Authors:
+ Frank Barknecht <fbar@footils.org>
+:Abstract:
+ PDX7 is a six operator FM synthesizer for Pure Data.
+
+Introduction
+------------
+
+In 2001, I started learning Pd. The first bigger patch I did was
+a six operator FM synthesizer loosely modelled after the famous DX7, which I
+called PDX7.
+
+Now it's five years later and not only in retrospective this first patch is
+quite a mess. But I still like the sounds it generates. In the meantime I
+learned a lot more about Pd and about a lot of other things. So I thought, why
+not celebrate the fifth anniversary of me doing Pd, the fifth "birthday" with a
+cleaner version of the PDX7, that maybe others can understand to use as well.
+
+The result is the PDX7 V2.
+
+Requirements
+------------
+
+The first PDX7 used no externals at all. I guess, I didn't even know how to
+compile externals in 2001. This has changed. One external collection is totally
+required for the new PDX7 and that is "iemmatrix". The [mtx_*~] object formerly
+known as [matrix~] is used to handle the operator matrix and makes it possible
+to use much less patch cords than the first PDX7 had. In fact thanks to [mtx_*~]
+the PDX7 turned out to be a very simple patch where most of the patching work is
+put into creating a usable graphical interface.
+
+PDX7 also requires Pd in at least version 0.39 because the then introduced
+[list] objects and some newer methods of messages are used ("adddollar").
+
+Apart from that not other externals are strictly required. However PDX7 also
+uses abstractions from two other collections by me: [list]-abs and Memento.
+Both are available in the Sourceforge-CVS at pure-data.sf.net in the
+abstractions sections. While [list]-abs doesn't require any more externals,
+Memento needs [pool] and [OSCroute]. Getting [pool] to run can be tricky. It is
+perfectly possible to use the PDX7 V2 withouth Memento. The two things missing
+will be saving of settings and remote control through OSC. The polyphony
+example patch will not work correctly because of this. And because of the large
+number of parameters you will want to have state saving in the long run. Duh.
+
+Additionally the help patch uses [Scope~] from Cyclone to display the resulting
+waveform.
+
+Here's a little checklist:
+
+* Pd 0.39 or newer
+* iemmatrix
+* [list]-abs
+* Memento
+* [OSCroute] (from OSC)
+* [pool]
+* [Scope~] (help-patch only)
+
+Usage
+-----
+
+.. figure:: pdx7.png
+ :scale: 50
+
+ Screenshot of the PDX7 V2
+
+The first inlet of the patch rrad.pdx7~.pd accepts lists of two float numbers
+that represent midi note number (0-127) and midi velocity value (0-127).
+
+The PDX7 is a FM synthesizer, or to be precise: a phase modulation synthesizer.
+In consists of six "operators": cosine wave oscillators with envelopes, that
+provide a way to modulate their phases directly. The operators are in the
+abstraction pmosc~.pd
+
+The base frequency of every operator is set to the incoming midi note converted
+to frequency times the value of the respective operators "Freq_Rat" number box:
+it's frequency ratio. See the next picture:
+
+.. figure:: pdx7-frequencies.png
+ :scale: 50
+
+ Setting the frequency/harmonicity ratios of each operator
+
+How much of an operator is sent to the main signal outlets is controlled in the
+"2ch_out" area. Here it is possible to control the signal volume on the left and
+the right channel independently. The toggles can be used to link both number
+boxes to always have the same value.
+
+.. figure:: pdx7-carrier.png
+ :scale: 50
+
+ Controls to specify how much of each operator is used as a "carrier" and
+ send to the main signal outs.
+
+Every operator has its own ADSR-envelope. The GUI-bang on the left side can be
+used to initialize all ADSR-settings to some default values. The ADSR's peak
+values are as loud as the incoming midi velocity specifies. The "lvl%" number
+additionally allows setting the percentage volume of each operator
+independently.
+
+.. figure:: pdx7-envelopes.png
+ :scale: 50
+
+ Every operator has its own ADSR-envelope.
+
+Every operator's output can be routed to modulate the phase of every other
+operator and also to modulate its own phase. As we have 6 operators, we have
+6*6 or 36 possible phase modulations. Which of these are active is controlled
+through the "modulation matrix" which takes up the most screen estate of the
+PDX7 V2. The values shown here also are percent values. This matrix is used to
+control what is also called the "modulation index" of each possible phase
+modulation.
+
+.. figure:: pdx7-modmatrix.png
+ :scale: 50
+
+ The modulation matrix controls the phase modulation indices between
+ operators.
+
+Now I would recommend you just play with the values. Don't forget to turn up at
+least one operator's volume in the "2ch_out" section, to have at least one
+carrier active. Also don't forget to set the frequency ratios: They all default to
+zero! It is best to use integer values or values close to integers for the
+frequencies, as otherwise you are likely to get sounds close to white noise. But
+you already knew that from reading " Theory and Techniques of Electronic Music"
+chapter "Frequency and phase modulation", right?
171 fm3mtx.pd
@@ -0,0 +1,171 @@
+#N canvas 257 8 895 715 10;
+#X obj 518 449 ezdac~;
+#X obj 72 433 Scope~ 367 279 14 3 128 -1 1 0 0 0 0 102 255 51 135 135
+135 0;
+#X floatatom 65 392 5 0 0 0 - - -;
+#X obj 121 259 t b a;
+#X obj 121 373 mtx_print;
+#X obj 121 353 spigot 0;
+#X obj 172 333 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
+1;
+#X floatatom 246 375 4 0 0 0 - - -;
+#X floatatom 282 375 4 0 0 0 - - -;
+#X floatatom 324 374 4 0 0 0 - - -;
+#X obj 453 300 mtx_*~ 4 3;
+#X obj 121 283 mtx 4 3;
+#X obj 519 415 *~ 0.3;
+#X text 29 202 Direct Out:;
+#X msg 62 370 14;
+#X obj 246 353 env~ 16384;
+#X obj 282 328 env~ 16384;
+#X obj 323 355 env~ 16384;
+#X obj 486 40 r~ \$0-p1;
+#X obj 502 132 r~ \$0-p2;
+#X obj 518 218 r~ \$0-p3;
+#X obj 495 329 s~ \$0-p3;
+#X obj 473 355 s~ \$0-p2;
+#X obj 453 382 s~ \$0-p1;
+#X obj 468 20 r \$0-f1;
+#X obj 484 112 r \$0-f2;
+#X obj 500 198 r \$0-f3;
+#X floatatom 665 565 5 0 0 1 base_frequency - -;
+#N canvas 0 0 357 430 1002-freq_ratios 0;
+#X obj 129 248 s \$0-f2;
+#X obj 129 227 * 0;
+#X obj 145 176 r \$0-freq_ratio2;
+#X obj 145 198 t b f;
+#X obj 145 97 t b f;
+#X obj 126 328 * 0;
+#X obj 142 299 t b f;
+#X obj 129 126 * 1;
+#X obj 145 75 r \$0-freq_ratio1;
+#X obj 129 147 s \$0-f1;
+#X obj 142 277 r \$0-freq_ratio3;
+#X obj 126 349 s \$0-f3;
+#X obj 55 49 inlet;
+#X connect 1 0 0 0;
+#X connect 2 0 3 0;
+#X connect 3 0 1 0;
+#X connect 3 1 1 1;
+#X connect 4 0 7 0;
+#X connect 4 1 7 1;
+#X connect 5 0 11 0;
+#X connect 6 0 5 0;
+#X connect 6 1 5 1;
+#X connect 7 0 9 0;
+#X connect 8 0 4 0;
+#X connect 10 0 6 0;
+#X connect 12 0 7 0;
+#X connect 12 0 1 0;
+#X connect 12 0 5 0;
+#X restore 656 583 pd \$0-freq_ratios;
+#X obj 468 89 pmosc~;
+#X obj 484 171 pmosc~;
+#X obj 500 267 pmosc~;
+#X obj 506 62 r~ \$0-a1;
+#X obj 521 151 r~ \$0-a2;
+#X obj 537 245 r~ \$0-a3;
+#X obj 648 153 s~ \$0-a1;
+#X obj 648 299 s~ \$0-a2;
+#X obj 649 445 s~ \$0-a3;
+#X obj 656 544 mtof;
+#X obj 648 9 r \$0-vel;
+#X obj 763 523 s \$0-vel;
+#X floatatom 648 466 5 0 0 0 - - -;
+#X obj 648 524 stripnote;
+#X obj 648 507 pack 0 0;
+#X floatatom 766 467 5 0 0 0 - - -;
+#X floatatom 708 468 5 0 127 0 - - -;
+#X obj 785 544 t a a;
+#X obj 783 502 / 127;
+#X obj 648 31 rrad.nadsr4~ /a1;
+#X obj 649 323 rrad.nadsr4~ /a3;
+#X obj 648 177 rrad.nadsr4~ /a2;
+#X obj 648 490 makenote 100 200;
+#X obj 656 602 cnv 15 150 100 empty \$0-background-cnv empty 20 12
+1 14 -155649 -158106 0;
+#X obj 695 620 nbx 5 14 0 20 0 0 \$0-freq_ratio1 empty Freq_Ratio1
+0 -6 1 10 -158106 -155649 -228225 0 256;
+#X obj 695 648 nbx 5 14 0 20 0 0 \$0-freq_ratio2 empty Freq_Ratio2
+0 -6 1 10 -158106 -155649 -228225 2 256;
+#X obj 695 676 nbx 5 14 0 20 0 0 \$0-freq_ratio3 empty Freq_Ratio3
+0 -6 1 10 -158106 -155649 -228225 1.5 256;
+#X obj 570 566 r NOTE;
+#X obj 571 591 unpack 0 0;
+#X obj 196 189 me 4 2;
+#X obj 121 53 me 1 1;
+#X obj 196 53 me 1 2;
+#X obj 271 53 me 1 3;
+#X obj 121 93 me 2 1;
+#X obj 196 93 me 2 2;
+#X obj 271 93 me 2 3;
+#X obj 271 133 me 3 3;
+#X obj 196 133 me 3 2;
+#X obj 121 133 me 3 1;
+#X obj 121 189 me 4 1;
+#X obj 271 189 me 4 3;
+#X connect 2 0 1 0;
+#X connect 3 0 11 0;
+#X connect 3 1 11 0;
+#X connect 5 0 4 0;
+#X connect 6 0 5 1;
+#X connect 10 0 15 0;
+#X connect 10 0 23 0;
+#X connect 10 1 16 0;
+#X connect 10 1 22 0;
+#X connect 10 2 17 0;
+#X connect 10 2 21 0;
+#X connect 10 3 12 0;
+#X connect 11 0 5 0;
+#X connect 11 0 10 0;
+#X connect 12 0 1 0;
+#X connect 12 0 0 0;
+#X connect 12 0 0 1;
+#X connect 14 0 2 0;
+#X connect 15 0 7 0;
+#X connect 16 0 8 0;
+#X connect 17 0 9 0;
+#X connect 18 0 29 1;
+#X connect 19 0 30 1;
+#X connect 20 0 31 1;
+#X connect 24 0 29 0;
+#X connect 25 0 30 0;
+#X connect 26 0 31 0;
+#X connect 29 0 10 1;
+#X connect 30 0 10 2;
+#X connect 31 0 10 3;
+#X connect 32 0 29 2;
+#X connect 33 0 30 2;
+#X connect 34 0 31 2;
+#X connect 38 0 27 0;
+#X connect 38 0 28 0;
+#X connect 39 0 48 0;
+#X connect 39 0 49 0;
+#X connect 39 0 50 0;
+#X connect 41 0 51 0;
+#X connect 42 0 38 0;
+#X connect 43 0 42 0;
+#X connect 44 0 51 2;
+#X connect 45 0 51 1;
+#X connect 47 0 40 0;
+#X connect 48 0 35 0;
+#X connect 49 0 37 0;
+#X connect 50 0 36 0;
+#X connect 51 0 43 0;
+#X connect 51 1 43 1;
+#X connect 51 1 47 0;
+#X connect 56 0 57 0;
+#X connect 57 0 51 0;
+#X connect 57 1 51 1;
+#X connect 58 0 3 0;
+#X connect 59 0 3 0;
+#X connect 60 0 3 0;
+#X connect 61 0 3 0;
+#X connect 62 0 3 0;
+#X connect 63 0 3 0;
+#X connect 64 0 3 0;
+#X connect 65 0 3 0;
+#X connect 66 0 3 0;
+#X connect 67 0 3 0;
+#X connect 68 0 3 0;
+#X connect 69 0 3 0;
67 matrix-tests.pd
@@ -0,0 +1,67 @@
+#N canvas 598 235 459 428 10;
+#X obj 130 94 mtx 7 6;
+#X msg 130 69 bang;
+#X obj 228 62 mtx_eye 7 6;
+#X msg 227 39 bang;
+#X obj 174 207 print values;
+#X obj 274 201 list prepend matrix 7 6;
+#X obj 274 225 list trim;
+#X obj 271 131 f 0;
+#X obj 323 79 expr 7*6;
+#X obj 323 100 until;
+#X msg 325 54 bang;
+#X msg 263 92 0;
+#X obj 284 259 print inp;
+#X obj 398 158 t a;
+#X obj 295 159 list prepend;
+#X obj 273 182 list;
+#X msg 247 156 bang;
+#X floatatom 378 105 5 0 0 0 - - -;
+#X obj 351 133 print;
+#X obj 310 131 + 1;
+#X msg 393 134 bang;
+#X obj 171 348 print idx;
+#X obj 165 321 list-idx 1;
+#X obj 129 177 list split 3;
+#X obj 74 245 mtx_print;
+#X floatatom 315 399 5 0 0 0 - - -;
+#X obj 308 301 unpack 0 0;
+#X obj 307 373 +;
+#X obj 371 329 - 1;
+#X obj 306 328 - 1;
+#X obj 306 350 * 6;
+#X msg 310 281 4 2;
+#X connect 0 0 23 0;
+#X connect 0 0 24 0;
+#X connect 1 0 0 0;
+#X connect 2 0 0 0;
+#X connect 3 0 2 0;
+#X connect 5 0 6 0;
+#X connect 6 0 0 0;
+#X connect 6 0 12 0;
+#X connect 7 0 14 0;
+#X connect 7 0 18 0;
+#X connect 7 0 19 0;
+#X connect 8 0 9 0;
+#X connect 8 0 17 0;
+#X connect 9 0 7 0;
+#X connect 10 0 8 0;
+#X connect 11 0 7 1;
+#X connect 13 0 14 1;
+#X connect 14 0 13 0;
+#X connect 14 0 15 1;
+#X connect 15 0 5 0;
+#X connect 16 0 15 0;
+#X connect 19 0 7 1;
+#X connect 20 0 14 1;
+#X connect 22 0 21 0;
+#X connect 23 1 4 0;
+#X connect 23 1 22 0;
+#X connect 26 0 29 0;
+#X connect 26 1 28 0;
+#X connect 27 0 25 0;
+#X connect 27 0 22 1;
+#X connect 28 0 27 1;
+#X connect 29 0 30 0;
+#X connect 30 0 27 0;
+#X connect 31 0 26 0;
41 matrix.dat
@@ -0,0 +1,41 @@
+ , ,
+"/pdx7_a3" , ,
+"/pdx7_a3" 0 , "/s" , 59
+"/pdx7_a3" 0 , "/a" , 92
+"/pdx7_a3" 0 , "/r" , 722
+"/pdx7_a3" 0 , "/d" , 40
+"/pdx7_a6" , ,
+"/pdx7_a6" 0 , "/s" , 71
+"/pdx7_a6" 0 , "/a" , 46
+"/pdx7_a6" 0 , "/r" , 1200
+"/pdx7_a6" 0 , "/d" , 149
+"/pdx7_a4" , ,
+"/pdx7_a4" 0 , "/s" , 64
+"/pdx7_a4" 0 , "/a" , 68
+"/pdx7_a4" 0 , "/r" , 741
+"/pdx7_a4" 0 , "/d" , 40
+"/pdx7_a5" , ,
+"/pdx7_a5" 0 , "/s" , 50
+"/pdx7_a5" 0 , "/a" , 10
+"/pdx7_a5" 0 , "/r" , 357
+"/pdx7_a5" 0 , "/d" , 40
+"/pdx7_a2" , ,
+"/pdx7_a2" 0 , "/s" , 28
+"/pdx7_a2" 0 , "/a" , 35
+"/pdx7_a2" 0 , "/r" , 656
+"/pdx7_a2" 0 , "/d" , 138
+"/pdx7_a1" , ,
+"/pdx7_a1" 0 , "/s" , 53
+"/pdx7_a1" 0 , "/a" , 85
+"/pdx7_a1" 0 , "/r" , 2000
+"/pdx7_a1" 0 , "/d" , 202
+"/pdx7" , ,
+"/pdx7" 0 , "/fr1" , 2
+"/pdx7" 0 , "/fr3" , 0.5
+"/pdx7" 0 , "/fr5" , 4
+"/pdx7" 0 , "/matrix" , "matrix" 6 6 0 0.5 0 0.07 0 0 0 0 0 0.17 0.08 0.27 0 0 0 0 0 0 0 0 0 0 0 0 0 0.35 0 0 0 0 0 0 0 0 0 0
+"/pdx7" 0 , "/fr2" , 1
+"/pdx7" 0 , "/fr4" , 3.02
+"/pdx7" 0 , "/fr6" , 5.02
+"/pdx7" 0 , "/car" , "matrix" 2 6 0.74 0 0.11 0.24 0.16 0.64 0.74 0 0.28 0.48 0.8 0.1
+"/pdx7" 0 , "/mod" , "matrix" 6 6 0 0.39 0 0.07 0 0 0 0 0 0.18 0 0.43 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.15 0 0 0 0 0.15 0
9 matrix.sad
@@ -0,0 +1,9 @@
+/fr6 5.02;
+/fr5 4;
+/fr4 3;
+/fr3 0.5;
+/fr2 1;
+/fr1 2;
+/car matrix 2 6 0.87 0.45 0 0 0 0 0.87 0.45 0 0 0 0;
+/mod matrix 6 6 0 0.57 0 0 0 0 0 0 0.46 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0;
131 me.pd
@@ -0,0 +1,131 @@
+#N canvas 0 0 844 391 10;
+#X obj 268 280 outlet;
+#X obj 268 199 * 0.01;
+#X obj 473 161 +;
+#X obj 538 118 - 1;
+#X obj 473 117 - 1;
+#X obj 473 139 * 6;
+#X msg 467 17 bang;
+#X obj 473 90 f \$1;
+#X obj 537 92 f \$2;
+#X obj 473 37 loadbang;
+#X obj 338 160 * 100;
+#X obj 269 32 r \$3-matrix-elements;
+#X obj 308 101 list split;
+#X obj 340 140 list split 1;
+#X obj 268 222 list prepend element \$1 \$2;
+#X obj 268 252 list trim;
+#X obj 269 75 list split 2;
+#X obj 101 101 cnv 10 73 38 empty \$0-bg 1->2 4 4 1 12 -262144 -1 0
+;
+#X obj 139 121 cnv 3 35 3 empty \$0-fb empty 20 12 0 14 -1 -1 0;
+#X msg 101 77 set \$1;
+#X obj 699 129 makefilename;
+#X msg 701 151 label \$1;
+#X msg 709 99 set \$1->%d;
+#X floatatom 101 114 5 0 10000 0 - - -;
+#X obj 473 60 t b b b;
+#N canvas 0 0 450 300 colorize-dial 0;
+#X obj 95 48 inlet;
+#X obj 116 90 f;
+#X obj 136 250 s \$0-fb;
+#X obj 133 118 > 0;
+#X obj 133 143 select 0 1;
+#X obj 138 190 list;
+#X obj 138 216 list trim;
+#X msg 209 191 color -1 -1 -1;
+#X obj 215 140 r \$0-bg-color;
+#X obj 162 39 inlet;
+#X obj 159 64 b;
+#X connect 0 0 1 0;
+#X connect 1 0 3 0;
+#X connect 3 0 4 0;
+#X connect 4 0 5 0;
+#X connect 4 1 7 0;
+#X connect 5 0 6 0;
+#X connect 6 0 2 0;
+#X connect 7 0 2 0;
+#X connect 8 0 5 1;
+#X connect 9 0 10 0;
+#X connect 10 0 1 0;
+#X restore 93 216 pd colorize-dial;
+#X obj 105 182 r \$0-redraw-dial;
+#N canvas 0 0 471 533 set-bgcolor 0;
+#X obj 110 59 inlet;
+#X obj 141 364 s \$0-bg;
+#X obj 110 314 colorize;
+#X obj 110 127 mod 2;
+#X obj 140 428 s \$0-bg-color;
+#X obj 110 156 select 1 0;
+#X obj 110 389 t b a;
+#X msg 110 195 f f f 0 0 0 0 0 0;
+#X msg 237 230 e e e 0 0 0 0 0 0;
+#X obj 237 101 select 0 1;
+#X obj 207 71 t b a;
+#X obj 182 285 list;
+#X msg 269 209 b b b 0 0 0 0 0 0;
+#X obj 110 457 s \$0-redraw-dial;
+#X obj 205 49 inlet;
+#X connect 0 0 3 0;
+#X connect 2 0 1 0;
+#X connect 2 0 6 0;
+#X connect 3 0 5 0;
+#X connect 5 0 7 0;
+#X connect 5 1 11 0;
+#X connect 6 0 13 0;
+#X connect 6 1 4 0;
+#X connect 7 0 2 0;
+#X connect 8 0 2 0;
+#X connect 8 0 11 1;
+#X connect 9 0 8 0;
+#X connect 9 1 12 0;
+#X connect 10 0 3 0;
+#X connect 10 1 9 0;
+#X connect 11 0 2 0;
+#X connect 12 0 2 0;
+#X connect 12 0 11 1;
+#X connect 14 0 10 0;
+#X restore 510 195 pd set-bgcolor;
+#X obj 707 172 s \$0-bg;
+#X msg 572 149 0;
+#X obj 510 159 +;
+#X obj 269 55 route matrix bg;
+#X obj 57 47 inlet;
+#X connect 1 0 14 0;
+#X connect 2 0 12 1;
+#X connect 3 0 2 1;
+#X connect 4 0 5 0;
+#X connect 5 0 2 0;
+#X connect 6 0 24 0;
+#X connect 7 0 4 0;
+#X connect 7 0 20 0;
+#X connect 7 0 30 0;
+#X connect 8 0 3 0;
+#X connect 8 0 22 0;
+#X connect 8 0 30 1;
+#X connect 9 0 24 0;
+#X connect 10 0 19 0;
+#X connect 10 0 25 0;
+#X connect 11 0 31 0;
+#X connect 12 1 13 0;
+#X connect 13 0 10 0;
+#X connect 14 0 15 0;
+#X connect 15 0 0 0;
+#X connect 16 1 12 0;
+#X connect 19 0 23 0;
+#X connect 20 0 21 0;
+#X connect 21 0 28 0;
+#X connect 22 0 20 0;
+#X connect 23 0 1 0;
+#X connect 23 0 25 0;
+#X connect 24 0 7 0;
+#X connect 24 1 8 0;
+#X connect 24 2 29 0;
+#X connect 26 0 25 1;
+#X connect 29 0 27 1;
+#X connect 30 0 27 0;
+#X connect 31 0 16 0;
+#X connect 31 1 27 1;
+#X connect 31 2 23 0;
+#X connect 32 0 23 0;
+#X coords 0 -1 1 1 75 40 1 100 100;
236 melody.dat
@@ -0,0 +1,236 @@
+ , ,
+"/a1" , ,
+"/a1" 0 , "/s" , 76
+"/a1" 0 , "/a" , 5
+"/a1" 0 , "/r" , 957
+"/a1" 0 , "/d" , 50
+"/a3" , ,
+"/a3" 0 , "/s" , 61
+"/a3" 0 , "/a" , 43
+"/a3" 0 , "/r" , 623
+"/a3" 0 , "/d" , 66
+"/a2" , ,
+"/a2" 0 , "/s" , 77
+"/a2" 0 , "/a" , 8
+"/a2" 0 , "/r" , 827
+"/a2" 0 , "/d" , 12
+"/m" , ,
+"/m" 0 , "/bpm" , 120
+"/m" 0 , "/start" , 1
+"/patt" , ,
+"/patt" 0 , "/n5" , -0
+"/patt" 0 , "/n3" , -0
+"/patt" 0 , "/s32" , 108.857
+"/patt" 0 , "/s31" , 20.1587
+"/patt" 0 , "/s30" , 127
+"/patt" 0 , "/s29" , 116.921
+"/patt" 0 , "/s28" , 0
+"/patt" 0 , "/s27" , 100.794
+"/patt" 0 , "/s14" , 127
+"/patt" 0 , "/s26" , 86.6825
+"/patt" 0 , "/s25" , 94.746
+"/patt" 0 , "/last" , 31
+"/patt" 0 , "/s19" , 0
+"/patt" 0 , "/n1" , -0
+"/patt" 0 , "/s20" , 28.2222
+"/patt" 0 , "/s16" , 96.7619
+"/patt" 0 , "/oct" , 3
+"/patt" 0 , "/n28" , 13
+"/patt" 0 , "/n26" , -0
+"/patt" 0 , "/s7" , 74.5873
+"/patt" 0 , "/n32" , 12
+"/patt" 0 , "/s5" , 0
+"/patt" 0 , "/n30" , 12
+"/patt" 0 , "/s3" , 70.5556
+"/patt" 0 , "/n25" , -0
+"/patt" 0 , "/n23" , 13
+"/patt" 0 , "/n21" , -0
+"/patt" 0 , "/s11" , 12.0952
+"/patt" 0 , "/n19" , 13
+"/patt" 0 , "/s13" , 0
+"/patt" 0 , "/n17" , -0
+"/patt" 0 , "/n15" , 13
+"/patt" 0 , "/s9" , 96.7619
+"/patt" 0 , "/n13" , 2
+"/patt" 0 , "/play" , 1
+"/patt" 0 , "/s2" , 0
+"/patt" 0 , "/n11" , -0
+"/patt" 0 , "/rand" , 6
+"/patt" 0 , "/n9" , -0
+"/patt" 0 , "/s" , 30
+"/patt" 0 , "/n7" , -0
+"/patt" 0 , "/n4" , -0
+"/patt" 0 , "/n2" , 13
+"/patt" 0 , "/resol" , 2.76596
+"/patt" 0 , "/transp" , 0
+"/patt" 0 , "/svol" , 127
+"/patt" 0 , "/s17" , 92.7302
+"/patt" 0 , "/s18" , 0
+"/patt" 0 , "/n29" , 5
+"/patt" 0 , "/s23" , 0
+"/patt" 0 , "/n27" , -0
+"/patt" 0 , "/s24" , 82.6508
+"/patt" 0 , "/s21" , 94.746
+"/patt" 0 , "/s6" , 0
+"/patt" 0 , "/n31" , -0
+"/patt" 0 , "/s22" , 0
+"/patt" 0 , "/s4" , 114.905
+"/patt" 0 , "/n24" , -0
+"/patt" 0 , "/n22" , -0
+"/patt" 0 , "/n20" , -0
+"/patt" 0 , "/s10" , 0
+"/patt" 0 , "/n18" , 13
+"/patt" 0 , "/s12" , 94.746
+"/patt" 0 , "/n16" , 12
+"/patt" 0 , "/n14" , 12
+"/patt" 0 , "/s8" , 0
+"/patt" 0 , "/n12" , -0
+"/patt" 0 , "/s1" , 114.905
+"/patt" 0 , "/n10" , 13
+"/patt" 0 , "/s15" , 0
+"/patt" 0 , "/n8" , 13
+"/patt" 0 , "/n6" , 13
+"/patt" 2 , "/n5" , -0
+"/patt" 2 , "/n3" , -0
+"/patt" 2 , "/s32" , 108.857
+"/patt" 2 , "/s31" , 20.1587
+"/patt" 2 , "/s30" , 127
+"/patt" 2 , "/s29" , 116.921
+"/patt" 2 , "/s28" , 0
+"/patt" 2 , "/s27" , 100.794
+"/patt" 2 , "/s14" , 127
+"/patt" 2 , "/s26" , 86.6825
+"/patt" 2 , "/s25" , 94.746
+"/patt" 2 , "/last" , 31
+"/patt" 2 , "/s19" , 0
+"/patt" 2 , "/n1" , -0
+"/patt" 2 , "/s20" , 28.2222
+"/patt" 2 , "/s16" , 96.7619
+"/patt" 2 , "/oct" , 3
+"/patt" 2 , "/n28" , 13
+"/patt" 2 , "/n26" , -0
+"/patt" 2 , "/s7" , 106.841
+"/patt" 2 , "/n32" , 12
+"/patt" 2 , "/s5" , 0
+"/patt" 2 , "/n30" , 12
+"/patt" 2 , "/s3" , 70.5556
+"/patt" 2 , "/n25" , 10
+"/patt" 2 , "/n23" , 13
+"/patt" 2 , "/n21" , -0
+"/patt" 2 , "/s11" , 88.6984
+"/patt" 2 , "/n19" , 13
+"/patt" 2 , "/s13" , 0
+"/patt" 2 , "/n17" , -0
+"/patt" 2 , "/n15" , 13
+"/patt" 2 , "/s9" , 96.7619
+"/patt" 2 , "/n13" , 2
+"/patt" 2 , "/play" , 1
+"/patt" 2 , "/s2" , 0
+"/patt" 2 , "/n11" , 9
+"/patt" 2 , "/rand" , 6
+"/patt" 2 , "/n9" , -0
+"/patt" 2 , "/s" , 30
+"/patt" 2 , "/n7" , 10
+"/patt" 2 , "/n4" , -0
+"/patt" 2 , "/n2" , 13
+"/patt" 2 , "/resol" , 2.76596
+"/patt" 2 , "/transp" , 0
+"/patt" 2 , "/svol" , 127
+"/patt" 2 , "/s17" , 92.7302
+"/patt" 2 , "/s18" , 0
+"/patt" 2 , "/n29" , 5
+"/patt" 2 , "/s23" , 0
+"/patt" 2 , "/n27" , 9
+"/patt" 2 , "/s24" , 82.6508
+"/patt" 2 , "/s21" , 94.746
+"/patt" 2 , "/s6" , 0
+"/patt" 2 , "/n31" , -0
+"/patt" 2 , "/s22" , 0
+"/patt" 2 , "/s4" , 114.905
+"/patt" 2 , "/n24" , 10
+"/patt" 2 , "/n22" , -0
+"/patt" 2 , "/n20" , -0
+"/patt" 2 , "/s10" , 0
+"/patt" 2 , "/n18" , 13
+"/patt" 2 , "/s12" , 110.873
+"/patt" 2 , "/n16" , 12
+"/patt" 2 , "/n14" , 12
+"/patt" 2 , "/s8" , 0
+"/patt" 2 , "/n12" , 9
+"/patt" 2 , "/s1" , 114.905
+"/patt" 2 , "/n10" , 13
+"/patt" 2 , "/s15" , 0
+"/patt" 2 , "/n8" , 13
+"/patt" 2 , "/n6" , 13
+"/patt" 1 , "/n5" , -0
+"/patt" 1 , "/n3" , -0
+"/patt" 1 , "/s32" , 108.857
+"/patt" 1 , "/s31" , 20.1587
+"/patt" 1 , "/s30" , 127
+"/patt" 1 , "/s29" , 116.921
+"/patt" 1 , "/s28" , 0
+"/patt" 1 , "/s27" , 100.794
+"/patt" 1 , "/s14" , 127
+"/patt" 1 , "/s26" , 86.6825
+"/patt" 1 , "/s25" , 94.746
+"/patt" 1 , "/last" , 31
+"/patt" 1 , "/s19" , 0
+"/patt" 1 , "/n1" , -0
+"/patt" 1 , "/s20" , 28.2222
+"/patt" 1 , "/s16" , 96.7619
+"/patt" 1 , "/oct" , 3
+"/patt" 1 , "/n28" , 13
+"/patt" 1 , "/n26" , -0
+"/patt" 1 , "/s7" , 74.5873
+"/patt" 1 , "/n32" , 12
+"/patt" 1 , "/s5" , 0
+"/patt" 1 , "/n30" , 12
+"/patt" 1 , "/s3" , 70.5556
+"/patt" 1 , "/n25" , 10
+"/patt" 1 , "/n23" , 13
+"/patt" 1 , "/n21" , -0
+"/patt" 1 , "/s11" , 12.0952
+"/patt" 1 , "/n19" , 13
+"/patt" 1 , "/s13" , 0
+"/patt" 1 , "/n17" , -0
+"/patt" 1 , "/n15" , 13
+"/patt" 1 , "/s9" , 96.7619
+"/patt" 1 , "/n13" , 2
+"/patt" 1 , "/play" , 1
+"/patt" 1 , "/s2" , 0
+"/patt" 1 , "/n11" , -0
+"/patt" 1 , "/rand" , 6
+"/patt" 1 , "/n9" , -0
+"/patt" 1 , "/s" , 30
+"/patt" 1 , "/n7" , -0
+"/patt" 1 , "/n4" , -0
+"/patt" 1 , "/n2" , 13
+"/patt" 1 , "/resol" , 2.76596
+"/patt" 1 , "/transp" , 0
+"/patt" 1 , "/svol" , 127
+"/patt" 1 , "/s17" , 92.7302
+"/patt" 1 , "/s18" , 0
+"/patt" 1 , "/n29" , 5
+"/patt" 1 , "/s23" , 0
+"/patt" 1 , "/n27" , 9
+"/patt" 1 , "/s24" , 82.6508
+"/patt" 1 , "/s21" , 94.746
+"/patt" 1 , "/s6" , 0
+"/patt" 1 , "/n31" , -0
+"/patt" 1 , "/s22" , 0
+"/patt" 1 , "/s4" , 114.905
+"/patt" 1 , "/n24" , 10
+"/patt" 1 , "/n22" , -0
+"/patt" 1 , "/n20" , -0
+"/patt" 1 , "/s10" , 0
+"/patt" 1 , "/n18" , 13
+"/patt" 1 , "/s12" , 94.746
+"/patt" 1 , "/n16" , 12
+"/patt" 1 , "/n14" , 12
+"/patt" 1 , "/s8" , 0
+"/patt" 1 , "/n12" , -0
+"/patt" 1 , "/s1" , 114.905
+"/patt" 1 , "/n10" , 13
+"/patt" 1 , "/s15" , 0
+"/patt" 1 , "/n8" , 13
+"/patt" 1 , "/n6" , 13
154 mes.pd
@@ -0,0 +1,154 @@
+#N canvas 0 0 844 391 10;
+#X obj 41 329 outlet;
+#X obj 41 248 * 0.01;
+#X obj 473 165 +;
+#X obj 473 139 * 6;
+#X msg 467 17 bang;
+#X obj 473 90 f \$1;
+#X obj 537 92 f \$2;
+#X obj 473 37 loadbang;
+#X obj 264 176 * 100;
+#X obj 269 32 r \$3-matrix-elements;
+#X obj 41 271 list prepend element \$1 \$2;
+#X obj 41 301 list trim;
+#X obj 269 75 list split 2;
+#X obj 101 101 cnv 10 80 38 empty \$0-bg 0->0 4 4 1 12 -245500 -1 0
+;
+#X msg 101 77 set \$1;
+#X obj 723 151 makefilename;
+#X msg 725 173 label \$1;
+#X msg 733 121 set \$1->%d;
+#X floatatom 102 120 5 0 10000 0 - - -;
+#N canvas 0 0 471 533 set-bgcolor 0;
+#X obj 110 59 inlet;
+#X obj 141 364 s \$0-bg;
+#X obj 110 314 colorize;
+#X obj 110 127 mod 2;
+#X obj 140 428 s \$0-bg-color;
+#X obj 110 156 select 1 0;
+#X obj 110 389 t b a;
+#X msg 110 195 f f f 0 0 0 0 0 0;
+#X msg 237 230 e e e 0 0 0 0 0 0;
+#X obj 237 101 select 0 1;
+#X obj 207 71 t b a;
+#X obj 182 285 list;
+#X msg 269 209 b b b 0 0 0 0 0 0;
+#X obj 110 457 s \$0-redraw-dial;
+#X obj 205 49 inlet;
+#X connect 0 0 3 0;
+#X connect 2 0 1 0;
+#X connect 2 0 6 0;
+#X connect 3 0 5 0;
+#X connect 5 0 7 0;
+#X connect 5 1 11 0;
+#X connect 6 0 13 0;
+#X connect 6 1 4 0;
+#X connect 7 0 2 0;
+#X connect 8 0 2 0;
+#X connect 8 0 11 1;
+#X connect 9 0 8 0;
+#X connect 9 1 12 0;
+#X connect 10 0 3 0;
+#X connect 10 1 9 0;
+#X connect 11 0 2 0;
+#X connect 12 0 2 0;
+#X connect 12 0 11 1;
+#X connect 14 0 10 0;
+#X restore 510 195 pd set-bgcolor;
+#X obj 731 194 s \$0-bg;
+#X msg 572 149 0;
+#X obj 510 159 +;
+#X obj 269 55 route matrix bg;
+#X obj 57 47 inlet;
+#X floatatom 142 120 5 0 10000 0 - - -;
+#X obj 236 247 * 0.01;
+#X obj 394 224 + 1;
+#X obj 245 282 list prepend \$2;
+#X obj 247 312 list prepend;
+#X obj 220 339 list prepend element;
+#X obj 164 102 tgl 15 0 \$0-link \$0-link empty 0 -6 0 8 -262144 -1
+-1 0 1;
+#X obj 73 148 t f f;
+#X msg 473 217 adddollar \$1;
+#X obj 306 175 * 100;
+#X obj 473 245 + 6;
+#X msg 473 265 adddollar \$1;
+#X obj 473 117 - 1;
+#X obj 535 121 - 1;
+#X msg 304 153 \$0;
+#X msg 263 153 \$0;
+#X msg 86 212 set \$1;
+#X obj 473 60 t b b b b;
+#X msg 544 60 set;
+#X msg 304 200 set \$1;
+#X obj 276 97 t a a;
+#X msg 161 76 0;
+#X obj 86 176 spigot 0;
+#X msg 148 212 set \$1;
+#X obj 148 176 spigot 0;
+#X text 21 12 THIS IS A BLODDY MESS!!!!;
+#X connect 1 0 10 0;
+#X connect 2 0 33 0;
+#X connect 2 0 35 0;
+#X connect 3 0 2 0;
+#X connect 4 0 42 0;
+#X connect 5 0 15 0;
+#X connect 5 0 22 0;
+#X connect 5 0 27 0;
+#X connect 5 0 37 0;
+#X connect 6 0 17 0;
+#X connect 6 0 22 1;
+#X connect 6 0 2 1;
+#X connect 7 0 42 0;
+#X connect 8 0 14 0;
+#X connect 9 0 23 0;
+#X connect 10 0 11 0;
+#X connect 11 0 0 0;
+#X connect 12 1 45 0;
+#X connect 14 0 18 0;
+#X connect 15 0 16 0;
+#X connect 16 0 20 0;
+#X connect 17 0 15 0;
+#X connect 18 0 32 0;
+#X connect 21 0 19 1;
+#X connect 22 0 19 0;
+#X connect 23 0 12 0;
+#X connect 23 1 19 1;
+#X connect 23 2 18 0;
+#X connect 24 0 18 0;
+#X connect 25 0 26 0;
+#X connect 25 0 49 0;
+#X connect 26 0 28 0;
+#X connect 27 0 29 1;
+#X connect 28 0 29 0;
+#X connect 29 0 30 0;
+#X connect 30 0 11 0;
+#X connect 31 0 47 1;
+#X connect 31 0 49 1;
+#X connect 32 0 1 0;
+#X connect 32 1 47 0;
+#X connect 33 0 40 0;
+#X connect 34 0 44 0;
+#X connect 35 0 36 0;
+#X connect 36 0 39 0;
+#X connect 37 0 3 0;
+#X connect 39 0 34 0;
+#X connect 40 0 8 0;
+#X connect 41 0 25 0;
+#X connect 42 0 5 0;
+#X connect 42 0 46 0;
+#X connect 42 1 6 0;
+#X connect 42 2 21 0;
+#X connect 42 3 43 0;
+#X connect 43 0 39 0;
+#X connect 43 0 40 0;
+#X connect 44 0 25 0;
+#X connect 45 0 39 0;
+#X connect 45 1 40 0;
+#X connect 46 0 31 0;
+#X connect 47 0 41 0;
+#X connect 47 0 26 0;
+#X connect 48 0 18 0;
+#X connect 49 0 48 0;
+#X connect 49 0 1 0;
+#X coords 0 -1 1 1 82 40 1 100 100;
426 pdx7.adsr~.pd
@@ -0,0 +1,426 @@
+#N canvas 500 433 762 294 10;
+#X obj 507 8 inlet OSC;
+#N canvas 127 377 981 424 saves 0;
+#X obj 45 160 originator \$1 \$0;
+#X obj 152 132 inlet OSC;
+#X obj 47 55 r \$0-substate;
+#X obj 15 13 inlet substate;
+#X obj 15 35 route substate;
+#X obj 159 55 r \$0-copy;
+#X msg 159 76 copy;
+#X obj 243 50 r \$0-paste;
+#X msg 241 71 paste;
+#X text 154 15 This is the originator \, including some ready to use
+standard functionality.;
+#X text 507 56 Put your commun sends here \, if you like.;
+#X msg 15 91 setsub \$1;
+#X msg 249 184 svdir \$1;
+#X obj 250 139 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 250 163 savepanel;
+#X obj 152 189 outlet OSC;
+#X msg 108 214 svxdir /tmp/svdir.xml;
+#X msg 78 241 ldxdir /tmp/svdir.xml;
+#X obj 538 176 s \$0-ain;
+#X obj 610 176 s \$0-din;
+#X obj 682 176 s \$0-sin;
+#X obj 776 179 s \$0-rin;
+#X obj 536 107 r \$0-a;
+#X obj 630 105 r \$0-d;
+#X obj 698 106 r \$0-s;
+#X obj 769 106 r \$0-r;
+#X obj 772 142 commun /r \$0;
+#X obj 682 142 commun /s \$0;
+#X obj 582 141 commun /d \$0;
+#X obj 496 137 commun /a \$0;
+#X connect 0 2 15 0;
+#X connect 1 0 0 1;
+#X connect 2 0 11 0;
+#X connect 3 0 4 0;
+#X connect 4 0 11 0;
+#X connect 4 1 0 0;
+#X connect 5 0 6 0;
+#X connect 6 0 0 0;
+#X connect 7 0 8 0;
+#X connect 8 0 0 0;
+#X connect 11 0 0 0;
+#X connect 12 0 0 0;
+#X connect 13 0 14 0;
+#X connect 14 0 12 0;
+#X connect 16 0 0 0;
+#X connect 17 0 0 0;
+#X connect 22 0 29 0;
+#X connect 23 0 28 0;
+#X connect 24 0 27 0;
+#X connect 25 0 26 0;
+#X connect 26 0 21 0;
+#X connect 27 0 20 0;
+#X connect 28 0 19 0;
+#X connect 29 0 18 0;
+#X restore 445 7 pd saves;
+#N canvas 569 61 450 300 cnv.ctl 0;
+#X obj 90 188 s \$0-background-cnv;
+#X floatatom 108 59 5 100 1000 0 width - -;
+#X floatatom 112 83 4 50 500 0 height - -;
+#X obj 92 132 pack 0 0;
+#X msg 92 159 vis_size \$1 \$2;
+#X obj 110 106 t b f;
+#X connect 1 0 3 0;
+#X connect 2 0 5 0;
+#X connect 3 0 4 0;
+#X connect 4 0 0 0;
+#X connect 5 0 3 0;
+#X connect 5 1 3 1;
+#X restore 524 30 pd cnv.ctl;
+#X obj 669 90 bng 15 250 50 0 \$0-copy empty copy 0 -6 0 8 -225271
+-1 -1;
+#X obj 669 118 bng 15 250 50 0 \$0-paste empty paste 0 -6 0 8 -257472
+-1 -1;
+#X obj 445 28 outlet OSC;
+#X obj 373 26 inlet;
+#X obj 373 77 outlet~;
+#N canvas 0 0 600 400 envelope 0;
+#X obj 220 203 r \$0-a;
+#X obj 252 223 r \$0-d;
+#X obj 277 247 r \$0-s;
+#X obj 333 265 r \$0-r;
+#X obj 25 119 inlet;
+#X obj 174 346 outlet~;
+#N canvas 322 82 891 795 adsr 0;
+#X text 52 50 This patch is used as an abstraction in 25.envelope.pd
+;
+#X obj 95 108 inlet;
+#X obj 298 111 inlet;
+#X text 91 79 trigger;
+#X obj 95 138 sel 0;
+#X obj 144 138 t b;
+#X obj 104 399 pack 0 \$2;
+#X obj 362 112 inlet;
+#X obj 309 301 del \$2;
+#X obj 338 324 f \$4;
+#X obj 363 411 pack 0 \$3;
+#X obj 410 112 inlet;
+#X obj 459 111 inlet;
+#X obj 504 111 inlet;
+#X msg 95 191 stop;
+#X obj 517 360 pack 0 \$5;
+#X text 378 86 Traditional A \, D \, S \, R;
+#X text 296 88 level;
+#X text 32 302 ATTACK;
+#X obj 447 533 outlet~;
+#X text 7 325 recall level;
+#X text 7 345 and pack with;
+#X text 8 365 attack time;
+#X text 28 124 if zero;
+#X text 29 141 release;
+#X text 17 183 and cancel;
+#X text 17 199 decay;
+#X text 148 120 bang if attack;
+#X text 183 294 on attack \, set a;
+#X text 147 307 delay to go to sustain;
+#X text 189 324 recall sustain value;
+#X text 185 347 multiply by overall level;
+#X text 220 370 pack with decay time;
+#X text 510 386 on release ramp;
+#X text 511 403 back to zero;
+#X text 63 12 adsr - arguments: level \, attack time \, decay time
+\, sustain level \, release time;
+#X text 9 479 When you send this patch a nonzero trigger it schedules
+a line~ to do an attack and decay \, and if zero \, it starts the release
+ramp.;
+#X text 10 525 Objects such as f and pack can be given dollar sign
+arguments to initialize their contents from adsr's creation arguments.
+Inlets are supplied to update them on the fly.;
+#X obj 104 334 f;
+#X obj 364 346 * 1;
+#X obj 363 386 sqrt;
+#X obj 363 365 sqrt;
+#X obj 447 461 vline~;
+#X obj 446 491 *~;
+#X obj 446 511 *~;
+#X obj 104 376 sqrt;
+#X obj 104 355 sqrt;
+#X connect 1 0 4 0;
+#X connect 2 0 38 0;
+#X connect 2 0 39 1;
+#X connect 4 0 14 0;
+#X connect 4 0 15 0;
+#X connect 4 1 5 0;
+#X connect 5 0 8 0;
+#X connect 6 0 42 0;
+#X connect 7 0 6 1;
+#X connect 7 0 8 1;
+#X connect 8 0 9 0;
+#X connect 9 0 39 0;
+#X connect 10 0 42 0;
+#X connect 11 0 10 1;
+#X connect 12 0 9 1;
+#X connect 13 0 15 1;
+#X connect 14 0 8 0;
+#X connect 15 0 42 0;
+#X connect 38 0 46 0;
+#X connect 39 0 41 0;
+#X connect 40 0 10 0;
+#X connect 41 0 40 0;
+#X connect 42 0 43 0;
+#X connect 42 0 43 1;
+#X connect 43 0 44 0;
+#X connect 43 0 44 1;
+#X connect 44 0 19 0;
+#X connect 45 0 6 0;
+#X connect 46 0 45 0;
+#X restore 174 292 pd adsr -----------;
+#X obj 74 149 select 0;
+#X obj 119 175 * 1;
+#X obj 109 203 s \$0-level-in;
+#X obj 158 92 r \$0-level;
+#X obj 192 175 r \$0-level-in;
+#X obj 277 266 * 0.01;
+#X obj 156 124 * 0.01;
+#X connect 0 0 6 2;
+#X connect 1 0 6 3;
+#X connect 2 0 12 0;
+#X connect 3 0 6 5;
+#X connect 4 0 7 0;
+#X connect 4 0 6 0;
+#X connect 6 0 5 0;
+#X connect 7 1 8 0;
+#X connect 8 0 9 0;
+#X connect 10 0 13 0;
+#X connect 11 0 6 1;
+#X connect 12 0 6 4;
+#X connect 13 0 8 1;
+#X restore 373 52 pd envelope;
+#X text 625 32 Graphical ADSR;
+#X obj 668 146 nbx 2 14 -1e+37 1e+37 0 0 \$0-substate \$0-parentstate
+preset 0 -6 0 8 -195568 -1 -1 0 256;
+#X obj 31 34 nbx 5 14 0 1e+37 0 0 \$0-a \$0-ain a 10 -6 1 10 -158106
+-155649 -228225 0 256;
+#X obj 131 34 nbx 5 14 0 100 0 0 \$0-s \$0-sin s% 10 -6 1 10 -158106
+-155649 -228225 0 256;
+#X obj 81 34 nbx 5 14 0 1e+37 0 0 \$0-d \$0-din d 10 -6 1 10 -158106
+-155649 -228225 0 256;
+#X obj 181 34 nbx 5 14 0 1e+37 0 0 \$0-r \$0-rin r 10 -6 1 10 -158106
+-155649 -228225 0 256;
+#X obj 231 34 nbx 5 14 0 1e+37 0 0 \$0-level empty lvl% 10 -6 1 10
+-155649 -228225 -158106 0 256;
+#N canvas 0 0 590 606 colorize 0;
+#X obj 69 339 list prepend color;
+#X obj 69 362 list trim;
+#N canvas 281 345 447 195 rgbtopd 0;
+#X obj 35 59 expr -65536 * $i1 - 256 * $i2 - $i3 - 1 \;;
+#X obj 35 25 inlet;
+#X obj 35 89 outlet;
+#X text 26 121 -pow(2 \, 16) * R - pow(2 \, 8) * G - pow(2 \, 0) *
+B - 1;
+#X connect 0 0 2 0;
+#X connect 1 0 0 0;
+#X restore 224 152 pd rgbtopd;
+#N canvas 281 345 447 195 rgbtopd 0;
+#X obj 35 59 expr -65536 * $i1 - 256 * $i2 - $i3 - 1 \;;
+#X obj 35 25 inlet;
+#X obj 35 89 outlet;
+#X text 26 121 -pow(2 \, 16) * R - pow(2 \, 8) * G - pow(2 \, 0) *
+B - 1;
+#X connect 0 0 2 0;
+#X connect 1 0 0 0;
+#X restore 144 152 pd rgbtopd;
+#N canvas 281 345 447 195 rgbtopd 0;
+#X obj 35 59 expr -65536 * $i1 - 256 * $i2 - $i3 - 1 \;;
+#X obj 35 25 inlet;
+#X obj 35 89 outlet;
+#X text 26 121 -pow(2 \, 16) * R - pow(2 \, 8) * G - pow(2 \, 0) *
+B - 1;
+#X connect 0 0 2 0;
+#X connect 1 0 0 0;
+#X restore 69 151 pd rgbtopd;
+#N canvas 362 262 450 300 hexcolor 0;
+#X obj 152 168 * 16;
+#X obj 152 143 t f f;
+#X obj 152 201 +;
+#X obj 127 38 inlet;
+#X obj 125 61 t b a b;
+#X obj 133 252 list prepend;
+#X obj 221 255 t a;
+#X obj 99 290 list;
+#X obj 101 314 outlet;
+#N canvas 0 0 533 407 drip 0;
+#X obj 64 206 list split 1;
+#X obj 64 123 until;
+#X obj 64 181 list append;
+#X obj 194 206 bang;
+#X text 146 90 First store list \, then start the loop;
+#X text 163 118 "until" bangs its output until told to stop by a "bang"
+to its right inlet.;
+#X text 182 160 Store the remaining list.;
+#X text 239 205 third outlet of "split" tells us to stop.;
+#X obj 64 243 outlet;
+#X obj 64 57 inlet;
+#X text 237 44 From list-help.pd;
+#X obj 143 243 outlet;
+#X obj 64 86 t b a;
+#X connect 0 0 8 0;
+#X connect 0 1 2 1;
+#X connect 0 2 3 0;
+#X connect 0 2 11 0;
+#X connect 1 0 2 0;
+#X connect 2 0 0 0;
+#X connect 3 0 1 1;
+#X connect 9 0 12 0;
+#X connect 12 0 1 0;
+#X connect 12 1 2 1;
+#X restore 152 94 pd drip;
+#N canvas 360 251 450 300 hextonum 0;
+#X obj 90 96 select a b c d e f;
+#X obj 90 128 10;
+#X obj 146 131 12;
+#X obj 118 130 11;
+#X obj 178 130 13;
+#X obj 205 131 14;
+#X obj 236 130 15;
+#X obj 268 131 moses 10;
+#X obj 152 238 outlet;
+#X obj 268 162 moses 0;
+#X obj 90 37 inlet;
+#X obj 90 60 list;
+#X connect 0 0 1 0;
+#X connect 0 1 3 0;
+#X connect 0 2 2 0;
+#X connect 0 3 4 0;
+#X connect 0 4 5 0;
+#X connect 0 5 6 0;
+#X connect 0 6 7 0;
+#X connect 1 0 8 0;
+#X connect 2 0 8 0;
+#X connect 3 0 8 0;
+#X connect 4 0 8 0;
+#X connect 5 0 8 0;
+#X connect 6 0 8 0;
+#X connect 7 0 9 0;
+#X connect 9 1 8 0;
+#X connect 10 0 11 0;
+#X connect 11 0 0 0;
+#X restore 152 117 pd hextonum;
+#X connect 0 0 2 0;
+#X connect 1 0 0 0;
+#X connect 1 1 2 1;
+#X connect 2 0 5 0;
+#X connect 3 0 4 0;
+#X connect 4 0 7 0;
+#X connect 4 1 9 0;
+#X connect 4 2 5 1;
+#X connect 5 0 6 0;
+#X connect 5 0 7 1;
+#X connect 6 0 5 1;
+#X connect 7 0 8 0;
+#X connect 9 0 10 0;
+#X connect 10 0 1 0;
+#X restore 69 59 pd hexcolor;
+#X obj 69 86 list split 3;
+#X obj 144 109 list split 3;
+#N canvas 0 0 655 388 rotate2 0;
+#X obj 173 193 list prepend;
+#X obj 151 44 inlet;
+#X obj 259 115 inlet;
+#X text 311 115 how often to rotate;
+#X obj 151 220 list;
+#X text 198 43 list to rotate;
+#X obj 151 250 outlet;
+#X text 267 194 move right part of list to left.;
+#X obj 151 70 t b a b;
+#X obj 173 152 list split 2;
+#X connect 0 0 4 1;
+#X connect 1 0 8 0;
+#X connect 2 0 9 1;
+#X connect 4 0 6 0;
+#X connect 8 0 4 0;
+#X connect 8 1 9 0;
+#X connect 8 2 0 1;
+#X connect 9 0 0 0;
+#X connect 9 1 0 1;
+#X restore 356 318 pd rotate2;
+#N canvas 0 0 655 388 rotate1 0;
+#X obj 173 193 list prepend;
+#X obj 151 44 inlet;
+#X obj 259 115 inlet;
+#X text 311 115 how often to rotate;
+#X obj 151 220 list;
+#X text 198 43 list to rotate;
+#X obj 151 250 outlet;
+#X text 267 194 move right part of list to left.;
+#X obj 151 70 t b a b;
+#X obj 173 152 list split 1;
+#X connect 0 0 4 1;
+#X connect 1 0 8 0;
+#X connect 2 0 9 1;
+#X connect 4 0 6 0;
+#X connect 8 0 4 0;
+#X connect 8 1 9 0;
+#X connect 8 2 0 1;
+#X connect 9 0 0 0;
+#X connect 9 1 0 1;
+#X restore 211 320 pd rotate1;
+#X obj 69 386 outlet;
+#X obj 211 341 list prepend color;
+#X obj 211 364 list trim;
+#X obj 211 388 outlet;
+#X obj 356 343 list prepend color;
+#X obj 356 366 list trim;
+#X obj 356 390 outlet;
+#X obj 69 33 inlet;
+#X obj 69 178 pack 0 0 0;
+#X connect 0 0 1 0;
+#X connect 1 0 10 0;
+#X connect 2 0 18 2;
+#X connect 3 0 18 1;
+#X connect 4 0 18 0;
+#X connect 5 0 6 0;
+#X connect 6 0 4 0;
+#X connect 6 1 7 0;
+#X connect 7 0 3 0;
+#X connect 7 1 2 0;
+#X connect 8 0 14 0;
+#X connect 9 0 11 0;
+#X connect 11 0 12 0;
+#X connect 12 0 13 0;
+#X connect 14 0 15 0;
+#X connect 15 0 16 0;
+#X connect 17 0 5 0;
+#X connect 18 0 0 0;
+#X connect 18 0 9 0;
+#X connect 18 0 8 0;
+#X restore 213 166 pd colorize;
+#X msg 359 137 9 9 6 9 0 0 d b 0;
+#X msg 396 117 0 7 b 2 8 b b b b;
+#X msg 440 98 e 6 2 e 3 2 e c 2;
+#X msg 324 161 0 c c c f f 0 9 9;
+#X msg 455 74 c c c 9 9 9 3 3 3;
+#X msg 476 170 d d a 3 9 0 3 3 6;
+#X obj 50 255 unpack 0 0 0 0 0;
+#X obj 13 34 bng 14 250 50 0 empty empty empty 0 -6 0 8 -158106 -155649
+-228225;
+#X msg 63 203 10 40 50 500 100;
+#X connect 0 0 1 1;
+#X connect 1 0 5 0;
+#X connect 6 0 8 0;
+#X connect 8 0 7 0;
+#X connect 16 0 11 0;
+#X connect 16 0 12 0;
+#X connect 16 0 13 0;
+#X connect 16 0 14 0;
+#X connect 16 0 24 0;
+#X connect 16 1 15 0;
+#X connect 17 0 16 0;
+#X connect 18 0 16 0;
+#X connect 19 0 16 0;
+#X connect 20 0 16 0;
+#X connect 21 0 16 0;
+#X connect 22 0 16 0;
+#X connect 23 0 11 0;
+#X connect 23 1 13 0;
+#X connect 23 2 12 0;
+#X connect 23 3 14 0;
+#X connect 23 4 15 0;
+#X connect 24 0 25 0;
+#X connect 25 0 23 0;
+#X coords 0 0 1 1 273 40 1 10 10;
8 pdx7.save.pd
@@ -0,0 +1,8 @@
+#N canvas 0 0 450 300 10;
+#X obj 152 107 inlet;
+#X obj 152 158 outlet;
+#X obj 231 159 outlet;
+#X obj 152 133 commun \$2 \$3;
+#X connect 0 0 3 0;
+#X connect 3 0 1 0;
+#X connect 3 1 2 0;
41 phatbass.dat
@@ -0,0 +1,41 @@
+ , ,
+"/pdx7_a6" , ,
+"/pdx7_a6" 0 , "/r" , 1200
+"/pdx7_a6" 0 , "/d" , 149
+"/pdx7_a6" 0 , "/s" , 71
+"/pdx7_a6" 0 , "/a" , 46
+"/pdx7_a5" , ,
+"/pdx7_a5" 0 , "/r" , 357
+"/pdx7_a5" 0 , "/d" , 40
+"/pdx7_a5" 0 , "/s" , 50
+"/pdx7_a5" 0 , "/a" , 10
+"/pdx7_a1" , ,
+"/pdx7_a1" 0 , "/r" , 1000
+"/pdx7_a1" 0 , "/d" , 117
+"/pdx7_a1" 0 , "/s" , 63
+"/pdx7_a1" 0 , "/a" , 21
+"/pdx7" , ,
+"/pdx7" 0 , "/fr1" , 2
+"/pdx7" 0 , "/fr5" , 4
+"/pdx7" 0 , "/fr3" , 0.5
+"/pdx7" 0 , "/fr2" , 1
+"/pdx7" 0 , "/fr6" , 5
+"/pdx7" 0 , "/fr4" , 3
+"/pdx7" 0 , "/mod" , "matrix" 6 6 0 0.39 0.82 0.07 0 0 0 0 0 0.18 0 0.43 0 0 0 0 0.41 0 0 0 0 0 0 0 0 0 0 0 0 0.15 0 0 0 0 0.15 0
+"/pdx7" 0 , "/matrix" , "matrix" 6 6 0 0.5 0 0.07 0 0 0 0 0 0.17 0.08 0.27 0 0 0 0 0 0 0 0 0 0 0 0 0 0.35 0 0 0 0 0 0 0 0 0 0
+"/pdx7" 0 , "/car" , "matrix" 2 6 0.74 0 0.11 0 0 0 0.74 0 0.28 0 0 0
+"/pdx7_a2" , ,
+"/pdx7_a2" 0 , "/r" , 656
+"/pdx7_a2" 0 , "/d" , 125
+"/pdx7_a2" 0 , "/s" , 28
+"/pdx7_a2" 0 , "/a" , 10
+"/pdx7_a3" , ,
+"/pdx7_a3" 0 , "/r" , 722
+"/pdx7_a3" 0 , "/d" , 40
+"/pdx7_a3" 0 , "/s" , 75
+"/pdx7_a3" 0 , "/a" , 6
+"/pdx7_a4" , ,
+"/pdx7_a4" 0 , "/r" , 741
+"/pdx7_a4" 0 , "/d" , 40
+"/pdx7_a4" 0 , "/s" , 64
+"/pdx7_a4" 0 , "/a" , 40
18 pmosc~.pd
@@ -0,0 +1,18 @@
+#N canvas 546 230 410 360 10;
+#X obj 119 199 cos~;
+#X obj 119 167 +~;
+#X obj 120 273 outlet~;
+#X obj 119 115 phasor~;
+#X obj 119 86 inlet~;
+#X obj 135 146 inlet~;
+#X obj 160 199 inlet~;
+#X obj 120 236 *~;
+#X text 38 21 phase-modulation oscillator;
+#X text 38 57 signal inlets: 1: freq \, 2: phase \, 3: amp;
+#X connect 0 0 7 0;
+#X connect 1 0 0 0;
+#X connect 3 0 1 0;
+#X connect 4 0 3 0;
+#X connect 5 0 1 1;
+#X connect 6 0 7 1;
+#X connect 7 0 2 0;
427 rrad.nadsr4~.pd
@@ -0,0 +1,427 @@
+#N canvas 500 433 762 294 10;
+#X obj 442 6 inlet OSC;
+#N canvas 127 377 981 424 saves 0;
+#X obj 45 160 originator \$1 \$0;
+#X obj 152 132 inlet OSC;
+#X obj 47 55 r \$0-substate;
+#X obj 15 13 inlet substate;
+#X obj 15 35 route substate;
+#X obj 159 55 r \$0-copy;
+#X msg 159 76 copy;
+#X obj 243 50 r \$0-paste;
+#X msg 241 71 paste;
+#X text 154 15 This is the originator \, including some ready to use
+standard functionality.;
+#X text 507 56 Put your commun sends here \, if you like.;
+#X msg 15 91 setsub \$1;
+#X msg 249 184 svdir \$1;
+#X obj 250 139 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 250 163 savepanel;
+#X obj 152 189 outlet OSC;
+#X msg 108 214 svxdir /tmp/svdir.xml;
+#X msg 78 241 ldxdir /tmp/svdir.xml;
+#X obj 538 176 s \$0-ain;
+#X obj 610 176 s \$0-din;
+#X obj 682 176 s \$0-sin;
+#X obj 776 179 s \$0-rin;
+#X obj 536 107 r \$0-a;
+#X obj 630 105 r \$0-d;
+#X obj 698 106 r \$0-s;
+#X obj 769 106 r \$0-r;
+#X obj 772 142 commun /r \$0;
+#X obj 682 142 commun /s \$0;
+#X obj 582 141 commun /d \$0;
+#X obj 496 137 commun /a \$0;
+#X connect 0 2 15 0;
+#X connect 1 0 0 1;
+#X connect 2 0 11 0;
+#X connect 3 0 4 0;
+#X connect 4 0 11 0;
+#X connect 4 1 0 0;
+#X connect 5 0 6 0;
+#X connect 6 0 0 0;
+#X connect 7 0 8 0;
+#X connect 8 0 0 0;
+#X connect 11 0 0 0;
+#X connect 12 0 0 0;
+#X connect 13 0 14 0;
+#X connect 14 0 12 0;
+#X connect 16 0 0 0;
+#X connect 17 0 0 0;
+#X connect 22 0 29 0;
+#X connect 23 0 28 0;
+#X connect 24 0 27 0;
+#X connect 25 0 26 0;
+#X connect 26 0 21 0;
+#X connect 27 0 20 0;
+#X connect 28 0 19 0;
+#X connect 29 0 18 0;
+#X restore 380 5 pd saves;
+#N canvas 569 61 450 300 cnv.ctl 0;
+#X obj 90 188 s \$0-background-cnv;
+#X floatatom 108 59 5 100 1000 0 width - -;
+#X floatatom 112 83 4 50 500 0 height - -;
+#X obj 92 132 pack 0 0;
+#X msg 92 159 vis_size \$1 \$2;
+#X obj 110 106 t b f;
+#X connect 1 0 3 0;
+#X connect 2 0 5 0;
+#X connect 3 0 4 0;
+#X connect 4 0 0 0;
+#X connect 5 0 3 0;
+#X connect 5 1 3 1;
+#X restore 305 5 pd cnv.ctl;
+#X obj 670 90 bng 15 250 50 0 \$0-copy empty copy 0 -6 0 8 -225271
+-1 -1;
+#X obj 670 118 bng 15 250 50 0 \$0-paste empty paste 0 -6 0 8 -257472
+-1 -1;
+#X text 193 5 look! ==>;
+#X obj 380 26 outlet OSC;
+#X obj 198 30 inlet;
+#X obj 198 81 outlet~;
+#N canvas 0 0 600 400 envelope 0;
+#X obj 220 203 r \$0-a;
+#X obj 252 223 r \$0-d;
+#X obj 277 247 r \$0-s;
+#X obj 333 265 r \$0-r;
+#X obj 25 119 inlet;
+#X obj 174 346 outlet~;
+#N canvas 322 82 891 795 adsr 0;
+#X text 52 50 This patch is used as an abstraction in 25.envelope.pd
+;
+#X obj 95 108 inlet;
+#X obj 298 111 inlet;
+#X text 91 79 trigger;
+#X obj 95 138 sel 0;
+#X obj 144 138 t b;
+#X obj 104 399 pack 0 \$2;
+#X obj 362 112 inlet;
+#X obj 309 301 del \$2;
+#X obj 338 324 f \$4;
+#X obj 363 411 pack 0 \$3;
+#X obj 410 112 inlet;
+#X obj 459 111 inlet;
+#X obj 504 111 inlet;
+#X msg 95 191 stop;
+#X obj 517 360 pack 0 \$5;
+#X text 378 86 Traditional A \, D \, S \, R;
+#X text 296 88 level;
+#X text 32 302 ATTACK;
+#X obj 447 533 outlet~;
+#X text 7 325 recall level;
+#X text 7 345 and pack with;
+#X text 8 365 attack time;
+#X text 28 124 if zero;
+#X text 29 141 release;
+#X text 17 183 and cancel;
+#X text 17 199 decay;
+#X text 148 120 bang if attack;
+#X text 183 294 on attack \, set a;
+#X text 147 307 delay to go to sustain;
+#X text 189 324 recall sustain value;
+#X text 185 347 multiply by overall level;
+#X text 220 370 pack with decay time;
+#X text 510 386 on release ramp;
+#X text 511 403 back to zero;
+#X text 63 12 adsr - arguments: level \, attack time \, decay time
+\, sustain level \, release time;
+#X text 9 479 When you send this patch a nonzero trigger it schedules
+a line~ to do an attack and decay \, and if zero \, it starts the release
+ramp.;
+#X text 10 525 Objects such as f and pack can be given dollar sign
+arguments to initialize their contents from adsr's creation arguments.
+Inlets are supplied to update them on the fly.;
+#X obj 104 334 f;
+#X obj 364 346 * 1;
+#X obj 363 386 sqrt;
+#X obj 363 365 sqrt;
+#X obj 447 461 vline~;
+#X obj 446 491 *~;
+#X obj 446 511 *~;
+#X obj 104 376 sqrt;
+#X obj 104 355 sqrt;
+#X connect 1 0 4 0;
+#X connect 2 0 38 0;
+#X connect 2 0 39 1;
+#X connect 4 0 14 0;
+#X connect 4 0 15 0;
+#X connect 4 1 5 0;
+#X connect 5 0 8 0;
+#X connect 6 0 42 0;
+#X connect 7 0 6 1;
+#X connect 7 0 8 1;
+#X connect 8 0 9 0;
+#X connect 9 0 39 0;
+#X connect 10 0 42 0;
+#X connect 11 0 10 1;
+#X connect 12 0 9 1;
+#X connect 13 0 15 1;
+#X connect 14 0 8 0;
+#X connect 15 0 42 0;
+#X connect 38 0 46 0;
+#X connect 39 0 41 0;
+#X connect 40 0 10 0;
+#X connect 41 0 40 0;
+#X connect 42 0 43 0;
+#X connect 42 0 43 1;
+#X connect 43 0 44 0;
+#X connect 43 0 44 1;
+#X connect 44 0 19 0;
+#X connect 45 0 6 0;
+#X connect 46 0 45 0;
+#X restore 174 292 pd adsr -----------;
+#X obj 74 149 select 0;
+#X obj 119 175 * 1;
+#X obj 109 203 s \$0-level-in;
+#X obj 158 92 r \$0-level;
+#X obj 192 175 r \$0-level-in;
+#X obj 277 266 * 0.01;
+#X obj 156 124 * 0.01;
+#X connect 0 0 6 2;
+#X connect 1 0 6 3;
+#X connect 2 0 12 0;
+#X connect 3 0 6 5;
+#X connect 4 0 7 0;
+#X connect 4 0 6 0;
+#X connect 6 0 5 0;
+#X connect 7 1 8 0;
+#X connect 8 0 9 0;
+#X connect 10 0 13 0;
+#X connect 11 0 6 1;
+#X connect 12 0 6 4;
+#X connect 13 0 8 1;
+#X restore 198 56 pd envelope;
+#X text 626 32 Graphical ADSR;
+#X obj 669 146 nbx 2 14 -1e+37 1e+37 0 0 \$0-substate \$0-parentstate
+preset 0 -6 0 8 -195568 -1 -1 0 256;
+#X obj 44 29 nbx 5 14 0 1e+37 0 0 \$0-a \$0-ain a -10 6 1 10 -212212
+-158119 -49933 10 256;
+#X obj 44 67 nbx 5 14 0 100 0 0 \$0-s \$0-sin s% -20 6 1 10 -212212
+-158119 -49933 50 256;
+#X obj 44 48 nbx 5 14 0 1e+37 0 0 \$0-d \$0-din d -10 6 1 10 -212212
+-158119 -49933 40 256;
+#X obj 44 86 nbx 5 14 0 1e+37 0 0 \$0-r \$0-rin r -10 6 1 10 -212212
+-158119 -49933 500 256;
+#X obj 44 105 nbx 5 14 0 1e+37 0 0 \$0-level empty lvl% -30 6 1 10
+-158119 -49933 -212212 100 256;
+#N canvas 0 0 590 606 colorize 0;
+#X obj 69 339 list prepend color;
+#X obj 69 362 list trim;
+#N canvas 281 345 447 195 rgbtopd 0;
+#X obj 35 59 expr -65536 * $i1 - 256 * $i2 - $i3 - 1 \;;
+#X obj 35 25 inlet;
+#X obj 35 89 outlet;
+#X text 26 121 -pow(2 \, 16) * R - pow(2 \, 8) * G - pow(2 \, 0) *
+B - 1;
+#X connect 0 0 2 0;
+#X connect 1 0 0 0;
+#X restore 224 152 pd rgbtopd;
+#N canvas 281 345 447 195 rgbtopd 0;
+#X obj 35 59 expr -65536 * $i1 - 256 * $i2 - $i3 - 1 \;;
+#X obj 35 25 inlet;
+#X obj 35 89 outlet;
+#X text 26 121 -pow(2 \, 16) * R - pow(2 \, 8) * G - pow(2 \, 0) *
+B - 1;
+#X connect 0 0 2 0;
+#X connect 1 0 0 0;
+#X restore 144 152 pd rgbtopd;
+#N canvas 281 345 447 195 rgbtopd 0;
+#X obj 35 59 expr -65536 * $i1 - 256 * $i2 - $i3 - 1 \;;
+#X obj 35 25 inlet;
+#X obj 35 89 outlet;
+#X text 26 121 -pow(2 \, 16) * R - pow(2 \, 8) * G - pow(2 \, 0) *
+B - 1;
+#X connect 0 0 2 0;
+#X connect 1 0 0 0;
+#X restore 69 151 pd rgbtopd;
+#N canvas 362 262 450 300 hexcolor 0;
+#X obj 152 168 * 16;
+#X obj 152 143 t f f;
+#X obj 152 201 +;
+#X obj 127 38 inlet;
+#X obj 125 61 t b a b;
+#X obj 133 252 list prepend;
+#X obj 221 255 t a;
+#X obj 99 290 list;
+#X obj 101 314 outlet;
+#N canvas 0 0 533 407 drip 0;
+#X obj 64 206 list split 1;
+#X obj 64 123 until;
+#X obj 64 181 list append;
+#X obj 194 206 bang;
+#X text 146 90 First store list \, then start the loop;
+#X text 163 118 "until" bangs its output until told to stop by a "bang"
+to its right inlet.;
+#X text 182 160 Store the remaining list.;
+#X text 239 205 third outlet of "split" tells us to stop.;
+#X obj 64 243 outlet;
+#X obj 64 57 inlet;
+#X text 237 44 From list-help.pd;
+#X obj 143 243 outlet;
+#X obj 64 86 t b a;
+#X connect 0 0 8 0;
+#X connect 0 1 2 1;
+#X connect 0 2 3 0;
+#X connect 0 2 11 0;
+#X connect 1 0 2 0;
+#X connect 2 0 0 0;
+#X connect 3 0 1 1;
+#X connect 9 0 12 0;
+#X connect 12 0 1 0;
+#X connect 12 1 2 1;
+#X restore 152 94 pd drip;
+#N canvas 360 251 450 300 hextonum 0;
+#X obj 90 96 select a b c d e f;
+#X obj 90 128 10;
+#X obj 146 131 12;
+#X obj 118 130 11;
+#X obj 178 130 13;
+#X obj 205 131 14;
+#X obj 236 130 15;
+#X obj 268 131 moses 10;
+#X obj 152 238 outlet;
+#X obj 268 162 moses 0;
+#X obj 90 37 inlet;
+#X obj 90 60 list;
+#X connect 0 0 1 0;
+#X connect 0 1 3 0;
+#X connect 0 2 2 0;
+#X connect 0 3 4 0;
+#X connect 0 4 5 0;
+#X connect 0 5 6 0;
+#X connect 0 6 7 0;
+#X connect 1 0 8 0;
+#X connect 2 0 8 0;
+#X connect 3 0 8 0;
+#X connect 4 0 8 0;
+#X connect 5 0 8 0;
+#X connect 6 0 8 0;
+#X connect 7 0 9 0;
+#X connect 9 1 8 0;
+#X connect 10 0 11 0;
+#X connect 11 0 0 0;
+#X restore 152 117 pd hextonum;
+#X connect 0 0 2 0;
+#X connect 1 0 0 0;
+#X connect 1 1 2 1;
+#X connect 2 0 5 0;
+#X connect 3 0 4 0;
+#X connect 4 0 7 0;
+#X connect 4 1 9 0;
+#X connect 4 2 5 1;
+#X connect 5 0 6 0;
+#X connect 5 0 7 1;
+#X connect 6 0 5 1;
+#X connect 7 0 8 0;
+#X connect 9 0 10 0;
+#X connect 10 0 1 0;
+#X restore 69 59 pd hexcolor;
+#X obj 69 86 list split 3;
+#X obj 144 109 list split 3;
+#N canvas 0 0 655 388 rotate2 0;
+#X obj 173 193 list prepend;
+#X obj 151 44 inlet;
+#X obj 259 115 inlet;
+#X text 311 115 how often to rotate;
+#X obj 151 220 list;
+#X text 198 43 list to rotate;
+#X obj 151 250 outlet;
+#X text 267 194 move right part of list to left.;
+#X obj 151 70 t b a b;
+#X obj 173 152 list split 2;
+#X connect 0 0 4 1;
+#X connect 1 0 8 0;
+#X connect 2 0 9 1;
+#X connect 4 0 6 0;
+#X connect 8 0 4 0;
+#X connect 8 1 9 0;
+#X connect 8 2 0 1;
+#X connect 9 0 0 0;
+#X connect 9 1 0 1;
+#X restore 356 318 pd rotate2;
+#N canvas 0 0 655 388 rotate1 0;
+#X obj 173 193 list prepend;
+#X obj 151 44 inlet;
+#X obj 259 115 inlet;
+#X text 311 115 how often to rotate;
+#X obj 151 220 list;
+#X text 198 43 list to rotate;
+#X obj 151 250 outlet;
+#X text 267 194 move right part of list to left.;
+#X obj 151 70 t b a b;
+#X obj 173 152 list split 1;
+#X connect 0 0 4 1;
+#X connect 1 0 8 0;
+#X connect 2 0 9 1;
+#X connect 4 0 6 0;
+#X connect 8 0 4 0;
+#X connect 8 1 9 0;
+#X connect 8 2 0 1;
+#X connect 9 0 0 0;
+#X connect 9 1 0 1;
+#X restore 211 320 pd rotate1;
+#X obj 69 386 outlet;
+#X obj 211 341 list prepend color;
+#X obj 211 364 list trim;
+#X obj 211 388 outlet;
+#X obj 356 343 list prepend color;
+#X obj 356 366 list trim;
+#X obj 356 390 outlet;
+#X obj 69 33 inlet;
+#X obj 69 178 pack 0 0 0;
+#X connect 0 0 1 0;
+#X connect 1 0 10 0;
+#X connect 2 0 18 2;
+#X connect 3 0 18 1;
+#X connect 4 0 18 0;
+#X connect 5 0 6 0;
+#X connect 6 0 4 0;
+#X connect 6 1 7 0;
+#X connect 7 0 3 0;
+#X connect 7 1 2 0;
+#X connect 8 0 14 0;
+#X connect 9 0 11 0;
+#X connect 11 0 12 0;
+#X connect 12 0 13 0;
+#X connect 14 0 15 0;
+#X connect 15 0 16 0;
+#X connect 17 0 5 0;
+#X connect 18 0 0 0;
+#X connect 18 0 9 0;
+#X connect 18 0 8 0;
+#X restore 214 166 pd colorize;
+#X msg 360 137 9 9 6 9 0 0 d b 0;
+#X msg 397 117 0 7 b 2 8 b b b b;
+#X msg 441 98 e 6 2 e 3 2 e c 2;
+#X msg 325 161 0 c c c f f 0 9 9;
+#X msg 456 74 c c c 9 9 9 3 3 3;
+#X msg 477 170 d d a 3 9 0 3 3 6;
+#X obj 51 255 unpack 0 0 0 0 0;
+#X obj 99 47 bng 15 250 50 0 empty empty def 0 -6 0 8 -212212 -158119
+-49933;
+#X msg 64 203 10 40 50 500 100;
+#X connect 0 0 1 1;
+#X connect 1 0 6 0;
+#X connect 7 0 9 0;
+#X connect 9 0 8 0;
+#X connect 17 0 12 0;
+#X connect 17 0 13 0;
+#X connect 17 0 14 0;
+#X connect 17 0 15 0;
+#X connect 17 0 25 0;
+#X connect 17 1 16 0;
+#X connect 18 0 17 0;
+#X connect 19 0 17 0;
+#X connect 20 0 17 0;
+#X connect 21 0 17 0;
+#X connect 22 0 17 0;
+#X connect 23 0 17 0;
+#X connect 24 0 12 0;
+#X connect 24 1 14 0;
+#X connect 24 2 13 0;
+#X connect 24 3 15 0;
+#X connect 24 4 16 0;
+#X connect 25 0 26 0;
+#X connect 26 0 24 0;
+#X coords 0 0 1 1 127 115 1 10 10;
12 rrad.pdx7-ng~.pd
@@ -0,0 +1,12 @@
+#N canvas 34 359 968 471 10;
+#X obj 49 61 rrad.pdx7~ \$1;
+#X obj 49 35 inlet;
+#X obj 49 375 outlet~;
+#X obj 852 37 inlet;
+#X obj 852 377 outlet;
+#X obj 450 375 outlet~;
+#X connect 0 0 2 0;
+#X connect 0 1 5 0;
+#X connect 0 2 4 0;
+#X connect 1 0 0 0;
+#X connect 3 0 0 1;
37 rrad.pdx7~-help.pd
@@ -0,0 +1,37 @@
+#N canvas 215 122 988 664 10;
+#X obj 91 457 ezdac~;
+#X obj 182 457 Scope~ 176 75 14 3 128 -1 1 0 0 0 0 102 255 51 135 135
+135 0;
+#X obj 90 71 pack 0 100 1000;
+#X floatatom 90 54 5 0 0 0 - - -;
+#X obj 544 459 careGUI;
+#X floatatom 190 53 5 0 0 0 - - -;
+#X obj 90 93 makenote;
+#X obj 90 122 pack 0 0;
+#X obj 547 106 cnv 5 345 40 empty \$0-background-cnv PDX7_V2 70 18
+1 30 -128992 -195568 0;
+#X obj 542 106 cnv 5 10 40 empty \$0-background-cnv empty 70 18 1 30
+-66577 -195568 0;
+#X floatatom 140 52 5 0 0 0 - - -;
+#X obj 45 74 ftom;
+#X floatatom 45 56 5 0 0 0 - - -;
+#X msg 45 33 100;
+#X msg 90 33 48;
+#X obj 364 457 Scope~ 176 75 14 3 128 -1 1 0 0 0 0 102 255 51 135 135
+135 0;
+#X obj 90 148 rrad.pdx7~ /pdx7;
+#X connect 2 0 6 0;
+#X connect 3 0 2 0;
+#X connect 5 0 2 2;
+#X connect 6 0 7 0;
+#X connect 6 1 7 1;
+#X connect 7 0 16 0;
+#X connect 10 0 2 1;
+#X connect 11 0 3 0;
+#X connect 12 0 11 0;
+#X connect 13 0 12 0;
+#X connect 14 0 3 0;
+#X connect 16 0 0 0;
+#X connect 16 0 1 0;
+#X connect 16 1 15 0;
+#X connect 16 1 0 1;
93 rrad.pdx7~-poly.pd
@@ -0,0 +1,93 @@
+#N canvas 161 26 1061 666 10;
+#X obj 284 458 ezdac~;
+#X obj 284 514 Scope~ 176 75 14 3 128 -1 1 0 0 0 0 102 255 51 135 135
+135 0;
+#X obj 643 514 careGUI;
+#X obj 135 150 rrad.pdx7~ /pdx7;
+#X obj 464 514 Scope~ 176 75 14 3 128 -1 1 0 0 0 0 102 255 51 135 135
+135 0;
+#X obj 135 55 pack 0 100 1000;
+#X floatatom 135 38 5 0 0 0 - - -;
+#X floatatom 235 37 5 0 0 0 - - -;
+#N canvas 0 0 582 585 poly 0;
+#X obj 111 28 inlet;
+#X obj 105 80 pack 0 0 0;
+#X obj 56 291 outlet;
+#X obj 328 97 inlet;
+#X obj 110 58 poly 8;
+#X obj 105 106 route 1 2 3 4 5 6 7 8;
+#X obj 148 295 rrad.pdx7-ng~ /pdx7;
+#X obj 149 447 throw~ out-l;
+#X obj 213 427 throw~ out-r;
+#X obj 150 132 rrad.pdx7-ng~ /pdx7;
+#X obj 150 158 rrad.pdx7-ng~ /pdx7;
+#X obj 150 187 rrad.pdx7-ng~ /pdx7;
+#X obj 150 214 rrad.pdx7-ng~ /pdx7;
+#X obj 148 239 rrad.pdx7-ng~ /pdx7;
+#X obj 148 268 rrad.pdx7-ng~ /pdx7;
+#X connect 0 0 4 0;
+#X connect 1 0 5 0;
+#X connect 3 0 6 1;
+#X connect 3 0 9 1;
+#X connect 3 0 10 1;
+#X connect 3 0 11 1;
+#X connect 3 0 12 1;
+#X connect 3 0 13 1;
+#X connect 3 0 14 1;
+#X connect 4 0 1 0;
+#X connect 4 1 1 1;
+#X connect 4 2 1 2;
+#X connect 5 0 2 0;
+#X connect 5 1 9 0;
+#X connect 5 2 10 0;
+#X connect 5 3 11 0;
+#X connect 5 4 12 0;
+#X connect 5 5 13 0;
+#X connect 5 6 14 0;
+#X connect 5 7 6 0;
+#X connect 6 0 7 0;
+#X connect 6 1 8 0;
+#X connect 9 0 7 0;
+#X connect 9 1 8 0;
+#X connect 10 0 7 0;
+#X connect 10 1 8 0;
+#X connect 11 0 7 0;
+#X connect 11 1 8 0;
+#X connect 12 0 7 0;
+#X connect 12 1 8 0;
+#X connect 13 0 7 0;
+#X connect 13 1 8 0;
+#X connect 14 0 7 0;
+#X connect 14 1 8 0;
+#X restore 135 129 pd poly;
+#X obj 135 77 makenote;
+#X obj 135 106 pack 0 0;
+#X obj 210 112 r \$0-OSC;
+#X floatatom 185 36 5 0 0 0 - - -;
+#X obj 898 458 s \$0-OSC;
+#X obj 46 442 catch~ out-l;
+#X obj 947 440 catch~ out-r;
+#X obj 593 105 cnv 5 348 40 empty \$0-background-cnv PDX7_V2 70 18
+1 30 -128992 -195568 0;
+#X obj 586 105 cnv 5 10 40 empty \$0-background-cnv empty 70 18 1 30
+-66577 -195568 0;
+#X msg 282 38 50 \, 54 \, 57 \, 61 \, 64;
+#X obj 55 43 r NOTE;
+#X connect 0 0 1 0;
+#X connect 0 1 4 0;
+#X connect 3 0 0 0;
+#X connect 3 1 0 1;
+#X connect 3 2 13 0;
+#X connect 5 0 9 0;
+#X connect 6 0 5 0;
+#X connect 7 0 5 2;
+#X connect 8 0 3 0;
+#X connect 9 0 10 0;
+#X connect 9 1 10 1;
+#X connect 10 0 8 0;
+#X connect 11 0 8 1;
+#X connect 12 0 5 1;
+#X connect 14 0 0 0;
+#X connect 15 0 0 1;
+#X connect 18 0 5 0;
+#X connect 19 0 5 0;
413 rrad.pdx7~.pd
@@ -0,0 +1,413 @@
+#N canvas 167 149 938 624 10;
+#X obj 492 342 s~ \$0-a1;
+#X obj 492 363 s~ \$0-a2;
+#X obj 492 384 s~ \$0-a3;
+#X obj 492 31 r \$0-vel;
+#X obj 42 296 cnv 15 450 40 empty \$0-background-cnv empty 20 12 1
+14 -128992 -158106 0;
+#X obj 46 313 nbx 5 14 0 20 0 0 \$0-freq_ratio1 \$0-freq_ratio1 Frq_Rat1
+0 -6 1 10 -158106 -155649 -228225 0 256;
+#X obj 121 314 nbx 5 14 0 20 0 0 \$0-freq_ratio2 \$0-freq_ratio2 Frq_Rat2