changeset 536:b97fe1dc4278 prerelease

merge
author Liam Donovan <l.b.donovan@qmul.ac.uk>
date Thu, 23 Jun 2016 21:24:45 +0100
parents d0414ec15f63 (current diff) e2364e1711c2 (diff)
children 58652b93ef7e
files examples/08-PureData/circularBuffer/_main.pd examples/08-PureData/digital/bela_digital-help.pd examples/08-PureData/midi-poly-synth/_main.pd examples/08-PureData/midi-poly-synth/backmain.pd examples/08-PureData/midi-poly-synth/bela_ctlin.pd examples/08-PureData/midi-poly-synth/bela_notein.pd examples/08-PureData/midi-poly-synth/bela_pgmin.pd examples/08-PureData/midi-poly-synth/countTo.pd examples/08-PureData/midi-poly-synth/hv_tanh.pd examples/08-PureData/midi-poly-synth/maxArray.pd examples/08-PureData/midi-poly-synth/mono.pd examples/08-PureData/midi-poly-synth/voice.pd examples/08-PureData/samphold/_main.pd examples/08-PureData/tableScrubbing/_main.pd examples/08-PureData/tableScrubbing/rt.wav
diffstat 51 files changed, 3509 insertions(+), 1981 deletions(-) [+]
line wrap: on
line diff
--- a/examples/01-Basics/minimal/render.cpp	Thu Jun 23 21:23:27 2016 +0100
+++ b/examples/01-Basics/minimal/render.cpp	Thu Jun 23 21:24:45 2016 +0100
@@ -95,7 +95,7 @@
 ------------------
 `setup()`, `render()` and `cleanup()` each take the same arguments. These are:
 
-`0ext *context`
+`BelaContext *context`
 `void *userData`
 
 These arguments are pointers to data structures. The main one that's used is 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/04-Audio/tremolo/render.cpp	Thu Jun 23 21:24:45 2016 +0100
@@ -0,0 +1,113 @@
+/*
+ ____  _____ _        _    
+| __ )| ____| |      / \   
+|  _ \|  _| | |     / _ \  
+| |_) | |___| |___ / ___ \ 
+|____/|_____|_____/_/   \_\
+
+The platform for ultra-low latency audio and sensor processing
+
+http://bela.io
+
+A project of the Augmented Instruments Laboratory within the
+Centre for Digital Music at Queen Mary University of London.
+http://www.eecs.qmul.ac.uk/~andrewm
+
+(c) 2016 Augmented Instruments Laboratory: Andrew McPherson,
+	Astrid Bin, Liam Donovan, Christian Heinrichs, Robert Jack,
+	Giulio Moro, Laurel Pardue, Victor Zappi. All rights reserved.
+
+The Bela software is distributed under the GNU Lesser General Public License
+(LGPL 3.0), available here: https://www.gnu.org/licenses/lgpl-3.0.txt
+*/
+
+#include <Bela.h>
+#include <cmath>
+
+float gFrequency = 4.0;
+float gPhase;
+float gInverseSampleRate;
+
+bool setup(BelaContext *context, void *userData)
+{
+
+	gInverseSampleRate = 1.0 / context->audioSampleRate;
+	gPhase = 0.0;
+
+	return true;
+}
+
+void render(BelaContext *context, void *userData)
+{
+	// Nested for loops for audio channels
+	for(unsigned int n = 0; n < context->audioFrames; n++) {
+	
+		// Generate a sinewave with frequency set by gFrequency
+		// and amplitude from -0.5 to 0.5
+		float lfo = sinf(gPhase) * 0.5;
+		// Keep track and wrap the phase of the sinewave
+		gPhase += 2.0 * M_PI * gFrequency * gInverseSampleRate;
+		if(gPhase > 2.0 * M_PI)
+			gPhase -= 2.0 * M_PI;
+
+		for(unsigned int channel = 0; channel < context->audioChannels; channel++) {
+		    // Read the audio input and half the amplitude
+		    float input = audioRead(context, n, channel) * 0.5;
+			// Write to audio output the audio input multiplied by the sinewave
+			audioWrite(context, n, channel, (input*lfo));
+			
+		}
+	}
+	
+	// Nested for loops for analog channels
+	for(unsigned int n = 0; n < context->analogFrames; n++) {
+		for(unsigned int ch = 0; ch < context->analogChannels; ch++) {
+			// Read analog channel 0 and map the range from 0-1 to 0.25-20
+			// use this to set the value of gFrequency
+			gFrequency = map(analogRead(context, n, 0), 0.0, 1.0, 0.25, 20.0);
+		
+		}
+	}
+	
+}
+
+void cleanup(BelaContext *context, void *userData)
+{
+
+}
+
+
+/**
+\example tremolo/render.cpp
+
+A simple tremolo effect
+-----------------------
+
+This sketch demonstrates how to make a simple tremolo effect with one potiometer to
+control the rate of the effect. A tremolo effect is a simple type of amplitude modulation
+where the amplitude of one signal is continuous modulated by the amplitude of another.
+This is achieved by multiplying two signals together.
+
+In this example we want to create a tremolo effect like that you would find in a guitar
+effects box so our first signal will be our audio input into which we could plug a guitar
+or external sound source. This will be our 'carrier' signal.
+
+The second signal that we will use, the 'modulator', will be a low freqeuncy oscillator (LFO),
+in this case a sinetone which we will generate in the same way as the 01-Basic/sinetone example. 
+The frequency of this sinetone is determined by a global variable, `gFrequency`. Again, the 
+sinetone is produced by incrementing the phase of a sine function on every audio frame.
+
+In `render()` you'll see two nested for loop structures, one for audio and the other for the 
+analogs. You should be pretty familiar with this structure by now. In the first of these loops
+we deal with all the audio -- in the second with reading the analog input channels. We read the 
+value of analog input 0 and map it to an appropriate range for controlling the frequency
+of the sine tone.
+
+The lfo is then mulitplied together with the audio input and sent to the audio output.
+
+Hardware
+-----------------------
+- connect a 10K pot to 3.3V and GND on its 1st and 3rd pins.
+- connect the 2nd middle pin of the pot to analogIn 0.
+
+*/
--- a/examples/08-PureData/basicAnalogIn/_main.pd	Thu Jun 23 21:23:27 2016 +0100
+++ b/examples/08-PureData/basicAnalogIn/_main.pd	Thu Jun 23 21:24:45 2016 +0100
@@ -1,30 +1,46 @@
-#N canvas 203 356 637 339 10;
-#X obj 63 170 osc~ 440;
-#X obj 63 223 dac~;
-#X obj 63 191 *~;
-#X text 440 95 ADC 3: Analog In 0;
+#N canvas 854 511 593 543 10;
+#X obj 43 253 osc~ 440;
+#X obj 43 306 dac~;
+#X obj 43 274 *~;
+#X text 36 419 ADC 3: Analog In 0;
 #X text 34 41 Basic analog in (or 'theremin');
 #X text 34 51 ===============================;
-#X text 121 105 << Use first two analog in's;
-#X text 440 49 ADC routing:;
-#X text 440 57 ------------;
-#X text 440 105 ADC 4: Analog In 1;
-#X text 440 115 ADC 5: Analog In 2;
-#X text 440 125 ADC 6: Analog In 3;
-#X text 440 135 ADC 7: Analog In 4;
-#X text 440 145 ADC 8: Analog In 5;
-#X text 440 155 ADC 9: Analog In 6;
-#X text 440 165 ADC 10: Analog In 7;
-#X text 440 75 ADC 1: Audio In L;
-#X text 440 85 ADC 2: Audio In R;
-#X obj 63 149 *~ 880;
-#X obj 63 106 adc~ 3 4;
-#X text 355 277 ---------------------------------;
-#X text 355 267 @krighxz / BELA / heavy / 12/2015;
-#X text 379 286 beaglert.cc / enzienaudio.com;
+#X text 35 353 ADC routing:;
+#X text 35 361 ------------;
+#X text 36 429 ADC 4: Analog In 1;
+#X text 36 439 ADC 5: Analog In 2;
+#X text 36 449 ADC 6: Analog In 3;
+#X text 36 459 ADC 7: Analog In 4;
+#X text 36 469 ADC 8: Analog In 5;
+#X text 36 479 ADC 9: Analog In 6;
+#X text 36 489 ADC 10: Analog In 7;
+#X text 36 399 ADC 1: Audio In L;
+#X text 36 409 ADC 2: Audio In R;
+#X obj 43 232 *~ 880;
+#X obj 43 189 adc~ 3 4;
+#X text 101 231 << Analog In 0 controls frequency;
+#X text 101 274 << Analog In 1 controls amplitude;
+#X text 101 188 << Use first two analog ins;
+#X text 37 74 In this example the first two analog inputs are;
+#X text 37 87 used to control the frequency and amplitude of an;
+#X text 37 100 oscillator.;
+#X text 36 373 ADC channels 3-10 are used to address the analog inputs:
+;
+#X text 385 32 ............................;
+#X text 385 42 . ____ ._____ _ .......___ .;
+#X text 385 52 .| __ )| ____| |....../ _ |.;
+#X text 385 72 .| |_) | |___| |___ / ___ |.;
+#X text 385 82 .|____/|_____|_____/_/..._|.io;
+#X text 385 92 ............................;
+#X text 385 62 .| __ || __|.| |...../ _| |.;
+#X text 37 114 Note that analog inputs and outputs have a range between
+;
+#X text 37 128 0 and 1 \, unlike regular audio signals (which have
+a;
+#X text 37 142 range between -1 and 1).;
 #X connect 0 0 2 0;
 #X connect 2 0 1 0;
 #X connect 2 0 1 1;
-#X connect 18 0 0 0;
-#X connect 19 0 18 0;
-#X connect 19 1 2 1;
+#X connect 17 0 0 0;
+#X connect 18 0 17 0;
+#X connect 18 1 2 1;
--- a/examples/08-PureData/basicAnalogOut/_main.pd	Thu Jun 23 21:23:27 2016 +0100
+++ b/examples/08-PureData/basicAnalogOut/_main.pd	Thu Jun 23 21:24:45 2016 +0100
@@ -1,30 +1,59 @@
-#N canvas 275 504 679 362 10;
-#X text 148 124 << Use first two analog in's;
-#X text 431 57 ------------;
+#N canvas 1905 153 656 668 10;
 #X text 44 51 Basic analog out;
 #X text 44 61 ================;
-#X text 431 95 DAC 3: Analog Out 0;
-#X text 431 105 DAC 4: Analog Out 1;
-#X text 431 115 DAC 5: Analog Out 2;
-#X text 431 125 DAC 6: Analog Out 3;
-#X text 431 145 DAC 8: Analog Out 5;
-#X text 431 135 DAC 7: Analog Out 4;
-#X text 431 155 DAC 9: Analog Out 6;
-#X text 431 165 DAC 10: Analog Out 7;
-#X text 431 85 DAC 2: Audio Out R;
-#X text 431 75 DAC 1: Audio Out L;
-#X obj 92 201 *~;
-#X obj 92 159 *~ 10;
-#X obj 92 180 osc~ 1;
-#X obj 35 242 dac~ 1 2 3;
-#X text 143 241 << Output to first analog out;
-#X text 431 49 DAC routing:;
-#X text 432 289 ---------------------------------;
-#X text 432 279 @krighxz / BELA / heavy / 12/2015;
-#X text 456 298 beaglert.cc / enzienaudio.com;
-#X obj 92 125 adc~ 3 4;
-#X connect 14 0 17 2;
-#X connect 15 0 16 0;
-#X connect 16 0 14 0;
-#X connect 23 0 15 0;
-#X connect 23 1 14 1;
+#X text 45 548 DAC 3: Analog Out 0;
+#X text 45 558 DAC 4: Analog Out 1;
+#X text 45 568 DAC 5: Analog Out 2;
+#X text 45 578 DAC 6: Analog Out 3;
+#X text 45 598 DAC 8: Analog Out 5;
+#X text 45 588 DAC 7: Analog Out 4;
+#X text 45 608 DAC 9: Analog Out 6;
+#X text 45 618 DAC 10: Analog Out 7;
+#X text 45 538 DAC 2: Audio Out R;
+#X text 45 528 DAC 1: Audio Out L;
+#X obj 82 351 *~;
+#X obj 82 309 *~ 10;
+#X obj 82 330 osc~ 1;
+#X text 133 431 << Output to first analog out;
+#X obj 82 275 adc~ 3 4;
+#X text 45 84 Just like the BasicAnalogIn example \, the first two
+;
+#X text 45 98 analog inputs are used to control the frequency and;
+#X text 45 111 amplitude of an oscillator \, this time outputting;
+#X text 45 125 a lower range of frequencies (<10Hz).;
+#X text 45 139 Instead of sending this to Bela's stereo output we;
+#X text 45 153 are sending this to the first analog output.;
+#X text 138 274 << Use first two analog ins;
+#X text 138 310 << Analog In 0 controls frequency;
+#X text 138 349 << Analog In 1 controls amplitude;
+#X obj 82 380 *~ 0.5;
+#X obj 82 402 +~ 0.5;
+#X text 138 389 << Rescale output to range 0-1;
+#X text 45 167 Note that analog inputs and outputs have a range between
+;
+#X text 45 181 0 and 1 \, unlike regular audio signals (which have
+a;
+#X text 45 195 range between -1 and 1). Hence we rescale the output
+;
+#X text 45 209 of the oscillator in order to preserve the full range
+;
+#X text 45 223 of the sinusoidal signal.;
+#X obj 82 432 dac~ 3;
+#X text 44 490 ------------;
+#X text 44 482 DAC routing:;
+#X text 45 502 DAC channels 3-10 are used to address the analog inputs:
+;
+#X text 435 42 ............................;
+#X text 435 52 . ____ ._____ _ .......___ .;
+#X text 435 62 .| __ )| ____| |....../ _ |.;
+#X text 435 82 .| |_) | |___| |___ / ___ |.;
+#X text 435 92 .|____/|_____|_____/_/..._|.io;
+#X text 435 102 ............................;
+#X text 435 72 .| __ || __|.| |...../ _| |.;
+#X connect 12 0 26 0;
+#X connect 13 0 14 0;
+#X connect 14 0 12 0;
+#X connect 16 0 13 0;
+#X connect 16 1 12 1;
+#X connect 26 0 27 0;
+#X connect 27 0 34 0;
--- a/examples/08-PureData/circularBuffer/_main.pd	Thu Jun 23 21:23:27 2016 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,79 +0,0 @@
-#N canvas 436 490 738 494 10;
-#X obj 135 167 loadbang;
-#X msg 135 212 1;
-#X obj 183 234 / 44.1;
-#X obj 135 253 metro;
-#X obj 135 286 f;
-#X obj 160 286 + 64;
-#X obj 160 308 % 65536, f 8;
-#X msg 160 329 start \$1;
-#X obj 160 351 tabwrite~ circbuf;
-#X obj 363 303 - 32768;
-#X obj 363 325 + 65536;
-#X obj 363 347 % 65536;
-#X obj 342 371 +~ 0;
-#X msg 381 236 0;
-#X obj 342 258 phasor~;
-#X obj 342 392 tabread4~ circbuf;
-#X obj 341 415 dac~;
-#N canvas 422 781 312 126 buf 0;
-#N canvas 0 22 450 278 (subpatch) 0;
-#X array circbuf 65536 float 2;
-#X coords 0 1 65535 -1 256 64 1 0 0;
-#X restore 23 28 graph;
-#X restore 129 441 pd buf;
-#X obj 32 101 osc~ 440;
-#X obj 342 213 samplerate~;
-#X obj 134 189 t b b b b;
-#X text 30 82 audio input;
-#X text 219 310 write pointer;
-#X text 412 349 read pointer;
-#X obj 342 282 *~ 16;
-#X obj 342 236 / 16;
-#X obj 183 214 f 16;
-#X obj 363 189 r \$0-blocksize;
-#X obj 204 186 r \$0-blocksize;
-#X obj 394 259 r \$0-blocksize;
-#X obj 390 123 s \$0-blocksize;
-#X text 34 13 VIRTUAL CIRCULAR BUFFER;
-#X text 34 23 =======================;
-#X obj 390 55 loadbang;
-#X msg 390 77 16;
-#X text 517 454 ---------------------------------;
-#X text 517 444 @krighxz / BELA / heavy / 12/2015;
-#X text 541 463 beaglert.cc / enzienaudio.com;
-#X text 426 78 << replace with target blocksize;
-#X text 446 90 BELA default: 16;
-#X text 446 102 PD default: 64;
-#X connect 0 0 20 0;
-#X connect 1 0 3 0;
-#X connect 2 0 3 1;
-#X connect 3 0 4 0;
-#X connect 4 0 5 0;
-#X connect 5 0 6 0;
-#X connect 5 0 9 0;
-#X connect 6 0 7 0;
-#X connect 6 0 4 1;
-#X connect 7 0 8 0;
-#X connect 9 0 10 0;
-#X connect 10 0 11 0;
-#X connect 11 0 12 1;
-#X connect 12 0 15 0;
-#X connect 13 0 14 1;
-#X connect 14 0 24 0;
-#X connect 15 0 16 0;
-#X connect 15 0 16 1;
-#X connect 18 0 8 0;
-#X connect 19 0 25 0;
-#X connect 20 0 1 0;
-#X connect 20 1 26 0;
-#X connect 20 2 13 0;
-#X connect 20 3 19 0;
-#X connect 24 0 12 0;
-#X connect 25 0 14 0;
-#X connect 26 0 2 0;
-#X connect 27 0 25 1;
-#X connect 28 0 26 1;
-#X connect 29 0 24 1;
-#X connect 33 0 34 0;
-#X connect 34 0 30 0;
--- a/examples/08-PureData/digital/_main.pd	Thu Jun 23 21:23:27 2016 +0100
+++ b/examples/08-PureData/digital/_main.pd	Thu Jun 23 21:24:45 2016 +0100
@@ -1,121 +1,138 @@
-#N canvas 272 16 857 690 10;
-#X obj 18 477 osc~ 200;
-#X obj 57 522 *~;
-#X obj 112 405 line~ 1;
-#X msg 116 372 1 \, 0 200;
-#X obj 205 472 line~ 1;
-#X msg 209 439 1 \, 0 200;
-#X obj 210 405 select 1;
-#X obj 140 531 *~;
-#X obj 534 622 s bela_setDigital;
-#X obj 534 553 loadbang;
-#X msg 65 445 0;
-#X obj 116 332 r bela_digitalIn12;
-#X obj 422 217 r bela_digitalIn14;
-#X obj 422 243 s bela_digitalOut13;
-#X obj 285 218 r bela_digitalIn12;
-#X obj 285 243 s bela_digitalOut11;
-#X obj 374 339 timer;
-#X msg 404 304 bang;
-#X msg 368 304 bang;
-#X obj 556 160 metro 1000;
-#X obj 575 304 s bela_digitalOut15;
-#X obj 354 380 print sourceto12;
-#X obj 488 351 timer;
-#X msg 518 316 bang;
-#X msg 482 316 bang;
-#X obj 487 380 print sourceto14;
-#X obj 650 146 r bela_digitalIn16;
-#X msg 553 265 1;
-#X obj 577 214 delay 500;
-#X obj 480 275 select 1;
-#X obj 346 268 select 1;
-#X msg 584 281 0;
-#X obj 637 221 select 1 0;
-#X obj 80 663 dac~ 3 4;
-#X msg 458 576 disable 12;
-#X obj 158 595 *~ 0.5;
-#X obj 157 622 +~ 0.5;
-#X obj 53 584 *~ 0.5;
-#X obj 52 611 +~ 0.5;
-#X text 183 37 This is just a stub ...;
-#X obj 308 643 dac~ 1 2;
-#X obj 311 606 *~ 0.1;
-#X obj 337 550 osc~ 120;
-#X msg 585 438 0;
-#X obj 649 185 print digitalIn16;
-#X obj 672 373 print digitalIn14;
-#X text 185 103 This section requires some hardware loopback between
-15 and 14 \, 13 and 12 Have fun figuring out the pins on P8 (or P9
-???) If you do it properly \, you can measure roundtrip latency with
-multiple digital/analog feed-forward networs;
-#X obj 552 112 loadbang;
-#X obj 206 291 print digitalIn12;
-#X text 548 130 connect a switch to digitalIn16 or turn on the metro
-here;
-#X obj 287 449 adc~ 17;
-#X obj 299 506 phasor~ 300;
-#X obj 293 539 *~;
-#X obj 409 622 dac~ 26;
-#X msg 534 584 out 11 \, in 12 \, out 13 \, in 14 \, out 15 \, in 16
-\, in 17 ~ \, out 26 ~;
-#X obj 378 427 phasor~ 0.2;
-#X obj 373 455 *~ 1000;
-#X obj 620 524 dac~ 27 28 29 30;
-#X obj 621 466 osc~ 30;
-#X connect 0 0 1 0;
-#X connect 0 0 7 0;
-#X connect 1 0 37 0;
-#X connect 2 0 1 1;
-#X connect 3 0 2 0;
-#X connect 4 0 7 1;
-#X connect 5 0 4 0;
-#X connect 6 0 5 0;
-#X connect 6 0 10 0;
+#N canvas 1059 41 685 1592 10;
+#X obj 60 800 r bela_digitalIn11;
+#X obj 272 800 r bela_digitalIn12;
+#X obj 60 897 adc~ 13 14;
+#X text 56 869 Digital ins \, signal rate;
+#X obj 58 1144 s bela_digitalOut15;
+#X text 56 1040 Digital out \, message rate;
+#X obj 59 695 s bela_setDigital;
+#X obj 82 618 loadbang;
+#X msg 83 473 in 11;
+#X msg 83 530 in 13 ~;
+#X msg 83 501 in 12 message;
+#X msg 83 567 disable 17;
+#X obj 60 943 snapshot~;
+#X obj 194 944 snapshot~;
+#X obj 194 896 loadbang;
+#X obj 60 991 print digitalIn13;
+#X obj 194 991 print digitalIn14;
+#X obj 194 917 metro 200;
+#X obj 60 1245 dac~ 16;
+#X obj 58 1093 metro 500;
+#X obj 58 1118 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
+1;
+#X obj 60 1218 phasor~ 300;
+#X text 126 1246 Nice \, anti-aliased square wave;
+#X obj 58 1068 loadbang;
+#X obj 60 1379 dac~ 17;
+#X obj 60 1321 osc~ 300;
+#X obj 205 1321 phasor~ 169;
+#X obj 205 1351 -~ 0.5;
+#X text 56 1290 Sum signals together for unpredictable effects;
+#X obj 61 1537 dac~ 18;
+#X text 56 1190 Digital out \, signal rate;
+#X obj 61 1456 adc~;
+#X obj 61 1483 *~ 0.5;
+#X obj 61 1510 +~ 0.5;
+#X text 58 1426 The ultimate bit-crusher;
+#X msg 82 640 in 11 \, in 12 \, in 13 ~ \, in 14 ~ \, out 15 \, out
+16 ~ \, out 17 ~ \, out 18 ~;
+#X obj 136 1321 osc~ 1;
+#X obj 60 967 change;
+#X obj 194 968 change;
+#X obj 60 822 print digitalIn11;
+#X obj 272 823 print digitalIn12;
+#X text 42 234 Each digital channel can be configured as either an
+input or;
+#X text 42 247 an output. Send messages to bela_setDigital to configure
+the;
+#X text 42 260 digitalPins (needed before using them). Pins settings
+can be;
+#X text 42 273 modified at will during execution. Message-rate input
+pins;
+#X text 42 286 receive messages only when the input changes. Message-rate
+;
+#X text 42 299 output pins will write to the output the most recent
+value;
+#X text 42 312 you send them. Signal-rate inputs and outputs are handled
+as;
+#X text 42 325 regular audio channels. Outputs are thresholded to 0.5
+;
+#X text 42 338 before being written to the actual output. Note that
+each;
+#X text 42 351 pin that is managed adds to the CPU usage \, so only
+activate;
+#X text 42 364 the pins you actually need.;
+#X text 43 119 Digital channels are numbered 11 to 26 \, which corresponds
+to;
+#X text 43 132 Bela's 0 to 15 digital channels. They can be set to
+respond;
+#X text 43 394 First argument is the pin direction Second argument
+is the;
+#X text 43 407 pin number Third argument is the rate \, can be "~"
+or "sig";
+#X text 43 420 for signal-rate or "message" for message-rate. Defaults
+to;
+#X text 43 433 message-rate.;
+#X text 182 577 message containing the pin number;
+#X text 44 20 Digital I/O;
+#X text 44 30 ===========;
+#X text 43 62 Bela's digital inputs and outputs can be addressed from
+;
+#X text 43 88 rate or as signals. Input/output modes and rate need
+;
+#X text 43 101 to be initialised first.;
+#X text 43 75 pd. They can either be received as messages at message
+;
+#X text 182 530 set digital in 2 to input at signal rate;
+#X text 182 564 to stop using a pin (e.g.: to save CPU) \, send a disable
+;
+#X text 182 617 use loadbang to initalise multiple digital pins at
+startup;
+#X text 43 145 at message rate or at signal rate.;
+#X text 42 194 Initialising digital pins;
+#X text 42 204 -------------------------;
+#X text 42 744 Usage examples;
+#X text 42 754 --------------;
+#X text 58 780 Digital in pin 0 \, control rate;
+#X text 270 780 Digital in pin 1 \, control rate;
+#X text 182 499 set digital in 1 to input explicitly specifying message
+rate;
+#X text 182 472 set digital in 0 to input (default message rate);
+#X text 86 1117 Blink that LED!;
+#X text 463 11 ............................;
+#X text 463 21 . ____ ._____ _ .......___ .;
+#X text 463 31 .| __ )| ____| |....../ _ |.;
+#X text 463 51 .| |_) | |___| |___ / ___ |.;
+#X text 463 61 .|____/|_____|_____/_/..._|.io;
+#X text 463 71 ............................;
+#X text 463 41 .| __ || __|.| |...../ _| |.;
+#X connect 0 0 39 0;
+#X connect 1 0 40 0;
+#X connect 2 0 12 0;
+#X connect 2 1 13 0;
 #X connect 7 0 35 0;
-#X connect 9 0 54 0;
-#X connect 10 0 0 1;
-#X connect 11 0 3 0;
-#X connect 12 0 13 0;
-#X connect 12 0 29 0;
-#X connect 12 0 45 0;
-#X connect 14 0 15 0;
-#X connect 14 0 30 0;
-#X connect 14 0 48 0;
-#X connect 16 0 21 0;
-#X connect 17 0 16 1;
-#X connect 18 0 16 0;
-#X connect 19 0 27 0;
-#X connect 19 0 28 0;
-#X connect 22 0 25 0;
-#X connect 23 0 22 1;
-#X connect 24 0 22 0;
-#X connect 26 0 32 0;
-#X connect 26 0 43 0;
-#X connect 26 0 44 0;
-#X connect 27 0 20 0;
+#X connect 8 0 6 0;
+#X connect 9 0 6 0;
+#X connect 10 0 6 0;
+#X connect 11 0 6 0;
+#X connect 12 0 37 0;
+#X connect 13 0 38 0;
+#X connect 14 0 17 0;
+#X connect 17 0 13 0;
+#X connect 17 0 12 0;
+#X connect 19 0 20 0;
+#X connect 20 0 4 0;
+#X connect 21 0 18 0;
+#X connect 23 0 19 0;
+#X connect 25 0 24 0;
+#X connect 26 0 27 0;
 #X connect 27 0 24 0;
-#X connect 27 0 18 0;
-#X connect 28 0 31 0;
-#X connect 29 0 23 0;
-#X connect 30 0 17 0;
-#X connect 31 0 20 0;
-#X connect 32 0 27 0;
-#X connect 32 1 31 0;
-#X connect 34 0 8 0;
-#X connect 35 0 36 0;
-#X connect 36 0 33 1;
-#X connect 37 0 38 0;
-#X connect 38 0 33 0;
-#X connect 41 0 40 0;
-#X connect 42 0 41 0;
-#X connect 42 0 53 0;
-#X connect 42 0 57 3;
-#X connect 43 0 42 1;
-#X connect 50 0 52 0;
-#X connect 51 0 52 1;
-#X connect 52 0 40 1;
-#X connect 54 0 8 0;
-#X connect 55 0 56 0;
-#X connect 56 0 42 0;
-#X connect 58 0 57 0;
+#X connect 31 0 32 0;
+#X connect 31 1 32 0;
+#X connect 32 0 33 0;
+#X connect 33 0 29 0;
+#X connect 35 0 6 0;
+#X connect 36 0 24 0;
+#X connect 37 0 15 0;
+#X connect 38 0 16 0;
--- a/examples/08-PureData/digital/bela_digital-help.pd	Thu Jun 23 21:23:27 2016 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,97 +0,0 @@
-#N canvas 121 46 877 628 10;
-#X obj 64 94 r bela_digitalIn11;
-#X obj 219 94 r bela_digitalIn12;
-#X obj 386 107 adc~ 13 14;
-#X text 49 64 Digital in \, message rate;
-#X text 214 69 Digital in \, message rate;
-#X text 394 85 Digital ins \, signal rate;
-#X obj 32 283 s bela_digitalOut15;
-#X text 13 309 Digital out \, message rate;
-#X obj 396 593 s bela_setDigital;
-#X obj 396 533 loadbang;
-#X msg 431 401 in 11;
-#X text 524 390 First argument is the pin direction Second argument
-is the pin number Third argument is the rate \, can be "~" or "sig"
-for signal-rate or "message" for message-rate. Defaults to message-rate.
-;
-#X msg 431 458 in 13 ~;
-#X msg 432 429 in 12 message;
-#X msg 517 506 disable 17;
-#X obj 386 139 snapshot~;
-#X obj 500 134 snapshot~;
-#X obj 529 56 loadbang;
-#X obj 384 181 print digitalIn13;
-#X obj 500 183 print digitalIn14;
-#X obj 497 105 metro 200;
-#X text 525 474 To stop using a pin (e.g.: to save CPU) \, send a disable
-message containing the pin number;
-#X obj 224 280 dac~ 16;
-#X obj 22 232 metro 500;
-#X obj 32 257 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
-1;
-#X obj 224 253 phasor~ 300;
-#X text 160 234 Nice \, anti-aliased square wave;
-#X obj 22 207 loadbang;
-#X text 15 181 Blink that LED!;
-#X obj 411 306 dac~ 17;
-#X obj 405 248 osc~ 300;
-#X obj 470 248 phasor~ 169;
-#X obj 457 278 -~ 0.5;
-#X text 403 210 Sum signals together for unpredictable effects;
-#X obj 612 303 dac~ 18;
-#X text 198 305 Digital out \, signal rate;
-#X text 378 325 Digital out \, signal rate;
-#X text 588 325 Digital out \, signal rate;
-#X obj 608 222 adc~;
-#X obj 612 249 *~ 0.5;
-#X obj 612 276 +~ 0.5;
-#X text 585 203 The ultimate bit-crusher;
-#X msg 426 555 in 11 \, in 12 \, in 13 ~ \, in 14 ~ \, out 15 \, out
-16 ~ \, out 17 ~ \, out 18 ~;
-#X text 23 377 Each digital channel can be configured as either an
-input or an output. Send messages to bela_setDigital to configure the
-digitalPins (needed before using them). Pins settings can be modified
-at will during execution. Message-rate input pins receive messages
-only when the input changes. Message-rate output pins will write to
-the output the most recent value you send them. Signal-rate inputs
-and outputs are handled as regular audio channels. Outputs are thresholded
-to 0.5 before being written to the actual output. Note that each pin
-that is managed adds to the CPU usage \, so only activate the pins
-you actually need.;
-#X text 34 19 Digital channels are numbered 11 to 26 \, which corresponds
-to Bela's 0 to 15 digital channels. They can be set to respond at message
-rate or at signal rate;
-#X obj 415 271 osc~ 1;
-#X obj 385 157 change;
-#X obj 500 158 change;
-#X obj 64 116 print digitalIn11;
-#X obj 219 117 print digitalIn12;
-#X connect 0 0 48 0;
-#X connect 1 0 49 0;
-#X connect 2 0 15 0;
-#X connect 2 1 16 0;
-#X connect 9 0 42 0;
-#X connect 10 0 8 0;
-#X connect 12 0 8 0;
-#X connect 13 0 8 0;
-#X connect 14 0 8 0;
-#X connect 15 0 46 0;
-#X connect 16 0 47 0;
-#X connect 17 0 20 0;
-#X connect 20 0 16 0;
-#X connect 20 0 15 0;
-#X connect 23 0 24 0;
-#X connect 24 0 6 0;
-#X connect 25 0 22 0;
-#X connect 27 0 23 0;
-#X connect 30 0 29 0;
-#X connect 31 0 32 0;
-#X connect 32 0 29 0;
-#X connect 38 0 39 0;
-#X connect 38 1 39 0;
-#X connect 39 0 40 0;
-#X connect 40 0 34 0;
-#X connect 42 0 8 0;
-#X connect 45 0 29 0;
-#X connect 46 0 18 0;
-#X connect 47 0 19 0;
--- a/examples/08-PureData/envelopeTrigger/_main.pd	Thu Jun 23 21:23:27 2016 +0100
+++ b/examples/08-PureData/envelopeTrigger/_main.pd	Thu Jun 23 21:24:45 2016 +0100
@@ -1,71 +1,25 @@
-#N canvas 646 209 359 287 10;
-#X obj 28 207 dac~;
-#N canvas 324 380 556 621 env 0;
-#N canvas 886 1001 131 207 >~ 0;
-#X obj 19 -37 -~;
-#X obj 19 -58 min~;
-#X obj 19 26 *~ 1e+37;
-#X obj 19 5 +~ 1e-37;
-#X obj 19 -16 clip~ -1e-37 0;
-#X obj 19 -83 inlet~;
-#X obj 62 -83 inlet~;
-#X obj 19 48 outlet~;
-#X connect 0 0 4 0;
-#X connect 1 0 0 0;
-#X connect 2 0 7 0;
-#X connect 3 0 2 0;
-#X connect 4 0 3 0;
-#X connect 5 0 1 0;
-#X connect 6 0 0 1;
-#X connect 6 0 1 1;
-#X restore 199 106 pd >~;
-#X obj 23 173 /~ 44100;
-#X obj 68 153 samplerate~;
-#X obj 68 133 loadbang;
-#X obj 199 128 biquad~ 0 0 -1 1 0;
-#X obj 23 209 rpole~;
-#X obj 23 153 sig~ 1;
-#X obj 226 171 sig~ 0.5;
-#N canvas 0 22 110 231 <~ 0;
-#X obj 11 -41 -~;
-#X obj 11 29 +~ 1e-37;
-#X obj 11 8 clip~ -1e-37 0;
-#X obj 11 -86 inlet~;
-#X obj 55 -85 inlet~;
-#X obj 11 -62 max~;
-#X obj 11 -17 *~ -1;
-#X obj 11 81 outlet~;
-#X obj 11 50 *~ 1e+37;
-#X connect 0 0 6 0;
-#X connect 1 0 8 0;
-#X connect 2 0 1 0;
-#X connect 3 0 5 0;
-#X connect 4 0 0 1;
-#X connect 4 0 5 1;
-#X connect 5 0 0 0;
-#X connect 6 0 2 0;
-#X connect 8 0 7 0;
-#X restore 199 192 pd <~;
-#X text 237 193 (x != x);
-#X obj 23 467 *~;
-#X obj 199 150 *~ -1;
-#X obj 23 331 *~ 512;
-#X obj 23 229 clip~ 0 1;
-#X obj 23 352 tabread4~ env1;
-#X obj 23 310 *~;
-#X obj 199 64 abs~;
-#X obj 199 43 hip~ 1;
-#X obj 199 22 inlet~ excitationSignal;
-#X obj 218 269 sig~ 1;
-#X obj 218 292 /~;
-#X obj 226 86 inlet~ threshold;
-#X obj 262 229 inlet~ envDuration;
-#X obj 38 445 osc~ 220;
-#X obj 38 425 +~ 50;
-#X obj 38 385 *~;
-#X obj 38 405 *~ 1000;
-#X obj 262 269 clip~ 1e-05 100000;
-#X obj 23 487 outlet~;
+#N canvas 646 209 853 1174 10;
+#X text 29 17 SAMPLE-ACCURATE ENVELOPE TRIGGER;
+#X text 29 27 ================================;
+#X obj 33 543 /~ 44100;
+#X obj 78 523 samplerate~;
+#X obj 78 503 loadbang;
+#X obj 33 619 rpole~;
+#X obj 33 477 sig~ 1;
+#X obj 438 571 sig~ 0.5;
+#X obj 33 937 *~;
+#X obj 399 550 *~ -1;
+#X obj 33 801 *~ 512;
+#X obj 33 639 clip~ 0 1;
+#X obj 33 822 tabread4~ env1;
+#X obj 33 780 *~;
+#X obj 399 424 abs~;
+#X obj 48 736 sig~ 1;
+#X obj 48 759 /~;
+#X obj 48 915 osc~ 220;
+#X obj 48 895 +~ 50;
+#X obj 48 855 *~;
+#X obj 112 736 clip~ 1e-05 100000;
 #N canvas 0 22 450 278 (subpatch) 0;
 #X array env1 512 float 3;
 #A 0 0 0.0625 0.0883883 0.108253 0.125 0.139754 0.153093 0.165359 0.176777
@@ -134,63 +88,98 @@
 0.00186082 0.00153787 0.00124567 0.000984237 0.000753556 0.000553633
 0.000384467 0.000246059 0.000138408 6.15148e-05 1.53787e-05 0;
 #X coords 0 1 512 0 512 64 1 0 0;
-#X restore 24 536 graph;
-#X text 244 55 centre signal around zero and take abs value;
-#X text 243 107 if greater than threshold output 1;
-#X text 313 129 differentiator;
-#X text 238 150 (generates impulse on positive trigger (0->1);
-#X text 67 210 signal-rate counter;
-#X text 296 193 -> resets counter by briefly setting;
-#X text 314 204 rpole~ coeff to 0;
-#X text 96 416 kickdrum 101 :P;
-#X text 400 514 pre-generated envelope;
-#X obj 262 249 *~;
-#X text 127 352 << use envelope value for volume and frequency;
-#X connect 0 0 4 0;
-#X connect 1 0 5 0;
-#X connect 2 0 1 1;
-#X connect 3 0 2 0;
-#X connect 4 0 11 0;
-#X connect 5 0 13 0;
-#X connect 6 0 1 0;
-#X connect 7 0 8 1;
-#X connect 8 0 5 1;
-#X connect 10 0 28 0;
-#X connect 11 0 8 0;
-#X connect 12 0 14 0;
-#X connect 13 0 15 0;
-#X connect 14 0 10 0;
-#X connect 14 0 25 0;
-#X connect 14 0 25 1;
-#X connect 15 0 12 0;
-#X connect 16 0 0 0;
-#X connect 17 0 16 0;
+#X restore 34 1026 graph;
+#X text 475 477 if greater than threshold output 1;
+#X text 513 521 differentiator;
+#X text 512 539 (generates impulse on positive trigger (0->1);
+#X text 107 620 signal-rate counter;
+#X text 497 618 rpole~ coeff to 0;
+#X text 410 1004 pre-generated envelope;
+#X obj 112 692 *~;
+#X obj 399 476 hv_gte~;
+#X obj 399 592 hv_lte~;
+#X text 116 891 kickdrum 101 :);
+#X obj 399 392 receive~ excitationSignal;
+#X obj 438 456 receive~ threshold;
+#X obj 112 672 receive~ envDuration;
+#X obj 38 311 send~ excitationSignal;
+#X obj 198 311 send~ threshold;
+#X obj 318 311 send~ envDuration;
+#X obj 33 967 dac~;
+#X text 29 57 Sample-accurate signal processing can often be hard to
+;
+#X text 29 71 do in puredata \, which generally works on a per-block
+;
+#X text 29 85 basis. In this example we use a combination of;
+#X text 95 102 and;
+#X obj 125 102 rpole~;
+#X obj 48 875 *~ 1000;
+#X obj 112 714 *~ 0.25;
+#X obj 444 507 sig~ 1;
+#X obj 399 528 rzero~ 1;
+#X text 187 102 objects to perform;
+#X text 29 120 sample-accurate envelope triggering based on the;
+#X text 29 134 signal fed into the first audio channel.;
+#X obj 38 210 adc~ 1;
+#X obj 198 240 adc~ 3;
+#X obj 318 280 adc~ 4;
+#X text 252 240 use a potentiometer on first analog in to set;
+#X text 252 253 triggering threshold...;
+#X text 382 280 ...second analog in sets envelope duration;
+#X obj 32 102 rzero~;
+#X text 605 12 ............................;
+#X text 605 22 . ____ ._____ _ .......___ .;
+#X text 605 32 .| __ )| ____| |....../ _ |.;
+#X text 605 52 .| |_) | |___| |___ / ___ |.;
+#X text 605 62 .|____/|_____|_____/_/..._|.io;
+#X text 605 72 ............................;
+#X text 605 42 .| __ || __|.| |...../ _| |.;
+#X text 475 424 take absolute value of signal;
+#X text 497 630 (coefficient of 1 causes rpole~ to;
+#X text 497 643 accumulate input samples);
+#X text 108 542 setting input to (1/sampleRate) means;
+#X text 108 555 rpole~ counts seconds when its coefficient;
+#X text 108 569 is set to 1 (resets when 0);
+#X text 147 822 use envelope value for volume and frequency;
+#X text 479 594 -> boolean (x != x);
+#X text 92 210 Left audio input for excitation (a piezo disk works
+well);
+#X text 111 767 multiplies counter output allowing to alter;
+#X text 111 781 playback speed of envelope;
+#X text 497 607 resets counter by briefly setting;
+#X connect 2 0 5 0;
+#X connect 3 0 2 1;
+#X connect 4 0 3 0;
+#X connect 5 0 11 0;
+#X connect 6 0 2 0;
+#X connect 7 0 30 1;
+#X connect 8 0 38 0;
+#X connect 8 0 38 1;
+#X connect 9 0 30 0;
+#X connect 10 0 12 0;
+#X connect 11 0 13 0;
+#X connect 12 0 8 0;
+#X connect 12 0 19 0;
+#X connect 12 0 19 1;
+#X connect 13 0 10 0;
+#X connect 14 0 29 0;
+#X connect 15 0 16 0;
+#X connect 16 0 13 1;
+#X connect 17 0 8 1;
 #X connect 18 0 17 0;
-#X connect 19 0 20 0;
-#X connect 20 0 15 1;
-#X connect 21 0 0 1;
-#X connect 22 0 39 0;
-#X connect 22 0 39 1;
-#X connect 23 0 10 1;
-#X connect 24 0 23 0;
-#X connect 25 0 26 0;
-#X connect 26 0 24 0;
-#X connect 27 0 20 1;
-#X connect 39 0 27 0;
-#X restore 28 174 pd env;
-#X obj 79 110 adc~ 9;
-#X obj 129 130 adc~ 10;
-#X text 72 90 piezo input for excitation;
-#X text 123 110 fader 1 sets threshold;
-#X text 183 130 fader 2 sets duration;
-#X text 29 17 SAMPLE-ACCURATE ENVELOPE TRIGGER;
-#X text 29 27 ================================;
-#X obj 28 90 adc~ 8;
-#X text 141 236 ---------------------------------;
-#X text 141 226 @krighxz / BELA / heavy / 12/2015;
-#X text 165 245 beaglert.cc / enzienaudio.com;
-#X connect 1 0 0 0;
-#X connect 1 0 0 1;
-#X connect 2 0 1 1;
-#X connect 3 0 1 2;
-#X connect 9 0 1 0;
+#X connect 19 0 44 0;
+#X connect 20 0 16 1;
+#X connect 28 0 45 0;
+#X connect 29 0 47 0;
+#X connect 30 0 5 1;
+#X connect 32 0 14 0;
+#X connect 33 0 29 1;
+#X connect 34 0 28 0;
+#X connect 34 0 28 1;
+#X connect 44 0 18 0;
+#X connect 45 0 20 0;
+#X connect 46 0 47 1;
+#X connect 47 0 9 0;
+#X connect 51 0 35 0;
+#X connect 52 0 36 0;
+#X connect 53 0 37 0;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/08-PureData/envelopeTrigger/hv_gte~.pd	Thu Jun 23 21:24:45 2016 +0100
@@ -0,0 +1,34 @@
+#N canvas 855 553 292 175 10;
+#X obj 150 34 inlet~;
+#X obj 45 34 inlet~;
+#X obj 45 129 outlet~;
+#N canvas 467 216 450 300 @hv_obj 0;
+#X obj 217 60 inlet~;
+#X obj 120 60 inlet~;
+#X obj 170 183 outlet~;
+#X connect 1 0 2 0;
+#X restore 45 105 pd @hv_obj __and~f;
+#X obj 150 83 sig~ 1;
+#N canvas 249 541 148 189 @hv_obj 1;
+#X obj 23 69 -~;
+#X obj 23 94 clip~ -1e-37 0;
+#X obj 23 18 inlet~;
+#X obj 67 19 inlet~;
+#X obj 23 159 outlet~;
+#X obj 23 136 *~ 1e+37;
+#X obj 23 44 min~;
+#X obj 23 115 +~ 1e-37;
+#X connect 0 0 1 0;
+#X connect 1 0 7 0;
+#X connect 2 0 6 0;
+#X connect 3 0 6 1;
+#X connect 3 0 0 1;
+#X connect 5 0 4 0;
+#X connect 6 0 0 0;
+#X connect 7 0 5 0;
+#X restore 45 57 pd @hv_obj __gte~f;
+#X connect 0 0 5 1;
+#X connect 1 0 5 0;
+#X connect 3 0 2 0;
+#X connect 4 0 3 1;
+#X connect 5 0 3 0;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/08-PureData/envelopeTrigger/hv_lte~.pd	Thu Jun 23 21:24:45 2016 +0100
@@ -0,0 +1,34 @@
+#N canvas 795 419 292 175 10;
+#X obj 150 34 inlet~;
+#X obj 45 34 inlet~;
+#X obj 45 129 outlet~;
+#N canvas 467 216 450 300 @hv_obj 0;
+#X obj 217 60 inlet~;
+#X obj 120 60 inlet~;
+#X obj 170 183 outlet~;
+#X connect 1 0 2 0;
+#X restore 45 105 pd @hv_obj __and~f;
+#X obj 150 83 sig~ 1;
+#N canvas 715 101 191 233 @hv_obj 1;
+#X obj 49 83 -~;
+#X obj 50 109 clip~ -1e-37 0;
+#X obj 49 32 inlet~;
+#X obj 93 33 inlet~;
+#X obj 50 174 outlet~;
+#X obj 50 151 *~ 1e+37;
+#X obj 49 58 min~;
+#X obj 50 130 +~ 1e-37;
+#X connect 0 0 1 0;
+#X connect 1 0 7 0;
+#X connect 2 0 6 0;
+#X connect 2 0 0 1;
+#X connect 3 0 6 1;
+#X connect 5 0 4 0;
+#X connect 6 0 0 0;
+#X connect 7 0 5 0;
+#X restore 45 57 pd @hv_obj __lte~f;
+#X connect 0 0 5 1;
+#X connect 1 0 5 0;
+#X connect 3 0 2 0;
+#X connect 4 0 3 1;
+#X connect 5 0 3 0;
--- a/examples/08-PureData/hello-midi/_main.pd	Thu Jun 23 21:23:27 2016 +0100
+++ b/examples/08-PureData/hello-midi/_main.pd	Thu Jun 23 21:24:45 2016 +0100
@@ -1,81 +1,82 @@
-#N canvas 85 58 1280 685 10;
-#X obj 19 396 dac~ 1 2;
-#X text 39 1 Hello world!;
-#X text 37 11 ============;
-#X obj 31 353 *~ 0.1;
-#X text 202 448 ---------------------------------;
-#X text 202 438 @krighxz / BELA / heavy / 12/2015;
-#X text 226 457 beaglert.cc / enzienaudio.com;
-#X obj 39 132 mtof;
-#X floatatom 79 59 5 0 0 0 - - -, f 5;
-#X floatatom 122 59 5 0 0 0 - - -, f 5;
-#X floatatom 41 63 5 0 0 0 - - -, f 5;
-#X obj 26 170 phasor~ 440;
-#X text 100 363 (the harsh sound of success);
-#X obj 260 83 * 20;
-#X obj 261 112 + 200;
-#X obj 132 85 loadbang;
-#X msg 131 111 1000;
-#X obj 125 166 sig~;
-#X text 673 121 [pgmin];
-#X obj 218 178 * 10;
-#X obj 30 250 hip~;
-#X obj 26 275 hip~;
-#X obj 20 302 hip~;
-#X obj 19 323 hip~;
-#X obj 87 192 lop~ 4;
-#X obj 152 256 line;
-#X obj 200 200 + 50;
-#X msg 170 227 \$1 200;
-#X msg 93 114 0;
-#X msg 185 112 0;
-#X obj 29 224 vcf~ 4;
-#X obj 70 333 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
-1;
-#X obj 42 92 mono;
-#X obj 40 28 bela_notein 0;
-#X obj 260 60 bela_ctlin 5 0;
-#X obj 220 151 bela_ctlin 6 0;
-#X text 537 58 [ctlin];
-#X text 332 27 [notein];
-#X text 140 29 <== the bela equivalent of ==>;
-#X text 349 59 <== the bela equivalent of ==>;
-#X text 483 121 <== the bela equivalent of ==>;
-#X obj 405 175 print pgmin;
-#X obj 408 121 bela_pgmin 0;
-#X connect 3 0 0 1;
-#X connect 3 0 0 0;
-#X connect 7 0 11 0;
-#X connect 8 0 32 1;
-#X connect 10 0 32 0;
-#X connect 11 0 30 0;
+#N canvas 906 587 651 756 10;
+#X obj 45 706 dac~ 1 2;
+#X obj 45 663 *~ 0.1;
+#X obj 45 262 mtof;
+#X obj 45 300 phasor~ 440;
+#X obj 201 303 * 20;
+#X obj 201 326 + 200;
+#X obj 201 446 * 10;
+#X obj 45 530 hip~;
+#X obj 45 552 hip~;
+#X obj 45 574 hip~;
+#X obj 45 595 hip~;
+#X obj 201 373 lop~ 4;
+#X obj 201 513 line;
+#X obj 201 468 + 50;
+#X msg 201 490 \$1 200;
+#X obj 45 404 vcf~ 4;
+#X obj 45 202 mono;
+#X obj 45 158 notein 0;
+#X obj 201 280 ctlin 5 0;
+#X obj 201 424 ctlin 6 0;
+#X obj 201 350 sig~ 1000;
+#X obj 45 322 *~ 2;
+#X obj 45 344 -~ 1;
+#X obj 78 641 * 0.1;
+#X text 274 423 <<< cc 6 controls high pass centre frequency;
+#X text 274 280 <<< cc 5 controls resonant low pass centre frequency
+;
+#X text 39 11 Hello midi!;
+#X text 37 21 ===========;
+#X text 108 203 <<< abstraction for monophonic voice stealing;
+#X obj 66 233 s gate;
+#X obj 78 619 r gate;
+#X text 43 53 Here's a simple monophonic synthesiser that is controllable
+;
+#X text 43 66 with a midi controller. Note and control messages can
+be;
+#X text 43 80 obtained using the;
+#X obj 159 80 notein;
+#X text 213 80 and;
+#X obj 240 80 ctlin;
+#X text 292 80 objects.;
+#X text 43 104 Most midi devices should be compatible when plugged
+into;
+#X text 43 117 the BeagleBone's USB port.;
+#X text 445 5 ............................;
+#X text 445 15 . ____ ._____ _ .......___ .;
+#X text 445 25 .| __ )| ____| |....../ _ |.;
+#X text 445 45 .| |_) | |___| |___ / ___ |.;
+#X text 445 55 .|____/|_____|_____/_/..._|.io;
+#X text 445 65 ............................;
+#X text 445 35 .| __ || __|.| |...../ _| |.;
+#X connect 1 0 0 1;
+#X connect 1 0 0 0;
+#X connect 2 0 3 0;
+#X connect 3 0 21 0;
+#X connect 4 0 5 0;
+#X connect 5 0 20 0;
+#X connect 6 0 13 0;
+#X connect 7 0 8 0;
+#X connect 8 0 9 0;
+#X connect 9 0 10 0;
+#X connect 10 0 1 0;
+#X connect 11 0 15 1;
+#X connect 12 0 7 1;
+#X connect 12 0 8 1;
+#X connect 12 0 9 1;
+#X connect 12 0 10 1;
 #X connect 13 0 14 0;
-#X connect 14 0 17 0;
-#X connect 15 0 16 0;
-#X connect 15 0 29 0;
-#X connect 15 0 28 0;
-#X connect 16 0 17 0;
-#X connect 17 0 24 0;
-#X connect 19 0 26 0;
-#X connect 20 0 21 0;
+#X connect 14 0 12 0;
+#X connect 15 0 7 0;
+#X connect 16 0 2 0;
+#X connect 16 1 29 0;
+#X connect 17 0 16 0;
+#X connect 17 1 16 1;
+#X connect 18 0 4 0;
+#X connect 19 0 6 0;
+#X connect 20 0 11 0;
 #X connect 21 0 22 0;
-#X connect 22 0 23 0;
-#X connect 23 0 3 0;
-#X connect 24 0 30 1;
-#X connect 25 0 20 1;
-#X connect 25 0 21 1;
-#X connect 25 0 22 1;
-#X connect 25 0 23 1;
-#X connect 26 0 27 0;
-#X connect 27 0 25 0;
-#X connect 29 0 19 0;
-#X connect 30 0 20 0;
-#X connect 31 0 3 1;
-#X connect 32 0 7 0;
-#X connect 32 1 31 0;
-#X connect 33 0 10 0;
-#X connect 33 1 8 0;
-#X connect 33 2 9 0;
-#X connect 34 0 13 0;
-#X connect 35 0 19 0;
-#X connect 42 0 41 0;
+#X connect 22 0 15 0;
+#X connect 23 0 1 1;
+#X connect 30 0 23 0;
--- a/examples/08-PureData/hello-midi/mono.pd	Thu Jun 23 21:23:27 2016 +0100
+++ b/examples/08-PureData/hello-midi/mono.pd	Thu Jun 23 21:24:45 2016 +0100
@@ -1,9 +1,9 @@
-#N canvas 69 182 1020 452 10;
+#N canvas 69 182 885 820 10;
 #N canvas 0 23 450 278 (subpatch) 0;
 #X array \$0-activeNotes 127 float 2;
 #X coords 0 100 127 -1 200 140 1 0 0;
-#X restore 537 25 graph;
-#N canvas 89 91 450 300 resetArray 1;
+#X restore 568 210 graph;
+#N canvas 89 91 329 192 resetArray 0;
 #X obj 121 145 tabwrite \$0-activeNotes;
 #X msg 123 115 -0.5;
 #X obj 154 90 t b f;
@@ -17,90 +17,77 @@
 #X connect 3 0 6 0;
 #X connect 4 0 3 0;
 #X connect 6 0 2 0;
-#X restore 83 49 pd resetArray;
-#X obj 83 3 loadbang;
-#X obj 88 25 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
--1;
-#X obj 39 188 maxArray \$0-activeNotes 128;
-#X obj 183 219 f;
-#X obj 39 237 >= 0;
-#X floatatom 148 313 5 0 0 0 - - -, f 5;
-#X obj 70 262 select 1;
-#X obj 366 87 f;
-#X obj 426 60 f;
-#X text 334 39 note;
-#X text 424 16 velocity;
-#X obj 423 87 > 0;
-#X obj 344 281 tabwrite \$0-activeNotes;
-#X obj 330 207 f;
-#X floatatom 303 178 5 0 0 0 - - -, f 5;
-#X obj 265 163 f;
-#X obj 304 150 + 1;
-#X msg 277 130 -1;
-#X msg 371 207 -0.5;
-#X obj 400 116 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
-1;
-#X obj 367 137 spigot;
-#X obj 447 134 spigot;
-#X obj 460 86 == 0;
-#X obj 470 109 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
-1;
-#X obj 434 163 t b f;
-#X obj 337 60 inlet;
-#X obj 426 32 inlet;
-#X obj 148 350 outlet;
-#X obj 275 89 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
--1;
-#X obj 41 163 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
--1;
-#X obj 363 172 t b f;
-#X obj 334 240 t b f;
-#X text 578 211 pass in velocity/note pairs (velocity first) and obtain
+#X restore 776 236 pd resetArray;
+#X obj 776 210 loadbang;
+#X obj 176 542 maxArray \$0-activeNotes 128;
+#X obj 320 683 f;
+#X obj 176 591 >= 0;
+#X floatatom 320 725 5 0 0 0 - - -, f 5;
+#X obj 176 616 select 1;
+#X obj 209 261 f;
+#X text 206 184 note;
+#X text 266 190 velocity;
+#X obj 242 261 > 0;
+#X obj 203 475 tabwrite \$0-activeNotes;
+#X obj 176 431 f;
+#X obj 114 366 f;
+#X obj 141 366 + 1;
+#X msg 129 344 -1;
+#X msg 217 431 -0.5;
+#X obj 209 291 spigot;
+#X obj 311 291 spigot;
+#X obj 344 259 == 0;
+#X obj 311 316 t b f;
+#X obj 209 205 inlet;
+#X obj 268 206 inlet;
+#X obj 320 754 outlet;
+#X obj 176 517 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X obj 209 316 t b f;
+#X obj 176 454 t b f;
+#X text 110 38 pass in velocity/note pairs (velocity first) and obtain
 as an output the most recent note still active;
-#X text 581 268 outlet 2 gate;
-#X obj 330 366 outlet;
-#X text 583 251 outlet 1 most recent note active (-1 otherwise);
-#X text 155 329 most recent note active;
-#X msg 338 338 0;
-#X msg 378 339 1;
-#X connect 2 0 3 0;
-#X connect 3 0 1 0;
-#X connect 3 0 19 0;
+#X text 109 103 outlet 2 gate;
+#X obj 507 754 outlet;
+#X text 109 77 outlet 1 most recent note active (-1 otherwise);
+#X text 358 726 most recent note active;
+#X msg 507 726 0;
+#X msg 537 727 1;
+#X obj 268 228 t b f f;
+#X obj 129 321 loadbang;
+#X connect 2 0 1 0;
+#X connect 3 0 5 0;
+#X connect 3 1 4 1;
 #X connect 4 0 6 0;
-#X connect 4 1 5 1;
+#X connect 4 0 34 0;
 #X connect 5 0 7 0;
-#X connect 5 0 40 0;
-#X connect 6 0 8 0;
-#X connect 7 0 29 0;
-#X connect 8 0 5 0;
-#X connect 8 1 39 0;
-#X connect 9 0 22 0;
-#X connect 9 0 23 0;
-#X connect 10 0 13 0;
-#X connect 10 0 24 0;
-#X connect 13 0 21 0;
-#X connect 15 0 33 0;
-#X connect 16 0 15 1;
-#X connect 17 0 18 0;
-#X connect 18 0 16 0;
-#X connect 18 0 17 1;
-#X connect 19 0 17 1;
-#X connect 20 0 33 0;
-#X connect 21 0 22 1;
-#X connect 22 0 32 0;
-#X connect 23 0 26 0;
-#X connect 24 0 25 0;
-#X connect 25 0 23 1;
-#X connect 26 0 20 0;
-#X connect 26 1 14 1;
-#X connect 27 0 9 0;
-#X connect 28 0 10 0;
-#X connect 28 0 30 0;
-#X connect 30 0 17 0;
-#X connect 31 0 4 0;
-#X connect 32 0 15 0;
-#X connect 32 1 14 1;
-#X connect 33 0 31 0;
-#X connect 33 1 14 0;
-#X connect 39 0 36 0;
-#X connect 40 0 36 0;
+#X connect 6 0 24 0;
+#X connect 7 0 4 0;
+#X connect 7 1 33 0;
+#X connect 8 0 18 0;
+#X connect 8 0 19 0;
+#X connect 11 0 18 1;
+#X connect 13 0 27 0;
+#X connect 14 0 15 0;
+#X connect 15 0 14 1;
+#X connect 15 0 13 1;
+#X connect 16 0 14 1;
+#X connect 17 0 27 0;
+#X connect 18 0 26 0;
+#X connect 19 0 21 0;
+#X connect 20 0 19 1;
+#X connect 21 0 17 0;
+#X connect 21 1 12 1;
+#X connect 22 0 8 0;
+#X connect 23 0 35 0;
+#X connect 25 0 3 0;
+#X connect 26 0 13 0;
+#X connect 26 1 12 1;
+#X connect 27 0 25 0;
+#X connect 27 1 12 0;
+#X connect 33 0 30 0;
+#X connect 34 0 30 0;
+#X connect 35 0 14 0;
+#X connect 35 1 11 0;
+#X connect 35 2 20 0;
+#X connect 36 0 16 0;
--- a/examples/08-PureData/hello-world/_main.pd	Thu Jun 23 21:23:27 2016 +0100
+++ b/examples/08-PureData/hello-world/_main.pd	Thu Jun 23 21:24:45 2016 +0100
@@ -1,13 +1,17 @@
-#N canvas 275 573 461 212 10;
-#X obj 39 143 dac~ 1 2;
+#N canvas 954 893 418 229 10;
+#X obj 39 163 dac~ 1 2;
 #X text 35 32 Hello world!;
 #X text 35 42 ============;
-#X text 95 79 (the sweet sound of success);
-#X obj 39 102 *~ 0.1;
-#X obj 39 81 osc~ 440;
-#X text 238 160 ---------------------------------;
-#X text 238 150 @krighxz / BELA / heavy / 12/2015;
-#X text 262 169 beaglert.cc / enzienaudio.com;
-#X connect 4 0 0 1;
-#X connect 4 0 0 0;
-#X connect 5 0 4 0;
+#X obj 39 122 *~ 0.1;
+#X obj 39 101 osc~ 440;
+#X text 108 115 OMG SINE WAVE;
+#X text 215 22 ............................;
+#X text 215 32 . ____ ._____ _ .......___ .;
+#X text 215 42 .| __ )| ____| |....../ _ |.;
+#X text 215 62 .| |_) | |___| |___ / ___ |.;
+#X text 215 72 .|____/|_____|_____/_/..._|.io;
+#X text 215 82 ............................;
+#X text 215 52 .| __ || __|.| |...../ _| |.;
+#X connect 3 0 0 1;
+#X connect 3 0 0 0;
+#X connect 4 0 3 0;
--- a/examples/08-PureData/karplusStrong/_main.pd	Thu Jun 23 21:23:27 2016 +0100
+++ b/examples/08-PureData/karplusStrong/_main.pd	Thu Jun 23 21:24:45 2016 +0100
@@ -1,240 +1,71 @@
-#N canvas 440 516 715 490 10;
-#X obj 38 370 dac~ 1 2;
-#X text 470 442 ---------------------------------;
-#X text 470 432 @krighxz / BELA / heavy / 12/2015;
-#X text 494 451 beaglert.cc / enzienaudio.com;
+#N canvas 826 561 694 734 10;
+#X obj 40 660 dac~ 1 2;
 #X text 33 22 Karplus Strong;
 #X text 33 32 ==============;
-#X obj 38 323 vd~ \$0-wg1;
-#X obj 118 345 lop~ 1000;
-#X obj 118 367 *~ 0.99;
-#X obj 118 389 s~ \$0-fb1;
-#X obj 38 94 adc~ 3;
-#X obj 38 116 hip~ 100;
-#X obj 98 176 r~ \$0-fb1;
-#X obj 38 198 delwrite~ \$0-wg1 100;
-#X obj 38 268 *~;
-#X obj 38 290 *~ 10;
-#X text 99 116 <<< centre (i.e. DC block) signal with high-pass filter
+#X obj 40 613 vd~ \$0-wg1;
+#X obj 120 635 lop~ 1000;
+#X obj 120 679 s~ \$0-fb1;
+#X obj 40 286 hip~ 100;
+#X obj 105 345 r~ \$0-fb1;
+#X obj 40 368 delwrite~ \$0-wg1 100;
+#X obj 40 538 *~;
+#X obj 40 560 *~ 10;
+#X text 135 286 <<< centre (i.e. DC block) signal with high-pass filter
 ;
-#X text 100 94 <<< use accelerometer \, piezo or FSR on first analog
-in;
-#X text 105 245 <<< use potentiometer or fader on second analog in
+#X text 126 492 <<< use potentiometer or fader on second analog in
 ;
-#X text 100 75 EXCITATION INPUT:;
-#X text 100 225 DELAY PERIOD:;
-#X text 182 365 <<< and decay here [0-0.9999];
-#X text 182 345 <<< set damping here [~100-20000];
-#N canvas 335 566 461 274 gate 0;
-#N canvas 0 22 450 278 (subpatch) 0;
-#X array \$0-xfer 1024 float 3;
-#A 0 0 -0.808242 -0.804734 -0.801234 -0.797741 -0.794256 -0.790778
--0.787309 -0.783846 -0.780392 -0.776945 -0.773506 -0.770074 -0.76665
--0.763233 -0.759824 -0.756423 -0.75303 -0.749644 -0.746266 -0.742895
--0.739532 -0.736176 -0.732829 -0.729488 -0.726156 -0.722831 -0.719514
--0.716204 -0.712902 -0.709608 -0.706321 -0.703042 -0.69977 -0.696507
--0.69325 -0.690002 -0.686761 -0.683527 -0.680302 -0.677084 -0.673873
--0.67067 -0.667475 -0.664288 -0.661108 -0.657935 -0.654771 -0.651614
--0.648464 -0.645323 -0.642188 -0.639062 -0.635943 -0.632832 -0.629728
--0.626632 -0.623544 -0.620463 -0.61739 -0.614324 -0.611266 -0.608216
--0.605174 -0.602139 -0.599111 -0.596092 -0.59308 -0.590075 -0.587078
--0.584089 -0.581107 -0.578134 -0.575167 -0.572209 -0.569257 -0.566314
--0.563378 -0.56045 -0.55753 -0.554617 -0.551711 -0.548814 -0.545924
--0.543041 -0.540167 -0.537299 -0.53444 -0.531588 -0.528744 -0.525907
--0.523078 -0.520257 -0.517443 -0.514637 -0.511839 -0.509048 -0.506265
--0.503489 -0.500721 -0.497961 -0.495208 -0.492463 -0.489726 -0.486996
--0.484274 -0.481559 -0.478852 -0.476153 -0.473461 -0.470777 -0.468101
--0.465432 -0.462771 -0.460117 -0.457472 -0.454833 -0.452203 -0.44958
--0.446964 -0.444357 -0.441757 -0.439164 -0.436579 -0.434002 -0.431432
--0.42887 -0.426316 -0.42377 -0.42123 -0.418699 -0.416175 -0.413659
--0.41115 -0.40865 -0.406156 -0.403671 -0.401193 -0.398722 -0.396259
--0.393804 -0.391357 -0.388917 -0.386485 -0.38406 -0.381643 -0.379234
--0.376832 -0.374438 -0.372051 -0.369673 -0.367301 -0.364938 -0.362582
--0.360233 -0.357893 -0.35556 -0.353234 -0.350916 -0.348606 -0.346304
--0.344009 -0.341721 -0.339442 -0.33717 -0.334905 -0.332649 -0.330399
--0.328158 -0.325924 -0.323698 -0.321479 -0.319268 -0.317065 -0.314869
--0.312681 -0.3105 -0.308328 -0.306162 -0.304005 -0.301855 -0.299713
--0.297578 -0.295451 -0.293331 -0.291219 -0.289115 -0.287019 -0.28493
--0.282848 -0.280775 -0.278709 -0.27665 -0.2746 -0.272556 -0.270521
--0.268493 -0.266473 -0.26446 -0.262455 -0.260458 -0.258468 -0.256486
--0.254511 -0.252545 -0.250585 -0.248634 -0.24669 -0.244753 -0.242825
--0.240904 -0.23899 -0.237084 -0.235186 -0.233296 -0.231413 -0.229537
--0.22767 -0.22581 -0.223957 -0.222112 -0.220275 -0.218446 -0.216624
--0.21481 -0.213003 -0.211204 -0.209413 -0.207629 -0.205853 -0.204084
--0.202323 -0.20057 -0.198824 -0.197086 -0.195356 -0.193633 -0.191918
--0.190211 -0.188511 -0.186819 -0.185134 -0.183457 -0.181788 -0.180126
--0.178472 -0.176826 -0.175187 -0.173556 -0.171932 -0.170316 -0.168708
--0.167108 -0.165515 -0.163929 -0.162351 -0.160781 -0.159219 -0.157664
--0.156117 -0.154577 -0.153045 -0.151521 -0.150004 -0.148495 -0.146993
--0.1455 -0.144013 -0.142535 -0.141064 -0.139601 -0.138145 -0.136697
--0.135256 -0.133824 -0.132398 -0.130981 -0.129571 -0.128169 -0.126774
--0.125387 -0.124008 -0.122636 -0.121272 -0.119915 -0.118566 -0.117225
--0.115891 -0.114565 -0.113247 -0.111936 -0.110633 -0.109338 -0.10805
--0.10677 -0.105497 -0.104232 -0.102975 -0.101725 -0.100483 -0.0992487
--0.0980219 -0.0968027 -0.0955911 -0.0943872 -0.0931909 -0.0920023 -0.0908212
--0.0896478 -0.0884821 -0.0873239 -0.0861734 -0.0850305 -0.0838953 -0.0827676
--0.0816476 -0.0805353 -0.0794305 -0.0783334 -0.077244 -0.0761621 -0.0750879
--0.0740213 -0.0729623 -0.071911 -0.0708673 -0.0698312 -0.0688028 -0.067782
--0.0667688 -0.0657632 -0.0647653 -0.063775 -0.0627924 -0.0618173 -0.0608499
--0.0598901 -0.058938 -0.0579935 -0.0570566 -0.0561273 -0.0552057 -0.0542917
--0.0533853 -0.0524866 -0.0515955 -0.050712 -0.0498361 -0.0489679 -0.0481073
--0.0472543 -0.046409 -0.0455713 -0.0447412 -0.0439188 -0.0431039 -0.0422968
--0.0414972 -0.0407053 -0.039921 -0.0391443 -0.0383752 -0.0376138 -0.03686
--0.0361139 -0.0353754 -0.0346445 -0.0339212 -0.0332056 -0.0324976 -0.0317972
--0.0311044 -0.0304193 -0.0297418 -0.029072 -0.0284097 -0.0277551 -0.0271082
--0.0264688 -0.0258371 -0.025213 -0.0245966 -0.0239877 -0.0233865 -0.022793
--0.022207 -0.0216287 -0.021058 -0.020495 -0.0199396 -0.0193918 -0.0188516
--0.0183191 -0.0177942 -0.0172769 -0.0167673 -0.0162653 -0.0157709 -0.0152841
--0.014805 -0.0143335 -0.0138696 -0.0134134 -0.0129648 -0.0125238 -0.0120905
--0.0116647 -0.0112466 -0.0108362 -0.0104333 -0.0100381 -0.00965057
--0.00927063 -0.00889832 -0.00853363 -0.00817657 -0.00782715 -0.00748535
--0.00715118 -0.00682465 -0.00650574 -0.00619446 -0.00589081 -0.00559479
--0.0053064 -0.00502563 -0.0047525 -0.004487 -0.00422913 -0.00397888
--0.00373627 -0.00350128 -0.00327393 -0.0030542 -0.0028421 -0.00263763
--0.0024408 -0.00225159 -0.00207001 -0.00189606 -0.00172974 -0.00157104
--0.00141998 -0.00127655 -0.00114075 -0.00101257 -0.000892029 -0.000779114
--0.000673828 -0.000576172 -0.000486145 -0.000403747 -0.000328979 -0.000261841
--0.000202332 -0.000150452 -0.000106201 -6.95801e-05 -4.05884e-05 -1.92261e-05
--5.49316e-06 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 -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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.49316e-06
-1.92261e-05 4.05884e-05 6.95801e-05 0.000106201 0.000150452 0.000202332
-0.000261841 0.000328979 0.000403747 0.000486145 0.000576172 0.000673828
-0.000779114 0.000892029 0.00101257 0.00114075 0.00127655 0.00141998
-0.00157104 0.00172974 0.00189606 0.00207001 0.00225159 0.0024408 0.00263763
-0.0028421 0.0030542 0.00327393 0.00350128 0.00373627 0.00397888 0.00422913
-0.004487 0.0047525 0.00502563 0.0053064 0.00559479 0.00589081 0.00619446
-0.00650574 0.00682465 0.00715118 0.00748535 0.00782715 0.00817657 0.00853363
-0.00889832 0.00927063 0.00965057 0.0100381 0.0104333 0.0108362 0.0112466
-0.0116647 0.0120905 0.0125238 0.0129648 0.0134134 0.0138696 0.0143335
-0.014805 0.0152841 0.0157709 0.0162653 0.0167673 0.0172769 0.0177942
-0.0183191 0.0188516 0.0193918 0.0199396 0.020495 0.021058 0.0216287
-0.022207 0.022793 0.0233865 0.0239877 0.0245966 0.025213 0.0258371
-0.0264688 0.0271082 0.0277551 0.0284097 0.029072 0.0297418 0.0304193
-0.0311044 0.0317972 0.0324976 0.0332056 0.0339212 0.0346445 0.0353754
-0.0361139 0.03686 0.0376138 0.0383752 0.0391443 0.039921 0.0407053
-0.0414972 0.0422968 0.0431039 0.0439188 0.0447412 0.0455713 0.046409
-0.0472543 0.0481073 0.0489679 0.0498361 0.050712 0.0515955 0.0524866
-0.0533853 0.0542917 0.0552057 0.0561273 0.0570566 0.0579935 0.058938
-0.0598901 0.0608499 0.0618173 0.0627924 0.063775 0.0647653 0.0657632
-0.0667688 0.067782 0.0688028 0.0698312 0.0708673 0.071911 0.0729623
-0.0740213 0.0750879 0.0761621 0.077244 0.0783334 0.0794305 0.0805353
-0.0816476 0.0827676 0.0838953 0.0850305 0.0861734 0.0873239 0.0884821
-0.0896478 0.0908212 0.0920023 0.0931909 0.0943872 0.0955911 0.0968027
-0.0980219 0.0992487 0.100483 0.101725 0.102975 0.104232 0.105497 0.10677
-0.10805 0.109338 0.110633 0.111936 0.113247 0.114565 0.115891 0.117225
-0.118566 0.119915 0.121272 0.122636 0.124008 0.125387 0.126774 0.128169
-0.129571 0.130981 0.132398 0.133824 0.135256 0.136697 0.138145 0.139601
-0.141064 0.142535 0.144013 0.1455 0.146993 0.148495 0.150004 0.151521
-0.153045 0.154577 0.156117 0.157664 0.159219 0.160781 0.162351 0.163929
-0.165515 0.167108 0.168708 0.170316 0.171932 0.173556 0.175187 0.176826
-0.178472 0.180126 0.181788 0.183457 0.185134 0.186819 0.188511 0.190211
-0.191918 0.193633 0.195356 0.197086 0.198824 0.20057 0.202323 0.204084
-0.205853 0.207629 0.209413 0.211204 0.213003 0.21481 0.216624 0.218446
-0.220275 0.222112 0.223957 0.22581 0.22767 0.229537 0.231413 0.233296
-0.235186 0.237084 0.23899 0.240904 0.242825 0.244753 0.24669 0.248634
-0.250585 0.252545 0.254511 0.256486 0.258468 0.260458 0.262455 0.26446
-0.266473 0.268493 0.270521 0.272556 0.2746 0.27665 0.278709 0.280775
-0.282848 0.28493 0.287019 0.289115 0.291219 0.293331 0.295451 0.297578
-0.299713 0.301855 0.304005 0.306162 0.308328 0.3105 0.312681 0.314869
-0.317065 0.319268 0.321479 0.323698 0.325924 0.328158 0.330399 0.332649
-0.334905 0.33717 0.339442 0.341721 0.344009 0.346304 0.348606 0.350916
-0.353234 0.35556 0.357893 0.360233 0.362582 0.364938 0.367301 0.369673
-0.372051 0.374438 0.376832 0.379234 0.381643 0.38406 0.386485 0.388917
-0.391357 0.393804 0.396259 0.398722 0.401193 0.403671 0.406156 0.40865
-0.41115 0.413659 0.416175 0.418699 0.42123 0.42377 0.426316 0.42887
-0.431432 0.434002 0.436579 0.439164 0.441757 0.444357 0.446964 0.44958
-0.452203 0.454833 0.457472 0.460117 0.462771 0.465432 0.468101 0.470777
-0.473461 0.476153 0.478852 0.481559 0.484274 0.486996 0.489726 0.492463
-0.495208 0.497961 0.500721 0.503489 0.506265 0.509048 0.511839 0.514637
-0.517443 0.520257 0.523078 0.525907 0.528744 0.531588 0.53444 0.537299
-0.540167 0.543041 0.545924 0.548814 0.551711 0.554617 0.55753 0.56045
-0.563378 0.566314 0.569257 0.572209 0.575167 0.578134 0.581107 0.584089
-0.587078 0.590075 0.59308 0.596092 0.599111 0.602139 0.605174 0.608216
-0.611266 0.614324 0.61739 0.620463 0.623544 0.626632 0.629728 0.632832
-0.635943 0.639062 0.642188 0.645323 0.648464 0.651614 0.654771 0.657935
-0.661108 0.664288 0.667475 0.67067 0.673873 0.677084 0.680302 0.683527
-0.686761 0.690002 0.69325 0.696507 0.69977 0.703042 0.706321 0.709608
-0.712902 0.716204 0.719514 0.722831;
-#A 1000 0.726156 0.729488 0.732829 0.736176 0.739532 0.742895 0.746266
-0.749644 0.75303 0.756423 0.759824 0.763233 0.76665 0.770074 0.773506
-0.776945 0.780392 0.783846 0.787309 0.790778 0.794256 0.797741 0.801234
-0.804734;
-#X coords 0 1 1023 -1 200 200 1 0 0;
-#X restore 230 34 graph;
-#X obj 25 27 inlet~;
-#X obj 25 49 clip~ -1 1;
-#X obj 25 71 *~ 512;
-#X obj 25 93 +~ 512;
-#X obj 25 115 tabread4~ \$0-xfer;
-#X obj 25 137 outlet~;
-#N canvas 0 22 334 332 generate-xfer 0;
-#X obj 8 290 tabwrite \$0-xfer;
-#X obj 8 109 / 1024;
-#X obj 8 129 * 2;
-#X obj 8 149 - 1;
-#X obj 8 169 moses 0;
-#X obj 8 191 + 0.1;
-#X obj 8 213 clip -1 0;
-#X obj 68 191 - 0.1;
-#X obj 68 213 clip 0 1;
-#X obj 101 16 inlet threshold;
-#X obj 101 78 count 1024;
-#X obj 128 58 s \$0-thresh;
-#X obj 95 169 r \$0-thresh;
-#X obj 101 38 t b f;
-#X obj 68 236 *;
-#X obj 8 236 *;
-#X obj 8 258 * -1;
-#X text 140 203 <<< deadzone;
-#X text 140 253 <<< smooth by taking exponent;
-#X connect 1 0 2 0;
-#X connect 2 0 3 0;
+#X text 37 190 EXCITATION INPUT:;
+#X text 37 418 DELAY PERIOD:;
+#X text 214 655 <<< and decay here [0-0.9999];
+#X text 155 307 <<< thresholding to remove any consistent noise in
+the excitation signal;
+#X obj 40 234 adc~ 1;
+#X obj 40 466 sig~ 1;
+#X obj 40 515 -~;
+#X obj 55 491 adc~ 3;
+#X obj 40 582 +~ 2;
+#X text 214 635 <<< set damping here [100-20000];
+#X obj 120 657 *~ 0.99;
+#X text 126 573 <<< period range between 2-12ms;
+#X text 151 505 to set period (or 'length of string');
+#X text 36 55 This is an example of simple 'Karplus Strong' synthesis
+;
+#X text 36 69 which produces a sound resembling a plucked string by
+;
+#X text 36 84 feeding the filtered output of a delay line back into
+;
+#X text 36 98 itself. Here we use the left audio input as an excitation
+;
+#X text 36 112 mechanism for the string. Try connecting a piezo to
+bela's;
+#X text 36 126 audio input and tapping against it. The first analog
+input;
+#X text 36 140 sets the length of the string.;
+#X text 485 15 ............................;
+#X text 485 25 . ____ ._____ _ .......___ .;
+#X text 485 35 .| __ )| ____| |....../ _ |.;
+#X text 485 55 .| |_) | |___| |___ / ___ |.;
+#X text 485 65 .|____/|_____|_____/_/..._|.io;
+#X text 485 75 ............................;
+#X text 485 45 .| __ || __|.| |...../ _| |.;
+#X obj 40 307 gate-xfer 0.1;
+#X text 116 234 <<< use piezo or microphone on left audio channel;
+#X text 140 248 (you can even try hooking up an accelerometer...);
+#X text 37 200 ----------------;
+#X text 37 429 ------------;
 #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 15 0;
-#X connect 6 0 15 1;
+#X connect 3 0 0 0;
+#X connect 3 0 0 1;
+#X connect 4 0 23 0;
+#X connect 6 0 40 0;
 #X connect 7 0 8 0;
-#X connect 8 0 14 0;
-#X connect 8 0 14 1;
-#X connect 9 0 13 0;
-#X connect 10 0 0 1;
-#X connect 10 0 1 0;
-#X connect 12 0 5 1;
-#X connect 12 0 7 1;
-#X connect 13 0 10 0;
-#X connect 13 1 11 0;
-#X connect 14 0 0 0;
-#X connect 15 0 16 0;
-#X connect 16 0 0 0;
-#X restore 26 217 pd generate-xfer;
-#X text 58 196 <<< threshold;
-#X obj 26 173 loadbang;
-#X msg 26 195 0.1;
-#X connect 1 0 2 0;
-#X connect 2 0 3 0;
-#X connect 3 0 4 0;
-#X connect 4 0 5 0;
-#X connect 5 0 6 0;
 #X connect 9 0 10 0;
-#X connect 10 0 7 0;
-#X restore 38 137 pd gate;
-#X obj 38 246 adc~ 10;
-#X text 98 137 <<< thresholding to remove any consistent noise in the
-excitation signal;
-#X connect 6 0 7 0;
-#X connect 6 0 0 0;
-#X connect 6 0 0 1;
-#X connect 7 0 8 0;
-#X connect 8 0 9 0;
-#X connect 10 0 11 0;
-#X connect 11 0 23 0;
-#X connect 12 0 13 0;
-#X connect 14 0 15 0;
-#X connect 15 0 6 0;
-#X connect 23 0 13 0;
-#X connect 24 0 14 0;
-#X connect 24 0 14 1;
+#X connect 10 0 21 0;
+#X connect 17 0 6 0;
+#X connect 18 0 19 0;
+#X connect 19 0 9 1;
+#X connect 19 0 9 0;
+#X connect 20 0 19 1;
+#X connect 21 0 3 0;
+#X connect 23 0 5 0;
+#X connect 40 0 8 0;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/08-PureData/karplusStrong/gate-xfer.pd	Thu Jun 23 21:24:45 2016 +0100
@@ -0,0 +1,212 @@
+#N canvas 0 22 470 353 10;
+#N canvas 0 22 450 278 (subpatch) 0;
+#X array \$0-xfer 1024 float 3;
+#A 0 0 -0.998047 -0.994148 -0.990257 -0.986374 -0.982498 -0.97863 -0.97477
+-0.970917 -0.967072 -0.963234 -0.959404 -0.955582 -0.951767 -0.94796
+-0.94416 -0.940369 -0.936584 -0.932808 -0.929039 -0.925278 -0.921524
+-0.917778 -0.91404 -0.910309 -0.906586 -0.90287 -0.899162 -0.895462
+-0.891769 -0.888084 -0.884407 -0.880737 -0.877075 -0.873421 -0.869774
+-0.866135 -0.862503 -0.858879 -0.855263 -0.851654 -0.848053 -0.84446
+-0.840874 -0.837296 -0.833725 -0.830162 -0.826607 -0.823059 -0.819519
+-0.815987 -0.812462 -0.808945 -0.805435 -0.801933 -0.798439 -0.794952
+-0.791473 -0.788002 -0.784538 -0.781082 -0.777634 -0.774193 -0.77076
+-0.767334 -0.763916 -0.760506 -0.757103 -0.753708 -0.75032 -0.746941
+-0.743568 -0.740204 -0.736847 -0.733498 -0.730156 -0.726822 -0.723495
+-0.720177 -0.716866 -0.713562 -0.710266 -0.706978 -0.703697 -0.700424
+-0.697159 -0.693901 -0.690651 -0.687408 -0.684174 -0.680946 -0.677727
+-0.674515 -0.67131 -0.668114 -0.664925 -0.661743 -0.658569 -0.655403
+-0.652245 -0.649094 -0.64595 -0.642815 -0.639687 -0.636566 -0.633453
+-0.630348 -0.627251 -0.624161 -0.621078 -0.618004 -0.614937 -0.611877
+-0.608826 -0.605782 -0.602745 -0.599716 -0.596695 -0.593681 -0.590675
+-0.587677 -0.584686 -0.581703 -0.578728 -0.57576 -0.5728 -0.569847
+-0.566902 -0.563965 -0.561035 -0.558113 -0.555199 -0.552292 -0.549393
+-0.546501 -0.543617 -0.540741 -0.537872 -0.535011 -0.532158 -0.529312
+-0.526474 -0.523643 -0.520821 -0.518005 -0.515198 -0.512398 -0.509605
+-0.506821 -0.504044 -0.501274 -0.498512 -0.495758 -0.493011 -0.490273
+-0.487541 -0.484818 -0.482101 -0.479393 -0.476692 -0.473999 -0.471313
+-0.468636 -0.465965 -0.463303 -0.460648 -0.458 -0.45536 -0.452728 -0.450104
+-0.447487 -0.444878 -0.442276 -0.439682 -0.437096 -0.434517 -0.431946
+-0.429382 -0.426826 -0.424278 -0.421738 -0.419205 -0.416679 -0.414162
+-0.411652 -0.409149 -0.406654 -0.404167 -0.401688 -0.399216 -0.396751
+-0.394295 -0.391846 -0.389404 -0.386971 -0.384544 -0.382126 -0.379715
+-0.377312 -0.374916 -0.372528 -0.370148 -0.367775 -0.36541 -0.363052
+-0.360703 -0.35836 -0.356026 -0.353699 -0.351379 -0.349068 -0.346764
+-0.344467 -0.342178 -0.339897 -0.337624 -0.335358 -0.333099 -0.330849
+-0.328606 -0.32637 -0.324142 -0.321922 -0.31971 -0.317505 -0.315308
+-0.313118 -0.310936 -0.308762 -0.306595 -0.304436 -0.302284 -0.30014
+-0.298004 -0.295876 -0.293755 -0.291641 -0.289536 -0.287437 -0.285347
+-0.283264 -0.281189 -0.279121 -0.277061 -0.275009 -0.272964 -0.270927
+-0.268898 -0.266876 -0.264862 -0.262856 -0.260857 -0.258865 -0.256882
+-0.254906 -0.252937 -0.250977 -0.249023 -0.247078 -0.24514 -0.24321
+-0.241287 -0.239372 -0.237465 -0.235565 -0.233673 -0.231789 -0.229912
+-0.228043 -0.226181 -0.224327 -0.222481 -0.220642 -0.218811 -0.216988
+-0.215172 -0.213364 -0.211563 -0.20977 -0.207985 -0.206207 -0.204437
+-0.202675 -0.20092 -0.199173 -0.197433 -0.195702 -0.193977 -0.192261
+-0.190552 -0.18885 -0.187157 -0.185471 -0.183792 -0.182121 -0.180458
+-0.178802 -0.177155 -0.175514 -0.173882 -0.172256 -0.170639 -0.169029
+-0.167427 -0.165833 -0.164246 -0.162666 -0.161095 -0.159531 -0.157974
+-0.156425 -0.154884 -0.153351 -0.151825 -0.150307 -0.148796 -0.147293
+-0.145798 -0.14431 -0.14283 -0.141357 -0.139893 -0.138435 -0.136986
+-0.135544 -0.134109 -0.132683 -0.131264 -0.129852 -0.128448 -0.127052
+-0.125664 -0.124283 -0.12291 -0.121544 -0.120186 -0.118835 -0.117493
+-0.116158 -0.11483 -0.11351 -0.112198 -0.110893 -0.109596 -0.108307
+-0.107025 -0.105751 -0.104485 -0.103226 -0.101974 -0.100731 -0.0994949
+-0.0982666 -0.0970459 -0.0958328 -0.0946274 -0.0934296 -0.0922394 -0.0910568
+-0.0898819 -0.0887146 -0.0875549 -0.0864029 -0.0852585 -0.0841217 -0.0829926
+-0.081871 -0.0807571 -0.0796509 -0.0785522 -0.0774612 -0.0763779 -0.0753021
+-0.074234 -0.0731735 -0.0721207 -0.0710754 -0.0700378 -0.0690079 -0.0679855
+-0.0669708 -0.0659637 -0.0649643 -0.0639725 -0.0629883 -0.0620117 -0.0610428
+-0.0600815 -0.0591278 -0.0581818 -0.0572433 -0.0563126 -0.0553894 -0.0544739
+-0.053566 -0.0526657 -0.0517731 -0.0508881 -0.0500107 -0.0491409 -0.0482788
+-0.0474243 -0.0465775 -0.0457382 -0.0449066 -0.0440826 -0.0432663 -0.0424576
+-0.0416565 -0.040863 -0.0400772 -0.039299 -0.0385284 -0.0377655 -0.0370102
+-0.0362625 -0.0355225 -0.03479 -0.0340652 -0.0333481 -0.0326385 -0.0319366
+-0.0312424 -0.0305557 -0.0298767 -0.0292053 -0.0285416 -0.0278854 -0.0272369
+-0.0265961 -0.0259628 -0.0253372 -0.0247192 -0.0241089 -0.0235062 -0.0229111
+-0.0223236 -0.0217438 -0.0211716 -0.020607 -0.02005 -0.0195007 -0.018959
+-0.018425 -0.0178986 -0.0173798 -0.0168686 -0.0163651 -0.0158691 -0.0153809
+-0.0149002 -0.0144272 -0.0139618 -0.013504 -0.0130539 -0.0126114 -0.0121765
+-0.0117493 -0.0113297 -0.0109177 -0.0105133 -0.0101166 -0.00972748
+-0.00934601 -0.00897217 -0.00860596 -0.00824738 -0.00789642 -0.0075531
+-0.00721741 -0.00688934 -0.00656891 -0.0062561 -0.00595093 -0.00565338
+-0.00536346 -0.00508118 -0.00480652 -0.00453949 -0.00428009 -0.00402832
+-0.00378418 -0.00354767 -0.00331879 -0.00309753 -0.00288391 -0.00267792
+-0.00247955 -0.00228882 -0.00210571 -0.00193024 -0.00176239 -0.00160217
+-0.00144958 -0.00130463 -0.0011673 -0.0010376 -0.000915527 -0.000801086
+-0.000694275 -0.000595093 -0.00050354 -0.000419617 -0.000343323 -0.000274658
+-0.000213623 -0.000160217 -0.000114441 -7.62939e-05 -4.57764e-05 -2.28882e-05
+-7.62939e-06 0 0 7.62939e-06 2.28882e-05 4.57764e-05 7.62939e-05 0.000114441
+0.000160217 0.000213623 0.000274658 0.000343323 0.000419617 0.00050354
+0.000595093 0.000694275 0.000801086 0.000915527 0.0010376 0.0011673
+0.00130463 0.00144958 0.00160217 0.00176239 0.00193024 0.00210571 0.00228882
+0.00247955 0.00267792 0.00288391 0.00309753 0.00331879 0.00354767 0.00378418
+0.00402832 0.00428009 0.00453949 0.00480652 0.00508118 0.00536346 0.00565338
+0.00595093 0.0062561 0.00656891 0.00688934 0.00721741 0.0075531 0.00789642
+0.00824738 0.00860596 0.00897217 0.00934601 0.00972748 0.0101166 0.0105133
+0.0109177 0.0113297 0.0117493 0.0121765 0.0126114 0.0130539 0.013504
+0.0139618 0.0144272 0.0149002 0.0153809 0.0158691 0.0163651 0.0168686
+0.0173798 0.0178986 0.018425 0.018959 0.0195007 0.02005 0.020607 0.0211716
+0.0217438 0.0223236 0.0229111 0.0235062 0.0241089 0.0247192 0.0253372
+0.0259628 0.0265961 0.0272369 0.0278854 0.0285416 0.0292053 0.0298767
+0.0305557 0.0312424 0.0319366 0.0326385 0.0333481 0.0340652 0.03479
+0.0355225 0.0362625 0.0370102 0.0377655 0.0385284 0.039299 0.0400772
+0.040863 0.0416565 0.0424576 0.0432663 0.0440826 0.0449066 0.0457382
+0.0465775 0.0474243 0.0482788 0.0491409 0.0500107 0.0508881 0.0517731
+0.0526657 0.053566 0.0544739 0.0553894 0.0563126 0.0572433 0.0581818
+0.0591278 0.0600815 0.0610428 0.0620117 0.0629883 0.0639725 0.0649643
+0.0659637 0.0669708 0.0679855 0.0690079 0.0700378 0.0710754 0.0721207
+0.0731735 0.074234 0.0753021 0.0763779 0.0774612 0.0785522 0.0796509
+0.0807571 0.081871 0.0829926 0.0841217 0.0852585 0.0864029 0.0875549
+0.0887146 0.0898819 0.0910568 0.0922394 0.0934296 0.0946274 0.0958328
+0.0970459 0.0982666 0.0994949 0.100731 0.101974 0.103226 0.104485 0.105751
+0.107025 0.108307 0.109596 0.110893 0.112198 0.11351 0.11483 0.116158
+0.117493 0.118835 0.120186 0.121544 0.12291 0.124283 0.125664 0.127052
+0.128448 0.129852 0.131264 0.132683 0.134109 0.135544 0.136986 0.138435
+0.139893 0.141357 0.14283 0.14431 0.145798 0.147293 0.148796 0.150307
+0.151825 0.153351 0.154884 0.156425 0.157974 0.159531 0.161095 0.162666
+0.164246 0.165833 0.167427 0.169029 0.170639 0.172256 0.173882 0.175514
+0.177155 0.178802 0.180458 0.182121 0.183792 0.185471 0.187157 0.18885
+0.190552 0.192261 0.193977 0.195702 0.197433 0.199173 0.20092 0.202675
+0.204437 0.206207 0.207985 0.20977 0.211563 0.213364 0.215172 0.216988
+0.218811 0.220642 0.222481 0.224327 0.226181 0.228043 0.229912 0.231789
+0.233673 0.235565 0.237465 0.239372 0.241287 0.24321 0.24514 0.247078
+0.249023 0.250977 0.252937 0.254906 0.256882 0.258865 0.260857 0.262856
+0.264862 0.266876 0.268898 0.270927 0.272964 0.275009 0.277061 0.279121
+0.281189 0.283264 0.285347 0.287437 0.289536 0.291641 0.293755 0.295876
+0.298004 0.30014 0.302284 0.304436 0.306595 0.308762 0.310936 0.313118
+0.315308 0.317505 0.31971 0.321922 0.324142 0.32637 0.328606 0.330849
+0.333099 0.335358 0.337624 0.339897 0.342178 0.344467 0.346764 0.349068
+0.351379 0.353699 0.356026 0.35836 0.360703 0.363052 0.36541 0.367775
+0.370148 0.372528 0.374916 0.377312 0.379715 0.382126 0.384544 0.386971
+0.389404 0.391846 0.394295 0.396751 0.399216 0.401688 0.404167 0.406654
+0.409149 0.411652 0.414162 0.416679 0.419205 0.421738 0.424278 0.426826
+0.429382 0.431946 0.434517 0.437096 0.439682 0.442276 0.444878 0.447487
+0.450104 0.452728 0.45536 0.458 0.460648 0.463303 0.465965 0.468636
+0.471313 0.473999 0.476692 0.479393 0.482101 0.484818 0.487541 0.490273
+0.493011 0.495758 0.498512 0.501274 0.504044 0.506821 0.509605 0.512398
+0.515198 0.518005 0.520821 0.523643 0.526474 0.529312 0.532158 0.535011
+0.537872 0.540741 0.543617 0.546501 0.549393 0.552292 0.555199 0.558113
+0.561035 0.563965 0.566902 0.569847 0.5728 0.57576 0.578728 0.581703
+0.584686 0.587677 0.590675 0.593681 0.596695 0.599716 0.602745 0.605782
+0.608826 0.611877 0.614937 0.618004 0.621078 0.624161 0.627251 0.630348
+0.633453 0.636566 0.639687 0.642815 0.64595 0.649094 0.652245 0.655403
+0.658569 0.661743 0.664925 0.668114 0.67131 0.674515 0.677727 0.680946
+0.684174 0.687408 0.690651 0.693901 0.697159 0.700424 0.703697 0.706978
+0.710266 0.713562 0.716866 0.720177 0.723495 0.726822 0.730156 0.733498
+0.736847 0.740204 0.743568 0.746941 0.75032 0.753708 0.757103 0.760506
+0.763916 0.767334 0.77076 0.774193 0.777634 0.781082 0.784538 0.788002
+0.791473 0.794952 0.798439 0.801933 0.805435 0.808945 0.812462 0.815987
+0.819519 0.823059 0.826607 0.830162 0.833725 0.837296 0.840874 0.84446
+0.848053 0.851654 0.855263 0.858879 0.862503 0.866135 0.869774 0.873421
+0.877075 0.880737 0.884407 0.888084 0.891769 0.895462 0.899162 0.90287
+;
+#A 1000 0.906586 0.910309 0.91404 0.917778 0.921524 0.925278 0.929039
+0.932808 0.936584 0.940369 0.94416 0.94796 0.951767 0.955582 0.959404
+0.963234 0.967072 0.970917 0.97477 0.97863 0.982498 0.986374 0.990257
+0.994148;
+#X coords 0 1 1023 -1 200 200 1 0 0;
+#X restore 230 114 graph;
+#X obj 25 107 inlet~;
+#X obj 25 129 clip~ -1 1;
+#X obj 25 151 *~ 512;
+#X obj 25 173 +~ 512;
+#X obj 25 195 tabread4~ \$0-xfer;
+#X obj 25 217 outlet~;
+#N canvas 0 22 334 332 generate-xfer 0;
+#X obj 8 290 tabwrite \$0-xfer;
+#X obj 8 109 / 1024;
+#X obj 8 129 * 2;
+#X obj 8 149 - 1;
+#X obj 8 169 moses 0;
+#X obj 8 191 + 0.1;
+#X obj 8 213 clip -1 0;
+#X obj 68 191 - 0.1;
+#X obj 68 213 clip 0 1;
+#X obj 101 16 inlet threshold;
+#X obj 101 78 count 1024;
+#X obj 128 58 s \$0-thresh;
+#X obj 95 169 r \$0-thresh;
+#X obj 101 38 t b f;
+#X obj 68 236 *;
+#X obj 8 236 *;
+#X obj 8 258 * -1;
+#X text 140 203 <<< deadzone;
+#X text 140 253 <<< smooth by taking exponent;
+#X connect 1 0 2 0;
+#X connect 2 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 15 0;
+#X connect 6 0 15 1;
+#X connect 7 0 8 0;
+#X connect 8 0 14 0;
+#X connect 8 0 14 1;
+#X connect 9 0 13 0;
+#X connect 10 0 0 1;
+#X connect 10 0 1 0;
+#X connect 12 0 5 1;
+#X connect 12 0 7 1;
+#X connect 13 0 10 0;
+#X connect 13 1 11 0;
+#X connect 14 0 0 0;
+#X connect 15 0 16 0;
+#X connect 16 0 0 0;
+#X restore 26 297 pd generate-xfer;
+#X text 78 276 <<< threshold;
+#X obj 26 253 loadbang;
+#X obj 26 275 f \$1;
+#X text 26 20 This abstraction feeds the input signal through a transfer
+;
+#X obj 103 254 inlet;
+#X text 26 47 set threshold;
+#X text 26 33 function attenuating the signal at values below the;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 4 0 5 0;
+#X connect 5 0 6 0;
+#X connect 9 0 10 0;
+#X connect 10 0 7 0;
+#X connect 12 0 10 1;
--- a/examples/08-PureData/midi-poly-synth/_main.pd	Thu Jun 23 21:23:27 2016 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,186 +0,0 @@
-#N canvas 8 23 1272 752 10;
-#X text 39 1 Hello world!;
-#X text 1003 636 ---------------------------------;
-#X text 1003 626 @krighxz / BELA / heavy / 12/2015;
-#X text 1027 645 beaglert.cc / enzienaudio.com;
-#X text 306 61 [pgmin];
-#X text 416 31 [ctlin];
-#X text 825 28 [notein];
-#X text 228 32 <== the bela equivalent of ==>;
-#X text 116 61 <== the bela equivalent of ==>;
-#X obj 740 28 bela_notein 0;
-#X obj 740 57 pack 0 0;
-#X obj 740 106 pack 0 0 0;
-#X obj 596 976 dac~ 1 2;
-#X obj 646 178 s voice-note-1;
-#X obj 736 178 s voice-note-2;
-#X obj 826 178 s voice-note-3;
-#X obj 916 178 s voice-note-4;
-#X obj 594 252 catch~ output;
-#X obj 541 57 voice 1;
-#X obj 1150 21 loadbang;
-#X obj 1150 43 metro 10;
-#X obj 1150 65 s metro;
-#X obj 944 336 * 1000;
-#X obj 1036 392 s Q;
-#X obj 944 381 s attack;
-#X obj 1036 336 * 8000;
-#X obj 1036 365 + 200;
-#X obj 1116 379 s~ wobble;
-#X obj 944 358 + 5;
-#X obj 1116 336 *~ 25;
-#X obj 629 334 r Q;
-#X obj 594 309 *~ 1;
-#X obj 981 565 clip~ 0 0.999;
-#X obj 836 610 *~;
-#X obj 740 128 route 1 2 3 4, f 36;
-#X obj 836 509 +~ 100;
-#X obj 836 485 *~ 1900;
-#X obj 624 651 delwrite~ ddd 2000;
-#X obj 740 84 poly 4 1;
-#X obj 664 729 *~ 0.5;
-#X obj 598 730 *~ 0.5;
-#X obj 597 757 hip~ 5;
-#X obj 624 558 hip~ 5;
-#X obj 624 580 hv_tanh;
-#X obj 836 667 hip~ 5;
-#X obj 836 689 hv_tanh;
-#X obj 836 566 delread~ ddd 500;
-#N canvas 0 22 178 130 snapshot 0;
-#X obj 24 20 inlet~;
-#X obj 24 62 snapshot~;
-#X obj 24 84 outlet;
-#X obj 86 29 r metro;
-#X connect 0 0 1 0;
-#X connect 1 0 2 0;
-#X connect 3 0 1 0;
-#X restore 846 538 pd snapshot;
-#X obj 78 173 bela_ctlin 1 0;
-#X obj 159 203 s c1;
-#X obj 41 61 bela_pgmin 0;
-#X obj 78 233 bela_ctlin 2 0;
-#X obj 159 263 s c2;
-#X obj 78 293 bela_ctlin 3 0;
-#X obj 159 323 s c3;
-#X obj 78 353 bela_ctlin 4 0;
-#X obj 159 383 s c4;
-#X obj 498 731 r c1;
-#X obj 498 753 / 127;
-#X obj 943 311 / 127;
-#X obj 943 289 r c2;
-#X obj 1033 311 / 127;
-#X obj 1033 289 r c3;
-#X obj 1115 291 / 127;
-#X obj 1115 269 r c4;
-#X obj 1115 313 sig~;
-#X obj 78 413 bela_ctlin 5 0;
-#X obj 159 443 s c5;
-#X obj 78 473 bela_ctlin 6 0;
-#X obj 159 503 s c6;
-#X obj 828 407 / 127;
-#X obj 828 429 sig~;
-#X obj 828 385 r c5;
-#X obj 981 519 / 127;
-#X obj 981 541 sig~;
-#X obj 981 497 r c6;
-#X obj 593 389 *~ 0.5;
-#X obj 777 562 vd~ ddd;
-#X obj 597 784 hv_tanh;
-#X obj 597 818 *~;
-#X obj 593 360 lop~ 1000;
-#X obj 828 458 lop~ 10;
-#X obj 78 533 bela_ctlin 7 0;
-#X obj 159 563 s c7;
-#X obj 78 593 bela_ctlin 8 0;
-#X obj 159 623 s c8;
-#X obj 664 769 loadbang;
-#X msg 665 792 0.75;
-#X obj 1116 456 * 8000;
-#X obj 1116 485 + 200;
-#X obj 1113 431 / 127;
-#X obj 1113 409 r c7;
-#X obj 1116 512 s QP;
-#X obj 653 850 lop~ 8000;
-#X obj 1065 725 r c8;
-#X obj 689 824 r QP;
-#X obj 1065 750 / 127;
-#X obj 1065 772 s octVol;
-#X obj 541 77 voice 2;
-#X obj 541 97 voice 3;
-#X obj 541 117 voice 4;
-#X connect 9 0 10 0;
-#X connect 9 1 10 1;
-#X connect 10 0 38 0;
-#X connect 11 0 34 0;
-#X connect 17 0 31 0;
-#X connect 19 0 20 0;
-#X connect 20 0 21 0;
-#X connect 22 0 28 0;
-#X connect 25 0 26 0;
-#X connect 26 0 23 0;
-#X connect 28 0 24 0;
-#X connect 29 0 27 0;
-#X connect 30 0 80 1;
-#X connect 31 0 80 0;
-#X connect 32 0 33 1;
-#X connect 33 0 39 0;
-#X connect 33 0 44 0;
-#X connect 34 0 13 0;
-#X connect 34 1 14 0;
-#X connect 34 2 15 0;
-#X connect 34 3 16 0;
-#X connect 35 0 47 0;
-#X connect 35 0 77 0;
-#X connect 36 0 35 0;
-#X connect 38 0 11 0;
-#X connect 38 1 11 1;
-#X connect 38 2 11 2;
-#X connect 39 0 41 0;
-#X connect 40 0 41 0;
-#X connect 41 0 78 0;
-#X connect 42 0 43 0;
-#X connect 43 0 37 0;
-#X connect 44 0 45 0;
-#X connect 45 0 37 0;
-#X connect 47 0 46 0;
-#X connect 48 0 49 0;
-#X connect 51 0 52 0;
-#X connect 53 0 54 0;
-#X connect 55 0 56 0;
-#X connect 57 0 58 0;
-#X connect 58 0 79 1;
-#X connect 59 0 22 0;
-#X connect 60 0 59 0;
-#X connect 61 0 25 0;
-#X connect 62 0 61 0;
-#X connect 63 0 65 0;
-#X connect 64 0 63 0;
-#X connect 65 0 29 0;
-#X connect 66 0 67 0;
-#X connect 68 0 69 0;
-#X connect 70 0 71 0;
-#X connect 71 0 81 0;
-#X connect 72 0 70 0;
-#X connect 73 0 74 0;
-#X connect 74 0 32 0;
-#X connect 75 0 73 0;
-#X connect 76 0 40 0;
-#X connect 76 0 42 0;
-#X connect 77 0 33 0;
-#X connect 78 0 79 0;
-#X connect 79 0 93 0;
-#X connect 80 0 76 0;
-#X connect 81 0 36 0;
-#X connect 82 0 83 0;
-#X connect 84 0 85 0;
-#X connect 86 0 87 0;
-#X connect 87 0 79 1;
-#X connect 88 0 89 0;
-#X connect 89 0 92 0;
-#X connect 90 0 88 0;
-#X connect 91 0 90 0;
-#X connect 93 0 12 0;
-#X connect 93 0 12 1;
-#X connect 94 0 96 0;
-#X connect 95 0 93 1;
-#X connect 96 0 97 0;
--- a/examples/08-PureData/midi-poly-synth/backmain.pd	Thu Jun 23 21:23:27 2016 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,79 +0,0 @@
-#N canvas 85 58 1280 685 10;
-#X obj 19 396 dac~ 1 2;
-#X text 39 1 Hello world!;
-#X text 37 11 ============;
-#X obj 31 353 *~ 0.1;
-#X text 202 448 ---------------------------------;
-#X text 202 438 @krighxz / BELA / heavy / 12/2015;
-#X text 226 457 beaglert.cc / enzienaudio.com;
-#X obj 39 132 mtof;
-#X floatatom 79 59 5 0 0 0 - - -, f 5;
-#X floatatom 122 59 5 0 0 0 - - -, f 5;
-#X floatatom 41 63 5 0 0 0 - - -, f 5;
-#X obj 26 170 phasor~ 440;
-#X text 100 363 (the harsh sound of success);
-#X obj 260 83 * 20;
-#X obj 261 112 + 200;
-#X obj 132 85 loadbang;
-#X msg 131 111 1000;
-#X obj 125 166 sig~;
-#X text 673 121 [pgmin];
-#X obj 218 178 * 10;
-#X obj 30 250 hip~;
-#X obj 26 275 hip~;
-#X obj 20 302 hip~;
-#X obj 19 323 hip~;
-#X obj 87 192 lop~ 4;
-#X obj 152 256 line;
-#X obj 200 200 + 50;
-#X msg 170 227 \$1 200;
-#X msg 93 114 0;
-#X msg 185 112 0;
-#X obj 29 224 vcf~ 4;
-#X obj 70 333 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
-1;
-#X obj 42 92 mono;
-#X obj 40 28 bela_notein 0;
-#X obj 260 60 bela_ctlin 5 0;
-#X obj 220 151 bela_ctlin 6 0;
-#X obj 408 121 bela_pgmin 3;
-#X text 537 58 [ctlin];
-#X text 332 27 [notein];
-#X text 140 29 <== the bela equivalent of ==>;
-#X text 349 59 <== the bela equivalent of ==>;
-#X text 483 121 <== the bela equivalent of ==>;
-#X connect 3 0 0 1;
-#X connect 3 0 0 0;
-#X connect 7 0 11 0;
-#X connect 8 0 32 1;
-#X connect 10 0 32 0;
-#X connect 11 0 30 0;
-#X connect 13 0 14 0;
-#X connect 14 0 17 0;
-#X connect 15 0 16 0;
-#X connect 15 0 29 0;
-#X connect 15 0 28 0;
-#X connect 16 0 17 0;
-#X connect 17 0 24 0;
-#X connect 19 0 26 0;
-#X connect 20 0 21 0;
-#X connect 21 0 22 0;
-#X connect 22 0 23 0;
-#X connect 23 0 3 0;
-#X connect 24 0 30 1;
-#X connect 25 0 20 1;
-#X connect 25 0 21 1;
-#X connect 25 0 22 1;
-#X connect 25 0 23 1;
-#X connect 26 0 27 0;
-#X connect 27 0 25 0;
-#X connect 29 0 19 0;
-#X connect 30 0 20 0;
-#X connect 31 0 3 1;
-#X connect 32 0 7 0;
-#X connect 32 1 31 0;
-#X connect 33 0 10 0;
-#X connect 33 1 8 0;
-#X connect 33 2 9 0;
-#X connect 34 0 13 0;
-#X connect 35 0 19 0;
--- a/examples/08-PureData/midi-poly-synth/bela_ctlin.pd	Thu Jun 23 21:23:27 2016 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,76 +0,0 @@
-#N canvas 554 204 703 475 10;
-#X obj 53 431 outlet;
-#X obj 108 429 outlet;
-#X obj 99 127 r ctlin;
-#X obj 92 151 unpack f f f;
-#X obj 154 429 outlet;
-#X obj 86 322 spigot;
-#X text 51 450 value;
-#X text 105 450 number;
-#X obj 211 138 loadbang;
-#X obj 177 193 \$1;
-#X obj 126 214 == \$1;
-#X obj 119 299 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
-1;
-#X obj 84 349 unpack f f f;
-#X obj 143 247 ||;
-#X obj 177 217 == 0;
-#X text 70 11 Emulates ctlin \, except number of outlets is fixed.
-;
-#X obj 228 247 ||;
-#X obj 262 217 == 0;
-#X obj 212 214 == \$2;
-#X obj 262 193 \$2;
-#X obj 177 277 &&;
-#X obj 211 163 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
--1 -1;
-#X text 173 299 If (inputController==\$1 || \$1==0) && (inputChannel==\$2
-|| \$2==0);
-#X text 197 52 Known issue: trying to select inputController 0 will
-result i accepting all controllers (because a pd external cannot tell
-the difference between \$1 been explicitely set to 0 and the patch
-not having any argument);
-#X text 162 450 channel;
-#X obj 56 192 pack f f f;
-#X obj 80 408 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
--1;
-#X floatatom 81 382 5 0 0 0 - - -, f 5;
-#X obj 121 412 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
--1 -1;
-#X floatatom 122 386 5 0 0 0 - - -, f 5;
-#X obj 172 406 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
--1 -1;
-#X floatatom 173 380 5 0 0 0 - - -, f 5;
-#X obj 122 92 s ctlin;
-#X obj 64 29 r bela_ctlin;
-#X connect 2 0 3 0;
-#X connect 3 0 25 0;
-#X connect 3 1 10 0;
-#X connect 3 1 25 1;
-#X connect 3 2 18 0;
-#X connect 3 2 25 2;
-#X connect 5 0 12 0;
-#X connect 8 0 21 0;
-#X connect 9 0 14 0;
-#X connect 10 0 13 0;
-#X connect 11 0 5 1;
-#X connect 12 0 0 0;
-#X connect 12 0 27 0;
-#X connect 12 1 1 0;
-#X connect 12 1 29 0;
-#X connect 12 2 4 0;
-#X connect 12 2 31 0;
-#X connect 13 0 20 0;
-#X connect 14 0 13 1;
-#X connect 16 0 20 1;
-#X connect 17 0 16 1;
-#X connect 18 0 16 0;
-#X connect 19 0 17 0;
-#X connect 20 0 11 0;
-#X connect 21 0 9 0;
-#X connect 21 0 19 0;
-#X connect 25 0 5 0;
-#X connect 27 0 26 0;
-#X connect 29 0 28 0;
-#X connect 31 0 30 0;
-#X connect 33 0 32 0;
--- a/examples/08-PureData/midi-poly-synth/bela_notein.pd	Thu Jun 23 21:23:27 2016 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,59 +0,0 @@
-#N canvas 399 23 629 685 10;
-#X obj 94 481 outlet;
-#X obj 165 475 outlet;
-#X obj 141 184 unpack f f f;
-#X obj 221 472 outlet;
-#X obj 143 365 spigot;
-#X obj 268 181 loadbang;
-#X obj 234 236 \$1;
-#X obj 183 257 == \$1;
-#X obj 176 342 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
-1;
-#X obj 143 392 unpack f f f;
-#X obj 200 290 ||;
-#X obj 234 260 == 0;
-#X obj 268 206 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
--1 -1;
-#X text 160 65 Emulates notein \, except number of outlets is fixed.
-;
-#X text 92 499 notenumber;
-#X text 161 489 velocity;
-#X text 220 486 channel;
-#X text 229 311 If (inputChannel==\$1 || \$1==0);
-#X obj 115 232 pack f f f;
-#X obj 82 428 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
--1;
-#X floatatom 84 410 5 0 0 0 - - -, f 5;
-#X obj 145 448 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
--1 -1;
-#X floatatom 147 430 5 0 0 0 - - -, f 5;
-#X obj 198 451 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
--1 -1;
-#X floatatom 200 433 5 0 0 0 - - -, f 5;
-#X obj 131 112 s notein;
-#X obj 140 149 r notein;
-#X obj 135 84 r bela_notein;
-#X connect 2 0 18 0;
-#X connect 2 1 18 1;
-#X connect 2 2 7 0;
-#X connect 2 2 18 2;
-#X connect 4 0 9 0;
-#X connect 5 0 12 0;
-#X connect 6 0 11 0;
-#X connect 7 0 10 0;
-#X connect 8 0 4 1;
-#X connect 9 0 0 0;
-#X connect 9 0 20 0;
-#X connect 9 1 1 0;
-#X connect 9 1 22 0;
-#X connect 9 2 3 0;
-#X connect 9 2 24 0;
-#X connect 10 0 8 0;
-#X connect 11 0 10 1;
-#X connect 12 0 6 0;
-#X connect 18 0 4 0;
-#X connect 20 0 19 0;
-#X connect 22 0 21 0;
-#X connect 24 0 23 0;
-#X connect 26 0 2 0;
-#X connect 27 0 25 0;
--- a/examples/08-PureData/midi-poly-synth/bela_pgmin.pd	Thu Jun 23 21:23:27 2016 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,53 +0,0 @@
-#N canvas 623 197 587 546 10;
-#X obj 73 413 outlet;
-#X obj 174 411 outlet;
-#X obj 106 304 spigot;
-#X obj 197 126 loadbang;
-#X obj 197 175 \$1;
-#X obj 146 196 == \$1;
-#X obj 139 281 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
-1;
-#X obj 163 229 ||;
-#X obj 197 199 == 0;
-#X obj 197 151 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
--1 -1;
-#X obj 89 111 unpack f f;
-#X obj 106 332 unpack f f;
-#X text 52 436 program number;
-#X text 182 432 channel;
-#X text 193 281 If (channel==\$1 || \$1==0);
-#X text 167 45 emulates pgmin except it always has 2 outlets and requires
-the input parameters to be explicitely set. Set them to 0 to avoid
-filtering;
-#X text 262 132 It'd be nicer with [t l l] but have to compensate for
-the fact that it is not supported by heavy;
-#X obj 77 183 pack f f;
-#X floatatom 72 355 5 0 0 0 - - -, f 5;
-#X obj 63 379 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
--1;
-#X floatatom 150 361 5 0 0 0 - - -, f 5;
-#X obj 141 385 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
--1 -1;
-#X obj 91 63 s pgmin;
-#X obj 93 87 r pgmin;
-#X obj 89 42 r bela_pgmin;
-#X connect 2 0 11 0;
-#X connect 3 0 9 0;
-#X connect 4 0 8 0;
-#X connect 5 0 7 0;
-#X connect 6 0 2 1;
-#X connect 7 0 6 0;
-#X connect 8 0 7 1;
-#X connect 9 0 4 0;
-#X connect 10 0 17 0;
-#X connect 10 1 5 0;
-#X connect 10 1 17 1;
-#X connect 11 0 0 0;
-#X connect 11 0 18 0;
-#X connect 11 1 1 0;
-#X connect 11 1 20 0;
-#X connect 17 0 2 0;
-#X connect 18 0 19 0;
-#X connect 20 0 21 0;
-#X connect 23 0 10 0;
-#X connect 24 0 22 0;
--- a/examples/08-PureData/midi-poly-synth/countTo.pd	Thu Jun 23 21:23:27 2016 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-#N canvas 584 255 450 300 10;
-#X obj 65 196 outlet;
-#X obj 98 8 inlet;
-#X text 189 49 counts from 0 to the given number -1;
-#X text 214 95 inlet:N;
-#X text 212 112 outlet: 0 \, 1 \, 2 \, ... \, N-1;
-#X obj 143 61 f;
-#X obj 100 138 spigot;
-#X obj 129 89 <;
-#X obj 129 113 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
-1;
-#X obj 95 28 t b f b;
-#X obj 92 74 + 1;
-#X obj 43 73 f;
-#X obj 63 104 t b f f f;
-#X msg 92 53 0;
-#X obj 16 144 delay 0;
-#X connect 1 0 9 0;
-#X connect 5 0 7 1;
-#X connect 6 0 11 0;
-#X connect 7 0 8 0;
-#X connect 8 0 6 1;
-#X connect 9 0 11 0;
-#X connect 9 1 5 0;
-#X connect 9 1 13 0;
-#X connect 10 0 11 1;
-#X connect 11 0 12 0;
-#X connect 12 0 14 0;
-#X connect 12 1 0 0;
-#X connect 12 2 7 0;
-#X connect 12 3 10 0;
-#X connect 13 0 11 1;
-#X connect 14 0 6 0;
--- a/examples/08-PureData/midi-poly-synth/hv_tanh.pd	Thu Jun 23 21:23:27 2016 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-#N canvas 254 82 445 331 10;
-#X obj 39 37 inlet~;
-#X obj 39 67 clip~ -3 3;
-#X obj 54 107 *~;
-#X obj 39 277 outlet~;
-#X obj 109 107 sig~ 27;
-#X obj 54 147 +~;
-#X obj 54 217 /~;
-#X obj 39 247 *~;
-#X obj 94 147 *~ 9;
-#X obj 94 187 +~;
-#X text 142 177 // http://www.musicdsp.org/showone.php?id=238;
-#X text 140 198 // y = x * (27 + x^2) / (27 + 9*x^2);
-#X text 144 152 // pade-approximation of tanh function;
-#X connect 0 0 1 0;
-#X connect 1 0 2 0;
-#X connect 1 0 2 1;
-#X connect 1 0 7 0;
-#X connect 2 0 5 0;
-#X connect 2 0 8 0;
-#X connect 4 0 5 1;
-#X connect 4 0 9 1;
-#X connect 5 0 6 0;
-#X connect 6 0 7 1;
-#X connect 7 0 3 0;
-#X connect 8 0 9 0;
-#X connect 9 0 6 1;
--- a/examples/08-PureData/midi-poly-synth/maxArray.pd	Thu Jun 23 21:23:27 2016 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,67 +0,0 @@
-#N canvas 464 23 1002 583 10;
-#X obj 224 202 max;
-#X obj 265 200 f;
-#X obj 223 229 change;
-#X obj 223 251 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
--1 -1;
-#X obj 223 271 f;
-#X obj 259 323 f;
-#X obj 187 315 f;
-#X obj 268 282 t b b;
-#X obj 183 364 outlet;
-#X obj 269 379 outlet;
-#X obj 179 17 inlet;
-#X obj 225 177 tabread \$1;
-#X obj 230 88 t f f b;
-#X text 376 37 Finds a maximum value in an array;
-#X text 531 112 \$2 arrayLength;
-#X obj 292 10 inlet;
-#X text 425 146 inlets:;
-#X text 473 144 1 bang to find the maximum;
-#X text 475 157 2 arrayLength;
-#X text 407 90 creation arguments: \$1 arrayName;
-#X obj 246 38 \$2;
-#X obj 202 40 bang;
-#X obj 230 65 f;
-#X obj 224 6 loadbang;
-#X text 444 216 outlets: 1 maximum value;
-#X text 498 231 2 index of the maximum value;
-#X msg 276 141 -1e+15;
-#X obj 222 142 t f f f;
-#X floatatom 158 266 5 0 0 0 - - -, f 5;
-#X obj 332 302 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
--1 -1;
-#X obj 288 253 select 127;
-#X floatatom 301 324 5 0 0 0 - - -, f 5;
-#X text 362 256 heavy does not support the second inlet of select so
-I have to hard code 127 in here;
-#X obj 223 110 countTo;
-#X connect 0 0 1 0;
-#X connect 0 0 2 0;
-#X connect 0 0 6 1;
-#X connect 0 0 28 0;
-#X connect 1 0 0 1;
-#X connect 2 0 3 0;
-#X connect 3 0 4 0;
-#X connect 4 0 5 1;
-#X connect 4 0 31 0;
-#X connect 5 0 9 0;
-#X connect 6 0 8 0;
-#X connect 7 0 6 0;
-#X connect 7 1 5 0;
-#X connect 10 0 21 0;
-#X connect 11 0 0 0;
-#X connect 12 0 33 0;
-#X connect 12 2 26 0;
-#X connect 15 0 22 1;
-#X connect 20 0 22 1;
-#X connect 21 0 22 0;
-#X connect 22 0 12 0;
-#X connect 23 0 20 0;
-#X connect 26 0 0 1;
-#X connect 27 0 30 0;
-#X connect 27 1 11 0;
-#X connect 27 2 4 1;
-#X connect 30 0 7 0;
-#X connect 30 0 29 0;
-#X connect 33 0 27 0;
--- a/examples/08-PureData/midi-poly-synth/mono.pd	Thu Jun 23 21:23:27 2016 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,106 +0,0 @@
-#N canvas 69 182 1020 452 10;
-#N canvas 0 23 450 278 (subpatch) 0;
-#X array \$0-activeNotes 127 float 2;
-#X coords 0 100 127 -1 200 140 1 0 0;
-#X restore 537 25 graph;
-#N canvas 89 91 450 300 resetArray 1;
-#X obj 121 145 tabwrite \$0-activeNotes;
-#X msg 123 115 -0.5;
-#X obj 154 90 t b f;
-#X msg 129 45 128;
-#X obj 103 14 inlet;
-#X text 212 71 countto;
-#X obj 153 69 countTo;
-#X connect 1 0 0 0;
-#X connect 2 0 1 0;
-#X connect 2 1 0 1;
-#X connect 3 0 6 0;
-#X connect 4 0 3 0;
-#X connect 6 0 2 0;
-#X restore 83 49 pd resetArray;
-#X obj 83 3 loadbang;
-#X obj 88 25 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
--1;
-#X obj 39 188 maxArray \$0-activeNotes 128;
-#X obj 183 219 f;
-#X obj 39 237 >= 0;
-#X floatatom 148 313 5 0 0 0 - - -, f 5;
-#X obj 70 262 select 1;
-#X obj 366 87 f;
-#X obj 426 60 f;
-#X text 334 39 note;
-#X text 424 16 velocity;
-#X obj 423 87 > 0;
-#X obj 344 281 tabwrite \$0-activeNotes;
-#X obj 330 207 f;
-#X floatatom 303 178 5 0 0 0 - - -, f 5;
-#X obj 265 163 f;
-#X obj 304 150 + 1;
-#X msg 277 130 -1;
-#X msg 371 207 -0.5;
-#X obj 400 116 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
-1;
-#X obj 367 137 spigot;
-#X obj 447 134 spigot;
-#X obj 460 86 == 0;
-#X obj 470 109 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
-1;
-#X obj 434 163 t b f;
-#X obj 337 60 inlet;
-#X obj 426 32 inlet;
-#X obj 148 350 outlet;
-#X obj 275 89 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
--1;
-#X obj 41 163 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
--1;
-#X obj 363 172 t b f;
-#X obj 334 240 t b f;
-#X text 578 211 pass in velocity/note pairs (velocity first) and obtain
-as an output the most recent note still active;
-#X text 581 268 outlet 2 gate;
-#X obj 330 366 outlet;
-#X text 583 251 outlet 1 most recent note active (-1 otherwise);
-#X text 155 329 most recent note active;
-#X msg 338 338 0;
-#X msg 378 339 1;
-#X connect 2 0 3 0;
-#X connect 3 0 1 0;
-#X connect 3 0 19 0;
-#X connect 4 0 6 0;
-#X connect 4 1 5 1;
-#X connect 5 0 7 0;
-#X connect 5 0 40 0;
-#X connect 6 0 8 0;
-#X connect 7 0 29 0;
-#X connect 8 0 5 0;
-#X connect 8 1 39 0;
-#X connect 9 0 22 0;
-#X connect 9 0 23 0;
-#X connect 10 0 13 0;
-#X connect 10 0 24 0;
-#X connect 13 0 21 0;
-#X connect 15 0 33 0;
-#X connect 16 0 15 1;
-#X connect 17 0 18 0;
-#X connect 18 0 16 0;
-#X connect 18 0 17 1;
-#X connect 19 0 17 1;
-#X connect 20 0 33 0;
-#X connect 21 0 22 1;
-#X connect 22 0 32 0;
-#X connect 23 0 26 0;
-#X connect 24 0 25 0;
-#X connect 25 0 23 1;
-#X connect 26 0 20 0;
-#X connect 26 1 14 1;
-#X connect 27 0 9 0;
-#X connect 28 0 10 0;
-#X connect 28 0 30 0;
-#X connect 30 0 17 0;
-#X connect 31 0 4 0;
-#X connect 32 0 15 0;
-#X connect 32 1 14 1;
-#X connect 33 0 31 0;
-#X connect 33 1 14 0;
-#X connect 39 0 36 0;
-#X connect 40 0 36 0;
--- a/examples/08-PureData/midi-poly-synth/voice.pd	Thu Jun 23 21:23:27 2016 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +0,0 @@
-#N canvas 145 23 388 553 10;
-#X obj 45 25 r voice-note-\$1;
-#X obj 45 47 unpack 0 0;
-#X obj 45 103 mtof;
-#X obj 111 446 *~;
-#X obj 152 367 / 127;
-#X obj 111 500 throw~ output;
-#X obj 152 419 line~;
-#X obj 152 393 pack 0 0;
-#X obj 59 176 phasor~;
-#X obj 129 176 phasor~;
-#X obj 86 304 +~;
-#X obj 197 367 r attack;
-#X obj 137 115 sig~;
-#X obj 137 137 +~;
-#X obj 171 113 r~ wobble;
-#X obj 59 198 *~ 2;
-#X obj 59 220 -~ 1;
-#X obj 129 198 *~ 2;
-#X obj 129 220 -~ 1;
-#X obj 310 280 r octVol;
-#X obj 268 397 osc~;
-#X obj 268 419 *~;
-#X obj 111 371 +~;
-#X obj 123 475 *~ 0.5;
-#X obj 268 364 mtof;
-#X obj 267 323 - 12;
-#X connect 0 0 1 0;
-#X connect 1 0 2 0;
-#X connect 1 0 25 0;
-#X connect 1 1 4 0;
-#X connect 2 0 8 0;
-#X connect 2 0 12 0;
-#X connect 3 0 23 0;
-#X connect 4 0 7 0;
-#X connect 6 0 3 1;
-#X connect 7 0 6 0;
-#X connect 8 0 15 0;
-#X connect 9 0 17 0;
-#X connect 10 0 22 0;
-#X connect 11 0 7 1;
-#X connect 12 0 13 0;
-#X connect 13 0 9 0;
-#X connect 14 0 13 1;
-#X connect 15 0 16 0;
-#X connect 16 0 10 1;
-#X connect 17 0 18 0;
-#X connect 18 0 10 0;
-#X connect 19 0 21 1;
-#X connect 20 0 21 0;
-#X connect 21 0 22 1;
-#X connect 22 0 3 0;
-#X connect 23 0 5 0;
-#X connect 24 0 20 0;
-#X connect 25 0 24 0;
--- a/examples/08-PureData/rubberDuckie/_main.pd	Thu Jun 23 21:23:27 2016 +0100
+++ b/examples/08-PureData/rubberDuckie/_main.pd	Thu Jun 23 21:24:45 2016 +0100
@@ -1,247 +1,84 @@
-#N canvas 275 573 442 207 10;
-#X obj 39 149 dac~ 1 2;
-#X text 218 143 ---------------------------------;
-#X text 218 133 @krighxz / BELA / heavy / 12/2015;
-#X text 242 152 beaglert.cc / enzienaudio.com;
+#N canvas 1363 702 483 627 10;
+#X obj 39 209 dac~ 1 2;
 #X text 35 32 Rubber Duckie;
 #X text 35 42 =============;
-#N canvas 325 86 823 605 duckie 0;
-#X obj 186 510 *~;
-#X obj 306 517 *~;
-#X obj 372 468 noise~;
-#X obj 372 492 bp~ 3000 10;
-#X obj 366 162 abs~;
-#X obj 509 158 sig~ 0;
-#X obj 467 371 +~;
-#X obj 411 210 -~ 0.55;
-#X obj 411 231 /~ 0.2;
-#X obj 411 252 clip~ 0 1;
-#X obj 411 282 *~;
-#X obj 411 308 *~ 1000;
-#X obj 366 334 +~;
-#X obj 366 308 +~ 800;
-#X obj 186 536 *~ 0.2;
-#X obj 366 282 *~ 800;
-#N canvas 568 775 135 226 <~ 0;
-#X obj 20 -43 -~;
-#X obj 20 27 +~ 1e-37;
-#X obj 20 6 clip~ -1e-37 0;
-#X obj 20 -88 inlet~;
-#X obj 64 -87 inlet~;
-#X obj 20 -64 max~;
-#X obj 20 -19 *~ -1;
-#X obj 20 79 outlet~;
-#X obj 20 48 *~ 1e+37;
-#X connect 0 0 6 0;
-#X connect 1 0 8 0;
-#X connect 2 0 1 0;
-#X connect 3 0 5 0;
-#X connect 4 0 0 1;
-#X connect 4 0 5 1;
-#X connect 5 0 0 0;
-#X connect 6 0 2 0;
-#X connect 8 0 7 0;
-#X restore 186 367 pd <~ 0;
-#N canvas 568 775 135 226 <~ 0;
-#X obj 20 -43 -~;
-#X obj 20 27 +~ 1e-37;
-#X obj 20 6 clip~ -1e-37 0;
-#X obj 20 -88 inlet~;
-#X obj 64 -87 inlet~;
-#X obj 20 -64 max~;
-#X obj 20 -19 *~ -1;
-#X obj 20 79 outlet~;
-#X obj 20 48 *~ 1e+37;
-#X connect 0 0 6 0;
-#X connect 1 0 8 0;
-#X connect 2 0 1 0;
-#X connect 3 0 5 0;
-#X connect 4 0 0 1;
-#X connect 4 0 5 1;
-#X connect 5 0 0 0;
-#X connect 6 0 2 0;
-#X connect 8 0 7 0;
-#X restore 482 181 pd <~;
-#X obj 186 428 *~;
-#X obj 225 345 sig~ 1;
-#X obj 186 394 lop~ 10;
-#X text 524 393 << band-limited pulse;
-#X text 10 367 reed stops when overblown >>;
-#X obj 186 460 *~;
-#X obj 186 480 *~;
-#X text 25 470 exp amplitude response >>;
-#X text 537 238 << detune frequency on change of direction;
-#X obj 482 236 *~ -300;
-#X obj 306 485 *~;
-#X obj 306 449 *~ 0.1;
-#X text 448 493 << noise simulates non-oscillating airflow when overblown
+#X text 251 15 ............................;
+#X text 251 25 . ____ ._____ _ .......___ .;
+#X text 251 35 .| __ )| ____| |....../ _ |.;
+#X text 251 55 .| |_) | |___| |___ / ___ |.;
+#X text 251 65 .|____/|_____|_____/_/..._|.io;
+#X text 251 75 ............................;
+#X text 251 45 .| __ || __|.| |...../ _| |.;
+#X obj 39 141 sigdelta;
+#X obj 39 176 duckie;
+#X text 113 176 <<< open this abstraction to see how the model works
 ;
-#X obj 186 561 outlet~;
-#N canvas 58 1286 407 525 pulse 0;
-#X obj 83 340 *~;
-#X obj 83 366 *~;
-#X obj 31 366 sig~ 1;
-#X obj 52 419 /~;
-#X obj 67 393 +~;
-#X text 116 366 X^2;
-#X text 97 396 1+X^2;
-#X text 84 421 1/(1+X^2);
-#X obj 83 317 osc~;
-#X obj 167 320 clip~ 0 999999;
-#X obj 52 483 outlet~;
-#X text 271 218 << tweak all this;
-#X text 25 14 based on F04.waveshaping.pulse.pd;
-#X obj 83 84 /~ 2;
-#X obj 167 148 -~;
-#X obj 167 170 /~ 127;
-#X obj 52 452 hip~ 5;
-#X obj 167 202 *~;
-#X obj 167 232 *~;
-#X obj 167 262 *~;
-#X obj 167 294 *~ 1000;
-#X obj 118 125 sig~ 139;
-#X obj 83 58 inlet~;
-#N canvas 331 1377 215 174 _ftom 0;
-#X obj -482 -776 tabread4~ _ftom;
-#X obj -482 -818 /~ 10000;
-#X obj -482 -797 *~ 256;
-#N canvas 0 23 450 278 (subpatch) 0;
-#X array _ftom 256 float 3;
-#A 0 0 27.0762 39.0762 46.0958 51.0762 54.9394 58.0958 60.7645 63.0762
-65.1153 66.9394 68.5894 70.0958 71.4815 72.7645 73.9589 75.0762 76.1258
-77.1153 78.0514 78.9394 79.784 80.5894 81.359 82.0958 82.8025 83.4815
-84.1349 84.7645 85.372 85.9589 86.5266 87.0762 87.609 88.1258 88.6276
-89.1153 89.5897 90.0514 90.5011 90.9394 91.3669 91.784 92.1914 92.5894
-92.9785 93.359 93.7313 94.0958 94.4528 94.8025 95.1453 95.4815 95.8113
-96.1349 96.4525 96.7645 97.0709 97.372 97.6679 97.9589 98.2451 98.5266
-98.8036 99.0762 99.3446 99.609 99.8693 100.126 100.379 100.628 100.873
-101.115 101.354 101.59 101.822 102.051 102.278 102.501 102.722 102.939
-103.154 103.367 103.577 103.784 103.989 104.191 104.392 104.589 104.785
-104.978 105.17 105.359 105.546 105.731 105.914 106.096 106.275 106.453
-106.629 106.803 106.975 107.145 107.314 107.482 107.647 107.811 107.974
-108.135 108.294 108.453 108.609 108.764 108.918 109.071 109.222 109.372
-109.521 109.668 109.814 109.959 110.103 110.245 110.386 110.527 110.666
-110.804 110.94 111.076 111.211 111.345 111.477 111.609 111.74 111.869
-111.998 112.126 112.253 112.379 112.504 112.628 112.751 112.873 112.995
-113.115 113.235 113.354 113.472 113.59 113.706 113.822 113.937 114.051
-114.165 114.278 114.39 114.501 114.612 114.722 114.831 114.939 115.047
-115.154 115.261 115.367 115.472 115.577 115.681 115.784 115.887 115.989
-116.09 116.191 116.292 116.392 116.491 116.589 116.688 116.785 116.882
-116.978 117.074 117.17 117.265 117.359 117.453 117.546 117.639 117.731
-117.823 117.915 118.005 118.096 118.186 118.275 118.364 118.453 118.541
-118.629 118.716 118.803 118.889 118.975 119.06 119.145 119.23 119.314
-119.398 119.482 119.565 119.647 119.729 119.811 119.893 119.974 120.055
-120.135 120.215 120.294 120.374 120.453 120.531 120.609 120.687 120.764
-120.842 120.918 120.995 121.071 121.147 121.222 121.297 121.372 121.446
-121.521 121.594 121.668 121.741 121.814 121.887 121.959 122.031 122.103
-122.174 122.245 122.316 122.386 122.457 122.527 122.596 122.666 122.735
-122.804 122.872 122.94 123.008;
-#X coords 0 127 256 -12 50 50 1 0 0;
-#X restore -546 -793 graph;
-#X obj -482 -838 clip~ 0 10000;
-#X obj -482 -858 inlet~;
-#X obj -482 -755 outlet~;
-#X text -567 -722 shoddy temp replacement for ftom~;
-#X connect 0 0 6 0;
-#X connect 1 0 2 0;
-#X connect 2 0 0 0;
-#X connect 4 0 1 0;
-#X connect 5 0 4 0;
-#X restore 182 125 pd _ftom;
-#X connect 0 0 1 0;
-#X connect 0 0 1 1;
-#X connect 1 0 4 1;
-#X connect 2 0 3 0;
-#X connect 2 0 4 0;
-#X connect 3 0 16 0;
-#X connect 4 0 3 1;
-#X connect 8 0 0 0;
-#X connect 9 0 0 1;
-#X connect 13 0 8 0;
-#X connect 13 0 23 0;
-#X connect 14 0 15 0;
-#X connect 15 0 17 0;
-#X connect 15 0 17 1;
-#X connect 16 0 10 0;
-#X connect 17 0 18 0;
-#X connect 17 0 18 1;
-#X connect 18 0 19 0;
-#X connect 18 0 19 1;
-#X connect 19 0 20 0;
-#X connect 20 0 9 0;
-#X connect 21 0 14 0;
-#X connect 22 0 13 0;
-#X connect 23 0 14 1;
-#X restore 467 394 pd pulse;
-#X obj 366 105 inlet~;
-#X text 295 104 airflow >>;
-#X text 218 118 ('squeeze pressure');
-#X text 13 20 Sound model of a rubber duckie toy;
-#X text 14 51 Hint: use the differential of a continuous signal as
-input for a realistic response;
-#X text 13 29 ==================================;
-#X obj 366 133 lop~ 0.5;
-#X text 423 132 << airflow resistance;
-#X connect 0 0 14 0;
-#X connect 1 0 14 0;
-#X connect 2 0 3 0;
-#X connect 3 0 1 1;
-#X connect 4 0 7 0;
-#X connect 4 0 15 0;
-#X connect 4 0 29 0;
-#X connect 4 0 18 1;
-#X connect 4 0 16 0;
-#X connect 5 0 17 1;
-#X connect 6 0 32 0;
-#X connect 7 0 8 0;
-#X connect 8 0 9 0;
-#X connect 9 0 10 0;
-#X connect 9 0 10 1;
+#X text 113 141 <<< calculate differential on input signal;
+#X obj 39 107 adc~ 3;
+#X text 113 107 <<< use FSR on analog input 1;
+#X text 53 260 .........................................................
+;
+#X text 53 270 .........................==~~~~..........................
+;
+#X text 53 280 .......................=?+?====~~~.......................
+;
+#X text 53 290 ......................++++==========.....................
+;
+#X text 53 300 .....................??+++++++++=====....................
+;
+#X text 53 310 ....................N???+++...++++====...................
+;
+#X text 53 320 ...................N??????.O8O++++====~..................
+;
+#X text 53 330 ..................??I+==??.DD++++++====..................
+;
+#X text 53 350 .............7\$777$III????=++++++++====..................
+;
+#X text 53 360 .............I$ZZZZ$$I???+?=+????+++===..................
+;
+#X text 53 370 ................ZOZZZZ\$7III???+????++++=..=====..........
+;
+#X text 53 390 ..............\$77II77$$$\$7\$77?II????+===========.........
+;
+#X text 53 400 ................7$$$$$$$$$$IIII????++============........
+;
+#X text 53 410 ..............=+?I7\$7777777IIII???+++============:.......
+;
+#X text 53 430 ...........:????IIIIIIII??????++++++==============.......
+;
+#X text 53 450 ..........????????????++++++++====================~......
+;
+#X text 53 440 ..........~???????????????+++++++++=+============~:......
+;
+#X text 53 460 .........+???????????+++++++++===================~~......
+;
+#X text 53 470 .........+???????????+++++++++++++++++++==========.......
+;
+#X text 53 480 .........+????????????????????????+????++++=======.......
+;
+#X text 53 490 .........:??????????????????????????????++++=====........
+;
+#X text 53 500 ..........???????????????????????????II???+++===:........
+;
+#X text 53 510 ...........?II?????????????IIIIII?I???I???+++++=.........
+;
+#X text 53 530 ..............+777IIIIIIIIIIIIIIIIIIIIIIIII$I+:..........
+;
+#X text 53 520 ............7IIIIII??????IIIIIIIIIIIIIIII????I=:.........
+;
+#X text 53 540 ...............:=?$Z777IIIIIIIIIIIII77ZI+~:..............
+;
+#X text 53 550 ........................::~~~~~~:........................
+;
+#X text 53 560 .........................................................
+;
+#X text 53 340 .............7$$|\\\$7I?????=++++++++++===..................
+;
+#X text 53 420 .............+??I77$||\\\$7777III???++++++============......
+;
+#X text 53 380 ..............7$$$$ZZZOZ$|\$7777?????++++++=+===..........
+;
 #X connect 10 0 11 0;
-#X connect 11 0 12 1;
-#X connect 12 0 6 0;
-#X connect 13 0 12 0;
-#X connect 14 0 31 0;
-#X connect 15 0 13 0;
-#X connect 16 0 20 0;
-#X connect 17 0 27 0;
-#X connect 18 0 23 0;
-#X connect 18 0 23 1;
-#X connect 19 0 16 1;
-#X connect 20 0 18 0;
-#X connect 23 0 24 1;
-#X connect 23 0 24 0;
-#X connect 24 0 0 0;
-#X connect 27 0 6 1;
-#X connect 28 0 1 0;
-#X connect 29 0 28 1;
-#X connect 29 0 28 0;
-#X connect 32 0 0 1;
-#X connect 33 0 39 0;
-#X connect 39 0 4 0;
-#X connect 39 0 17 0;
-#X restore 39 127 pd duckie;
-#X obj 39 77 adc~ 10;
-#N canvas 0 22 504 229 differential 0;
-#X obj 27 80 rzero~ 1;
-#X obj 72 57 sig~ 1;
-#X obj 27 152 *~ 44100;
-#X obj 72 131 samplerate~;
-#X obj 72 110 loadbang;
-#X obj 27 25 inlet~;
-#X obj 27 190 outlet~;
-#X text 84 83 y[n] = x[n] - x[n-1];
-#X text 121 57 <<< heavy currently requires signal input to set coefficient
-;
-#X text 91 151 <<< multiply by samplerate to get velocity;
-#X connect 0 0 2 0;
-#X connect 1 0 0 1;
-#X connect 2 0 6 0;
-#X connect 3 0 2 1;
-#X connect 4 0 3 0;
-#X connect 5 0 0 0;
-#X restore 39 101 pd differential;
-#X connect 6 0 0 0;
-#X connect 6 0 0 1;
-#X connect 7 0 8 0;
-#X connect 8 0 6 0;
+#X connect 11 0 0 0;
+#X connect 11 0 0 1;
+#X connect 14 0 10 0;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/08-PureData/rubberDuckie/duckie.pd	Thu Jun 23 21:24:45 2016 +0100
@@ -0,0 +1,219 @@
+#N canvas 997 707 847 621 10;
+#X obj 186 510 *~;
+#X obj 306 517 *~;
+#X obj 372 468 noise~;
+#X obj 372 492 bp~ 3000 10;
+#X obj 366 162 abs~;
+#X obj 529 158 sig~ 0;
+#X obj 487 371 +~;
+#X obj 431 210 -~ 0.55;
+#X obj 431 231 /~ 0.2;
+#X obj 431 252 clip~ 0 1;
+#X obj 431 282 *~;
+#X obj 431 308 *~ 1000;
+#X obj 366 334 +~;
+#X obj 366 308 +~ 800;
+#X obj 366 282 *~ 800;
+#N canvas 568 775 135 226 <~ 0;
+#X obj 20 -43 -~;
+#X obj 20 27 +~ 1e-37;
+#X obj 20 6 clip~ -1e-37 0;
+#X obj 20 -88 inlet~;
+#X obj 64 -87 inlet~;
+#X obj 20 -64 max~;
+#X obj 20 -19 *~ -1;
+#X obj 20 79 outlet~;
+#X obj 20 48 *~ 1e+37;
+#X connect 0 0 6 0;
+#X connect 1 0 8 0;
+#X connect 2 0 1 0;
+#X connect 3 0 5 0;
+#X connect 4 0 0 1;
+#X connect 4 0 5 1;
+#X connect 5 0 0 0;
+#X connect 6 0 2 0;
+#X connect 8 0 7 0;
+#X restore 186 367 pd <~ 0;
+#N canvas 568 775 135 226 <~ 0;
+#X obj 20 -43 -~;
+#X obj 20 27 +~ 1e-37;
+#X obj 20 6 clip~ -1e-37 0;
+#X obj 20 -88 inlet~;
+#X obj 64 -87 inlet~;
+#X obj 20 -64 max~;
+#X obj 20 -19 *~ -1;
+#X obj 20 79 outlet~;
+#X obj 20 48 *~ 1e+37;
+#X connect 0 0 6 0;
+#X connect 1 0 8 0;
+#X connect 2 0 1 0;
+#X connect 3 0 5 0;
+#X connect 4 0 0 1;
+#X connect 4 0 5 1;
+#X connect 5 0 0 0;
+#X connect 6 0 2 0;
+#X connect 8 0 7 0;
+#X restore 502 181 pd <~;
+#X obj 186 428 *~;
+#X obj 225 345 sig~ 1;
+#X obj 186 394 lop~ 10;
+#X text 573 393 << band-limited pulse;
+#X text 10 367 reed stops when overblown >>;
+#X obj 186 460 *~;
+#X obj 186 480 *~;
+#X text 25 470 exp amplitude response >>;
+#X text 577 211 << detune frequency on change of direction;
+#X obj 502 209 *~ -300;
+#X obj 306 485 *~;
+#X obj 306 449 *~ 0.1;
+#X text 478 493 << noise simulates non-oscillating airflow when overblown
+;
+#X obj 186 580 outlet~;
+#N canvas 219 819 407 525 pulse 0;
+#X obj 83 340 *~;
+#X obj 83 366 *~;
+#X obj 31 366 sig~ 1;
+#X obj 52 419 /~;
+#X obj 67 393 +~;
+#X text 116 366 X^2;
+#X text 97 396 1+X^2;
+#X text 84 421 1/(1+X^2);
+#X obj 83 317 osc~;
+#X obj 167 320 clip~ 0 999999;
+#X obj 52 483 outlet~;
+#X text 271 218 << tweak all this;
+#X text 25 14 based on F04.waveshaping.pulse.pd;
+#X obj 83 84 /~ 2;
+#X obj 167 148 -~;
+#X obj 167 170 /~ 127;
+#X obj 52 452 hip~ 5;
+#X obj 167 202 *~;
+#X obj 167 232 *~;
+#X obj 167 262 *~;
+#X obj 167 294 *~ 1000;
+#X obj 118 125 sig~ 139;
+#X obj 83 58 inlet~;
+#N canvas 331 1377 277 202 _ftom 0;
+#X obj 97 95 tabread4~ _ftom;
+#X obj 97 53 /~ 10000;
+#X obj 97 74 *~ 256;
+#N canvas 0 23 450 278 (subpatch) 0;
+#X array _ftom 256 float 3;
+#A 0 0 27.0762 39.0762 46.0958 51.0762 54.9394 58.0958 60.7645 63.0762
+65.1153 66.9394 68.5894 70.0958 71.4815 72.7645 73.9589 75.0762 76.1258
+77.1153 78.0514 78.9394 79.784 80.5894 81.359 82.0958 82.8025 83.4815
+84.1349 84.7645 85.372 85.9589 86.5266 87.0762 87.609 88.1258 88.6276
+89.1153 89.5897 90.0514 90.5011 90.9394 91.3669 91.784 92.1914 92.5894
+92.9785 93.359 93.7313 94.0958 94.4528 94.8025 95.1453 95.4815 95.8113
+96.1349 96.4525 96.7645 97.0709 97.372 97.6679 97.9589 98.2451 98.5266
+98.8036 99.0762 99.3446 99.609 99.8693 100.126 100.379 100.628 100.873
+101.115 101.354 101.59 101.822 102.051 102.278 102.501 102.722 102.939
+103.154 103.367 103.577 103.784 103.989 104.191 104.392 104.589 104.785
+104.978 105.17 105.359 105.546 105.731 105.914 106.096 106.275 106.453
+106.629 106.803 106.975 107.145 107.314 107.482 107.647 107.811 107.974
+108.135 108.294 108.453 108.609 108.764 108.918 109.071 109.222 109.372
+109.521 109.668 109.814 109.959 110.103 110.245 110.386 110.527 110.666
+110.804 110.94 111.076 111.211 111.345 111.477 111.609 111.74 111.869
+111.998 112.126 112.253 112.379 112.504 112.628 112.751 112.873 112.995
+113.115 113.235 113.354 113.472 113.59 113.706 113.822 113.937 114.051
+114.165 114.278 114.39 114.501 114.612 114.722 114.831 114.939 115.047
+115.154 115.261 115.367 115.472 115.577 115.681 115.784 115.887 115.989
+116.09 116.191 116.292 116.392 116.491 116.589 116.688 116.785 116.882
+116.978 117.074 117.17 117.265 117.359 117.453 117.546 117.639 117.731
+117.823 117.915 118.005 118.096 118.186 118.275 118.364 118.453 118.541
+118.629 118.716 118.803 118.889 118.975 119.06 119.145 119.23 119.314
+119.398 119.482 119.565 119.647 119.729 119.811 119.893 119.974 120.055
+120.135 120.215 120.294 120.374 120.453 120.531 120.609 120.687 120.764
+120.842 120.918 120.995 121.071 121.147 121.222 121.297 121.372 121.446
+121.521 121.594 121.668 121.741 121.814 121.887 121.959 122.031 122.103
+122.174 122.245 122.316 122.386 122.457 122.527 122.596 122.666 122.735
+122.804 122.872 122.94 123.008;
+#X coords 0 127 256 -12 50 50 1 0 0;
+#X restore 33 78 graph;
+#X obj 97 33 clip~ 0 10000;
+#X obj 97 13 inlet~;
+#X obj 97 116 outlet~;
+#X text 12 162 (for heavy compatibility);
+#X text 12 149 (very) shoddy temp replacement for ftom~;
+#X connect 0 0 6 0;
+#X connect 1 0 2 0;
+#X connect 2 0 0 0;
+#X connect 4 0 1 0;
+#X connect 5 0 4 0;
+#X restore 182 125 pd _ftom;
+#X connect 0 0 1 0;
+#X connect 0 0 1 1;
+#X connect 1 0 4 1;
+#X connect 2 0 3 0;
+#X connect 2 0 4 0;
+#X connect 3 0 16 0;
+#X connect 4 0 3 1;
+#X connect 8 0 0 0;
+#X connect 9 0 0 1;
+#X connect 13 0 8 0;
+#X connect 13 0 23 0;
+#X connect 14 0 15 0;
+#X connect 15 0 17 0;
+#X connect 15 0 17 1;
+#X connect 16 0 10 0;
+#X connect 17 0 18 0;
+#X connect 17 0 18 1;
+#X connect 18 0 19 0;
+#X connect 18 0 19 1;
+#X connect 19 0 20 0;
+#X connect 20 0 9 0;
+#X connect 21 0 14 0;
+#X connect 22 0 13 0;
+#X connect 23 0 14 1;
+#X restore 487 394 pd pulse;
+#X obj 366 105 inlet~;
+#X text 295 104 airflow >>;
+#X text 218 118 ('squeeze pressure');
+#X text 13 20 Sound model of a rubber duckie toy;
+#X text 14 51 Hint: use the differential of a continuous signal as
+input for a realistic response;
+#X text 13 29 ==================================;
+#X obj 366 133 lop~ 0.5;
+#X text 443 132 << airflow resistance;
+#X obj 186 536 *~ 1;
+#X obj 186 558 hip~ 10;
+#X text 759 581 @krighxz 2015;
+#X connect 0 0 40 0;
+#X connect 1 0 40 0;
+#X connect 2 0 3 0;
+#X connect 3 0 1 1;
+#X connect 4 0 7 0;
+#X connect 4 0 14 0;
+#X connect 4 0 28 0;
+#X connect 4 0 17 1;
+#X connect 4 0 15 0;
+#X connect 5 0 16 1;
+#X connect 6 0 31 0;
+#X connect 7 0 8 0;
+#X connect 8 0 9 0;
+#X connect 9 0 10 0;
+#X connect 9 0 10 1;
+#X connect 10 0 11 0;
+#X connect 11 0 12 1;
+#X connect 12 0 6 0;
+#X connect 13 0 12 0;
+#X connect 14 0 13 0;
+#X connect 15 0 19 0;
+#X connect 16 0 26 0;
+#X connect 17 0 22 0;
+#X connect 17 0 22 1;
+#X connect 18 0 15 1;
+#X connect 19 0 17 0;
+#X connect 22 0 23 1;
+#X connect 22 0 23 0;
+#X connect 23 0 0 0;
+#X connect 26 0 6 1;
+#X connect 27 0 1 0;
+#X connect 28 0 27 1;
+#X connect 28 0 27 0;
+#X connect 31 0 0 1;
+#X connect 32 0 38 0;
+#X connect 38 0 4 0;
+#X connect 38 0 16 0;
+#X connect 40 0 41 0;
+#X connect 41 0 30 0;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/08-PureData/rubberDuckie/sigdelta.pd	Thu Jun 23 21:24:45 2016 +0100
@@ -0,0 +1,21 @@
+#N canvas 872 646 508 300 10;
+#X obj 27 140 rzero~ 1;
+#X obj 72 117 sig~ 1;
+#X obj 27 212 *~ 44100;
+#X obj 72 191 samplerate~;
+#X obj 72 170 loadbang;
+#X obj 27 85 inlet~;
+#X obj 27 250 outlet~;
+#X text 112 141 y[n] = x[n] - x[n-1];
+#X text 141 117 <<< heavy currently requires signal input to set coefficient
+;
+#X text 111 211 <<< multiply by samplerate to get velocity;
+#X text 28 18 This abstraction calculates the differential from an
+input;
+#X text 28 32 signal.;
+#X connect 0 0 2 0;
+#X connect 1 0 0 1;
+#X connect 2 0 6 0;
+#X connect 3 0 2 1;
+#X connect 4 0 3 0;
+#X connect 5 0 0 0;
--- a/examples/08-PureData/samphold/_main.pd	Thu Jun 23 21:23:27 2016 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,22 +0,0 @@
-#N canvas 275 504 414 247 10;
-#X obj 55 212 dac~ 1 2;
-#X obj 55 171 *~ 0.1;
-#X obj 55 150 osc~ 440;
-#X obj 55 61 noise~;
-#X obj 55 128 samphold~;
-#X text 51 21 ==================;
-#X text 51 11 Sample and hold FM;
-#X obj 55 85 lop~ 1;
-#X obj 122 107 phasor~ 880;
-#X obj 55 107 *~ 1e+06;
-#X text 193 199 ---------------------------------;
-#X text 193 189 @krighxz / BELA / heavy / 12/2015;
-#X text 217 208 beaglert.cc / enzienaudio.com;
-#X connect 1 0 0 1;
-#X connect 1 0 0 0;
-#X connect 2 0 1 0;
-#X connect 3 0 7 0;
-#X connect 4 0 2 0;
-#X connect 7 0 9 0;
-#X connect 8 0 4 1;
-#X connect 9 0 4 0;
--- a/examples/08-PureData/scope/_main.pd	Thu Jun 23 21:23:27 2016 +0100
+++ b/examples/08-PureData/scope/_main.pd	Thu Jun 23 21:24:45 2016 +0100
@@ -1,15 +1,24 @@
-#N canvas 394 368 477 304 10;
-#X text 16 25 ============;
-#X obj 104 239 dac~ 27 28 29 30;
-#X obj 27 186 osc~ 2321;
-#X obj 123 175 osc~ 12;
-#X obj 267 175 noise~;
-#X obj 192 170 phasor~ 10;
+#N canvas 1035 935 404 295 10;
+#X obj 126 235 dac~ 27 28 29 30;
+#X obj 76 201 osc~ 2321;
+#X obj 143 201 osc~ 12;
+#X obj 268 201 noise~;
+#X obj 197 201 phasor~ 10;
 #X text 16 15 Bela Scope;
-#X text 11 46 Make sure the IDE is running ( ./ide.sh start ) and then
-bring up the scope in your browser http://192.168.7.2/scope/ You can
-log to the scope by sending to dac~ 27 to 30;
-#X connect 2 0 1 0;
-#X connect 3 0 1 1;
-#X connect 4 0 1 3;
-#X connect 5 0 1 2;
+#X text 16 25 ==========;
+#X text 16 81 If you're running this example in the Bela IDE \, simply
+click;
+#X text 16 95 the scope icon to see the signals being visualised.;
+#X text 16 43 You can log any signal to the scope by using the DAC~
+;
+#X text 16 57 outputs 27-30;
+#X text 17 117 If using the build scripts or compiled using Heavy \,
+make;
+#X text 16 146 up the scope in your browser http://192.168.7.2/scope/
+;
+#X text 17 132 sure the IDE is running ( ./ide.sh start ) and then
+bring;
+#X connect 1 0 0 0;
+#X connect 2 0 0 1;
+#X connect 3 0 0 3;
+#X connect 4 0 0 2;
--- a/examples/08-PureData/simple-fm/_main.pd	Thu Jun 23 21:23:27 2016 +0100
+++ b/examples/08-PureData/simple-fm/_main.pd	Thu Jun 23 21:24:45 2016 +0100
@@ -1,42 +1,50 @@
-#N canvas 275 573 409 282 10;
-#X obj 37 230 dac~ 1 2;
-#X text 175 222 ---------------------------------;
-#X obj 37 102 *~ 1000;
-#X obj 37 199 *~ 0.1;
-#X obj 37 79 adc~ 3;
-#X obj 65 125 adc~ 4;
-#X obj 94 147 adc~ 5;
-#N canvas 81 574 322 252 FMvoice 1;
-#X obj 20 174 +~;
-#X obj 93 116 osc~;
-#X obj 93 157 *~;
-#X obj 93 76 *~;
-#X obj 158 98 *~;
-#X obj 20 225 outlet~;
-#X obj 20 200 osc~;
-#X obj 20 39 inlet~ freq;
-#X obj 108 39 inlet~ harmRatio~;
-#X obj 173 69 inlet~ modIndex~;
-#X connect 0 0 6 0;
-#X connect 1 0 2 0;
-#X connect 2 0 0 1;
-#X connect 3 0 4 0;
-#X connect 3 0 1 0;
-#X connect 4 0 2 1;
-#X connect 6 0 5 0;
-#X connect 7 0 3 0;
-#X connect 7 0 0 0;
-#X connect 8 0 3 1;
-#X connect 9 0 4 1;
-#X restore 37 169 pd FMvoice;
+#N canvas 1487 943 648 549 10;
+#X obj 36 162 *~ 1000;
+#X obj 36 139 adc~ 3;
+#X obj 154 162 adc~ 4;
+#X obj 293 162 adc~ 5;
 #X text 33 22 Simple FM;
 #X text 33 32 =========;
-#X text 175 212 @krighxz / BELA / heavy / 12/2015;
-#X text 199 231 beaglert.cc / enzienaudio.com;
-#X connect 2 0 7 0;
-#X connect 3 0 0 1;
-#X connect 3 0 0 0;
-#X connect 4 0 2 0;
-#X connect 5 0 7 1;
-#X connect 6 0 7 2;
-#X connect 7 0 3 0;
+#X obj 36 431 +~;
+#X obj 109 373 osc~;
+#X obj 109 414 *~;
+#X obj 109 333 *~;
+#X obj 174 355 *~;
+#X obj 36 457 osc~;
+#X obj 36 513 dac~ 1 2;
+#X obj 36 482 *~ 0.1;
+#X obj 36 267 receive~ frequency;
+#X obj 124 296 receive~ harmonicRatio;
+#X obj 189 326 receive~ modulationIndex;
+#X obj 36 184 send~ frequency;
+#X obj 154 184 send~ harmonicRatio;
+#X obj 293 184 send~ modulationIndex;
+#X text 33 55 Simple frequency modulation synthesis. Use the first
+three;
+#X text 33 69 analog inputs to change frequency \, harmonic ratio and
+;
+#X text 33 83 modulation index.;
+#X text 445 15 ............................;
+#X text 445 25 . ____ ._____ _ .......___ .;
+#X text 445 35 .| __ )| ____| |....../ _ |.;
+#X text 445 55 .| |_) | |___| |___ / ___ |.;
+#X text 445 65 .|____/|_____|_____/_/..._|.io;
+#X text 445 75 ............................;
+#X text 445 45 .| __ || __|.| |...../ _| |.;
+#X connect 0 0 17 0;
+#X connect 1 0 0 0;
+#X connect 2 0 18 0;
+#X connect 3 0 19 0;
+#X connect 6 0 11 0;
+#X connect 7 0 8 0;
+#X connect 8 0 6 1;
+#X connect 9 0 10 0;
+#X connect 9 0 7 0;
+#X connect 10 0 8 1;
+#X connect 11 0 13 0;
+#X connect 13 0 12 1;
+#X connect 13 0 12 0;
+#X connect 14 0 9 0;
+#X connect 14 0 6 0;
+#X connect 15 0 9 1;
+#X connect 16 0 10 1;
--- a/examples/08-PureData/tableScrubbing/_main.pd	Thu Jun 23 21:23:27 2016 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
-#N canvas 503 319 861 473 10;
-#N canvas 0 22 450 278 (subpatch) 0;
-#X array exampleTable 65238 float 2;
-#X coords 0 1 65238 -1 200 140 1 0 0;
-#X restore 21 213 graph;
-#X obj 243 329 adc~ 1 2 3;
-#X obj 300 426 dac~;
-#X text 317 264 <<< delete this object before compiling!;
-#X obj 300 392 tabread4~ exampleTable;
-#X msg 243 218 read -resize rt.wav exampleTable;
-#X obj 300 350 lop~ 1;
-#X obj 300 371 *~ 65238;
-#X obj 243 266 soundfiler;
-#X text 489 229 right-click array -> properties -> toggle "save contents"
-;
-#X text 463 216 <<< after loading a file:;
-#X text 17 23 Load sample into table and scrub using analog input;
-#X text 17 33 ===================================================;
-#X text 362 351 <<< avoid zipper noise;
-#X text 362 371 <<< length of sample;
-#X text 317 328 <<< analog input 0 (range 0-1);
-#X text 631 419 ---------------------------------;
-#X text 631 409 @krighxz / BELA / heavy / 12/2015;
-#X text 655 428 beaglert.cc / enzienaudio.com;
-#X text 30 61 N.B. the patch cannot be bigger than 512kb in size \;
-only use this for *very small soundfiles*;
-#X text 29 99 You can modify the render.cpp file to load samples into
-tables using the Heavy API: https://enzienaudio.com/docs/c.html#api-hv-table
-;
-#X connect 1 2 6 0;
-#X connect 4 0 2 0;
-#X connect 4 0 2 1;
-#X connect 5 0 8 0;
-#X connect 6 0 7 0;
-#X connect 7 0 4 0;
Binary file examples/08-PureData/tableScrubbing/rt.wav has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/10-Instruments/midi-poly-synth/_main.pd	Thu Jun 23 21:24:45 2016 +0100
@@ -0,0 +1,196 @@
+#N canvas 204 382 1168 1183 10;
+#X obj 409 198 pack 0 0;
+#X obj 409 247 pack 0 0 0;
+#X obj 407 1106 dac~ 1 2;
+#X obj 409 299 s voice-note-1;
+#X obj 499 299 s voice-note-2;
+#X obj 589 299 s voice-note-3;
+#X obj 679 299 s voice-note-4;
+#X obj 408 642 catch~ output;
+#X obj 408 396 voice 1;
+#X obj 922 249 loadbang;
+#X obj 922 271 metro 10;
+#X obj 922 293 s metro;
+#X obj 646 923 * 1000;
+#X obj 646 968 s attack;
+#X obj 738 923 * 8000;
+#X obj 738 945 + 200;
+#X obj 646 945 + 5;
+#X obj 828 945 *~ 25;
+#X obj 850 685 clip~ 0 0.999;
+#X obj 646 730 *~;
+#X obj 409 269 route 1 2 3 4, f 36;
+#X obj 705 629 +~ 100;
+#X obj 705 605 *~ 1900;
+#X obj 409 225 poly 4 1;
+#X obj 474 889 *~ 0.5;
+#X obj 408 890 *~ 0.5;
+#X obj 407 917 hip~ 5;
+#X obj 424 768 hip~ 5;
+#X obj 424 790 hv_tanh;
+#X obj 646 757 hip~ 5;
+#X obj 646 779 hv_tanh;
+#N canvas 0 22 178 130 snapshot 0;
+#X obj 24 20 inlet~;
+#X obj 24 62 snapshot~;
+#X obj 24 84 outlet;
+#X obj 86 29 r metro;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 3 0 1 0;
+#X restore 705 658 pd snapshot;
+#X obj 159 243 s c1;
+#X obj 159 303 s c2;
+#X obj 159 363 s c3;
+#X obj 159 423 s c4;
+#X obj 446 983 r c1;
+#X obj 446 1005 / 127;
+#X obj 646 898 / 127;
+#X obj 646 876 r c2;
+#X obj 738 898 / 127;
+#X obj 738 876 r c3;
+#X obj 828 898 / 127;
+#X obj 828 876 r c4;
+#X obj 828 923 sig~;
+#X obj 159 483 s c5;
+#X obj 159 543 s c6;
+#X obj 705 527 / 127;
+#X obj 705 549 sig~;
+#X obj 705 504 r c5;
+#X obj 850 639 / 127;
+#X obj 850 661 sig~;
+#X obj 850 617 r c6;
+#X obj 408 719 *~ 0.5;
+#X obj 646 686 vd~ ddd;
+#X obj 407 944 hv_tanh;
+#X obj 408 690 lop~ 1000;
+#X obj 705 578 lop~ 10;
+#X obj 159 603 s c7;
+#X obj 159 663 s c8;
+#X obj 919 923 * 8000;
+#X obj 919 945 + 200;
+#X obj 919 898 / 127;
+#X obj 919 876 r c7;
+#X obj 407 1050 lop~ 8000;
+#X obj 1019 876 r c8;
+#X obj 1019 899 / 127;
+#X obj 1019 968 s octVol;
+#X obj 424 811 delwrite~ \$0-del 2000;
+#X obj 705 686 delread~ \$0-del 500;
+#X obj 407 1028 *~ 0.75;
+#X obj 78 213 ctlin 1 0;
+#X obj 78 273 ctlin 2 0;
+#X obj 78 333 ctlin 3 0;
+#X obj 78 393 ctlin 4 0;
+#X obj 78 453 ctlin 5 0;
+#X obj 78 513 ctlin 6 0;
+#X obj 78 573 ctlin 7 0;
+#X obj 78 633 ctlin 8 0;
+#X obj 409 169 notein 0;
+#X obj 828 968 s~ detune;
+#X obj 478 396 voice 2;
+#X obj 549 396 voice 3;
+#X obj 618 396 voice 4;
+#X text 71 55 Polyphonic subtractive synth controllable via MIDI;
+#X text 71 65 ==================================================;
+#X text 400 135 Voice management;
+#X text 400 145 ----------------;
+#X text 400 365 Voices;
+#X text 400 375 ------;
+#X text 400 495 Post-effects and output;
+#X text 400 505 -----------------------;
+#X text 80 146 Midi CC routing;
+#X text 80 156 ---------------;
+#X text 205 242 gain;
+#X text 205 302 attack/release;
+#X obj 738 968 s cutoff;
+#X obj 919 968 s cutoffP;
+#X obj 478 1028 r cutoffP;
+#X obj 459 667 r cutoff;
+#X text 205 362 cutoff (pre-FX);
+#X text 205 422 osc2 detune;
+#X text 205 482 delay length;
+#X text 205 542 delay feedback;
+#X text 205 602 cutoff (post-FX);
+#X text 205 662 sub-oscillator gain;
+#X text 918 47 ............................;
+#X text 918 57 . ____ ._____ _ .......___ .;
+#X text 918 67 .| __ )| ____| |....../ _ |.;
+#X text 918 87 .| |_) | |___| |___ / ___ |.;
+#X text 918 97 .|____/|_____|_____/_/..._|.io;
+#X text 918 107 ............................;
+#X text 918 77 .| __ || __|.| |...../ _| |.;
+#X text 1011 1094 @rjack0101;
+#X connect 0 0 23 0;
+#X connect 1 0 20 0;
+#X connect 7 0 56 0;
+#X connect 9 0 10 0;
+#X connect 10 0 11 0;
+#X connect 12 0 16 0;
+#X connect 14 0 15 0;
+#X connect 15 0 96 0;
+#X connect 16 0 13 0;
+#X connect 17 0 80 0;
+#X connect 18 0 19 1;
+#X connect 19 0 24 0;
+#X connect 19 0 29 0;
+#X connect 20 0 3 0;
+#X connect 20 1 4 0;
+#X connect 20 2 5 0;
+#X connect 20 3 6 0;
+#X connect 21 0 31 0;
+#X connect 21 0 54 0;
+#X connect 22 0 21 0;
+#X connect 23 0 1 0;
+#X connect 23 1 1 1;
+#X connect 23 2 1 2;
+#X connect 24 0 26 0;
+#X connect 25 0 26 0;
+#X connect 26 0 55 0;
+#X connect 27 0 28 0;
+#X connect 28 0 68 0;
+#X connect 29 0 30 0;
+#X connect 30 0 68 0;
+#X connect 31 0 69 0;
+#X connect 36 0 37 0;
+#X connect 37 0 70 1;
+#X connect 38 0 12 0;
+#X connect 39 0 38 0;
+#X connect 40 0 14 0;
+#X connect 41 0 40 0;
+#X connect 42 0 44 0;
+#X connect 43 0 42 0;
+#X connect 44 0 17 0;
+#X connect 47 0 48 0;
+#X connect 48 0 57 0;
+#X connect 49 0 47 0;
+#X connect 50 0 51 0;
+#X connect 51 0 18 0;
+#X connect 52 0 50 0;
+#X connect 53 0 25 0;
+#X connect 53 0 27 0;
+#X connect 54 0 19 0;
+#X connect 55 0 70 0;
+#X connect 56 0 53 0;
+#X connect 57 0 22 0;
+#X connect 60 0 61 0;
+#X connect 61 0 97 0;
+#X connect 62 0 60 0;
+#X connect 63 0 62 0;
+#X connect 64 0 2 0;
+#X connect 64 0 2 1;
+#X connect 65 0 66 0;
+#X connect 66 0 67 0;
+#X connect 70 0 64 0;
+#X connect 71 0 32 0;
+#X connect 72 0 33 0;
+#X connect 73 0 34 0;
+#X connect 74 0 35 0;
+#X connect 75 0 45 0;
+#X connect 76 0 46 0;
+#X connect 77 0 58 0;
+#X connect 78 0 59 0;
+#X connect 79 0 0 0;
+#X connect 79 1 0 1;
+#X connect 98 0 64 1;
+#X connect 99 0 56 1;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/10-Instruments/midi-poly-synth/backmain.pd	Thu Jun 23 21:24:45 2016 +0100
@@ -0,0 +1,79 @@
+#N canvas 85 58 1280 685 10;
+#X obj 19 396 dac~ 1 2;
+#X text 39 1 Hello world!;
+#X text 37 11 ============;
+#X obj 31 353 *~ 0.1;
+#X text 202 448 ---------------------------------;
+#X text 202 438 @krighxz / BELA / heavy / 12/2015;
+#X text 226 457 beaglert.cc / enzienaudio.com;
+#X obj 39 132 mtof;
+#X floatatom 79 59 5 0 0 0 - - -, f 5;
+#X floatatom 122 59 5 0 0 0 - - -, f 5;
+#X floatatom 41 63 5 0 0 0 - - -, f 5;
+#X obj 26 170 phasor~ 440;
+#X text 100 363 (the harsh sound of success);
+#X obj 260 83 * 20;
+#X obj 261 112 + 200;
+#X obj 132 85 loadbang;
+#X msg 131 111 1000;
+#X obj 125 166 sig~;
+#X text 673 121 [pgmin];
+#X obj 218 178 * 10;
+#X obj 30 250 hip~;
+#X obj 26 275 hip~;
+#X obj 20 302 hip~;
+#X obj 19 323 hip~;
+#X obj 87 192 lop~ 4;
+#X obj 152 256 line;
+#X obj 200 200 + 50;
+#X msg 170 227 \$1 200;
+#X msg 93 114 0;
+#X msg 185 112 0;
+#X obj 29 224 vcf~ 4;
+#X obj 70 333 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 42 92 mono;
+#X obj 40 28 bela_notein 0;
+#X obj 260 60 bela_ctlin 5 0;
+#X obj 220 151 bela_ctlin 6 0;
+#X obj 408 121 bela_pgmin 3;
+#X text 537 58 [ctlin];
+#X text 332 27 [notein];
+#X text 140 29 <== the bela equivalent of ==>;
+#X text 349 59 <== the bela equivalent of ==>;
+#X text 483 121 <== the bela equivalent of ==>;
+#X connect 3 0 0 1;
+#X connect 3 0 0 0;
+#X connect 7 0 11 0;
+#X connect 8 0 32 1;
+#X connect 10 0 32 0;
+#X connect 11 0 30 0;
+#X connect 13 0 14 0;
+#X connect 14 0 17 0;
+#X connect 15 0 16 0;
+#X connect 15 0 29 0;
+#X connect 15 0 28 0;
+#X connect 16 0 17 0;
+#X connect 17 0 24 0;
+#X connect 19 0 26 0;
+#X connect 20 0 21 0;
+#X connect 21 0 22 0;
+#X connect 22 0 23 0;
+#X connect 23 0 3 0;
+#X connect 24 0 30 1;
+#X connect 25 0 20 1;
+#X connect 25 0 21 1;
+#X connect 25 0 22 1;
+#X connect 25 0 23 1;
+#X connect 26 0 27 0;
+#X connect 27 0 25 0;
+#X connect 29 0 19 0;
+#X connect 30 0 20 0;
+#X connect 31 0 3 1;
+#X connect 32 0 7 0;
+#X connect 32 1 31 0;
+#X connect 33 0 10 0;
+#X connect 33 1 8 0;
+#X connect 33 2 9 0;
+#X connect 34 0 13 0;
+#X connect 35 0 19 0;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/10-Instruments/midi-poly-synth/countTo.pd	Thu Jun 23 21:24:45 2016 +0100
@@ -0,0 +1,33 @@
+#N canvas 584 255 450 300 10;
+#X obj 65 196 outlet;
+#X obj 98 8 inlet;
+#X text 189 49 counts from 0 to the given number -1;
+#X text 214 95 inlet:N;
+#X text 212 112 outlet: 0 \, 1 \, 2 \, ... \, N-1;
+#X obj 143 61 f;
+#X obj 100 138 spigot;
+#X obj 129 89 <;
+#X obj 129 113 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 95 28 t b f b;
+#X obj 92 74 + 1;
+#X obj 43 73 f;
+#X obj 63 104 t b f f f;
+#X msg 92 53 0;
+#X obj 16 144 delay 0;
+#X connect 1 0 9 0;
+#X connect 5 0 7 1;
+#X connect 6 0 11 0;
+#X connect 7 0 8 0;
+#X connect 8 0 6 1;
+#X connect 9 0 11 0;
+#X connect 9 1 5 0;
+#X connect 9 1 13 0;
+#X connect 10 0 11 1;
+#X connect 11 0 12 0;
+#X connect 12 0 14 0;
+#X connect 12 1 0 0;
+#X connect 12 2 7 0;
+#X connect 12 3 10 0;
+#X connect 13 0 11 1;
+#X connect 14 0 6 0;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/10-Instruments/midi-poly-synth/hv_tanh.pd	Thu Jun 23 21:24:45 2016 +0100
@@ -0,0 +1,27 @@
+#N canvas 254 82 445 331 10;
+#X obj 39 37 inlet~;
+#X obj 39 67 clip~ -3 3;
+#X obj 54 107 *~;
+#X obj 39 277 outlet~;
+#X obj 109 107 sig~ 27;
+#X obj 54 147 +~;
+#X obj 54 217 /~;
+#X obj 39 247 *~;
+#X obj 94 147 *~ 9;
+#X obj 94 187 +~;
+#X text 142 177 // http://www.musicdsp.org/showone.php?id=238;
+#X text 140 198 // y = x * (27 + x^2) / (27 + 9*x^2);
+#X text 144 152 // pade-approximation of tanh function;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 1 0 2 1;
+#X connect 1 0 7 0;
+#X connect 2 0 5 0;
+#X connect 2 0 8 0;
+#X connect 4 0 5 1;
+#X connect 4 0 9 1;
+#X connect 5 0 6 0;
+#X connect 6 0 7 1;
+#X connect 7 0 3 0;
+#X connect 8 0 9 0;
+#X connect 9 0 6 1;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/10-Instruments/midi-poly-synth/maxArray.pd	Thu Jun 23 21:24:45 2016 +0100
@@ -0,0 +1,67 @@
+#N canvas 464 23 1002 583 10;
+#X obj 224 202 max;
+#X obj 265 200 f;
+#X obj 223 229 change;
+#X obj 223 251 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X obj 223 271 f;
+#X obj 259 323 f;
+#X obj 187 315 f;
+#X obj 268 282 t b b;
+#X obj 183 364 outlet;
+#X obj 269 379 outlet;
+#X obj 179 17 inlet;
+#X obj 225 177 tabread \$1;
+#X obj 230 88 t f f b;
+#X text 376 37 Finds a maximum value in an array;
+#X text 531 112 \$2 arrayLength;
+#X obj 292 10 inlet;
+#X text 425 146 inlets:;
+#X text 473 144 1 bang to find the maximum;
+#X text 475 157 2 arrayLength;
+#X text 407 90 creation arguments: \$1 arrayName;
+#X obj 246 38 \$2;
+#X obj 202 40 bang;
+#X obj 230 65 f;
+#X obj 224 6 loadbang;
+#X text 444 216 outlets: 1 maximum value;
+#X text 498 231 2 index of the maximum value;
+#X msg 276 141 -1e+15;
+#X obj 222 142 t f f f;
+#X floatatom 158 266 5 0 0 0 - - -, f 5;
+#X obj 332 302 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X obj 288 253 select 127;
+#X floatatom 301 324 5 0 0 0 - - -, f 5;
+#X text 362 256 heavy does not support the second inlet of select so
+I have to hard code 127 in here;
+#X obj 223 110 countTo;
+#X connect 0 0 1 0;
+#X connect 0 0 2 0;
+#X connect 0 0 6 1;
+#X connect 0 0 28 0;
+#X connect 1 0 0 1;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 4 0 5 1;
+#X connect 4 0 31 0;
+#X connect 5 0 9 0;
+#X connect 6 0 8 0;
+#X connect 7 0 6 0;
+#X connect 7 1 5 0;
+#X connect 10 0 21 0;
+#X connect 11 0 0 0;
+#X connect 12 0 33 0;
+#X connect 12 2 26 0;
+#X connect 15 0 22 1;
+#X connect 20 0 22 1;
+#X connect 21 0 22 0;
+#X connect 22 0 12 0;
+#X connect 23 0 20 0;
+#X connect 26 0 0 1;
+#X connect 27 0 30 0;
+#X connect 27 1 11 0;
+#X connect 27 2 4 1;
+#X connect 30 0 7 0;
+#X connect 30 0 29 0;
+#X connect 33 0 27 0;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/10-Instruments/midi-poly-synth/mono.pd	Thu Jun 23 21:24:45 2016 +0100
@@ -0,0 +1,106 @@
+#N canvas 69 182 1020 452 10;
+#N canvas 0 23 450 278 (subpatch) 0;
+#X array \$0-activeNotes 127 float 2;
+#X coords 0 100 127 -1 200 140 1 0 0;
+#X restore 537 25 graph;
+#N canvas 89 91 450 300 resetArray 1;
+#X obj 121 145 tabwrite \$0-activeNotes;
+#X msg 123 115 -0.5;
+#X obj 154 90 t b f;
+#X msg 129 45 128;
+#X obj 103 14 inlet;
+#X text 212 71 countto;
+#X obj 153 69 countTo;
+#X connect 1 0 0 0;
+#X connect 2 0 1 0;
+#X connect 2 1 0 1;
+#X connect 3 0 6 0;
+#X connect 4 0 3 0;
+#X connect 6 0 2 0;
+#X restore 83 49 pd resetArray;
+#X obj 83 3 loadbang;
+#X obj 88 25 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X obj 39 188 maxArray \$0-activeNotes 128;
+#X obj 183 219 f;
+#X obj 39 237 >= 0;
+#X floatatom 148 313 5 0 0 0 - - -, f 5;
+#X obj 70 262 select 1;
+#X obj 366 87 f;
+#X obj 426 60 f;
+#X text 334 39 note;
+#X text 424 16 velocity;
+#X obj 423 87 > 0;
+#X obj 344 281 tabwrite \$0-activeNotes;
+#X obj 330 207 f;
+#X floatatom 303 178 5 0 0 0 - - -, f 5;
+#X obj 265 163 f;
+#X obj 304 150 + 1;
+#X msg 277 130 -1;
+#X msg 371 207 -0.5;
+#X obj 400 116 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 367 137 spigot;
+#X obj 447 134 spigot;
+#X obj 460 86 == 0;
+#X obj 470 109 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 434 163 t b f;
+#X obj 337 60 inlet;
+#X obj 426 32 inlet;
+#X obj 148 350 outlet;
+#X obj 275 89 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X obj 41 163 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X obj 363 172 t b f;
+#X obj 334 240 t b f;
+#X text 578 211 pass in velocity/note pairs (velocity first) and obtain
+as an output the most recent note still active;
+#X text 581 268 outlet 2 gate;
+#X obj 330 366 outlet;
+#X text 583 251 outlet 1 most recent note active (-1 otherwise);
+#X text 155 329 most recent note active;
+#X msg 338 338 0;
+#X msg 378 339 1;
+#X connect 2 0 3 0;
+#X connect 3 0 1 0;
+#X connect 3 0 19 0;
+#X connect 4 0 6 0;
+#X connect 4 1 5 1;
+#X connect 5 0 7 0;
+#X connect 5 0 40 0;
+#X connect 6 0 8 0;
+#X connect 7 0 29 0;
+#X connect 8 0 5 0;
+#X connect 8 1 39 0;
+#X connect 9 0 22 0;
+#X connect 9 0 23 0;
+#X connect 10 0 13 0;
+#X connect 10 0 24 0;
+#X connect 13 0 21 0;
+#X connect 15 0 33 0;
+#X connect 16 0 15 1;
+#X connect 17 0 18 0;
+#X connect 18 0 16 0;
+#X connect 18 0 17 1;
+#X connect 19 0 17 1;
+#X connect 20 0 33 0;
+#X connect 21 0 22 1;
+#X connect 22 0 32 0;
+#X connect 23 0 26 0;
+#X connect 24 0 25 0;
+#X connect 25 0 23 1;
+#X connect 26 0 20 0;
+#X connect 26 1 14 1;
+#X connect 27 0 9 0;
+#X connect 28 0 10 0;
+#X connect 28 0 30 0;
+#X connect 30 0 17 0;
+#X connect 31 0 4 0;
+#X connect 32 0 15 0;
+#X connect 32 1 14 1;
+#X connect 33 0 31 0;
+#X connect 33 1 14 0;
+#X connect 39 0 36 0;
+#X connect 40 0 36 0;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/10-Instruments/midi-poly-synth/voice.pd	Thu Jun 23 21:24:45 2016 +0100
@@ -0,0 +1,62 @@
+#N canvas 145 23 439 703 10;
+#X obj 137 43 r voice-note-\$1;
+#X obj 137 65 unpack 0 0;
+#X obj 137 131 mtof;
+#X obj 149 594 *~;
+#X obj 300 515 / 127;
+#X obj 149 648 throw~ output;
+#X obj 300 567 line~;
+#X obj 300 541 pack 0 0;
+#X obj 164 284 phasor~;
+#X obj 46 284 phasor~;
+#X obj 149 352 +~;
+#X obj 345 515 r attack;
+#X obj 46 218 sig~;
+#X obj 46 263 +~;
+#X obj 164 306 *~ 2;
+#X obj 164 328 -~ 1;
+#X obj 46 306 *~ 2;
+#X obj 46 328 -~ 1;
+#X obj 196 476 r octVol;
+#X obj 164 475 osc~;
+#X obj 164 497 *~;
+#X obj 149 519 +~;
+#X obj 149 623 *~ 0.5;
+#X obj 164 452 mtof;
+#X obj 164 429 - 12;
+#X obj 61 241 r~ detune;
+#X obj 137 153 t f f;
+#X obj 137 87 t f f;
+#X obj 164 407 r \$0-midinote;
+#X obj 164 109 s \$0-midinote;
+#X connect 0 0 1 0;
+#X connect 1 0 27 0;
+#X connect 1 1 4 0;
+#X connect 2 0 26 0;
+#X connect 3 0 22 0;
+#X connect 4 0 7 0;
+#X connect 6 0 3 1;
+#X connect 7 0 6 0;
+#X connect 8 0 14 0;
+#X connect 9 0 16 0;
+#X connect 10 0 21 0;
+#X connect 11 0 7 1;
+#X connect 12 0 13 0;
+#X connect 13 0 9 0;
+#X connect 14 0 15 0;
+#X connect 15 0 10 1;
+#X connect 16 0 17 0;
+#X connect 17 0 10 0;
+#X connect 18 0 20 1;
+#X connect 19 0 20 0;
+#X connect 20 0 21 1;
+#X connect 21 0 3 0;
+#X connect 22 0 5 0;
+#X connect 23 0 19 0;
+#X connect 24 0 23 0;
+#X connect 25 0 13 1;
+#X connect 26 0 12 0;
+#X connect 26 1 8 0;
+#X connect 27 0 2 0;
+#X connect 27 1 29 0;
+#X connect 28 0 24 0;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/10-Instruments/vangelisiser/_main.pd	Thu Jun 23 21:24:45 2016 +0100
@@ -0,0 +1,274 @@
+#N canvas 825 500 1305 1225 10;
+#X obj 941 614 s~ _gain;
+#X obj 477 523 lop~ 30;
+#X obj 941 437 abs~;
+#X obj 941 481 clip~ 0 1;
+#N canvas 1785 452 296 317 input-controller 0;
+#X obj 89 85 abs~;
+#X obj 89 157 clip~ 0 10;
+#X obj 89 105 lop~ 30;
+#X obj 89 65 *~ 150000;
+#X obj 89 125 -~ 0.25;
+#X obj 46 191 sig~ 1;
+#X obj 73 217 /~;
+#X obj 89 190 q8_rsqrt~;
+#N canvas 1265 891 433 402 accelerometer-integration 0;
+#X obj 72 225 rpole~ 1;
+#X obj 72 246 hip~ 1;
+#X obj 72 155 lop~ 100;
+#X obj 132 225 rpole~ 1;
+#X obj 132 246 hip~ 1;
+#X obj 132 155 lop~ 100;
+#X obj 192 225 rpole~ 1;
+#X obj 192 246 hip~ 1;
+#X obj 192 155 lop~ 100;
+#X obj 72 289 *~;
+#X obj 132 289 *~;
+#X obj 192 289 *~;
+#X obj 29 320 sig~ 1;
+#X obj 55 345 /~;
+#X obj 72 319 q8_rsqrt~;
+#X obj 346 176 samplerate~;
+#X obj 318 133 loadbang;
+#X obj 318 155 t b b;
+#X obj 317 175 f 1;
+#X obj 317 194 /;
+#X obj 316 215 s _invsr;
+#X obj 206 177 r _invsr;
+#X obj 146 177 r _invsr;
+#X obj 86 177 r _invsr;
+#X obj 192 197 *~ 0;
+#X obj 132 197 *~ 0;
+#X obj 72 197 *~ 0;
+#X obj 314 349 s~ _zacc;
+#X obj 315 272 -~ 0.5;
+#X obj 315 294 *~ 4;
+#X obj 315 320 clip~ -1 1;
+#X obj 55 367 outlet~;
+#X text 29 21 Integrate accelerometer data to estimate velocity;
+#X text 29 31 =================================================;
+#X obj 72 65 receive~ \$0-x;
+#X obj 132 95 receive~ \$0-y;
+#X obj 192 125 receive~ \$0-z;
+#X connect 0 0 1 0;
+#X connect 1 0 9 0;
+#X connect 1 0 9 1;
+#X connect 2 0 26 0;
+#X connect 3 0 4 0;
+#X connect 4 0 10 0;
+#X connect 4 0 10 1;
+#X connect 5 0 25 0;
+#X connect 6 0 7 0;
+#X connect 7 0 11 0;
+#X connect 7 0 11 1;
+#X connect 8 0 24 0;
+#X connect 8 0 28 0;
+#X connect 9 0 14 0;
+#X connect 10 0 14 0;
+#X connect 11 0 14 0;
+#X connect 12 0 13 0;
+#X connect 13 0 31 0;
+#X connect 14 0 13 1;
+#X connect 15 0 19 1;
+#X connect 16 0 17 0;
+#X connect 17 0 18 0;
+#X connect 17 1 15 0;
+#X connect 18 0 19 0;
+#X connect 19 0 20 0;
+#X connect 21 0 24 1;
+#X connect 22 0 25 1;
+#X connect 23 0 26 1;
+#X connect 24 0 6 0;
+#X connect 25 0 3 0;
+#X connect 26 0 0 0;
+#X connect 28 0 29 0;
+#X connect 29 0 30 0;
+#X connect 30 0 27 0;
+#X connect 34 0 2 0;
+#X connect 35 0 5 0;
+#X connect 36 0 8 0;
+#X restore 89 30 pd accelerometer-integration;
+#X obj 73 256 outlet~;
+#X connect 0 0 2 0;
+#X connect 1 0 7 0;
+#X connect 2 0 4 0;
+#X connect 3 0 0 0;
+#X connect 4 0 1 0;
+#X connect 5 0 6 0;
+#X connect 6 0 9 0;
+#X connect 7 0 6 1;
+#X connect 8 0 3 0;
+#X restore 941 364 pd input-controller;
+#X obj 424 1183 dac~;
+#X obj 235 250 loadbang;
+#X obj 451 995 loadbang;
+#X obj 830 938 s~ fmod;
+#X obj 830 906 lop~ 20;
+#X obj 830 838 sig~ 1;
+#X obj 830 860 -~;
+#X obj 477 545 *~ 0.75;
+#X obj 376 865 *~;
+#X obj 961 512 s~ accvel;
+#X obj 531 649 r~ accvel;
+#X obj 376 1047 e_platereverb;
+#X obj 941 459 -~ 0.0025;
+#X obj 235 1017 predel 2;
+#X obj 257 982 lop~ 20;
+#X obj 469 680 -~ 0.25;
+#X obj 477 569 -~ 0.75;
+#X obj 257 940 *~ 2;
+#X obj 257 962 -~ 1;
+#X obj 941 558 lop~ 5;
+#X msg 451 1017 0;
+#X obj 941 406 *~ 0.666;
+#X obj 481 802 sig~ 1;
+#X obj 481 824 -~;
+#X obj 235 864 *~;
+#X obj 531 802 clip~ 0 1;
+#X obj 531 780 *~ 2;
+#X obj 531 758 -~ 0.75;
+#X obj 468 732 clip~ 0.3 1;
+#X obj 376 1018 predel 5;
+#X obj 469 702 *~ 2;
+#X obj 941 586 clip~ 0 3;
+#X obj 235 614 vangex;
+#X obj 376 1109 hv_tanh;
+#X obj 486 1109 hv_tanh;
+#X obj 477 383 k.ramp~ 0 0.3;
+#X obj 468 754 lop~ 5;
+#X msg 235 272 33;
+#X obj 830 884 *~ 5;
+#X obj 235 1048 *~ 2;
+#X obj 280 1047 *~ 2;
+#X obj 376 1141 *~ 2;
+#X obj 486 1140 *~ 2;
+#X obj 235 313 + 12;
+#X obj 335 312 + 19;
+#X obj 285 313 + 16;
+#X obj 385 313 + 28;
+#X obj 477 441 k.ramp~ 0.6 0.3;
+#X obj 477 422 k.ramp~ 0.4 0.3;
+#X obj 477 402 k.ramp~ 0.2 0.3;
+#X obj 385 614 vangex;
+#X obj 335 614 vangex;
+#X obj 285 614 vangex;
+#X text 1157 1177 @krighxz 2016;
+#X text 1044 513 velocity derived from accelerometer;
+#X text 612 648 use velocity to control reverb input level;
+#X obj 233 174 adc~ 3;
+#X obj 233 196 send~ \$0-x;
+#X obj 303 174 adc~ 4;
+#X obj 373 174 adc~ 5;
+#X obj 303 196 send~ \$0-y;
+#X obj 373 196 send~ \$0-z;
+#X obj 458 352 receive~ \$0-x;
+#X obj 477 501 receive~ \$0-z;
+#X obj 257 918 receive~ \$0-x;
+#X text 70 1016 delay-based panning >>>;
+#X obj 895 838 receive~ \$0-z;
+#X text 586 500 z axis controls timbre (harmonic ratio);
+#X text 568 353 x axis controls gain weightings of voices;
+#X text 48 920 x axis controls panning >>>;
+#X text 1022 614 <<< velocity controls gain of voices;
+#X text 1001 838 <<< z axis modulates frequency of all voices;
+#X text 35 16 The 'Vangelisiser';
+#X text 35 26 ==================;
+#X text 35 46 This is a synth designed to be controlled using a single
+;
+#X text 35 59 accelerometer. Inspired by the emotional sounds of Vangelis
+;
+#X text 35 73 four voices tuned to a chord are controlled using axes
+of;
+#X text 35 87 the accelerometer as well as overall velocity derived
+from;
+#X text 35 102 all three axes.;
+#X text 35 116 This patch should ideally be compiled using Heavy and
+run;
+#X text 35 130 at a block size of 64;
+#X text 1062 30 ............................;
+#X text 1062 40 . ____ ._____ _ .......___ .;
+#X text 1062 50 .| __ )| ____| |....../ _ |.;
+#X text 1062 70 .| |_) | |___| |___ / ___ |.;
+#X text 1062 80 .|____/|_____|_____/_/..._|.io;
+#X text 1062 90 ............................;
+#X text 1062 60 .| __ || __|.| |...../ _| |.;
+#X connect 1 0 12 0;
+#X connect 2 0 17 0;
+#X connect 3 0 14 0;
+#X connect 3 0 24 0;
+#X connect 4 0 26 0;
+#X connect 6 0 42 0;
+#X connect 7 0 25 0;
+#X connect 9 0 8 0;
+#X connect 10 0 11 0;
+#X connect 11 0 43 0;
+#X connect 12 0 21 0;
+#X connect 13 0 34 0;
+#X connect 15 0 20 0;
+#X connect 15 0 32 0;
+#X connect 16 0 38 0;
+#X connect 16 1 39 0;
+#X connect 17 0 3 0;
+#X connect 18 0 44 0;
+#X connect 18 1 45 0;
+#X connect 19 0 18 1;
+#X connect 19 0 34 1;
+#X connect 20 0 35 0;
+#X connect 21 0 55 2;
+#X connect 21 0 56 2;
+#X connect 21 0 57 2;
+#X connect 21 0 37 2;
+#X connect 22 0 23 0;
+#X connect 23 0 19 0;
+#X connect 24 0 36 0;
+#X connect 25 0 16 2;
+#X connect 26 0 2 0;
+#X connect 27 0 28 0;
+#X connect 28 0 29 1;
+#X connect 29 0 18 0;
+#X connect 30 0 28 1;
+#X connect 31 0 30 0;
+#X connect 32 0 31 0;
+#X connect 33 0 41 0;
+#X connect 34 0 16 0;
+#X connect 34 1 16 1;
+#X connect 35 0 33 0;
+#X connect 36 0 0 0;
+#X connect 37 0 13 0;
+#X connect 37 0 29 0;
+#X connect 38 0 46 0;
+#X connect 39 0 47 0;
+#X connect 40 0 37 1;
+#X connect 41 0 13 1;
+#X connect 42 0 48 0;
+#X connect 42 0 50 0;
+#X connect 42 0 49 0;
+#X connect 42 0 51 0;
+#X connect 43 0 9 0;
+#X connect 44 0 38 0;
+#X connect 45 0 39 0;
+#X connect 46 0 5 0;
+#X connect 47 0 5 1;
+#X connect 48 0 37 0;
+#X connect 49 0 56 0;
+#X connect 50 0 57 0;
+#X connect 51 0 55 0;
+#X connect 52 0 55 1;
+#X connect 53 0 56 1;
+#X connect 54 0 57 1;
+#X connect 55 0 13 0;
+#X connect 55 0 29 0;
+#X connect 56 0 13 0;
+#X connect 56 0 29 0;
+#X connect 57 0 13 0;
+#X connect 57 0 29 0;
+#X connect 61 0 62 0;
+#X connect 63 0 65 0;
+#X connect 64 0 66 0;
+#X connect 67 0 40 0;
+#X connect 67 0 52 0;
+#X connect 67 0 53 0;
+#X connect 67 0 54 0;
+#X connect 68 0 1 0;
+#X connect 69 0 22 0;
+#X connect 71 0 11 1;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/10-Instruments/vangelisiser/c_xfade.pd	Thu Jun 23 21:24:45 2016 +0100
@@ -0,0 +1,23 @@
+#N canvas 0 22 799 322 10;
+#X obj 76 87 inlet~;
+#X obj 142 87 inlet~;
+#X obj 77 198 outlet~;
+#X obj 201 87 inlet;
+#X obj 141 136 -~;
+#X obj 141 156 *~;
+#X text 371 150 (1-x)*a + x*b;
+#X text 371 167 = a - x*a + x*b;
+#X text 371 184 = a + x*(b - a);
+#X text 366 119 x: fade factor (0-1);
+#X text 366 90 a: sig from inlet~ 0;
+#X text 339 50 Linear crossfade according to the following calculation:
+;
+#X text 367 104 b: sig from inlet~ 1;
+#X obj 201 127 line;
+#X connect 0 0 4 1;
+#X connect 0 0 2 0;
+#X connect 1 0 4 0;
+#X connect 3 0 13 0;
+#X connect 4 0 5 0;
+#X connect 5 0 2 0;
+#X connect 13 0 5 1;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/10-Instruments/vangelisiser/cheap-reverb.pd	Thu Jun 23 21:24:45 2016 +0100
@@ -0,0 +1,82 @@
+#N canvas 0 22 973 666 10;
+#X obj 297 35 inlet~;
+#X obj 297 235 +~;
+#X obj 339 235 +~;
+#X obj 87 296 outlet~;
+#X obj 157 296 outlet~;
+#X obj 258 354 +~;
+#X obj 367 355 +~;
+#X obj 300 354 -~;
+#X obj 407 354 -~;
+#X obj 257 410 +~;
+#X obj 301 411 +~;
+#X obj 345 412 -~;
+#X obj 384 412 -~;
+#X obj 344 494 *~ 0;
+#X obj 302 493 *~ 0;
+#X obj 257 492 *~ 0;
+#X obj 385 495 *~ 0;
+#X obj 652 385 inlet;
+#X obj 652 457 / 200;
+#X obj 652 409 min 100;
+#X obj 652 432 max 0;
+#X obj 258 603 delwrite~ loop-del1 60;
+#X obj 303 581 delwrite~ loop-del2 71.9345;
+#X obj 384 535 delwrite~ loop-del4 95.945;
+#X obj 318 174 delread~ loop-del1 60;
+#X obj 360 199 delread~ loop-del2 71.9345;
+#X obj 428 253 delread~ loop-del4 95.945;
+#X obj 406 228 delread~ loop-del3 86.7545;
+#X obj 345 558 delwrite~ loop-del3 86.7545;
+#X text 306 62 "early echo" generators \, which also increase echo
+density. Open one to see what they do.;
+#X text 320 135 Get the outputs of the recirculating delays. Add the
+inputs to two of them.;
+#X text 440 333 Do a power-conserving mix of them in pairs. First combine
+(1 \, 2) and (3 \, 4)...;
+#X text 422 405 ...then (1 \, 3) and (2 \, 4);
+#X text 466 489 The two mixing stages have a combined gain of 2 \,
+so the recirculation gain is limited to 0.5.;
+#X text 606 562 Put the signals back into the;
+#X text 604 577 recirculating delays.;
+#X text 49 316 Tap outputs from here.;
+#X text 728 401 0 to 100 to control reverb;
+#X text 739 416 time.;
+#X text 711 384 feedback gain on a scale of;
+#X connect 0 0 1 0;
+#X connect 0 0 2 0;
+#X connect 1 0 3 0;
+#X connect 1 0 5 0;
+#X connect 1 0 7 0;
+#X connect 2 0 4 0;
+#X connect 2 0 5 1;
+#X connect 2 0 7 1;
+#X connect 5 0 9 0;
+#X connect 5 0 11 0;
+#X connect 6 0 11 1;
+#X connect 6 0 9 1;
+#X connect 7 0 10 0;
+#X connect 7 0 12 0;
+#X connect 8 0 10 1;
+#X connect 8 0 12 1;
+#X connect 9 0 15 0;
+#X connect 10 0 14 0;
+#X connect 11 0 13 0;
+#X connect 12 0 16 0;
+#X connect 13 0 28 0;
+#X connect 14 0 22 0;
+#X connect 15 0 21 0;
+#X connect 16 0 23 0;
+#X connect 17 0 19 0;
+#X connect 18 0 16 1;
+#X connect 18 0 15 1;
+#X connect 18 0 14 1;
+#X connect 18 0 13 1;
+#X connect 19 0 20 0;
+#X connect 20 0 18 0;
+#X connect 24 0 1 1;
+#X connect 25 0 2 1;
+#X connect 26 0 6 1;
+#X connect 26 0 8 1;
+#X connect 27 0 6 0;
+#X connect 27 0 8 0;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/10-Instruments/vangelisiser/e_platereverb.pd	Thu Jun 23 21:24:45 2016 +0100
@@ -0,0 +1,817 @@
+#N canvas 115 309 823 465 10;
+#X obj 24 32 inlet~;
+#X obj 23 380 outlet~;
+#X obj 118 380 outlet~;
+#N canvas 0 166 634 506 input_diffusion 0;
+#X obj 30 60 inlet~;
+#X obj 29 295 outlet~;
+#X obj 337 79 r \$0-input_diffusion1;
+#X obj 336 170 r \$0-input_diffusion2;
+#N canvas 393 22 574 578 allpass 0;
+#X obj 56 127 inlet~;
+#X obj 56 400 +~;
+#X obj 427 232 loadbang;
+#X obj 417 286 t f f;
+#X obj 417 310 *;
+#X obj 253 364 *~;
+#X obj 232 394 +~;
+#X obj 114 177 * -1;
+#X obj 88 207 *~;
+#X obj 232 426 outlet~;
+#X obj 417 129 inlet;
+#X obj 114 117 loadbang;
+#X obj 75 365 *~ -1;
+#X obj 201 364 *~ -1;
+#X obj 114 149 f 0.75;
+#X obj 417 262 f 0.75;
+#X obj 56 491 delwrite~ \$0-tap_13_14 200;
+#X obj 252 262 *~ 0.75;
+#X obj 252 53 delread~ \$0-tap_13_14 4.77134;
+#X obj 417 336 swap 1;
+#X obj 417 360 -;
+#X connect 0 0 1 0;
+#X connect 0 0 8 0;
+#X connect 1 0 16 0;
+#X connect 2 0 15 0;
+#X connect 3 0 4 0;
+#X connect 3 1 4 1;
+#X connect 4 0 19 0;
+#X connect 5 0 6 1;
+#X connect 6 0 9 0;
+#X connect 7 0 8 1;
+#X connect 8 0 13 0;
+#X connect 10 0 14 0;
+#X connect 10 0 15 0;
+#X connect 10 0 17 1;
+#X connect 11 0 14 0;
+#X connect 12 0 1 1;
+#X connect 13 0 6 0;
+#X connect 14 0 7 0;
+#X connect 15 0 3 0;
+#X connect 17 0 5 0;
+#X connect 17 0 12 0;
+#X connect 18 0 17 0;
+#X connect 19 0 20 0;
+#X connect 19 1 20 1;
+#X connect 20 0 5 1;
+#X restore 30 99 pd allpass tap_13_14;
+#N canvas 314 22 579 582 allpass 0;
+#X obj 56 127 inlet~;
+#X obj 56 400 +~;
+#X obj 427 232 loadbang;
+#X obj 417 286 t f f;
+#X obj 417 310 *;
+#X obj 253 364 *~;
+#X obj 232 394 +~;
+#X obj 114 177 * -1;
+#X obj 88 207 *~;
+#X obj 232 426 outlet~;
+#X obj 417 129 inlet;
+#X obj 114 117 loadbang;
+#X obj 75 365 *~ -1;
+#X obj 201 364 *~ -1;
+#X obj 114 149 f 0.75;
+#X obj 417 262 f 0.75;
+#X obj 252 262 *~ 0.75;
+#X obj 56 491 delwrite~ \$0-tap_19_20 200;
+#X obj 252 53 delread~ \$0-tap_19_20 3.5953;
+#X obj 417 336 swap 1;
+#X obj 417 360 -;
+#X connect 0 0 1 0;
+#X connect 0 0 8 0;
+#X connect 1 0 17 0;
+#X connect 2 0 15 0;
+#X connect 3 0 4 0;
+#X connect 3 1 4 1;
+#X connect 4 0 19 0;
+#X connect 5 0 6 1;
+#X connect 6 0 9 0;
+#X connect 7 0 8 1;
+#X connect 8 0 13 0;
+#X connect 10 0 14 0;
+#X connect 10 0 15 0;
+#X connect 10 0 16 1;
+#X connect 11 0 14 0;
+#X connect 12 0 1 1;
+#X connect 13 0 6 0;
+#X connect 14 0 7 0;
+#X connect 15 0 3 0;
+#X connect 16 0 5 0;
+#X connect 16 0 12 0;
+#X connect 18 0 16 0;
+#X connect 19 0 20 0;
+#X connect 19 1 20 1;
+#X connect 20 0 5 1;
+#X restore 30 135 pd allpass tap_19_20;
+#N canvas 238 22 570 590 allpass 0;
+#X obj 56 127 inlet~;
+#X obj 56 400 +~;
+#X obj 427 232 loadbang;
+#X obj 417 286 t f f;
+#X obj 417 310 *;
+#X obj 253 364 *~;
+#X obj 232 394 +~;
+#X obj 114 177 * -1;
+#X obj 88 207 *~;
+#X obj 232 426 outlet~;
+#X obj 417 129 inlet;
+#X obj 114 117 loadbang;
+#X obj 75 365 *~ -1;
+#X obj 201 364 *~ -1;
+#X obj 114 149 f 0.625;
+#X obj 252 262 *~ 0.625;
+#X obj 417 262 f 0.625;
+#X obj 56 491 delwrite~ \$0-tap_15_16 200;
+#X obj 252 53 delread~ \$0-tap_15_16 12.7348;
+#X obj 417 336 swap 1;
+#X obj 417 360 -;
+#X connect 0 0 1 0;
+#X connect 0 0 8 0;
+#X connect 1 0 17 0;
+#X connect 2 0 16 0;
+#X connect 3 0 4 0;
+#X connect 3 1 4 1;
+#X connect 4 0 19 0;
+#X connect 5 0 6 1;
+#X connect 6 0 9 0;
+#X connect 7 0 8 1;
+#X connect 8 0 13 0;
+#X connect 10 0 14 0;
+#X connect 10 0 15 1;
+#X connect 10 0 16 0;
+#X connect 11 0 14 0;
+#X connect 12 0 1 1;
+#X connect 13 0 6 0;
+#X connect 14 0 7 0;
+#X connect 15 0 5 0;
+#X connect 15 0 12 0;
+#X connect 16 0 3 0;
+#X connect 18 0 15 0;
+#X connect 19 0 20 0;
+#X connect 19 1 20 1;
+#X connect 20 0 5 1;
+#X restore 30 190 pd allpass tap_15_16;
+#N canvas 238 22 566 586 allpass 0;
+#X obj 56 127 inlet~;
+#X obj 56 400 +~;
+#X obj 427 232 loadbang;
+#X obj 417 286 t f f;
+#X obj 417 310 *;
+#X obj 253 364 *~;
+#X obj 232 394 +~;
+#X obj 114 177 * -1;
+#X obj 88 207 *~;
+#X obj 232 426 outlet~;
+#X obj 417 129 inlet;
+#X obj 114 117 loadbang;
+#X obj 75 365 *~ -1;
+#X obj 201 364 *~ -1;
+#X obj 114 149 f 0.625;
+#X obj 252 262 *~ 0.625;
+#X obj 417 262 f 0.625;
+#X obj 56 491 delwrite~ \$0-tap_21_22 200;
+#X obj 252 53 delread~ \$0-tap_21_22 9.30748;
+#X obj 417 336 swap 1;
+#X obj 417 360 -;
+#X connect 0 0 1 0;
+#X connect 0 0 8 0;
+#X connect 1 0 17 0;
+#X connect 2 0 16 0;
+#X connect 3 0 4 0;
+#X connect 3 1 4 1;
+#X connect 4 0 19 0;
+#X connect 5 0 6 1;
+#X connect 6 0 9 0;
+#X connect 7 0 8 1;
+#X connect 8 0 13 0;
+#X connect 10 0 14 0;
+#X connect 10 0 15 1;
+#X connect 10 0 16 0;
+#X connect 11 0 14 0;
+#X connect 12 0 1 1;
+#X connect 13 0 6 0;
+#X connect 14 0 7 0;
+#X connect 15 0 5 0;
+#X connect 15 0 12 0;
+#X connect 16 0 3 0;
+#X connect 18 0 15 0;
+#X connect 19 0 20 0;
+#X connect 19 1 20 1;
+#X connect 20 0 5 1;
+#X restore 30 230 pd allpass tap_21_22;
+#X connect 0 0 4 0;
+#X connect 2 0 4 1;
+#X connect 2 0 5 1;
+#X connect 3 0 6 1;
+#X connect 3 0 7 1;
+#X connect 4 0 5 0;
+#X connect 5 0 6 0;
+#X connect 6 0 7 0;
+#X connect 7 0 1 0;
+#X restore 25 208 pd input_diffusion;
+#N canvas 38 72 501 476 reverberation_tank 0;
+#X obj 168 85 inlet~;
+#X obj 43 120 +~;
+#X obj 255 121 +~;
+#N canvas 0 22 458 308 z^-4217 0;
+#X obj 106 55 inlet~;
+#X obj 105 120 delwrite~ \$0-tap_48_54 141.695;
+#X text 358 135 4217;
+#X obj 105 147 delread~ \$0-tap_48_54 141.695;
+#X obj 106 223 outlet~;
+#X connect 0 0 1 0;
+#X connect 3 0 4 0;
+#X restore 255 190 pd z^-4217;
+#N canvas 0 22 458 308 z^-4453 0;
+#X obj 41 104 delwrite~ \$0-tap_24_30 149.625;
+#X obj 42 128 delread~ \$0-tap_24_30 149.625;
+#X text 287 119 4453;
+#X obj 43 60 inlet~;
+#X obj 43 168 outlet~;
+#X connect 1 0 4 0;
+#X connect 3 0 0 0;
+#X restore 43 192 pd z^-4453;
+#N canvas 0 22 466 316 damping 0;
+#X obj 74 53 inlet~;
+#X obj 70 222 outlet~;
+#X obj 73 137 lop~ 22050;
+#X obj 162 137 r \$0-damping;
+#X obj 162 159 * 48000;
+#X connect 0 0 2 0;
+#X connect 2 0 1 0;
+#X connect 3 0 4 0;
+#X connect 4 0 2 1;
+#X restore 44 221 pd damping;
+#N canvas 0 22 470 320 damping 0;
+#X obj 74 53 inlet~;
+#X obj 70 222 outlet~;
+#X obj 73 137 lop~ 22050;
+#X obj 162 137 r \$0-damping;
+#X obj 162 159 * 48000;
+#X connect 0 0 2 0;
+#X connect 2 0 1 0;
+#X connect 3 0 4 0;
+#X connect 4 0 2 1;
+#X restore 256 221 pd damping;
+#N canvas 0 22 470 320 decay 0;
+#X obj 71 66 inlet~;
+#X obj 71 220 outlet~;
+#X obj 140 139 r \$0-decay;
+#X obj 70 140 *~ 0.5;
+#X connect 0 0 3 0;
+#X connect 2 0 3 1;
+#X connect 3 0 1 0;
+#X restore 43 249 pd decay;
+#N canvas 0 22 470 320 decay 0;
+#X obj 71 66 inlet~;
+#X obj 71 220 outlet~;
+#X obj 140 139 r \$0-decay;
+#X obj 70 140 *~ 0.5;
+#X connect 0 0 3 0;
+#X connect 2 0 3 1;
+#X connect 3 0 1 0;
+#X restore 257 250 pd decay;
+#N canvas 0 22 466 316 decay 0;
+#X obj 71 66 inlet~;
+#X obj 71 220 outlet~;
+#X obj 140 139 r \$0-decay;
+#X obj 70 140 *~ 0.5;
+#X connect 0 0 3 0;
+#X connect 2 0 3 1;
+#X connect 3 0 1 0;
+#X restore 43 87 pd decay;
+#N canvas 0 22 466 316 decay 0;
+#X obj 71 66 inlet~;
+#X obj 71 220 outlet~;
+#X obj 140 139 r \$0-decay;
+#X obj 70 140 *~ 0.5;
+#X connect 0 0 3 0;
+#X connect 2 0 3 1;
+#X connect 3 0 1 0;
+#X restore 273 85 pd decay;
+#N canvas 0 22 498 348 decay_diffusion1 0;
+#N canvas 232 298 494 344 excursion 0;
+#X obj 64 192 outlet~;
+#X obj 62 90 osc~ 1;
+#X obj 63 143 *~ 0.53761;
+#X obj 130 109 r \$0-excursion;
+#X connect 1 0 2 0;
+#X connect 2 0 0 0;
+#X connect 3 0 2 1;
+#X restore 133 120 pd excursion;
+#X obj 43 32 inlet~;
+#X obj 44 250 outlet~;
+#X obj 88 84 r \$0-decay_diffusion1;
+#N canvas 409 74 612 523 allpassvd 0;
+#X obj 48 83 inlet~;
+#X obj 48 296 +~;
+#X obj 285 142 loadbang;
+#X obj 285 196 t f f;
+#X obj 285 220 *;
+#X obj 229 277 *~;
+#X obj 216 300 +~;
+#X obj 94 138 * -1;
+#X obj 80 163 *~;
+#X obj 217 401 outlet~;
+#X obj 392 30 inlet~;
+#X obj 447 56 sig~;
+#X obj 447 10 loadbang;
+#X obj 390 78 +~;
+#X obj 255 45 inlet;
+#X obj 94 60 loadbang;
+#X text 9 6 arguments: delay(ms) feedback(mult);
+#X text 10 20 inlets: signal feedback(mult) excursion;
+#X obj 94 114 f 0.7;
+#X obj 230 152 *~ 0.7;
+#X obj 285 172 f 0.7;
+#X obj 391 404 +~;
+#X text 372 428 excursion;
+#X obj 48 327 delwrite~ \$0-tap_23_24 100;
+#X obj 283 101 vd~ \$0-tap_23_24;
+#X obj 447 33 f 22.5599;
+#X obj 285 244 swap 1;
+#X obj 285 268 -;
+#X connect 0 0 1 0;
+#X connect 0 0 8 0;
+#X connect 1 0 23 0;
+#X connect 2 0 20 0;
+#X connect 3 0 4 0;
+#X connect 3 1 4 1;
+#X connect 4 0 26 0;
+#X connect 5 0 6 1;
+#X connect 6 0 9 0;
+#X connect 7 0 8 1;
+#X connect 8 0 6 0;
+#X connect 10 0 13 0;
+#X connect 11 0 13 1;
+#X connect 12 0 25 0;
+#X connect 13 0 21 0;
+#X connect 13 0 24 0;
+#X connect 14 0 18 0;
+#X connect 14 0 19 1;
+#X connect 14 0 20 0;
+#X connect 15 0 18 0;
+#X connect 18 0 7 0;
+#X connect 19 0 1 1;
+#X connect 19 0 5 0;
+#X connect 20 0 3 0;
+#X connect 24 0 19 0;
+#X connect 25 0 11 0;
+#X connect 26 0 27 0;
+#X connect 26 1 27 1;
+#X connect 27 0 5 1;
+#X restore 43 150 pd allpassvd;
+#X connect 0 0 4 2;
+#X connect 1 0 4 0;
+#X connect 3 0 4 1;
+#X connect 4 0 2 0;
+#X restore 44 156 pd decay_diffusion1;
+#N canvas 0 22 529 394 decay_diffusion1 0;
+#N canvas 232 298 482 332 excursion 0;
+#X obj 65 192 outlet~;
+#X obj 63 81 osc~ 1;
+#X obj 64 134 *~ 0.53761;
+#X obj 139 104 r \$0-excursion;
+#X connect 1 0 2 0;
+#X connect 2 0 0 0;
+#X connect 3 0 2 1;
+#X restore 138 92 pd excursion;
+#X obj 49 25 inlet~;
+#X obj 49 200 outlet~;
+#X obj 93 60 r \$0-decay_diffusion1;
+#N canvas 348 52 608 519 allpassvd 0;
+#X obj 48 83 inlet~;
+#X obj 48 296 +~;
+#X obj 285 142 loadbang;
+#X obj 285 196 t f f;
+#X obj 285 220 *;
+#X obj 229 277 *~;
+#X obj 216 300 +~;
+#X obj 94 138 * -1;
+#X obj 80 163 *~;
+#X obj 217 401 outlet~;
+#X obj 392 30 inlet~;
+#X obj 447 56 sig~;
+#X obj 447 10 loadbang;
+#X obj 390 78 +~;
+#X obj 255 45 inlet;
+#X obj 94 60 loadbang;
+#X text 9 6 arguments: delay(ms) feedback(mult);
+#X text 10 20 inlets: signal feedback(mult) excursion;
+#X obj 48 327 delwrite~ \$0-tap_46_48 100;
+#X obj 283 101 vd~ \$0-tap_46_48;
+#X obj 447 33 f 30.5097;
+#X obj 94 114 f 0.7;
+#X obj 230 152 *~ 0.7;
+#X obj 285 172 f 0.7;
+#X obj 391 404 +~;
+#X text 372 428 excursion;
+#X obj 285 244 swap 1;
+#X obj 285 268 -;
+#X connect 0 0 1 0;
+#X connect 0 0 8 0;
+#X connect 1 0 18 0;
+#X connect 2 0 23 0;
+#X connect 3 0 4 0;
+#X connect 3 1 4 1;
+#X connect 4 0 26 0;
+#X connect 5 0 6 1;
+#X connect 6 0 9 0;
+#X connect 7 0 8 1;
+#X connect 8 0 6 0;
+#X connect 10 0 13 0;
+#X connect 11 0 13 1;
+#X connect 12 0 20 0;
+#X connect 13 0 19 0;
+#X connect 13 0 24 0;
+#X connect 14 0 21 0;
+#X connect 14 0 22 1;
+#X connect 14 0 23 0;
+#X connect 15 0 21 0;
+#X connect 19 0 22 0;
+#X connect 20 0 11 0;
+#X connect 21 0 7 0;
+#X connect 22 0 1 1;
+#X connect 22 0 5 0;
+#X connect 23 0 3 0;
+#X connect 26 0 27 0;
+#X connect 26 1 27 1;
+#X connect 27 0 5 1;
+#X restore 48 135 pd allpassvd;
+#X connect 0 0 4 2;
+#X connect 1 0 4 0;
+#X connect 3 0 4 1;
+#X connect 4 0 2 0;
+#X restore 256 155 pd decay_diffusion1;
+#N canvas 327 329 552 336 decay_diffusion2 0;
+#X obj 37 63 inlet~;
+#X obj 37 220 outlet~;
+#N canvas 393 22 582 586 allpass 0;
+#X obj 56 127 inlet~;
+#X obj 56 400 +~;
+#X obj 427 232 loadbang;
+#X obj 417 286 t f f;
+#X obj 417 310 *;
+#X obj 253 364 *~;
+#X obj 232 394 +~;
+#X obj 114 177 * -1;
+#X obj 88 207 *~;
+#X obj 232 426 outlet~;
+#X obj 417 129 inlet;
+#X obj 114 117 loadbang;
+#X obj 75 365 *~ -1;
+#X obj 201 364 *~ -1;
+#X obj 252 52 delread~ \$0-tap_31_33 60.4818;
+#X obj 56 491 delwrite~ \$0-tap_31_33 200;
+#X obj 114 149 f 0.5;
+#X obj 252 262 *~ 0.5;
+#X obj 417 262 f 0.5;
+#X obj 417 334 swap 1;
+#X obj 417 358 -;
+#X connect 0 0 1 0;
+#X connect 0 0 8 0;
+#X connect 1 0 15 0;
+#X connect 2 0 18 0;
+#X connect 3 0 4 0;
+#X connect 3 1 4 1;
+#X connect 4 0 19 0;
+#X connect 5 0 6 1;
+#X connect 6 0 9 0;
+#X connect 7 0 8 1;
+#X connect 8 0 13 0;
+#X connect 10 0 16 0;
+#X connect 10 0 17 1;
+#X connect 10 0 18 0;
+#X connect 11 0 16 0;
+#X connect 12 0 1 1;
+#X connect 13 0 6 0;
+#X connect 14 0 17 0;
+#X connect 16 0 7 0;
+#X connect 17 0 5 0;
+#X connect 17 0 12 0;
+#X connect 18 0 3 0;
+#X connect 19 0 20 0;
+#X connect 19 1 20 1;
+#X connect 20 0 5 1;
+#X restore 36 143 pd allpass tap_31_33;
+#X obj 191 114 r \$0-decay_diffusion2;
+#X connect 0 0 2 0;
+#X connect 2 0 1 0;
+#X connect 3 0 2 1;
+#X restore 43 277 pd decay_diffusion2;
+#N canvas 0 22 553 336 decay_diffusion2 0;
+#X obj 52 38 inlet~;
+#X obj 54 171 outlet~;
+#X obj 210 85 r \$0-decay_diffusion2;
+#N canvas 393 22 586 590 allpass 0;
+#X obj 56 127 inlet~;
+#X obj 56 400 +~;
+#X obj 427 232 loadbang;
+#X obj 417 286 t f f;
+#X obj 417 310 *;
+#X obj 253 364 *~;
+#X obj 232 394 +~;
+#X obj 114 177 * -1;
+#X obj 88 207 *~;
+#X obj 232 426 outlet~;
+#X obj 417 129 inlet;
+#X obj 114 117 loadbang;
+#X obj 75 365 *~ -1;
+#X obj 201 364 *~ -1;
+#X obj 114 149 f 0.5;
+#X obj 252 262 *~ 0.5;
+#X obj 417 262 f 0.5;
+#X obj 56 491 delwrite~ \$0-tap_55_59 200;
+#X obj 252 52 delread~ \$0-tap_55_59 89.2443;
+#X obj 417 334 swap 1;
+#X obj 417 358 -;
+#X connect 0 0 1 0;
+#X connect 0 0 8 0;
+#X connect 1 0 17 0;
+#X connect 2 0 16 0;
+#X connect 3 0 4 0;
+#X connect 3 1 4 1;
+#X connect 4 0 19 0;
+#X connect 5 0 6 1;
+#X connect 6 0 9 0;
+#X connect 7 0 8 1;
+#X connect 8 0 13 0;
+#X connect 10 0 14 0;
+#X connect 10 0 15 1;
+#X connect 10 0 16 0;
+#X connect 11 0 14 0;
+#X connect 12 0 1 1;
+#X connect 13 0 6 0;
+#X connect 14 0 7 0;
+#X connect 15 0 5 0;
+#X connect 15 0 12 0;
+#X connect 16 0 3 0;
+#X connect 18 0 15 0;
+#X connect 19 0 20 0;
+#X connect 19 1 20 1;
+#X connect 20 0 5 1;
+#X restore 55 114 pd allpass tap_55_59;
+#X connect 0 0 3 0;
+#X connect 2 0 3 1;
+#X connect 3 0 1 0;
+#X restore 256 278 pd decay_diffusion2;
+#N canvas 0 22 454 304 feedback 0;
+#X obj 43 118 outlet~;
+#X obj 44 55 delread~ \$0-tap_59_63 106.28;
+#X connect 1 0 0 0;
+#X restore 43 49 pd feedback;
+#N canvas 0 22 454 304 feedback 0;
+#X obj 81 188 outlet~;
+#X obj 81 134 delread~ \$0-tap_33_39 124.996;
+#X connect 1 0 0 0;
+#X restore 274 51 pd feedback;
+#N canvas 0 22 458 308 to_left 0;
+#X obj 48 52 inlet~;
+#X obj 48 95 delwrite~ \$0-tap_59_63 106.28;
+#X connect 0 0 1 0;
+#X restore 255 306 pd to_left;
+#N canvas 0 22 454 304 to_right 0;
+#X obj 53 173 delwrite~ \$0-tap_33_39 124.996;
+#X obj 56 100 inlet~;
+#X connect 1 0 0 0;
+#X restore 44 305 pd to_right;
+#X text 344 190 48_54;
+#X text 136 193 24_30;
+#X obj 170 357 outlet~;
+#X text 242 358 dummy;
+#X connect 0 0 1 1;
+#X connect 0 0 2 0;
+#X connect 1 0 11 0;
+#X connect 2 0 12 0;
+#X connect 3 0 6 0;
+#X connect 4 0 5 0;
+#X connect 5 0 7 0;
+#X connect 6 0 8 0;
+#X connect 7 0 13 0;
+#X connect 8 0 14 0;
+#X connect 9 0 1 0;
+#X connect 10 0 2 1;
+#X connect 11 0 4 0;
+#X connect 12 0 3 0;
+#X connect 13 0 18 0;
+#X connect 14 0 17 0;
+#X connect 15 0 9 0;
+#X connect 16 0 10 0;
+#X restore 25 238 pd reverberation_tank;
+#N canvas 58 172 593 487 predelay 0;
+#X obj 97 19 inlet~;
+#X obj 97 317 outlet~;
+#X obj 393 56 sel 0;
+#X obj 96 209 *~ 1;
+#X obj 110 178 f 1;
+#X obj 140 179 f 0;
+#X obj 428 106 t a b;
+#X obj 377 222 *~ 1;
+#X obj 402 191 f 0;
+#X obj 433 191 f 1;
+#X text 17 210 no delay;
+#X text 237 212 delay;
+#N canvas 294 159 273 227 predelay 0;
+#X obj 35 52 inlet~;
+#X obj 94 54 inlet;
+#N canvas 345 153 450 300 dw 0;
+#X obj 35 52 inlet~;
+#X obj 35 101 delwrite~ \$0-predelay 1000;
+#X obj 34 140 outlet~;
+#X connect 0 0 1 0;
+#X restore 34 84 pd dw;
+#N canvas 326 259 416 179 dr 0;
+#X obj 126 29 inlet;
+#X obj 49 28 inlet~;
+#X obj 126 65 delread~ \$0-predelay 1;
+#X obj 126 88 outlet~;
+#X connect 0 0 2 0;
+#X connect 2 0 3 0;
+#X restore 33 116 pd dr;
+#X obj 33 138 outlet~;
+#X connect 0 0 2 0;
+#X connect 1 0 3 1;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X restore 297 190 pd predelay;
+#X obj 393 25 r \$0-predelay;
+#X connect 0 0 3 0;
+#X connect 0 0 12 0;
+#X connect 2 0 4 0;
+#X connect 2 0 8 0;
+#X connect 2 1 6 0;
+#X connect 3 0 1 0;
+#X connect 4 0 3 1;
+#X connect 5 0 3 1;
+#X connect 6 0 12 1;
+#X connect 6 1 5 0;
+#X connect 6 1 9 0;
+#X connect 7 0 1 0;
+#X connect 8 0 7 1;
+#X connect 9 0 7 1;
+#X connect 12 0 7 0;
+#X connect 13 0 2 0;
+#X restore 25 145 pd predelay;
+#X obj 85 32 inlet~;
+#N canvas 0 22 458 308 bandwidth 0;
+#X obj 66 22 inlet~;
+#X obj 65 183 outlet~;
+#X obj 65 107 lop~;
+#X obj 92 44 r \$0-bandwidth;
+#X obj 92 66 * 48000;
+#X connect 0 0 2 0;
+#X connect 2 0 1 0;
+#X connect 3 0 4 0;
+#X connect 4 0 2 1;
+#X restore 25 177 pd bandwidth;
+#N canvas 0 22 458 308 1/2 0;
+#X obj 102 56 inlet~;
+#X obj 182 56 inlet~;
+#X obj 103 138 *~ 0.5;
+#X obj 103 102 +~;
+#X obj 103 175 outlet~;
+#X connect 0 0 3 0;
+#X connect 1 0 3 1;
+#X connect 2 0 4 0;
+#X connect 3 0 2 0;
+#X restore 25 112 pd 1/2;
+#N canvas 120 111 856 498 output_taps 0;
+#X obj 28 409 outlet~;
+#X obj 30 267 -~;
+#X obj 31 109 +~;
+#X obj 30 215 +~;
+#X obj 29 369 -~;
+#X text 30 26 left;
+#X obj 32 55 delread~ \$0-tap_48_54 8.93787;
+#X obj 51 82 delread~ \$0-tap_48_54 99.9294;
+#X obj 50 134 delread~ \$0-tap_55_59 64.2787;
+#X obj 31 163 -~;
+#X obj 49 188 delread~ \$0-tap_59_63 67.0676;
+#X obj 50 240 delread~ \$0-tap_24_30 66.866;
+#X obj 50 293 delread~ \$0-tap_31_33 6.28339;
+#X obj 30 317 -~;
+#X obj 49 342 delread~ \$0-tap_33_39 35.8187;
+#X obj 371 407 outlet~;
+#X obj 370 105 +~;
+#X obj 371 261 -~;
+#X obj 370 208 +~;
+#X obj 371 365 -~;
+#X text 370 20 right;
+#X obj 371 51 delread~ \$0-tap_24_30 11.8612;
+#X obj 390 78 delread~ \$0-tap_24_30 121.871;
+#X obj 390 130 delread~ \$0-tap_31_33 41.2621;
+#X obj 390 181 delread~ \$0-tap_33_39 89.8155;
+#X obj 391 234 delread~ \$0-tap_48_54 70.9317;
+#X obj 372 313 -~;
+#X obj 392 286 delread~ \$0-tap_55_59 11.2563;
+#X obj 390 338 delread~ \$0-tap_59_63 4.06572;
+#X obj 370 154 -~;
+#X obj 161 15 inlet~;
+#X text 222 15 dummy;
+#X connect 1 0 13 0;
+#X connect 2 0 9 0;
+#X connect 3 0 1 0;
+#X connect 4 0 0 0;
+#X connect 6 0 2 0;
+#X connect 7 0 2 1;
+#X connect 8 0 9 1;
+#X connect 9 0 3 0;
+#X connect 10 0 3 1;
+#X connect 11 0 1 1;
+#X connect 12 0 13 1;
+#X connect 13 0 4 0;
+#X connect 14 0 4 1;
+#X connect 16 0 29 0;
+#X connect 17 0 26 0;
+#X connect 18 0 17 0;
+#X connect 19 0 15 0;
+#X connect 21 0 16 0;
+#X connect 22 0 16 1;
+#X connect 23 0 29 1;
+#X connect 24 0 18 1;
+#X connect 25 0 17 1;
+#X connect 26 0 19 0;
+#X connect 27 0 26 1;
+#X connect 28 0 19 1;
+#X connect 29 0 18 0;
+#X restore 24 268 pd output_taps;
+#N canvas 228 198 627 317 LICENSE-BSD 0;
+#X text 121 56 This software is copyrighted by Miller Puckette \, Reality
+Jockey Ltd. and others. The terms (the "Standard Improved BSD License")
+apply to all files associated with the software unless explicitly disclaimed
+in individual files.;
+#X text 123 148 See the file LICENSE.txt for the full license text.
+;
+#X restore 373 40 pd LICENSE-BSD;
+#X msg 164 290 \$1 10;
+#X obj 187 137 inlet dry;
+#X obj 286 192 s \$0-predelay;
+#X msg 286 170 0;
+#X obj 431 192 s \$0-bandwidth;
+#X obj 431 242 s \$0-damping;
+#X obj 286 242 s \$0-decay;
+#X obj 286 292 s \$0-input_diffusion1;
+#X msg 286 270 0.75;
+#X msg 431 271 0.7;
+#X obj 431 292 s \$0-decay_diffusion1;
+#X obj 431 342 s \$0-decay_diffusion2;
+#X obj 286 342 s \$0-input_diffusion2;
+#X msg 286 320 0.625;
+#X obj 286 392 s \$0-excursion;
+#X obj 286 142 t b;
+#X obj 281 87 loadbang;
+#X obj 281 109 del 2000;
+#X obj 367 83 r tick;
+#X obj 367 105 mod 100;
+#X obj 367 127 sel 0;
+#X msg 431 171 10000;
+#X msg 286 370 0;
+#X msg 431 321 0.84;
+#X obj 23 347 c_xfade;
+#X obj 118 349 c_xfade;
+#X floatatom 542 219 5 0 0 0 - - -, f 5;
+#X floatatom 543 272 5 0 0 0 - - -, f 5;
+#X msg 286 220 0.8;
+#X msg 431 221 3000;
+#X connect 0 0 8 0;
+#X connect 0 0 35 1;
+#X connect 3 0 4 0;
+#X connect 4 0 9 0;
+#X connect 5 0 7 0;
+#X connect 6 0 8 1;
+#X connect 6 0 36 1;
+#X connect 7 0 3 0;
+#X connect 8 0 5 0;
+#X connect 9 0 35 0;
+#X connect 9 1 36 0;
+#X connect 11 0 35 2;
+#X connect 11 0 36 2;
+#X connect 12 0 11 0;
+#X connect 12 0 26 0;
+#X connect 14 0 13 0;
+#X connect 19 0 18 0;
+#X connect 20 0 21 0;
+#X connect 24 0 23 0;
+#X connect 26 0 14 0;
+#X connect 26 0 32 0;
+#X connect 26 0 39 0;
+#X connect 26 0 40 0;
+#X connect 26 0 19 0;
+#X connect 26 0 20 0;
+#X connect 26 0 34 0;
+#X connect 26 0 24 0;
+#X connect 26 0 33 0;
+#X connect 27 0 28 0;
+#X connect 28 0 26 0;
+#X connect 29 0 30 0;
+#X connect 30 0 31 0;
+#X connect 31 0 26 0;
+#X connect 32 0 15 0;
+#X connect 33 0 25 0;
+#X connect 34 0 22 0;
+#X connect 35 0 1 0;
+#X connect 36 0 2 0;
+#X connect 37 0 16 0;
+#X connect 38 0 17 0;
+#X connect 39 0 17 0;
+#X connect 40 0 16 0;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/10-Instruments/vangelisiser/hv_gte~.pd	Thu Jun 23 21:24:45 2016 +0100
@@ -0,0 +1,34 @@
+#N canvas 855 553 292 175 10;
+#X obj 150 34 inlet~;
+#X obj 45 34 inlet~;
+#X obj 45 129 outlet~;
+#N canvas 467 216 450 300 @hv_obj 0;
+#X obj 217 60 inlet~;
+#X obj 120 60 inlet~;
+#X obj 170 183 outlet~;
+#X connect 1 0 2 0;
+#X restore 45 105 pd @hv_obj __and~f;
+#X obj 150 83 sig~ 1;
+#N canvas 249 541 148 189 @hv_obj 1;
+#X obj 23 69 -~;
+#X obj 23 94 clip~ -1e-37 0;
+#X obj 23 18 inlet~;
+#X obj 67 19 inlet~;
+#X obj 23 159 outlet~;
+#X obj 23 136 *~ 1e+37;
+#X obj 23 44 min~;
+#X obj 23 115 +~ 1e-37;
+#X connect 0 0 1 0;
+#X connect 1 0 7 0;
+#X connect 2 0 6 0;
+#X connect 3 0 6 1;
+#X connect 3 0 0 1;
+#X connect 5 0 4 0;
+#X connect 6 0 0 0;
+#X connect 7 0 5 0;
+#X restore 45 57 pd @hv_obj __gte~f;
+#X connect 0 0 5 1;
+#X connect 1 0 5 0;
+#X connect 3 0 2 0;
+#X connect 4 0 3 1;
+#X connect 5 0 3 0;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/10-Instruments/vangelisiser/hv_tanh.pd	Thu Jun 23 21:24:45 2016 +0100
@@ -0,0 +1,49 @@
+#N canvas 229 24 862 575 10;
+#X obj 81 124 inlet~;
+#X text 293 426 __;
+#X text 375 426 __;
+#X text 327 426 __;
+#X text 426 426 __;
+#X text 293 443 1 +;
+#X text 329 443 3 +;
+#X text 377 443 5 +;
+#X text 427 443 7 +;
+#X text 243 369 As a continued fraction;
+#X obj 96 211 *~;
+#X obj 81 322 /~;
+#X obj 81 412 /~;
+#X obj 81 352 /~;
+#X obj 81 382 /~;
+#X text 227 415 tanh(z) = z z^2 4z^2 9z^2 ...;
+#X obj 148 238 *~ 4;
+#X obj 147 269 +~ 3;
+#X obj 191 237 *~ 9;
+#X obj 190 268 +~ 5;
+#X obj 231 238 *~ 16;
+#X obj 230 268 +~ 7;
+#X obj 96 269 +~ 1;
+#X obj 81 472 outlet~;
+#X obj 81 442 *~ 576;
+#X obj 81 154 *~ 0.308319;
+#X text 159 155 1/pi;
+#X text 285 476 via Andy Farnell 2009;
+#X connect 0 0 25 0;
+#X connect 10 0 16 0;
+#X connect 10 0 18 0;
+#X connect 10 0 20 0;
+#X connect 10 0 22 0;
+#X connect 11 0 13 0;
+#X connect 12 0 24 0;
+#X connect 13 0 14 0;
+#X connect 14 0 12 0;
+#X connect 16 0 17 0;
+#X connect 17 0 13 1;
+#X connect 18 0 19 0;
+#X connect 19 0 14 1;
+#X connect 20 0 21 0;
+#X connect 21 0 12 1;
+#X connect 22 0 11 1;
+#X connect 24 0 23 0;
+#X connect 25 0 10 1;
+#X connect 25 0 10 0;
+#X connect 25 0 11 0;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/10-Instruments/vangelisiser/k.ramp.pd	Thu Jun 23 21:24:45 2016 +0100
@@ -0,0 +1,68 @@
+#N canvas 313 400 372 357 10;
+#X obj 86 156 -;
+#X obj 53 201 * 2;
+#X obj 175 95 inlet radius;
+#X obj 86 95 inlet centre;
+#X obj 86 115 f \$1;
+#X obj 175 115 f \$2;
+#X obj 260 98 loadbang;
+#X obj 94 135 t b f;
+#X obj 32 75 inlet value;
+#X obj 32 173 - 0;
+#X obj 32 221 / 1;
+#X obj 32 241 clip 0 1;
+#X obj 32 304 outlet;
+#X obj 32 262 * 511;
+#N canvas 0 22 300 350 init 0;
+#X obj 153 80 t f f;
+#X obj 153 8 loadbang;
+#X msg 24 252 0;
+#X obj 24 101 sel 1 511;
+#X obj 75 126 / 512;
+#X obj 75 146 * 6.28319;
+#X obj 75 166 cos;
+#X obj 75 207 * 0.5;
+#X obj 75 186 + 1;
+#X msg 75 227 1 \$1;
+#X obj 75 247 -;
+#X obj 153 50 k.tommygun 513;
+#X obj 75 272 tabwrite \$0-ramp;
+#X obj 75 292 table \$0-ramp 513;
+#X connect 0 0 3 0;
+#X connect 0 1 12 1;
+#X connect 1 0 11 0;
+#X connect 2 0 12 0;
+#X connect 3 0 2 0;
+#X connect 3 1 2 0;
+#X connect 3 2 4 0;
+#X connect 4 0 5 0;
+#X connect 5 0 6 0;
+#X connect 6 0 8 0;
+#X connect 7 0 9 0;
+#X connect 8 0 7 0;
+#X connect 9 0 10 0;
+#X connect 10 0 12 0;
+#X connect 11 0 0 0;
+#X restore 241 305 pd init;
+#X obj 32 284 tabread \$0-ramp;
+#X text 31 18 Ramps up/down towards value based on radius parameter
+;
+#X text 31 28 =====================================================
+;
+#X connect 0 0 9 1;
+#X connect 1 0 10 1;
+#X connect 2 0 5 0;
+#X connect 3 0 4 0;
+#X connect 4 0 0 0;
+#X connect 5 0 1 0;
+#X connect 5 0 7 0;
+#X connect 6 0 4 0;
+#X connect 6 0 5 0;
+#X connect 7 0 0 0;
+#X connect 7 1 0 1;
+#X connect 8 0 9 0;
+#X connect 9 0 10 0;
+#X connect 10 0 11 0;
+#X connect 11 0 13 0;
+#X connect 13 0 15 0;
+#X connect 15 0 12 0;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/10-Instruments/vangelisiser/k.ramp~.pd	Thu Jun 23 21:24:45 2016 +0100
@@ -0,0 +1,69 @@
+#N canvas 1322 824 351 339 10;
+#X obj 68 131 -;
+#X obj 35 176 * 2;
+#X obj 14 196 /~ 1;
+#X obj 14 148 -~ 0;
+#X obj 157 70 inlet radius;
+#X obj 68 70 inlet centre;
+#X obj 68 90 f \$1;
+#X obj 157 90 f \$2;
+#X obj 242 73 loadbang;
+#X obj 14 279 outlet~;
+#X obj 14 50 inlet~ signal;
+#X obj 76 110 t b f;
+#X obj 14 216 clip~ 0 1;
+#X obj 14 237 *~ 512;
+#N canvas 0 22 300 350 init 0;
+#X obj 153 80 t f f;
+#X obj 153 8 loadbang;
+#X msg 24 252 0;
+#X obj 24 101 sel 1 511;
+#X obj 75 126 / 512;
+#X obj 75 146 * 6.28319;
+#X obj 75 166 cos;
+#X obj 75 207 * 0.5;
+#X obj 75 186 + 1;
+#X msg 75 227 1 \$1;
+#X obj 75 247 -;
+#X obj 153 50 k.tommygun 513;
+#X obj 75 272 tabwrite \$0-ramp;
+#X obj 75 292 table \$0-ramp 513;
+#X connect 0 0 3 0;
+#X connect 0 1 12 1;
+#X connect 1 0 11 0;
+#X connect 2 0 12 0;
+#X connect 3 0 2 0;
+#X connect 3 1 2 0;
+#X connect 3 2 4 0;
+#X connect 4 0 5 0;
+#X connect 5 0 6 0;
+#X connect 6 0 8 0;
+#X connect 7 0 9 0;
+#X connect 8 0 7 0;
+#X connect 9 0 10 0;
+#X connect 10 0 12 0;
+#X connect 11 0 0 0;
+#X restore 254 283 pd init;
+#X text 11 18 Ramps up/down towards value based on radius parameter
+;
+#X text 11 28 =====================================================
+;
+#X obj 14 259 tabread4~ \$0-ramp;
+#X text 254 308 @krighxz 2014;
+#X connect 0 0 3 1;
+#X connect 1 0 2 1;
+#X connect 2 0 12 0;
+#X connect 3 0 2 0;
+#X connect 4 0 7 0;
+#X connect 5 0 6 0;
+#X connect 6 0 0 0;
+#X connect 7 0 1 0;
+#X connect 7 0 11 0;
+#X connect 8 0 6 0;
+#X connect 8 0 7 0;
+#X connect 10 0 3 0;
+#X connect 11 0 0 0;
+#X connect 11 1 0 1;
+#X connect 12 0 13 0;
+#X connect 13 0 17 0;
+#X connect 17 0 9 0;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/10-Instruments/vangelisiser/k.tommygun.pd	Thu Jun 23 21:24:45 2016 +0100
@@ -0,0 +1,25 @@
+#N canvas 938 613 156 229 10;
+#X obj 28 93 f;
+#X msg 111 137 0;
+#X obj 54 137 sel 1 0;
+#X obj 54 93 + 1;
+#X msg 28 71 0;
+#X obj 26 137 - 1;
+#X obj 26 189 outlet;
+#X obj 28 50 inlet;
+#X obj 54 116 < \$1;
+#X obj 54 159 del 0;
+#X text 15 11 Simple counter;
+#X text 15 21 ==============;
+#X connect 0 0 3 0;
+#X connect 1 0 0 1;
+#X connect 2 0 9 0;
+#X connect 2 1 1 0;
+#X connect 3 0 0 1;
+#X connect 3 0 5 0;
+#X connect 3 0 8 0;
+#X connect 4 0 0 0;
+#X connect 5 0 6 0;
+#X connect 7 0 4 0;
+#X connect 8 0 2 0;
+#X connect 9 0 0 0;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/10-Instruments/vangelisiser/predel.pd	Thu Jun 23 21:24:45 2016 +0100
@@ -0,0 +1,62 @@
+#N canvas 1202 971 629 513 10;
+#X obj 34 58 inlet~;
+#X obj 43 246 delwrite~ \$0-l 100;
+#X obj 173 246 delwrite~ \$0-r 100;
+#X obj 68 290 vd~ \$0-l;
+#X obj 177 283 vd~ \$0-r;
+#X obj 325 97 inlet~ pan;
+#X obj 325 119 *~ 5;
+#X obj 365 141 *~ -1;
+#X obj 325 171 +~ 6;
+#X obj 365 171 +~ 6;
+#X obj 48 330 outlet~;
+#X obj 178 330 outlet~;
+#X obj 460 99 inlet time;
+#X text 43 27 ultra basic presedence delay;
+#X text 43 37 ============================;
+#X obj 401 24 loadbang;
+#X obj 401 46 f \$1;
+#X obj 401 68 route 0;
+#X obj 460 121 + 5;
+#X obj 205 88 *~ 0.5;
+#X obj 205 109 +~ 0.5;
+#X obj 149 115 sig~ 1;
+#X obj 149 137 -~;
+#X obj 20 217 *~;
+#X obj 118 206 *~;
+#X obj 149 160 *~ 0.5;
+#X obj 199 159 *~ 0.5;
+#X obj 149 182 +~ 0.5;
+#X obj 199 182 +~ 0.5;
+#X connect 0 0 23 0;
+#X connect 0 0 24 0;
+#X connect 3 0 10 0;
+#X connect 4 0 11 0;
+#X connect 5 0 6 0;
+#X connect 5 0 19 0;
+#X connect 6 0 7 0;
+#X connect 6 0 8 0;
+#X connect 7 0 9 0;
+#X connect 8 0 3 0;
+#X connect 9 0 4 0;
+#X connect 12 0 6 1;
+#X connect 12 0 18 0;
+#X connect 15 0 16 0;
+#X connect 16 0 17 0;
+#X connect 17 1 6 1;
+#X connect 17 1 18 0;
+#X connect 18 0 9 1;
+#X connect 18 0 8 1;
+#X connect 19 0 20 0;
+#X connect 20 0 22 1;
+#X connect 20 0 26 0;
+#X connect 21 0 22 0;
+#X connect 22 0 25 0;
+#X connect 23 0 1 0;
+#X connect 23 0 10 0;
+#X connect 24 0 2 0;
+#X connect 24 0 11 0;
+#X connect 25 0 27 0;
+#X connect 26 0 28 0;
+#X connect 27 0 23 1;
+#X connect 28 0 24 1;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/10-Instruments/vangelisiser/vangex.pd	Thu Jun 23 21:24:45 2016 +0100
@@ -0,0 +1,68 @@
+#N canvas 1707 210 456 633 10;
+#X obj 95 271 phasor~ 5;
+#X obj 95 347 rpole~ 1;
+#X obj 179 304 sig~ 0.1;
+#X obj 95 552 delwrite~ \$0-vang 1000;
+#X obj 252 356 vd~ \$0-vang;
+#X obj 95 119 inlet midinote;
+#X obj 252 552 outlet~;
+#X obj 252 400 hip~ 1;
+#X obj 252 422 hv_tanh;
+#X obj 95 451 *~;
+#X obj 110 430 r~ _gain;
+#X obj 322 275 *~ 0.01;
+#X obj 322 297 +~ 1;
+#X obj 252 327 *~;
+#X obj 322 251 inlet~ harmonicMod;
+#X obj 95 186 mtof~;
+#X obj 44 142 r~ fmod;
+#X obj 95 141 sig~;
+#X obj 252 216 sig~ 1000;
+#X obj 252 238 /~;
+#X obj 95 503 *~;
+#X obj 110 481 inlet~ gain;
+#X obj 95 369 *~ 0.0001;
+#X obj 252 296 *~ 2;
+#X obj 159 528 lop~ 4000;
+#X obj 252 444 lop~ 4000;
+#X obj 95 391 lop~ 1000;
+#X obj 252 378 *~ 0.98;
+#X obj 252 274 lop~ 4;
+#X text 33 23 Single voice for vangelis-inspired synthesiser;
+#X text 33 37 Combines a pulse-width modulated squarewave;
+#X text 33 51 with a delay line tuned to the same frequency;
+#X text 33 64 feeding back into itself. Changing the tuning of;
+#X text 33 77 the delay line results in nice trumpet-like effects;
+#X text 353 590 @krighxz 2016;
+#X obj 140 325 hv_gte~;
+#X connect 0 0 1 0;
+#X connect 0 0 35 0;
+#X connect 1 0 22 0;
+#X connect 2 0 35 1;
+#X connect 4 0 27 0;
+#X connect 5 0 17 0;
+#X connect 7 0 8 0;
+#X connect 8 0 25 0;
+#X connect 9 0 20 0;
+#X connect 10 0 9 1;
+#X connect 11 0 12 0;
+#X connect 12 0 13 1;
+#X connect 13 0 4 0;
+#X connect 14 0 11 0;
+#X connect 15 0 0 0;
+#X connect 15 0 19 1;
+#X connect 16 0 15 0;
+#X connect 17 0 15 0;
+#X connect 18 0 19 0;
+#X connect 19 0 28 0;
+#X connect 20 0 3 0;
+#X connect 21 0 20 1;
+#X connect 22 0 26 0;
+#X connect 23 0 13 0;
+#X connect 24 0 3 0;
+#X connect 25 0 6 0;
+#X connect 26 0 9 0;
+#X connect 27 0 7 0;
+#X connect 27 0 24 0;
+#X connect 28 0 23 0;
+#X connect 35 0 1 1;