Lecture at Soongsil University

Preview:

DESCRIPTION

The slides for the lecture at Soongsil University on April 27th, 2009.

Citation preview

GainerGainer와와FunnelFunnel디자이너디자이너/ / 아티스트와 엔지니어 사이의 간격을 좁히기 위한 툴 킷과 아티스트와 엔지니어 사이의 간격을 좁히기 위한 툴 킷과 원크숍 디자인원크숍 디자인

Gainer and FunnelGainer and FunnelDesigning of toolkits and workshop to fill gaps between Designing of toolkits and workshop to fill gaps between artists/designers and engineersartists/designers and engineers

Shigeru Kobayashi (IAMAS DSP course)Shigeru Kobayashi (IAMAS DSP course)Lecture and workshop at Soongsil University on April 27th, 2009Lecture and workshop at Soongsil University on April 27th, 2009

Designing toolkits/툴킷 디자인● Gainer (2005~)● Funnel (2006~)

Motivation/동기(엔지니어 있어서)

● 「하드웨어에 있어서의 스케치 」는 소프트웨어 경우만큼 간단한 것은 아니다.:계발 최종 단계에서 새로운 아이디어를 실제 구현하는 것은 어렵다.

● 과거(예전)경험을 바탕으로「새롭운」아이디어를 평가하는 것은 어렵다

● 디자이너와 엔지니어의 사이에는 공통언어가 없다.

Motivation/동기 (IAMAS에서)

● 컨셉주도로 제작을 진행하는 일은 평균적으로 확실한 아이디어를 가지고 있지 않은 학생에게 있어 간단한 일은 아니다.

● 「만들면서 생각한다.」라는 메소드는 생각하는 방법에 있어서 좋지만, 알맞은 기술 없이는 실제론 어렵다.

● 마이콘(microcontroller) 프로그래밍을 C나 어셈블러로 가르치는 것은 어렵다.(쉽게 좌절하는 경향이 있다.)

Physical Computing과의 만남

● 2004년에 도서「Physical Computing」을 통해 접하게 됐다.

● 거기에 쓰여진 가르친 방법은 괜찮아 보였다.

● 그 후에 툴 킷을 디자인하고, 워크숍을 열고 기사랑 책을 썼다.

Gainer의 배경

● 2005년에 개발을 시작했다(아직 Arduino가 없는 시기)

● 자기자신이 필요로 하는 툴 킷을 개발하자● 가능한 한 심플하게 하기 위해 기능을 I/O모듈로

한정했다

Gainer 라는 것은?

● 오픈 소스 하드웨어와 소프트웨어로부터 구성된 툴 킷

● 하드웨어 : USB인터페이스부착 I/O모듈● 소프트웨어 라이브러리

● ActionScript 2/3● Processing● Max/MSP

Gainer I/Oモ모듈

워크숍 예● Yamaguchi Center for Arts and Media

(야마구치 정보 예술 센타)

● 이틀간 (2007.12.21-22)

● 참가자19명● Gainer I/O + Funnel + Processing

Lecture/Lecture/강의강의

Practical training/Practical training/실습실습

Idea Sketches/Idea Sketches/아이디어 스케치아이디어 스케치

Hardware sketching/Hardware sketching/하드웨어 스케치하드웨어 스케치

Hardware sketching/Hardware sketching/하드웨어 스케치하드웨어 스케치

Presentation/Presentation/프레젠테이션프레젠테이션

++GAINER: tutorialGAINER: tutorial

+GAINER: Cookbook

++GAINER: GAINER: 작품소개작품소개

오픈 소스 하드로서 Gainer

● Gainer I/O module v1.0● 오리지날판● PSoC 기반

오픈 소스 하드로서 Gainer

● Gainer PSoC development board● SparkFun Electronics에 의한 설계● PSoC기반

오픈소스하드로서 Gainer

● Ginger/Pepper/Sugar● Morecat Lab에 의한 설계 ● AVR기반

오픈 소스 하드로서의 Gainer

● Gainer mini● RT에 의한 설계● PIC기반

오픈 소스 소프트웨어로서 Gainer

● .NET● Perl● Puredata● Python● Ruby● Squeak● vvvv

IAMAS에서 최근 활동

● 미디어아트에서 지금까지 해온 표현을 인터렉션 디자인에 응용

● 인터렉티브 광고란 또 다른 응용 예가 될 것이다.

● 피지컬한 인터랙션 디자인을 위해 새로운 디자인 메소드를 개발:Gangu 프로젝트

(Gangu는 일본어로 완구를 말함)

완구를 디자인하는 프로세스● 기존의 전자완구를 재조사(많이)● 아이디어 스케치를 그린다(많이)● 아이디어를 평가하고, 학생에게 하나의 아이디어를 선택한

다.

● DirtyPrototype (점토나 발포 스치롤 같은 가까이있는 재료로 단시간에 만드는 타입)

● 하드웨어스케치● 프로토타입 제작● 전시● 다시 한번 생각해 본다

완구의예:Mountain Guitar

● 디자인:Junichi Kanebako

● 장난감 같은 악기 인터페이스 프로패셔날한 기타 사운드

● Gainer I/O (무선판) + Max/MSP

완구 예:Jamming Gear

● 디자인:So Kanno and Kenichiro Saigo

● 디지털뮤직을 시각화 하기 위해 탄지불 인터페이스

● 스케치:Gainer I/O + Max/MSP

● 프로토타입:FIO + Bluetooth + Max/MSP

Funnel개발동기

● 한 종류의I/O모듈로는 일반적으로 용도를 카바하지 못함, 툴 킷을 바꾸는 것은 어렵지 않다.

● 초심자에 있어서, 실세계에서 입력을 다루는 것은 간단하지는 않다.

● 유선으로 접속이「하드웨어에 있어 스케치」단계에서 아이디어를 좁힌다.

Funnel개발 배경● 처음은「Gainer v2.0」으로 할 계획이었다.

● 개발시작은 2007년:이미 Arduino이 등장해 넓게 사용되고 있었다.

● 나 자신도 자주 Gainer와 Arduino 둘을 사용하고 있다.

● 「차별화」,「신규성」 만을 위해서 독자적인 것을 만드는 것은 그만둠 : 일반 소비자를 생각하자

● 그러면 툴 킷 사이를 「상호접속」하는 것은 어떨가?

Bill Buxton's “design funnel”

● Sketching User Experiences (2007)

수업에 있어 대처Sketching Prototyping

Toolkit Gainer Gainer or Arduino

Connection wired Wired, wireless or stand-alone

Programming PC PC and/or microcontroller

Material Cardboard, clay or styrofoam

Wood and/or 3D printing

Wiring breadboard soldering

Funnel란 무엇인가?

● 툴 킷을 상호접속하는 툴킷● 스케치에서 프로토타입까지「프로토타입

funnel」을 카바한다.

● 디자이너/아티스트와 엔지니어 사이에 공통언어가 되는 것을 목표로

Funnel기능

● 「센서언어」를「GUI언어」에 통역한다.

● 입력을 처리하기 위한 다양한 필터● 스케일링● 범위분할(SetPoint)

● LPF, HPF등● Arduino기반 새로운I/O모듈

Funnel을 경유한 상호접속

서포트하고 있는 하드웨어● Gainer I/O

● Arduino and compatibles (Firmata v2경유)

● XBee (IEEE 802.15.4/ZigBee)● FIO (Funnel I/O)

서포트하고 있는 프로그래밍 언어● ActionScript 3● Processing● Ruby

Event detection without Funnel

var threshold:Number = 0.5;var hysteresis:Number = 0.1;var lastState:int = 0;

function loop:void {var state:int = -1;if (io.analogInpout(0).value < (threshold – hysteresis)) {

state = 0;} else if (io.analogInpout(0).value > (threshold + hysteresis)) {

state = 1;} else {

state = lastState;}

if (lastState == 0 && state == 1) {// on rising edge, do something

}

lastState = state;}

Event detection with Funnel

var threshold:Number = 0.5;var hysteresis:Number = 0.1;

io.analogInput(0).filters = [new SetPoint([threshold, hysteresis])];io.analogInput(0).addEventListener(RISING_EDGE, onRisingEdge);

function onRisingEdge(e:PinEvent):void {// do something

}

Recommended