로그인회원등록 내글장바구니주문조회현재접속자
 상품 검색








 게시판 검색





 
 
회원등록 비번분실


온라인 입금계좌
ㆍ기업은행
ㆍ219-043192-01-028
ㆍ이건영

      거래은행 바로가기
 
 Sensor Applications
아듀이노 공개소스
작성자 avrtools™        
작성일 2008/08/24
Link#1 (Down:251)
ㆍ추천: 0  ㆍ조회: 3844   
  아듀이노 MIDI 플륫
제목 : Magic Flute
참조 :
http://itp.nyu.edu/~mjc497/weblog/2007/01/

나는 이 자료를 처음 보는 순간에, 사실인지 거짓인지 분간이 안되엇습니다.
아듀이노의 응용예로 재미있는 자료라고 생각되고, 궁금하기도 해서 소개를 하려고 합니다.

 
나의 프로젝트 Living Art Finite State Machine에서 "Magic Flute"을 만들었다.

Magic Flute은 간단한 관악기(wind-style)의 C-장조의 음을 표현하는 MIDI 장치의 주변기기(interface)이다.
나는 학습받은 keyboard player 이다. 그러나 항상 clarinet 같은 관악기(wind instrument)를 연주하길 원했다.
이 과제의 목표와 다른, 제한된 상태의 장치로 되었다. (음~~ 자신의 목표 수준에는 도달하지 않았다는,,,)
 
전자 플륫의 상태 천이도 (state machine)
    
 
전자플륫의 상태 천이도의 입력, 출력, 메모리의 과거상태를 결정하는 제한을 학과에서 토의했다.
출력음은 악기에서 신체가 키를 접촉하는 것처럼 가벼운 클릭 비슷하다. 더 중요한 것은 MIDI 제어신호의 송신이다.
메모리는 아듀이노 기판위의 AVR 칩에서 작동하는 코드 속에 들어있다.
코드는 어떤 단추가 눌렸었는지 기억하고 MIDI 신호를 상태천이도에 따라서 송신한다.

제한된 상태 천이도에서 바람의 속도는 언급하지 않았음을 주지하라
나는 마지막 주에 검토한 음량을 조절하는 좋은 부분을 누락시겼다.
내가 아듀이노를 증폭도의 측정에 사용하는 검토했을 때,
작동했던 음성 증폭용 회로를 사용했다. 그러나 매우 신뢰성이 없었다.

장치 안에서 바람속도를 측정하여 가능한 다른것을 만들고 싶었다. 
- 속도를 측정하는 작은 광차단식(opto interrupter) 원판(wheel) 복조기(encoder)를 사용한다.
- 좋은 신호를 출력하는 진동검출기(vibration sensor)를 찾고 있다. 
- 연결이 쉬운 풍속계(anemometer)

이 장치를 다시 만든다면, 제어장치의 펌웨어를 확장하고 싶다.
1) 단추로 작동하는 연주를 저장하고 재생하는 sequencer 기능,
   - 이것은 실제연주(live)에서 정말로 멋이 있을 것이다.
2) C장조 외의 음정을 연주하는 음계 이동(transposition) 기능
3) 다른 음계의 연주를 위한 반음(semi tone) 키
4) 음량조정 손잡이
 
* 역자 주: 
PSR 센서를 아날로그 입력 8개에 연결하여 기존의 누름 스위치를 변경하고,
PSR 센서를 누른 힘을 아날로그로 읽어서, 음량을 조정해도 좋을 것 같습니다.
  
크기 : 직경 12.7mm, 두께 0.45mm
감도 : 0.1kg/㎠ ~ 10kg/㎠
가격 : 8,000원

Magic Flute의 제작 사진들 (원통형의 악기 끝에 아듀이노 기판이 있다) 
  

소스
// 제목 : Magic Flutev1.0 
// 날자 : 2007-01-30
// 저자 : Michael Chladil

// 아듀이노의 디지털 입력을 ㅏ용한 8 단추 MIDI 제어기
// C장조의 MIDI note-on과 note-off 명령을 전송한다.
 
#define DEBUG      1
#define FIRST_SWITCH 2
#define LAST_SWITCH  9
#define SERIAL_MODE BYTE  // 벌레잡기용 HEX | BINARY | ASCII | DECIMAL 중에서 선택

int  switchStates[8];              // 현재 입력된 8개의 단추의 값  
int  lastSwitchStates[8];         // 직전에 사용된 8개의 단추의 값
char notes[8] = {62, 64, 66, 67, 69, 71, 73, 74};
int i;                                    // 반복횟수를 정하는 변수

void setup ()                         // 2~9 까지 디지털 핀을 입력으로 설정
{
   for (i = FIRST_SWITCH; i <= LAST_SWITCH; i++) pinMode (i, INPUT);
   Serial.begin (31250);            // 직렬포트의 전송속도를 MIDI의 표준속도로 설정
}

void loop ()                           // 무한반복 주함수
{
   for (i = FIRST_SWITCH; i <= LAST_SWITCH; i++)           // 누름 단추 2~9 까지 8번을 반복실행
   {
      switchStates[i - FIRST_SWITCH] = digitalRead (i);    // 입력핀을 읽어서 배열변수에 저장
      if (lastSwitchStates[i - FIRST_SWITCH] != switchStates[i - FIRST_SWITCH])  // 2~9 이내이면 아래의{ }를 실행
      {
         if (switchStates[i - FIRST_SWITCH] == 1)              // 누름 판정 (상승 검출)
            noteOn (0x90, notes[i - FIRST_SWITCH], 100);    //  0x90, 단추값, 100 을 MIDI 송신 (음을 켠다) 
         else                                                                   // 해제 판정 (하강 검출)
            noteOn (0x90, notes[i - FIRST_SWITCH], 0);        //  0x90, 단추값, 0 을 MIDI 송신 (음을 끈다)
         lastSwitchStates[i - FIRST_SWITCH] = switchStates[i - FIRST_SWITCH];     // 현재값을 과거값으로 저장
      }
   }
}

//  MIDI 음높이를 송신, cmd는 127 =0x7F 보다 크면 cmd 이다. 0x90이면 음원 1번의 선택이다.
//  2번째 데이터 (음높이 note값)는 127 =0x7F 보다 작다, 세번째 데이터는 음량의 조절이다.
//  함수에 포함된 ( )안의 변수들는 주함수에서 이 함수로 들어오는 값이다.
void noteOn(char cmd, char data1, char data2)
{
  Serial.print(cmd, SERIAL_MODE);                  // MIDI 코드 규격에 따라 직렬포트에 1문자씩 송신한다.
  Serial.print(data1, SERIAL_MODE);                 // 처음엔 명령 0x90과 음높이 값을 송신,
  Serial.print(data2, SERIAL_MODE);                 // 이어서 음의 켜고/끄기를 송신한다. (이 값이 음량)  
}

이 장치는 아듀이노에서 읽은 전자플륫의 스위치에 해당하는 음정들을 MIDI 코드로 만들고,
아듀이노의 직렬포트에서 31250 bps의 속도로 MIDI 코드를 송신한다.
MIDI 케이블로 연결된 MIDI 음원정치나, PC에서 작동하는 MIDI 소프트웨어를 작동시킨다.

이 프로그램은 무료 소프트웨어로, 신체와 재산 상의 어떤 위험과 손해를 보상하지 않습니다.
이 프로그램은 GNU 무료 소프트웨어 배포규정을 따릅니다.
Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
  
 AVRTOOLS™
   
윗글 아듀이노 SD/MMC 카드
아래글 아듀이노 RGB LED
    N         제목    글쓴이 작성일 조회 추천
61 비접점식 QTouch 방식 근접검출 스위치 leeky 2016/01/21 (목) 1074 0
60 Arduino 고속 오실로스코프 #3 avrtools™ 2012/03/29 (목) 18175 0
59 아날로그 8ch 데이터 로거 avrtools™ 2012/03/29 (목) 3058 0
58 Arduino DMX512 송신기 제작 avrtools™ 2012/03/15 (목) 3208 0
57 nRF24L01 무선모듈의 사용방법 avrtools™ 2012/03/07 (수) 6498 0
56 초음파 거리 측정기의 제작 avrtools™ 2011/09/18 (일) 5278 0
55 3축 가속도 센서 ADXL335 avrtools™ 2011/09/09 (금) 3802 0
54 Arduino Uno USBserial 펌웨어의 변경 avrtools™ 2011/08/27 (토) 3327 0
53 Arduino MIDI의 소개 avrtools™ 2011/08/19 (금) 3704 0
52 Arduino 고속 Oscillo Scope #2 avrtools™ 2011/08/12 (금) 3345 0
51 Arduino Uno 및 USB2serial Uno의 소개 [2] avrtools™ 2011/07/30 (토) 3625 0
50 Arduino IDE에서 AVRISP-mkII 사용방법 avrtools™ 2010/10/22 (금) 8294 0
49 아듀이노 초음파 거리측정 및 응용 avrtools™ 2010/03/14 (일) 4367 0
48 M328-USB의 비밀 온도센서 avrtools™ 2010/01/02 (토) 3775 0
47 M168-mini로 만드는 USBasp avrtools™ 2009/10/10 (토) 5718 0
46 OBDuino ISO9141 소스의 설명 avrtools™ 2009/10/08 (목) 4444 0
45 아듀이노 0017 업그레이드 avrtools™ 2009/08/18 (화) 3954 0
44 Arduino 0015 업그레이드 avrtools™ 2009/06/01 (월) 3654 0
43 CC2500 Zigbee RF Modem #1 [4] avrtools™ 2008/11/20 (목) 6985 0
42 아듀이노 소프트웨어 Ver 0012 avrtools™ 2008/09/23 (화) 4145 0
41 Arduino 소프트웨어 설치방법 avrtools™ 2008/08/31 (일) 5837 0
40 아듀이노 PC 카메라 제작 avrtools™ 2008/10/28 (화) 7483 0
39 아듀이노 AVR-ISP V2의 제작 [6] avrtools™ 2008/10/22 (수) 8639 0
38 아듀이노 J1850-PWM 스캐너 avrtools™ 2008/10/15 (수) 4685 0
37 아듀이노 MPGduino의 제작 avrtools™ 2008/10/11 (토) 5179 0
36 아듀이노 OBD-II PID 처리함수 avrtools™ 2008/10/12 (일) 5833 0
35 아듀이노 OBD-II PID 송수신 함수 avrtools™ 2008/10/09 (목) 10058 0
34 아듀이노 ODB-II 스캐너 제작 [9] avrtools™ 2008/10/04 (토) 17994 0
33 아듀이노 AC전원 THD 측정 [2] avrtools™ 2008/09/30 (화) 7033 0
32 아듀이노 소프트방식 16Bit ADC avrtools™ 2008/09/23 (화) 5748 0
31 아듀이노 초음파 모듈의 제작. avrtools™ 2008/09/22 (월) 5118 0
30 아듀이노 Wii 프로세싱 avrtools™ 2008/09/20 (토) 4320 0
29 아듀이노 초음파 거리측정 avrtools™ 2008/09/20 (토) 6311 0
28 아듀이노 8x5 초소형 전광판 avrtools™ 2008/09/11 (목) 4881 0
27 아듀이노 4선식 터치패널 avrtools™ 2008/09/10 (수) 4817 0
26 아듀이노 2색 8x8 LED avrtools™ 2008/09/10 (수) 5142 0
25 아듀이노 24x6 LED 전광판 avrtools™ 2008/09/10 (수) 5688 0
24 아듀이노 8x8 LED 프로세싱 avrtools™ 2008/09/10 (수) 4267 0
23 아듀이노 32x16 RGB 전광판 avrtools™ 2008/09/06 (토) 13896 0
22 아듀이노 맥박검출기 avrtools™ 2008/09/03 (수) 9851 0
21 아듀이노 적외선 거리센서 avrtools™ 2008/09/01 (월) 6147 0
20 아듀이노 DMX 수신장치 [7] avrtools™ 2008/08/31 (일) 7098 0
19 아듀이노 AVR-ISP 만들기 avrtools™ 2008/08/30 (토) 4345 0
18 아듀이노 POV #3 avrtools™ 2008/08/30 (토) 3636 0
17 아듀이노 POV #2 avrtools™ 2008/08/30 (토) 3409 0
16 AVR 병렬포트 굽기장치 avrtools™ 2008/08/30 (토) 5490 0
15 아듀이노 DMX 송신기 avrtools™ 2008/08/28 (목) 5331 0
14 아듀이노 부트로더의 개조 [1] avrtools™ 2008/08/28 (목) 5991 0
13 아듀이노 병렬포트 굽기장치 avrtools™ 2008/08/26 (화) 4396 0
12 아듀이노 POV #1 avrtools™ 2008/08/26 (화) 3659 0
11 아듀이노 MIDI 드럼 leeky 2008/08/24 (일) 4991 0
10 아듀이노 SD/MMC 카드 avrtools™ 2008/08/24 (일) 9969 0
9 아듀이노 MIDI 플륫 avrtools™ 2008/08/24 (일) 3844 0
8 아듀이노 RGB LED avrtools™ 2008/08/23 (토) 5258 0
7 아듀이노 USB 오실로스코프 [2] leeky 2008/08/21 (목) 6824 0
6 가속도계 ADXL202 응용소스 avrtools™ 2008/08/20 (수) 5137 0
5 아듀이노 가속도센서 avrtools™ 2008/08/18 (월) 5171 0
4 아듀이노 RC서보 제어 avrtools™ 2008/08/17 (일) 5468 0
3 아듀이노 910-ISP 만들기 avrtools™ 2008/08/16 (토) 5036 0
2 아듀이노 온도센서, XBee 송수신 avrtools™ 2008/08/15 (금) 7920 0
1 아듀이노 기본명령 avrtools™ 2008/08/07 (목) 7059 0
1

바구니 : 0
 보관함 : 0
오늘뷰 : 0
HOME   |   회사소개   |   제휴안내   |   회사위치   |   서비스이용 약관   |   개인정보 보호정책   |   사이트맵
17015 경기도 용인시 기흥구 동백중앙로16번길 16-25, 508호. 전화 : 031-282-3310
사업자 등록번호 : 697-47-00075 / 대표 : 이건영 / 업태 : 제조업 / 종목 : LED조명, LED전원, 제어장치.
개인정보 관리책임자 : 홈페이지 관리자 . Copyright ⓒ2016 아크레즈 (ACLEDS INC.)
HOME TOP PREVNEXT 0 0 0