Download - Sketching In Hardware 2
![Page 1: Sketching In Hardware 2](https://reader030.vdocuments.site/reader030/viewer/2022032616/55a4ede81a28ab36408b45e0/html5/thumbnails/1.jpg)
LISTEN PERFORMPROCESS
Gainer / Funnel
Shigeru Kobayashi (from Gainer/Funnel development team)
![Page 2: Sketching In Hardware 2](https://reader030.vdocuments.site/reader030/viewer/2022032616/55a4ede81a28ab36408b45e0/html5/thumbnails/2.jpg)
Background
• Roland Corp. (April 1993 - June 2004)– Sound designer– Software engineer– No experience of
hardware development...• IAMAS (July 2004-)
– Started exploring/teachingPhysical Computing
![Page 3: Sketching In Hardware 2](https://reader030.vdocuments.site/reader030/viewer/2022032616/55a4ede81a28ab36408b45e0/html5/thumbnails/3.jpg)
What is Gainer?
Overview
• A toolkit for Physical Computing• Consisting of an I/O module
and software libraries
![Page 4: Sketching In Hardware 2](https://reader030.vdocuments.site/reader030/viewer/2022032616/55a4ede81a28ab36408b45e0/html5/thumbnails/4.jpg)
![Page 5: Sketching In Hardware 2](https://reader030.vdocuments.site/reader030/viewer/2022032616/55a4ede81a28ab36408b45e0/html5/thumbnails/5.jpg)
What is Gainer?
Gainer I/O module
• Designed to use with breadboards• Based on PSoC microcontroller
– Built-in OpAmp– Reconfigurable port settings
• Open source*1
*1 New BSD license
![Page 6: Sketching In Hardware 2](https://reader030.vdocuments.site/reader030/viewer/2022032616/55a4ede81a28ab36408b45e0/html5/thumbnails/6.jpg)
What is Gainer?
Software libraries
• Multi platform support (on Mac and Win)– Flash (MX 2004 and 8)– Processing– Max/MSP
• Open source*2
*2 New BSD license
![Page 7: Sketching In Hardware 2](https://reader030.vdocuments.site/reader030/viewer/2022032616/55a4ede81a28ab36408b45e0/html5/thumbnails/7.jpg)
What is Gainer?
Software libraries: FlashListing 1 Flash code example
var io:Gainer = new Gainer("localhost", 2000, ...);
io.onReady = function() {
this.beginAnalogInput();
}
_root.onEnterFrame = function() {
var brightness:Number = io.analogInput[0];
...
io.analogOutput(0, value);
}
![Page 8: Sketching In Hardware 2](https://reader030.vdocuments.site/reader030/viewer/2022032616/55a4ede81a28ab36408b45e0/html5/thumbnails/8.jpg)
What is Gainer?
Software libraries: Max/MSP
![Page 9: Sketching In Hardware 2](https://reader030.vdocuments.site/reader030/viewer/2022032616/55a4ede81a28ab36408b45e0/html5/thumbnails/9.jpg)
Gainer in action!
Example 1: Gainer Kaidan
• Media installation– 6 Gainer I/O modules– 24 sensors/actuators– > 120 breadboards– > 11,000 jump wires– 4 weeks– Flash and Max/MSP
• NTT InterCommunication Center [ICC]
![Page 10: Sketching In Hardware 2](https://reader030.vdocuments.site/reader030/viewer/2022032616/55a4ede81a28ab36408b45e0/html5/thumbnails/10.jpg)
Gainer in action!
Example 2: Mountain Guitar
• Musical interface (prototype)– 1 Gainer I/O module ZigBee (prototype)– 1 proxymity sensor,
3-axis acceleration sensor,2 photocells, 1 FSR and 5 switches
– Max/MSP with VST plug-ins• NIME’07 demo session
![Page 11: Sketching In Hardware 2](https://reader030.vdocuments.site/reader030/viewer/2022032616/55a4ede81a28ab36408b45e0/html5/thumbnails/11.jpg)
Results
• > 500 units have been shipped*3
• 5 open workshops (in Japan and Korea)• ‘Gainer + Flash’ community growing rapidly
in Japan
*3 Since June 2006, through a distributor
![Page 12: Sketching In Hardware 2](https://reader030.vdocuments.site/reader030/viewer/2022032616/55a4ede81a28ab36408b45e0/html5/thumbnails/12.jpg)
Problems
• For beginners, still difficult to handleanalog inputs...– Threshold detection– Filtering (e.g. LPF, HPF...)– Scaling and converting units
![Page 13: Sketching In Hardware 2](https://reader030.vdocuments.site/reader030/viewer/2022032616/55a4ede81a28ab36408b45e0/html5/thumbnails/13.jpg)
Funnel
LISTEN PERFORMPROCESS
![Page 14: Sketching In Hardware 2](https://reader030.vdocuments.site/reader030/viewer/2022032616/55a4ede81a28ab36408b45e0/html5/thumbnails/14.jpg)
What is Funnel?
• Funnel is NOT a Gainer v2.0• Re-designed from scratch reflecting
experiences through Gainer v1.0
![Page 15: Sketching In Hardware 2](https://reader030.vdocuments.site/reader030/viewer/2022032616/55a4ede81a28ab36408b45e0/html5/thumbnails/15.jpg)
What is Funnel?
Keywords
• Multi I/O module support• Pseudo code like programming
![Page 16: Sketching In Hardware 2](https://reader030.vdocuments.site/reader030/viewer/2022032616/55a4ede81a28ab36408b45e0/html5/thumbnails/16.jpg)
Multi I/O module support
Problem
• An I/O module doesn’t cover all user needs– The Number of inputs/outputs– Special functions (e.g. touch sensor)– Cost– Standalone capability
![Page 17: Sketching In Hardware 2](https://reader030.vdocuments.site/reader030/viewer/2022032616/55a4ede81a28ab36408b45e0/html5/thumbnails/17.jpg)
Multi I/O module support
Solution
![Page 18: Sketching In Hardware 2](https://reader030.vdocuments.site/reader030/viewer/2022032616/55a4ede81a28ab36408b45e0/html5/thumbnails/18.jpg)
Pseudo code like programming
Problem
• Handling analog inputs is not so simple– Threshold detection with hysteresis– Filtering (e.g. LPF, HPF...)– Scaling and converting units etc...
![Page 19: Sketching In Hardware 2](https://reader030.vdocuments.site/reader030/viewer/2022032616/55a4ede81a28ab36408b45e0/html5/thumbnails/19.jpg)
Listing 2 ActionScript 2 + Gainer
var io:IOModule = new IOModule(...);
var lastStatus:int = -1; // -1: unknown, 0: low, 1:high
var threshold:int = 50;
var hysteresis:int = 50;
loop() {
if (io.analogInput[0] < (threshold - hysteresis)) {
status = 0;
} else if (io.analogInput[0] > (threshold + hysteresis)) {
status = 1;
} else {
status = lastStatus;
}
if ((lastStatus == 0) && (status == 1))
handler();
lastStatus = status;
}
![Page 20: Sketching In Hardware 2](https://reader030.vdocuments.site/reader030/viewer/2022032616/55a4ede81a28ab36408b45e0/html5/thumbnails/20.jpg)
function handler() {
...
}
![Page 21: Sketching In Hardware 2](https://reader030.vdocuments.site/reader030/viewer/2022032616/55a4ede81a28ab36408b45e0/html5/thumbnails/21.jpg)
Pseudo code like programming
Solution
• Edge detection (rising and falling edge)
Listing 3 ActionScript 3 + Funnel
var io:Funnel = new Funnel(...);
io.port[0].threshold = 50;
io.port[0].hysteresis = 10;
io.port[0].edgeDetection = enabled;
io.port[0].onRisingEdge = function() {
...
}
![Page 22: Sketching In Hardware 2](https://reader030.vdocuments.site/reader030/viewer/2022032616/55a4ede81a28ab36408b45e0/html5/thumbnails/22.jpg)
Pseudo code like programming
Problem
• Control actuators with time varying factorsare not so simple– Blink a LED at a specific frequency– Drive a LED with a specific wave
(e.g. sine, square, triangle...)
![Page 23: Sketching In Hardware 2](https://reader030.vdocuments.site/reader030/viewer/2022032616/55a4ede81a28ab36408b45e0/html5/thumbnails/23.jpg)
Listing 4 ActionScript 2 + Gainer
var io:Gainer = new Gainer(...);
var value:Number = 0;
var i:Number = 0;
var blinkTimer:Timer = new Timer(20, 0); // 20ms interval, forever
blinkTimer.addEventListener(TimerEvent.TIMER, dimming);
blinkTimer.start();
function dimming():Void {
i += 1;
if (i < 255) {
value += 1;
} else if (i < 509) {
value -= 1;
} else {
i = 1;
}
io.analogOutput(0, value);
}
![Page 24: Sketching In Hardware 2](https://reader030.vdocuments.site/reader030/viewer/2022032616/55a4ede81a28ab36408b45e0/html5/thumbnails/24.jpg)
Pseudo code like programming
Solution
• Oscillator (e.g. Sine, Triangle, Square...)
Listing 5 ActionScript 3 + Funnel
var io:Funnel = new Funnel(...);
var dimmer:Osc = new Osc(Wave.TRIANGLE, 0.5); // wave, frequency
dimmer.onUpdate = function(val:float) {
io.port[0].value = val;
}
![Page 25: Sketching In Hardware 2](https://reader030.vdocuments.site/reader030/viewer/2022032616/55a4ede81a28ab36408b45e0/html5/thumbnails/25.jpg)
Pseudo code like programming
Solution: And more...
• Port properties for popular cases– maximum– minimum– average
• Scaler (e.g. linear, square root curve...)• Filter (e.g. LPF, HPF...)
![Page 26: Sketching In Hardware 2](https://reader030.vdocuments.site/reader030/viewer/2022032616/55a4ede81a28ab36408b45e0/html5/thumbnails/26.jpg)
Current state
• Implementing based on API draft• v1.0 will be released by the end of 2007• Feedback is always welcomed!
![Page 27: Sketching In Hardware 2](https://reader030.vdocuments.site/reader030/viewer/2022032616/55a4ede81a28ab36408b45e0/html5/thumbnails/27.jpg)
Thanks!
Shigeru Kobayashi
http://gainer.cchttp://funnel.cc
Funnel is supported by Exploratory Software Project 2007 of IPA