diff --git a/@postman/src/main.cpp b/@postman/src/main.cpp
index 8b06993..c6761cc 100644
--- a/@postman/src/main.cpp
+++ b/@postman/src/main.cpp
@@ -18,12 +18,17 @@
// always broadcasting. everyone is 'talkative'.
//
+// then, let it save a value in EEPROM (object with memory=mind?)
-// then, let is save a value in EEPROM (object with memory)
+//========================
+//
+#define MY_GROUP_ID (5000)
+#define MY_ID (MY_GROUP_ID + 1)
+#define MY_SIGN ("@POSTMAN|@SAMPLER")
+//
+//========================
-
-
-//=====================
+//=====================
//
// 'HAVE_CLIENT'
// --> i have a client. enable the client task.
@@ -38,24 +43,10 @@
// '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
-//
-//====================
//========================
//
@@ -96,83 +87,63 @@
//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;
+//
+extern Task hello_task;
+static int hello_delay = 0;
+void hello() {
+ //
+ byte mac[6];
+ WiFi.macAddress(mac);
+ uint32_t mac32 = (((((mac[2] << 8) + mac[3]) << 8) + mac[4]) << 8) + mac[5];
+ //
+ Hello hello(String(MY_SIGN), MY_ID, mac32); // the most basic 'hello'
+ // and you can append some floats
+ static int count = 0;
+ count++;
+ hello.h1 = (count % 1000);
+ // hello.h2 = 0;
+ // hello.h3 = 0;
+ // hello.h4 = 0;
+ //
+ uint8_t frm_size = sizeof(Hello) + 2;
+ uint8_t frm[frm_size];
+ frm[0] = '{';
+ memcpy(frm + 1, (uint8_t *) &hello, sizeof(Hello));
+ frm[frm_size - 1] = '}';
+ //
+ AddressBook* book = library.getBookByTitle("root");
+ if (book == NULL) {
+ // error!
+ } else {
+ //
+ for (uint32_t i = 0; i < book->list.size(); i++) {
+ esp_now_add_peer(book->list[i].mac, ESP_NOW_ROLE_COMBO, 1, NULL, 0);
+ esp_now_send(book->list[i].mac, frm, frm_size); // to all peers. (== broadcast, by default)
+ esp_now_del_peer(book->list[i].mac);
+ }
+ // esp_now_send(NULL, frm, frm_size); // to all peers. (== broadcast, by default)
+ //
+ MONITORING_SERIAL.write(frm, frm_size);
+ MONITORING_SERIAL.println(" ==(esp_now_send/0)==> ");
+ }
+ //
+ if (hello_delay > 0) {
+ if (hello_delay < 100) hello_delay = 100;
+ hello_task.restartDelayed(hello_delay);
+ }
+}
+Task hello_task(0, TASK_ONCE, &hello, &runner, false);
+
//task #0 : blink led
extern Task blink_task;
void blink() {
@@ -201,6 +172,93 @@ void blink() {
}
Task blink_task(0, TASK_FOREVER, &blink, &runner, true); // -> ENABLED, at start-up.
+// 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(Hello) + 2)) {
+ Hello hello("");
+ memcpy((uint8_t *) &hello, incomingData + 1, sizeof(Hello));
+ //
+ MONITORING_SERIAL.println(hello.to_string());
+ //
+ }
+
+ // 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)
+
+ //is this for me & my client?
+ if (note.id == MY_GROUP_ID || note.id == MY_ID) {
+
+ // (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();
+
+ //
+ hello_delay = note.ps;
+ if (hello_delay > 0 && hello_task.isEnabled() == false) {
+ hello_task.restart();
+ }
+ }
+
+ #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."
+ //-*-*-*-*-*-*-*-*-*-
+ }
+}
+
+// on 'sent'
+void onDataSent(uint8_t *mac_addr, uint8_t sendStatus) {
+ if (sendStatus != 0) MONITORING_SERIAL.println("Delivery failed!");
+}
+
//
void setup() {
@@ -216,26 +274,21 @@ void setup() {
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 >>>");
+ Serial.println("- my id: " + String(MY_ID) + ", gid: " + String(MY_GROUP_ID) + ", call me ==> \"" + String(MY_SIGN) + "\"");
+ Serial.println("- mac address: " + WiFi.macAddress() + ", channel: " + String(WIFI_CHANNEL));
#if defined(HAVE_CLIENT)
- Serial.println("- ======== 'HAVE_CLIENT' ========");
+ Serial.println("- ======== 'HAVE_CLIENT' ========");
#endif
#if defined(SERIAL_SWAP)
- Serial.println("- ======== 'SERIAL_SWAP' ========");
+ Serial.println("- ======== 'SERIAL_SWAP' ========");
#endif
#if defined(DISABLE_AP)
- Serial.println("- ======== 'DISABLE_AP' ========");
+ Serial.println("- ======== 'DISABLE_AP' ========");
#endif
#if defined(HAVE_CLIENT_I2C)
- Serial.println("- ======== 'HAVE_CLIENT_I2C' ========");
+ Serial.println("- ======== 'HAVE_CLIENT_I2C' ========");
#endif
Serial.println("-");
- Serial.println("\".-.-.-. :)\"");
- Serial.println();
//wifi
WiFiMode_t node_type = WIFI_AP_STA;
@@ -254,10 +307,9 @@ void setup() {
esp_now_register_send_cb(onDataSent);
esp_now_register_recv_cb(onDataReceive);
//
- Serial.println("-");
- Serial.println("- we will broadcast everything. ==> add only the 'broadcast peer' (FF:FF:FF:FF:FF:FF).");
- uint8_t broadcastmac[6] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
- esp_now_add_peer(broadcastmac, ESP_NOW_ROLE_COMBO, 1, NULL, 0);
+ // Serial.println("- i broadcast everything. ==> add 'broadcast peer' (FF:FF:FF:FF:FF:FF).");
+ // uint8_t broadcastmac[6] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
+ // esp_now_add_peer(broadcastmac, ESP_NOW_ROLE_COMBO, 1, NULL, 0);
//
Serial.println("-");
@@ -283,6 +335,10 @@ void setup() {
//i2c master
Wire.begin();
#endif
+
+ //
+ // hello_delay = 1000;
+ // hello_task.restart();
}
void loop() {
diff --git a/osc/src/main.cpp b/osc/src/main.cpp
index fc4d568..dbcd7c5 100644
--- a/osc/src/main.cpp
+++ b/osc/src/main.cpp
@@ -55,7 +55,11 @@ void route_note(OSCMessage& msg, int offset) {
if (msg.fullMatch("/pitch", offset)) {
note.pitch = msg.getFloat(0);
}
- // (4) --> /x
+ // (4) --> /id
+ if (msg.fullMatch("/id", offset)) {
+ note.id = msg.getInt(0);
+ }
+ // (5) --> /x
if (msg.fullMatch("/x", offset)) {
note.x1 = msg.getFloat(0);
note.x2 = msg.getFloat(1);
@@ -112,7 +116,7 @@ void loop() {
if (POSTMAN_SERIAL.available() > sizeof(Hello) + 2) {
POSTMAN_SERIAL.read();
//
- Hello hello;
+ Hello hello("");
POSTMAN_SERIAL.readBytes((uint8_t *) &hello, sizeof(Hello));
char last = POSTMAN_SERIAL.read();
if (last == '}') {
diff --git a/post.h b/post.h
index 1a1a1d9..a1db150 100644
--- a/post.h
+++ b/post.h
@@ -1,6 +1,6 @@
#pragma once
-//obsolete (@sampler still ues this)
+//obsolete (@postman|@sampler still ues this)
#define I2C_ADDR 3
#define POST_LENGTH 32
#define POST_BUFF_LEN (POST_LENGTH + 1)
@@ -122,6 +122,8 @@ struct AddressLibrary {
//message type Note : '[' + Note + ']'
struct Note {
+ //
+ int32_t id;
float pitch;
float velocity;
float onoff;
@@ -132,6 +134,7 @@ struct Note {
float ps;
//
void clear() {
+ id = 0;
pitch = 0;
velocity = 0;
onoff = 0;
@@ -144,7 +147,8 @@ struct Note {
//
String to_string() {
String str = "";
- str += "( pitch=" + String(pitch);
+ str += "( id=" + String(id);
+ str += ", pitch=" + String(pitch);
str += ", velocity=" + String(velocity);
str += ", onoff=" + String(onoff);
str += ", x1=" + String(x1);
@@ -158,24 +162,41 @@ struct Note {
};
//message type Hello : '{' + Hello + '}'
+#define SIGNATURE_LENGTH (20)
+#define SIGNATURE_BUFF_LEN (SIGNATURE_LENGTH + 1)
struct Hello {
+ char sign[SIGNATURE_BUFF_LEN];
int32_t id;
+ uint32_t mac32;
float h1;
float h2;
float h3;
float h4;
//
+ Hello(String sign_, int32_t id_ = 0, uint32_t mac32_ = 0, float h1_ = 0, float h2_ = 0, float h3_ = 0, float h4_ = 0) {
+ id = id_;
+ mac32 = mac32_;
+ h1 = h1_;
+ h2 = h2_;
+ h3 = h3_;
+ h4 = h4_;
+ sign_.toCharArray(sign, SIGNATURE_BUFF_LEN);
+ }
void clear() {
id = 0;
+ mac32 = 0;
h1 = 0;
h2 = 0;
h3 = 0;
h4 = 0;
+ sign[0] = '\0';
}
//
String to_string() {
String str = "";
str += "( id=" + String(id);
+ str += ", mac32=0x" + String(mac32, HEX);
+ str += ", sign=\"" + String(sign) + "\"";
str += ", h1=" + String(h1);
str += ", h2=" + String(h2);
str += ", h3=" + String(h3);
diff --git a/postman/src/main.cpp b/postman/src/main.cpp
index 0a23ce3..1c52b3e 100644
--- a/postman/src/main.cpp
+++ b/postman/src/main.cpp
@@ -18,12 +18,17 @@
// always broadcasting. everyone is 'talkative'.
//
+// then, let it save a value in EEPROM (object with memory=mind?)
-// then, let is save a value in EEPROM (object with memory)
+//========================
+//
+#define MY_GROUP_ID (0)
+#define MY_ID (MY_GROUP_ID + 1)
+#define MY_SIGN ("POSTMAN|OSC(Pd) a.k.a. @@@ ROOT @@@")
+//
+//========================
-
-
-//=====================
+//=====================
//
// 'HAVE_CLIENT'
// --> i have a client. enable the client task.
@@ -35,20 +40,13 @@
// '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 1
-#define SERIAL_SWAP
#define HAVE_CLIENT
-//
-#endif
-//
-//====================
+#define SERIAL_SWAP
//========================
//
@@ -91,42 +89,44 @@
#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());
-
- //-*-*-*-*-*-*-*-*-*-
- // 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;
+//
+extern Task hello_task;
+static int hello_delay = 0;
+void hello() {
+ //
+ byte mac[6];
+ WiFi.macAddress(mac);
+ uint32_t mac32 = (((((mac[2] << 8) + mac[3]) << 8) + mac[4]) << 8) + mac[5];
+ //
+ Hello hello(String(MY_SIGN), MY_ID, mac32); // the most basic 'hello'
+ // and you can append some floats
+ // hello.h1 = 0;
+ // hello.h2 = 0;
+ // hello.h3 = 0;
+ // hello.h4 = 0;
+ //
+ uint8_t frm_size = sizeof(Hello) + 2;
+ uint8_t frm[frm_size];
+ frm[0] = '{';
+ memcpy(frm + 1, (uint8_t *) &hello, sizeof(Hello));
+ frm[frm_size - 1] = '}';
+ //
+ esp_now_send(NULL, frm, frm_size); // to all peers. (== broadcast, by default)
+ //
+ MONITORING_SERIAL.write(frm, frm_size);
+ MONITORING_SERIAL.println(" ==(esp_now_send/0)==> ");
+ //
+ if (hello_delay > 0) {
+ if (hello_delay < 100) hello_delay = 100;
+ hello_task.restartDelayed(hello_delay);
+ }
+}
+Task hello_task(0, TASK_ONCE, &hello, &runner, false);
+
//task #0 : blink led
extern Task blink_task;
void blink() {
@@ -209,6 +209,38 @@ void collect_post() {
Task collect_post_task(1, TASK_FOREVER, &collect_post, &runner, true); // by default, ENABLED
#endif
+// 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());
+
+ //-*-*-*-*-*-*-*-*-*-
+ // 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."
+ //-*-*-*-*-*-*-*-*-*-
+ }
+}
+
+// on 'sent'
+void onDataSent(uint8_t *mac_addr, uint8_t sendStatus) {
+ if (sendStatus != 0) MONITORING_SERIAL.println("Delivery failed!");
+}
+
//
void setup() {
@@ -224,23 +256,21 @@ void setup() {
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 >>>");
+ Serial.println("- my id: " + String(MY_ID) + ", gid: " + String(MY_GROUP_ID) + ", call me ==> \"" + String(MY_SIGN) + "\"");
+ Serial.println("- mac address: " + WiFi.macAddress() + ", channel: " + String(WIFI_CHANNEL));
#if defined(HAVE_CLIENT)
- Serial.println("- ======== 'HAVE_CLIENT' ========");
+ Serial.println("- ======== 'HAVE_CLIENT' ========");
#endif
#if defined(SERIAL_SWAP)
- Serial.println("- ======== 'SERIAL_SWAP' ========");
+ Serial.println("- ======== 'SERIAL_SWAP' ========");
#endif
#if defined(DISABLE_AP)
- Serial.println("- ======== 'DISABLE_AP' ========");
+ Serial.println("- ======== 'DISABLE_AP' ========");
+#endif
+#if defined(HAVE_CLIENT_I2C)
+ Serial.println("- ======== 'HAVE_CLIENT_I2C' ========");
#endif
Serial.println("-");
- Serial.println("\".-.-.-. :)\"");
- Serial.println();
//wifi
WiFiMode_t node_type = WIFI_AP_STA;
@@ -259,8 +289,7 @@ void setup() {
esp_now_register_send_cb(onDataSent);
esp_now_register_recv_cb(onDataReceive);
//
- Serial.println("-");
- Serial.println("- we will broadcast everything. ==> add only the 'broadcast peer' (FF:FF:FF:FF:FF:FF).");
+ Serial.println("- i broadcast everything. ==> add 'broadcast peer' (FF:FF:FF:FF:FF:FF).");
uint8_t broadcastmac[6] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
esp_now_add_peer(broadcastmac, ESP_NOW_ROLE_COMBO, 1, NULL, 0);
diff --git a/puredata/piano_access_mesh_x_2.pd b/puredata/piano_access_mesh_x_2.pd
index d924f81..500e105 100644
--- a/puredata/piano_access_mesh_x_2.pd
+++ b/puredata/piano_access_mesh_x_2.pd
@@ -1,25 +1,13 @@
-#N canvas 238 195 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
+#N canvas 503 89 613 467 10;
+#X obj 318 178 spigot;
+#X obj 367 163 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
-#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 1
-1;
-#X obj 317 82 r OSC2;
-#X obj 317 140 print OSC2;
-#N canvas 0 89 1440 811 crickets 1;
+#N canvas 0 89 1440 811 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
;
#X obj 91 289 hsl 128 15 0 300 0 0 empty empty empty -2 -8 0 10 -262144
--1 -1 4032 1;
+-1 -1 0 1;
#X floatatom 139 311 5 0 0 0 - - -;
#X obj 1077 528 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1
0 1;
@@ -94,7 +82,7 @@
#X obj 114 701 t b a;
#X obj 32 248 f;
#X obj 32 269 + 1;
-#X obj 32 186 tgl 20 0 empty empty empty 17 7 0 10 -262130 -1 -1 1
+#X obj 32 186 tgl 20 0 empty empty empty 17 7 0 10 -262130 -1 -1 0
1;
#X floatatom 31 366 5 0 0 0 - - -;
#X floatatom 31 407 5 0 0 0 - - -;
@@ -190,7 +178,7 @@
#X obj 591 183 tgl 20 0 empty empty 122 17 7 0 10 -257985 -1 -1 0 1
;
#X obj 507 287 hsl 128 15 0 300 0 0 empty empty empty -2 -8 0 10 -262144
--1 -1 4193 1;
+-1 -1 0 1;
#X floatatom 555 309 5 0 0 0 - - -;
#X obj 545 405 s CTRL;
#X obj 448 246 f;
@@ -265,10 +253,10 @@
#X obj 40 668 + 1;
#X obj 39 629 metro 1000;
#X obj 752 357 pack f f;
-#X obj 798 179 tgl 20 0 empty empty 123 17 7 0 10 -257985 -1 -1 1 1
+#X obj 798 179 tgl 20 0 empty empty 123 17 7 0 10 -257985 -1 -1 0 1
;
#X obj 714 283 hsl 128 15 0 300 0 0 empty empty empty -2 -8 0 10 -262144
--1 -1 3064 1;
+-1 -1 0 1;
#X floatatom 762 305 5 0 0 0 - - -;
#X obj 752 401 s CTRL;
#X obj 655 242 f;
@@ -286,12 +274,12 @@
#X obj 1006 174 tgl 20 0 empty empty 124 17 7 0 10 -257985 -1 -1 0
1;
#X obj 922 278 hsl 128 15 0 300 0 0 empty empty empty -2 -8 0 10 -262144
--1 -1 2258 1;
+-1 -1 0 1;
#X floatatom 970 300 5 0 0 0 - - -;
#X obj 960 396 s CTRL;
#X obj 863 237 f;
#X obj 863 258 + 1;
-#X obj 863 175 tgl 20 0 empty empty empty 17 7 0 10 -262130 -1 -1 1
+#X obj 863 175 tgl 20 0 empty empty empty 17 7 0 10 -262130 -1 -1 0
1;
#X floatatom 862 355 5 0 0 0 - - -;
#X floatatom 862 396 5 0 0 0 - - -;
@@ -307,13 +295,13 @@
#X obj 1216 171 tgl 20 0 empty empty 125 17 7 0 10 -257985 -1 -1 0
1;
#X obj 1132 275 hsl 128 15 0 300 0 0 empty empty empty -2 -8 0 10 -262144
--1 -1 9434 1;
+-1 -1 0 1;
#X floatatom 1180 297 5 0 0 0 - - -;
#X obj 1170 393 s CTRL;
#X obj 1073 234 f;
#X obj 1073 255 + 1;
#X obj 1073 172 tgl 20 0 empty empty empty 17 7 0 10 -262130 -1 -1
-1 1;
+0 1;
#X floatatom 1072 352 5 0 0 0 - - -;
#X floatatom 1072 393 5 0 0 0 - - -;
#X floatatom 1073 297 5 0 0 0 - - -;
@@ -344,13 +332,13 @@
#X obj 1364 392 tgl 20 0 empty empty 125 17 7 0 10 -257985 -1 -1 0
1;
#X obj 1280 496 hsl 128 15 0 300 0 0 empty empty empty -2 -8 0 10 -262144
--1 -1 12700 1;
+-1 -1 0 1;
#X floatatom 1328 518 5 0 0 0 - - -;
#X obj 1318 614 s CTRL;
#X obj 1221 455 f;
#X obj 1221 476 + 1;
#X obj 1221 393 tgl 20 0 empty empty empty 17 7 0 10 -262130 -1 -1
-1 1;
+0 1;
#X floatatom 1220 573 5 0 0 0 - - -;
#X floatatom 1220 614 5 0 0 0 - - -;
#X floatatom 1221 518 5 0 0 0 - - -;
@@ -895,10 +883,137 @@
#X connect 368 0 203 0;
#X connect 369 0 82 0;
#X connect 370 0 165 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;
+#X restore 57 368 pd crickets nanokontrol2;
+#N canvas 133 398 1214 393 roundly 1;
+#X msg 354 139 \$1 5000;
+#X obj 354 162 unpack f f;
+#X obj 354 185 s X1;
+#X obj 411 185 s X2;
+#X msg 253 150 2000 0 1;
+#X obj 44 208 r HELLO;
+#X obj 44 254 unpack f f f f;
+#X floatatom 44 283 5 0 0 0 - - -;
+#X obj 97 311 hsl 1000 15 -50000 50000 0 0 empty empty empty -2 -8
+0 10 -260097 -262144 -1 0 1;
+#X obj 97 331 hsl 1000 15 -50000 50000 0 0 empty empty empty -2 -8
+0 10 -13381 -262144 -1 0 1;
+#X obj 44 231 route 2000 2001;
+#X obj 154 254 unpack f f f f;
+#X floatatom 154 283 5 0 0 0 - - -;
+#X obj 253 209 s CTRL;
+#X floatatom 253 99 5 0 0 0 target_pos - -;
+#X obj 97 31 hsl 1000 15 -50000 50000 0 0 empty empty empty -2 -8 0
+10 -260097 -262144 -1 49950 1;
+#X obj 97 51 hsl 1000 15 -50000 50000 0 0 empty empty empty -2 -8 0
+10 -13381 -262144 -1 49950 1;
+#X obj 253 121 t b a;
+#X msg 704 139 \$1 5000;
+#X obj 704 162 unpack f f;
+#X obj 704 185 s X1;
+#X obj 761 185 s X2;
+#X obj 603 209 s CTRL;
+#X floatatom 603 99 5 0 0 0 target_pos - -;
+#X obj 603 121 t b a;
+#X obj 6 26 loadbang;
+#X msg 6 49 0;
+#X msg 603 150 2001 0 1;
+#X obj 94 81 skip 500;
+#X obj 348 81 skip 500;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 1 1 3 0;
+#X connect 4 0 13 0;
+#X connect 5 0 10 0;
+#X connect 6 0 7 0;
+#X connect 7 0 8 0;
+#X connect 10 0 6 0;
+#X connect 10 1 11 0;
+#X connect 11 0 12 0;
+#X connect 12 0 9 0;
+#X connect 14 0 17 0;
+#X connect 15 0 28 0;
+#X connect 16 0 29 0;
+#X connect 17 0 4 0;
+#X connect 17 1 0 0;
+#X connect 18 0 19 0;
+#X connect 19 0 20 0;
+#X connect 19 1 21 0;
+#X connect 23 0 24 0;
+#X connect 24 0 27 0;
+#X connect 24 1 18 0;
+#X connect 25 0 26 0;
+#X connect 26 0 15 0;
+#X connect 26 0 16 0;
+#X connect 27 0 22 0;
+#X connect 28 0 14 0;
+#X connect 29 0 23 0;
+#X restore 57 397 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 168 routeOSC /pitch /velocity /onoff /oncnt;
+#X floatatom 193 189 5 0 0 0 - - -;
+#X obj 135 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 205 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 obj 20 230 s SAMPLER_NOTE;
+#X connect 0 0 3 0;
+#X connect 2 0 7 1;
+#X connect 3 0 10 0;
+#X connect 4 0 9 0;
+#X connect 5 0 9 1;
+#X connect 6 0 9 2;
+#X connect 6 0 12 0;
+#X connect 7 0 0 0;
+#X connect 8 0 7 1;
+#X connect 9 0 19 0;
+#X connect 10 0 4 0;
+#X connect 10 1 5 0;
+#X connect 10 2 6 0;
+#X connect 10 3 11 0;
+#X connect 13 0 12 0;
+#X connect 14 0 7 1;
+#X restore 37 282 pd bluetooth-keyboard;
+#X text 1 2 <<<;
+#X text 571 2 >>>;
#N canvas 458 205 512 395 buildOSC 0;
#X obj 319 76 t a b;
#X msg 456 94 [;
@@ -940,215 +1055,37 @@
#X connect 15 0 10 0;
#X connect 16 0 10 0;
#X connect 17 0 10 0;
-#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
+#X restore 408 154 pd buildOSC for all;
+#X obj 113 127 o.io.slipserial;
+#X msg 239 148 devices;
+#X msg 239 171 close;
+#X obj 113 50 packOSC;
+#X obj 113 25 r OSC;
+#X msg 200 28 devicename /dev/ttyACM0 \, baud 57600 \, pollintervall
1 \, verbose 1;
-#X msg 212 281 devicename /dev/tty.usbmodem3217741 \, baud 57600 \,
-pollintervall 1 \, verbose 1;
-#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 1;
-#X floatatom 925 227 5 0 0 0 - - -;
-#X obj 925 249 s PS;
-#X msg 354 139 \$1 5000;
-#X obj 354 162 unpack f f;
-#X obj 354 185 s X1;
-#X obj 411 185 s X2;
-#X msg 253 150 2000 0 1;
-#X msg 925 204 0;
-#X msg 964 204 200;
-#X obj 44 208 r HELLO;
-#X obj 44 254 unpack f f f f;
-#X floatatom 44 283 5 0 0 0 - - -;
-#X obj 97 311 hsl 1000 15 -50000 50000 0 0 empty empty empty -2 -8
-0 10 -260097 -262144 -1 0 1;
-#X obj 97 331 hsl 1000 15 -50000 50000 0 0 empty empty empty -2 -8
-0 10 -13381 -262144 -1 0 1;
-#X obj 44 231 route 2000 2001;
-#X obj 154 254 unpack f f f f;
-#X floatatom 154 283 5 0 0 0 - - -;
-#X obj 253 209 s CTRL;
-#X floatatom 253 99 5 0 0 0 target_pos - -;
-#X obj 97 31 hsl 1000 15 -50000 50000 0 0 empty empty empty -2 -8 0
-10 -260097 -262144 -1 25950 1;
-#X obj 97 51 hsl 1000 15 -50000 50000 0 0 empty empty empty -2 -8 0
-10 -13381 -262144 -1 49950 1;
-#X obj 253 121 t b a;
-#X msg 704 139 \$1 5000;
-#X obj 704 162 unpack f f;
-#X obj 704 185 s X1;
-#X obj 761 185 s X2;
-#X obj 603 209 s CTRL;
-#X floatatom 603 99 5 0 0 0 target_pos - -;
-#X obj 603 121 t b a;
-#X obj 945 141 tgl 25 0 empty empty monitoring 25 7 0 15 -159808 -257985
--1 1 1;
-#X obj 945 181 sel 0 1;
-#X obj 1061 100 loadbang;
-#X msg 1061 123 1;
-#X obj 6 26 loadbang;
-#X msg 6 49 0;
-#X msg 603 150 2001 0 1;
-#X obj 94 81 skip 500;
-#X obj 348 81 skip 500;
-#X connect 0 0 1 0;
-#X connect 2 0 3 0;
-#X connect 3 0 4 0;
-#X connect 3 1 5 0;
-#X connect 6 0 17 0;
-#X connect 7 0 0 0;
-#X connect 8 0 0 0;
-#X connect 9 0 14 0;
-#X connect 10 0 11 0;
-#X connect 11 0 12 0;
-#X connect 14 0 10 0;
-#X connect 14 1 15 0;
-#X connect 15 0 16 0;
-#X connect 16 0 13 0;
-#X connect 18 0 21 0;
-#X connect 19 0 36 0;
-#X connect 20 0 37 0;
-#X connect 21 0 6 0;
-#X connect 21 1 2 0;
-#X connect 22 0 23 0;
-#X connect 23 0 24 0;
-#X connect 23 1 25 0;
-#X connect 27 0 28 0;
-#X connect 28 0 35 0;
-#X connect 28 1 22 0;
-#X connect 29 0 30 0;
-#X connect 30 0 7 0;
-#X connect 30 1 8 0;
-#X connect 31 0 32 0;
-#X connect 32 0 29 0;
-#X connect 33 0 34 0;
-#X connect 34 0 19 0;
-#X connect 34 0 20 0;
-#X connect 35 0 26 0;
-#X connect 36 0 18 0;
-#X connect 37 0 27 0;
-#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
+#X obj 113 150 unpackOSC;
+#X obj 113 173 routeOSC /hello;
+#X obj 113 196 s HELLO;
+#X obj 30 106 print OSC;
+#X obj 30 79 spigot;
+#X obj 79 64 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1
+;
+#X obj 408 177 s OSC;
+#N canvas 713 396 706 244 SAMPLER_NOTE-to-OSC 1;
+#X obj 35 142 spigot;
+#X obj 84 127 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 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 13 0;
-#X connect 7 0 0 0;
-#X connect 8 0 7 1;
-#X connect 9 0 10 0;
-#X connect 11 0 4 0;
-#X connect 11 1 5 0;
-#X connect 11 2 6 0;
-#X connect 11 3 12 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 699 114 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 0
-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
+#X text 11 12 <<<;
+#X text 671 12 >>>;
+#X text 155 34 /pitch /velocity /onoff;
+#X obj 59 93 s OSC;
+#X obj 365 32 loadbang;
+#X text 489 93 BIG;
+#X text 327 93 SMALL;
+#X obj 365 94 hradio 15 1 0 8 empty empty vol._override 0 -8 0 10 -257985
-1 -1 4;
-#X obj 69 320 tabread \$0-volume-list;
-#N canvas 817 360 501 420 volume-list 0;
+#X obj 365 117 tabread \$0-volume-list;
+#N canvas 763 340 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
@@ -1165,10 +1102,9 @@ pollintervall 1 \, verbose 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
+#X text 127 42 /pitch /velocity /onoff;
+#X obj 100 92 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
1;
#X obj 31 107 spigot;
#X text 104 128 keys for volume control: vol+ / vol-;
@@ -1178,132 +1114,150 @@ pollintervall 1 \, verbose 1;
#X obj 31 250 tabread \$0-volume-list;
#X floatatom 31 228 5 0 0 0 - - -;
#X obj 31 205 limitcnt 0 7;
+#X obj 31 43 r SAMPLER_NOTE;
#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 7 0 19 1;
+#X connect 8 0 19 0;
+#X connect 9 0 12 0;
+#X connect 9 2 11 0;
+#X connect 11 0 12 1;
+#X connect 12 0 15 0;
+#X connect 15 0 8 0;
+#X connect 15 1 7 0;
+#X connect 17 0 16 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;
+#X connect 20 0 9 0;
+#X restore 413 146 pd volume-list;
+#X floatatom 365 146 5 0 0 0 s:0-vol - #0-vol;
+#X msg 365 55 4;
+#X text 11 212 <<<;
+#X text 671 212 >>>;
+#X floatatom 586 120 5 0 0 3 r:0-vol #0-vol -;
+#X obj 546 67 nbx 5 25 -1e+37 1e+37 0 0 empty empty volume-now 0 -12
+0 20 -262130 -159808 -159808 127 256;
+#X obj 177 110 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
+1;
+#X floatatom 222 108 5 0 0 0 - - -;
+#X obj 177 136 pack f f;
+#X msg 177 159 \$2 100 \$1;
#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 66 226 r X1;
+#X obj 96 226 r X2;
+#X obj 126 226 r X3;
+#X obj 156 226 r X4;
+#X obj 51 256 f;
#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 obj 186 226 r PS;
+#X obj 86 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 msg 85 150 sendtyped /note/pitch f \$1;
+#X msg 254 150 sendtyped /note/velocity f \$1;
+#X msg 86 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 msg 68 179 sendtyped /note/id i 5000;
+#X obj 34 121 t b b b a;
+#X connect 0 0 13 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 1 0 9 0;
+#X connect 2 0 9 0;
+#X connect 3 0 22 0;
+#X connect 3 1 18 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 127 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 5 0 12 1;
+#X connect 6 0 12 2;
+#X connect 7 0 12 3;
+#X connect 8 0 12 0;
+#X connect 10 0 3 0;
+#X connect 11 0 12 4;
+#X connect 12 0 16 0;
+#X connect 13 0 9 0;
+#X connect 14 0 9 0;
+#X connect 15 0 9 0;
+#X connect 16 0 9 0;
+#X connect 17 0 15 0;
+#X connect 18 0 17 0;
+#X connect 19 0 20 0;
+#X connect 20 0 17 0;
+#X connect 21 0 9 0;
+#X connect 22 0 2 0;
+#X connect 22 1 8 0;
+#X connect 22 2 21 0;
+#X connect 22 3 14 0;
+#X restore 59 64 pd buildOSC id 5000;
+#X text 183 64 id == 5000 FIXED;
+#X text 236 130 TESTER;
+#X obj 59 35 r SAMPLER_NOTE;
+#X obj 35 169 print SAMPLER_NOTE;
+#X obj 177 182 s SAMPLER_NOTE;
+#X connect 0 0 26 0;
#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 6 0 13 0;
+#X connect 9 0 10 0;
+#X connect 10 0 12 0;
+#X connect 13 0 9 0;
+#X connect 16 0 17 0;
+#X connect 18 0 20 0;
+#X connect 19 0 20 1;
+#X connect 20 0 21 0;
+#X connect 21 0 27 0;
+#X connect 22 0 5 0;
+#X connect 25 0 22 0;
+#X connect 25 0 0 0;
+#X coords 0 244 1 243 200 200 0;
+#X restore 37 321 pd SAMPLER_NOTE-to-OSC;
+#X obj 408 115 r NOTE;
+#X obj 318 205 print NOTE;
+#X text 409 94 /id /pitch /velocity /onoff;
+#X text 1 432 <<<;
+#X text 571 432 >>>;
+#X text 35 246 * sub-patches;
+#X floatatom 519 315 5 0 0 0 - - -;
+#X obj 519 337 s PS;
+#X obj 470 226 tgl 25 0 empty empty hello 32 7 0 15 -159808 -257985
+-159808 1 1;
+#X obj 519 253 loadbang;
+#X msg 519 276 1;
+#X obj 470 276 sel 1;
+#X msg 470 305 1000;
+#X obj 30 149 spigot;
+#X obj 79 134 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 30 176 print HELLO;
+#X connect 0 0 23 0;
+#X connect 1 0 0 1;
+#X connect 7 0 20 0;
+#X connect 8 0 14 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 10 0 8 1;
+#X connect 11 0 8 0;
+#X connect 12 0 11 0;
+#X connect 12 0 18 0;
+#X connect 13 0 8 1;
+#X connect 14 0 15 0;
+#X connect 15 0 16 0;
+#X connect 15 0 35 0;
+#X connect 18 0 17 0;
+#X connect 19 0 18 1;
+#X connect 22 0 0 0;
+#X connect 22 0 7 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;
+#X connect 30 0 33 0;
+#X connect 31 0 32 0;
+#X connect 32 0 30 0;
+#X connect 33 0 34 0;
+#X connect 33 1 28 0;
+#X connect 34 0 28 0;
+#X connect 35 0 37 0;
+#X connect 36 0 35 1;