Interactive Workshop for Artists & Designers 연세대학교디지털아트학과, 2016 Earl Park

Similar documents
(b) 미분기 (c) 적분기 그림 6.1. 연산증폭기연산응용회로

실험 5

PowerPoint Presentation

실험 5

(b) 연산증폭기슬루율측정회로 (c) 연산증폭기공통모드제거비측정회로 그림 1.1. 연산증폭기성능파라미터측정회로

슬라이드 1

Microsoft Word - LAB_OPamp_Application.doc

Microsoft PowerPoint - Ch12

Microsoft Word - Lab.7

2 PX-8000과 RM-8000/LM-8000등의 관련 제품은 시스템의 간편한 설치와 쉬운 운영에 대한 고급 기술을 제공합니다. 또한 뛰어난 확장성으로 사용자가 요구하는 시스템을 손쉽게 구현할 수 있습니다. 메인컨트롤러인 PX-8000의 BGM입력소스를 8개의 로컬지

Motor

Microsoft Word - Lab.4

슬라이드 1

Microsoft PowerPoint - Ch15-1

시프트 레지스터 Shift Resistor 자, 이제 LED MATRIX 8x8 Board를 마이크로컨트롤러에 연결된 3개의 선으 로 제어해 보자. 이는 마이크로컨트롤러의 포트를 확장함과 동시에 프로그램 으로 제어를 더 쉽게 한다는 장점이 있다. 물론 포트를 절약하게

PowerPoint 프레젠테이션

Microsoft PowerPoint - Ch13

Microsoft PowerPoint - (공개)의료기기제작1-3.ppt [호환 모드]

그룹웨어와 XXXXX 제목 예제


Microsoft PowerPoint - es-arduino-lecture-03

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

1. 되먹임회로 -되먹임회로는출력의일정부분을입력부분에다시넣어주는역할 -전압이득이 인증폭기에되먹임율 인되먹임회로를연결 -되먹임율 는 0에서 1사이의값을가진다 -혼합기에서나오는신호 는입력신호 와되먹임신호 의합 - 을 에대입하면전압이득 는 - 는연산증폭기의열린이득 (open

실험 5

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

API 매뉴얼

Microsoft PowerPoint - ICCAD_Analog_lec01.ppt [호환 모드]

(Microsoft Word - GNU\272\270\260\355\274\255)

슬라이드 1

DIB-100_K(90x120)

½½¶óÀ̵å Á¦¸ñ ¾øÀ½

Microsoft PowerPoint - Ch16

Ⅰ Ⅱ ? ? Ⅲ Ⅳ

Microsoft PowerPoint - ch07 - 포인터 pm0415

Microsoft PowerPoint - ch12ysk2015x [호환 모드]

Microsoft PowerPoint - chap06-2pointer.ppt

ez-md+_manual01

고객 카드

PowerPoint 프레젠테이션

Slide 1

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

구성품 - UMD 2808 모듈 - JTAG 커넥터 - 젂원 케이블 주요 특징 모듈의 부품화 : 고신뢰성의 DSP 모듈을 최적화된 시스템에 적용 용이 TMS320F2808 ZGMS - 100MHz 탑재 : 확장된 온도규격 (-40 도 ~ 125 도) 적용 Ultralo

전자실습교육 프로그램

Microsoft Word - PLC제어응용-2차시.doc

KMC.xlsm

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

THE JOURNAL OF KOREAN INSTITUTE OF ELECTROMAGNETIC ENGINEERING AND SCIENCE Oct.; 27(10),

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A634C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

PowerPoint 프레젠테이션

개요

2015 개정교육과정에따른정보과평가기준개발연구 연구책임자 공동연구자 연구협력관

Microsoft Word - PEB08_USER_GUIDE.doc

FS SERIES_BR_K_1508_V3.indd

OCW_C언어 기초

. 0.. Planck : sec : sec : : m in radian m in ln sec 심장 발 기압

4장 논리 게이트

Smart & Green Technology Innovator 경선추 밀리미터파백홀용 MMIC 설계기술 본기술은 70/80GHz 주파수대역을활용한 PtP(Point-to-Point) 시스템을구성할때필수적인부품인 E-band 용 LNA, DA, PA, Mixe

요약문 1 요 약 문 1. 과 제 명 : 소음노출 저감을 위한 작업환경관리 및 측정방안 연구 2. 연구기간 : ~ 연 구 자 : 연구책임자 장 재 길 (연구위원) 공동연구자 정 광 재 (연구원) 4. 연구목적 및 필요성

CAN-fly Quick Manual

1

슬라이드 1

강의 개요

Chapter. 14 DAC 를이용한 LED 밝기제어 HBE-MCU-Multi AVR Jaeheung, Lee

Microsoft PowerPoint - chap06-1Array.ppt

전력시스템공학

슬라이드 1

Keyboard Pro 88(manual)

Microsoft Word - EastSocket매뉴얼_ _.doc

PowerPoint 프레젠테이션

Chapter4.hwp

chap 5: Trees

논리회로설계 3 장 성공회대학교 IT 융합학부 1

BMP 파일 처리

KOREAN Mobile Audio Interface For Guitar & Bass USERS MANUAL

ez-shv manual

중간고사

<3235B0AD20BCF6BFADC0C720B1D8C7D120C2FC20B0C5C1FE20322E687770>

정보보안 개론과 실습:네트워크

BY-FDP-4-70.hwp

Electromagnetics II 전자기학 2 제 10 장 : 전자파의전파 1 Prof. Young Chul Lee 초고주파시스템집적연구실 Advanced RF System Integration (ARSI) Lab

금오공대 컴퓨터공학전공 강의자료

11장 포인터

RRH Class-J 5G [2].,. LTE 3G [3]. RRH, W-CDMA(Wideband Code Division Multiple Access), 3G, LTE. RRH RF, RF. 1 RRH, CPRI(Common Public Radio Interface)

. 서론,, [1]., PLL.,., SiGe, CMOS SiGe CMOS [2],[3].,,. CMOS,.. 동적주파수분할기동작조건분석 3, Miller injection-locked, static. injection-locked static [4]., 1/n 그림

2Stage BJT Amplifier 를이용한 FM 송신기의설계및제작 (Design of FM Transmitter using 2 Stage BJT Amplifier) - 통신시스템설계 - 천성용 Dept. of Electronic Engineering, Yeungna

PowerPoint Template

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

아날로그입력 Analog Input 작품이외부세계에관한정보를아날로그형태로읽어들이는경우. 센서를이용하는여러프로젝트들이이에속한다. 이를테면작품앞에있는사람의몸무게는어느정도인지, 방안의 조명은얼마나밝은지등을알고자하는경우가이에속한다. 예 ) 다양한센서들

슬라이드 제목 없음

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

설계란 무엇인가?

Microsoft PowerPoint - C프로그래밍-chap03.ppt [호환 모드]

Microsoft PowerPoint 웹 연동 기술.pptx

제목을 입력하십시오

KAERITR hwp

- 2 -

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint - additional01.ppt [호환 모드]

Microsoft PowerPoint - 8. 전력

프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음

Transcription:

Interactive Workshop for Artists & Designers 연세대학교디지털아트학과, 2016 Earl Park

소리 Sound 소리란물체의진동에의해생성된파동이공기와같은여러가지매질을통해전달되어우리의귀를통해들리는현 상을말한다. 소리를사용하면시각중심적인인터페이스에서탈피하는데도움이된다. 출력에있어서는실시간으로소리를만들어내는방법과녹음되어있는소리를재생하는방법이있다. 소리자체만 놓고보면녹음해둔소리가더우수하지만, 인터랙션에활용할수있는가능성은실시간으로생성해내는소리가오 히려더낫다고할수있다. 이시간에는실시간으로소리를생성해내는방법을중점적으로설명하도록한다. 녹음해 둔소리는고품질의소리를얻을수는있지만반응시간이더디며소리를저장할메모리같은공간도필요하다. 입력에있어서는들어오는신호를목적에따라여러가지방법으로분석해사용할수있다. 마이크를이용해동작을감지할수도있고, CD나 mp3에서재생되는음악의드럼비트패턴을분석할수도있다. 또소리의높낮이를분석해볼수도있다. 하지만소리라는것은가장간단한경우에도여러음높낮이의성분들이합쳐져서만들어진것이어서, 어떤소리의높낮이를결정하기위해서는그소리를음높이별로결러낸다음각음높이의상대적인크기를비교해보아야한다. 이는소리의크기를감지하는것보다어려운일이며, 그만큼컴퓨팅파워도더필요하다. Interactive Workshop 1

파동 소리의특성 파동을나누는기준에따라파동을분류할수있다. 파동이전달되는매질의유무에따라분류하기도하고, 파면의모양에따라분류하기도한다. 횡파와종파는파동이진행하는방향과진동하는방향에따라분류한것이다. 횡파는진동방향과파동의진행방향이수직인파동이며, 빛, 전파같은매질이없는파동이다. 종파는용수철이벌어질때나타나는듬성거리는부분과촘촘해진부분이번갈아나타나는것같은파동이다. 진동방향과파동의진행방향이같으며, 소리같은파장에해당한다. 세상에존재하는소리는소리의 3 요소인음정 (Pitch), 음량 (Loudness), 음색 (Timbre) 성분들을가지고있으며, 이것들의조합이소리의특성을결정짓는다할수있다. 소리는매질에해당하는물질이나상태, 온도에따라이동속도가달라지게된다. 기 본적으로실온의공기에서는 340m/s 의속도로이동한다. 소리에서마루와마루사이의거리, 혹은골과골사이의거리를파장이라고한다. 진폭은높낮이를나타낸다. Interactive Workshop 2

음정 (Pitch) 음정이라는것은음의높낮이를말한다. 음의높낮이는진동수혹은파장에의해서결정된다. 예를들어여자는남자보다일반적으로음정이높으며, 성악에서는이러한음정의높낮이에따라여자는소프라노와엘토, 남자는테터, 그리고베이스로나뉘게된다. 물리학적으로는진동수 ( 주파수 ) 가높은음을고음, 고역대라표현하고진동수 ( 주파수 ) 가낮은음을저음, 저역대라표현한다. 주파수의단위인헤르쯔 (Hz) 는 1초동안신호가반복주기를통과하는횟수를의미한다. 사람마다다르고나이가들면서바뀌기는하지만일반적인사람의가청주파수대는 20~20,000Hz다. 사람의청각은 1KHz ~ 6 KHz 에가장민감하다. 20Hz이하의초저주파나 2KHz이상의초고주파의소리는사람이들을수없다. 초고주파같은경우는어선탐지기등에사용한다. 사람의가청주파수대를오디오 (Audio) 라고구분하여, 사운드를처리하는것이오디오를처리하는것과같다고보는생각도있다. Interactive Workshop 3

음량 (Loudness) 음량이란소리가얼마나큰압력을가지고있는지를표현한수치이다. 사람의귀는소리의크기의변화보다변화의비율 (logarithm) 에영향을받는다. 여기서소리의크리를표현할때에는소리의크기에로그값을취한 bel로표현하고, 사용시에는 bel 값을 10배한데시벨 (decibel, db) 을사용한다. 데시벨은절대적인기준이아니기때문에사람이들을수있는가장작은소리를 0 db SPL 이라고하여상대적인크기로음량을나타내게된다. 예를들어 0dB 보다 10배큰소리는 10xLog10/1 으로 10dB, 100배큰소리는 10xLog100/1 으로 20dB 로나타낸다. 인간이가장편하게들을수있는소리의범위는 0dB ~ 90dB사이의소리이다. 이이상의소리에장시간노출되면고막에손상이갈수도있다. 오른쪽에서보면진폭 (Amplitude) 은파형의기준선에서최고점까지의거리를의미하며소리의크기와관련 ( 진폭이크면큰소리, 작으면작은소리 ) 이있으며, 소리의크기는음압변화의비율로표현된다. Interactive Workshop 4

음색 (Timbre) 우리는음파 (sound wave) 를표현하기위한목적으로아래와같은소리굽쇠와같은웨이브가있는그림을그린다. 이것을사실우리는 sine wave 또는 pure tone 이라고해야정확한표현이된다. 그러나대부분의소리들은여러개의서로다른주파수 (frequency) 를가지고있으며따라서매우복잡한파형 (waveform) 를가지고있다. 각각의서로다른소리들은각각의독특한 harmonic의구조를가지고있으며이 harmonic의구조에의해다른소리들과의차별을우리가분간할수있는것이다. 예를들어똑같은도음이라도피아노의도와바이올린의도음을들으면서우리가피아노소리다또는바이올린소리다라고느낄수있는것은바로이 harmonics 라는것때문이며이것을음색 (timbre) 라고한다. 다시말해소리의차이를우리가판단할수있는것은음색때문이다. 소리의음색에또다른영향을미치는요소는소리의모양인 Envelope 이다. 소리는자체의모양을가지고있으며이것은시간과의관계속에서 attack, decay, sustain, release 4가지파트로나누어진다. 피아노의소리는 attack time이짧은 sound의모양을가지고있고오르간이나바이올린의경우 attack time이긴모양을가지고있다. 이러한 sound envelope 에의해우리는또각각의소리의차이를느낄수있는것이다. 파형은어떤음높이에대응하는기본진동수 (fundamental frequency) 가반복되는형태이다. 그음파를푸리에변환 (Fourier transform) 하면, 그음파가기본진동수와, 기본진동수의배음 (overtone) 을진동수로가진여러사인파로이루어져있다는것을알수있다. 여기서배음 (overtone) 이란, 기본진동수의배수인진동수를말한다. Interactive Workshop 5

연산증폭기 Operational Amplifier (Op-Amp) 증폭기란무언가를증폭시키기위한회로를가진기기를말하며, 전파증폭을시키는회로를가진기기라면전파증폭기, 음성신호를증폭하기위한회로를가진기기같은경우에는음성증폭기등으로용도에따라다양한종류의증폭기가있다. 연산증폭기는두개의입력단자와한개의출력단자를가지며, 두개의입력단자간의전압차이를증폭시키는증폭기로고증폭도를가지며아날로그신호의가산, 감산, 적분등의연산이가능한증폭기이다. 어떠한용도로사용하느냐에따라목적이달라지며, 공급되어야하는전압또한달라진다. 연산증폭기는전압에의해신호를증폭해주는전압증폭기로도, 2개의입력신호의차에비례해출력을얻는차동증폭기로사용가능하다. 연산증폭기의장점은다음과같으며, 이상적인연산증폭기에가까울수록다음특성을만족한다고할수있다. 1. 전압이득 = 무한대 ( 출력전압은공급전압을넘을수없음 ) 2. 입력임피던스 ( 교류성분저항 ) = 무한대 ( 실제는 1M옴정도 ) 3. 출력임피던스 ( 교류성분저항 ) = 0 ( 실제는 50옴정도 ) 4. 통과주파수대역폭 = 0 ~ 무한대연산증폭기는아날로그계산기용으로개발되었지만간단하게사용할수있게된때부터아날로그회로에서증폭뿐만아니라필터, 신호처리등광범위하게사용되고있다. 안정화전원, 아날로그-디지털변환기, 디지털-아날로그변환기, 계측기기, 제어장치, TV, 카메라회로, 오디오신디사이저등의기기에서응용되고있으며이외에도안들어가는곳이없을정도로셀수없이많은곳에응용되고있다. 연산증폭기의특성에따른분류에는일반형, 고정밀형, 고속용, 오디오파워앰프등 이있다. 일반형은특정용도에지정되어있지않고거의모든회로에적용가능한 OP- Amp 로 TL081, LM358(LM2904) 등이주로쓰인다. 고정밀형은주로계측용으로사 연산증폭기는 2 개의입력단자인비반전입력단자 (+) 와반전입력단자 (-), 하나의출력단자, 그리고 2개의전원으로이루어져있다. 연산증폭기칩에따라각각에해당하는핀번호가다르고, 각각의연산증폭기의특성에해당하는역할을하는핀이추가되어있는경우가많으니데이터시트를확인하도록하자. 용되며, 주파수대역이낮다. 고속형은주파수대역은높으나, 속도가빠른대신다른특성이좋지않으며비디오신호증폭용과같이특정용도가지정된것이많다. 오디오파워앰프는오디오신호를스피커로출력하기위한앰프로주로단일전원으로사용한다. 출력은 0.2W~100W정도까지있으며 1W 미만으로사용가능한것으로는 LM380, LM386 등이있다. Interactive Workshop 6

LM386 오디오증폭기 LM386 Audio Amplifier 소리증폭해서출력하기 Sound Output 스피커의음량이작을때는어떻게해야할까? 우리가찾을수있는가장범용적이면서가격대가저렴한 LM386 증폭기를사용해보도록한다. 오디오에서사용하는앰프는프리앰프 (Pre-Amp)+ 파워앰프 (Power-Amp) 회로로구성되어있다. 쉽게말해프리앰프는소리를다듬는부분이며, 파워앰프는소리를그대로증폭시키는역할을한다. LM386의데이터시트를검색해보자. Google에 'LM386 Datasheet' 로검색하면다양한회사의 LM386 데이터시트를찾을수있다. 데이터시트를보고회로를구성해보자. 아래는데이터시트에나와있는일반적인 20배, 50배의증폭회로이다. LM386주변으로회로를구성하여소리를증폭시킨다. LM386 Low Voltage Audio Power Amplifier Pins 1,8 Pin 2 Pin 3 Pin 4 Pin 5 Pin 6 Pin 7 Gain Inverting Input Non-Inverting Input GND Vout Vs Bypass LM386 은저전압오디오파워앰프로 20~200 배증폭가능한오디오파워증폭기이다. Vs 는인풋전압으로 LM386N-1 의경우파워는 4~12V 혹은 5~18V 까지가능하며전압 이높을수록소리가크다. Gain 에연결된 RC 회로에따라 20~200 배증폭이가능하다. Gain open(1 번과 8 번사이 에아무것도없으면 ) 시 6V 1KHz 일때 26dB, 10uF 연결시 47dB 이나온다. Bypass 는회로에따라다르지만 0.5uF~50uF 를사용한다. 50uF 일때 100Hz 이하의소 리를통과시킨다. 0.05uF 0.047uF = 473000pF = 473 모노커패시터 ( 노란색, 극성없음 ) 250uF 220uF 전해커패시터 ( 극성있음, 긴쪽 +) 10uF 전해커패시터 (1번쪽이 +) 10K = 10000옴 = 103 ( 파란색고정형가변저항 ) Vs엔 5V 혹은 12V를연결해보며소리의크기를비교해보자. 10K가변저항으로볼륨을조절할수있다. Vin은마이크로컨트롤러의아웃풋핀에연결한다. 200배증폭도가능하나증폭률이커지면잡음 ( 노이즈 ) 역시많아진다. 노이즈를잡는것이기술이며, 이를응용한회로를구성해사용한다. Interactive Workshop 7

신호음재생하기 스피커나다른오디오변환기를통해신호음을재생하고싶다. 그리고신호음의주파수와시간도지정하고싶다. < 하드웨어 > 디지털 9번핀 : 스피커연결, 혹은소리를크게하고싶으면 LM386증폭회로 Vin 아날로그 0번, 1번핀포텐시오미터연결 int speakerpin = 9; int pitchpin =0; void setup() { void loop() { int sensorreading = analogread(pitchpin); int frequency = map(sensorreading, 0, 1023, 100, 5000); // 100Hz~5KHz int duration = 250; tone(speakerpin, frequency, duration); delay(1000); int speakerpin = 9; int pitchpin =0; int durationpin = 1; < 프로그래밍 > 새로운함수 tone() http://arduino.cc/en/reference/tone 문법 tone(pin, frequency) tone(pin, frequency, duration) void setup() { void loop() { int sensorreading00 = analogread(pitchpin); int sensorreading01 = analogread(durationpin); int frequency = map(sensorreading00, 0, 1023, 100, 5000); // 100Hz~5KHz int duration = map(sensorreading01, 0, 1023, 100, 1000); // delay time tone(speakerpin, frequency, duration); delay(duration); tone 함수에는최대 3개의매개변수, 즉스피커에연결되는핀, 재생할주파수 (Hz) 및신호음을재생할시간 (ms) 이사용된다. 세번째매개변수는선택적이며, 이매개변수를생략하면 tone이다시호출되거나 notone이호출될때까지신호음이계속재생된다. Interactive Workshop 8

간단한멜로디재생하기 int speakerpin = 9; 아두이노로간단한멜로디를재생하고싶다. tone 함수를사용하면악기의음표에해당하는소리를재생할수있다. 피아노의 ' 도 ' : 261.63Hz -> 옥타브를높이려면 2배씩곱해주면된다. 참고 : http://en.wikipedia.org/wiki/piano_key_frequencies 다음장에음정별주파수에대한그림이있으니참고하자. NoteNames는악보에있는음표를식별하는문자배열이다. 이배열의각항목은 frequencies배열에정의되어있는주파수와연결되어있다. 예를들어, 음표 C(NoteNames 배열의첫번째항목 ) 의주파수는 262Hz(frequencies배열의첫번째항목 ) 다. score는재생할음표가들어있는배열이다. score배열의각문자가 NoteNames 배열에있는문자중하나와일치하면해당음표가재생된다. 공백문자가쉼표로사용되기는하지만 NoteNames에정의되어있지않은다른문자들도모두쉼표로사용된다. 이프로그래밍에서는 score배열에있는각문자와 1/3초에해당하는지속시간을매개변수로사용해서 playnote를호출한다. playnote 함수는 notenmaes 배열에서일치하는항목을찾은후 frequencies 배열에있는항목을사용하여재생할주파수를가져온다. 음의지속시간은 1/3초 (333/1000sec) 로동일하다. char notenames[] = {'C, 'D', 'E', 'F', 'G', 'a', 'b' ; unsigned int frequencies[] = {262, 294, 330, 349, 392, 440, 494; byte notecount = sizeof(notenames); // score number char score[] = "CCGGaaGFFEEDDC GGFFEEDGGFFEED CCGGaaGFFEEDDC"; byte scorelen = sizeof(score); // score array number void setup() { void loop() { for (int i=0; i<scorelen; i++){ int duration = 333; playnote(score[i], duration); delay(4000); void playnote(char note, int duration){ for (i=0; i<notecount; i++){ if (notenames[i] == note){ tone(speakerpin, frequencies[i], duration); delay(duration); Interactive Workshop 9

간단한멜로디재생하기 + 음지속시간변경 int speakerpin = 9; 멜로디에비트를변경하고싶다. beats는각음표의길이를보여주는배열이며, 1은 8분음표, 2는 4분음표에해당한다. beat는분당비트수이다. speed 는분당비트수를지속시간 (ms) 으로변환한계산결과이다. char notenames[] = {'C, 'D', 'E', 'F', 'G', 'a', 'b' ; unsigned int frequencies[] = {262, 294, 330, 349, 392, 440, 494; byte notecount = sizeof(notenames); // score number char score[] = "CCGGaaGFFEEDDC GGFFEEDGGFFEED CCGGaaGFFEEDDC"; byte scorelen = sizeof(score); // score array number byte beats[scorelen] = {1,1,1,1,1,1,2, 1,1,1,1,1,1,2,1, 1,1,1,1,1,1,2, 1,1,1,1,1,1,2,1, 1,1,1,1,1,1,2, 1,1,1,1,1,1,2; byte beat = 180; unsigned int speed = 60000 / beat; // 1beat time(ms) void setup() { void loop() { for (int i=0; i<scorelen; i++){ int duration = beats[i] * speed; playnote(score[i], duration); delay(4000); void playnote(char note, int duration){ for (i=0; i<notecount; i++){ if (notenames[i] == note){ tone(speakerpin, frequencies[i], duration); delay(duration); Interactive Workshop 10

pitches 라이브러리로멜로디재생하기 #include "pitches.h" pitches 라이브러리를이용해멜로디를연주해보자. 이라이브러리에는각음계에대한주파수가저장되어있어, 쉽계음계를불러와쓸수있다. < 하드웨어 > 스위치 : 디지털 4번핀 < 프로그래밍 > 스위치를누르면연주가시작된다. int melody[] = { NOTE_E5, NOTE_D5, NOTE_E5, NOTE_C5, NOTE_G4, 0, NOTE_E5, NOTE_D5, NOTE_E5, NOTE_C5, NOTE_G4, 0, NOTE_C5, NOTE_C5, NOTE_C5, NOTE_C5, NOTE_B4, NOTE_C5, NOTE_E5, NOTE_D5, 0, NOTE_G5, NOTE_G5, NOTE_G5, NOTE_G5, NOTE_F5, NOTE_E5, NOTE_D5, NOTE_C5; int notedurations[] = { 6,6,6,2,2,16,6,6,6,2,2,16,6,6,6,6,6,6,6,1,16,6,6,6,6,6,6,6,1; int buttonstate; int lastbuttonstate=0; int switchpin = 4; 이제까지배운문법으로아래아두이노사이트에나와있는예제를실행해보자. 여러가지가응용가능하다. 아두이노예제 1. 멜로디를연주해봅시다. https://www.arduino.cc/en/tutorial/tonemelody 2. 빛감지센서의값에따라 ( 주파수값이바뀌므로 ) 소리가달라진다. https://www.arduino.cc/en/tutorial/tonepitchfollower 3. 힘감지센서 3개가각각의정해진음을낸다. 센서는다른것으로바꾸기만하면된다. 예를들면포텐시오미터의값이일정값이상일때소리를내는등. https://www.arduino.cc/en/tutorial/tonekeyboard void setup() { pinmode(switchpin, INPUT); void loop() { buttonstate=digitalread(switchpin); if (buttonstate!=lastbuttonstate){ if (buttonstate==high){ for (int i=0; i<29; i++){ int noteduration = 1000/noteDurations[i]; tone (9, melody[i], notedurations[i]); //mi~sol int pausebetweennotes = noteduration * 1.30; delay(pausebetweennotes); lastbuttonstate=buttonstate; Interactive Workshop 11

소리입력받기 Sound Input 소리로무엇을하든지, 가장우선시되어야할작업은소리에너지를전기에너지로변환하는것이다. 마이크는소리에관한변환기가운데가장기본적인것이다. 마이크는기압의변화를전압의변화로바꾸어준다. 소리는전기적으로 AC신호로나타나게된다. 즉, 그신호가 0볼트를중심으로양과음의두방향으로움직인다는것이다. 신호는다시마이크레벨 (Microphone-Level) 신호와라인레벨 (Line-Level) 신호의두가지로나누어진다. 마이크레벨의신호는마이크로볼트에서밀리볼트번위에있다. 라인레벨의신호는 -1~1볼트범위에있다. CD플레이어와 MP3플레이어및턴테이블등앰프 ( 증폭기 ) 를가지고있는디바이스들은모두라인레벨의신호를낸다. 마이크의신호를라인레벨로올리려면앰프를사용해야한다. 마이크로컨트롤러로소리의크기를파악하기위해서는먼저마이크에서들어오는신호를증폭시켜야한다. 마이크증폭키트를이용할수도있고, 증폭기능이있는스 피커를사용할수도있고, 아니면부품을가지고앰프를직접만들수도있다. 어떤방법을사용하든, 마이크로컨트롤러와전압수준을맞춰주는것이중요하다. 여기서는직접회로를구성해마이크로소리를입력받는방법을알아보기로한다. 소리를입력받는회로역시소리를출력하는것과마찬가지로낮은레벨의전압값을높은레벨로변화시켜야한다. 따라서 LM386 오디오증폭기를사용해증폭시키는회로를구성해전압값을변화시키도록한다. 위의라인레벨입력회로는전압분배회로로, 저항들은같은값을가지는것을사용하여전체에걸리는전압을가운데서정확히절반으로나눔으로써 2.5V가되도록하는회로이다. 입력되어들어오는소리신호는라인레벨이므로 -1~1V 사이에서변화한다. 여기에 2.5V가더해지면마이크로컨트롤러에들어오는전압은 1.5~3.5V 사이에있게된다. 이는마이크로컨트롤러에서 ADC(Analog to Digital Converter) 를사용한아날로그입력으로잘읽을수있는범위이다. 소리신호와저항사이에있는캐패시터는로우패스 (Low-pass) 필터역할을하여자잘한진동수는걸러내고소리의인벨로프 (Envelope) 진폭만을측정할수있도록해준다. 콘덴서마이크부품은캐패시터 2개의막으로구성된마이크로서소리신호를전기신호로변환하는역할을한다. Interactive Workshop 12

소리입력받기 int sensorvalue; 소리를입력받아보자. 마이크에서받아들인소리는작은전압의변화를조금큰전압변화로증폭한다음아두이노의입력핀으로들어오게된다. 시리얼통신으로값을읽어보면전압값이몇정도들어오는지확인할수있다. 마이크주변에서소리를내보고얼마나전압변화가있는지확인해보자. 이를응용하여평소의값과소리가났을때의값을비교하여사람이주변에있는지알아보는센서로활용하거나, 일정하게나는소리의변화주기를파악할수도있다. 전자는음파 (Sound Wave) 의진폭 (Amplitude) 의높이를파악하려는것이고, 후자는주파수 (Frequency) 의주기를파악하려는시도이다. void setup() { Serial.begin(9600); // sets the serial port to 9600 void loop() { sensorvalue = analogread(0); // read analog input pin 0 Serial.println(sensorValue); // prints the value read delay(100); // wait 100ms for next reading Interactive Workshop 13