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;