diff --git a/@postman/platformio.ini b/@postman/platformio.ini
new file mode 100644
index 0000000..1affa13
--- /dev/null
+++ b/@postman/platformio.ini
@@ -0,0 +1,45 @@
+; < NOTE >
+
+; to enable verbose output add option -->
+; $ platformio run --verbose
+
+; to make this permanent for the proj. -->
+; $ platformio settings set force_verbose Yes
+
+; then confirm the change -->
+; $ platformio settings get
+
+
+; // pio v 4.0 'Build options'
+; - build_type
+; - build_flags
+; - src_build_flags
+; - build_unflags
+; - src_filter
+; - targets
+
+
+[platformio]
+default_envs = d1_mini_pro
+
+[env]
+framework = arduino
+upload_port = /dev/ttyUSB0
+lib_deps =
+; SPI
+; Wire
+ 721 ; TaskScheduler
+
+[env:nodemcuv2]
+platform = espressif8266
+board = nodemcuv2
+lib_deps =
+ ${env.lib_deps}
+upload_speed = 921600 ; 9600, 19200, 38400, 57600, 115200, 230400, 460800, 921600
+
+[env:d1_mini_pro]
+platform = espressif8266
+board = d1_mini_pro
+lib_deps =
+ ${env.lib_deps}
+upload_speed = 460800 ; 9600, 19200, 38400, 57600, 115200, 230400, 460800, 921600
diff --git a/@postman/src/main.cpp b/@postman/src/main.cpp
new file mode 100644
index 0000000..b6a8efe
--- /dev/null
+++ b/@postman/src/main.cpp
@@ -0,0 +1,400 @@
+//
+// wirelessly connected cloud (based on ESP-NOW, a kind of LPWAN?)
+//
+
+//
+// Conversation about the ROOT @ SEMA warehouses, Seoul
+//
+
+//
+// 2021 02 15
+//
+// (part-1) esp8266 : 'postman' (the esp-now network nodes)
+//
+// this module will be an esp-now node in a group.
+// like, a bird in a group of birds.
+//
+// esp-now @ esp8266 DO support broadcast address (FF:FF:FF:FF:FF:FF)
+// w/ NONOS-SDK of espressif
+// and you can enable that w/ Platformio, applying some special build flags.
+// --> https://github.com/esp8266/Arduino/issues/6174#issuecomment-509115454
+// (yet, w/ Arduino, this is not available yet.)
+//
+// so, at first, we will simply/stably go w/o broadcasting.
+// and, if broadcast is really needed we can activate (@Platformio)
+//
+
+
+// then, let is save a value in EEPROM (object with memory)
+// no broadcast for now. if needed we can achieve that too.
+
+
+
+//=====================
+//
+// 'HAVE_CLIENT'
+// --> i have a client. enable the client task.
+//
+// 'SERIAL_SWAP'
+// --> UART pin swapped.
+// you want this, when you want a bi-directional comm. to external client boards (e.g. teensy).
+//
+// 'DISABLE_AP'
+// --> (questioning)...
+//
+// 'HAVE_CLIENT_I2C'
+// --> i have a client w/ I2C i/f. enable the I2C client task.
+//
+//====================
+
+//=====================
+//
+// (1) standalone
+#if 0
+// (2) osc client (the ROOT)
+#elif 0
+#define SERIAL_SWAP
+#define HAVE_CLIENT
+// (3) sampler client
+#elif 1
+#define HAVE_CLIENT_I2C
+#define DISABLE_AP
+//
+#endif
+//
+//====================
+
+//========================
+//
+#define MY_BOOK ("root")
+// #define MY_BOOK ("friend")
+// #define MY_BOOK ("sampler")
+//
+#define PEER_COUNT_MAX (20)
+//
+#define LED_PERIOD (11111)
+#define LED_ONTIME (1)
+#define LED_GAPTIME (222)
+//
+#define WIFI_CHANNEL 5
+//
+// 'MONITORING_SERIAL'
+//
+// --> sometimes, the 'Serial' is in use (for example, 'osc' node)
+// then, use 'Serial1' - D4/GPIO2/TDX1 @ nodemcu (this is TX only.)
+//
+// --> otherwise, MONITORING_SERIAL == Serial.
+//
+#if defined(SERIAL_SWAP)
+#define MONITORING_SERIAL (Serial1)
+#else
+#define MONITORING_SERIAL (Serial)
+#endif
+//
+//=======================
+
+//========================
+#if defined(ARDUINO_FEATHER_ESP32) // featheresp32
+#define LED_PIN 13
+#else
+#define LED_PIN 2
+#endif
+//=======================
+
+//arduino
+#include
+
+//i2c
+#include
+
+//post & addresses
+#include "../../post.h"
+AddressLibrary library;
+
+//espnow
+#include
+#include
+
+// on 'sent'
+void onDataSent(uint8_t *mac_addr, uint8_t sendStatus) {
+ if (sendStatus != 0) MONITORING_SERIAL.println("Delivery failed!");
+}
+
+// on 'receive'
+void onDataReceive(uint8_t * mac, uint8_t *incomingData, uint8_t len) {
+
+ //
+ //MONITORING_SERIAL.write(incomingData, len);
+
+ //
+#if defined(HAVE_CLIENT)
+ Serial.write(incomingData, len); // we pass it over to the client.
+#endif
+
+ // open => identify => use.
+ if (incomingData[0] == '[' && incomingData[len - 1] == ']' && len == (sizeof(Note) + 2)) {
+ Note note;
+ memcpy((uint8_t *) ¬e, incomingData + 1, sizeof(Note));
+ //
+ MONITORING_SERIAL.println(note.to_string());
+ //
+
+ #if defined(HAVE_CLIENT_I2C)
+
+ // (struct --> obsolete I2C format.)
+ // --> we want to open & re-construct the msg.
+
+ // letter frame ( '[' + 30 bytes + ']' )
+ // : [123456789012345678901234567890]
+
+ // 'MIDI' letter frame
+ // : [123456789012345678901234567890]
+ // : [KKKVVVG.......................]
+ // : KKK - Key
+ // .substring(1, 4);
+ // : VVV - Velocity (volume/amp.)
+ // .substring(4, 7);
+ // : G - Gate (note on/off)
+ // .substring(7, 8);
+
+ char letter_outro[POST_BUFF_LEN] = "................................";
+ sprintf(letter_outro, "[%03d%03d%01d.......................]",
+ (int32_t)note.pitch,
+ (int32_t)note.velocity,
+ (int32_t)note.onoff);
+ String msg = String(letter_outro);
+
+ // truncate any extra. letters.
+ msg = msg.substring(0, POST_LENGTH); // (0) ~ (POST_LENGTH-1)
+
+ // send out
+ Wire.beginTransmission(I2C_ADDR);
+ Wire.write(msg.c_str(), POST_LENGTH);
+ Wire.endTransmission();
+
+ #endif
+
+ //-*-*-*-*-*-*-*-*-*-
+ // use 'note' here...
+ // ==> N.B.: "callback function runs from a high-priority Wi-Fi task.
+ // So, do not do lengthy operations in the callback function.
+ // Instead, post the necessary data to a queue and handle it from a lower priority task."
+ //-*-*-*-*-*-*-*-*-*-
+ }
+}
+
+//task
+#include
+Scheduler runner;
+
+//task #0 : blink led
+extern Task blink_task;
+void blink() {
+ //
+ static int count = 0;
+ count++;
+ //
+ switch (count % 4) {
+ case 0:
+ digitalWrite(LED_PIN, LOW); // first ON
+ blink_task.delay(LED_ONTIME);
+ break;
+ case 1:
+ digitalWrite(LED_PIN, HIGH); // first OFF
+ blink_task.delay(LED_GAPTIME);
+ break;
+ case 2:
+ digitalWrite(LED_PIN, LOW); // second ON
+ blink_task.delay(LED_ONTIME);
+ break;
+ case 3:
+ digitalWrite(LED_PIN, HIGH); // second OFF
+ blink_task.delay(LED_PERIOD - 2* LED_ONTIME - LED_GAPTIME);
+ break;
+ }
+}
+Task blink_task(0, TASK_FOREVER, &blink, &runner, true); // -> ENABLED, at start-up.
+
+//task #1 : regular post collection
+#if defined(HAVE_CLIENT)
+void collect_post() {
+ //
+ //postman (serial comm.)
+ static bool insync = false;
+ if (insync == false) {
+ while (Serial.available() > 0) {
+ // search the last byte
+ char last = Serial.read();
+ // expectable last of the messages
+ if (last == ']' || last == '}') {
+ insync = true;
+ }
+ }
+ } else {
+ //
+ if (Serial.available() > 0) {
+ //
+ char type = Serial.peek();
+ //
+ if (type == '[') {
+ //expecting a Note message.
+ uint8_t frm_size = sizeof(Note) + 2;
+ //
+ if (Serial.available() >= frm_size) {
+ //
+ uint8_t frm[frm_size];
+ //
+ Serial.readBytes(frm, frm_size);
+ char first = frm[0];
+ char last = frm[frm_size - 1];
+ if (first == '[' && last == ']') {
+ //
+ //good. ==> ok, post it.
+ //
+ //pseudo-broadcast using peer-list!
+ //
+ esp_now_send(NULL, frm, frm_size);
+ //
+ MONITORING_SERIAL.write(frm, frm_size);
+ MONITORING_SERIAL.print(" ==(esp_now_send/0)==> ");
+ //
+ } else {
+ insync = false; //error!
+ }
+ }
+ }
+ }
+ }
+}
+Task collect_post_task(1, TASK_FOREVER, &collect_post, &runner, true); // by default, ENABLED
+#endif
+
+//
+void setup() {
+
+ //led
+ pinMode(LED_PIN, OUTPUT);
+
+ //serial
+ Serial.begin(115200);
+ delay(100);
+
+ //info
+ Serial.println();
+ Serial.println();
+ Serial.println("\"hi, i m your postman.\"");
+ Serial.println("-");
+ Serial.println("- * info >>>");
+ Serial.println("- mac address: " + WiFi.macAddress());
+ Serial.println("- wifi channel: " + String(WIFI_CHANNEL));
+ Serial.println("-");
+ Serial.println("- * conf >>>");
+#if defined(HAVE_CLIENT)
+ Serial.println("- ======== 'HAVE_CLIENT' ========");
+#endif
+#if defined(SERIAL_SWAP)
+ Serial.println("- ======== 'SERIAL_SWAP' ========");
+#endif
+#if defined(DISABLE_AP)
+ Serial.println("- ======== 'DISABLE_AP' ========");
+#endif
+#if defined(HAVE_CLIENT_I2C)
+ Serial.println("- ======== 'HAVE_CLIENT_I2C' ========");
+#endif
+ Serial.println("-");
+ Serial.println("- * address library >>>");
+ for (uint32_t j = 0; j < library.lib.size(); j++) {
+ Serial.println("-");
+ Serial.println("- * (" + String(j + 1) + ") - \"" + library.lib[j].title + "\" >>>");
+ Serial.println("-");
+ for (uint32_t i = 0; i < library.lib[j].list.size(); i++) {
+ Serial.println("- " + library.lib[j].list[i].to_string());
+ }
+ }
+ Serial.println("-");
+ Serial.println("\".-.-.-. :)\"");
+ Serial.println();
+
+ //wifi
+ WiFiMode_t node_type = WIFI_AP_STA;
+#if defined(DISABLE_AP)
+ system_phy_set_max_tpw(0);
+ node_type = WIFI_STA;
+#endif
+ WiFi.mode(node_type);
+
+ //esp-now
+ if (esp_now_init() != 0) {
+ Serial.println("Error initializing ESP-NOW");
+ return;
+ }
+ esp_now_set_self_role(ESP_NOW_ROLE_COMBO);
+ esp_now_register_send_cb(onDataSent);
+ esp_now_register_recv_cb(onDataReceive);
+
+ //
+ AddressBook* members = library.getBookByTitle(MY_BOOK);
+ Serial.println("! registering peers in the book titled: \"" + String(MY_BOOK) + "\"");
+
+ //
+ if (members == NULL) {
+ //oh, no such book!
+ Serial.println("---- :( oh, no such book! ===> " + String(MY_BOOK));
+ Serial.println(" .... no peer will be registered. come back with different 'title' !");
+ } else {
+ Serial.println("---- :) oki-doki, found it!");
+ Serial.println();
+ //
+ for (uint32_t i = 0; i < members->list.size(); i++) {
+ if (i >= PEER_COUNT_MAX) {
+ Serial.println("(!) @@@@ Hey, no more free-slot. @@@@ ==> " + members->list[i].to_string() + " ==> IGNORED :(");
+ } else {
+ //some decoration?
+ Serial.print("" + String((i + 1)%10) + "_ ");
+ for (uint32_t k = 0; k < i; k++) Serial.print(" ");
+ //
+ Serial.println("~~>> 'esp_now_add_peer' with ... " + members->list[i].to_string());
+ esp_now_add_peer(members->list[i].mac, ESP_NOW_ROLE_COMBO, 1, NULL, 0); // <-- '1' : "Channel does not affect any function" ... *.-a
+ //
+ // int esp_now_add_peer(u8 *mac_addr, u8 role, u8 channel, u8 *key, u8 key_len)
+ // - https://www.espressif.com/sites/default/files/documentation/2c-esp8266_non_os_sdk_api_reference_en.pdf
+ //
+ // "Channel does not affect any function, but only stores the channel information
+ // for the application layer. The value is defined by the application layer. For
+ // example, 0 means that the channel is not defined; 1 ~ 14 mean valid
+ // channels; all the rest values can be assigned functions that are specified
+ // by the application layer."
+ // - https://www.espressif.com/sites/default/files/documentation/esp-now_user_guide_en.pdf
+ }
+ }
+ }
+ Serial.println("-");
+ Serial.println("\".-.-.-. :)\"");
+ Serial.println();
+
+#if defined(SERIAL_SWAP)
+ Serial.println("- ======== 'SERIAL_SWAP' ========");
+ // a proper say goodbye.
+ Serial.println("\"bye, i will do 'swap' in 1 second. find me on alternative pins!\"");
+ Serial.println("\" hint: osc wiring ==> esp8266(serial.swap) <-> teensy(serial3)\"");
+ Serial.println("-");
+ Serial.println("\".-.-.-. :)\"");
+ delay(1000); // flush out unsent serial messages.
+
+ // moving...
+ Serial.swap(); // use RXD2/TXD2 pins, afterwards.
+ delay(100); // wait re-initialization of the 'Serial'
+#endif
+
+ //
+#if defined(HAVE_CLIENT_I2C)
+ //i2c master
+ Wire.begin();
+#endif
+}
+
+void loop() {
+ //
+ runner.execute();
+ //
+}
diff --git a/@sampler/platformio.ini b/@sampler/platformio.ini
index 0d45977..dd99e35 100644
--- a/@sampler/platformio.ini
+++ b/@sampler/platformio.ini
@@ -14,8 +14,9 @@ default_envs = teensy35
[common]
lib_ignore = Audio, SD
lib_deps =
- 721@3.0.2 ; TaskScheduler
- 322@1.0.7 ; SdFat
+ 721 ; TaskScheduler
+ SPI
+; 322@1.0.7 ; SdFat
[env:teensy35]
platform = teensy@3.6.0
diff --git a/@sampler/src/main.cpp b/@sampler/src/main.cpp
index c9c9053..7079930 100644
--- a/@sampler/src/main.cpp
+++ b/@sampler/src/main.cpp
@@ -1,16 +1,13 @@
//
-// wirelessly connected cloud (Wireless Mesh Networking)
-// MIDI-like
-// spacial
-// sampler keyboard
+// wirelessly connected cloud (based on ESP-NOW, a kind of LPWAN?)
//
//
-// Forest all/around @ MMCA, Seoul
+// Conversation about the ROOT @ SEMA warehouses, Seoul
//
//
-// 2019 12 11
+// 2021 02 15
//
// (part-3) teensy35 : 'client:sampler' (mesh post --> play sounds)
//
diff --git a/puredata/limitcnt-help.pd b/puredata/limitcnt-help.pd
new file mode 100644
index 0000000..21fb79c
--- /dev/null
+++ b/puredata/limitcnt-help.pd
@@ -0,0 +1,12 @@
+#N canvas 1 89 450 300 12;
+#X obj 82 72 bng 15 250 50 0 empty empty -(dec) 17 7 0 10 -262144 -1
+-1;
+#X obj 163 72 bng 15 250 50 0 empty empty +(inc) 17 7 0 10 -262144
+-1 -1;
+#X floatatom 82 137 5 0 0 0 - - -;
+#X obj 82 104 limitcnt 0 8;
+#X text 195 102 count from 0 to 8;
+#X text 195 122 always stay in the range;
+#X connect 0 0 3 0;
+#X connect 1 0 3 1;
+#X connect 3 0 2 0;
diff --git a/puredata/limitcnt.pd b/puredata/limitcnt.pd
new file mode 100644
index 0000000..957ef65
--- /dev/null
+++ b/puredata/limitcnt.pd
@@ -0,0 +1,53 @@
+#N canvas 414 282 439 376 12;
+#X obj 141 161 f;
+#X obj 171 161 +;
+#X obj 49 49 t b b;
+#X obj 231 51 t b b;
+#X floatatom 171 196 5 0 0 0 - - -;
+#X floatatom 263 304 5 0 0 0 - - -;
+#X msg 28 216 0;
+#X obj 352 140 f \$2;
+#X msg 352 190 set \$1;
+#X obj 263 273 moses;
+#X obj 352 109 loadbang;
+#X msg 352 247 8;
+#X obj 263 328 outlet;
+#X obj 49 18 inlet;
+#X obj 231 20 inlet;
+#X obj 28 115 loadbang;
+#X obj 28 146 f \$1;
+#X obj 171 242 moses;
+#X msg 28 171 set \$1;
+#X text 27 292 bangged counter from \$1 to \$2;
+#X text 27 312 limited at each edges;
+#X obj 295 199 + 1;
+#X msg 117 69 -1;
+#X msg 263 141 1;
+#X connect 0 0 1 0;
+#X connect 1 0 0 1;
+#X connect 1 0 4 0;
+#X connect 2 0 0 0;
+#X connect 2 1 22 0;
+#X connect 3 0 0 0;
+#X connect 3 1 23 0;
+#X connect 4 0 17 0;
+#X connect 5 0 12 0;
+#X connect 6 0 0 1;
+#X connect 7 0 21 0;
+#X connect 7 0 8 0;
+#X connect 8 0 11 0;
+#X connect 9 0 5 0;
+#X connect 9 1 11 0;
+#X connect 10 0 7 0;
+#X connect 11 0 0 1;
+#X connect 13 0 2 0;
+#X connect 14 0 3 0;
+#X connect 15 0 16 0;
+#X connect 16 0 18 0;
+#X connect 16 0 17 1;
+#X connect 17 0 6 0;
+#X connect 17 1 9 0;
+#X connect 18 0 6 0;
+#X connect 21 0 9 1;
+#X connect 22 0 1 1;
+#X connect 23 0 1 1;
diff --git a/puredata/piano_access_mesh_x_2.pd b/puredata/piano_access_mesh_x_2.pd
index c74da52..04eb647 100644
--- a/puredata/piano_access_mesh_x_2.pd
+++ b/puredata/piano_access_mesh_x_2.pd
@@ -1,125 +1,20 @@
-#N canvas 1 143 1308 594 10;
-#X obj 20 126 unpackOSC;
-#X obj 107 18 loadbang;
-#X msg 147 91 devices;
-#X obj 20 147 routeOSC /note;
-#X floatatom 20 189 5 0 0 0 - - -;
-#X floatatom 77 189 5 0 0 0 - - -;
-#X floatatom 135 189 5 0 0 0 - - -;
-#X obj 20 105 o.io.slipserial;
-#X msg 215 108 close;
-#X obj 20 209 pack f f f;
-#X obj 20 230 s NOTE;
-#X obj 20 168 routeOSC /pitch /velocity /onoff /oncnt;
-#X floatatom 193 189 5 0 0 0 - - -;
-#X obj 451 140 o.io.slipserial;
-#X msg 480 89 devices;
-#X msg 567 94 close;
-#X obj 1057 228 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1
-0 1;
-#X text 958 32 NOTE! -->;
-#X obj 1021 24 cnv 15 100 60 empty empty empty 20 12 0 14 -261234 -66577
-0;
-#X msg 1028 47 /note 60 100 1;
-#X text 1027 27 well.. if we do like..;
-#X text 1027 67 w/o bundling.. why not?;
-#X obj 1010 251 t a b;
-#X msg 1037 272 [;
-#X obj 451 63 packOSC;
-#X msg 941 272 ];
-#X obj 941 251 t b a;
-#X obj 941 203 r NOTE;
-#X obj 941 224 unpack f f f;
-#X text 987 202 /pitch /velocity /onoff;
-#X msg 975 318 /note/velocity \$1;
-#X msg 968 339 /note/pitch \$1;
-#X obj 902 308 s OSC;
-#X obj 451 38 r OSC;
-#X obj 86 245 tgl 125 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+#N canvas 542 326 804 465 10;
+#X obj 397 140 print CTRL;
+#X obj 397 82 r CTRL;
+#X obj 397 103 spigot;
+#X obj 446 88 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
-#N canvas 0 23 255 233 midi-in 0;
-#X obj 17 14 notein 1;
-#X floatatom 17 35 5 0 0 0 - - -;
-#X floatatom 55 35 5 0 0 0 - - -;
-#X obj 55 55 t a a;
-#X floatatom 17 113 5 0 0 0 - - -;
-#X floatatom 55 113 5 0 0 0 - - -;
-#X floatatom 89 113 5 0 0 0 - - -;
-#X obj 17 133 pack f f f;
-#X obj 17 154 s NOTE;
-#X obj 89 76 != 0;
-#X obj 89 154 outlet;
-#X connect 0 0 1 0;
-#X connect 0 1 2 0;
-#X connect 1 0 4 0;
-#X connect 2 0 3 0;
-#X connect 3 0 5 0;
-#X connect 3 1 9 0;
-#X connect 4 0 7 0;
-#X connect 5 0 7 1;
-#X connect 6 0 7 2;
-#X connect 6 0 10 0;
-#X connect 7 0 8 0;
-#X connect 9 0 6 0;
-#X restore 156 222 pd midi-in;
-#X obj 976 104 r NOTE;
-#X msg 1010 297 /note/onoff \$1;
-#X floatatom 975 272 5 0 0 0 - - -;
-#X obj 1090 119 loadbang;
-#X msg 1090 144 127;
-#X obj 979 246 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
--1 -1;
-#X obj 976 154 print NOTE;
-#X obj 510 267 print CTRL;
-#X obj 510 209 r CTRL;
-#X obj 896 154 print OSC;
-#X obj 1207 92 s NOTE;
-#X msg 1207 66 62 100 1;
-#X msg 20 52 devicename /dev/tty.HC-06-DevB-1 \, baud 57600 \, pollintervall
-1 \, verbose 1;
-#X obj 510 230 spigot;
-#X obj 559 215 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+#X obj 125 369 o.io.slipserial;
+#X msg 154 318 devices;
+#X msg 231 323 close;
+#X obj 125 292 packOSC;
+#X obj 125 267 r OSC2;
+#X obj 317 103 spigot;
+#X obj 366 88 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
-#X obj 896 127 spigot;
-#X obj 945 112 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
-1;
-#X msg 558 52 devicename /dev/tty.usbmodem48710501 \, baud 57600 \,
-pollintervall 1 \, verbose 1;
-#X obj 976 127 spigot;
-#X obj 1025 112 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1
-0 1;
-#X floatatom 1135 232 5 0 0 0 r:0-vol #0-vol -;
-#X obj 238 496 o.io.slipserial;
-#X msg 267 445 devices;
-#X msg 344 450 close;
-#X obj 238 419 packOSC;
-#X obj 238 394 r OSC2;
-#X msg 538 12 devicename /dev/portD \, baud 57600 \, pollintervall
-1 \, verbose 1;
-#X text 1180 167 vol. override;
-#X msg 1208 321 0;
-#X msg 1208 300 10;
-#X msg 1208 279 25;
-#X msg 1208 258 50;
-#X msg 1208 217 255;
-#X msg 1208 197 500;
-#X msg 1208 237 127;
-#X text 1233 197 BIG;
-#X text 1234 321 SMALL;
-#X msg 1208 146 180;
-#X floatatom 1168 343 5 0 0 0 s:0-vol - #0-vol;
-#X obj 430 230 spigot;
-#X obj 479 215 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
-1;
-#X obj 430 209 r OSC2;
-#X obj 430 267 print OSC2;
-#X obj 896 104 r OSC;
-#X msg 1135 254 set \$1;
-#X obj 1199 470 s NOTE;
-#X msg 1199 444 68 100 0;
-#X text 943 370 vol. control knob 'on' the keyboard is needed. instead
-of get/set it by other devivce this is quite messy!;
-#N canvas 426 102 1431 785 crickets 1;
+#X obj 317 82 r OSC2;
+#X obj 317 140 print OSC2;
+#N canvas 196 89 718 806 crickets 0;
#X obj 129 363 pack f f;
#X obj 175 185 tgl 20 0 empty empty 120 17 7 0 10 -257985 -1 -1 0 1
;
@@ -365,8 +260,6 @@ of get/set it by other devivce this is quite messy!;
#X obj 538 785 int;
#X floatatom 538 744 5 0 0 0 - - -;
#X obj 538 826 sel 0;
-#X floatatom 564 851 5 0 0 0 - - -;
-#X obj 539 615 metro 3000;
#X obj 32 290 mod 50;
#X obj 448 288 mod 50;
#X obj 40 668 + 1;
@@ -432,7 +325,6 @@ of get/set it by other devivce this is quite messy!;
1;
#X obj 877 462 tgl 20 0 empty empty empty 17 7 0 10 -262130 -1 -1 0
1;
-#X obj 1072 372 * 200;
#X obj 266 789 * 200;
#X msg 340 793 103 \$1 \$2;
#X floatatom 897 713 5 0 0 0 - - -;
@@ -479,8 +371,8 @@ of get/set it by other devivce this is quite messy!;
#X msg 666 872 151 \$1 1;
#N canvas 0 23 450 278 (subpatch) 0;
#X array riff13 10 float 3;
-#A 0 0.00952369 0.00952369 0.0190476 1.0381 0 0 0 0.00952387 0.00952381
-0.00952375;
+#A 0 0.00952369 1.02858 0.0190476 1.0381 0 1.04763 0 1.05714 0.00952303
+0.285711;
#X coords 0 1 10 0 150 105 1 0 0;
#X restore 492 451 graph;
#X obj 640 724 tabread riff13;
@@ -492,11 +384,8 @@ of get/set it by other devivce this is quite messy!;
#X obj 950 479 metro 2000;
#X msg 956 636 0 2000;
#X msg 945 615 200 2000;
-#X obj 641 616 metro 2000;
-#X obj 638 788 * 100;
#X obj 538 764 * 300;
#X obj 1221 497 mod 50;
-#X obj 1220 593 * 300;
#X text 701 184 3 찌;
#X obj 447 384 * 200;
#X text 491 187 2 찌;
@@ -637,6 +526,38 @@ of get/set it by other devivce this is quite messy!;
#X msg 364 971 154 50 1;
#X obj 364 932 metro 500;
#X msg 49 1081 1002 0 1;
+#X obj 1072 372 * 800;
+#X obj 1220 593 * 1200;
+#X obj 721 802 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X obj 638 788 * 50;
+#X obj 641 618 metro 50;
+#X obj 1520 978 s CTRL;
+#X obj 1494 723 f;
+#X obj 1494 744 + 1;
+#X obj 1495 663 tgl 20 0 empty empty 157 17 7 0 10 -232576 -1 -1 0
+1;
+#X floatatom 1494 890 5 0 0 0 - - -;
+#X floatatom 1494 786 5 0 0 0 - - -;
+#X obj 1494 869 int;
+#X floatatom 1494 828 5 0 0 0 - - -;
+#X obj 1494 910 sel 0;
+#X floatatom 1520 935 5 0 0 0 - - -;
+#X obj 1494 765 mod 30;
+#X obj 1494 848 * 300;
+#N canvas 0 23 450 278 (subpatch) 0;
+#X array riff15 30 float 3;
+#A 0 0.578571 0.864285 1.39286 0.00952381 0.00952375 0.428571 0.542857
+0.878573 0.00952381 0.00952387 1.1 0.12381 0 0 0 0 0 0 0.152381 0.152381
+0 0 0 0.495238 0 0.685714 0.514286 0 0.238095 0;
+#X coords 0 1 30 0 150 105 1 0 0;
+#X restore 1485 510 graph;
+#X obj 1494 807 tabread riff15;
+#X msg 1520 955 157 \$1 1;
+#X obj 1495 699 metro 1000;
+#X text 1865 1168 >>>;
+#X obj 539 615 metro 1000;
+#X floatatom 587 842 5 0 0 0 - - -;
#X connect 0 0 72 0;
#X connect 1 0 0 1;
#X connect 2 0 0 0;
@@ -656,8 +577,8 @@ of get/set it by other devivce this is quite messy!;
#X connect 23 0 22 1;
#X connect 24 0 25 0;
#X connect 24 0 34 0;
-#X connect 27 0 123 0;
-#X connect 28 0 124 0;
+#X connect 27 0 121 0;
+#X connect 28 0 122 0;
#X connect 29 0 109 0;
#X connect 30 0 24 0;
#X connect 31 0 108 0;
@@ -668,9 +589,9 @@ of get/set it by other devivce this is quite messy!;
#X connect 37 1 35 0;
#X connect 38 0 39 0;
#X connect 39 0 38 1;
-#X connect 39 0 121 0;
+#X connect 39 0 119 0;
#X connect 40 0 44 0;
-#X connect 41 0 234 0;
+#X connect 41 0 228 0;
#X connect 42 0 2 0;
#X connect 43 0 87 0;
#X connect 44 0 38 0;
@@ -687,7 +608,7 @@ of get/set it by other devivce this is quite messy!;
#X connect 64 0 63 1;
#X connect 64 0 70 0;
#X connect 65 0 69 0;
-#X connect 66 0 349 0;
+#X connect 66 0 343 0;
#X connect 67 0 59 0;
#X connect 68 0 62 0;
#X connect 69 0 63 0;
@@ -700,24 +621,24 @@ of get/set it by other devivce this is quite messy!;
#X connect 75 0 76 0;
#X connect 78 0 79 0;
#X connect 79 0 78 1;
-#X connect 79 0 122 0;
+#X connect 79 0 120 0;
#X connect 80 0 84 0;
-#X connect 81 0 231 0;
+#X connect 81 0 225 0;
#X connect 82 0 75 0;
#X connect 83 0 86 0;
#X connect 84 0 78 0;
#X connect 85 0 77 0;
#X connect 86 0 81 0;
#X connect 87 0 41 0;
-#X connect 91 0 177 0;
+#X connect 91 0 174 0;
#X connect 92 0 91 1;
#X connect 93 0 94 0;
#X connect 93 0 102 0;
#X connect 96 0 97 0;
#X connect 97 0 96 1;
#X connect 97 0 106 0;
-#X connect 98 0 249 0;
-#X connect 99 0 176 0;
+#X connect 98 0 243 0;
+#X connect 99 0 173 0;
#X connect 100 0 93 0;
#X connect 101 0 107 0;
#X connect 102 0 105 0;
@@ -731,311 +652,253 @@ of get/set it by other devivce this is quite messy!;
#X connect 110 0 31 0;
#X connect 111 0 112 0;
#X connect 112 0 111 1;
-#X connect 112 0 156 0;
-#X connect 113 0 120 0;
+#X connect 112 0 154 0;
+#X connect 113 0 369 0;
#X connect 114 0 118 0;
-#X connect 115 0 155 0;
+#X connect 115 0 153 0;
#X connect 116 0 114 0;
-#X connect 117 0 227 0;
-#X connect 118 1 119 0;
-#X connect 119 0 50 0;
-#X connect 120 0 111 0;
-#X connect 121 0 43 0;
-#X connect 122 0 83 0;
-#X connect 123 0 27 1;
-#X connect 123 0 110 0;
-#X connect 124 0 27 0;
-#X connect 125 0 138 0;
-#X connect 126 0 125 1;
-#X connect 127 0 125 0;
-#X connect 127 0 128 0;
-#X connect 130 0 131 0;
-#X connect 131 0 130 1;
-#X connect 131 0 137 0;
-#X connect 132 0 136 0;
-#X connect 133 0 157 0;
-#X connect 134 0 127 0;
-#X connect 135 0 139 0;
-#X connect 136 0 130 0;
-#X connect 137 0 135 0;
-#X connect 138 0 129 0;
-#X connect 139 0 133 0;
-#X connect 140 0 153 0;
-#X connect 141 0 140 1;
-#X connect 142 0 140 0;
-#X connect 142 0 143 0;
-#X connect 145 0 146 0;
-#X connect 146 0 145 1;
-#X connect 146 0 152 0;
-#X connect 147 0 151 0;
-#X connect 148 0 190 0;
-#X connect 149 0 142 0;
-#X connect 150 0 154 0;
-#X connect 151 0 145 0;
-#X connect 152 0 150 0;
-#X connect 153 0 144 0;
-#X connect 154 0 148 0;
-#X connect 155 0 117 0;
-#X connect 156 0 115 0;
-#X connect 157 0 134 0;
-#X connect 158 0 172 0;
-#X connect 159 0 158 1;
-#X connect 160 0 158 0;
-#X connect 160 0 161 0;
-#X connect 163 0 164 0;
-#X connect 164 0 163 1;
-#X connect 164 0 170 0;
-#X connect 165 0 169 0;
-#X connect 166 0 175 0;
-#X connect 167 0 160 0;
-#X connect 168 0 171 0;
-#X connect 169 0 163 0;
-#X connect 170 0 168 0;
-#X connect 171 0 166 0;
-#X connect 172 0 162 0;
-#X connect 173 0 222 0;
-#X connect 174 0 188 0;
-#X connect 175 0 167 0;
-#X connect 176 0 100 0;
-#X connect 177 0 95 0;
-#X connect 178 0 185 0;
-#X connect 179 0 180 0;
+#X connect 117 0 222 0;
+#X connect 119 0 43 0;
+#X connect 120 0 83 0;
+#X connect 121 0 27 1;
+#X connect 121 0 110 0;
+#X connect 122 0 27 0;
+#X connect 123 0 136 0;
+#X connect 124 0 123 1;
+#X connect 125 0 123 0;
+#X connect 125 0 126 0;
+#X connect 128 0 129 0;
+#X connect 129 0 128 1;
+#X connect 129 0 135 0;
+#X connect 130 0 134 0;
+#X connect 131 0 155 0;
+#X connect 132 0 125 0;
+#X connect 133 0 137 0;
+#X connect 134 0 128 0;
+#X connect 135 0 133 0;
+#X connect 136 0 127 0;
+#X connect 137 0 131 0;
+#X connect 138 0 151 0;
+#X connect 139 0 138 1;
+#X connect 140 0 138 0;
+#X connect 140 0 141 0;
+#X connect 143 0 144 0;
+#X connect 144 0 143 1;
+#X connect 144 0 150 0;
+#X connect 145 0 149 0;
+#X connect 146 0 187 0;
+#X connect 147 0 140 0;
+#X connect 148 0 152 0;
+#X connect 149 0 143 0;
+#X connect 150 0 148 0;
+#X connect 151 0 142 0;
+#X connect 152 0 146 0;
+#X connect 153 0 117 0;
+#X connect 154 0 115 0;
+#X connect 155 0 132 0;
+#X connect 156 0 170 0;
+#X connect 157 0 156 1;
+#X connect 158 0 156 0;
+#X connect 158 0 159 0;
+#X connect 161 0 162 0;
+#X connect 162 0 161 1;
+#X connect 162 0 168 0;
+#X connect 163 0 167 0;
+#X connect 164 0 347 0;
+#X connect 165 0 158 0;
+#X connect 166 0 169 0;
+#X connect 167 0 161 0;
+#X connect 168 0 166 0;
+#X connect 169 0 164 0;
+#X connect 170 0 160 0;
+#X connect 171 0 219 0;
+#X connect 172 0 185 0;
+#X connect 173 0 100 0;
+#X connect 174 0 95 0;
+#X connect 175 0 182 0;
+#X connect 176 0 177 0;
+#X connect 177 0 178 0;
+#X connect 177 0 176 1;
+#X connect 178 0 179 0;
+#X connect 179 0 183 0;
#X connect 180 0 181 0;
-#X connect 180 0 179 1;
-#X connect 181 0 182 0;
-#X connect 182 0 186 0;
-#X connect 183 0 184 0;
-#X connect 186 0 224 0;
-#X connect 186 1 223 0;
-#X connect 187 0 178 0;
-#X connect 187 1 183 0;
-#X connect 188 0 189 0;
-#X connect 188 1 179 0;
-#X connect 189 0 45 0;
-#X connect 190 0 149 0;
-#X connect 191 0 204 0;
-#X connect 192 0 191 1;
-#X connect 193 0 191 0;
+#X connect 183 0 221 0;
+#X connect 183 1 220 0;
+#X connect 184 0 175 0;
+#X connect 184 1 180 0;
+#X connect 185 0 186 0;
+#X connect 185 1 176 0;
+#X connect 186 0 45 0;
+#X connect 187 0 147 0;
+#X connect 188 0 201 0;
+#X connect 189 0 188 1;
+#X connect 190 0 188 0;
+#X connect 190 0 191 0;
#X connect 193 0 194 0;
-#X connect 196 0 197 0;
-#X connect 197 0 196 1;
-#X connect 197 0 228 0;
-#X connect 198 0 202 0;
-#X connect 199 0 229 0;
-#X connect 200 0 193 0;
-#X connect 201 0 203 0;
-#X connect 202 0 196 0;
-#X connect 203 0 199 0;
-#X connect 204 0 195 0;
-#X connect 206 0 207 0;
-#X connect 207 0 206 1;
-#X connect 207 0 218 0;
-#X connect 208 0 225 0;
-#X connect 209 0 213 0;
-#X connect 210 0 217 0;
-#X connect 211 0 226 0;
-#X connect 212 0 211 0;
-#X connect 213 1 214 0;
-#X connect 214 0 215 0;
-#X connect 215 0 205 0;
-#X connect 217 0 212 0;
-#X connect 218 0 210 0;
-#X connect 220 0 219 0;
-#X connect 221 0 220 0;
-#X connect 222 0 174 0;
-#X connect 223 0 187 0;
-#X connect 224 0 187 0;
-#X connect 225 0 206 0;
-#X connect 226 0 209 0;
-#X connect 227 0 116 0;
-#X connect 228 0 201 0;
-#X connect 229 0 200 0;
-#X connect 231 0 82 0;
-#X connect 234 0 42 0;
-#X connect 240 0 241 0;
-#X connect 241 0 240 1;
-#X connect 241 0 245 0;
-#X connect 242 0 246 0;
-#X connect 243 0 244 0;
-#X connect 245 0 243 0;
-#X connect 246 0 240 0;
-#X connect 247 0 248 0;
-#X connect 248 0 239 0;
-#X connect 249 0 96 0;
+#X connect 194 0 193 1;
+#X connect 194 0 223 0;
+#X connect 195 0 199 0;
+#X connect 196 0 348 0;
+#X connect 197 0 190 0;
+#X connect 198 0 200 0;
+#X connect 199 0 193 0;
+#X connect 200 0 196 0;
+#X connect 201 0 192 0;
+#X connect 203 0 204 0;
+#X connect 204 0 203 1;
+#X connect 204 0 215 0;
+#X connect 205 0 351 0;
+#X connect 206 0 210 0;
+#X connect 207 0 214 0;
+#X connect 208 0 350 0;
+#X connect 209 0 208 0;
+#X connect 210 1 211 0;
+#X connect 211 0 212 0;
+#X connect 212 0 202 0;
+#X connect 214 0 209 0;
+#X connect 215 0 207 0;
+#X connect 217 0 216 0;
+#X connect 218 0 217 0;
+#X connect 219 0 172 0;
+#X connect 220 0 184 0;
+#X connect 221 0 184 0;
+#X connect 222 0 116 0;
+#X connect 223 0 198 0;
+#X connect 225 0 82 0;
+#X connect 228 0 42 0;
+#X connect 234 0 235 0;
+#X connect 235 0 234 1;
+#X connect 235 0 239 0;
+#X connect 236 0 240 0;
+#X connect 237 0 238 0;
+#X connect 239 0 237 0;
+#X connect 240 0 234 0;
+#X connect 241 0 242 0;
+#X connect 242 0 233 0;
+#X connect 243 0 96 0;
+#X connect 245 0 246 0;
+#X connect 246 0 244 0;
+#X connect 248 0 258 0;
+#X connect 249 0 250 0;
+#X connect 250 0 251 0;
#X connect 251 0 252 0;
-#X connect 252 0 250 0;
-#X connect 254 0 264 0;
-#X connect 255 0 256 0;
-#X connect 256 0 257 0;
-#X connect 257 0 258 0;
-#X connect 257 0 255 1;
-#X connect 258 0 259 0;
-#X connect 259 0 301 0;
-#X connect 259 1 302 0;
-#X connect 262 0 260 0;
-#X connect 263 0 261 0;
-#X connect 264 0 266 0;
-#X connect 265 0 268 0;
-#X connect 266 0 352 0;
-#X connect 266 1 255 0;
-#X connect 266 2 263 0;
-#X connect 266 3 265 0;
-#X connect 267 0 265 0;
-#X connect 274 0 344 0;
-#X connect 275 0 276 0;
-#X connect 276 0 343 0;
-#X connect 277 0 345 0;
-#X connect 280 0 278 0;
-#X connect 281 0 279 0;
-#X connect 282 0 284 0;
-#X connect 283 0 328 0;
-#X connect 283 1 275 0;
-#X connect 283 2 281 0;
-#X connect 283 3 282 0;
-#X connect 289 0 282 0;
-#X connect 291 0 290 0;
-#X connect 293 0 296 1;
-#X connect 294 0 292 0;
-#X connect 294 0 291 0;
-#X connect 296 0 295 0;
-#X connect 297 0 294 0;
-#X connect 298 0 297 0;
-#X connect 299 0 296 0;
-#X connect 300 0 263 0;
-#X connect 301 0 262 0;
-#X connect 302 0 262 0;
-#X connect 304 0 306 0;
+#X connect 251 0 249 1;
+#X connect 252 0 253 0;
+#X connect 253 0 295 0;
+#X connect 253 1 296 0;
+#X connect 256 0 254 0;
+#X connect 257 0 255 0;
+#X connect 258 0 260 0;
+#X connect 259 0 262 0;
+#X connect 260 0 346 0;
+#X connect 260 1 249 0;
+#X connect 260 2 257 0;
+#X connect 260 3 259 0;
+#X connect 261 0 259 0;
+#X connect 268 0 338 0;
+#X connect 269 0 270 0;
+#X connect 270 0 337 0;
+#X connect 271 0 339 0;
+#X connect 274 0 272 0;
+#X connect 275 0 273 0;
+#X connect 276 0 278 0;
+#X connect 277 0 322 0;
+#X connect 277 1 269 0;
+#X connect 277 2 275 0;
+#X connect 277 3 276 0;
+#X connect 283 0 276 0;
+#X connect 285 0 284 0;
+#X connect 287 0 290 1;
+#X connect 288 0 286 0;
+#X connect 288 0 285 0;
+#X connect 290 0 289 0;
+#X connect 291 0 288 0;
+#X connect 292 0 291 0;
+#X connect 293 0 290 0;
+#X connect 294 0 257 0;
+#X connect 295 0 256 0;
+#X connect 296 0 256 0;
+#X connect 298 0 300 0;
+#X connect 299 0 312 0;
+#X connect 300 0 301 0;
+#X connect 300 0 302 0;
+#X connect 301 0 300 1;
+#X connect 302 0 317 0;
+#X connect 303 0 304 0;
+#X connect 303 0 311 0;
+#X connect 304 0 303 1;
#X connect 305 0 318 0;
#X connect 306 0 307 0;
-#X connect 306 0 308 0;
-#X connect 307 0 306 1;
-#X connect 308 0 323 0;
-#X connect 309 0 310 0;
-#X connect 309 0 317 0;
-#X connect 310 0 309 1;
-#X connect 311 0 324 0;
-#X connect 312 0 313 0;
-#X connect 313 0 298 0;
-#X connect 315 0 325 0;
-#X connect 315 1 314 1;
-#X connect 316 0 315 0;
-#X connect 317 0 312 0;
-#X connect 318 0 304 0;
-#X connect 318 1 319 0;
-#X connect 319 0 306 0;
-#X connect 320 0 321 0;
-#X connect 321 0 352 0;
-#X connect 321 1 262 0;
-#X connect 321 2 265 0;
-#X connect 321 3 263 0;
-#X connect 322 0 309 0;
-#X connect 323 0 316 0;
-#X connect 324 0 309 0;
-#X connect 325 0 314 0;
-#X connect 328 0 273 0;
+#X connect 307 0 292 0;
+#X connect 309 0 319 0;
+#X connect 309 1 308 1;
+#X connect 310 0 309 0;
+#X connect 311 0 306 0;
+#X connect 312 0 298 0;
+#X connect 312 1 313 0;
+#X connect 313 0 300 0;
+#X connect 314 0 315 0;
+#X connect 315 0 346 0;
+#X connect 315 1 256 0;
+#X connect 315 2 259 0;
+#X connect 315 3 257 0;
+#X connect 316 0 303 0;
+#X connect 317 0 310 0;
+#X connect 318 0 303 0;
+#X connect 319 0 308 0;
+#X connect 322 0 267 0;
+#X connect 323 0 324 0;
+#X connect 325 0 326 0;
+#X connect 326 0 322 0;
+#X connect 326 1 274 0;
+#X connect 326 2 276 0;
+#X connect 326 3 275 0;
+#X connect 327 0 328 0;
+#X connect 328 0 329 0;
#X connect 329 0 330 0;
-#X connect 331 0 332 0;
-#X connect 332 0 328 0;
-#X connect 332 1 280 0;
-#X connect 332 2 282 0;
-#X connect 332 3 281 0;
-#X connect 333 0 334 0;
-#X connect 334 0 335 0;
-#X connect 335 0 336 0;
-#X connect 335 1 337 0;
-#X connect 336 0 338 0;
-#X connect 336 0 340 0;
-#X connect 342 0 351 0;
-#X connect 343 0 277 0;
-#X connect 343 0 275 1;
-#X connect 344 0 283 0;
-#X connect 345 0 346 0;
-#X connect 345 1 348 0;
-#X connect 346 0 280 0;
-#X connect 347 0 280 0;
-#X connect 348 0 280 0;
-#X connect 349 0 67 0;
-#X connect 350 0 341 0;
-#X connect 351 0 350 0;
-#X connect 352 0 253 0;
-#X restore 374 333 pd crickets nanokontrol2;
-#X obj 789 419 r NOTE;
-#X obj 789 440 unpack f f f;
-#X text 835 418 /pitch /velocity /onoff;
-#X obj 858 468 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
-1;
-#X obj 789 483 spigot;
-#X floatatom 789 546 5 0 0 0 s:0-vol - #0-vol;
-#X text 803 392 volume control;
-#X text 857 497 keys for volume control: vol+ / vol-;
-#N canvas 207 197 551 351 volume 0;
-#X obj 105 160 f;
-#X obj 135 160 +;
-#X obj 105 88 bng 15 250 50 0 empty empty v+ 17 7 0 10 -262144 -1 -1
-;
-#X obj 152 48 bng 15 250 50 0 empty empty v- 17 7 0 10 -262144 -1 -1
-;
-#X obj 105 108 t b b;
-#X msg 150 129 1;
-#X obj 152 68 t b b;
-#X msg 179 89 -1;
-#X floatatom 135 187 5 0 0 0 - - -;
-#X floatatom 174 267 5 0 0 0 - - -;
-#X obj 135 213 moses 0;
-#X msg 24 120 0;
-#X obj 277 246 hradio 15 1 0 8 empty empty empty 0 -8 0 10 -262144
--1 -1 1;
-#X obj 174 240 moses 8;
-#X msg 227 120 7;
-#N canvas 0 23 450 278 (subpatch) 0;
-#X array \$0-voltable 8 float 3;
-#A 0 10 25 50 100 127 180 255 500;
-#X coords 0 550 8 -50 100 140 1 0 0;
-#X restore 427 29 graph;
-#X obj 280 137 loadbang;
-#X obj 280 158 f \$0;
-#X obj 349 143 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
--1 -1;
-#X obj 277 268 tabread \$0-voltable;
-#X floatatom 277 289 5 0 0 0 - - -;
-#X obj 353 304 print vol;
-#X obj 105 11 inlet;
-#X obj 152 11 inlet;
-#X obj 277 309 outlet;
-#X msg 280 179 \; \$1-voltable 0 10 25 50 100 127 180 255 500;
-#X connect 0 0 1 0;
-#X connect 1 0 0 1;
-#X connect 1 0 8 0;
-#X connect 2 0 4 0;
-#X connect 3 0 6 0;
-#X connect 4 0 0 0;
-#X connect 4 1 5 0;
-#X connect 5 0 1 1;
-#X connect 6 0 0 0;
-#X connect 6 1 7 0;
-#X connect 7 0 1 1;
-#X connect 8 0 10 0;
-#X connect 9 0 12 0;
-#X connect 10 0 11 0;
-#X connect 10 1 13 0;
-#X connect 11 0 0 1;
-#X connect 12 0 19 0;
-#X connect 13 0 9 0;
-#X connect 13 1 14 0;
-#X connect 14 0 0 1;
-#X connect 16 0 17 0;
-#X connect 17 0 25 0;
-#X connect 18 0 17 0;
-#X connect 19 0 20 0;
-#X connect 20 0 24 0;
-#X connect 20 0 21 0;
-#X connect 22 0 2 0;
-#X connect 23 0 3 0;
-#X restore 789 525 pd volume;
-#X obj 789 504 sel 40 38;
-#X text 689 196 /pitch /velocity /onoff;
-#X obj 643 196 r CTRL;
-#X obj 643 242 s OSC2;
+#X connect 329 1 331 0;
+#X connect 330 0 332 0;
+#X connect 330 0 334 0;
+#X connect 336 0 345 0;
+#X connect 337 0 271 0;
+#X connect 337 0 269 1;
+#X connect 338 0 277 0;
+#X connect 339 0 340 0;
+#X connect 339 1 342 0;
+#X connect 340 0 274 0;
+#X connect 341 0 274 0;
+#X connect 342 0 274 0;
+#X connect 343 0 67 0;
+#X connect 344 0 335 0;
+#X connect 345 0 344 0;
+#X connect 346 0 247 0;
+#X connect 347 0 165 0;
+#X connect 348 0 197 0;
+#X connect 349 0 211 0;
+#X connect 350 0 206 0;
+#X connect 351 0 203 0;
+#X connect 353 0 354 0;
+#X connect 354 0 353 1;
+#X connect 354 0 362 0;
+#X connect 355 0 367 0;
+#X connect 356 0 360 0;
+#X connect 357 0 365 0;
+#X connect 358 0 356 0;
+#X connect 359 0 363 0;
+#X connect 360 1 361 0;
+#X connect 361 0 366 0;
+#X connect 362 0 357 0;
+#X connect 363 0 358 0;
+#X connect 365 0 359 0;
+#X connect 366 0 352 0;
+#X connect 367 0 353 0;
+#X connect 369 0 111 0;
+#X connect 369 0 370 0;
+#X connect 370 0 50 0;
+#X restore 261 206 pd crickets nanokontrol2;
+#X text 576 69 /pitch /velocity /onoff;
+#X obj 530 69 r CTRL;
+#X obj 530 115 s OSC2;
#N canvas 458 205 512 395 buildOSC 0;
#X obj 319 76 t a b;
#X msg 456 94 [;
@@ -1077,32 +940,30 @@ of get/set it by other devivce this is quite messy!;
#X connect 15 0 10 0;
#X connect 16 0 10 0;
#X connect 17 0 10 0;
-#X restore 643 219 pd buildOSC;
-#X text 723 218 <-- also mix-in /x;
-#X obj 610 299 s X1;
-#X obj 640 299 s X2;
-#X floatatom 606 270 5 0 0 0 - - -;
-#X floatatom 646 270 5 0 0 0 - - -;
-#X text 779 269 some extra. values!;
-#X msg 355 478 devicename /dev/ttyACM0 \, baud 57600 \, pollintervall
+#X restore 530 92 pd buildOSC;
+#X text 610 91 <-- also mix-in /x;
+#X obj 497 172 s X1;
+#X obj 527 172 s X2;
+#X floatatom 493 143 5 0 0 0 - - -;
+#X floatatom 533 143 5 0 0 0 - - -;
+#X text 666 142 some extra. values!;
+#X msg 242 351 devicename /dev/ttyACM0 \, baud 57600 \, pollintervall
1 \, verbose 1;
-#X msg 325 408 devicename /dev/tty.usbmodem3217741 \, baud 57600 \,
+#X msg 212 281 devicename /dev/tty.usbmodem3217741 \, baud 57600 \,
pollintervall 1 \, verbose 1;
-#X floatatom 683 270 5 0 0 0 - - -;
-#X obj 677 299 s X3;
-#X floatatom 721 270 5 0 0 0 - - -;
-#X obj 715 299 s X4;
-#X msg 1129 444 102 102 1;
-#X obj 1129 470 s CTRL;
-#X msg 309 372 open 2;
-#X floatatom 721 320 5 0 0 0 - - -;
-#X text 785 283 X1 \, X2: 5 digits;
-#X text 785 297 X3 \, X4: 5 digits;
-#X text 785 311 PS: 2 digits;
-#X obj 715 349 s PS;
-#X obj 238 519 unpackOSC;
-#X obj 238 542 routeOSC /hello;
-#X obj 365 531 s HELLO;
+#X floatatom 570 143 5 0 0 0 - - -;
+#X obj 564 172 s X3;
+#X floatatom 608 143 5 0 0 0 - - -;
+#X obj 602 172 s X4;
+#X msg 196 245 open 2;
+#X floatatom 608 193 5 0 0 0 - - -;
+#X text 672 156 X1 \, X2: 5 digits;
+#X text 672 170 X3 \, X4: 5 digits;
+#X text 672 184 PS: 2 digits;
+#X obj 602 222 s PS;
+#X obj 125 392 unpackOSC;
+#X obj 125 415 routeOSC /hello;
+#X obj 252 404 s HELLO;
#N canvas 133 398 1214 393 roundly 0;
#X floatatom 925 227 5 0 0 0 - - -;
#X obj 925 249 s PS;
@@ -1183,14 +1044,61 @@ pollintervall 1 \, verbose 1;
#X connect 35 0 26 0;
#X connect 36 0 18 0;
#X connect 37 0 27 0;
-#X restore 289 241 pd roundly;
+#X restore 62 140 pd roundly;
+#N canvas 1 89 425 409 bluetooth-keyboard 0;
+#X obj 20 126 unpackOSC;
+#X obj 107 18 loadbang;
+#X msg 147 91 devices;
+#X obj 20 147 routeOSC /note;
+#X floatatom 20 189 5 0 0 0 - - -;
+#X floatatom 77 189 5 0 0 0 - - -;
+#X floatatom 135 189 5 0 0 0 - - -;
+#X obj 20 105 o.io.slipserial;
+#X msg 215 108 close;
+#X obj 20 209 pack f f f;
+#X obj 20 230 s NOTE;
+#X obj 20 168 routeOSC /pitch /velocity /onoff /oncnt;
+#X floatatom 193 189 5 0 0 0 - - -;
+#X obj 86 245 tgl 125 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#N canvas 0 23 255 233 midi-in 0;
+#X obj 17 14 notein 1;
+#X floatatom 17 35 5 0 0 0 - - -;
+#X floatatom 55 35 5 0 0 0 - - -;
+#X obj 55 55 t a a;
+#X floatatom 17 113 5 0 0 0 - - -;
+#X floatatom 55 113 5 0 0 0 - - -;
+#X floatatom 89 113 5 0 0 0 - - -;
+#X obj 17 133 pack f f f;
+#X obj 17 154 s NOTE;
+#X obj 89 76 != 0;
+#X obj 89 154 outlet;
+#X connect 0 0 1 0;
+#X connect 0 1 2 0;
+#X connect 1 0 4 0;
+#X connect 2 0 3 0;
+#X connect 3 0 5 0;
+#X connect 3 1 9 0;
+#X connect 4 0 7 0;
+#X connect 5 0 7 1;
+#X connect 6 0 7 2;
+#X connect 6 0 10 0;
+#X connect 7 0 8 0;
+#X connect 9 0 6 0;
+#X restore 156 222 pd midi-in;
+#X msg 20 52 devicename /dev/tty.HC-06-DevB-1 \, baud 57600 \, pollintervall
+1 \, verbose 1;
+#X text 1 2 <<<;
+#X text 401 2 >>>;
+#X text 1 392 <<<;
+#X text 401 392 >>>;
#X connect 0 0 3 0;
#X connect 2 0 7 1;
#X connect 3 0 11 0;
#X connect 4 0 9 0;
#X connect 5 0 9 1;
#X connect 6 0 9 2;
-#X connect 6 0 34 0;
+#X connect 6 0 13 0;
#X connect 7 0 0 0;
#X connect 8 0 7 1;
#X connect 9 0 10 0;
@@ -1198,79 +1106,204 @@ pollintervall 1 \, verbose 1;
#X connect 11 1 5 0;
#X connect 11 2 6 0;
#X connect 11 3 12 0;
-#X connect 14 0 13 1;
-#X connect 15 0 13 1;
-#X connect 22 0 16 0;
-#X connect 22 0 37 0;
-#X connect 22 1 23 0;
-#X connect 23 0 32 0;
-#X connect 24 0 13 0;
+#X connect 14 0 13 0;
+#X connect 15 0 7 1;
+#X restore 102 45 pd bluetooth-keyboard;
+#X text 1 2 <<<;
+#X text 401 2 >>>;
+#N canvas 429 89 696 411 OSC-keyboard-samplers 1;
+#X obj 27 148 o.io.slipserial;
+#X msg 56 97 devices;
+#X msg 143 102 close;
+#X obj 27 71 packOSC;
+#X obj 27 46 r OSC;
+#X obj 591 32 r NOTE;
+#X obj 591 82 print NOTE;
+#X obj 511 82 print OSC;
+#X obj 511 55 spigot;
+#X obj 560 40 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
+1;
+#X msg 134 60 devicename /dev/tty.usbmodem48710501 \, baud 57600 \,
+pollintervall 1 \, verbose 1;
+#X obj 591 55 spigot;
+#X obj 640 40 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X msg 114 20 devicename /dev/portD \, baud 57600 \, pollintervall
+1 \, verbose 1;
+#X obj 511 32 r OSC;
+#X text 1 2 <<<;
+#X text 661 2 >>>;
+#X text 254 317 NOTE! -->;
+#X obj 317 309 cnv 15 100 60 empty empty empty 20 12 0 14 -261234 -66577
+0;
+#X msg 324 332 /note 60 100 1;
+#X text 323 312 well.. if we do like..;
+#X text 323 352 w/o bundling.. why not?;
+#X obj 189 175 r NOTE;
+#X text 235 174 /pitch /velocity /onoff;
+#X obj 189 233 s OSC;
+#X obj 27 225 loadbang;
+#X text 193 296 BIG;
+#X text 31 296 SMALL;
+#X obj 69 297 hradio 15 1 0 8 empty empty vol._override 0 -8 0 10 -257985
+-1 -1 3;
+#X obj 69 320 tabread \$0-volume-list;
+#N canvas 817 360 501 420 volume-list 0;
+#X msg 146 359 \; \$1-volume-list 0 0 10 25 50 127 180 255 500;
+#X obj 146 336 f \$0;
+#X obj 146 316 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X obj 146 276 loadbang;
+#N canvas 0 50 450 250 (subpatch) 0;
+#X array \$0-volume-list 20 float 3;
+#A 0 0 10 25 50 127 180 255 500 0 0 0 0 0 0 0 0 0 0 0 0;
+#X coords 0 1000 20 0 200 140 1 0 0;
+#X restore 227 181 graph;
+#X text 441 311 0;
+#X text 445 172 1000;
+#X obj 100 169 bng 15 250 50 0 empty empty v+ 17 7 0 10 -262144 -1
+-1;
+#X obj 31 169 bng 15 250 50 0 empty empty v- 17 7 0 10 -262144 -1 -1
+;
+#X obj 31 43 r NOTE;
+#X obj 31 64 unpack f f f;
+#X text 77 42 /pitch /velocity /onoff;
+#X obj 100 92 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 31 107 spigot;
+#X text 104 128 keys for volume control: vol+ / vol-;
+#X text 45 16 volume control w/ keyboard;
+#X obj 31 128 sel 38 40;
+#X floatatom 71 288 5 0 0 0 s:0-vol - #0-vol;
+#X obj 31 250 tabread \$0-volume-list;
+#X floatatom 31 228 5 0 0 0 - - -;
+#X obj 31 205 limitcnt 0 7;
+#X connect 1 0 0 0;
+#X connect 2 0 1 0;
+#X connect 7 0 20 1;
+#X connect 8 0 20 0;
+#X connect 9 0 10 0;
+#X connect 10 0 13 0;
+#X connect 10 2 12 0;
+#X connect 12 0 13 1;
+#X connect 13 0 16 0;
+#X connect 16 0 8 0;
+#X connect 16 1 7 0;
+#X connect 18 0 17 0;
+#X connect 19 0 18 0;
+#X connect 20 0 19 0;
+#X restore 117 349 pd volume-list;
+#X floatatom 69 349 5 0 0 0 s:0-vol - #0-vol;
+#X msg 27 248 4;
+#X text 1 382 <<<;
+#X text 661 382 >>>;
+#X obj 541 318 s NOTE;
+#N canvas 113 357 512 395 buildOSC 0;
+#X obj 319 76 t a b;
+#X msg 456 94 [;
+#X msg 34 327 ];
+#X obj 140 39 unpack f f f;
+#X obj 68 226 r X1;
+#X obj 98 226 r X2;
+#X obj 128 226 r X3;
+#X obj 158 226 r X4;
+#X obj 53 256 f;
+#X obj 34 126 t b b a;
+#X obj 254 345 outlet;
+#X obj 140 17 inlet;
+#X obj 188 226 r PS;
+#X obj 88 274 pack f f f f f;
+#X msg 319 122 sendtyped /note/onoff f \$1;
+#X msg 73 147 sendtyped /note/pitch f \$1;
+#X msg 254 166 sendtyped /note/velocity f \$1;
+#X msg 88 297 sendtyped /note/x fffff \$1 \$2 \$3 \$4 \$5;
+#X floatatom 174 82 5 0 0 0 - - -;
+#X obj 174 62 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X floatatom 315 19 5 0 0 0 r:0-vol #0-vol -;
+#X msg 315 41 set \$1;
+#X connect 0 0 14 0;
+#X connect 0 1 1 0;
+#X connect 1 0 10 0;
+#X connect 2 0 10 0;
+#X connect 3 0 9 0;
+#X connect 3 1 19 0;
+#X connect 3 2 0 0;
+#X connect 4 0 8 1;
+#X connect 5 0 13 1;
+#X connect 6 0 13 2;
+#X connect 7 0 13 3;
+#X connect 8 0 13 0;
+#X connect 9 0 2 0;
+#X connect 9 1 8 0;
+#X connect 9 2 15 0;
+#X connect 11 0 3 0;
+#X connect 12 0 13 4;
+#X connect 13 0 17 0;
+#X connect 14 0 10 0;
+#X connect 15 0 10 0;
+#X connect 16 0 10 0;
+#X connect 17 0 10 0;
+#X connect 18 0 16 0;
+#X connect 19 0 18 0;
+#X connect 20 0 21 0;
+#X connect 21 0 18 0;
+#X restore 189 204 pd buildOSC;
+#X floatatom 243 240 5 0 0 3 r:0-vol #0-vol -;
+#X obj 286 232 nbx 5 25 -1e+37 1e+37 0 0 empty empty volume-now 0 -12
+0 20 -262130 -159808 -159808 50 256;
+#X msg 225 109 devicename /dev/ttyACM0 \, baud 57600 \, pollintervall
+1 \, verbose 1;
+#X obj 541 212 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X floatatom 586 210 5 0 0 0 - - -;
+#X obj 541 238 pack f f;
+#X msg 541 275 \$2 100 \$1;
+#X connect 1 0 0 1;
+#X connect 2 0 0 1;
+#X connect 3 0 0 0;
+#X connect 4 0 3 0;
+#X connect 5 0 11 0;
+#X connect 8 0 7 0;
+#X connect 9 0 8 1;
+#X connect 10 0 0 1;
+#X connect 11 0 6 0;
+#X connect 12 0 11 1;
+#X connect 13 0 0 1;
+#X connect 14 0 8 0;
+#X connect 22 0 36 0;
#X connect 25 0 32 0;
-#X connect 26 0 25 0;
-#X connect 26 1 31 0;
-#X connect 27 0 28 0;
-#X connect 28 0 26 0;
-#X connect 28 1 41 0;
-#X connect 28 2 22 0;
-#X connect 30 0 32 0;
-#X connect 31 0 32 0;
-#X connect 33 0 24 0;
-#X connect 35 0 34 0;
-#X connect 36 0 54 0;
-#X connect 37 0 32 0;
-#X connect 38 0 30 0;
-#X connect 39 0 40 0;
-#X connect 40 0 38 0;
-#X connect 41 0 38 0;
-#X connect 44 0 49 0;
-#X connect 47 0 46 0;
-#X connect 48 0 7 1;
-#X connect 49 0 43 0;
-#X connect 50 0 49 1;
-#X connect 51 0 45 0;
-#X connect 52 0 51 1;
-#X connect 53 0 13 1;
-#X connect 54 0 42 0;
-#X connect 55 0 54 1;
-#X connect 56 0 80 0;
-#X connect 57 0 119 0;
-#X connect 58 0 57 1;
-#X connect 59 0 57 1;
-#X connect 60 0 57 0;
-#X connect 61 0 60 0;
-#X connect 62 0 13 1;
-#X connect 64 0 74 0;
-#X connect 65 0 74 0;
-#X connect 66 0 74 0;
-#X connect 67 0 74 0;
-#X connect 68 0 74 0;
-#X connect 69 0 74 0;
-#X connect 70 0 74 0;
-#X connect 73 0 74 0;
-#X connect 75 0 78 0;
-#X connect 76 0 75 1;
-#X connect 77 0 75 0;
-#X connect 79 0 51 0;
-#X connect 80 0 38 0;
-#X connect 82 0 81 0;
-#X connect 85 0 86 0;
-#X connect 86 0 89 0;
-#X connect 86 2 88 0;
-#X connect 88 0 89 1;
-#X connect 89 0 94 0;
-#X connect 93 0 90 0;
-#X connect 94 0 93 0;
-#X connect 94 1 93 1;
-#X connect 96 0 98 0;
-#X connect 98 0 97 0;
-#X connect 102 0 100 0;
-#X connect 103 0 101 0;
-#X connect 105 0 57 1;
-#X connect 106 0 57 1;
-#X connect 107 0 108 0;
-#X connect 109 0 110 0;
-#X connect 111 0 112 0;
-#X connect 113 0 57 1;
-#X connect 114 0 118 0;
-#X connect 119 0 120 0;
-#X connect 120 0 121 0;
+#X connect 28 0 29 0;
+#X connect 29 0 31 0;
+#X connect 32 0 28 0;
+#X connect 36 0 24 0;
+#X connect 37 0 38 0;
+#X connect 39 0 0 1;
+#X connect 40 0 42 0;
+#X connect 41 0 42 1;
+#X connect 42 0 43 0;
+#X connect 43 0 35 0;
+#X restore 102 74 pd OSC-keyboard-samplers;
+#X connect 1 0 2 0;
+#X connect 2 0 0 0;
+#X connect 3 0 2 1;
+#X connect 4 0 36 0;
+#X connect 5 0 4 1;
+#X connect 6 0 4 1;
+#X connect 7 0 4 0;
+#X connect 8 0 7 0;
+#X connect 9 0 12 0;
+#X connect 10 0 9 1;
+#X connect 11 0 9 0;
+#X connect 15 0 17 0;
+#X connect 17 0 16 0;
+#X connect 21 0 19 0;
+#X connect 22 0 20 0;
+#X connect 24 0 4 1;
+#X connect 25 0 4 1;
+#X connect 26 0 27 0;
+#X connect 28 0 29 0;
+#X connect 30 0 4 1;
+#X connect 31 0 35 0;
+#X connect 36 0 37 0;
+#X connect 37 0 38 0;