제8-9강 인터랙티브 사운드 아트를 만들어 보자
지금까지 배운 기술을 총동원해서, 오리지널 인터랙티브 사운드 아트 작품의 제작을 시작합니다. 2회분의 수업을 사용해서 모티프 선정부터 음향 제작까지 진행해 봅시다.
이번 강의의 목표
- 오리지널 인터랙티브 사운드 아트 작품의 제작을 시작한다
- 모티프와 인터랙션을 결정한다
- micro:bit의 센싱과 Pd의 음향 합성을 연동시킨다
- 작품 설명 시트를 작성한다
준비물
| 항목 | 설명 |
|---|---|
| micro:bit V2 | 센서가 내장된 마이크로컨트롤러 보드 |
| USB 케이블 | micro:bit와 PC를 연결한다 |
| PC | Pure Data가 설치되어 있을 것 |
| 헤드폰 / 이어폰 | 소리를 확인하기 위해 사용 |
| 노트・필기구 | 아이디어 스케치용 |
Step 1: 모티프의 선정
모티프란
모티프 란 작품의 테마나 소재 를 말합니다. 「무엇을 표현하고 싶은가」를 정하는 첫 번째 단계입니다.
인터랙티브 사운드 아트의 모티프에는 크게 두 가지 측면 이 있습니다.
소리의 모티프 — 무엇을 「소리」로 표현할 것인가
작품을 통해 체험자에게 전하고 싶은 세계관이나 분위기를 말합니다. 「빗소리」「심해의 고요함」「축제의 활기」처럼, 소리를 통해 어떤 경험을 전달하고 싶은지를 생각합니다.
실체가 있는 모티프 — 체험자가 실제로 만지는 것
인터랙티브 작품에서는 체험자가 손에 들거나, 움직이거나, 만지는 물리적인 오브젝트 도 모티프의 중요한 일부입니다. micro:bit를 그대로 들게 하는 것이 아니라 어떤 형태에 끼워 넣음으로써, 경험의 설득력이 크게 달라집니다.
| 실체의 모티프 | 끼워 넣는 방법 | 소리 모티프와의 관계 |
|---|---|---|
| 손전등 | micro:bit를 손전등 안에 넣는다 | 빛을 비추는 방향에 따라 동굴 안의 소리가 바뀐다 |
| 부채・쥘부채 | micro:bit를 부채에 붙인다 | 부치는 동작으로 바람 소리가 생겨난다 |
| 모래시계 | micro:bit를 모래시계 모양의 케이스에 넣는다 | 기울이면 모래가 떨어지는 소리가 흐른다 |
| 인형 | micro:bit를 인형 안에 넣는다 | 흔들거나 쓰다듬으면 울음소리가 바뀐다 |
| 악기 모양의 물건 | micro:bit를 기타나 마라카스 모양에 부착한다 | 흔들기・기울이기 동작이 연주가 된다 |
| 상자・용기 | micro:bit를 상자에 넣고 뚜껑을 여닫을 수 있게 한다 | 뚜껑을 열면 안에서 소리가 넘쳐 나온다 |
| 식물 모형 | micro:bit를 화분 모양의 오브젝트에 넣는다 | 손을 대면 꽃이 피는 소리가 난다 |
실체가 있는 모티프가 작품을 바꾼다
똑같은 「가속도 센서로 음의 높낮이가 바뀌는」 구조라도, micro:bit를 그대로 손에 드는 경우와 검 모양의 물건에 끼워 넣는 경우는 체험자가 느끼는 방식이 전혀 다릅니다. 무엇을 들고, 무엇을 만지는가 는 소리만큼이나 작품의 인상을 좌우합니다.
주변의 물건(천 원 숍의 소품, 골판지, 페트병 등)을 활용해서 콘셉트에 맞는 형태를 생각해 봅시다.
모티프의 예
두 가지 측면을 조합해서 생각해 봅시다.
| 카테고리 | 소리의 모티프 | 실체의 모티프 예 | 경험의 이미지 |
|---|---|---|---|
| 자연 현상 | 비, 바람, 파도, 천둥 | 부채, 우산, 조개껍데기 | 부채를 부치면 바람 소리, 우산을 기울이면 빗소리가 변화 |
| 일상의 동작 | 요리, 청소, 공작 | 국자, 빗자루, 망치 | 국자를 흔들면 냄비 소리, 치는 세기로 소리가 바뀐다 |
| 감정 | 기쁨, 공포, 치유 | 오르골, 상자, 랜턴 | 상자를 열면 신비한 소리, 랜턴을 켜면 치유의 소리 |
| 공간 | 동굴, 우주, 숲, 수중 | 손전등, 망원경, 병 | 손전등의 방향에 따라 동굴 안의 소리가 바뀐다 |
| 생물 | 새, 벌레, 고양이, 물고기 | 인형, 알, 깃털 | 인형을 흔들면 울음소리가 변화 |
| 추상 개념 | 시간, 색, 온도 | 모래시계, 만화경, 풍선 | 모래시계를 기울이면 시간이 흐르는 소리 |
생각하기 위한 힌트
다음 질문을 자신에게 던져 봅시다.
- 「어떤 소리가 들리면 재미있을까?」 --- 일상에서는 들을 수 없는 소리를 상상한다
- 「무엇을 손에 들면 재미있을까?」 --- 체험자가 만지는 오브젝트를 상상한다
- 「어떤 움직임으로 소리를 내고 싶은가?」 --- 든 오브젝트를 어떻게 움직일지 생각한다
- 「체험자가 어떤 기분이 되기를 바라는가?」 --- 작품을 통해 전하고 싶은 인상을 정한다
아이디어를 내는 요령
우선은 떠오른 것을 무엇이든 노트에 적어 봅시다(브레인스토밍). 질보다 양이 중요합니다. 10개 이상 아이디어를 낸 뒤에 가장 재미있는 것을 하나 고릅시다.
「소리의 모티프」와 「실체의 모티프」를 따로 목록으로 만든 뒤에 조합하면, 의외의 발상이 나오기 쉬워집니다.
Step 2: 인터랙션의 결정
사용할 센서의 선택
micro:bit에 내장된 센서 중에서 모티프에 맞는 것을 고릅니다.
| 센서 | 검출할 수 있는 것 | 인터랙션의 예 |
|---|---|---|
| 가속도 센서 | 기울기, 흔들기, 충격 | 흔들기→천둥이 친다, 기울이기→바람의 방향이 바뀐다 |
| 밝기 센서 | 빛의 양 | 손으로 가리기→동굴에 들어간다, 빛을 비추기→아침이 온다 |
| 마이크 | 음량 | 소리 내기→에코가 돌아온다, 손뼉 치기→타악기가 울린다 |
| 터치 센서 | 로고에의 접촉 | 만지기→심장의 고동, 떼기→정적 |
| 버튼(A/B) | 누르는 조작 | 모드 전환, 음색의 변경 |
| 지자기 센서 | 방향 | 북쪽을 향하기→바람 소리, 남쪽을 향하기→파도 소리 |
인터랙션의 설계
입력 → 처리 → 출력 의 흐름을 그림으로 그려 정리합시다.
【입력】 【처리】 【출력】
micro:bit Pd 패치 스피커
━━━━━━━━━ ━━━━━━━━━ ━━━━━━━━
가속도 X축 ──→ 주파수로 변환 ──→ 사인파의 높낮이
가속도 Y축 ──→ 음량으로 변환 ──→ 전체의 음량
버튼A ──→ 모드 전환 ──→ 음색이 바뀐다설계도를 반드시 그리자
갑자기 프로그래밍을 시작하지 말고, 먼저 종이에 설계도를 그립시다. 「어떤 센서의 값이」「어떻게 변환되어」「어떤 소리가 되는지」를 명확히 해 두면 제작이 순조롭게 진행됩니다.
설계 시트의 기입 예
다음 항목을 채워서 인터랙션을 명확히 합시다.
| 항목 | 기입 예 |
|---|---|
| 모티프 | 바닷속 세계 |
| 입력 센서1 | 가속도 센서(기울기) |
| 조작 방법1 | micro:bit를 좌우로 기울인다 |
| 소리의 변화1 | 파도 소리의 높낮이가 바뀐다 |
| 입력 센서2 | 밝기 센서 |
| 조작 방법2 | 손으로 가린다/뗀다 |
| 소리의 변화2 | 심해로 잠수한다(어두움=낮은 소리, 밝음=높은 소리) |
Step 3: 인터랙션의 센싱
micro:bit의 프로그래밍
MakeCode에서 센서의 값을 시리얼 통신으로 전송하는 프로그램을 만듭니다.
기본 구성:
무한 반복:
시리얼로 값 쓰기 레이블 "acc_x" 값 [가속도(mg) X축]
시리얼로 값 쓰기 레이블 "acc_y" 값 [가속도(mg) Y축]
시리얼로 값 쓰기 레이블 "light" 값 [밝기]
일시 정지(밀리초) 50데이터 전송의 간격
일시 정지 를 50ms로 설정하면 1초에 약 20회 데이터를 전송합니다. 음악적인 용도에는 이 정도의 속도로 충분합니다.
SerialOSCConverter의 설정
micro:bit로부터의 시리얼 데이터를 OSC 메시지로 변환해서 Pd로 보냅니다.
- SerialOSCConverter 를 실행한다
- micro:bit가 연결된 시리얼 포트 를 선택한다
- 보드레이트 를
115200으로 설정한다 - OSC 전송 대상 포트 를 확인한다(기본값은
8000) - 「Start」 버튼을 눌러 변환을 시작한다
Pd에서의 데이터 수신과 변환
Pd에서 OSC 메시지를 수신하고, 소리의 파라미터로 변환합니다.
기본적인 수신 패치의 구성:
[netreceive -u -b 8000] ← UDP 포트 8000에서 수신
|
[oscparse] ← OSC 메시지를 해석
|
[route /acc_x /acc_y /light] ← 레이블별로 배분
| | |
[/ 1024] [/ 1024] [/ 255] ← 0〜1의 범위로 정규화센서 값의 범위 일람
| 센서 | 최솟값 | 최댓값 | 정규화 계산 |
|---|---|---|---|
| 가속도 X/Y/Z | -2048 | 2048 | 값 / 2048 로 -1〜1 로 |
| 가속도 strength | 0 | 2048 | 값 / 2048 로 0〜1 로 |
| 밝기 | 0 | 255 | 값 / 255 로 0〜1 로 |
| 마이크 음량 | 0 | 255 | 값 / 255 로 0〜1 로 |
| 나침반 | 0 | 360 | 값 / 360 로 0〜1 로 |
Step 4: 음향의 제작
지금까지 배운 기법의 조합
전반부 수업에서 배운 Pd의 기법을 되돌아보고 작품에 활용합시다.
| 기법 | 사용하는 Pd 오브젝트 | 효과 |
|---|---|---|
| 사인파의 생성 | [osc~] | 기본적인 음 높낮이의 제어 |
| 노이즈의 생성 | [noise~] | 바람이나 파도 같은 소리의 소재 |
| 음원 파일의 재생 | [readsf~] [tabplay~] | 녹음한 소리의 활용 |
| 필터 | [lop~] [hip~] [bp~] | 음색의 변화 |
| 딜레이 | [delwrite~] [delread~] | 잔향이나 에코 효과 |
| 음량 제어 | [*~] [line~] | 매끄러운 음량 변화 |
| 피치 시프트 | 주파수의 변조 | 음 높낮이의 변화 |
| 자동 연주 | [metro] [random] | 리드미컬한 패턴 |
제작 진행 방법
다음 순서로 제작을 진행하면 효율적입니다.
- 소리를 하나 만든다 --- 우선 하나의 소리를 내 본다
- 센서와 연결한다 --- 그 소리를 센서의 값으로 변화시킨다
- 동작을 확인한다 --- 의도대로 조작할 수 있는지 확인한다
- 소리를 추가한다 --- 두 번째, 세 번째 소리를 겹친다
- 전체를 조정한다 --- 음량 밸런스와 반응성을 조정한다
흔히 생기는 문제
- 소리가 나지 않는다:
[dac~]가 ON인지 확인(DSP를 ON으로) - 값이 오지 않는다: SerialOSCConverter가 동작 중인지, 포트 번호가 맞는지 확인
- 소리가 끊긴다:
[line~]으로 값의 변화를 매끄럽게(값을 직접 넣으면 「툭」 하는 노이즈가 난다) - 음량이 너무 크다:
[*~ 0.3]처럼 출력을 작게(1.0을 넘으면 왜곡된다)
Step 5: 작품 설명 시트의 작성
수업 마지막에 작품 설명 시트를 작성해서 제출합니다. 다음 항목을 기입해 주세요.
템플릿
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
작품 설명 시트
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
【작품명】
(예: 해중 산책 〜 Sound of the Deep Sea)
【작자명】
【콘셉트】
실체의 모티프(체험자가 만지는・움직이는 것):
(예: 종이나 빈 상자, 3D 프린터 등으로 만든 「잠수함」에 micro:bit를 내장)
소리의 모티프(표현하고 싶은 소리의 세계관):
(예: 심해의 세계를 소리로 표현한다)
인터랙션의 관계:
(예: 「잠수함」을 기울이면 수중의 깊이가 바뀌고,
깊어질수록 낮은 소리가 울리며, 손으로 가리면 거품 소리가 변화한다)
【사용하는 센서와 조작 방법】
센서1: (예: 가속도 센서 Y축)
조작: (예: 「잠수함」을 앞뒤로 기울인다)
효과: (예: 깊이에 따라 음의 높낮이가 변화)
센서2: (예: 밝기 센서)
조작: (예: 「잠수함」을 손으로 가린다/뗀다)
효과: (예: 거품 소리가 난다/사라진다)
【기술 구성】
사용하는 Pd 오브젝트:
(예: osc~, noise~, lop~, delwrite~, delread~,
line~, *~, metro, random)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━다음 강의를 향해
제10강에서는 둘씩 짝을 지어 서로의 작품을 평가하는 사고 발화법 을 진행합니다. 그때까지 「체험해 볼 수 있는 상태」까지 작품을 완성해 둡시다. 완성되지 않아도 괜찮지만, 최소한 소리가 나고 센서로 조작할 수 있는 상태 로 만들어 주세요.
체크리스트
자신의 진행 상황을 확인합시다.
- [ ] 모티프를 결정했다
- [ ] 사용할 센서를 골랐다
- [ ] 입력→처리→출력의 설계도를 그렸다
- [ ] micro:bit의 프로그램을 만들었다
- [ ] SerialOSCConverter로 데이터 변환을 할 수 있었다
- [ ] Pd에서 센서 데이터를 수신할 수 있었다
- [ ] 하나 이상의 소리를 생성할 수 있었다
- [ ] 센서의 값으로 소리가 변화하게 되었다
- [ ] 작품 설명 시트를 기입했다