From bc49ed0c6c7ec71cc1e7c83d1507181be61933c2 Mon Sep 17 00:00:00 2001 From: Rob Canning Date: Thu, 1 Sep 2022 00:58:53 +0200 Subject: [PATCH] added lukas 3d print magick --- gtr.scd | 68 +- ...tr-scratchboard-drawing-separatewires2.svg | 191 ++++ scratchboard/gtr-scratchboard-drawing.svg | 154 +++ scratchboard/gtr-scratchboard-wires-r14.dxf | 930 ++++++++++++++++++ scratchboard/gtr-scratchboard.scad | 53 + scratchboard/gtr-scratchboard.stl | Bin 0 -> 121684 bytes wavey-wind/server.js | 52 +- 7 files changed, 1420 insertions(+), 28 deletions(-) create mode 100644 scratchboard/gtr-scratchboard-drawing-separatewires2.svg create mode 100644 scratchboard/gtr-scratchboard-drawing.svg create mode 100644 scratchboard/gtr-scratchboard-wires-r14.dxf create mode 100644 scratchboard/gtr-scratchboard.scad create mode 100644 scratchboard/gtr-scratchboard.stl diff --git a/gtr.scd b/gtr.scd index 9694216..07c68bc 100644 --- a/gtr.scd +++ b/gtr.scd @@ -173,31 +173,71 @@ o = OSCdef(\test, { arg msg, time, addr, recvPort, rlow, rhigh; // ---------------------------------------------------- p = OSCdef(\keys, { arg msg, time, addr, recvPort; - - case - - // BUTTON 0 && 3 RESET/ZERO SENSORS [in firmware] - - // BUTTON 0 ----> RECORD TO BUFFER 0 - { msg[8] == 1 } { r.set( \t_trig, 1); msg.postln; } // + //msg.postln; // BUTTON 0 + 3 ----> ZERO EULER / MPU6050 + if (msg[9] == 1 && msg[10] == 1, + { " ===== EULER ZEROED! =====".postln }, + {}); + if (msg[9] == 1, + { r.set( \in, 0, \l, 0, \t_trig, 1); + " /////////// SAMPLING!".postln }, + {}); + + if (msg[10] == 1, + { + " /////////// SOOOOOOMMMEEETHIIIINNGGGG!".postln }, + {}); + + if (msg[11] == 1, + { + " /////////// ////////////////////////////!".postln }, + {}); + + if (msg[12] == 1, + { + "=========================================".postln }, + {}); + + // TOGGLE 1 ----> LOOP RECORDING MODE ON/OFF + +/* if (msg[13] == 1, + { r.set(\l, 1); "LOOPING ON".postln; }, + { r.set(\l, 0); "LOOPING OFF".postln; }); + + // TOGGLE 2 ----> OVERDUB RECORDING MODE ON/OFF + + if (msg[14] == 1, + { r.set(\overdub, 1); "OVERDUB ON".postln; }, + { r.set(\overdub, 0); "OVERDUB OFF".postln; }, + + );*/ + + +/* case + //{ msg[14] == 0} {"result".postln; msg.postln} + + // BUTTON 0 && 3 RESET/ZERO SENSORS [in firmware] + // BUTTON 0 ----> RECORD TO BUFFER 0 + { msg[9] == 1 } { r.set( \in, 0, \l, 0, \t_trig, 1); + msg.postln; msg[9].postln; "SAMPLING!".postln } + + // BUTTON 0 + 3 ----> ZERO EULER / MPU6050 // TOGGLE O ----> OVERDUB MODE ON/OFF - { msg[12] == 0 } { r.set(\overdub, 0); } - { msg[12] == 1 } { r.set(\overdub, 1); } + { msg[14] == 0 } { r.set(\overdub, 0); "OVERDUB OFF".postln; } + { msg[14] == 1 } { r.set(\overdub, 1); "OVERDUB ON".postln; } // TOGGLE 2 - { msg[14] == 0 } { ~granulator1.set(\positionmodeindex, 1 ); } - { msg[14] == 1 } { ~granulator1.set(\positionmodeindex, 2 ); } + //{ msg[13] == 0 } { ~granulator1.set(\positionmodeindex, 1 ); } + //{ msg[13] == 1 } { ~granulator1.set(\positionmodeindex, 2 ); } // TOGGLE 3 ----> LOOP RECORDING MODE ON/OFF - { msg[15] == 0 } { r.set(\l, 0); } - { msg[15] == 1 } { r.set(\l, 1); } + { msg[13] == 0 } { "LOOPING OFF".postln; r.set(\l, 0); msg[13].postln;} + { msg[13] == 1 } { "LOOPING ON! SAMPLING".postln; r.set(\l, 1); msg[13].postln; };*/ } , '/keys'); -//msg.postln; ); ); diff --git a/scratchboard/gtr-scratchboard-drawing-separatewires2.svg b/scratchboard/gtr-scratchboard-drawing-separatewires2.svg new file mode 100644 index 0000000..ec34b71 --- /dev/null +++ b/scratchboard/gtr-scratchboard-drawing-separatewires2.svg @@ -0,0 +1,191 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scratchboard/gtr-scratchboard-drawing.svg b/scratchboard/gtr-scratchboard-drawing.svg new file mode 100644 index 0000000..b18406e --- /dev/null +++ b/scratchboard/gtr-scratchboard-drawing.svg @@ -0,0 +1,154 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scratchboard/gtr-scratchboard-wires-r14.dxf b/scratchboard/gtr-scratchboard-wires-r14.dxf new file mode 100644 index 0000000..25711b6 --- /dev/null +++ b/scratchboard/gtr-scratchboard-wires-r14.dxf @@ -0,0 +1,930 @@ + 0 +SECTION + 2 +HEADER + 9 +$ACADVER + 1 +AC1014 + 9 +$HANDSEED + 5 +FFFF + 9 +$MEASUREMENT + 70 + 1 + 0 +ENDSEC + 0 +SECTION + 2 +TABLES + 0 +TABLE + 2 +VPORT + 5 +8 +330 +0 +100 +AcDbSymbolTable + 70 + 4 + 0 +VPORT + 5 +2E +330 +8 +100 +AcDbSymbolTableRecord +100 +AcDbViewportTableRecord + 2 +*ACTIVE + 70 + 0 + 10 +0.0 + 20 +0.0 + 11 +1.0 + 21 +1.0 + 12 +210.0 + 22 +148.5 + 13 +0.0 + 23 +0.0 + 14 +10.0 + 24 +10.0 + 15 +10.0 + 25 +10.0 + 16 +0.0 + 26 +0.0 + 36 +1.0 + 17 +0.0 + 27 +0.0 + 37 +0.0 + 40 +341.0 + 41 +1.24 + 42 +50.0 + 43 +0.0 + 44 +0.0 + 50 +0.0 + 51 +0.0 + 71 + 0 + 72 + 100 + 73 + 1 + 74 + 3 + 75 + 0 + 76 + 0 + 77 + 0 + 78 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +LTYPE + 5 +5 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +LTYPE + 5 +14 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +BYBLOCK + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +15 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +BYLAYER + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +16 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +CONTINUOUS + 70 + 0 + 3 +Solid line + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +ENDTAB + 0 +TABLE + 2 +LAYER + 5 +2 +100 +AcDbSymbolTable + 70 +3 + 0 +LAYER + 5 +50 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +0 + 70 +0 + 6 +CONTINUOUS + 0 +LAYER + 5 +51 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +Plast_1 + 70 +0 + 6 +CONTINUOUS + 0 +LAYER + 5 +52 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +wires + 70 +0 + 6 +CONTINUOUS + 0 +ENDTAB + 0 +TABLE + 2 +STYLE + 5 +3 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +STYLE + 5 +11 +330 +3 +100 +AcDbSymbolTableRecord +100 +AcDbTextStyleTableRecord + 2 +STANDARD + 70 + 0 + 40 +0.0 + 41 +1.0 + 50 +0.0 + 71 + 0 + 42 +2.5 + 3 +txt + 4 + + 0 +ENDTAB + 0 +TABLE + 2 +VIEW + 5 +6 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +UCS + 5 +7 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +APPID + 5 +9 +330 +0 +100 +AcDbSymbolTable + 70 + 2 + 0 +APPID + 5 +12 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +DIMSTYLE + 5 +A +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +DIMSTYLE +105 +27 +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +ISO-25 + 70 + 0 + 3 + + 4 + + 5 + + 6 + + 7 + + 40 +1.0 + 41 +2.5 + 42 +0.625 + 43 +3.75 + 44 +1.25 + 45 +0.0 + 46 +0.0 + 47 +0.0 + 48 +0.0 +140 +2.5 +141 +2.5 +142 +0.0 +143 +0.03937007874016 +144 +1.0 +145 +0.0 +146 +1.0 +147 +0.625 + 71 + 0 + 72 + 0 + 73 + 0 + 74 + 0 + 75 + 0 + 76 + 0 + 77 + 1 + 78 + 8 +170 + 0 +171 + 3 +172 + 1 +173 + 0 +174 + 0 +175 + 0 +176 + 0 +177 + 0 +178 + 0 +270 + 2 +271 + 2 +272 + 2 +273 + 2 +274 + 3 +340 +11 +275 + 0 +280 + 0 +281 + 0 +282 + 0 +283 + 0 +284 + 8 +285 + 0 +286 + 0 +287 + 3 +288 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +BLOCK_RECORD + 5 +1 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +BLOCK_RECORD + 5 +1F +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*MODEL_SPACE + 0 +BLOCK_RECORD + 5 +1B +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*PAPER_SPACE + 0 +ENDTAB + 0 +ENDSEC + 0 +SECTION + 2 +BLOCKS + 0 +BLOCK + 5 +20 +330 +1F +100 +AcDbEntity + 8 +0 +100 +AcDbBlockBegin + 2 +*MODEL_SPACE + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*MODEL_SPACE + 1 + + 0 +ENDBLK + 5 +21 +330 +1F +100 +AcDbEntity + 8 +0 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +1C +330 +1B +100 +AcDbEntity + 67 + 1 + 8 +0 +100 +AcDbBlockBegin + 2 +*PAPER_SPACE + 1 + + 0 +ENDBLK + 5 +1D +330 +1B +100 +AcDbEntity + 67 + 1 + 8 +0 +100 +AcDbBlockEnd + 0 +ENDSEC + 0 +SECTION + 2 +ENTITIES + 0 +LWPOLYLINE + 5 +100 +100 +AcDbEntity + 8 +wires + 62 +7 +100 +AcDbPolyline + 90 +41 + 70 +1 + 10 +54.374975 + 20 +284.320154 + 30 +0.0 + 10 +25.775171 + 20 +260.886960 + 30 +0.0 + 10 +24.553023 + 20 +237.823769 + 30 +0.0 + 10 +24.376806 + 20 +260.361411 + 30 +0.0 + 10 +32.673975 + 20 +278.646598 + 30 +0.0 + 10 +31.490068 + 20 +279.183517 + 30 +0.0 + 10 +23.074043 + 20 +260.638914 + 30 +0.0 + 10 +23.248710 + 20 +238.446468 + 30 +0.0 + 10 +21.495845 + 20 +260.542793 + 30 +0.0 + 10 +11.322306 + 20 +281.054720 + 30 +0.0 + 10 +10.156486 + 20 +280.476461 + 30 +0.0 + 10 +20.220471 + 20 +260.191395 + 30 +0.0 + 10 +22.133016 + 20 +236.086922 + 30 +0.0 + 10 +10.757999 + 20 +255.140541 + 30 +0.0 + 10 +9.642822 + 20 +254.474432 + 30 +0.0 + 10 +21.164082 + 20 +235.173800 + 30 +0.0 + 10 +16.082222 + 20 +218.689536 + 30 +0.0 + 10 +6.686930 + 20 +212.159702 + 30 +0.0 + 10 +10.095508 + 20 +229.441335 + 30 +0.0 + 10 +8.820133 + 20 +229.693515 + 30 +0.0 + 10 +5.484420 + 20 +212.783436 + 30 +0.0 + 10 +-12.730489 + 20 +200.249835 + 30 +0.0 + 10 +-6.206856 + 20 +189.599837 + 30 +0.0 + 10 +7.241935 + 20 +199.355316 + 30 +0.0 + 10 +18.300692 + 20 +196.898617 + 30 +0.0 + 10 +18.581811 + 20 +198.167792 + 30 +0.0 + 10 +7.048665 + 20 +200.730943 + 30 +0.0 + 10 +36.552806 + 20 +221.978741 + 30 +0.0 + 10 +35.793164 + 20 +223.035008 + 30 +0.0 + 10 +23.457483 + 20 +214.150794 + 30 +0.0 + 10 +28.656131 + 20 +231.099629 + 30 +0.0 + 10 +40.517423 + 20 +249.001896 + 30 +0.0 + 10 +39.433769 + 20 +249.720716 + 30 +0.0 + 10 +27.679446 + 20 +231.978647 + 30 +0.0 + 10 +30.802770 + 20 +256.640708 + 30 +0.0 + 10 +51.044945 + 20 +264.773544 + 30 +0.0 + 10 +49.869306 + 20 +266.921733 + 30 +0.0 + 10 +28.476815 + 20 +258.419927 + 30 +0.0 + 10 +25.768453 + 20 +236.169604 + 30 +0.0 + 10 +27.042792 + 20 +260.244105 + 30 +0.0 + 10 +55.199213 + 20 +283.314531 + 30 +0.0 + 0 +ENDSEC + 0 +SECTION + 2 +OBJECTS + 0 +DICTIONARY + 5 +C +330 +0 +100 +AcDbDictionary + 3 +ACAD_GROUP +350 +D + 3 +ACAD_MLINESTYLE +350 +17 + 0 +DICTIONARY + 5 +D +330 +C +100 +AcDbDictionary + 0 +DICTIONARY + 5 +1A +330 +C +100 +AcDbDictionary + 0 +DICTIONARY + 5 +17 +330 +C +100 +AcDbDictionary + 3 +STANDARD +350 +18 + 0 +DICTIONARY + 5 +19 +330 +C +100 +AcDbDictionary + 0 +ENDSEC + 0 +EOF diff --git a/scratchboard/gtr-scratchboard.scad b/scratchboard/gtr-scratchboard.scad new file mode 100644 index 0000000..658a13e --- /dev/null +++ b/scratchboard/gtr-scratchboard.scad @@ -0,0 +1,53 @@ +$fs = 0.25; + +thickness = 3; + +wire = 1.1; + +coinh = 1.67; +coinr = 8.125; + +ledr = 2.5; + +d = 1; + +tol = 0.25; + +module coin() { + translate([0,0,thickness-1]) cylinder(h=coinh+d, r=coinr+tol); + translate([0,0,-d/2]) cylinder(h=thickness+d, r=coinr-3); +} + + + +difference() { +//translate([0,-110,0]) cube([70,110,thickness]); +scale([1,-1,1]) +linear_extrude(thickness) { + offset(r=10) { + offset(r=-10) { + polygon([[0,2],[31,8],[52,0],[64,1 + ],[68,14],[49,52],[47,81],[21,112],[7,105],[0,88]]); + } +} +} + +translate([0,-297,-1]) +linear_extrude(2.5) { +import("gtr-scratchboard-wires-r14.dxf",convexity=200); +} + +translate([10,-15,0]) coin(); +translate([10,-40,0]) coin(); +translate([10,-65,0]) coin(); + +translate([32,-19,0]) coin(); +translate([40,-48,0]) coin(); +translate([36,-75,0]) coin(); +translate([18,-99,0]) coin(); + +translate([55,-12,0]) coin(); + +translate([50,-31,-d/2]) cylinder(h=thickness+d, r=ledr+2*tol); + +} \ No newline at end of file diff --git a/scratchboard/gtr-scratchboard.stl b/scratchboard/gtr-scratchboard.stl new file mode 100644 index 0000000000000000000000000000000000000000..c9b0cff9d713758eaf91f84bd6efb1a470e942e4 GIT binary patch literal 121684 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 literal 0 HcmV?d00001 diff --git a/wavey-wind/server.js b/wavey-wind/server.js index 7362be8..f7919bc 100644 --- a/wavey-wind/server.js +++ b/wavey-wind/server.js @@ -42,6 +42,7 @@ let switchHeld = [false, false, false, false] let switchValue = [false, false, false, false] + function openSerial() { console.log('opening ', tty, baudrate) @@ -194,21 +195,41 @@ const sendAll = (msg, info, oscWS, osclients) => { } } + var waiting = false; + + function waitFalse() { + waiting = false; + } + + + function wait4Second() { + waiting = true; + setTimeout(waitFalse, 1000); + + } + // LOGIC FOR MOMENTARY BUTTONS (0 - 3) - - for (let i = 0; i < 4; i++) { - // toggle button 2 state between 0 and 1 - if (msg.address == '/keys') { - if (msg.args[i] <= threshold ) { - buttonValue[i] = 1; - } else { - buttonValue[i] = 0; - } - msg.args.push(buttonValue[i] ? 1 : 0) - } - } + for (let i = 0; i < 4; i++) { + // momentary state between 0 and 1 console + if (msg.address == '/keys') { + buttonValue[i] = 0; + //if (waiting == false){ + if (msg.args[i] <= threshold ) { + if (buttonHeld[i] == false) { + buttonHeld[i] = true + buttonValue[i] = 1; + } + //wait4Second(); + } else if (msg.args[i] >= threshold+5) { + buttonHeld[i] = false; + } + msg.args.push(buttonValue[i] ? 1 : 0) + } + + } + // LOGIC FOR TOGGLE SWITCHES (4-7) @@ -221,6 +242,7 @@ const sendAll = (msg, info, oscWS, osclients) => { switchHeld[i-4] = true } } else { + if (switchHeld[i-4]) { switchHeld[i-4] = false } @@ -256,8 +278,10 @@ const sendAll = (msg, info, oscWS, osclients) => { }) if (scudp) { - console.log("SENDING UDP", msg) - scudp.send(msg) + console.log("SENDING UDP", msg) + scudp.send(msg) + //msg.slice(7,15); + //scudp.send(msg.slice(7,15)) } }